Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.24 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <csgomod>
  3. #include <ColorChat>
  4.  
  5. new const PREFIX[] = "Rynek"
  6. new id_skina[33];
  7.  
  8. #define MAX_VALUE 100 // maxymalna cena
  9. #define MIN_VALUE 1 // minimalna cena
  10. #define MAX_ITEMS 1 // maksymalna ilosc
  11.  
  12. new perk_gracza[33][MAX_ITEMS][512];
  13. new maxplayers, ilosc_perkow;
  14.  
  15. public plugin_init()
  16. {
  17. register_plugin("CoD Rynek", "1.3", "MAGNET (pomoc - GT Team) edited by SeeK");
  18. register_clcmd("say /rynek", "rynek");
  19. register_clcmd("cena", "wystawienie");
  20. maxplayers = get_maxplayers();
  21. ilosc_perkow = 0;
  22. }
  23. public plugin_natives()
  24. {
  25. register_native("csgo_rynek_wystawia", "rynek_czy_wystawia", 1);
  26. }
  27. public rynek_czy_wystawia(id){
  28. return getPlayerItemsAmount(id);
  29. }
  30. public client_authorized(id)
  31. {
  32. for(new i = 0; i < MAX_ITEMS; i ++){
  33. copy(perk_gracza[id][i], charsmax(perk_gracza[][]), "0#0#0");
  34. id_skina[i]=0;
  35. }
  36. }
  37. public client_disconnect(id)
  38. {
  39. for(new i = 0; i < MAX_ITEMS; i ++){
  40. copy(perk_gracza[id][i], charsmax(perk_gracza[][]), "0#0#0");
  41. id_skina[i]=0;
  42. }
  43. }
  44. public wybierz_skina(id){
  45. new menu, Line[128];
  46. formatex(Line, 127, "\d Przekaz Skina");
  47. menu = menu_create(Line, "csgo_daj_komenda_handler");
  48. formatex(Line, 127, "Wszystkie Bronie");
  49. menu_additem(menu, Line, "1");
  50. formatex(Line, 127, "AK47");
  51. menu_additem(menu, Line, "2");
  52. formatex(Line, 127, "M4A1");
  53. menu_additem(menu, Line, "3");
  54. formatex(Line, 127, "AWP");
  55. menu_additem(menu, Line, "4");
  56. formatex(Line, 127, "Deagla");
  57. menu_additem(menu, Line, "5");
  58. formatex(Line, 127, "Noza");
  59. menu_additem(menu, Line, "6");
  60. formatex(Line, 127, "Usp-s");
  61. menu_additem(menu, Line, "7");
  62. formatex(Line, 127, "Glock-18");
  63. menu_additem(menu, Line, "8");
  64. formatex(Line, 127, "Famas");
  65. menu_additem(menu, Line, "9");
  66. formatex(Line, 127, "Pozostale");
  67. menu_additem(menu, Line, "10");
  68. menu_display(id, menu);
  69. return PLUGIN_CONTINUE;
  70. }
  71. public csgo_daj_komenda_handler(id, menu, item){
  72. if(item == MENU_EXIT)
  73. {
  74. menu_destroy(menu);
  75. return PLUGIN_CONTINUE;
  76. }
  77. new szText[128], szMenu[128], String[33], id_broni[33], pozostale[33], wszystkie[33];
  78. switch(item){
  79. case 0:
  80. {
  81. formatex(szMenu, 127, "Twoje Wszystkie Skiny");
  82. wszystkie[id]++
  83. }
  84. case 1:
  85. {
  86. formatex(szMenu, 127, "Twoje Skiny do AK-47");
  87. id_broni[id]=28;
  88. }
  89. case 2:
  90. {
  91. formatex(szMenu, 127, "Twoje Skiny do M4A1");
  92. id_broni[id]=22;
  93. }
  94. case 3:
  95. {
  96. formatex(szMenu, 127, "Twoje Skiny do AWP");
  97. id_broni[id]=18;
  98. }
  99. case 4:
  100. {
  101. formatex(szMenu, 127, "Twoje Skiny do Deagla");
  102. id_broni[id]=26;
  103. }
  104. case 5:
  105. {
  106. formatex(szMenu, 127, "Twoje Skiny do Noza");
  107. id_broni[id]=29;
  108. }
  109. case 6:
  110. {
  111. formatex(szMenu, 127, "Twoje Skiny do USP");
  112. id_broni[id]=16;
  113. }
  114. case 7:
  115. {
  116. formatex(szMenu, 127, "Twoje Skiny do GLOCK-18");
  117. id_broni[id]=17;
  118. }
  119. case 8:
  120. {
  121. formatex(szMenu, 127, "Twoje Skiny do Famasa");
  122. id_broni[id]=15;
  123. }
  124. case 9:
  125. {
  126. formatex(szMenu, 127, "Twoje Skiny do Pozostalych broni");
  127. pozostale[id]++;
  128. }
  129. }
  130. new menu = menu_create(szMenu, "menu_skiny_handler");
  131. for(new i = 1; i < csgo_get_allweapon(); i++)
  132. {
  133. if(!pozostale[id])
  134. {
  135. if(wszystkie[id]){
  136. if(csgo_get_user_uweapon(id, i)<=0)
  137. continue;
  138. }
  139. else
  140. {
  141. if(csgo_weapons(i)!=id_broni[id] || csgo_get_user_uweapon(id, i)<=0)
  142. continue;
  143. }
  144. }
  145. else
  146. {
  147. if(csgo_weapons(i)==28 || csgo_weapons(i)==22 || csgo_weapons(i)==18 || csgo_weapons(i)==26 || csgo_weapons(i)==15 || csgo_weapons(i)==16 || csgo_weapons(i)==17 || csgo_weapons(i)==29 || csgo_get_user_uweapon(id, i)<=0)
  148. continue;
  149. }
  150. new nazwa[255];
  151. csgo_get_weapon_names(i, nazwa, 254)
  152. formatex(String, 32, "%d %d", i, csgo_weapons(i));
  153. formatex(szText, 127, "%s ", nazwa);
  154. menu_additem(menu, szText, String);
  155. }
  156. menu_display(id, menu);
  157. pozostale[id]=0;
  158. wszystkie[id]=0;
  159. return PLUGIN_CONTINUE;
  160. }
  161. public menu_skiny_handler(id, menu, item){
  162. if(item == MENU_EXIT)
  163. {
  164. menu_destroy(menu);
  165. return PLUGIN_CONTINUE;
  166. }
  167. new access, callback, Data[4][33], skin[33];
  168. menu_item_getinfo(menu, item, access, Data[0], 32, Data[1], 32, callback);
  169.  
  170. parse(Data[0], skin, 32);
  171. id_skina[id] = str_to_num(skin);
  172.  
  173. client_print(id, print_center, "Podaj Cene");
  174. client_cmd(id, "messagemode cena");
  175. return PLUGIN_CONTINUE;
  176. }
  177. public rynek(id)
  178. {
  179. new szText[128];
  180. formatex(szText, charsmax(szText), "\rCoD Rynek");
  181.  
  182. new menu = menu_create(szText, "rynek_handler");
  183. new cb = menu_makecallback("rynek_callback");
  184.  
  185. if(!csgo_allow(id))
  186. {
  187. client_print(id, 3, "Musisz posiadac /konto");
  188. return PLUGIN_HANDLED;
  189. }
  190.  
  191. new amount;
  192. //if(!csgo_get_user_uweapon(id, id_skina[id]))
  193. // formatex(szText, charsmax(szText), "Nie masz zadnego Skina do wystawienia.");
  194. if((amount = getPlayerItemsAmount(id)) >= MAX_ITEMS)
  195. formatex(szText, charsmax(szText), "Wystawiles/as juz %d skinow. Nie mozesz wiecej.",amount);
  196. else
  197. formatex(szText, charsmax(szText), "Wystaw Skina ( Max Cena: %i )",MAX_VALUE);
  198.  
  199. menu_additem(menu, szText, _, _, cb);
  200. formatex(szText, charsmax(szText), "%s", (ilosc_perkow > 0)? "Kup Skina": "Brak Ofert Kupna");
  201. menu_additem(menu, szText, _, _, cb);
  202.  
  203. formatex(szText, charsmax(szText), "Usun Skina z Rynku");
  204. menu_additem(menu, szText, _, _, cb);
  205.  
  206. menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER);
  207. menu_setprop(menu, MPROP_EXIT, 0);
  208. menu_display(id, menu);
  209. return PLUGIN_CONTINUE;
  210. }
  211. public rynek_callback(id, menu, item)
  212. {
  213. new amount = getPlayerItemsAmount(id);
  214. switch(item)
  215. {
  216. case 0: return amount < MAX_ITEMS ? ITEM_ENABLED : ITEM_DISABLED;
  217. case 1: return (ilosc_perkow > 0)? ITEM_ENABLED: ITEM_DISABLED;
  218. case 2: return (amount > 0)? ITEM_ENABLED: ITEM_DISABLED;
  219. }
  220. return ITEM_ENABLED;
  221. }
  222. public rynek_handler(id, menu, item)
  223. {
  224. if(item == MENU_EXIT)
  225. {
  226. menu_destroy(menu);
  227. return PLUGIN_HANDLED;
  228. }
  229. switch(item)
  230. {
  231. case 0: rynek_sprzedaz(id);
  232. case 1: rynek_kupno(id);
  233. case 2: rynek_usun(id);
  234. }
  235. return PLUGIN_CONTINUE;
  236. }
  237. public rynek_sprzedaz(id)
  238. {
  239. if(getPlayerItemsAmount(id) >= MAX_ITEMS)
  240. {
  241. client_print(id, print_center, "Mozesz wystawic tylko %d Skinow!",MAX_ITEMS);
  242. rynek(id);
  243. return;
  244. }
  245. wybierz_skina(id);
  246. }
  247. public wystawienie(id)
  248. {
  249. new szIle[8];
  250. read_argv(1, szIle, charsmax(szIle));
  251. new ile = str_to_num(szIle);
  252. if( ile <= 0 || ile > MAX_VALUE || ile<MIN_VALUE)
  253. {
  254. client_print(id, print_center, "Niepoprawna wartosc (MAX. %i) (Min. %i)", MAX_VALUE, MIN_VALUE);
  255. rynek(id);
  256. return PLUGIN_CONTINUE;
  257. }
  258. for(new y = 0; y < MAX_ITEMS; y ++)
  259. {
  260. if(!equal(perk_gracza[id][y], "0#0#0"))
  261. continue;
  262.  
  263. new nick[32];
  264. get_user_name(id, nick, charsmax(nick));
  265. new perk_id = id_skina[id];
  266.  
  267. new perk_name[64];
  268. csgo_get_weapon_names(perk_id, perk_name, charsmax(perk_name));
  269.  
  270. new dane[512];
  271. format(dane, charsmax(dane), "%i#%i#%i", id, ile, perk_id);
  272. copy(perk_gracza[id][y], charsmax(perk_gracza[][]), dane);
  273. //cod_set_user_perk(id, 0);
  274. ilosc_perkow ++;
  275.  
  276. client_print(id, print_center, "Wystawiles/as Skin na rynku!");
  277. ColorChat(0, GREEN, "[%s]^x01 Gracz^x03 %s^x01 wystawil Skin^x03 %s^x01 na rynku za^x03 %i Euro^x01.", PREFIX, nick, perk_name, ile);
  278. break;
  279. }
  280. return PLUGIN_CONTINUE;
  281. }
  282. public rynek_kupno(id)
  283. {
  284. new szText[128];
  285. formatex(szText, charsmax(szText), "\yDostepne Oferty:");
  286. new menu = menu_create(szText, "rynek_kupno_handler");
  287.  
  288. for(new i = 1; i <= maxplayers; i ++)
  289. {
  290. if(!is_user_connected(i))
  291. continue;
  292.  
  293. for(new y = 0; y < MAX_ITEMS; y ++)
  294. {
  295. if(equal(perk_gracza[i][y], "0#0#0"))
  296. continue;
  297.  
  298. new dane[512];
  299. format(dane, charsmax(dane), perk_gracza[i][y]);
  300. replace_all(dane, charsmax(dane), "#", " ");
  301.  
  302. new dane2[3][32];
  303. parse(dane, dane2[0], charsmax(dane2[]), dane2[1], charsmax(dane2[]), dane2[2], charsmax(dane2[]));
  304. new id_wystawiajacego = str_to_num(dane2[0]);
  305. new cena_perku_wystawiajacego = str_to_num(dane2[1]);
  306. new id_perku_wystawiajacego = str_to_num(dane2[2]);
  307.  
  308. new nick[32];
  309. get_user_name(id_wystawiajacego, nick, charsmax(nick));
  310.  
  311. new perk_name[64];
  312. csgo_get_weapon_names(id_perku_wystawiajacego, perk_name, charsmax(perk_name));
  313.  
  314. new data[4];
  315. data[0] = id_wystawiajacego;
  316. data[1] = cena_perku_wystawiajacego;
  317. data[2] = id_perku_wystawiajacego;
  318. data[3] = y;
  319.  
  320. formatex(szText, charsmax(szText), "%s\y [%s]\w Cena:\r [%i Euro]", nick, perk_name, cena_perku_wystawiajacego);
  321. menu_additem(menu, szText, data);
  322. }
  323. }
  324. menu_setprop(menu, MPROP_BACKNAME, "Wstecz");
  325. menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
  326. menu_setprop(menu, MPROP_EXIT, "Wyjscie");
  327. menu_display(id, menu);
  328. return PLUGIN_CONTINUE;
  329. }
  330. public rynek_kupno_handler(id, menu, item)
  331. {
  332. if(item == MENU_EXIT)
  333. {
  334. menu_destroy(menu);
  335. return PLUGIN_HANDLED;
  336. }
  337.  
  338. new szText[512], iLen = 0, iMax = sizeof(szText) - 1;
  339. new data[4], zaccess, callback;
  340. menu_item_getinfo(menu, item, zaccess, data, sizeof(data), _, _, callback);
  341.  
  342. new id_wystawiajacego = data[0];
  343. //new cena_perku_wystawiajacego = data[1];
  344. new id_perku_wystawiajacego = data[2];
  345.  
  346. new nick[32];
  347. get_user_name(id_wystawiajacego, nick, charsmax(nick));
  348.  
  349. new perk_name[64];
  350. csgo_get_weapon_names(id_perku_wystawiajacego, perk_name, charsmax(perk_name));
  351.  
  352. iLen += formatex(szText[iLen], iMax-iLen, "Potwierdzenie kupna Skina od: \r%s^n", nick);
  353. iLen += formatex(szText[iLen], iMax-iLen, "\yPerk: \r%s^n", perk_name);
  354. //iLen += formatex(szText[iLen], iMax-iLen, "\yKoszt: \r%i Euro^n", cena_perku_wystawiajacego);
  355. iLen += formatex(szText[iLen], iMax-iLen, "\wCzy chcesz kupic ten Skin?");
  356.  
  357. new menu = menu_create(szText, "rynek_kupno_potwierdzenie");
  358. menu_additem(menu, "Tak", data);
  359. menu_additem(menu, "Nie");
  360.  
  361. menu_setprop(menu, MPROP_EXIT,MEXIT_NEVER)
  362. menu_display(id, menu);
  363. return PLUGIN_CONTINUE;
  364. }
  365. public rynek_kupno_potwierdzenie(id, menu, item)
  366. {
  367. if(item == MENU_EXIT || item == 1)
  368. {
  369. rynek_kupno(id);
  370. return PLUGIN_HANDLED;
  371. }
  372. new data[4], zaccess, callback;
  373. menu_item_getinfo(menu, item, zaccess, data, sizeof(data), _, _, callback);
  374. new slot_perku_wystawiajacego = data[3];
  375.  
  376. new dane[512];
  377. format(dane, charsmax(dane), perk_gracza[data[0]][slot_perku_wystawiajacego]);
  378. replace_all(dane, charsmax(dane), "#", " ");
  379.  
  380. new dane2[3][32];
  381. parse(dane, dane2[0], charsmax(dane2[]), dane2[1], charsmax(dane2[]), dane2[2], charsmax(dane2[]));
  382. new id_wystawiajacego = str_to_num(dane2[0]);
  383. new cena_perku_wystawiajacego = str_to_num(dane2[1]);
  384. new id_perku_wystawiajacego = str_to_num(dane2[2]);
  385.  
  386. if(!id_wystawiajacego || !is_user_connected(id_wystawiajacego))
  387. {
  388. client_print(id, print_center, "Skin zostal juz usuniety ze sprzedazy!");
  389. rynek_kupno(id);
  390. return PLUGIN_CONTINUE;
  391. }
  392. if(!cena_perku_wystawiajacego || !id_perku_wystawiajacego)
  393. {
  394. client_print(id, print_center, "Skin zostal juz kupiony.");
  395. rynek_kupno(id);
  396. return PLUGIN_CONTINUE;
  397. }
  398. if(id == id_wystawiajacego)
  399. {
  400. ColorChat(id, GREEN, "[%s]^x03 Nie mozesz kupic swojego skina!", PREFIX);
  401. rynek_kupno(id);
  402. return PLUGIN_CONTINUE;
  403. }
  404. if(Float:csgo_get_user_euro(id) < float(cena_perku_wystawiajacego))
  405. {
  406. client_print(id, print_center, "Masz za malo Euro!");
  407. rynek_kupno(id);
  408. return PLUGIN_CONTINUE;
  409. }
  410. new nick[32];
  411. get_user_name(id, nick, charsmax(nick));
  412. csgo_set_user_euro(id, Float:csgo_get_user_euro(id)-cena_perku_wystawiajacego);
  413. csgo_set_user_euro(id_wystawiajacego, Float:csgo_get_user_euro(id_wystawiajacego)+cena_perku_wystawiajacego);
  414.  
  415. csgo_set_user_uweapon(id, id_perku_wystawiajacego, csgo_get_user_uweapon(id, id_perku_wystawiajacego)+1);
  416. csgo_set_user_uweapon(id_wystawiajacego, id_perku_wystawiajacego, csgo_get_user_uweapon(id_wystawiajacego, id_perku_wystawiajacego)-1);
  417.  
  418. ilosc_perkow --;
  419.  
  420. ColorChat(id, GREEN, "[%s]^x01 Skin zostal zakupiony pomyslnie.", PREFIX);
  421. ColorChat(id_wystawiajacego, GREEN, "[%s]^x01 Twoj Skin zostal zakupiony przez^x03 %s^x01. Otrzymujesz^x03 %i Euro^x01.", PREFIX, nick, cena_perku_wystawiajacego);
  422. copy(perk_gracza[id_wystawiajacego][slot_perku_wystawiajacego], charsmax(perk_gracza[][]), "0#0#0");
  423. return PLUGIN_CONTINUE;
  424. }
  425. public rynek_usun(id)
  426. {
  427. new szText[128];
  428. formatex(szText, charsmax(szText), "\yTwoje Oferty:");
  429. new menu = menu_create(szText, "rynek_usun_handler");
  430. for(new y = 0; y < MAX_ITEMS; y ++)
  431. {
  432. if(equal(perk_gracza[id][y], "0#0#0"))
  433. continue;
  434.  
  435. new dane[512];
  436. format(dane, charsmax(dane), perk_gracza[id][y]);
  437. replace_all(dane, charsmax(dane), "#", " ");
  438.  
  439. new dane2[3][32];
  440. parse(dane, dane2[0], charsmax(dane2[]), dane2[1], charsmax(dane2[]), dane2[2], charsmax(dane2[]));
  441. new cena_perku_wystawiajacego = str_to_num(dane2[1]);
  442. new id_perku_wystawiajacego = str_to_num(dane2[2]);
  443.  
  444. new perk_name[64];
  445. csgo_get_weapon_names(id_perku_wystawiajacego, perk_name, charsmax(perk_name));
  446.  
  447. new data[3];
  448. data[0] = cena_perku_wystawiajacego;
  449. data[1] = id_perku_wystawiajacego;
  450. data[2] = y;
  451. formatex(szText, charsmax(szText), "\y[%s]\w Cena:\r [%i Euro]", perk_name, cena_perku_wystawiajacego);
  452. menu_additem(menu, szText, data);
  453. }
  454. menu_setprop(menu, MPROP_BACKNAME, "Wstecz");
  455. menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
  456. menu_setprop(menu, MPROP_EXIT, "Wyjscie");
  457. menu_display(id, menu);
  458. }
  459. public rynek_usun_handler(id, menu, item)
  460. {
  461. if(item == MENU_EXIT)
  462. {
  463. menu_destroy(menu);
  464. return PLUGIN_HANDLED;
  465. }
  466.  
  467. new szText[256], iLen = 0, iMax = sizeof(szText) - 1;
  468. new data[3], zaccess, callback;
  469. menu_item_getinfo(menu, item, zaccess, data, sizeof(data), _, _, callback);
  470. //new cena_perku_wystawiajacego = data[0];
  471. new id_perku_wystawiajacego = data[1];
  472.  
  473. new perk_name[64];
  474. csgo_get_weapon_names(id_perku_wystawiajacego, perk_name, charsmax(perk_name));
  475.  
  476. iLen += formatex(szText[iLen], iMax-iLen, "Potwierdzenie usuniecia^n");
  477. iLen += formatex(szText[iLen], iMax-iLen, "\ySkin: \r%s^n", perk_name);
  478. iLen += formatex(szText[iLen], iMax-iLen, "\wCzy chcesz usunac?");
  479.  
  480. new menu = menu_create(szText, "rynek_usun_potwierdzenie");
  481. menu_additem(menu, "Tak", data);
  482. menu_additem(menu, "Nie");
  483. menu_setprop(menu, MPROP_EXIT,MEXIT_NEVER)
  484. menu_display(id, menu);
  485. return PLUGIN_CONTINUE;
  486. }
  487. public rynek_usun_potwierdzenie(id, menu, item)
  488. {
  489. if(item == MENU_EXIT || item == 1)
  490. {
  491. rynek_usun(id);
  492. return PLUGIN_HANDLED;
  493. }
  494.  
  495. new data[3], zaccess, callback;
  496. menu_item_getinfo(menu, item, zaccess, data, sizeof(data), _, _, callback);
  497. new slot_perku_wystawiajacego = data[2];
  498.  
  499. new dane[512];
  500. format(dane, charsmax(dane), perk_gracza[id][slot_perku_wystawiajacego]);
  501. replace_all(dane, charsmax(dane), "#", " ");
  502.  
  503. new dane2[3][32];
  504. parse(dane, dane2[0], charsmax(dane2[]), dane2[1], charsmax(dane2[]), dane2[2], charsmax(dane2[]));
  505. new cena_perku_wystawiajacego = str_to_num(dane2[1]);
  506. new id_perku_wystawiajacego = str_to_num(dane2[2]);
  507. if(!cena_perku_wystawiajacego || !id_perku_wystawiajacego)
  508. {
  509. client_print(id, print_center, "Skin zostal juz kupiony.");
  510. rynek_usun(id);
  511. return PLUGIN_CONTINUE;
  512. }
  513.  
  514. ilosc_perkow --;
  515. copy(perk_gracza[id][slot_perku_wystawiajacego], charsmax(perk_gracza[][]), "0#0#0");
  516. ColorChat(id, GREEN, "[%s]^x01 Skin zostal pomyslnie usuniety z rynku.", PREFIX)
  517. rynek_usun(id);
  518.  
  519. return PLUGIN_CONTINUE;
  520. }
  521. public getPlayerItemsAmount(id)
  522. {
  523. if(!is_user_connected(id))
  524. return 0;
  525.  
  526. new amount = 0;
  527. for(new y = 0; y < MAX_ITEMS; y ++)
  528. {
  529. if(equal(perk_gracza[id][y], "0#0#0"))
  530. continue;
  531.  
  532. amount ++;
  533. }
  534. return amount;
  535. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement