MegastoRM

Untitled

Jan 27th, 2013
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.44 KB | None | 0 0
  1. // Please namesti :)
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <dhudmessage>
  6. #include <nvault>
  7.  
  8. #define HUD 672
  9.  
  10. new const cfgfajl[] = "addons/amxmodx/configs/lvl_podesavanja.cfg"
  11. new const conffolder[] = "addons/amxmodx/configs"
  12. new pCvarPrefix
  13. new const Cinovi[][]=
  14. {
  15. "Botina",
  16. "Amater",
  17. "Mladji vojnik",
  18. "Vojnik",
  19. "Narednik",
  20. "Narednik I",
  21. "General",
  22. "General I",
  23. "Potporucnik",
  24. "Porucnik",
  25. "Kapetan",
  26. "Major",
  27. "Potpukovnik",
  28. "Pukovnik",
  29. "Brigadni General",
  30. "General-Major",
  31. "General-Potpukovnik",
  32. "Expert",
  33. "Extra Killer"
  34. }
  35.  
  36. new max_level = 20000, g_sync1, g_podaci, _pcvar_killxp, xp_igraca[33], CinX[33], level_igraca[33] = 1, _pcvar_boja[3], _pcvar_pozicija[2]
  37.  
  38. public plugin_init() {
  39. register_plugin("Level System", "4.2b", "RasisT & MegastorM")
  40. g_podaci = nvault_open("level_mod");
  41.  
  42. register_event("DeathMsg", "player_death", "ade");
  43.  
  44. _pcvar_killxp = register_cvar("lvl_killxp","3")
  45. _pcvar_boja[0] = register_cvar("lvl_red","0")
  46. _pcvar_boja[1] = register_cvar("lvl_green","200")
  47. _pcvar_boja[2] = register_cvar("lvl_blue","250")
  48. _pcvar_pozicija[0] = register_cvar("lvl_x","0.02")
  49. _pcvar_pozicija[1] = register_cvar("lvl_y","0.75")
  50. pCvarPrefix = register_cvar("prefix_tip","1")
  51. register_concmd("set_lvl", "cmd_lvl", ADMIN_RCON, "<nick> <level>");
  52.  
  53. g_sync1 = CreateHudSyncObj()
  54.  
  55. register_message(get_user_msgid("SayText"),"handleSayText");
  56. }
  57.  
  58.  
  59. public handleSayText(msgId,msgDest,msgEnt)
  60. {
  61. new id = get_msg_arg_int(1);
  62.  
  63. if(!is_user_connected(id))
  64. return PLUGIN_CONTINUE;
  65.  
  66. new szTmp[256],szTmp2[256]
  67. get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
  68.  
  69. new szPrefix[64]
  70.  
  71. switch(get_pcvar_num(pCvarPrefix))
  72. {
  73. case 1:
  74. {
  75. formatex(szPrefix,charsmax( szPrefix ),"^x04[%s]",Cinovi[level_igraca[id]]);
  76. }
  77. case 2:
  78. {
  79. formatex(szPrefix,charsmax( szPrefix ),"^x04[%d]",level_igraca[id]);
  80. }
  81. case 3:
  82. {
  83. formatex(szPrefix,charsmax( szPrefix ),"^4[^3%s^4][^3Level^4 : ^3%d^4]",Cinovi[level_igraca[id]],level_igraca[id]);
  84. }
  85. }
  86.  
  87. if(!equal(szTmp,"#Cstrike_Chat_All")){
  88. add(szTmp2,charsmax(szTmp2),szPrefix);
  89. add(szTmp2,charsmax(szTmp2)," ");
  90. add(szTmp2,charsmax(szTmp2),szTmp);
  91. }
  92. else{
  93. add(szTmp2,charsmax(szTmp2),szPrefix);
  94. add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
  95. }
  96.  
  97. set_msg_arg_string(2,szTmp2);
  98.  
  99. return PLUGIN_CONTINUE;
  100. }
  101.  
  102.  
  103. public plugin_precache()
  104. {
  105. mkdir(conffolder)
  106. if(!file_exists(cfgfajl))
  107. {
  108. write_file(cfgfajl,"*****************************[LVL Podesavanja]*****************************")
  109. write_file(cfgfajl,"<<-------------------Ovde podesavate sve cvarove vezane za plugin---------------->>")
  110. write_file(cfgfajl," ")
  111. write_file(cfgfajl,"lvl_killxp ^"3^" //XP za kill")
  112. write_file(cfgfajl,"lvl_red ^"0^" //Kolicina-Nijansa crvene")
  113. write_file(cfgfajl,"lvl_green ^"200^" //Kolicina-Nijansa zelene")
  114. write_file(cfgfajl,"lvl_blue ^"250^" //Kolicina-Nijansa plave")
  115. write_file(cfgfajl,"lvl_x ^"0.02^" //Pozicija po X osi(0.01-1.0(-1.0 za centar))")
  116. write_file(cfgfajl,"lvl_y ^"0.75^" //Pozicija po Y osi(0.01-1.0(-1.0 za centar))")
  117. }
  118. server_cmd("exec %s", cfgfajl)
  119. server_exec()
  120. }
  121.  
  122. public Reset(id)
  123. {
  124. xp_igraca[id] = 1
  125. proverilvl(id)
  126. client_print(id, print_chat, "[LVL] Uspesno si resetovao levele")
  127. }
  128.  
  129. public cmd_lvl(id, level, cid)
  130. {
  131. if(!cmd_access(id, level, cid, 3))
  132. return PLUGIN_HANDLED;
  133.  
  134. new arg1[33];
  135. new arg2[6];
  136. read_argv(1, arg1, 32);
  137. read_argv(2, arg2, 5);
  138. new player = cmd_target(id, arg1);
  139. if(!is_user_connected(player))
  140. return PLUGIN_HANDLED;
  141.  
  142. new value = str_to_num(arg2)-1;
  143.  
  144. if(value > 199)
  145. {
  146. client_print(id, print_console, "Ne mozes postaviti igracu vise od 199 levela!")
  147. return PLUGIN_HANDLED
  148. }
  149. client_print(id, print_console, "Uspesno si postavio %s %d levela", player, value)
  150. xp_igraca[player] = xp_za_level(value);
  151. level_igraca[player] = 0;
  152. proverilvl(player);
  153. return PLUGIN_HANDLED;
  154. }
  155.  
  156. public pokazi_podatke(id)
  157. {
  158. id -= HUD
  159.  
  160. if(!is_user_connected(id))
  161. return PLUGIN_HANDLED
  162.  
  163. set_task(0.1, "pokazi_podatke", id+HUD);
  164.  
  165. set_dhudmessage(get_pcvar_num(_pcvar_boja[0]), get_pcvar_num(_pcvar_boja[1]), get_pcvar_num(_pcvar_boja[2]), get_pcvar_float(_pcvar_pozicija[0]), get_pcvar_float(_pcvar_pozicija[1]), 0, 0.0, 0.3, 0.0, 0.0);
  166. show_dhudmessage(id, "[Level: %i]^n[Exp: %i / %i]^n[Cin: %s]",level_igraca[id], xp_igraca[id], xp_za_level(level_igraca[id]), Cinovi[CinX[id]])
  167. return PLUGIN_CONTINUE;
  168. }
  169.  
  170. public player_death()
  171. {
  172. new attacker = read_data(1)
  173.  
  174. if(!is_user_connected(attacker))
  175. return PLUGIN_HANDLED
  176.  
  177. new xp_za_ubistvo = get_pcvar_num(_pcvar_killxp)
  178. if(level_igraca[attacker] < max_level || xp_igraca[attacker] >= 119990)
  179. {
  180. xp_igraca[attacker] += xp_za_ubistvo
  181. proverilvl(attacker)
  182. }
  183. else
  184. {
  185. level_igraca[attacker] = max_level
  186. xp_igraca[attacker] = 119990
  187. proverilvl(attacker)
  188. }
  189.  
  190.  
  191. return PLUGIN_CONTINUE
  192. }
  193.  
  194. public proverilvl(id)
  195. {
  196. if(level_igraca[id] >= max_level)
  197. return PLUGIN_HANDLED
  198.  
  199. if(level_igraca[id] < max_level)
  200. {
  201. while(xp_igraca[id] >= xp_za_level(level_igraca[id]))
  202. {
  203. level_igraca[id]++
  204. set_hudmessage(200, 0, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2);
  205. ShowSyncHudMsg(id, g_sync1, "%i level!", level_igraca[id]);
  206. }
  207. }
  208. else
  209. {
  210. xp_igraca[id] = 119990
  211. level_igraca[id] = max_level
  212. }
  213.  
  214. switch(level_igraca[id])
  215. {
  216. case 1: CinX[id] = 0;
  217. case 2: CinX[id] = 1;
  218. case 3..4: CinX[id] = 2;
  219. case 5..7: CinX[id] = 3;
  220. case 8..15: CinX[id] = 4;
  221. case 16..23: CinX[id] = 5;
  222. case 24..31: CinX[id] = 6;
  223. case 32..63: CinX[id] = 7;
  224. case 64..74: CinX[id] = 8;
  225. case 75..127: CinX[id] = 9;
  226. case 128..155: CinX[id] = 10;
  227. case 156..191: CinX[id] = 11;
  228. case 192..200: CinX[id] = 12;
  229. case 201..211: CinX[id] = 13;
  230. case 212..225: CinX[id] = 14;
  231. case 226..235: CinX[id] = 15;
  232. case 236..250: CinX[id] = 16;
  233. case 251..270: CinX[id] = 17;
  234. case 271..20000: CinX[id] = 18;
  235. }
  236.  
  237. return PLUGIN_CONTINUE
  238. }
  239.  
  240. public xp_za_level(lvl)
  241. return lvl*3*2;
  242.  
  243.  
  244. public client_putinserver(id)
  245. {
  246. level_igraca[id] = 1
  247.  
  248. Ucitaj(id)
  249. set_task(3.0, "pokazi_podatke", id+HUD);
  250.  
  251. switch(level_igraca[id])
  252. {
  253. case 50..499:
  254. {
  255. set_user_flags(id, ADMIN_RESERVATION);
  256. }
  257. case 500.. 2000:
  258. {
  259. set_user_flags(id, ADMIN_IMMUNITY);
  260. set_user_flags(id, ADMIN_RESERVATION);
  261. }
  262. }
  263. }
  264.  
  265. public client_disconnect(id)
  266. {
  267. Sacuvaj(id)
  268. }
  269.  
  270. public Sacuvaj(id)
  271. {
  272. new vltkey[128]
  273. new podaci[256]
  274. new steam_id_igraca[64];
  275. format(podaci, charsmax(podaci),"#%i#%i#%i", xp_igraca[id], level_igraca[id], CinX[id]);
  276.  
  277. get_user_authid(id, steam_id_igraca, charsmax(steam_id_igraca))
  278.  
  279. format(vltkey, charsmax(vltkey),"%s-lvl_mod", steam_id_igraca);
  280. nvault_set(g_podaci,vltkey,podaci);
  281.  
  282. return PLUGIN_CONTINUE;
  283. }
  284.  
  285. public Ucitaj(id)
  286. {
  287. new vltkey[128]
  288. new podaci[256]
  289. new steam_id_igraca[64];
  290.  
  291. get_user_authid(id, steam_id_igraca, charsmax(steam_id_igraca))
  292.  
  293. format(vltkey, charsmax(vltkey),"%s-lvl_mod", steam_id_igraca);
  294. nvault_get(g_podaci,vltkey,podaci,255);
  295.  
  296. replace_all(podaci, 255, "#", " ");
  297.  
  298. new plrinfo[3][32];
  299.  
  300. parse(podaci, plrinfo[0], 31, plrinfo[1], 31, plrinfo[2], 31);
  301.  
  302. xp_igraca[id] = str_to_num(plrinfo[0]);
  303. level_igraca[id] = str_to_num(plrinfo[1])>0?str_to_num(plrinfo[1]):1;
  304. CinX[id] = str_to_num(plrinfo[2]);
  305.  
  306. return PLUGIN_CONTINUE;
  307. }
  308.  
  309. public plugin_end()
  310. nvault_close(g_podaci)
Advertisement
Add Comment
Please, Sign In to add comment