Szereztem a egy plugint a netről és csak az sma-t adtak a plugin szinteket rakott volna a zombi modba.Compilelnem és nem engedi hibat ír ki valaki segítsen.
Kód:
-*- [ZP] Server Addon: XP Level System || Update [v. 2.0]-*-
-------------------------------------------
~~~~~~~~~~~~~~~
- 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.
================================================================================*/
#include <amxmodx>
#include <nvault>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>
#define PLUGIN "[ZP] Server Addon: XP Level System"
#define VERSION "2.0"
#define AUTHOR "Re.Act!ve"
#pragma tabsize 0
new SayText
new g_level[32], g_level_data, g_frags_level, frags_data[32], frags_del[32], g_ScreenFade, g_level_del[33], g_level_bonus, g_ammo
new g_level_max, g_give_ammo, g_give_ammopacks, g_level_num, g_level_info, g_player_name, g_levels[32], g_h_damage
new g_h_health, g_h_speed, g_z_damage
new bool:g_play[32], g_bonus[32]
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_frags_level = register_cvar("zp_level_frags", "40") // Сколько фрагов нужно поднять на карте, чтобы срубить новый левел
g_level_max = register_cvar("zp_level_max", "250") // Максимальный левел
g_give_ammo = register_cvar("zp_level_give_ammo", "1") // Давать аммо паки при каждом полученном левле?
g_give_ammopacks = register_cvar("zp_level_ammo", "45") // Сколько давать аммопаков? (если выше установлено 1)
g_h_damage = register_cvar("zp_level_h_damage", "2") // Увеличивать с каждым уровнем урон на Х у людей
g_h_health = register_cvar("zp_level_h_health", "10") // Люди получают за каждый левел дополнительные Х хп
g_h_speed = register_cvar("zp_level_h_speed", "1.0") // На сколько величивать скорость людей с каждым уровнем?
g_z_damage = register_cvar("zp_level_z_damage", "3") // Увеличивать с каждым уровнем урон на Х у зомби
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", "1000") // Сколько аммо паков этот мегабонус?
g_level_data = nvault_open("Leveling_Save")
register_clcmd("say","say_info");
register_clcmd("say_team","say_info");
SayText = get_user_msgid("SayText")
register_event("DeathMsg", "Frags_Manager", "a", "1>0")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
register_dictionary("zp_level_system.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 zp_round_started(gamemode, id)
{
if( !zp_get_user_zombie(id) && is_user_alive(id) )
{
new h_health[32], h_speed[32], n = 1;
while( g_level[id] != n )
{
h_health[id] = n * get_pcvar_num(g_h_health);
h_speed[id] = n * get_pcvar_num(g_h_speed);
n = n + 1;
}
fm_set_user_health( id, get_user_health(id) + h_health[id] )
fm_set_user_maxspeed( id, fm_get_user_maxspeed(id) + h_speed[id] )
emit_sound(id, CHAN_STREAM, sound_health, 1.0, ATTN_NORM, 0, PITCH_HIGH )
}
}
public client_putinserver(id)
{
Level_Load(id)
if( (g_level[id] < 1) || (g_level[id] == 0) ) g_level[id] = 1;
if(g_level[id] < get_pcvar_num(g_level_num))
g_levels[id] = get_pcvar_num(g_level_num);
else
{
new n = 1;
while( g_level[id] > ( n * get_pcvar_num(g_level_num)) )
{
g_levels[id] = n * get_pcvar_num(g_level_num);
n = n + 1;
}
}
g_play[id] = true;
g_level_del[id] = 0;
frags_del[id] = 0;
}
public client_disconnect(id)
{
g_play[id] = false;
Level_Save(id)
}
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]
read_args(text, sizeof(text)-1);
remove_quotes(text);
arg1[0] = '^0';
target[0] = '^0';
parse(text, arg1, sizeof(arg1)-1, target, sizeof(target)-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);
}
return PLUGIN_CONTINUE;
}
public zp_extra_item_selected(id, itemid)
{
Level_Save(id)
}
public zp_user_infected_post(id, infector)
{
Level_Save(id);
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
}
ChatColor(id, "!g[INFO]!t %L", LANG_PLAYER, "LEVEL_INFO", name, g_level[target_2], zp_get_user_ammo_packs(target_2) )
ChatColor(target_2, "!g[INFO]!t %L ", LANG_PLAYER, "LEVEL_INFO_YOU", nameid)
return PLUGIN_HANDLED
}
public bonus_player(id)
{
if( (g_level[id] == g_levels[id]) && (get_pcvar_num(g_level_bonus) == 1) && g_bonus[id])
{
g_levels[id] = g_levels[id] * 2;
g_level_del[id] = g_level[id];
g_bonus[id] = false;
ChatColor(id, "!g[BONUS]%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) )
Level_Save(id)
}
else
{
if(g_level[id] < g_levels[id])
{
g_levels[id] = get_pcvar_num(g_level_num);
ChatColor(id, "!g[BONUS] !y %L", LANG_PLAYER, "LEVEL_NOMEGABONUS", g_levels[id], get_pcvar_num(g_ammo) )
}
else
{
g_levels[id] = get_pcvar_num(g_level_num) * 2;
ChatColor(id, "!g[BONUS] !y %L", LANG_PLAYER, "LEVEL_NOMEGABONUS", g_levels[id], get_pcvar_num(g_ammo) )
}
Level_Save(id)
}
return PLUGIN_HANDLED
}
public vip_status(id)
{
if( is_user_alive(id) && g_play[id])
{
set_hudmessage(255, 200, 3, 0.02, 0.868, 0, 0.0, 3.0, 2.0, 1.0, -1)
show_hudmessage(id,"%L", LANG_PLAYER, "LEVEL_STATUS", g_level[id])
}
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_bits)
{
if ( !zp_get_user_zombie(attacker) && is_user_alive(attacker) )
{
new h_damage[32], n = 1;
while( g_level[attacker] != n )
{
h_damage[attacker] = n * get_pcvar_num(g_h_damage);
n = n + 1;
}
SetHamParamFloat(4, damage + h_damage[attacker]);
}
else
{
if ( zp_get_user_zombie(attacker) && is_user_alive(attacker) )
{
new z_damage[32], i = 1;
while( g_level[attacker] != i )
{
z_damage[attacker] = i * get_pcvar_num(g_z_damage);
i = i + 1;
}
SetHamParamFloat(4, damage + z_damage[attacker]);
}
}
}
public Level_Save(id)
{
new key[64], data[256]
new name[33];
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
nvault_set(g_level_data, key, data)
return PLUGIN_CONTINUE;
}
public Level_Load(id)
{
new key[64], data[256]
new name[33];
get_user_name(id,name,32)
format(key, 63, "%s-/", name)
format(data, 255, "%i#", g_level[id])
nvault_get(g_level_data, key, data, 255)
replace_all(data, 255, "#", " ")
new givelevel[32]
parse(data, givelevel, 31)
g_level[id] = str_to_num(givelevel)
set_task(2.0, "vip_status", id, _, _, "b")
}
public Frags_Manager()
{
new frags[32] , attacker = read_data(1)
// new victim = read_data(2)
new aname[32]
get_user_name(attacker, aname, sizeof aname - 1)
frags_data[attacker] = get_user_frags(attacker)
frags[attacker] = frags_data[attacker] - frags_del[attacker]
if( (frags[attacker] >= get_pcvar_num(g_frags_level)) && (g_level[attacker] <= get_pcvar_num(g_level_max)) )
{
g_bonus[attacker] = true;
g_level[attacker] = g_level[attacker] + 1;
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(0) // red
write_byte(200) // green
write_byte(0) // blue
write_byte(160) // 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) )
}
frags_del[attacker] = frags_data[attacker]
Level_Save(attacker);
}
else
{
if(g_level[attacker] == get_pcvar_num(g_level_max))
ChatColor(attacker, "!g[LEVEL]!y %L", LANG_PLAYER, "LEVEL_MAX", g_level[attacker] )
}
}
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
replace_all(msg, 190, "!t2", "^0") // Team2 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();
}
}
}
}
És a hiba:
Could not locate output file elérisi hely... pluginneve.amx
Nagyon kérem segítsetek!!