Guest User

Dinamicno kreiranje poslova by Shomy v0.2

a guest
Feb 15th, 2018
719
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.86 KB | None | 0 0
  1. /*
  2.  
  3. • Dinamicno kreiranje poslova v0.2 by Shomy
  4. • Komande /kreirajposao /kreirajvozilo /izbrisiposao i /izbrisivozilo
  5. • Potrebni files u scriptfiles - "Poslovi" i "VozilaZaPoslove"
  6.  
  7. • Sve bugove prijaviti autoru.
  8.  
  9. */
  10.  
  11. #include < a_samp >
  12. #include < YSI\y_ini >
  13. #include < YSI\y_commands >
  14. #include < sscanf2 >
  15.  
  16. #define JOBS_FILE "/Poslovi/%d.ini"
  17. #define JOBVEH_FILE "/VozilaZaPoslove/%d.ini"
  18. #define MAX_JOBS 50
  19. #define MAX_JOBVEH 300
  20. #undef MAX_PLAYERS
  21. #define MAX_PLAYERS 50
  22.  
  23. #define COL_POSAO "{FF1414}"
  24. #define COL_BELA "{FFFFFF}"
  25.  
  26. #define SCM SendClientMessage
  27. #define SPD ShowPlayerDialog
  28.  
  29. #define DIALOG_JOB 1
  30.  
  31. enum jInfo {
  32.  
  33. Float:PosX,
  34. Float:PosY,
  35. Float:PosZ,
  36. Float:uPosX,
  37. Float:uPosY,
  38. Float:uPosZ,
  39. jIme[ 40 ],
  40. Plata,
  41. uSkin,
  42. jID
  43. }
  44. enum vInfo {
  45.  
  46. Float:vPosX,
  47. Float:vPosY,
  48. Float:vPosZ,
  49. Float:vRotA,
  50. Boja1,
  51. Boja2,
  52. vModel,
  53. zaPosao
  54. }
  55.  
  56. new JobInfo[ MAX_JOBS ][ jInfo ], JobPickup[ sizeof(JobInfo) ], Text3D:JobLabel[ sizeof(JobInfo) ],
  57. JobVehInfo[ MAX_JOBVEH ][ vInfo ], VehC[ sizeof(JobVehInfo) ], Text3D:VehLabel[ sizeof(JobVehInfo) ], UniformaPickup[ sizeof(JobInfo) ], Text3D:UniformaLabel[ sizeof(JobInfo) ];
  58. new Posao[ MAX_PLAYERS ], UzeoUniformu[ MAX_PLAYERS ], KreiraPosao[ MAX_PLAYERS ];
  59.  
  60. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  61.  
  62. if(dialogid == DIALOG_JOB) {
  63. if(response) {
  64. for(new i; i < MAX_JOBS; i++) {
  65. if(IsPlayerInRangeOfPoint(playerid, 6.0, JobInfo[ i ][ PosX ], JobInfo[ i ][ PosY ], JobInfo[ i ][ PosZ ])) {
  66. if(Posao[ playerid ] != 0) return SCM(playerid, -1, "Vec imate posao !");
  67. new str[ 70 ];
  68. format(str, sizeof(str), "Cestitamo ! Uspesno ste se zaposlili kao "COL_POSAO"%s.", JobInfo[ i ][ jIme ]);
  69. SCM(playerid, -1, str);
  70. Posao[ playerid ] = JobInfo[ i ][ jID ];
  71. }
  72. }
  73. }
  74. }
  75. return 1;
  76. }
  77.  
  78. public OnPlayerPickUpPickup(playerid, pickupid) {
  79.  
  80. for(new i; i < MAX_JOBS; i++) {
  81. if(pickupid == JobPickup[ i ]) {
  82. if(IsPlayerInRangeOfPoint(playerid, 6.0, JobInfo[ i ][ PosX ], JobInfo[ i ][ PosY ], JobInfo[ i ][ PosZ ])) {
  83. if(KreiraPosao[ playerid ] == 0) {
  84. new str[ 65 ];
  85. format(str, sizeof(str), ""COL_POSAO"%s "COL_BELA"\nUgovor - 3h\nPlata - %d$", JobInfo[ i ][ jIme ], JobInfo[ i ][ Plata ]);
  86. SPD(playerid, DIALOG_JOB, DIALOG_STYLE_MSGBOX, ""COL_BELA"POSAO", str, "Prihvati","Odustani");
  87. }
  88. }
  89. }
  90. }
  91. return 1;
  92. }
  93. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
  94.  
  95. if(newkeys == KEY_YES) {
  96. if(KreiraPosao[ playerid ] != 0) {
  97. new Float:X,Float:Y,Float:Z, i = KreiraPosao[ playerid ];
  98. GetPlayerPos(playerid, X,Y,Z);
  99. UniformaPickup[ i ] = CreatePickup(1275, 1, X,Y,Z, -1);
  100. UniformaLabel[ i ] = Create3DTextLabel("/uniforma", 0x007799FF, X,Y,Z, 15.0, 0, 0);
  101. JobInfo[ i ][ uPosX ] = X;
  102. JobInfo[ i ][ uPosY ] = Y;
  103. JobInfo[ i ][ uPosZ ] = Z;
  104. SaveJob(i);
  105. KreiraPosao[ playerid ] = 0;
  106. SCM(playerid, -1, "Uspesno ste kreirali posao. Ukoliko hocete da kreirate vozilo za posao - /kreirajvozilo");
  107. }
  108. }
  109. return 1;
  110. }
  111. forward LoadJob(id, name[], value[]);
  112. public LoadJob(id, name[], value[]) {
  113.  
  114. INI_Float("Lokacija_X", JobInfo[ id ][ PosX ]);
  115. INI_Float("Lokacija_Y", JobInfo[ id ][ PosY ]);
  116. INI_Float("Lokacija_Z", JobInfo[ id ][ PosZ ]);
  117. INI_Float("Uniforma_X", JobInfo[ id ][ uPosX ]);
  118. INI_Float("Uniforma_Y", JobInfo[ id ][ uPosY ]);
  119. INI_Float("Uniforma_Z", JobInfo[ id ][ uPosZ ]);
  120. INI_String("Posao_Ime", JobInfo[ id ][ jIme ], 40);
  121. INI_Int("Plata", JobInfo[ id ][ Plata ]);
  122. INI_Int("Uniforma_Skin", JobInfo[ id ][ uSkin ]);
  123. INI_Int("ID", JobInfo[ id ][ jID ]);
  124. return 1;
  125. }
  126. forward LoadVehJob(id, name[], value[]);
  127. public LoadVehJob(id, name[], value[]) {
  128.  
  129. INI_Float("Lokacija_X", JobVehInfo[ id ][ vPosX ]);
  130. INI_Float("Lokacija_Y", JobVehInfo[ id ][ vPosY ]);
  131. INI_Float("Lokacija_Z", JobVehInfo[ id ][ vPosZ ]);
  132. INI_Float("Rotacija_A", JobVehInfo[ id ][ vRotA ]);
  133. INI_Int("Za_Posao", JobVehInfo[ id ][ zaPosao ]);
  134. INI_Int("Model", JobVehInfo[ id ][ vModel ]);
  135. INI_Int("Boja_1", JobVehInfo[ id ][ Boja1 ]);
  136. INI_Int("Boja_2", JobVehInfo[ id ][ Boja2 ]);
  137. return 1;
  138. }
  139. public OnFilterScriptInit() {
  140.  
  141. print("= Dinamicno Kreiranje Poslova =\n\n = = = by Shomy = = =\n\n= Dinamicno Kreiranje Poslova =\n");
  142. for(new i; i < MAX_JOBS; i++) {
  143. new jFile[ 50 ], str[ 80 ];
  144. format(jFile, sizeof(jFile), JOBS_FILE, i);
  145. if(fexist(jFile)) {
  146. INI_ParseFile(jFile, "LoadJob", .bExtra = true, .extra = i);
  147. JobPickup[ i ] = CreatePickup(1210, 1, JobInfo[ i ][ PosX ],JobInfo[ i ][ PosY ],JobInfo[ i ][ PosZ ], -1);
  148. format(str,sizeof(str), ""COL_POSAO"[ "COL_BELA"%s "COL_POSAO"]\n"COL_BELA"Ugovor - "COL_POSAO"3h", JobInfo[ i ][ jIme ]);
  149. JobLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, JobInfo[ i ][ PosX ],JobInfo[ i ][ PosY ],JobInfo[ i ][ PosZ ], 15.0, 0, 0);
  150. UniformaPickup[ i ] = CreatePickup(1275, 1, JobInfo[ i ][ uPosX ],JobInfo[ i ][ uPosY ],JobInfo[ i ][ uPosZ ], -1);
  151. UniformaLabel[ i ] = Create3DTextLabel("/uniforma", 0x007799FF, JobInfo[ i ][ uPosX ],JobInfo[ i ][ uPosY ],JobInfo[ i ][ uPosZ ], 15.0, 0, 0);
  152. }
  153. }
  154. for(new i; i < MAX_JOBVEH; i++) {
  155. new jFile[ 50 ], str[ 55 ];
  156. format(jFile, sizeof(jFile), JOBVEH_FILE, i);
  157. if(fexist(jFile)) {
  158. INI_ParseFile(jFile, "LoadVehJob", .bExtra = true, .extra = i);
  159. VehC[ i ] = CreateVehicle(JobVehInfo[ i ][ vModel ], JobVehInfo[ i ][ vPosX ],JobVehInfo[ i ][ vPosY ],JobVehInfo[ i ][ vPosZ ],JobVehInfo[ i ][ vRotA ], JobVehInfo[ i ][ Boja1 ], JobVehInfo[ i ][ Boja2 ], -1);
  160. format(str, sizeof(str), ""COL_POSAO"[ "COL_BELA"%s "COL_POSAO"]", JobInfo[ i ][ jIme ]);
  161. VehLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, JobVehInfo[ i ][ vPosX ],JobVehInfo[ i ][ vPosY ],JobVehInfo[ i ][ vPosZ ], 15.0, 0, 0);
  162. Attach3DTextLabelToVehicle( VehLabel[ i ], VehC[ i ], 0.0, 0.0, 0.0);
  163. }
  164. }
  165. return 1;
  166. }
  167. public OnPlayerStateChange(playerid, newstate, oldstate) {
  168. if(newstate == PLAYER_STATE_DRIVER) { if(Posao[ playerid ] != JobVehInfo[ GetPlayerVehicleID(playerid) ][ zaPosao ]) { SCM(playerid, -1, "Ne mozete voziti to vozilo."); RemovePlayerFromVehicle(playerid); } }
  169. return 1;
  170. }
  171. public OnPlayerConnect(playerid) {
  172.  
  173. KreiraPosao[ playerid ] = 0;
  174. UzeoUniformu[ playerid ] = -1;
  175. return 1;
  176. }
  177.  
  178. YCMD:uniforma(playerid, params[], help) {
  179.  
  180. for(new id; id < MAX_JOBS; id++) {
  181. if(IsPlayerInRangeOfPoint(playerid, 6.0, JobInfo[ id ][ uPosX ], JobInfo[ id ][ uPosY ], JobInfo[ id ][ uPosZ ])) {
  182. if(Posao[ playerid ] == JobInfo[ id ][ jID ])
  183. {
  184. if(UzeoUniformu[ playerid ] == -1) {
  185. UzeoUniformu[ playerid ] = GetPlayerSkin(playerid);
  186. SetPlayerSkin(playerid, JobInfo[ id ][ uSkin ]);
  187. SCM(playerid, -1, "Uzeli ste uniformu.");
  188. }
  189. else {
  190. SetPlayerSkin(playerid, UzeoUniformu[ playerid ]);
  191. UzeoUniformu[ playerid ] = -1;
  192. SCM(playerid, -1, "Skinuli ste uniformu.");
  193. }
  194. }
  195. else { new str[ 55 ]; format(str, sizeof(str), "Niste zaposleni kao %s.", JobInfo[ id ][ jIme ]); SCM(playerid, -1, str); }
  196. }
  197. }
  198. return 1;
  199. }
  200. YCMD:kreirajvozilo(playerid, params[], help) {
  201.  
  202. #pragma unused help
  203. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  204. new jid = NextJobVehID(MAX_JOBVEH), model, b1, b2, Float:X,Float:Y,Float:Z,Float:A, str[ 55 ], jFile[ 50 ], id;
  205. GetPlayerPos(playerid, X,Y,Z);
  206. GetPlayerFacingAngle(playerid, A);
  207. if(sscanf(params, "dddd", id, model, b1, b2)) return SCM(playerid, -1, "/kreirajvozilo [ Posao ID ] [ ID Vozila ] [ Boja 1 ] [ Boja 2 ]");
  208. format(jFile, sizeof(jFile), JOBS_FILE, id);
  209. if(!fexist(jFile)) return SCM(playerid, -1, "ID tog posla ne postoji.");
  210. VehC[ jid ] = CreateVehicle(model, X, Y, Z, A, b1, b2, -1);
  211. format(str, sizeof(str), ""COL_POSAO"[ "COL_BELA"%s "COL_POSAO"]", JobInfo[ jid ][ jIme ]);
  212. VehLabel[ jid ] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z, 15.0, 0, 0);
  213. Attach3DTextLabelToVehicle( VehLabel[ jid ], VehC[ jid ], 0.0, 0.0, 0.0);
  214. PutPlayerInVehicle(playerid, VehC[ jid ], 0);
  215. JobVehInfo[ jid ][ vPosX ] = X;
  216. JobVehInfo[ jid ][ vPosY ] = Y;
  217. JobVehInfo[ jid ][ vPosZ ] = Z;
  218. JobVehInfo[ jid ][ vRotA ] = A;
  219. JobVehInfo[ jid ][ zaPosao ] = id;
  220. JobVehInfo[ jid ][ vModel ] = model;
  221. JobVehInfo[ jid ][ Boja1 ] = b1;
  222. JobVehInfo[ jid ][ Boja2 ] = b2;
  223. SaveJobVeh(jid);
  224. SCM(playerid, -1, "Uspesno ste kreirali vozilo za posao.");
  225. return 1;
  226. }
  227. YCMD:izbrisivozilo(playerid, params[], help) {
  228.  
  229. #pragma unused help
  230. #pragma unused params
  231. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  232. if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid, -1, "Morate biti u vozilu.");
  233. new vid = GetPlayerVehicleID(playerid), jFile[ 50 ];
  234. format(jFile, sizeof(jFile), JOBVEH_FILE, vid);
  235. if(!fexist(jFile)) return SCM(playerid, -1, "To vozilo nije za poslove.");
  236. fremove(jFile);
  237. DestroyVehicle(vid);
  238. Delete3DTextLabel(VehLabel[ vid ]);
  239. SCM(playerid, -1, "Uspesno ste obrisali vozilo.");
  240. return 1;
  241. }
  242. YCMD:izbrisiposao(playerid, params[], help) {
  243.  
  244. new jid, jFile[ 50 ];
  245. if(sscanf(params, "d", jid)) return SCM(playerid, -1, "/izbrisiposao [ ID ]");
  246. format(jFile, sizeof(jFile), JOBS_FILE, jid);
  247. if(!fexist(jFile)) return SCM(playerid, -1, "ID Tog posla ne postoji.");
  248. fremove(jFile);
  249. DestroyPickup(JobPickup[ jid ]);
  250. Delete3DTextLabel(JobLabel[ jid ]);
  251. DestroyPickup(UniformaPickup[ jid ]);
  252. Delete3DTextLabel(UniformaLabel[ jid ]);
  253. SCM(playerid, -1, "Uspesno ste obrisali posao.");
  254. return 1;
  255. }
  256. YCMD:kreirajposao(playerid, params[], help) {
  257.  
  258. #pragma unused help
  259. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  260. if(KreiraPosao[ playerid ] != 0) return SCM(playerid, -1, "Vec kreirate posao. Idite do pozicija uniforme i pritisnite Y.");
  261. new ime[ 40 ], Float:X, Float:Y, Float:Z, i = NextJobID(MAX_JOBS), str[ 80 ], plata, uskin;
  262. if(sscanf(params, "dds[40]", plata, uskin, ime)) return SCM(playerid, -1, "/kreirajposao [ Plata ] [ Uniforma Skin ] [ Ime ]");
  263. if(uskin < 1 || uskin > 399) return SCM(playerid, -1, "Skin ID ne moze biti manji od 1 ili veci od 399.");
  264. GetPlayerPos(playerid, X,Y,Z);
  265. JobPickup[ i ] = CreatePickup(1210, 1, X,Y,Z, -1);
  266. format(str,sizeof(str), ""COL_POSAO"[ "COL_BELA"%s "COL_POSAO"]\n"COL_BELA"Ugovor - "COL_POSAO"3h", ime);
  267. JobLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z, 15.0, 0, 0);
  268. JobInfo[ i ][ PosX ] = X;
  269. JobInfo[ i ][ PosY ] = Y;
  270. JobInfo[ i ][ PosZ ] = Z;
  271. JobInfo[ i ][ jIme ] = ime;
  272. JobInfo[ i ][ Plata ] = plata;
  273. JobInfo[ i ][ uSkin ] = uskin;
  274. JobInfo[ i ][ jID ] = i;
  275. KreiraPosao[ playerid ] = i;
  276. SCM(playerid, -1, "Sada idite do pozicija uniforme i pritisnite dugme Y.");
  277. SaveJob(i);
  278. i++;
  279. return 1;
  280. }
  281.  
  282. stock SaveJob(id) {
  283.  
  284. new jFile[ 60 ];
  285. format(jFile, sizeof(jFile), JOBS_FILE, id);
  286. new INI:File = INI_Open(jFile);
  287. INI_WriteFloat(File, "Lokacija_X", JobInfo[ id ][ PosX ]);
  288. INI_WriteFloat(File, "Lokacija_Y", JobInfo[ id ][ PosY ]);
  289. INI_WriteFloat(File, "Lokacija_Z", JobInfo[ id ][ PosZ ]);
  290. INI_WriteFloat(File, "Uniforma_X", JobInfo[ id ][ uPosX ]);
  291. INI_WriteFloat(File, "Uniforma_Y", JobInfo[ id ][ uPosY ]);
  292. INI_WriteFloat(File, "Uniforma_Z", JobInfo[ id ][ uPosZ ]);
  293. INI_WriteString(File, "Posao_Ime", JobInfo[ id ][ jIme ]);
  294. INI_WriteInt(File, "Plata", JobInfo[ id ][ Plata ]);
  295. INI_WriteInt(File, "Uniforma_Skin", JobInfo[ id ][ uSkin ]);
  296. INI_WriteInt(File, "ID", JobInfo[ id ][ jID ]);
  297. INI_Close(File);
  298. }
  299. stock SaveJobVeh(id) {
  300.  
  301. new vFile[ 60 ];
  302. format(vFile, sizeof(vFile), JOBVEH_FILE, id);
  303. new INI:File = INI_Open(vFile);
  304. INI_WriteFloat(File, "Lokacija_X", JobVehInfo[ id ][ vPosX ]);
  305. INI_WriteFloat(File, "Lokacija_Y", JobVehInfo[ id ][ vPosY ]);
  306. INI_WriteFloat(File, "Lokacija_Z", JobVehInfo[ id ][ vPosZ ]);
  307. INI_WriteFloat(File, "Rotacija_A", JobVehInfo[ id ][ vRotA ]);
  308. INI_WriteInt(File, "Za_Posao", JobVehInfo[ id ][ zaPosao ]);
  309. INI_WriteInt(File, "Model", JobVehInfo[ id ][ vModel ]);
  310. INI_WriteInt(File, "Boja_1", JobVehInfo[ id ][ Boja1 ]);
  311. INI_WriteInt(File, "Boja_2", JobVehInfo[ id ][ Boja2 ]);
  312. INI_Close(File);
  313. }
  314. // Nisu moji stocks
  315. stock NextJobID(const len) {
  316. new id = (-1);
  317. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  318. provjera = ( loop+1 );
  319. format( Data_, ( sizeof Data_ ), JOBS_FILE, provjera );
  320. if(!fexist(Data_)) {
  321. id = ( provjera );
  322. break; } }
  323. return ( id );
  324. }
  325. stock NextJobVehID(const len) {
  326. new id = (-1);
  327. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  328. provjera = ( loop+1 );
  329. format( Data_, ( sizeof Data_ ), JOBVEH_FILE, provjera );
  330. if(!fexist(Data_)) {
  331. id = ( provjera );
  332. break; } }
  333. return ( id );
  334. }
Advertisement
Add Comment
Please, Sign In to add comment