Guest User

Dinamicni sistem firmi (UPDATE 3)

a guest
Aug 14th, 2011
2,202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.42 KB | None | 0 0
  1. /*
  2. FS izradio Aleksandar?
  3. datuma 12.08.2011.
  4. */
  5.  
  6. #include "a_samp"
  7. #include "djson"
  8. #include "zcmd"
  9. #include "sscanf2"
  10.  
  11. #define Dialog_Firme 1000
  12.  
  13. #define Max_Firmi 200
  14. new fajlfirme[32];
  15. new Label[128];
  16.  
  17. enum Firma
  18. {
  19. VlasnikFirme[20],
  20. ImeFirme[24],
  21. FirmaNaProdaju,
  22. CenaFirme,
  23. LevelFirme,
  24. PickupFirme,
  25. Float:IzlazXFirme,
  26. Float:IzlazYFirme,
  27. Float:IzlazZFirme,
  28. Float:IntXFirme,
  29. Float:IntYFirme,
  30. Float:IntZFirme,
  31. IntIDFirme,
  32. VWFirme,
  33. Text3D:LabelFirme,
  34. PareVlasnika
  35. };
  36.  
  37. new InfoFirme[Max_Firmi][Firma];
  38.  
  39. main(){}
  40.  
  41. public OnFilterScriptInit()
  42. {
  43. djson_GameModeInit();
  44. for(new f = 0; f <= Max_Firmi; f++)
  45. {
  46. UcitajFirme(f);
  47. }
  48. printf("FS izradio Aleksandar?");
  49. return true;
  50. }
  51.  
  52. public OnFilterScriptExit()
  53. {
  54. djson_GameModeExit();
  55. return true;
  56. }
  57.  
  58. public OnPlayerConnect(playerid)
  59. {
  60. SetPVarInt(playerid,"Varijabla",-1);
  61. return true;
  62. }
  63.  
  64. stock UcitajFirme(f)
  65. {
  66. format(fajlfirme, sizeof(fajlfirme), "/Firme/%d.json", f);
  67. if(fexist(fajlfirme))
  68. {
  69. format(InfoFirme[f][VlasnikFirme], 20, "%s", dj(fajlfirme, "Vlasnik", 20));
  70. format(InfoFirme[f][ImeFirme], 20, "%s", dj(fajlfirme, "ImeFirme", 20));
  71. InfoFirme[f][FirmaNaProdaju]= djInt(fajlfirme, "Na_Prodaju");
  72. InfoFirme[f][CenaFirme] = djInt(fajlfirme, "Cena");
  73. InfoFirme[f][LevelFirme] = djInt(fajlfirme, "Level");
  74. InfoFirme[f][IzlazXFirme] = djFloat(fajlfirme, "X");
  75. InfoFirme[f][IzlazYFirme] = djFloat(fajlfirme, "Y");
  76. InfoFirme[f][IzlazZFirme] = djFloat(fajlfirme, "Z");
  77. InfoFirme[f][IntXFirme] = djFloat(fajlfirme, "IntXFirme");
  78. InfoFirme[f][IntYFirme] = djFloat(fajlfirme, "IntYFirme");
  79. InfoFirme[f][IntZFirme] = djFloat(fajlfirme, "IntZFirme");
  80. InfoFirme[f][IntIDFirme] = djInt(fajlfirme, "IntIDFirme");
  81. InfoFirme[f][VWFirme] = djInt(fajlfirme, "VW");
  82. InfoFirme[f][PareVlasnika] = djInt(fajlfirme, "Novac_Vlasnika");
  83. if(InfoFirme[f][FirmaNaProdaju] == 1)
  84. {
  85. InfoFirme[f][PickupFirme] = CreatePickup(1273, 23, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]);
  86. format(Label, sizeof(Label), "Ime firme:%s \nVlasnik:%s \nCena: $%i\n Level: %i",InfoFirme[f][ImeFirme],InfoFirme[f][VlasnikFirme],InfoFirme[f][CenaFirme],InfoFirme[f][LevelFirme]);
  87. InfoFirme[f][LabelFirme] = Create3DTextLabel(Label,-1,InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]+1,30.0,0,1);
  88. }
  89. else
  90. {
  91. InfoFirme[f][PickupFirme] = CreatePickup(1272,23, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]);
  92. format(Label, sizeof(Label), "Ime firme:%s \nVlasnik:%s\n Level: %i",InfoFirme[f][ImeFirme],InfoFirme[f][VlasnikFirme],InfoFirme[f][LevelFirme]);
  93. InfoFirme[f][LabelFirme] = Create3DTextLabel(Label,-1,InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]+1,30.0,0,1);
  94. }
  95. }
  96. return ;
  97. }
  98.  
  99. stock UpdateFirme(f)
  100. {
  101. format(fajlfirme, sizeof(fajlfirme), "/Firme/%d.json", f);
  102. if(fexist(fajlfirme))
  103. {
  104. djSet(fajlfirme, "Vlasnik", InfoFirme[f][VlasnikFirme]);
  105. djSet(fajlfirme, "ImeFirme", InfoFirme[f][ImeFirme]);
  106. djSetInt(fajlfirme, "Na_Prodaju", InfoFirme[f][FirmaNaProdaju]);
  107. djSetInt(fajlfirme, "Cena", InfoFirme[f][CenaFirme]);
  108. djSetInt(fajlfirme, "Level", InfoFirme[f][LevelFirme]);
  109. djSetFloat(fajlfirme, "X", InfoFirme[f][IzlazXFirme]);
  110. djSetFloat(fajlfirme, "Y", InfoFirme[f][IzlazYFirme]);
  111. djSetFloat(fajlfirme, "Z", InfoFirme[f][IzlazZFirme]);
  112. djSetFloat(fajlfirme, "IntXFirme", InfoFirme[f][IntXFirme]);
  113. djSetFloat(fajlfirme, "IntYFirme", InfoFirme[f][IntYFirme]);
  114. djSetFloat(fajlfirme, "IntZFirme", InfoFirme[f][IntZFirme]);
  115. djSetFloat(fajlfirme, "IntIDFirme", InfoFirme[f][IntIDFirme]);
  116. djSetInt(fajlfirme, "VW", InfoFirme[f][VWFirme]);
  117. djSetInt(fajlfirme, "Novac_Vlasnika", InfoFirme[f][PareVlasnika]);
  118. }
  119. return true;
  120. }
  121.  
  122. stock Uplata(id_firme, novac)
  123. {
  124. InfoFirme[id_firme][PareVlasnika] = InfoFirme[id_firme][PareVlasnika]+novac;
  125. UpdateFirme(id_firme);
  126. return true;
  127. }
  128.  
  129. stock PostaviIgraca(playerid, Float:X, Float:Y, Float:Z, Int, VW, var)
  130. {
  131. SetPlayerPos(playerid, X, Y, Z);
  132. SetPlayerInterior(playerid, Int);
  133. SetPlayerVirtualWorld(playerid, VW);
  134. SetPVarInt(playerid,"Varijabla",var);
  135. return true;
  136. }
  137.  
  138. stock Ime(playerid)
  139. {
  140. new ImeIgraca[20];
  141. GetPlayerName(playerid, ImeIgraca, 20);
  142. return ImeIgraca;
  143. }
  144.  
  145. CMD:kupifirmu(playerid, params[])
  146. {
  147. new w[128];
  148. for(new f = 0; f <= Max_Firmi; f++)
  149. {
  150. if(IsPlayerInRangeOfPoint(playerid, 2.0, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]))
  151. {
  152. if(GetPlayerMoney(playerid) < InfoFirme[f][CenaFirme]) return SendClientMessage(playerid, -1, "Nemate dovoljno novaca.");
  153. if(GetPlayerScore(playerid) < InfoFirme[f][LevelFirme]) return SendClientMessage(playerid, -1, "Nemate dovoljan level.");
  154. DestroyPickup(InfoFirme[f][PickupFirme]);
  155. InfoFirme[f][PickupFirme] = CreatePickup(1272,23, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]);
  156. format(InfoFirme[f][VlasnikFirme], 20, "%s", Ime(playerid));
  157. InfoFirme[f][FirmaNaProdaju] = 0; GivePlayerMoney(playerid, -InfoFirme[f][CenaFirme]);
  158. format(w,sizeof(w),"Kupili ste firmu za %i$!",InfoFirme[f][CenaFirme]);
  159. SendClientMessage(playerid,-1,w);
  160. UpdateFirme(f);
  161. format(Label, sizeof(Label), "Ime firme:%s \nVlasnik:%s\n Level: %i",InfoFirme[f][ImeFirme],InfoFirme[f][VlasnikFirme],InfoFirme[f][LevelFirme]);
  162. Update3DTextLabelText(InfoFirme[f][LabelFirme],-1,Label);
  163. return true;
  164. }
  165. }
  166. return true;
  167. }
  168.  
  169. CMD:kreirajfirmu(playerid,params[])
  170. {
  171. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Samo admini!");
  172. new cena, lvl, vrsta, id;
  173. if(sscanf(params, "iiii", vrsta, lvl , cena , id)) return SendClientMessage(playerid, -1, "/kreirajfirmu (vrsta) (lvl) (cena) (id firme)");
  174. if(id >= Max_Firmi) return SendClientMessage(playerid, -1, "Max firmi postoji.");
  175. new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z);
  176. format(fajlfirme, sizeof(fajlfirme), "/Firme/%d.json", id);
  177. if(fexist(fajlfirme)) return SendClientMessage(playerid, -1, "Taj ID firme postoji!");
  178. switch(vrsta)
  179. {
  180. case 0:
  181. {
  182. djCreateFile(fajlfirme);
  183. djSet(fajlfirme, "Vlasnik", "DRZAVA");
  184. djSet(fajlfirme, "ImeFirme", "Drzavna firma");
  185. djSetInt(fajlfirme, "Na_Prodaju", 1);
  186. djSetInt(fajlfirme, "Cena", cena);
  187. djSetInt(fajlfirme, "Level", lvl);
  188. djSetFloat(fajlfirme,"X", X);
  189. djSetFloat(fajlfirme,"Y", Y);
  190. djSetFloat(fajlfirme,"Z", Z);
  191. djSetInt(fajlfirme, "VW", id+1);
  192. djSetFloat(fajlfirme, "IntXFirme",375.962463);
  193. djSetFloat(fajlfirme, "IntYFirme",-65.816848);
  194. djSetFloat(fajlfirme, "IntZFirme",1001.507812);
  195. djSetInt(fajlfirme, "IntIDFirme",10);
  196. djSetInt(fajlfirme, "Novac_Vlasnika",0);
  197. djCommit(fajlfirme);
  198. UcitajFirme(id);
  199. SendClientMessage(playerid, -1, " Firma napravljena!");
  200. return true;
  201. }
  202. }
  203. return true;
  204. }
  205.  
  206. CMD:firma(playerid,params[])
  207. {
  208. ShowPlayerDialog(playerid,Dialog_Firme,DIALOG_STYLE_LIST,"Upravljanje Firmom","Stanje racuna\nProdaj firmu\nPodigni pare\nIme firme","Ok","Odustani");
  209. return true;
  210. }
  211.  
  212. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  213. {
  214. if (newkeys == KEY_FIRE)
  215. {
  216. for(new f = 0; f <= Max_Firmi; f++)
  217. {
  218. if(IsPlayerInRangeOfPoint(playerid, 2.0, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]))
  219. {
  220. PostaviIgraca(playerid, InfoFirme[f][IntXFirme], InfoFirme[f][IntYFirme], InfoFirme[f][IntZFirme], InfoFirme[f][IntIDFirme], InfoFirme[f][VWFirme], f);
  221. return true;
  222. }
  223. if(IsPlayerInRangeOfPoint(playerid, 2.0, InfoFirme[f][IntXFirme], InfoFirme[f][IntYFirme], InfoFirme[f][IntZFirme]))
  224. {
  225. if(GetPVarInt(playerid,"Varijabla") == f)
  226. {
  227. PostaviIgraca(playerid, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme], 0, 0, -1);
  228. return true;
  229. }
  230. }
  231. }
  232. }
  233. return true;
  234. }
  235.  
  236. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  237. {
  238. new w[128];
  239. if(dialogid == Dialog_Firme)
  240. {
  241. for(new f = 0; f <= Max_Firmi; f++)
  242. {
  243. if(IsPlayerInRangeOfPoint(playerid, 2.0, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]))
  244. {
  245. if(!response) return SendClientMessage(playerid, -1, "Odustali ste!");
  246. if(strcmp(InfoFirme[f][VlasnikFirme],Ime(playerid), false ) == 0)
  247. {
  248. switch(listitem)
  249. {
  250. case 0:
  251. {
  252. format(w,sizeof(w),"Novaca u firmi %i$ ",InfoFirme[f][PareVlasnika]);
  253. SendClientMessage(playerid,-1,w);
  254. }
  255. case 1:
  256. {
  257. DestroyPickup(InfoFirme[f][PickupFirme]);
  258. InfoFirme[f][PickupFirme] = CreatePickup(1273, 23, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]);
  259. format(InfoFirme[f][VlasnikFirme], 24, "DRZAVA");
  260. InfoFirme[f][FirmaNaProdaju] = 1;
  261. GivePlayerMoney(playerid, InfoFirme[f][CenaFirme]/2);
  262. format(w,sizeof(w),"Prodali ste firmu za %i$!",InfoFirme[f][CenaFirme]/2);
  263. SendClientMessage(playerid,-1,w);
  264. UpdateFirme(f);
  265. format(Label, sizeof(Label), "Ime firme:%s \nVlasnik:%s \nCena: $%i\n Level: %i",InfoFirme[f][ImeFirme],InfoFirme[f][VlasnikFirme],InfoFirme[f][CenaFirme],InfoFirme[f][LevelFirme]);
  266. Update3DTextLabelText(InfoFirme[f][LabelFirme],-1,Label);
  267. }
  268. case 2:
  269. {
  270. ShowPlayerDialog(playerid,Dialog_Firme+1,DIALOG_STYLE_INPUT,"Dizanje novaca","Koliko novaca zelite podignuti iz firme?!","Podigni","Odustani");
  271. }
  272. case 3:
  273. {
  274. ShowPlayerDialog(playerid,Dialog_Firme+2,DIALOG_STYLE_INPUT,"Ime firme","Unesite novo ime firme?!","Ok","Odustani");
  275. }
  276. }
  277. }
  278. }
  279. }
  280. return true;
  281. }
  282. if(dialogid == Dialog_Firme+1)
  283. {
  284. if(!response) return SendClientMessage(playerid, -1, "Odustali ste!");
  285. for(new f = 0; f <= Max_Firmi; f++)
  286. {
  287. if(IsPlayerInRangeOfPoint(playerid, 2.0, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]))
  288. {
  289. if(strval(inputtext) > InfoFirme[f][PareVlasnika])
  290. {
  291. format(w,sizeof(w),"Nemate toliko novaca u firmi,trenutno novaca %i$!",InfoFirme[f][PareVlasnika]);
  292. SendClientMessage(playerid,-1,w);
  293. ShowPlayerDialog(playerid,Dialog_Firme+1,DIALOG_STYLE_INPUT,"Dizanje novaca","Koliko novaca zelite podignuti iz firme?!","Podigni","Odustani");
  294. return true;
  295. }
  296. else
  297. {
  298. Uplata(f,-strval(inputtext));
  299. format(w,sizeof(w),"Izvadili ste %i$ sa racuna firme,na racunu ostalo jos %i$!",strval(inputtext),InfoFirme[f][PareVlasnika]);
  300. SendClientMessage(playerid,-1,w);
  301. GivePlayerMoney(playerid,strval(inputtext));
  302. }
  303. }
  304. }
  305. }
  306. if(dialogid == Dialog_Firme+2)
  307. {
  308. if(!response) return SendClientMessage(playerid, -1, "Odustali ste!");
  309. for(new f = 0; f <= Max_Firmi; f++)
  310. {
  311. if(IsPlayerInRangeOfPoint(playerid, 2.0, InfoFirme[f][IzlazXFirme], InfoFirme[f][IzlazYFirme], InfoFirme[f][IzlazZFirme]))
  312. {
  313. format(InfoFirme[f][ImeFirme], 24, "%s", inputtext);
  314. UpdateFirme(f);
  315. format(w,sizeof(w),"Novo ime firme je %s!",InfoFirme[f][ImeFirme]);
  316. SendClientMessage(playerid,-1,w);
  317. format(Label, sizeof(Label), "Ime firme:%s \nVlasnik:%s\n Level: %i",InfoFirme[f][ImeFirme],InfoFirme[f][VlasnikFirme],InfoFirme[f][LevelFirme]);
  318. Update3DTextLabelText(InfoFirme[f][LabelFirme],-1,Label);
  319. }
  320. }
  321. }
  322. return false;
  323. }
Advertisement
Add Comment
Please, Sign In to add comment