Advertisement
Guest User

[inc] DaVe Job System include (unbuged)

a guest
Dec 29th, 2015
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.62 KB | None | 0 0
  1. /*
  2. ||=========================================================================||
  3. || ||
  4. || ** DaVe Job System Include ** ||
  5. || Tento include je určen pro módy RP, já jsem jej vytvořil pro svůj ||
  6. || nový plánovaný projekt, který hodlám zkusit udělat, jelikož Sa:Mp ||
  7. || již není co bývalo, hrozně moc upadlo i já i moji nejlepší přátelé ||
  8. || ze samp tuto hru již opustili, po prodeji svého auta šetřím na jiné ||
  9. || tak mám čas po práci vždy něco připawnit, pokud z tohoto projektu, ||
  10. || který plánuji nic nebude, teno include hodlám zveřejnit pro pawno.cz . ||
  11. || ||
  12. ||=========================================================================||
  13.  
  14. Pro vyuziti je treba pridat do publicu:
  15. public OnGameModeInit() { DJS_OnGameModeInit(); }
  16. public OnPlayerPickupPickup(playerid,pickupid) { DJS_OnPlayerPickupPickup(playerid,pickupid); }
  17. public OnPlayerSelectedMenuRow(playerid, row) { DJS_OnPlayerSelectedMenuRow(playerid, row); }
  18. public OnPlayerConnect(playerid) { DJS_OnPlayerConnect(playerid); }
  19.  
  20. Funkce pro pridani penez hraci: GivePlayerJobCashForGet(playerid,cash)
  21.  
  22. Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení:
  23. JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS
  24. po odpojení hráče a po připojení
  25. JobID[playerid]
  26. Vyplata[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS
  27. po odpojení hráče a po připojení
  28.  
  29. Nezapomente definovat MAX_JOBS na svůj využitý počet
  30. #define MAX_JOBS 50 //přímo v includu
  31.  
  32. Pro kontrolu hráčového jobu využijte (14 znamená id jobu):
  33. if(PlayerJob(playerid,==,14) )
  34.  
  35. Nezapomeňte nahoru do módu:
  36. #include <DJS>
  37.  
  38. Důležité:
  39. Job vytvoříte pomocí:
  40. AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminutnapodobnepozici,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon)
  41. Nezapomeňte, funguje to na jednoduchém principu, zkrátka čím výš bude
  42. AddJob(...), tím menší je ID tohoto jobu:
  43. AddJob("Policista",2029.7307,1349.2823,10.8203,B_ORANZOVA,5,299,241,264,23,32,31,B_ORANZOVA,34); //toto zaměstnání bude mít id 0, protože je nahoře
  44. AddJob("Urednik",2040.5896,1344.0265,10.6719,B_MODR,5,299,241,264,0,0,0,B_MODR,34); //toto zaměstnání bude mít id 1, protože je uprostřed
  45. AddJob("Popelar",2049.5200,1336.1340,10.6719,B_SEDA,5,299,241,264,23,14,0,B_SEDA,34); //toto zaměstnání bude mít id 2, protože je dole
  46. Pokud využijete funkci "Jobzadaminutnapodobnepozici"(čiže pokud tam dáte
  47. větší číslo než 0), musíte na definovaných podobných pozicích do svého
  48. módu přidat public, který bude přičítat minuty z podobného jobu do toho,
  49. který požaduje vámi definovaný počet minut na podobném:
  50. if(PlayerJob(playerid,==,2) )
  51. {
  52. JobNahranoMinut[playerid][4]++; //4 je id podobného jobu
  53. }
  54.  
  55. Funkce DeletePlayerJob(playerid) odebere hráči job, tuto funkci můžete použít
  56. například když hráče někdo zatkne:
  57. DeletePlayerJob(playerid);
  58.  
  59. Vzhledem k tomu, ze planovany projekt nebyl zhotoven, tak vam tento include
  60. davam, s pozdravem DaVe
  61. */
  62.  
  63. #include <a_samp>
  64.  
  65. #define MAX_JOBS 50
  66.  
  67. enum JOB_INFO {
  68. Float: Job_X,
  69. Float: Job_Y,
  70. Float: Job_Z,
  71. jobname[70],
  72. jobpickup,
  73. jobid,
  74. jobzadaminut,
  75. jobskin1,
  76. jobskin2,
  77. jobskin3,
  78. wep1,
  79. wep2,
  80. wep3,
  81. color,
  82. jobmapicon
  83. };
  84.  
  85. new Job[MAX_JOBS][JOB_INFO], JobID[MAX_PLAYERS], JobNahranoMinut[MAX_PLAYERS][MAX_JOBS], VytvorenoJobu;
  86. new Menu: JobMenu[MAX_PLAYERS], IsMenu[MAX_PLAYERS], Vyplata[MAX_PLAYERS][MAX_JOBS];
  87.  
  88. #define PlayerJob(%1,%2,%3) JobID[%1]%2%3
  89. #define DeletePlayerJob(%1) JobID[%1]=-1
  90.  
  91. forward AddMin();
  92.  
  93. stock DJS_OnGameModeInit()
  94. {
  95. SetTimer("AddMin",60000,true);
  96. }
  97.  
  98. stock AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminutnapodobnepozici,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon)
  99. {
  100. if(mapicon > 63 || mapicon < 0 || VytvorenoJobu == MAX_JOBS || Jobzadaminutnapodobnepozici < 0)
  101. {
  102. if(VytvorenoJobu == MAX_JOBS) { printf("[ DJS ERROR ]: Prekroceny pocet MAX_JOBS"); }
  103. if(mapicon > 63 || mapicon < 0) { printf("[ DJS ERROR ]: Chybne ID mapicon"); }
  104. if(Jobzadaminutnapodobnepozici < 0) { printf("[ DJS ERROR ]: Chybna definice funkce Jobzadaminutnapodobnepozici"); }
  105. }else{
  106. Job[VytvorenoJobu][Job_X] = X;
  107. Job[VytvorenoJobu][Job_Y] = Y;
  108. Job[VytvorenoJobu][Job_Z] = Z;
  109. format(Job[VytvorenoJobu][jobname],70,job_name);
  110. Job[VytvorenoJobu][jobzadaminut] = Jobzadaminutnapodobnepozici;
  111. Job[VytvorenoJobu][jobid] = VytvorenoJobu;
  112. Job[VytvorenoJobu][jobskin1] = skin1; Job[VytvorenoJobu][jobskin2] = skin2; Job[VytvorenoJobu][jobskin3] = skin3;
  113. Job[VytvorenoJobu][wep1] = weapon1; Job[VytvorenoJobu][wep2] = weapon2; Job[VytvorenoJobu][wep3] = weapon3;
  114. Create3DTextLabel(Job[VytvorenoJobu][jobname],barvatextu,X,Y,Z,100,0);
  115. Job[VytvorenoJobu][jobpickup] = CreatePickup(1272,1,X,Y,Z);
  116. Job[VytvorenoJobu][jobmapicon] = mapicon;
  117. Job[VytvorenoJobu][color] = jobcolor;
  118. VytvorenoJobu++;
  119. }
  120. }
  121.  
  122. stock DJS_OnPlayerPickupPickup(playerid,pickupid)
  123. {
  124. #pragma unused pickupid
  125. for(new DJS=0; DJS<VytvorenoJobu; DJS++)
  126. {
  127. if(IsPlayerInRangeOfPoint(playerid,2,Job[DJS][Job_X],Job[DJS][Job_Y],Job[DJS][Job_Z]))
  128. {
  129. JobMenu[playerid] = CreateMenu(Job[DJS][jobname],1, 50.0, 180.0, 400.0, 200.0);
  130. AddMenuItem(JobMenu[playerid],0,"Uchazet se o pozici");
  131. AddMenuItem(JobMenu[playerid],0,"Uniforma");
  132. AddMenuItem(JobMenu[playerid],0,"Vyplata");
  133. AddMenuItem(JobMenu[playerid],0,"Nic");
  134.  
  135. ShowMenuForPlayer(JobMenu[playerid],playerid);
  136. IsMenu[playerid] = DJS;
  137. }
  138. }
  139. }
  140.  
  141. stock DJS_OnPlayerSelectedMenuRow(playerid, row)
  142. {
  143. if(GetPlayerMenu(playerid) == JobMenu[playerid])
  144. {
  145. switch(row)
  146. {
  147. case 0: {
  148. DestroyMenu(JobMenu[playerid]);
  149. if(JobNahranoMinut[playerid][IsMenu[playerid]] < Job[IsMenu[playerid]][jobzadaminut]){
  150. SendClientMessage(playerid,-1,"Nemáš dostatečnou praxi na podobné pozici"); return 1;}
  151. if(JobID[playerid] == Job[IsMenu[playerid]][jobid]){
  152. SendClientMessage(playerid,-1,"Již u nás pracuješ, kolego"); return 1;}
  153. JobID[playerid] = Job[IsMenu[playerid]][jobid];
  154. SendClientMessage(playerid,-1,"Vítej v nové práci kolego, snaž se plnit svoji práci");
  155. GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep1],5);
  156. GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep2],5);
  157. GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep3],5);
  158. SetPlayerColor(playerid,Job[IsMenu[playerid]][color]);
  159. }
  160. case 1: {
  161. DestroyMenu(JobMenu[playerid]);
  162. if(JobID[playerid] != Job[IsMenu[playerid]][jobid]){
  163. return SendClientMessage(playerid,-1,"Uniformy dáváme jen zaměstnancům"); }
  164. switch(random(3))
  165. {
  166. case 0: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin1]);
  167. case 1: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin2]);
  168. case 2: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin3]);
  169. }
  170. }
  171. case 2: {
  172. DestroyMenu(JobMenu[playerid]);
  173. if(Vyplata[playerid][IsMenu[playerid]] == 0) return SendClientMessage(playerid,-1,"Nemáte u nás peníze");
  174. GivePlayerMoney(playerid,Vyplata[playerid][IsMenu[playerid]]);
  175. Vyplata[playerid][IsMenu[playerid]] = 0;
  176. }
  177. }
  178. }
  179. return 1;
  180. }
  181.  
  182. public AddMin()
  183. {
  184. for(new i=0; i<MAX_PLAYERS; i++)
  185. {
  186. if(IsPlayerConnected(i) && JobID[i] != -1)
  187. {
  188. JobNahranoMinut[i][JobID[i]]++;
  189. }
  190. }
  191. }
  192.  
  193. stock GivePlayerJobCashForGet(playerid,cash)
  194. {
  195. if(IsPlayerConnected(playerid) && JobID[playerid] != -1)
  196. {
  197. Vyplata[playerid][JobID[playerid]]+=cash;
  198. }
  199. }
  200.  
  201. stock DJS_OnPlayerConnect(playerid)
  202. {
  203. for(new i=0;i<MAX_JOBS;i++)
  204. {
  205. #if defined Streamer_IncludeFileVersion
  206. CreateDynamicMapIcon(Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],-1,-1,-1,-1,100);
  207. #else
  208. SetPlayerMapIcon(playerid,i,Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],i,MAPICON_GLOBAL);
  209. #endif
  210. JobNahranoMinut[playerid][i] = 0;
  211. }
  212. JobID[playerid] = -1;
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement