Advertisement
DovlaPsycho

Knife System v1.3 by Pićunak

Jul 6th, 2016
1,352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.32 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <nvault>
  3. #include <cstrike>
  4. #include <colorchat>
  5. #include <engine>
  6.  
  7. #define PLUGIN "Knife System"
  8. #define VERZIJA "1.3"
  9. #define AUTOR "Pićunak"
  10. #define HUD 1
  11. #define Prefiks "[Knife Mod]"
  12. #define Mapa "fy_snow"
  13.  
  14. new trenutni_model_noza[33];
  15. new ubistva_igraca[33];
  16. new osvojeno_nozeva[33];
  17. new noz_vault;
  18. new hud_objekat;
  19.  
  20. enum KnifeData
  21. {
  22. Naziv,
  23. PotrebnoUbistava,
  24. ViewModel,
  25. PlayerModel
  26. };
  27.  
  28. new const PodaciNozeva[28][KnifeData][] =
  29. {
  30. //Naziv Ubistva "View" model "Player" model
  31. {"Default", 0, "models/v_knife.mdl", "models/p_knife.mdl"},
  32. {"Machete", 10, "models/knife-system/v_machete.mdl", "models/knife-system/p_machete.mdl"},
  33. {"Back", 20, "models/knife-system/v_back.mdl", "models/knife-system/p_back.mdl"},
  34. {"Pocket", 30, "models/knife-system/v_pocket.mdl", "models/knife-system/p_pocket.mdl"},
  35. {"Butcher", 40, "models/knife-system/v_butcher.mdl", "models/knife-system/p_butcher.mdl"},
  36. {"Wooden", 50, "models/knife-system/v_wooden.mdl", "models/knife-system/p_wooden.mdl"},
  37. {"Dragon", 60, "models/knife-system/v_dragon.mdl", "models/knife-system/p_dragon.mdl"},
  38. {"Ninja", 70, "models/knife-system/v_ninja.mdl", "models/knife-system/p_ninja.mdl"},
  39. {"Black", 80, "models/knife-system/v_black.mdl", "models/knife-system/p_black.mdl"},
  40. {"Hitman", 90, "models/knife-system/v_hitman.mdl", "models/knife-system/p_hitman.mdl"},
  41. {"Daedric", 100, "models/knife-system/v_daedric.mdl", "models/knife-system/p_daedric.mdl"},
  42. {"Ice", 150, "models/knife-system/v_ice.mdl", "models/knife-system/p_ice.mdl"},
  43. {"Katane", 200, "models/knife-system/v_katana.mdl", "models/knife-system/p_katana.mdl"},
  44. {"Rusty", 250, "models/knife-system/v_rusty.mdl", "models/knife-system/p_rusty.mdl"},
  45. {"Crowbar", 300, "models/knife-system/v_crowbar.mdl", "models/knife-system/p_crowbar.mdl"},
  46. {"Celurit", 350, "models/knife-system/v_celurit.mdl", "models/knife-system/p_celurit.mdl"},
  47. {"Kabar", 400, "models/knife-system/v_kabar.mdl", "models/knife-system/p_kabar.mdl"},
  48. {"Karambit", 450, "models/knife-system/v_karambit.mdl", "models/knife-system/p_karambit.mdl"},
  49. {"Omega", 500, "models/knife-system/v_domega.mdl", "models/knife-system/p_domega.mdl"},
  50. {"Metal Machete", 550, "models/knife-system/v_mmachete.mdl", "models/knife-system/p_mmachete.mdl"},
  51. {"Plunger", 600, "models/knife-system/v_plunger.mdl", "models/knife-system/p_plunger.mdl"},
  52. {"Rambo", 650, "models/knife-system/v_rambo.mdl", "models/knife-system/p_rambo.mdl"},
  53. {"Toporiaka", 700, "models/knife-system/v_toporiaka.mdl", "models/knife-system/p_toporiaka.mdl"},
  54. {"Candy", 750, "models/knife-system/v_candy.mdl", "models/knife-system/p_candy.mdl"},
  55. {"Elite", 800, "models/knife-system/v_elite.mdl", "models/knife-system/p_elite.mdl"},
  56. {"Traker", 850, "models/knife-system/v_traker.mdl", "models/knife-system/p_traker.mdl"},
  57. {"Bayonet", 900, "models/knife-system/v_bayonet.mdl", "models/knife-system/p_bayonet.mdl"},
  58. {"Bowie", 950, "models/knife-system/v_bowie.mdl", "models/knife-system/p_bowie.mdl"}
  59. }
  60.  
  61. public plugin_precache()
  62. {
  63. for(new i; i < sizeof(PodaciNozeva); i++)
  64. {
  65. precache_model(PodaciNozeva[i][ViewModel]);
  66. precache_model(PodaciNozeva[i][PlayerModel]);
  67. }
  68. }
  69.  
  70. public plugin_init()
  71. {
  72. register_plugin(PLUGIN, VERZIJA, AUTOR)
  73. register_clcmd("say /knife", "PromeniNoz");
  74. register_clcmd("say_team /knife", "PromeniNoz");
  75. register_clcmd("say /noz", "PromeniNoz");
  76. register_clcmd("say_team /noz", "PromeniNoz");
  77. register_clcmd("say /resetall", "RestartUbistava");
  78. register_clcmd("say_team /resetall", "RestartUbistava");
  79. register_clcmd("say /reset", "Resetovanje");
  80. register_clcmd("say_team /reset", "Resetovanje");
  81.  
  82. register_event("CurWeapon", "CurWeapon", "be", "1=1");
  83.  
  84. register_message(get_user_msgid("SayText"),"handleSayText");
  85.  
  86. noz_vault = nvault_open("KnifeSystem");
  87. if(noz_vault == INVALID_HANDLE) set_fail_state("Greska pri otvaranju gVaulta");
  88. hud_objekat = CreateHudSyncObj();
  89. }
  90.  
  91. public PromeniNoz(id)
  92. {
  93. if(!is_user_connected(id))
  94. return PLUGIN_HANDLED;
  95.  
  96. new menu = menu_create("Izaberi noz" , "izaberi_noz_handle");
  97. new MeniNozevi[64];
  98. for(new i; i < sizeof(PodaciNozeva); i++)
  99. {
  100. if(ubistva_igraca[id] < PodaciNozeva[i][PotrebnoUbistava][0])
  101. {
  102. formatex(MeniNozevi, charsmax(MeniNozevi), "%s \r[Ubistva %i/%i]", PodaciNozeva[i][Naziv], ubistva_igraca[id], PodaciNozeva[i][PotrebnoUbistava]);
  103. }
  104. else
  105. formatex(MeniNozevi, charsmax(MeniNozevi), "%s \y[Otkljucano]", PodaciNozeva[i][Naziv]);
  106. menu_additem(menu, MeniNozevi);
  107. }
  108. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  109. menu_setprop(menu, MPROP_BACKNAME, "Prethodna stranica");
  110. menu_setprop(menu, MPROP_NEXTNAME, "Sledeca stranica");
  111. menu_setprop(menu, MPROP_EXITNAME, "Izlaz");
  112. menu_display(id, menu);
  113. return PLUGIN_HANDLED;
  114. }
  115.  
  116. public izaberi_noz_handle(id, menu, item)
  117. {
  118. if(item == MENU_EXIT)
  119. {
  120. menu_destroy(menu);
  121. }
  122. if(item == trenutni_model_noza[id])
  123. {
  124. ColorChat(id,GREEN,"%s ^1Vec koristis taj noz.", Prefiks);
  125. return;
  126. }
  127.  
  128. new command[6], name[64], access, callback;
  129. menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
  130.  
  131. if(ubistva_igraca[id] < PodaciNozeva[item][PotrebnoUbistava][0])
  132. ColorChat(id,GREEN,"%s ^1Nemas potreban broj ubistava za ovaj noz.", Prefiks);
  133. else
  134. PostaviNoz(id , item), ColorChat(id,GREEN,"%s ^1Promenio si noz, sada koristis %s.", Prefiks, PodaciNozeva[item][Naziv]);
  135.  
  136. menu_destroy(menu);
  137. }
  138.  
  139. PostaviNoz(id , knife)
  140. {
  141. new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo);
  142. if(Weapon != CSW_KNIFE)
  143. return;
  144.  
  145. trenutni_model_noza[id] = knife;
  146. new vModel[56];
  147. new pModel[56];
  148. format(vModel, 55, PodaciNozeva[knife][ViewModel]);
  149. format(pModel, 55, PodaciNozeva[knife][PlayerModel]);
  150. entity_set_string(id, EV_SZ_viewmodel, vModel)
  151. entity_set_string(id, EV_SZ_weaponmodel, pModel)
  152. }
  153.  
  154. public CurWeapon(id)
  155. {
  156. PostaviNoz(id, trenutni_model_noza[id]);
  157. }
  158.  
  159. public pokazi_podatke(id)
  160. {
  161. id -= HUD
  162. set_task(0.2, "pokazi_podatke", id+HUD);
  163. osvojeno_nozeva[id] = OsvojenoNozeva(id);
  164. if(!is_user_alive(id))
  165. {
  166. new target = entity_get_int(id, EV_INT_iuser2);
  167. if(target == 0)
  168. return;
  169.  
  170. set_hudmessage(0, 127, 255, 0.01, 0.23, 0, 0.0, 0.21, 0.0, 0.0, 2);
  171. ShowSyncHudMsg(id, hud_objekat, "[Trenutni noz: %s]^n[Ubistva : %i]^n[Otkljucano nozeva : %i]", PodaciNozeva[trenutni_model_noza[target]][Naziv], ubistva_igraca[target], osvojeno_nozeva[target]);
  172. return;
  173. }
  174. else if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
  175. {
  176. new target = entity_get_int(id, EV_INT_iuser2);
  177. if(target == 0)
  178. return;
  179.  
  180. set_hudmessage(0, 127, 255, 0.01, 0.23, 0, 0.0, 0.21, 0.0, 0.0, 2);
  181. ShowSyncHudMsg(id, hud_objekat, "[Trenutni noz: %s]^n[Ubistva : %i]^n[Otkljucano nozeva : %i]", PodaciNozeva[trenutni_model_noza[target]][Naziv], ubistva_igraca[target], osvojeno_nozeva[target]);
  182. return;
  183. }
  184. else
  185. {
  186. set_hudmessage(0, 127, 255, 0.01, 0.23, 0, 0.0, 0.21, 0.0, 0.0, 2);
  187. ShowSyncHudMsg(id, hud_objekat, "[Trenutni noz: %s]^n[Ubistva : %i]^n[Otkljucano nozeva : %i]", PodaciNozeva[trenutni_model_noza[id]][Naziv], ubistva_igraca[id], osvojeno_nozeva[id]);
  188. }
  189. }
  190.  
  191. OsvojenoNozeva(id)
  192. {
  193. for(new i = 1; i < sizeof(PodaciNozeva); i++)
  194. {
  195. if(PodaciNozeva[i][PotrebnoUbistava][0] > ubistva_igraca[id])
  196. return i;
  197. }
  198. return sizeof(PodaciNozeva);
  199. }
  200.  
  201. public client_authorized(id)
  202. {
  203. UcitajPodatke(id);
  204. set_task(3.0, "pokazi_podatke", id+HUD);
  205. }
  206.  
  207. public client_disconnect(id)
  208. {
  209. SacuvajPodatke(id);
  210. }
  211.  
  212. public client_death(killer,victim)
  213. {
  214. if(killer != victim)
  215. {
  216. ubistva_igraca[killer] ++;
  217. }
  218. SacuvajPodatke(killer);
  219. }
  220.  
  221. SacuvajPodatke(id)
  222. {
  223. new AuthID[35];
  224. new vaultdata[12];
  225. get_user_authid(id, AuthID, charsmax(AuthID));
  226. format(vaultdata, charsmax(vaultdata), "%i", ubistva_igraca[id]);
  227. nvault_set(noz_vault, AuthID, vaultdata);
  228. }
  229.  
  230. UcitajPodatke(id)
  231. {
  232. new AuthID[35];
  233. get_user_authid(id, AuthID, charsmax(AuthID));
  234. ubistva_igraca[id] = nvault_get(noz_vault, AuthID);
  235. }
  236.  
  237. public plugin_end()
  238. {
  239. nvault_close(noz_vault);
  240. }
  241.  
  242. public RestartUbistava(id)
  243. {
  244. new flags = get_user_flags(id);
  245. if(flags & ADMIN_RCON)
  246. {
  247. arrayset(ubistva_igraca, 0, sizeof(ubistva_igraca));
  248. nvault_prune(noz_vault, 0, get_systime());
  249. server_cmd("changelevel %s", Mapa);
  250. }
  251. return PLUGIN_HANDLED;
  252. }
  253.  
  254. public Resetovanje(id)
  255. {
  256. if(!is_user_connected(id))
  257. return PLUGIN_HANDLED;
  258.  
  259. ubistva_igraca[id] = 0;
  260. PostaviNoz(id, 0);
  261. ColorChat(0, NORMAL, "^4%s ^1Restartovao si svoja ubistva, sada su vracena na 0.", Prefiks);
  262. SacuvajPodatke(id);
  263. return PLUGIN_HANDLED;
  264. }
  265.  
  266.  
  267. public handleSayText(msgId, msgDest, msgEnt)
  268. {
  269. new id = get_msg_arg_int(1);
  270. if(is_user_connected(id))
  271. {
  272. new szTmp[256],
  273. szTmp2[256];
  274.  
  275. get_msg_arg_string(2, szTmp, charsmax(szTmp));
  276.  
  277. new szPrefix[64]
  278. formatex(szPrefix,charsmax( szPrefix ),"^x04[Otkljucao %i][Ubistva %i]", OsvojenoNozeva(id), ubistva_igraca[id])
  279.  
  280. if(!equal(szTmp, "#Cstrike_Chat_All"))
  281. {
  282. add(szTmp2, charsmax(szTmp2), szPrefix);
  283. add(szTmp2, charsmax(szTmp2), " ");
  284. add(szTmp2, charsmax(szTmp2), szTmp);
  285. }
  286. else
  287. {
  288. add(szTmp2, charsmax(szTmp2), szPrefix);
  289. add(szTmp2, charsmax(szTmp2), "^x03 %s1^x01 : %s2");
  290. }
  291. set_msg_arg_string(2, szTmp2);
  292. }
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement