MegastoRM

Untitled

Nov 11th, 2012
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.32 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <nvault>
  6. #include <basebuilder>
  7. #include <fakemeta>
  8. #include <hamsandwich>
  9.  
  10. #define HUD 672
  11. #define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame
  12.  
  13. new const CinoviHM[][]=
  14. {
  15. "Razvodnik",
  16. "Desetar",
  17. "Mladji vodnik",
  18. "Vodnik",
  19. "Stariji vodnik",
  20. "Stariji vodnik I",
  21. "Zastavnik",
  22. "Zastavnik I",
  23. "Potporucnik",
  24. "Porucnik",
  25. "Kapetan",
  26. "Major",
  27. "Potpukovnik",
  28. "Pukovnik",
  29. "Brigadni General",
  30. "General-Major",
  31. "General-Potpukovnik",
  32. "General"
  33. }
  34.  
  35. new const CinoviZM[][]=
  36. {
  37. "Headcrab",
  38. "Headcrab I",
  39. "Infected",
  40. "Infected I",
  41. "S.T.A.L.K.E.R",
  42. "Zombi vojnik",
  43. "Zombi vojnik I",
  44. "Zombi Vodnik",
  45. "Zombi Marinac",
  46. "Zombi veteran",
  47. "Zombi veteran I",
  48. "Sleeper",
  49. "Hellhound",
  50. "Nazi zombi",
  51. "Zombi general",
  52. "Nemesis",
  53. "Assassin",
  54. "Zombi kralj"
  55. }
  56.  
  57. new const gMaxCinovi[] = { 1, 2, 3, 5, 8, 16, 24, 32, 64, 75, 128, 156, 192, 201, 212, 226, 236, 251, 20000 }
  58.  
  59. new max_level = 20000,g_sync1, g_sync, g_podaci, svi_cvarovi[16], g_maxplayers, g_menu, xp_igraca[33], level_igraca[33] = 1
  60. new kondicija[33], energija[33], armor[33], poeni[33], brzina_igraca[33], hp_igraca[33], armor_igraca[33]
  61.  
  62. new const cfgfajl[] = "addons/amxmodx/configs/bb_level_plugin/bb_level_plugin.cfg"
  63. new const conffolder[] = "addons/amxmodx/configs/bb_level_plugin"
  64.  
  65. public plugin_init() {
  66. register_plugin("Level System", "1.0b", "MegastorM")
  67. register_cvar("bb_level_system", "1.0b", (FCVAR_SERVER|FCVAR_SPONLY))
  68. g_podaci = nvault_open("lvl_mod");
  69.  
  70. register_event("DeathMsg", "player_death", "ade");
  71. RegisterHam(Ham_Spawn, "player", "Pocetak", 1);
  72. RegisterHam( Ham_CS_Player_ResetMaxSpeed, "player", "ham_ResetMaxSpeed_player_post", false )
  73.  
  74. register_clcmd("say /poeni","pokazimeni")
  75.  
  76. svi_cvarovi[0] = register_cvar("bb_ikillxp","1")
  77. svi_cvarovi[1] = register_cvar("bb_hud_red","0")
  78. svi_cvarovi[2] = register_cvar("bb_hud_green","200")
  79. svi_cvarovi[3] = register_cvar("bb_hud_blue","250")
  80. svi_cvarovi[4] = register_cvar("bb_main_hud_x","0.02")
  81. svi_cvarovi[5] = register_cvar("bb_main_hud_y","0.25")
  82. svi_cvarovi[6] = register_cvar("bb_kill_hud_red","60")
  83. svi_cvarovi[7] = register_cvar("bb_kill_hud_green","60")
  84. svi_cvarovi[8] = register_cvar("bb_kill_hud_blue","60")
  85. svi_cvarovi[9] = register_cvar("bb_kill_hud_x","0.75")
  86. svi_cvarovi[10] = register_cvar("bb_kill_hud_y","-1.0")
  87. svi_cvarovi[11] = register_cvar("bb_hud_lvup_red","200")
  88. svi_cvarovi[12] = register_cvar("bb_hud_lvup_green","0")
  89. svi_cvarovi[13] = register_cvar("bb_hud_lvup_blue","0")
  90. svi_cvarovi[14] = register_cvar("bb_hud_lvup_x","-1.0")
  91. svi_cvarovi[15] = register_cvar("bb_hud_lvup_y","0.25")
  92.  
  93. register_concmd("bb_set_lvl", "cmd_lvl", ADMIN_RCON, "<nick> <level>");
  94.  
  95. g_sync1 = CreateHudSyncObj()
  96. g_sync = CreateHudSyncObj()
  97.  
  98. g_maxplayers = get_maxplayers()
  99.  
  100. register_message(get_user_msgid("SayText"),"Message_SayText");
  101. }
  102. public plugin_precache()
  103. {
  104. mkdir(conffolder)
  105. if(!file_exists(cfgfajl))
  106. {
  107. write_file(cfgfajl,"*****************************[ZP Level Podesavanja]*****************************")
  108. write_file(cfgfajl,"<<----------------Ovde podesavate sve cvarove vezane za plugin---------------->>")
  109. write_file(cfgfajl," ")
  110. write_file(cfgfajl," ")
  111. write_file(cfgfajl,"//Cvar za iskustvo koje se dobije za jedno ubistvo/infekciju")
  112. write_file(cfgfajl,"bb_ikillxp ^"1^" //KillXP")
  113. write_file(cfgfajl," ")
  114. write_file(cfgfajl,"//Cvarovi za boje i poziciju glavnog HUD-a")
  115. write_file(cfgfajl,"bb_hud_red ^"0^" //kolicina crvene boje za glavni Hud(0-255)")
  116. write_file(cfgfajl,"bb_hud_green ^"200^" //Kolicina zelene boje za glavni HUD(0-255)")
  117. write_file(cfgfajl,"bb_hud_blue ^"250^" //Kolicina zelene boje za glavni HUD(0-255)")
  118. write_file(cfgfajl,"bb_main_hud_x ^"0.02^" //Nocni XP(-1.0 je za centar,0.0 skroz levo,1.0 skroz desno)")
  119. write_file(cfgfajl,"bb_main_hud_y ^"0.25^" //Normalan XP(-1.0 je za centar,0.0 skroz levo,1.0 skroz desno)")
  120. write_file(cfgfajl," ")
  121. write_file(cfgfajl,"//Cvarovi za boje i poziciju HUD-a za nagrade")
  122. write_file(cfgfajl,"bb_kill_hud_red ^"60^" //Kolicina zelene za HUD za nagrade(0-255)")
  123. write_file(cfgfajl,"bb_kill_hud_green ^"60^" //Kolicina zelene za HUD za nagrade(0-255)")
  124. write_file(cfgfajl,"bb_kill_hud_blue ^"60^" //Kolicina zelene za HUD za nagrade(0-255)")
  125. write_file(cfgfajl,"bb_kill_hud_x ^"0.75^" //X koordinata za HUD za nagrade(-1.0 je za centar,0.0 skroz levo,1.0 skroz desno)")
  126. write_file(cfgfajl,"bb_kill_hud_y ^"-1.0^" //Y koordinata za HUD za nagrade(-1.0 je za centar,0.0 skroz levo,1.0 skroz desno)")
  127. write_file(cfgfajl," ")
  128. write_file(cfgfajl,"//Cvarovi za boje i poziciju Level UP! HUD-a")
  129. write_file(cfgfajl,"bb_hud_lvup_red ^"200^" //Kolicina crvene boje za Level Up! HUD(0-255)")
  130. write_file(cfgfajl,"bb_hud_lvup_green ^"0^" //Kolicina zelene boje za Level Up! HUD(0-255)")
  131. write_file(cfgfajl,"bb_hud_lvup_blue ^"0^" //Kolicina plave boje za Level Up! HUD(0-255)")
  132. write_file(cfgfajl,"bb_hud_lvup_x ^"-1.0^" //X koordinata za Level Up! HUD(-1.0 je za centar,0.0 skroz levo,1.0 skroz desno)")
  133. write_file(cfgfajl,"bb_hud_lvup_y ^"0.25^" //Y koordinata za Level Up! HUD(-1.0 je za centar,0.0 skroz levo,1.0 skroz desno)")
  134. }
  135. server_cmd("exec %s", cfgfajl)
  136. server_exec()
  137. }
  138.  
  139. public Message_SayText(msgId,msgDest,msgEnt)
  140. {
  141. new id = get_msg_arg_int(1);
  142. if( is_user_connected(id) )
  143. {
  144. new szChannel[64];
  145. get_msg_arg_string(2, szChannel, charsmax(szChannel));
  146. if( equal(szChannel, "#Cstrike_Chat_All") )
  147. {
  148. if(bb_is_user_zombie(id))
  149. {
  150. formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2",CinoviZM[Getcin(level_igraca[id])]);
  151. set_msg_arg_string(2, szChannel);
  152. }
  153. else
  154. {
  155. formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2",CinoviHM[Getcin(level_igraca[id])]);
  156. set_msg_arg_string(2, szChannel);
  157. }
  158. }
  159. }
  160. }
  161.  
  162. Getcin(iNum)
  163. {
  164. for( new i = 19 - 1; i >= 0; i-- )
  165. {
  166. if( iNum >= gMaxCinovi[ i ] )
  167. return i;
  168. }
  169. return 0;
  170. }
  171.  
  172. public Pocetak(id)
  173. {
  174. if(!is_user_alive(id) || !is_user_connected(id))
  175. return PLUGIN_CONTINUE;
  176.  
  177. set_task(10.0,"Setuj", id)
  178.  
  179. set_task(8.0,"pokazimeni",id)
  180.  
  181. return PLUGIN_CONTINUE;
  182. }
  183.  
  184. public pokazimeni(id)
  185. {
  186. if(!is_user_connected(id))
  187. return PLUGIN_HANDLED
  188.  
  189. if(poeni[id] < 1)
  190. {
  191. bb_colored_print(id, "^x04[BB]^x01 Nazalost,nemas poena. Za svaki level koji predjes dobijas +1 poen!")
  192. return PLUGIN_HANDLED
  193. }
  194.  
  195. new szItem[64]
  196. g_menu = menu_create("\rIzaberi item:", "menu_h");
  197.  
  198. formatex(szItem,charsmax(szItem),"Dodaj 1 poen na energiju")
  199. menu_additem(g_menu, szItem)
  200. formatex(szItem,charsmax(szItem),"Dodaj 1 poen na armor")
  201. menu_additem(g_menu, szItem)
  202. formatex(szItem,charsmax(szItem),"Dodaj 1 poen na kondiciju")
  203. menu_additem(g_menu, szItem);
  204. formatex(szItem,charsmax(szItem),"Dodaj 10 poena na energiju")
  205. menu_additem(g_menu, szItem)
  206. formatex(szItem,charsmax(szItem),"Dodaj 10 poena na armor")
  207. menu_additem(g_menu, szItem)
  208. formatex(szItem,charsmax(szItem),"Dodaj 10 poena na kondiciju")
  209. menu_additem(g_menu, szItem);
  210.  
  211. menu_setprop(g_menu, MPROP_EXITNAME, "Izadji");
  212. menu_display(id,g_menu);
  213.  
  214. return PLUGIN_CONTINUE
  215. }
  216.  
  217. public menu_h(id, menu, item)
  218. {
  219. new szItem[60]
  220. switch(item)
  221. {
  222. case MENU_EXIT:
  223. {
  224. menu_destroy(menu)
  225. }
  226. case 0:
  227. {
  228. energija[id]++
  229. poeni[id]--
  230. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Dodao si 1 poen na^x03 Helte!")
  231. bb_colored_print(id, "%s",szItem)
  232. if(poeni[id] > 0)
  233. pokazimeni(id)
  234. }
  235. case 1:
  236. {
  237. armor[id]++
  238. poeni[id]--
  239. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Dodao si 1 poen na^x03 Armor!")
  240. bb_colored_print(id, "%s",szItem)
  241. if(poeni[id] > 0)
  242. pokazimeni(id)
  243. }
  244. case 2:
  245. {
  246. kondicija[id]++
  247. poeni[id]--
  248. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Dodao si 1 poen na^x03 Kondiciju!")
  249. bb_colored_print(id, "%s",szItem)
  250. bb_colored_print(id, "%s",szItem)
  251. if(poeni[id] > 0)
  252. pokazimeni(id)
  253. }
  254. case 3:
  255. {
  256. if(poeni[id] < 10)
  257. {
  258. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Nemas dovoljno poena!")
  259. bb_colored_print(id, "%s",szItem)
  260. return PLUGIN_HANDLED
  261. }
  262. energija[id]+=10
  263. poeni[id]-=10
  264. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Dodao si 10 poena na^x03 Helte!")
  265. bb_colored_print(id, "%s",szItem)
  266. if(poeni[id] > 0)
  267. pokazimeni(id)
  268. }
  269. case 4:
  270. {
  271. if(poeni[id] < 10)
  272. {
  273. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Nemas dovoljno poena!")
  274. bb_colored_print(id, "%s",szItem)
  275. return PLUGIN_HANDLED
  276. }
  277. armor[id]+=10
  278. poeni[id]-=10
  279. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Dodao si 10 poena na^x03 Armor!")
  280. bb_colored_print(id, "%s",szItem)
  281. if(poeni[id] > 0)
  282. pokazimeni(id)
  283. }
  284. case 5:
  285. {
  286. if(poeni[id] < 10)
  287. {
  288. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Nemas dovoljno poena!")
  289. bb_colored_print(id, "%s",szItem)
  290. return PLUGIN_HANDLED
  291. }
  292. kondicija[id]+=10
  293. poeni[id]-=10
  294. formatex(szItem,charsmax(szItem), "^x04[BB]^x01 Dodao si 10 poena na^x03 Kondiciju!")
  295. bb_colored_print(id, "%s",szItem)
  296. if(poeni[id] > 0)
  297. pokazimeni(id)
  298. }
  299. }
  300. return PLUGIN_CONTINUE
  301. }
  302.  
  303.  
  304. public Setuj(id)
  305. {
  306. if(!is_user_alive(id))
  307. return PLUGIN_HANDLED
  308.  
  309. new helti = pev(id, pev_health)
  310. new armor2 = pev(id, pev_armorvalue)
  311. hp_igraca[id] = helti+energija[id]*2
  312. armor_igraca[id] = armor2+armor[id]*2
  313.  
  314. set_pev(id, pev_armorvalue, (armor_igraca[id]*1.0))
  315. set_pev(id, pev_health,(hp_igraca[id]*1.0));
  316. if(armor2 > 300)
  317. {
  318. set_pev(id, pev_armorvalue, 300.0)
  319. }
  320.  
  321. return PLUGIN_CONTINUE
  322. }
  323.  
  324. public Reset(id)
  325. {
  326. xp_igraca[id] = 1
  327. proverilvl(id)
  328. poeni[id] = 0
  329. energija[id] = 0
  330. armor[id] = 0
  331. kondicija[id] = 0
  332. bb_colored_print(id, "^x04[BB]^x01 Uspesno si resetovao levele!")
  333. }
  334.  
  335. public cmd_lvl(id, level, cid)
  336. {
  337. if(!cmd_access(id, level, cid, 3))
  338. return PLUGIN_HANDLED;
  339.  
  340. new arg1[33];
  341. new arg2[6];
  342. read_argv(1, arg1, 32);
  343. read_argv(2, arg2, 5);
  344. new player = cmd_target(id, arg1);
  345. if(!is_user_connected(player))
  346. return PLUGIN_HANDLED;
  347.  
  348. new value = str_to_num(arg2)-1;
  349.  
  350. if(value > 100)
  351. {
  352. client_print(id, print_console, "Ne mozes postaviti igracu vise od 100 levela!")
  353. return PLUGIN_HANDLED
  354. }
  355. client_print(id, print_console, "Uspesno si postavio %s %d levela", player, value)
  356. xp_igraca[player] = xp_za_level(value);
  357. level_igraca[player] = 0;
  358. proverilvl(player);
  359. return PLUGIN_HANDLED;
  360. }
  361.  
  362. public pokazi_podatke(id)
  363. {
  364. id -= HUD
  365.  
  366. if(!is_user_connected(id))
  367. return PLUGIN_HANDLED
  368.  
  369. set_task(0.3, "pokazi_podatke", id+HUD);
  370. if(bb_is_user_zombie(id))
  371. {
  372. set_hudmessage(get_pcvar_num(svi_cvarovi[1]),get_pcvar_num(svi_cvarovi[2]),get_pcvar_num(svi_cvarovi[3]), get_pcvar_float(svi_cvarovi[4]), get_pcvar_float(svi_cvarovi[5]), 0, 1.0, 2.0, 0.1, 0.2);
  373. ShowSyncHudMsg(id, g_sync1, "[Level: %i]^n[Exp: %i / %i]^n[Cin: %s]",level_igraca[id], xp_igraca[id], xp_za_level(level_igraca[id]), CinoviZM[Getcin(level_igraca[id])])
  374. }
  375. else
  376. {
  377. set_hudmessage(get_pcvar_num(svi_cvarovi[1]),get_pcvar_num(svi_cvarovi[2]),get_pcvar_num(svi_cvarovi[3]), get_pcvar_float(svi_cvarovi[4]), get_pcvar_float(svi_cvarovi[5]), 0, 1.0, 2.0, 0.1, 0.2);
  378. ShowSyncHudMsg(id, g_sync1, "[Level: %i]^n[Exp: %i / %i]^n[Cin: %s]",level_igraca[id], xp_igraca[id], xp_za_level(level_igraca[id]), CinoviHM[Getcin(level_igraca[id])])
  379. }
  380. return PLUGIN_CONTINUE;
  381. }
  382.  
  383. public player_death()
  384. {
  385. new attacker = read_data(1)
  386.  
  387. if(!is_user_connected(attacker))
  388. return PLUGIN_HANDLED
  389.  
  390. new xp_za_ubistvo = get_pcvar_num(svi_cvarovi[0])
  391. if(level_igraca[attacker] < max_level || xp_igraca[attacker] <= 119990)
  392. {
  393. xp_igraca[attacker] += xp_za_ubistvo
  394. proverilvl(attacker)
  395. }
  396. else
  397. {
  398. xp_igraca[attacker] = 119990
  399. proverilvl(attacker)
  400. }
  401. if(level_igraca[attacker] > max_level || xp_igraca[attacker] > 119990)
  402. {
  403. xp_igraca[attacker] = 119990
  404. proverilvl(attacker)
  405. }
  406. return PLUGIN_CONTINUE
  407. }
  408.  
  409. public proverilvl(id)
  410. {
  411. if(level_igraca[id] >= max_level)
  412. return PLUGIN_HANDLED
  413.  
  414. if(level_igraca[id] < max_level)
  415. {
  416. while(xp_igraca[id] >= xp_za_level(level_igraca[id]))
  417. {
  418. level_igraca[id]++
  419. poeni[id]++
  420. set_hudmessage(get_pcvar_num(svi_cvarovi[11]), get_pcvar_num(svi_cvarovi[12]), get_pcvar_num(svi_cvarovi[13]), get_pcvar_float(svi_cvarovi[14]), get_pcvar_float(svi_cvarovi[15]), 1, 0.5, 0.5, 1.0, 1.0, -1)
  421. ShowSyncHudMsg(id, g_sync, "%i level!", level_igraca[id]);
  422. }
  423. }
  424. else
  425. {
  426. xp_igraca[id] = 119990
  427. level_igraca[id] = 19999
  428. proverilvl(id)
  429. }
  430.  
  431. return PLUGIN_CONTINUE
  432. }
  433.  
  434. public ham_ResetMaxSpeed_player_post( id )
  435. {
  436. new speed = pev( id, pev_maxspeed )
  437. brzina_igraca[ id ] = speed * floatround( kondicija[ id ] * 1.3 );
  438.  
  439. set_pev( id, pev_maxspeed, brzina_igraca[ id ] )
  440. }
  441.  
  442. public xp_za_level(lvl)
  443. return lvl*3*2;
  444.  
  445.  
  446. public client_putinserver(id)
  447. {
  448. level_igraca[id] = 1
  449. energija[id] = 0
  450. armor[id] = 0
  451. kondicija[id] = 0
  452.  
  453. Ucitaj(id)
  454. set_task(3.0, "pokazi_podatke", id+HUD);
  455. }
  456.  
  457. public client_disconnect(id)
  458. {
  459. Sacuvaj(id)
  460. }
  461.  
  462. public Sacuvaj(id)
  463. {
  464. new vltkey[128]
  465. new podaci[256]
  466. new steam_id_igraca[64];
  467. format(podaci, charsmax(podaci),"#%i#%i#%i#%i#%i#%i", xp_igraca[id], level_igraca[id], poeni[id], armor[id],energija[id], kondicija[id]);
  468.  
  469. get_user_authid(id, steam_id_igraca, charsmax(steam_id_igraca))
  470.  
  471. format(vltkey, charsmax(vltkey),"%s-lvl_mod", steam_id_igraca);
  472. nvault_set(g_podaci,vltkey,podaci);
  473.  
  474. return PLUGIN_CONTINUE;
  475. }
  476.  
  477. public Ucitaj(id)
  478. {
  479. new vltkey[128]
  480. new podaci[256]
  481. new steam_id_igraca[64];
  482.  
  483. get_user_authid(id, steam_id_igraca, charsmax(steam_id_igraca))
  484.  
  485. format(vltkey, charsmax(vltkey),"%s-lvl_mod", steam_id_igraca);
  486. nvault_get(g_podaci,vltkey,podaci,255);
  487.  
  488. replace_all(podaci, 255, "#", " ");
  489.  
  490. new plrinfo[7][32];
  491.  
  492. parse(podaci, plrinfo[0], 31, plrinfo[1], 31, plrinfo[2], 31,plrinfo[3], 31,plrinfo[4], 31,plrinfo[5], 31);
  493.  
  494. xp_igraca[id] = str_to_num(plrinfo[0]);
  495. level_igraca[id] = str_to_num(plrinfo[1])>0?str_to_num(plrinfo[1]):1;
  496. poeni[id] = str_to_num(plrinfo[2]);
  497. armor[id] = str_to_num(plrinfo[3]);
  498. energija[id] = str_to_num(plrinfo[4]);
  499. kondicija[id] = str_to_num(plrinfo[5])
  500.  
  501. return PLUGIN_CONTINUE;
  502. }
  503.  
  504. bb_colored_print(target, const message[], any:...)
  505. {
  506. static buffer[512], i, argscount
  507. argscount = numargs()
  508.  
  509. if (!target)
  510. {
  511. static player
  512. for (player = 1; player <= g_maxplayers; player++)
  513. {
  514. if (!is_user_connected(player))
  515. continue;
  516.  
  517. static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
  518. changedcount = 0
  519.  
  520. for (i = 2; i < argscount; i++)
  521. {
  522. if (getarg(i) == LANG_PLAYER)
  523. {
  524. setarg(i, 0, player)
  525. changed[changedcount] = i
  526. changedcount++
  527. }
  528. }
  529.  
  530. vformat(buffer, charsmax(buffer), message, 3)
  531.  
  532. // Send it
  533. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, player)
  534. write_byte(player)
  535. write_string(buffer)
  536. message_end()
  537.  
  538. for (i = 0; i < changedcount; i++)
  539. setarg(changed[i], 0, LANG_PLAYER)
  540. }
  541. }
  542. else
  543. {
  544. vformat(buffer, charsmax(buffer), message, 3)
  545. message_begin(MSG_ONE, get_user_msgid("SayText"), _, target)
  546. write_byte(target)
  547. write_string(buffer)
  548. message_end()
  549. }
  550. }
  551.  
  552. public plugin_end()
  553. nvault_close(g_podaci)
Advertisement
Add Comment
Please, Sign In to add comment