Advertisement
mihay111

nivele.sma

Feb 19th, 2020
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.00 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <hamsandwich>
  3. #include <cstrike>
  4. #include <nvault>
  5. #include <fun>
  6.  
  7. static const
  8. PLUGIN[] = "Simple Level Mod",
  9. VERSION[] = "2.0",
  10. AUTHOR[] = "scosmyn";
  11.  
  12. #define MAX_LEVELS 16
  13.  
  14. new const Kills[MAX_LEVELS] =
  15. {
  16. 0,
  17. 50,
  18. 100,
  19. 150,
  20. 250,
  21. 350,
  22. 500,
  23. 650,
  24. 750,
  25. 850,
  26. 1250,
  27. 1500,
  28. 2000,
  29. 2500,
  30. 5000
  31. }
  32.  
  33. new const szTag[MAX_LEVELS][] =
  34. {
  35. "",
  36. "Soldat",
  37. "Fruntas",
  38. "Caporal",
  39. "Sergent",
  40. "Plutonier",
  41. "Maistru",
  42. "Sublocotenent",
  43. "Locotenent",
  44. "Capitan",
  45. "Maior",
  46. "Colonel",
  47. "General de Brigada",
  48. "General-Maior",
  49. "General-Locotenent",
  50. "GENERAL"
  51.  
  52.  
  53. }
  54.  
  55. new Level[33],Kill[33],szName[32],g_vault,g_sync
  56. new pcvar_hs,pcvar_kill,pcvar_knife,pcvar_he,pcvar_efect,pcvar_r,pcvar_g,pcvar_b,pcvar_hp_lvl,pcvar_ap_lvl
  57.  
  58. public plugin_init() {
  59. register_plugin(PLUGIN,VERSION,AUTHOR)
  60. register_event("DeathMsg","ev_msg","a")
  61. RegisterHam(Ham_Spawn,"player","player_spawn",1)
  62.  
  63. pcvar_hs = register_cvar("cvar_hs_bonus","1")
  64. pcvar_kill = register_cvar("cvar_normal_bonus","1")
  65. pcvar_knife = register_cvar("cvar_knife_bonus","1")
  66. pcvar_he = register_cvar("cvar_he_bonus","1")
  67. pcvar_efect = register_cvar("cvar_effect_lvl","1")
  68. pcvar_r = register_cvar("cvar_red","255")
  69. pcvar_g = register_cvar("cvar_green","0")
  70. pcvar_b = register_cvar("cvar_blue","0")
  71. pcvar_hp_lvl = register_cvar("cvar_hp_lvl","5")
  72. pcvar_ap_lvl = register_cvar("cvar_ap_lvl","10")
  73.  
  74. g_vault = nvault_open("simple_lvl_mod")
  75. g_sync = CreateHudSyncObj()
  76.  
  77. if(g_vault == INVALID_HANDLE)
  78. set_fail_state("Eroare la deschiderea bazei de date din vault.")
  79. }
  80.  
  81. public player_spawn(id) {
  82. if(!is_user_alive(id) || is_user_bot(id))
  83. return HAM_HANDLED
  84.  
  85. if(Level[id] < 1)
  86. Level[id] = 1
  87.  
  88. set_user_health(id,get_user_health(id) + get_pcvar_num(pcvar_hp_lvl) * Level[id])
  89. set_user_armor(id,get_user_armor(id) + get_pcvar_num(pcvar_ap_lvl) * Level[id])
  90. return HAM_HANDLED
  91. }
  92.  
  93. public ev_msg( ) {
  94. static kiler; kiler = read_data(1)
  95. static hs; hs = read_data(3)
  96.  
  97. if(kiler == read_data(2) || !is_user_alive(kiler))
  98. return
  99.  
  100. if(hs)
  101. Kill[kiler]+= get_pcvar_num(pcvar_hs)
  102. else
  103. Kill[kiler]+= get_pcvar_num(pcvar_kill)
  104.  
  105. if(get_user_weapon(kiler) == CSW_KNIFE && !hs)
  106. Kill[kiler]+= get_pcvar_num(pcvar_knife)
  107. if(get_user_weapon(kiler) == CSW_HEGRENADE && !hs)
  108. Kill[kiler]+= get_pcvar_num(pcvar_he)
  109.  
  110. if(Level[kiler] < MAX_LEVELS)
  111. {
  112. while(Kill[kiler] >= Kills[Level[kiler]])
  113. {
  114. Level[kiler]++
  115. color(kiler,"!teamFelicitari,ai ajuns la level %i (!g%s!team).",Level[kiler],szTag[Level[kiler]])
  116. screen_fade(kiler, get_pcvar_num(pcvar_efect), get_pcvar_num(pcvar_r), get_pcvar_num(pcvar_g), get_pcvar_num(pcvar_b), 115)
  117. return
  118. }
  119. }
  120. SaveData(kiler)
  121. }
  122.  
  123. public client_putinserver(id) {
  124. if(!is_user_bot(id))
  125. {
  126. LoadData(id)
  127. set_task(1.0,"show_hud",id+0x4332,_,_,"b")
  128. }
  129. }
  130.  
  131. public client_disconnect(id) {
  132. remove_task(id+0x4332)
  133. SaveData(id)
  134. }
  135.  
  136. public show_hud(id) {
  137. id-=0x4332
  138. get_user_name(id,szName,charsmax(szName))
  139.  
  140. if(is_user_alive(id))
  141. {
  142. set_hudmessage(0, 255, 255, -1.0, 0.87, 0, 6.0, 1.1)
  143. ShowSyncHudMsg(id,g_sync,"[Name: %s]-[Level: %d]-[Status: %s]-[Kill: %i/%i]",szName,Level[id],szTag[Level[id]],Kill[id],Kills[Level[id]])
  144. }
  145. }
  146.  
  147. public SaveData(id)
  148. {
  149. new name[32],vaultkey[64],vaultdata[256]
  150. get_user_name(id,name,charsmax(name))
  151. formatex(vaultkey,63,"%s-Mod",name)
  152. formatex(vaultdata,255,"%i#%i#",Kill[id],Level[id])
  153. nvault_set(g_vault,vaultkey,vaultdata)
  154. }
  155.  
  156. public LoadData(id)
  157. {
  158. new name[32],vaultkey[64],vaultdata[256]
  159. get_user_name(id,name,charsmax(name))
  160. formatex(vaultkey,63,"%s-Mod",name)
  161. formatex(vaultdata,255,"%i#%i#",Kill[id],Level[id])
  162. nvault_get(g_vault,vaultkey,vaultdata,255)
  163. replace_all(vaultdata, 255, "#", " ")
  164.  
  165. new kill[32],level[32]
  166. parse(vaultdata, kill, 31, level, 31)
  167. Kill[id] = str_to_num(kill)
  168. Level[id] = str_to_num(level)
  169. }
  170. public plugin_end() nvault_close(g_vault)
  171. stock screen_fade(id,holdtime,r,g,b,a)
  172. {
  173. message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{ 0, 0, 0 },id);
  174. write_short(seconds_to_units(holdtime));
  175. write_short(seconds_to_units(holdtime));
  176. write_short(0);
  177. write_byte(r);
  178. write_byte(g);
  179. write_byte(b);
  180. write_byte(a);
  181. message_end();
  182. }
  183.  
  184. stock seconds_to_units(time)
  185. {
  186. return((1 << 12) * (time))
  187. }
  188.  
  189. stock color( const id, const input[ ], any:... )
  190. {
  191. new count = 1, players[ 32 ]
  192.  
  193. static msg[ 191 ]
  194. vformat( msg, 190, input, 3 )
  195.  
  196. replace_all( msg, 190, "!g", "^4" ) //- verde
  197. replace_all( msg, 190, "!y", "^1" ) //- galben
  198. replace_all( msg, 190, "!team", "^3" ) //- echipa
  199. replace_all( msg, 190, "!n", "^0" ) //- normal
  200.  
  201. if( id ) players[ 0 ] = id; else get_players( players, count, "ch" )
  202. {
  203. for( new i = 0; i < count; i++ )
  204. {
  205. if( is_user_connected( players[ i ] ) )
  206. {
  207. message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] )
  208. write_byte( players[ i ] );
  209. write_string( msg );
  210. message_end( );
  211. }
  212. }
  213. }
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement