1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699. | /*================================================================================
-------------------------------------------
-*- [ZP] Server Addon: LevelUp System XP 3.2b || Update-*-
-------------------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
Level System
~~~~~~~~~~~~~~~
- Changelog -
~~~~~~~~~~~~~~~
v. 1.0 - Plugin Released. Testing...
v. 1.1 - Fixed Save Level.
v. 1.2 - Added New cvars, fixed codes + Added plugin code Player Name
v. 1.3 - Update version: added new cvars + system bonuses
v. 1.4 - New modes for nemesis level & survivor level, added cvars
v. 1.5 - Testing...
v. 1.6 - Added cvars, Plugin Released.
v. 1.7 - Added Multilangual, Update plugin
v. 1.8 - v. 1.9 - Fixed Level Up bugs
v. 2.0 - Added new cvars + XP Level Extended: Real Level System.
v. 2.1 - Fixed bugs.
--
v. 2.8 - It is globally altered on a new kind of the version of this plugin
v. 2.9 - Added New cvars. Ful fixed.
v. 3.0 - XP Mode Updated in EXP to level.
v. 3.1 - Fixed Bug Shutting Down Server.
v. 3.2 - Added Give Level & give exp.
v. 3.2b - Fixed bug bonusme, Run Time Error fixed. Fix bug One level.
================================================================================*/
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>
#define PLUGIN "[ZP] Server Addon: LevelUp System XP 3.2"
#define VERSION "3.2 beta"
#define AUTHOR "Re.Act!ve"
#define ACCES ADMIN_CVAR
#pragma tabsize 0
#define is_valid_player(%1) (1 <= %1 <= 32)
new SayText
new g_level[33], g_level_data, g_frags_level, g_ScreenFade, g_level_del[33], g_level_bonus, g_ammo, g_level_zombie, g_level_type
new g_human_red, g_human_green, g_human_blue, g_zombie_red, g_zombie_green, g_zombie_blue
new g_level_max, g_give_ammo, g_give_ammopacks, g_level_num, g_level_info, g_player_name, g_levels[33], g_h_damage
new g_h_health, g_h_speed, g_z_damage, h_health[33], h_speed[33], level_exp[33]
new g_level_exp[33], g_exp_data, g_Players, g_hud_color, red, green, blue, nameid[33]
new Float:h_damage[33], Float:z_damage[33]
new bool:g_bonus[33], g_trime[33]
new sound_level_up[] = { "misc/zp_level_up.wav"}
new sound_health[] = { "items/medshot4.wav" }
// Zombie Classes MUST be registered on plugin_precache
public plugin_precache()
{
precache_sound( sound_level_up )
precache_sound( sound_health )
}
public plugin_init()
{
g_level_type = register_cvar("zp_level_type", "2") // 0 - ?? ????, 1 - ?? IP, 2- ?? SteamID
g_frags_level = register_cvar("zp_level_frags", "150") // ??????? ????????? ????? ??? ????????? ????. ??????
g_level_max = register_cvar("zp_level_max", "100") // ???????????? ?????
g_give_ammo = register_cvar("zp_level_give_ammo", "1") // ?????? ???? ???? ??? ?????? ?????????? ??????
g_give_ammopacks = register_cvar("zp_level_ammo", "2000") // ??????? ?????? ?????????? (???? ???? ??????????? 1)
g_h_damage = register_cvar("zp_level_h_damage", "1") // ??????????? ? ?????? ??????? ???? ?? ? ? ?????
g_h_health = register_cvar("zp_level_h_health", "2") // ???? ???????? ?? ?????? ????? ?????????????? ? ??
g_h_speed = register_cvar("zp_level_h_speed", "1.0") // ?? ??????? ????. ???????? ????? ? ?????? ????????
g_z_damage = register_cvar("zp_level_z_damage", "2") // ??????????? ? ?????? ??????? ???? ?? ? ? ?????
g_level_info = register_cvar("zp_level_info", "1") // ?????????? ???? ? ??????, ????? ?????? ? ??? info <nick>
g_player_name = register_cvar("zp_player_name", "1") // ?????????? ????, ??? ????????? ???????? ?? ???????
g_level_bonus = register_cvar("zp_level_bonus_on", "1") // ????? ?? ????? ??????? ??????????
g_level_num = register_cvar("zp_level_number", "10") // ?????? ? ?????? ????? ??????????? ????? ????????? (???? ???? 1)
g_ammo = register_cvar("zp_level_bonus", "10000") // ??????? ???? ????? ???? ??????????
g_level_zombie = register_cvar("zp_level_zombie", "1") // ?????? ?? ????? ??????? ?????? (???? 0 - ?????? ???.)
// ????????? ???????? ????? ??? HUD ????????? ? ?????
g_hud_color = register_cvar("zp_level_hud_type", "1") // 1 - ????? ??? ??????, 0 - ????????? ???? (1 ???).
g_human_red = register_cvar("zp_level_h_red", "0") // ??????? ???? ??? ????? HUD Level
g_human_green = register_cvar("zp_level_h_green", "0") // ??????? ???? ??? ????? HUD Level
g_human_blue = register_cvar("zp_level_h_blue", "255") // ????? ???? ??? ????? HUD Level
g_zombie_red = register_cvar("zp_level_z_red", "255") // ??????? ???? ??? ????? HUD Level
g_zombie_green = register_cvar("zp_level_z_green", "50") // ??????? ???? ??? ????? HUD Level
g_zombie_blue = register_cvar("zp_level_z_blue", "0") // ????? ???? ??? ????? HUD Level
g_level_data = nvault_open("Leveling_Save")
g_exp_data = nvault_open("Exp_Save")
register_clcmd("say","say_info");
register_clcmd("say_team","say_info");
register_clcmd("zp_levelexp","expa_give", ADMIN_CVAR, "use to give Exp")
register_clcmd("zp_level_is","level_give", ADMIN_CVAR, "use to give Level")
SayText = get_user_msgid("SayText")
g_Players = get_maxplayers();
register_event("HLTV", "Round_Start", "a", "1=0", "2=0")
register_event("DeathMsg", "Frags_Manager", "a", "1>0")
// RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
register_dictionary("zp_level_system_xp.txt")
register_event("StatusValue","show_status","be","1=2","2!0")
register_event("StatusValue","hide_status","be","1=1","2=0")
g_ScreenFade = get_user_msgid( "ScreenFade" )
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public Round_Start()
{
for(new id=1;id<=g_Players;id++)
{
if( is_valid_player(id) && !is_user_bot(id) )
{
g_levels[id] = g_levels[id] = get_pcvar_num(g_level_num);
set_task(3.0, "Level", id)
}
}
}
public Level(id)
{
g_trime[id] = false;
new n = 1;
while( n < g_level[id] )
{
h_health[id] = n * get_pcvar_num(g_h_health);
h_speed[id] = n * get_pcvar_num(g_h_speed);
h_damage[id] = n * get_pcvar_float(g_h_damage);
z_damage[id] = n * get_pcvar_float(g_z_damage);
n = n + 1
}
fm_set_user_health( id, get_user_health(id) + h_health[id] )
set_pev(id, pev_maxspeed, fm_get_user_maxspeed(id) + h_speed[id] )
emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
if( g_level[id] < get_pcvar_num(g_level_num) )
g_levels[id] = get_pcvar_num(g_level_num);
else
{
if(g_level[id] != g_levels[id])
{
new x = 1;
while( g_level[id] > ( x * get_pcvar_num(g_level_num)) )
{
x = x + 1;
g_levels[id] = x * get_pcvar_num(g_level_num);
}
}
}
}
public expa_give(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
{
console_print(id, "? ??? ??? ??????? ? ???????")
return PLUGIN_HANDLED
}
new target[32]
new count[32]
read_argv(1,target,31)
read_argv(2,count,31)
new target_id, name[32], nameid[32]
target_id = find_player("bl", target)
get_user_name(target_id, name, sizeof name - 1)
get_user_name(id, nameid, sizeof nameid - 1)
if(!target_id)
{
console_print(id, "Can't find that player")
return PLUGIN_HANDLED
}
if(read_argc() != 3)
return PLUGIN_HANDLED
if(str_to_num(count) < (g_level_exp[target_id] - level_exp[target_id]) )
{
if(str_to_num(count) == 0)
console_print(id, "Exp Player %s in %i / %i", name, level_exp[target_id], g_level_exp[target_id])
else
{
console_print(id, "Player %s gives for %i exp, Her Maximum %i", name, str_to_num(count), g_level_exp[target_id])
level_exp[target_id] = level_exp[target_id] + str_to_num(count);
}
}
else
{
console_print(id, "Maximum Exp in player %i", g_level_exp[target_id])
}
return PLUGIN_HANDLED
}
public level_give(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
{
console_print(id, "? ??? ??? ??????? ? ???????")
return PLUGIN_HANDLED
}
new target[32]
new count[32]
read_argv(1,target,31)
read_argv(2,count,31)
new target_id, name[32], level_id
level_id = str_to_num(count);
target_id = find_player("bl", target)
get_user_name(target_id, name, sizeof name - 1)
if(!target_id)
{
console_print(id, "Can't find that player")
return PLUGIN_HANDLED
}
if(read_argc() != 3)
return PLUGIN_HANDLED
if( ((g_level[target_id] + level_id) <=get_pcvar_num(g_level_max)) && (level_id != 0) && ((g_level[target_id] + level_id) > 0 ) )
{
if(level_id > 0)
{
g_level[target_id] = g_level[target_id] + level_id;
level_exp[target_id] = 0;
message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, target_id)
write_short(1<<12) // duration
write_short(1) // hold time
write_short(0x0000) // fade type
write_byte(1) // red
write_byte(200) // green
write_byte(0) // blue
write_byte(205) // alpha
message_end()
emit_sound(target_id, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
}
else
{
g_level[target_id] = g_level[target_id] + level_id;
level_exp[target_id] = 0;
message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, target_id)
write_short(1<<12) // duration
write_short(1) // hold time
write_short(0x0000) // fade type
write_byte(200) // red
write_byte(40) // green
write_byte(0) // blue
write_byte(205) // alpha
message_end()
}
console_print(id, "Player %s gives add %i level", name, level_id)
}
else
console_print(id, "Operation Invalid")
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
if( !is_user_bot(id) && is_valid_player(id) )
{
Level_Load(id)
g_level_exp[id] = get_pcvar_num(g_frags_level);
new name[32]
g_trime[id] = false;
g_bonus[id] = true;
nameid[id] = get_user_name(id, name, sizeof name - 1)
g_trime[id] = false;
new n = 1;
while( n != g_level[id] )
{
h_health[id] = n * get_pcvar_num(g_h_health);
h_speed[id] = n * get_pcvar_num(g_h_speed);
h_damage[id] = n * get_pcvar_float(g_h_damage);
z_damage[id] = n * get_pcvar_float(g_z_damage);
n = n + 1;
}
new Float:speed[32];
speed[id] = fm_get_user_maxspeed(id) + h_speed[id];
fm_set_user_health( id, get_user_health(id) + h_health[id] )
set_pev(id, pev_maxspeed, speed[id] )
emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
if( g_level[id] == 0) g_level[id] = 1;
if( level_exp[id] == g_level[id] ) level_exp[id] = 0;
if(g_level[id] < get_pcvar_num(g_level_num))
g_levels[id] = get_pcvar_num(g_level_num);
else
{
if(g_level[id] != g_levels[id])
{
new x = 1;
while( g_level[id] > ( x * get_pcvar_num(g_level_num)) )
{
x = x + 1;
g_levels[id] = x * get_pcvar_num(g_level_num);
}
}
}
new y = 0;
while( g_level[id] > y )
{
y = y + 1;
g_level_exp[id] = y * get_pcvar_num(g_frags_level);
}
red = random_num(10, 200)
green = random_num(10, 200)
blue = random_num(10, 200)
}
}
public client_disconnect(id)
{
if(get_pcvar_num(g_level_type) == 0 )
{
new name[32], player_nick[32]
player_nick[id] = get_user_name(id, name, sizeof name - 1)
if(player_nick[id] == nameid[id])
Level_Save(id)
}
else
Level_Save(id)
g_trime[id] = false;
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{
if ( !zp_get_user_zombie(attacker) && is_user_alive(attacker) && !is_user_bot(attacker) )
SetHamParamFloat(4, damage + h_damage[attacker])
else
{
if( !is_user_bot(attacker) && is_valid_player(attacker) )
SetHamParamFloat(4, damage + z_damage[attacker])
}
}
public hide_status(id)
{
set_hudmessage(0,0,0,0.0,0.0,0, 0.0, 0.01, 0.0, 0.0, 4)
show_hudmessage(id,"")
}
public show_status(id)
{
new name[32],pid = read_data(2)
get_user_name(pid,name,31)
if (!zp_get_user_zombie(pid) && !zp_get_user_zombie(id) && (get_pcvar_num(g_player_name) == 1) )
{
set_hudmessage(0,0,255,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_H", name, g_level[pid], get_user_health(pid),get_user_armor(pid),zp_get_user_ammo_packs(pid))
}
if(zp_get_user_zombie(id) && zp_get_user_zombie(pid) && (get_pcvar_num(g_player_name) == 1) )
{
set_hudmessage(255,0,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_Z", name, g_level[pid], get_user_health(pid), zp_get_user_ammo_packs(pid))
}
}
public say_info(id)
{
new text[70], arg1[32], target[32], count[32]
read_args(text, sizeof(text)-1);
remove_quotes(text);
arg1[0] = '^0';
target[0] = '^0';
count[0] = '^0';
parse(text, arg1, sizeof(arg1)-1, target, sizeof(target)-1, count, sizeof(count)-1);
if ( equali(arg1, "info", 4) )
{
info_player(id, target);
}
if ( equali(arg1, "bonusme", 7) && (get_pcvar_num(g_level_info) == 1))
{
bonus_player(id);
}
if ( equali(arg1, "levelexp", 7) && (get_pcvar_num(g_level_info) == 1))
{
expa_player(id);
}
return PLUGIN_CONTINUE;
}
public zp_user_infected_pre(id, infector)
{
if( is_user_alive(infector) && (level_exp[infector] < (g_level_exp[infector] - 1)) && zp_get_user_zombie(infector))
{
level_exp[infector] = level_exp[infector] + 1;
}
else
{
new y, aname[32];
get_user_name(infector, aname, sizeof aname - 1)
if( ( level_exp[infector] >= (g_level_exp[infector] - 1) ) && (g_level[infector] <= get_pcvar_num(g_level_max)) && is_user_alive(infector) && zp_get_user_zombie(infector) && is_valid_player(infector) && get_pcvar_num(g_level_zombie))
{
g_bonus[infector] = true;
g_level[infector] = g_level[infector] + 1;
level_exp[infector] = 0;
while( g_level[infector] != y )
{
y = y + 1;
g_level_exp[infector] = y * get_pcvar_num(g_frags_level);
}
message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, infector)
write_short(1<<12) // duration
write_short(1) // hold time
write_short(0x0000) // fade type
write_byte(1) // red
write_byte(200) // green
write_byte(0) // blue
write_byte(205) // alpha
message_end()
emit_sound(infector, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
set_hudmessage(0, 200, 0, 0.65, 0.5, 0, 0.0, 3.0, 2.0, 1.0, -1)
show_hudmessage(0, "%L", LANG_PLAYER, "LEVEL_UP", aname, g_level[infector])
if(get_pcvar_num(g_give_ammo) == 1)
{
ChatColor(infector, "!g[LEVEL] !y %L", LANG_PLAYER, "BONUS_LEVEL", get_pcvar_num(g_give_ammopacks) )
zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + get_pcvar_num(g_give_ammopacks) )
}
Level_Save(infector);
}
}
}
public info_player(id, target[])
{
new target_2;
target_2 = find_player("bl", target)
static name[32], nameid[32];
get_user_name(target_2, name, sizeof name - 1)
get_user_name(id, nameid, sizeof nameid - 1)
if(!target_2)
{
ChatColor(id, "!g[ZP] !y%L", LANG_PLAYER, "LEVEL_INFO_NONAME")
return PLUGIN_HANDLED
}
if(zp_get_user_zombie(id))
{
if(id != target_2)
{
ChatColor(id, "!g[INFO]!t %L", LANG_PLAYER, "LEVEL_INFOZM", name, g_level[target_2], z_damage[target_2], zp_get_user_ammo_packs(target_2) )
ChatColor(target_2, "!g[INFO]!t%L ", LANG_PLAYER, "LEVEL_INFO_YOU", nameid)
}
else
{
ChatColor(id, "!g[INFOME]!t%L", LANG_PLAYER, "LEVEL_INFOME_ZM", z_damage[target_2] )
}
}
else
{
if(id != target_2)
{
ChatColor(id, "!g[INFO]!t %L", LANG_PLAYER, "LEVEL_INFO", name, g_level[target_2], h_damage[target_2], h_speed[target_2], h_health[target_2], zp_get_user_ammo_packs(target_2) )
ChatColor(target_2, "!g[INFO]!t%L ", LANG_PLAYER, "LEVEL_INFO_YOU", nameid)
}
else
{
ChatColor(id, "!g[INFOME]!t%L", LANG_PLAYER, "LEVEL_INFOME", h_damage[target_2], h_speed[target_2], h_health[target_2] )
}
}
return PLUGIN_HANDLED
}
public bonus_player(id)
{
if( (g_level[id] >= g_levels[id]) && g_bonus[id] && (get_pcvar_num(g_level_bonus) == 1) )
{
new x = 1;
while( g_level[id] >= ( x * get_pcvar_num(g_level_num)) )
{
x = x + 1;
g_levels[id] = x * get_pcvar_num(g_level_num);
}
g_level_del[id] = g_level[id];
g_bonus[id] = false;
ChatColor(id, "!g[BONUS] !y%L", LANG_PLAYER, "LEVEL_MEGABONUS", g_level[id], get_pcvar_num(g_ammo) )
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + get_pcvar_num(g_ammo) )
}
else
{
if(g_level[id] < g_levels[id])
{
new x = 1;
while( g_level[id] >= ( x * get_pcvar_num(g_level_num)) )
{
x = x + 1;
g_levels[id] = x * get_pcvar_num(g_level_num);
}
ChatColor(id, "!g[BONUS] !y%L", LANG_PLAYER, "LEVEL_NOMEGABONUS", g_levels[id], get_pcvar_num(g_ammo) )
}
}
return PLUGIN_HANDLED
}
public expa_player(id)
{
ChatColor(id, "!g[EXPA] !y%L", LANG_PLAYER, "LEVEL_EXP", level_exp[id], g_level_exp[id])
return PLUGIN_HANDLED
}
public level_status(id)
{
if( is_user_alive(id) )
{
switch( get_pcvar_num(g_hud_color) )
{
case 0:
{
set_hudmessage(red, green, blue, 0.02, 0.87, 0, 0.0, 1.1, 2.0, 1.0, -1)
show_hudmessage(id,"%L", LANG_PLAYER, "LEVEL_STATUS", g_level[id], level_exp[id])
}
case 1:
{
if( !zp_get_user_zombie(id) )
{
set_hudmessage(get_pcvar_num(g_human_red), get_pcvar_num(g_human_green), get_pcvar_num(g_human_blue), 0.02, 0.87, 0, 0.0, 1.1, 2.0, 1.0, -1)
show_hudmessage(id,"%L", LANG_PLAYER, "LEVEL_STATUS", g_level[id], level_exp[id])
}
else
{
set_hudmessage(get_pcvar_num(g_zombie_red), get_pcvar_num(g_zombie_green), get_pcvar_num(g_zombie_blue), 0.02, 0.87, 0, 0.0, 1.1, 2.0, 1.0, -1)
show_hudmessage(id,"%L", LANG_PLAYER, "LEVEL_STATUS", g_level[id], level_exp[id])
}
}
}
}
}
public Level_Save(id)
{
new key[64], data[256], data_exp[256], key_exp[64]
switch( get_pcvar_num(g_level_type) )
{
case 0:
{
new name[33]
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(key_exp, 63, "%s-/", name)
}
case 1:
{
new player_ip[33]
get_user_ip(id,player_ip,32)
format(key, 63, "%s-/", player_ip)
format(key_exp, 63, "%s-/", player_ip)
}
case 2:
{
new steam_ID[33]
get_user_authid(id,steam_ID,32)
format(key, 63, "%s-/", steam_ID)
format(key_exp, 63, "%s-/", steam_ID)
}
}
//format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
//format(key_exp, 63, "%s-/", name)
format(data_exp, 255, "%i#", level_exp[id])
nvault_set(g_level_data, key, data)
nvault_set(g_exp_data, key_exp, data_exp)
return PLUGIN_CONTINUE;
}
public Level_Load(id)
{
new key[64], data[256], data_exp[256], key_exp[64]
switch( get_pcvar_num(g_level_type) )
{
case 0:
{
new name[33]
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(key_exp, 63, "%s-/", name)
}
case 1:
{
new player_ip[33]
get_user_ip(id,player_ip,32)
format(key, 63, "%s-/", player_ip)
format(key_exp, 63, "%s-/", player_ip)
}
case 2:
{
new steam_ID[33]
get_user_authid(id,steam_ID,32)
format(key, 63, "%s-/", steam_ID)
format(key_exp, 63, "%s-/", steam_ID)
}
}
//format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
//format(key_exp, 63, "%s-/", name)
format(data_exp, 255, "%i#", level_exp[id])
nvault_get(g_level_data, key, data, 255)
nvault_get(g_exp_data, key_exp, data_exp, 255)
replace_all(data, 255, "#", " ")
replace_all(data_exp, 255, "#", " ")
new givelevel[32], give_exp[32]
parse(data, givelevel, 31)
parse(data_exp, give_exp, 31)
g_level[id] = str_to_num(givelevel)
level_exp[id] = str_to_num(give_exp)
set_task(1.0, "level_status", id, _, _, "b")
return PLUGIN_CONTINUE;
}
public Frags_Manager()
{
new aname[32], attacker; attacker = read_data(1)
new y; y = 1;
get_user_name(attacker, aname, sizeof aname - 1)
if( ( level_exp[attacker] >= (g_level_exp[attacker] - 1) ) && (g_level[attacker] <= get_pcvar_num(g_level_max)) && is_user_alive(attacker) && !is_user_bot(attacker) )
{
g_bonus[attacker] = true;
g_level[attacker] = g_level[attacker] + 1;
level_exp[attacker] = 0;
while( g_level[attacker] != y )
{
y = y + 1;
g_level_exp[attacker] = y * get_pcvar_num(g_frags_level);
}
message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
write_short(1<<12) // duration
write_short(1) // hold time
write_short(0x0000) // fade type
write_byte(1) // red
write_byte(200) // green
write_byte(0) // blue
write_byte(205) // alpha
message_end()
emit_sound(attacker, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
set_hudmessage(0, 200, 0, 0.65, 0.5, 0, 0.0, 3.0, 2.0, 1.0, -1)
show_hudmessage(0, "%L", LANG_PLAYER, "LEVEL_UP", aname, g_level[attacker])
if(get_pcvar_num(g_give_ammo) == 1)
{
ChatColor(attacker, "!g[LEVEL] !y %L", LANG_PLAYER, "BONUS_LEVEL", get_pcvar_num(g_give_ammopacks) )
zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_give_ammopacks) )
}
Level_Save(attacker);
}
else
{
if(is_user_alive(attacker))
{
if(g_level[attacker] == get_pcvar_num(g_level_max))
ChatColor(attacker, "!g[LEVEL]!y %L", LANG_PLAYER, "LEVEL_MAX", g_level[attacker] )
level_exp[attacker] = level_exp[attacker] + 1;
Level_Save(attacker);
}
}
}
public zp_round_ended(winteam)
{
for(new id=1;id<=g_Players;id++)
g_trime[id] = true;
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, SayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
} |