Advertisement
Guest User

IG Job Maker with dcmd

a guest
Mar 25th, 2012
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.39 KB | None | 0 0
  1. #define FILTERSCRIPT
  2. #include <a_samp>
  3. #include <sscanf2>
  4. #include <YSI/y_ini>
  5. #include <streamer>
  6. #pragma tabsize 0
  7.  
  8. #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  9.  
  10. #define SCM SendClientMessage
  11. #define COLOR_RED 0xD62F4E
  12. #define COL_LIGHTBLUE "{1BD3E0}"
  13. #define COL_RED "{D62F4E}"
  14. #define COL_ORANGE "{E09B1B}"
  15. #define COL_WHITE "{FFFFFF}"
  16. #define DIALOG_JOB 1093
  17. #define JOB_FILE "Jobs/%d.ini"
  18. #define Player_File "Jobs/Player/%s.ini"
  19. #define MAX_JOBS 20
  20. #define MAX_CP 20
  21. new bool:False = false, _S_T_R_[128];
  22. #define SendFormatMSG(%0,%1,%2,%3)\
  23. do{\
  24. format(_S_T_R_, sizeof (_S_T_R_), (%2), %3);\
  25. SendClientMessage((%0),(%1), _S_T_R_);\
  26. }\
  27. while (False)
  28. #define randomEx(%0,%1) (random((%1) - (%0)) + (%0))
  29.  
  30. new
  31. JobName[MAX_PLAYERS][64],
  32. JobCP[MAX_PLAYERS],
  33. JobID[MAX_PLAYERS],
  34. PlayerCP[MAX_PLAYERS],
  35. JobVehID[MAX_PLAYERS],
  36. PlayerVeh[MAX_PLAYERS],
  37. bool:PlayerWork[MAX_PLAYERS],
  38. JobChoose[MAX_PLAYERS],
  39. JobMin[MAX_PLAYERS],
  40. JobMax[MAX_PLAYERS],
  41. bool:PlayerCreateJob[MAX_PLAYERS],
  42. bool:JobOnCP[MAX_PLAYERS],
  43. Seller[MAX_PLAYERS],
  44. Price[MAX_PLAYERS];
  45.  
  46. enum info
  47. {
  48. pJob,
  49. }
  50. new P_Data[MAX_PLAYERS][info];
  51.  
  52. enum jo
  53. {
  54. Float:TCPX,
  55. Float:TCPY,
  56. Float:TCPZ,
  57. Name[64],
  58. VehID,
  59. Choosed,
  60. Min,
  61. Max,
  62. Pickup,
  63. Text3D:Label
  64. }
  65. new Job[MAX_JOBS][jo];
  66.  
  67. enum jobs
  68. {
  69. Float:CPX,
  70. Float:CPY,
  71. Float:CPZ,
  72. }
  73. new CheckPoint[MAX_JOBS][MAX_CP][jobs];
  74.  
  75. public OnFilterScriptInit()
  76. {
  77. print("\n--------------------------------------");
  78. print(" InGame Job Maker by: Mr.Gagi (Gagi_Corleone)");
  79. print("--------------------------------------\n");
  80.  
  81. for(new i = 1; i<=MAX_JOBS;i++)
  82. {
  83. new gFile[35],string[128];
  84. format(gFile, 35, JOB_FILE ,i);
  85. INI_ParseFile(gFile, "LoadJobs", .bExtra = true, .extra = i);
  86. Job[i][Pickup] = CreateDynamicPickup(1239, 23, Job[i][TCPX],Job[i][TCPY],Job[i][TCPZ],-1,-1,-1,100.0);
  87. format(string,128,""COL_LIGHTBLUE"To take job "COL_ORANGE"%s\n"COL_LIGHTBLUE"Type "COL_RED"[/takejob]",Job[i][Name]);
  88. Job[i][Label] = CreateDynamic3DTextLabel(string, 0xFFFFFF, Job[i][TCPX],Job[i][TCPY],Job[i][TCPZ], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100);
  89. }
  90. return 1;
  91. }
  92.  
  93. public OnFilterScriptExit()
  94. {
  95. return 1;
  96. }
  97. main()
  98. {
  99. print("\n----------------------------------");
  100. print(" InGame Job Maker by: Mr.Gagi (Gagi_Corleone)");
  101. print("----------------------------------\n");
  102. }
  103.  
  104.  
  105. public OnGameModeInit()
  106. {
  107. return 1;
  108. }
  109.  
  110. public OnGameModeExit()
  111. {
  112. return 1;
  113. }
  114.  
  115. public OnPlayerRequestClass(playerid, classid)
  116. {
  117. return 1;
  118. }
  119.  
  120. public OnPlayerConnect(playerid)
  121. {
  122. Seller[playerid] = 999;
  123. Price[playerid] = 0;
  124. new pFile[48];
  125. format(pFile, 48, Player_File, GetName(playerid));
  126.  
  127. if(!fexist(pFile))
  128. {
  129. new
  130. INI:UserFile = INI_Open(pFile);
  131. INI_WriteFloat(UserFile, "Job", 0);
  132. INI_Close(UserFile);
  133. }
  134. INI_ParseFile(pFile, "LoadPlayerData", .bExtra = true, .extra = playerid);
  135. return 1;
  136. }
  137.  
  138. public OnPlayerDisconnect(playerid, reason)
  139. {
  140. new pFile[48];
  141. format(pFile, 48, Player_File, GetName(playerid));
  142.  
  143. if(fexist(pFile))
  144. {
  145. new
  146. INI:UserFile = INI_Open(pFile);
  147. INI_WriteInt(UserFile, "Job", P_Data[playerid][pJob]);
  148. INI_Close(UserFile);
  149. }
  150. return 1;
  151. }
  152.  
  153. public OnPlayerSpawn(playerid)
  154. {
  155. return 1;
  156. }
  157.  
  158. public OnPlayerDeath(playerid, killerid, reason)
  159. {
  160. return 1;
  161. }
  162. public OnPlayerText(playerid, text[])
  163. {
  164. return 1;
  165. }
  166.  
  167. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  168. {
  169. return 1;
  170. }
  171.  
  172. public OnPlayerExitVehicle(playerid, vehicleid)
  173. {
  174. return 1;
  175. }
  176.  
  177. public OnPlayerStateChange(playerid, newstate, oldstate)
  178. {
  179. return 1;
  180. }
  181.  
  182. public OnPlayerEnterCheckpoint(playerid)
  183. {
  184. new cpid = PlayerCP[playerid];
  185. new jobid = P_Data[playerid][pJob];
  186. if(cpid >= 1)
  187. {
  188. if(IsPlayerInRangeOfPoint(playerid,3.0,CheckPoint[jobid][cpid][CPX],CheckPoint[jobid][cpid][CPY],CheckPoint[jobid][cpid][CPZ]))
  189. {
  190. if(GetPlayerVehicleID(playerid) == PlayerVeh[playerid])
  191. {
  192. PlayerCP[playerid]++;
  193. cpid = PlayerCP[playerid];
  194. new money = randomEx(Job[jobid][Min],Job[jobid][Max]);
  195. if(CheckPoint[jobid][cpid][CPX] == 0.0 && CheckPoint[jobid][cpid][CPY] == 0)//Last Checkpoint
  196. {
  197. if(Job[jobid][Choosed] == 2)
  198. {
  199. GivePlayerMoney(playerid,money);
  200. SendFormatMSG(playerid,-1,"Dobili ste {E0941B}$%d",money);
  201. PlayerCP[playerid] = 0;
  202. DestroyVehicle(PlayerVeh[playerid]);
  203. SCM(playerid,-1,"Zavrsili ste sa poslom!");
  204. DisablePlayerCheckpoint(playerid); PlayerWork[playerid] = false;
  205. return 1;
  206. }
  207. if(Job[jobid][Choosed] == 1){ PlayerCP[playerid] = 2; cpid = PlayerCP[playerid];}
  208. }
  209. SetPlayerCheckpoint(playerid,CheckPoint[jobid][cpid][CPX],CheckPoint[jobid][cpid][CPY],CheckPoint[jobid][cpid][CPZ],3.0);
  210. GivePlayerMoney(playerid,money);
  211. SendFormatMSG(playerid,-1,"Dobili ste {E0941B}$%d",money);
  212. }
  213. }
  214. }
  215. return 1;
  216. }
  217.  
  218. public OnPlayerLeaveCheckpoint(playerid)
  219. {
  220. return 1;
  221. }
  222. public OnPlayerPickUpPickup(playerid, pickupid)
  223. {
  224. return 1;
  225. }
  226. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  227. {
  228. if(newkeys == KEY_FIRE)
  229. {
  230. if(PlayerCreateJob[playerid])
  231. {
  232. if(JobCP[playerid] == 1)
  233. {
  234. new dFile[32],Float:Pos[3],string[128];
  235. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  236. format(dFile, 35, JOB_FILE, JobID[playerid]);
  237. new
  238. INI:File = INI_Open(dFile);
  239.  
  240. INI_WriteString(File, "Name", JobName[playerid]);
  241. INI_WriteFloat(File, "TCPX", Pos[0]);
  242. INI_WriteFloat(File, "TCPY", Pos[1]);
  243. INI_WriteFloat(File, "TCPZ", Pos[2]);
  244. INI_WriteInt(File, "Veh", JobVehID[playerid]);
  245. INI_WriteInt(File, "Min", JobMin[playerid]);
  246. INI_WriteInt(File, "Max", JobMax[playerid]);
  247. INI_WriteInt(File, "Choose", JobChoose[playerid]);
  248. INI_Close(File);
  249. format(Job[JobID[playerid]][Name],64,"%s",JobName[playerid]);
  250. Job[JobID[playerid]][TCPX] = Pos[0];
  251. Job[JobID[playerid]][TCPY] = Pos[1];
  252. Job[JobID[playerid]][TCPZ] = Pos[2];
  253. Job[JobID[playerid]][VehID] = JobVehID[playerid];
  254. Job[JobID[playerid]][Choosed] = JobChoose[playerid];
  255. Job[JobID[playerid]][Min] = JobMin[playerid];
  256. Job[JobID[playerid]][Max] = JobMax[playerid];
  257. Job[JobID[playerid]][Pickup] = CreateDynamicPickup(1239, 23, Job[JobID[playerid]][TCPX],Job[JobID[playerid]][TCPY],Job[JobID[playerid]][TCPZ],-1,-1,-1,100.0);
  258. format(string,128,""COL_LIGHTBLUE"Da se zaposlite kao "COL_ORANGE"%s\n"COL_LIGHTBLUE"Kucajte "COL_RED"[/takejob]",Job[JobID[playerid]][Name]);
  259. Job[JobID[playerid]][Label] = CreateDynamic3DTextLabel(string, 0xFFFFFF, Job[JobID[playerid]][TCPX],Job[JobID[playerid]][TCPY],Job[JobID[playerid]][TCPZ], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100);
  260. JobCP[playerid]++;
  261. }
  262. else if(JobCP[playerid] > 1)
  263. {
  264. new dFile[32],Float:Pos[3],string[6];
  265. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  266. format(dFile, 35, JOB_FILE, JobID[playerid]);
  267.  
  268. new
  269. INI:File = INI_Open(dFile);
  270.  
  271. format(string,6,"CPX%d",JobCP[playerid]);
  272. INI_WriteFloat(File, string, Pos[0]);
  273. CheckPoint[JobID[playerid]][JobCP[playerid]][CPX] = Pos[0];
  274.  
  275. format(string,6,"CPY%d",JobCP[playerid]);
  276. INI_WriteFloat(File, string, Pos[1]);
  277. CheckPoint[JobID[playerid]][JobCP[playerid]][CPY] = Pos[1];
  278.  
  279. format(string,6,"CPZ%d",JobCP[playerid]);
  280. INI_WriteFloat(File, string, Pos[2]);
  281. CheckPoint[JobID[playerid]][JobCP[playerid]][CPZ] = Pos[2];
  282.  
  283. INI_Close(File);
  284. JobCP[playerid]++;
  285. }
  286. }
  287. }
  288. return 1;
  289. }
  290. public OnPlayerUpdate(playerid)
  291. {
  292. return 1;
  293. }
  294. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  295. {
  296. switch(dialogid)
  297. {
  298. case DIALOG_JOB:
  299. {
  300. if(!response) return 1;
  301. switch(listitem)
  302. {
  303. case 0://Checpoint
  304. {
  305. SCM(playerid,-1,"Izabrali ste posao sa checkpointima.");
  306. ShowPlayerDialog(playerid,DIALOG_JOB+1,DIALOG_STYLE_INPUT,"Job Name","Ukucajte ime posla","Insert","Close");
  307. JobOnCP[playerid] = true;
  308. }
  309. case 1://Checpoint
  310. {
  311. SCM(playerid,-1,"Izabrali ste posao sa komandama.");
  312. ShowPlayerDialog(playerid,DIALOG_JOB+1,DIALOG_STYLE_INPUT,"Job Name","Ukucajte ime posla","Insert","Close");
  313. JobOnCP[playerid] = false;
  314. }
  315. }
  316. }
  317. case DIALOG_JOB+1:
  318. {
  319. if(!response) return 1;
  320. if(JobOnCP[playerid]) { JobCP[playerid] = 1; SCM(playerid,-1,"Da postavite checkpointe koristite levi klik. Prvi klik je za komandu /takejob");}
  321. format(JobName[playerid],64,"%s",inputtext);
  322. ShowPlayerDialog(playerid,DIALOG_JOB+2,DIALOG_STYLE_INPUT,"Job Veh","Unesite id vozila","Insert","Close");
  323. }
  324. case DIALOG_JOB+2:
  325. {
  326. if(!response) return 1;
  327. SendFormatMSG(playerid,-1,"Izabrali ste vozilo id %d",strval(inputtext));
  328. JobVehID[playerid] = strval(inputtext);
  329. if(JobOnCP[playerid]) { ShowPlayerDialog(playerid,DIALOG_JOB+3,DIALOG_STYLE_INPUT,"Choose system","1 = Posle zadnjeg CP\npokrenuti ih opet\n2 = Posle zadnjeg CP\nzavrsiti posao\nUnesite 1 ili 2","Insert","Close"); }
  330. if(!JobOnCP[playerid]) { ShowPlayerDialog(playerid,DIALOG_JOB+6,DIALOG_STYLE_INPUT,"Unesite komandu","Primer: sellicecream (bez /)","Insert","Close"); }
  331. }
  332. case DIALOG_JOB+3:
  333. {
  334. if(!response) return 1;
  335. SendFormatMSG(playerid,-1,"Izabrali ste opciju %d",strval(inputtext));
  336. JobChoose[playerid] = strval(inputtext);
  337. ShowPlayerDialog(playerid,DIALOG_JOB+4,DIALOG_STYLE_INPUT,"Choose minimum","Unesite koliko je minimum para da se dobije na CP","Insert","Close");
  338. }
  339. case DIALOG_JOB+4:
  340. {
  341. if(!response) return 1;
  342. SendFormatMSG(playerid,-1,"Uneli ste $%d za minimum para",strval(inputtext));
  343. JobMin[playerid] = strval(inputtext);
  344. ShowPlayerDialog(playerid,DIALOG_JOB+5,DIALOG_STYLE_INPUT,"Choose max","Unesite koliko je maximum para da se dobije na CP","Insert","Close");
  345. }
  346. case DIALOG_JOB+5:
  347. {
  348. if(!response) return 1;
  349. SendFormatMSG(playerid,-1,"Uneli ste $%d za max para",strval(inputtext));
  350. JobMax[playerid] = strval(inputtext);
  351. }
  352. case DIALOG_JOB+6:
  353. {
  354. if(!response) return 1;
  355. new dFile[32],Float:Pos[3],string[200];
  356. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  357. format(dFile, 35, JOB_FILE, JobID[playerid]);
  358. new
  359. INI:File = INI_Open(dFile);
  360.  
  361. INI_WriteString(File, "Name", JobName[playerid]);
  362. INI_WriteFloat(File, "TCPX", Pos[0]);
  363. INI_WriteFloat(File, "TCPY", Pos[1]);
  364. INI_WriteFloat(File, "TCPZ", Pos[2]);
  365. INI_WriteInt(File, "Veh", JobVehID[playerid]);
  366. INI_Close(File);
  367. format(Job[JobID[playerid]][Name],64,"%s",JobName[playerid]);
  368. Job[JobID[playerid]][TCPX] = Pos[0];
  369. Job[JobID[playerid]][TCPY] = Pos[1];
  370. Job[JobID[playerid]][TCPZ] = Pos[2];
  371. Job[JobID[playerid]][VehID] = JobVehID[playerid];
  372. Job[JobID[playerid]][Choosed] = JobChoose[playerid];
  373. Job[JobID[playerid]][Min] = JobMin[playerid];
  374. Job[JobID[playerid]][Max] = JobMax[playerid];
  375. Job[JobID[playerid]][Pickup] = CreateDynamicPickup(1239, 23, Job[JobID[playerid]][TCPX],Job[JobID[playerid]][TCPY],Job[JobID[playerid]][TCPZ],-1,-1,-1,100.0);
  376. format(string,128,""COL_LIGHTBLUE"Da se zaposlite kao "COL_ORANGE"%s\n"COL_LIGHTBLUE"Kucajte "COL_RED"[/takejob]",Job[JobID[playerid]][Name]);
  377. Job[JobID[playerid]][Label] = CreateDynamic3DTextLabel(string, 0xFFFFFF, Job[JobID[playerid]][TCPX],Job[JobID[playerid]][TCPY],Job[JobID[playerid]][TCPZ], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 100);
  378. new File:log = fopen("/Command.txt", io_write);
  379. format(string,sizeof(string),"dcmd_%s(playerid,params[],help)\r\n{\r\n#pragma unused help\r\n",inputtext);
  380. fwrite(log, string);
  381. format(string,sizeof(string),"if(P_Data[playerid][pJob] != %d) return SCM(playerid,COLOR_RED,\"EROR:\"COL_WHITE\"Vi nemate posao %s\");\r\n",JobID[playerid]);
  382. fwrite(log, string);
  383. format(string,sizeof(string),"new pplayerid,price,Float:Position[3];\r\nif(sscanf(params,\"ui\",pplayerid,price)) return SCM(playerid,COLOR_RED,\"\"COL_WHITE\"Koristite: /%s [ID igraca/Deo imena] [Cena]\");\r\n",inputtext);
  384. fwrite(log, string);
  385. fwrite(log, "if(!PlayerWork[playerid]) return SCM(playerid,COLOR_RED,\"EROR: \"COL_WHITE\"Kucajte /startjob\");\r\n");
  386. fwrite(log, "if(PlayerVeh[playerid] != GetPlayerVehicleID(playerid)) return SCM(playerid,COLOR_RED,\"EROR: \"COL_WHITE\"Niste u svom vozilu\");\r\n");
  387. fwrite(log, "if(pplayerid == INVALID_PLAYER_ID) return SCM(playerid,COLOR_RED,\"EROR:\"COL_WHITE\"Invalid ID\");\r\n");
  388. fwrite(log, "GetPlayerPos(pplayerid,Position[0],Position[1],Position[2]);\r\n");
  389. fwrite(log, "if(!IsPlayerInRangeOfPoint(playerid,5.0,Position[0],Position[1],Position[2])) return SCM(playerid,COLOR_RED,\"EROR:\"COL_WHITE\"Niste blizu tog igraca\");\r\n");
  390. fwrite(log, "Seller[pplayerid] = playerid;\r\nPrice[pplayerid] = price;\r\n");
  391. format(string,sizeof(string),"SendFormatMSG(pplayerid,-1,\"Igrac sa poslom %s vam je ponudio nesto po ceni:",JobName[playerid]);
  392. fwrite(log, string);
  393. fwrite(log, " $%d kucajte /accept %s\",price,inputtext);\r\n");
  394. fwrite(log, "SCM(playerid,-1,\"Sacekajte za igracev odgovor\");\r\n");
  395. fwrite(log, "return 1;\r\n}\r\n==============U komandu /accept\r\n");
  396. format(string,sizeof(string),"if(strcmp(text,\"%s\",false) == 0)\r\n{\r\n",inputtext);
  397. fwrite(log, string);
  398. fwrite(log, "if(Seller[playerid] == 999) return SCM(playerid,COLOR_RED,\"Niko vam nije nista ponudio\");\r\n");
  399. fwrite(log, "if(Price[playerid] > GetPlayerMoney(playerid)) return SCM(playerid,COLOR_RED,\"Nemate dovoljno para\"),Seller[playerid] = 999;\r\n");
  400. fwrite(log, "SCM(Seller[playerid],-1,\"Igrac je prihavtio ponudu\");\r\nSCM(playerid,-1,\"Prihvatili ste ponudu\");\r\n");
  401. fwrite(log, "GivePlayerMoney(Seller[playerid],Price[playerid]);\r\nGivePlayerMoney(playerid,-Price[playerid]);\r\n");
  402. fwrite(log, "new Float:health; GetPlayerHealth(playerid,health);\r\nSetPlayerHealth(playerid,health+25);\r\n");
  403. fwrite(log, "}\r\n");
  404. format(string,sizeof(string),"Pod public OnPlayerCommandText\r\ndcmd(%s, %d, cmdtext);",inputtext,strlen(inputtext));
  405. fwrite(log, string);
  406. fclose(log); // Close the file
  407. }
  408. }
  409. return 1;
  410. }
  411. forward LoadPlayerData(playerid, name[], value[]);
  412. public LoadPlayerData(playerid, name[], value[])
  413. {
  414. INI_Int("Job", P_Data[playerid][pJob]);
  415. return 1;
  416. }
  417. stock GetName(playerid)
  418. {
  419. new
  420. pName[MAX_PLAYER_NAME];
  421.  
  422. GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  423. return pName;
  424. }
  425. forward GetJobID(playerid);
  426. public GetJobID(playerid)
  427. {
  428. new Float:Distance;
  429. for(new j = 1; j<MAX_JOBS; j++)
  430. {
  431. Distance = GetDistanceToJob(playerid, j);
  432. if(Distance < 5.0)
  433. {
  434. return j;
  435. }
  436. }
  437. return -1;
  438. }
  439. forward Float:GetDistanceToJob(playerid, j);
  440. public Float:GetDistanceToJob(playerid, j)
  441. {
  442. new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
  443. GetPlayerPos(playerid,x1,y1,z1);
  444. x2 = Job[j][TCPX];
  445. y2 = Job[j][TCPY];
  446. z2 = Job[j][TCPZ];
  447. return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
  448. }
  449. forward LoadJobs(id, name[], value[]);
  450. public LoadJobs(id, name[], value[])
  451. {
  452. new string[6];
  453. INI_String("Name", Job[id][Name],64);
  454. INI_Float("TCPX", Job[id][TCPX]);
  455. INI_Float("TCPY", Job[id][TCPY]);
  456. INI_Float("TCPZ", Job[id][TCPZ]);
  457. INI_Int("Veh", Job[id][VehID]);
  458. INI_Int("Min", Job[id][Min]);
  459. INI_Int("Max", Job[id][Max]);
  460. INI_Int("Choose", Job[id][Choosed]);
  461. for(new i = 1;i <= MAX_CP;i++)
  462. {
  463. format(string,6,"CPX%d",i);
  464. INI_Float(string, CheckPoint[id][i][CPX]);
  465. format(string,6,"CPY%d",i);
  466. INI_Float(string, CheckPoint[id][i][CPY]);
  467. format(string,6,"CPZ%d",i);
  468. INI_Float(string, CheckPoint[id][i][CPZ]);
  469. }
  470. return 1;
  471. }
  472. public OnPlayerCommandText(playerid, cmdtext[])
  473. {
  474. dcmd(createjob, 9, cmdtext);
  475. dcmd(finishcjob, 10, cmdtext);
  476. dcmd(takejob, 7, cmdtext);
  477. dcmd(startjob, 8, cmdtext);
  478. dcmd(finishjob, 9, cmdtext);
  479. dcmd(quitjob, 7, cmdtext);
  480. dcmd(accept, 6, cmdtext);
  481. return 0;
  482. }
  483. //========Commands=========
  484. dcmd_createjob(playerid,params[])
  485. {
  486. #pragma unused params
  487. new dFile[32];
  488. if(!IsPlayerAdmin(playerid)) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Morate biti RCON admin!");
  489. if(PlayerCreateJob[playerid]) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Vec praviti posao!");
  490. ShowPlayerDialog(playerid,DIALOG_JOB,DIALOG_STYLE_LIST,"Posao baziran na","Checkpointima\nKomandama","Choose","Close");
  491. JobID[playerid] = 1;
  492. PlayerCreateJob[playerid] = true;
  493. for(new id = 1; id <= MAX_JOBS;id++)
  494. {
  495. format(dFile, 35, JOB_FILE, id);
  496. if(fexist(dFile)) JobID[playerid]++;
  497. if(JobID[playerid] > MAX_JOBS) return SCM(playerid,-1,"Pomeriti MAX_JOBS u FS.");
  498. }
  499. return 1;
  500. }
  501. dcmd_finishcjob(playerid,params[])
  502. {
  503. #pragma unused params
  504. if(!IsPlayerAdmin(playerid)) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Morate biti RCON admin!");
  505. if(!PlayerCreateJob[playerid]) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Vi ne praviti posao!");
  506. JobID[playerid] = 0;
  507. PlayerCreateJob[playerid] = false;
  508. SCM(playerid,-1,"Zavrsili ste pravljenje posla.");
  509. return 1;
  510. }
  511. dcmd_takejob(playerid,params[])
  512. {
  513. #pragma unused params
  514. new id = GetJobID(playerid);
  515. if(id == -1) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Nema nijedan posao u blizini.");
  516. if(P_Data[playerid][pJob] != 0) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Vi vec imate posao.");
  517. SendFormatMSG(playerid,-1,"Zaposlili ste se kao {E0941B}%s",Job[id][Name]);
  518. P_Data[playerid][pJob] = id;
  519. return 1;
  520. }
  521. dcmd_startjob(playerid,params[])
  522. {
  523. #pragma unused params
  524. if(PlayerWork[playerid]) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Vec ste poceli posao kucajte /finishjob");
  525. new h = P_Data[playerid][pJob],Float:Pos[4]; GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]); GetPlayerFacingAngle(playerid,Pos[3]);
  526. if(P_Data[playerid][pJob] == 0) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Vi nemate posao.");
  527. if(!IsPlayerInRangeOfPoint(playerid,20.0,Job[h][TCPX],Job[h][TCPY],Job[h][TCPZ])) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Niste blizu svog posla.");
  528. PlayerCP[playerid] = 2;
  529. if(Job[h][Choosed] != 0) SetPlayerCheckpoint(playerid,CheckPoint[h][PlayerCP[playerid]][CPX],CheckPoint[h][PlayerCP[playerid]][CPY],CheckPoint[h][PlayerCP[playerid]][CPZ],3.0);
  530. SCM(playerid,-1,"Poceli ste sa poslom idite na crveni checkpoint.");
  531. PlayerVeh[playerid] = CreateVehicle(Job[h][VehID],Pos[0],Pos[1]+1,Pos[2],Pos[3],random(256),random(256),3600);
  532. PlayerWork[playerid] = true;
  533. return 1;
  534. }
  535. dcmd_finishjob(playerid,params[])
  536. {
  537. #pragma unused params
  538. if(!PlayerWork[playerid]) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Niste pokrenuli posao.");
  539. if(P_Data[playerid][pJob] == 0) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Vi niste zaposljeni.");
  540. PlayerCP[playerid] = 0;
  541. DisablePlayerCheckpoint(playerid);
  542. SCM(playerid,-1,"Zavrsili ste sa poslom.");
  543. DestroyVehicle(PlayerVeh[playerid]);
  544. PlayerWork[playerid] = false;
  545. return 1;
  546. }
  547. dcmd_quitjob(playerid,params[])
  548. {
  549. #pragma unused params
  550. if(PlayerWork[playerid]) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Prvo zavrsite sa poslom.");
  551. if(P_Data[playerid][pJob] == 0) return SCM(playerid,COLOR_RED,"EROR: "COL_WHITE"Nemate posao.");
  552. SCM(playerid,-1,"Dali ste otkaz.");
  553. P_Data[playerid][pJob] = 0;
  554. return 1;
  555. }
  556. dcmd_accept(playerid,params[])
  557. {
  558. new text[48];
  559. if(sscanf(params,"s[48]",text)) return SCM(playerid,-1,"/accept [Ponudjeno]");
  560. /*
  561. Ostalo iz command.txt
  562. */
  563. return 1;
  564. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement