Advertisement
Guest User

Untitled

a guest
Mar 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.11 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////////////
  2. ///////////////////////////SISTEM PRIJATELJA v0.1 by Miki////////////////////////
  3. ////////////////////////////////////////////////////////////////////////////////
  4.  
  5. #include < a_samp >
  6. #include < MYSQL\m_ysql >
  7. #include < foreach >
  8. #include < MYSQL\m_commands >
  9.  
  10. new prvispawn[MAX_PLAYERS];//
  11. new zahtjevzafr[MAX_PLAYERS];// varijabla za slanje zahtjeva za prijateljstvo
  12. //BOJE
  13. #define server_boja "{0099CC}"
  14.  
  15. //DIJALOZI -
  16. #define PRIJATELJI 12251
  17. #define PRIJATELJIADD 12252
  18. #define PRIJATELJIADD2 12253
  19. #define PRIJATELJIDEL 12254
  20.  
  21. //DIREKTORIJUM - mjesto gdje ce spremati
  22. #define PRIJATELJ_FILE "/Prijatelji/%d.ini"
  23.  
  24. //MJESTO SPREMANJA ACCova
  25. #define KORISNICI "Korisnici/%s.ini"
  26.  
  27. //MAX BROJ FAJLOVA
  28. #define MAX_PRIJATELJA (5000)
  29.  
  30. //OSTALE DEFINICIJE
  31. #define SPD ShowPlayerDialog
  32.  
  33. #define GRESKA(%0,%1) \
  34. SendClientMessageEx(%0, -1, "{F5052D}(greska) {FFFFFF} "%1)
  35.  
  36. #define INFO(%0,%1) \
  37. SendClientMessageEx(%0, -1, "{2e9cd1}(info) {FFFFFF} "%1)
  38.  
  39. //ENUM ZA PRIJATELJE
  40. enum enum_Prijatelji
  41. {
  42. miki_ime[MAX_PLAYER_NAME],
  43. miki_Prijatelj[20],
  44. };
  45.  
  46. new Prijatelj[MAX_PRIJATELJA][enum_Prijatelji];
  47.  
  48. //ENUM ZA IGRACA
  49. enum pInfo
  50. {
  51. pPrijatelj
  52. };
  53. new PlayerInfo[MAX_PLAYERS][pInfo];
  54.  
  55. public OnPlayerConnect(playerid)
  56. {
  57. PlayerInfo[playerid][pPrijatelj] = -1; //RESETOVANJE VARIJABLE
  58. prvispawn[playerid] = 1;
  59. return 1;
  60. }
  61.  
  62. public OnPlayerSpawn(playerid)
  63. {
  64. INI_ParseFile( Korisnici(playerid), "LoadPlayer", .bExtra = true, .extra = playerid );
  65. if(prvispawn[playerid] == 1)
  66. {
  67. prvispawn[playerid] = 0;
  68. ProvjeriPrijatelje(playerid); //PROVJERA DA LI IGRAC IMA FAJL ZA PRIJATELJE,AKO NEMA KREIRATI CE
  69. }
  70. return 1;
  71. }
  72.  
  73. public OnGameModeInit()
  74. {
  75. for(new fr_id = 1; fr_id < MAX_PRIJATELJA; fr_id++)//UCITAVANJE PRIJATELJA
  76. {
  77. new friend_File[50];
  78. format(friend_File, sizeof(friend_File), PRIJATELJ_FILE, fr_id);
  79. if(fexist(friend_File))
  80. {
  81. INI_ParseFile(friend_File, "ucitajprijatelje", .bExtra = true, .extra = fr_id);
  82. }
  83. }
  84. return 1;
  85. }
  86.  
  87. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  88. {
  89. new string[256];
  90. if(dialogid == PRIJATELJI)//DIALOG ZA PRIJATELJ MENI
  91. {
  92. if(!response) return 1;
  93. new prijateljid1 = PlayerInfo[playerid][pPrijatelj];
  94. switch(listitem)
  95. {
  96. case 0://SPISAK PRIJATELJA
  97. {
  98. new string1[256];
  99. new string2[1000];
  100. new string3[1050];
  101. new rednibroj = 0;
  102. for(new i=0; i<20; i++)
  103. {
  104. if(Prijatelj[prijateljid1][miki_Prijatelj][i] != -1)
  105. {
  106. new prijateljid2 = Prijatelj[prijateljid1][miki_Prijatelj][i];
  107. new o[20];
  108. if(IsPlayerConnected(GetPlayerIDS(Prijatelj[prijateljid2][miki_ime])))
  109. {
  110. o = "{00FF00}ONLINE";
  111. }
  112. else { o = "{FF0000}OFFLINE";}
  113.  
  114. rednibroj++;
  115. format(string1, sizeof(string1), ""server_boja"%d.\t%s\t%s\n",rednibroj,Prijatelj[prijateljid2][miki_ime],o);
  116. strcat(string2, string1, sizeof(string2));
  117. }
  118. }
  119. new a[50];
  120. a = "RB\tPrijatelj\tStatus\n";
  121. format(string3, sizeof(string3), "%s%s",a,string2);
  122. ShowPlayerDialog(playerid,0,DIALOG_STYLE_TABLIST_HEADERS,""server_boja"- SVI PRIJATELJI -",string3,""server_boja"Ok","");
  123. }
  124. case 1://DODAVANJE PRIJATELJA
  125. {
  126. SPD(playerid, PRIJATELJIADD, DIALOG_STYLE_INPUT, ""server_boja"- DODAVANJE PRIJATELJA -", "- UNESITE ID IGRACA KOG ZELITE ZA PRIJATELJA -", ""server_boja"Dodaj", ""server_boja"Izlaz");
  127. }
  128. case 2://BRISANJE PRIJATELJA
  129. {
  130. new string1[256];
  131. new string2[1000];
  132. strcat(string2, "- UNESITE SLOT PRIJATELJA KOJEG ZELITE DA OBRISETE -\n\n", sizeof(string2));
  133. for(new i=0; i<20; i++)
  134. {
  135. if(Prijatelj[prijateljid1][miki_Prijatelj][i] != -1)
  136. {
  137. new prijateljid2 = Prijatelj[prijateljid1][miki_Prijatelj][i];
  138. format(string1, sizeof(string1), "[SLOT %d]%s\n",i,Prijatelj[prijateljid2][miki_ime]);
  139. strcat(string2, string1, sizeof(string2));
  140. }
  141. }
  142. SPD(playerid, PRIJATELJIDEL, DIALOG_STYLE_INPUT, ""server_boja"- BRISANJE PRIJATELJA -", string2, ""server_boja"Obrisi", ""server_boja"Izlaz");
  143. }
  144. }
  145. }
  146.  
  147.  
  148. if(dialogid == PRIJATELJIDEL)//BRISANJE PRIJATELJA
  149. {
  150. if(!response) return 1;
  151. new slot = strval(inputtext);
  152. new prijateljid1 = PlayerInfo[playerid][pPrijatelj];
  153. if(Prijatelj[prijateljid1][miki_Prijatelj][slot] == -1) return GRESKA(playerid, "Nemate prijatelja na tom slotu.");
  154. if(slot < 0 || slot > 19) return GRESKA(playerid, "Najmanji slot je 0 a najveci 19!");
  155. Prijatelj[prijateljid1][miki_Prijatelj][slot] = -1;
  156. sacuvajprijatelje(prijateljid1);
  157. INFO(playerid, ""server_boja"Obrisali ste prijatelja na slotu %d.",slot);
  158. }
  159.  
  160. if(dialogid == PRIJATELJIADD)//DODAVANJE PRIJATELJA 1
  161. {
  162. if(!response) return 1;
  163. new id = strval(inputtext);
  164. if(!IsPlayerConnected(id)) return GRESKA(playerid, "Taj igrac nije konektovan!");
  165. if(Imamlimaxprijatelja(playerid)) return GRESKA(playerid, "Imate svih 20 prijatelja,dostigli ste maksimum.");
  166. if(Imamlimaxprijatelja(id)) return GRESKA(playerid, "Taj igrac ima maksimum prijatelja.");
  167. if(Igracvecnalisti(playerid, id)) return GRESKA(playerid, "Taj igrac je vec vas prijatelj!");
  168. if(playerid == id) return GRESKA(playerid, "Ne mozete sebi poslati zahtjev!");
  169. zahtjevzafr[id] = playerid;
  170. //new string[256];
  171. format(string, sizeof(string), "{FFFFFF}Igrac "server_boja"%s {FFFFFF}vam je poslao zahtjev za prijateljstvo.", ImeIgraca(playerid));
  172. ShowPlayerDialog(id,PRIJATELJIADD2,DIALOG_STYLE_MSGBOX,""server_boja"- DODAVANJE PRIJATELJA -",string,""server_boja"Prihvati",""server_boja"Odbij");
  173. }
  174.  
  175. if(dialogid == PRIJATELJIADD2)//DODAVANJE PRIJATELJA 2
  176. {
  177. if(!response) return 1;
  178.  
  179. if(response)
  180. {
  181. INFO(playerid, "Prihvatili ste zahtjev za prijateljstvo.");
  182. INFO(zahtjevzafr[playerid], "Osoba kojoj ste poslali zahtjev je prihvatila, sada ste prijatelji.");
  183. Dodajprijatelja(playerid, zahtjevzafr[playerid]);
  184. Dodajprijatelja(zahtjevzafr[playerid], playerid);
  185. }
  186. }
  187. return 1;
  188. }
  189.  
  190. forward LoadPlayer(playerid, name[], value[]);
  191. public LoadPlayer(playerid, name[], value[])
  192. {
  193. INI_Int( "Prijatelj", PlayerInfo[ playerid ][ pPrijatelj ] );
  194. return true;
  195. }
  196.  
  197. stock SavePlayer(playerid)
  198. {
  199. new INI:File = INI_Open(Korisnici(playerid));
  200. INI_WriteInt( File, "Prijatelj", PlayerInfo[ playerid ][ pPrijatelj ] );
  201. INI_Close(File);
  202. return true;
  203. }
  204.  
  205. YCMD:prijatelji(playerid, params[], help)//KOMANDA ZA PRIJATELJE
  206. {
  207. if(IsPlayerConnected(playerid))
  208. {
  209. SPD(playerid, PRIJATELJI, DIALOG_STYLE_LIST, ""server_boja"- PRIJATELJI v0.1 - by Miki", "1"server_boja"- SVI PRIJATELJI -\n2"server_boja"- DODAJ PRIJATELJA -\n3"server_boja"- OBRISI PRIJATELJA -", ""server_boja"Ok", ""server_boja"Izlaz");
  210. }
  211. return true;
  212. }
  213.  
  214. //////////////////////STOCKOVI I PUBLICI///////////////////////////////////////////////
  215. stock NEPostojilifriendid(id)
  216. {
  217. new frend_File[50];
  218. format(frend_File, sizeof(frend_File), PRIJATELJ_FILE, id);
  219. if(!fexist(frend_File)) { return 1; }
  220. return 0;
  221. }
  222.  
  223. stock Imamlimaxprijatelja(playerid)
  224. {
  225. new prijateljid = PlayerInfo[playerid][pPrijatelj];
  226. for(new i=0; i<20; i++)
  227. {
  228. if(Prijatelj[prijateljid][miki_Prijatelj][i] == -1) return 0;
  229. }
  230. return 1;
  231.  
  232. }
  233.  
  234. stock Igracvecnalisti(playerid, id)
  235. {
  236. new prijateljid1 = PlayerInfo[playerid][pPrijatelj];
  237. new prijateljid2 = PlayerInfo[id][pPrijatelj];
  238. for(new i=0; i<20; i++)
  239. {
  240. if(Prijatelj[prijateljid1][miki_Prijatelj][i] == prijateljid2) return 1;
  241. }
  242.  
  243. return 0;
  244. }
  245.  
  246. stock Dodajprijatelja(id1, id2)
  247. {
  248. new prijateljid1 = PlayerInfo[id1][pPrijatelj];
  249. new prijateljid2 = PlayerInfo[id2][pPrijatelj];
  250. for(new i=0; i<20; i++)
  251. {
  252. if(Prijatelj[prijateljid1][miki_Prijatelj][i] == -1)
  253. {
  254. Prijatelj[prijateljid1][miki_Prijatelj][i] = prijateljid2;
  255. sacuvajprijatelje(prijateljid1);
  256. break;
  257. }
  258. }
  259. return 1;
  260. }
  261. forward ucitajprijatelje(id, name[], value[]);
  262. public ucitajprijatelje(id, name[], value[])
  263. {
  264. new string[MAX_PLAYER_NAME];
  265. INI_String("Ime", Prijatelj[id][miki_ime], MAX_PLAYER_NAME);
  266. for(new i=0; i<20; i++)
  267. {
  268. format(string, sizeof(string),"Prijatelj[%i]",i);
  269. INI_Int(string,Prijatelj[id][miki_Prijatelj][i]);
  270. }
  271. return 1;
  272. }
  273.  
  274. stock sacuvajprijatelje(id)
  275. {
  276. new prijatelj_File[50];
  277. format(prijatelj_File, sizeof(prijatelj_File), PRIJATELJ_FILE, id);
  278. new INI:File = INI_Open(prijatelj_File);
  279. INI_WriteString(File,"Ime", Prijatelj[id][miki_ime]);
  280. new string[50];
  281. for(new i=0; i<20; i++)
  282. {
  283. format(string, sizeof(string),"Prijatelj[%i]",i);
  284. INI_WriteInt(File,string,Prijatelj[id][miki_Prijatelj][i]);
  285. }
  286. INI_Close(File);
  287. return 1;
  288. }
  289.  
  290. stock ProvjeriPrijatelje(playerid)
  291. {
  292. if(PlayerInfo[playerid][pPrijatelj] == -1 || NEPostojilifriendid(PlayerInfo[playerid][pPrijatelj]))//ako je nekome varijabla -1 da mu kreira novi fajl za prijatelje
  293. {
  294. PlayerInfo[playerid][pPrijatelj] = getEmptyID(MAX_PRIJATELJA, PRIJATELJ_FILE);
  295. for(new i=0; i<20; i++)
  296. {
  297. Prijatelj[PlayerInfo[playerid][pPrijatelj]][miki_Prijatelj][i] = -1;
  298. }
  299. strmid(Prijatelj[PlayerInfo[playerid][pPrijatelj]][miki_ime], ImeIgraca(playerid), 0, strlen(ImeIgraca(playerid)), 999);
  300. sacuvajprijatelje(PlayerInfo[playerid][pPrijatelj]);
  301. SavePlayer(playerid);
  302. INFO(playerid, "Kreiran vam je fajl za prijatelje.");
  303. }
  304. return 1;
  305. }
  306.  
  307. forward GetPlayerIDS(string[]);
  308. public GetPlayerIDS(string[])
  309. {
  310. foreach(Player, i)
  311. {
  312. if(IsPlayerConnected(i) == 1)
  313. {
  314. new testname[MAX_PLAYER_NAME];
  315. GetPlayerName(i, testname, sizeof(testname));
  316. if(strcmp(testname, string, true, strlen(string)) == 0)
  317. {
  318. return i;
  319. }
  320. }
  321. }
  322. return INVALID_PLAYER_ID;
  323. }
  324.  
  325. stock SendClientMessageEx(playerid, color, const str[], {Float,_}:...) {
  326. static
  327. args,
  328. start,
  329. end,
  330. string[144]
  331. ;
  332. #emit LOAD.S.pri 8
  333. #emit STOR.pri args
  334.  
  335. if(args > 12)
  336. {
  337. #emit ADDR.pri str
  338. #emit STOR.pri start
  339.  
  340. for (end = start + (args - 12); end > start; end -= 4)
  341. {
  342. #emit LREF.pri end
  343. #emit PUSH.pri
  344. }
  345. #emit PUSH.S str
  346. #emit PUSH.C 144
  347. #emit PUSH.C string
  348. #emit PUSH.C args
  349. #emit SYSREQ.C format
  350.  
  351. SendClientMessage(playerid, color, string);
  352.  
  353. #emit LCTRL 5
  354. #emit SCTRL 4
  355. #emit RETN
  356. }
  357. return SendClientMessage(playerid, color, str);
  358. }
  359.  
  360. stock ImeIgraca(playerid)
  361. {
  362. new name[MAX_PLAYER_NAME];
  363. GetPlayerName(playerid, name, sizeof(name));
  364. return name;
  365. }
  366.  
  367. stock Korisnici(playerid)
  368. {
  369. new string[128];
  370. format(string,sizeof(string),KORISNICI,ImeIgraca(playerid));
  371. return string;
  372. }
  373.  
  374. stock getEmptyID(const len, const lokacija[])
  375. {
  376. new id = (-1);
  377. for(new loop = (0), provjera = (-1), Data_[64] = "\0"; loop != len; ++ loop)
  378. {
  379. provjera = (loop+1);
  380. format(Data_, (sizeof Data_), lokacija ,provjera);
  381. if(!fexist(Data_))
  382. {
  383. id = (provjera);
  384. break;
  385. }
  386. }
  387. return (id);
  388. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement