Код:
public LoadSettings(id)
{
new i, LVL[22][16], cvLevels[256]
get_pcvar_string(g_Levels, cvLevels, 255)
trim(cvLevels)
parse(cvLevels, LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15, LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15, LVL[20], 15, LVL[21], 15)
for (i = 0; i < 21; i++)
LEVELS[i+1] = str_to_num(LVL[i])
return PLUGIN_HANDLED
}
public plugin_precache()
{
for(new i = 0; i < QTY; i++)
{
precache_model(g_szModels[i][0])
precache_model(g_szModels[i][1])
}
}
public plugin_init()
RegisterHam(Ham_Item_Deploy, "weapon_knife", "Fwd_Item_Deploy_Post", 1)
if(id > 0 && id < 33)
{
if(PlayerLevel[id] <= 0)
PlayerLevel[id] = 1
if(PlayerLevel[id] < 21)
{
new iLvl = PlayerLevel[id]
while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1])
PlayerLevel[id]++
if(iLvl != PlayerLevel[id])
{
levelUp[id] = 1
switch(iLvl)
{
case 1..5: g_iModel[id] = 1
case 6..10: g_iModel[id] = 2
case 11..15: g_iModel[id] = 3
}
if(get_user_weapon(id) == CSW_KNIFE)
replace_knife_models(id, g_iModel[id])
new Name[32]
get_user_name(id, Name, 31)
ChatColor(0, "%L %L", LANG_PLAYER,"LRS_TAG", LANG_PLAYER, "NEW_LEVEL", Name, LANG_PLAYER, CLASSES[iLvl])
}
}
}
}
public Fwd_Item_Deploy_Post(weapon_ent)
{
static iOwner
iOwner = fm_cs_get_weapon_ent_owner(weapon_ent)
if(!is_user_connected(iOwner) || !g_iModel[id])
return
replace_knife_models(iOwner, g_iModel[id])
}
public client_disconnect(id)
g_iModel[id] = 0
replace_knife_models(id, value)
{
set_pev(id, pev_viewmodel2, g_szModels[value][0])
set_pev(id, pev_weaponmodel2, g_szModels[value][1])
}
public EventDeath(id)
{
if(get_user_team(id) == 1)
{
new iKiller = read_data(1)
new iVictim = read_data(2)
if(iKiller != iVictim && get_pdata_int(iKiller, 114) != get_pdata_int(iVictim, 114) && is_user_connected(iKiller) && PlayerLevel[iKiller] < 21)
{
if (g_XPhead > 1)
{
if(read_data(3))
PlayerXP[iKiller] += g_XPv * g_XPhead
else
PlayerXP[iKiller] += g_XPv
}
else
PlayerXP[iKiller] += g_XPv
checkLvl(iKiller)
}
return PLUGIN_CONTINUE
}
}
public bomb_explode(id)
{
if(g_Pl < 1 || g_B != 1)
return
PlayerXP[id] += g_Pl
checkLvl(id)
}
public bomb_defused(id)
{
if(g_Def < 1 || g_B != 1)
return
PlayerXP[id] += g_Def
checkLvl(id)
}
public client_putinserver(id)
set_task(1.0, "load_client_data", id)
public load_client_data(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED
new stats[8], bodyhits[8], stats2[4]
get_user_stats(id, stats, bodyhits)
get_user_stats2(id, stats2)
if (g_XPhead > 1 && g_B != 0)
PlayerXP[id] = ((stats[2] * g_XPhead + ((stats[0] - stats[2]) * g_XPv)) + (stats2[1] * g_Def + stats2[3] * g_Pl))
else if (g_XPhead <= 1 && g_B != 0)
PlayerXP[id] = (stats[0] * g_XPv + (stats2[1] * g_Def + stats2[3] * g_Pl))
else if (g_XPhead > 1 && g_B == 0)
PlayerXP[id] = (stats[2] * g_XPhead + ((stats[0] - stats[2]) * g_XPv))
else
PlayerXP[id] = stats[0] * g_XPv
for(new i = 1; i <= 21; i++)
{
if (i < 21)
{
if (PlayerXP[id] >= LEVELS[i] && PlayerXP[id] < LEVELS[i+1])
PlayerLevel[id] = i
}
else
{
if (PlayerXP[id] >= LEVELS[21])
PlayerLevel[id] = 21
}
}
return PLUGIN_HANDLED
}