| Depresie |
04-20-2015 19:02 |
Re: [ZP50] Addon: Player Level Upgrades.
For zp 4.3, try
Code:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>
#include <zombieplague>
#include <zpexpmod>
#define PLUGIN "ZP Player Level"
#define VERSION "0.0.1"
#define AUTHOR "wbyokomo"
#define MAX_LEVEL 20
#define TASK_ITEM 20174
new Float:PlayerHealth[MAX_LEVEL] =
{
100.0, // 0
105.0, // 1
110.0, // 2
115.0, // 3
120.0, // 4
125.0, // 5
130.0, // 6
135.0, // 7
140.0, // 8
145.0, // 9
150.0, // 10
160.0, // 11
170.0, // 12
180.0, // 13
190.0, // 14
200.0, // 15
210.0, // 16
220.0, // 17
230.0, // 18
240.0 // 19
}
new Float:PlayerArmor[MAX_LEVEL] =
{
0.0, // 0
0.0, // 1
0.0, // 2
0.0, // 3
0.0, // 4
0.0, // 5
0.0, // 6
15.0, // 7
15.0, // 8
25.0, // 9
25.0, // 10
50.0, // 11
50.0, // 12
50.0, // 13
50.0, // 14
75.0, // 15
75.0, // 16
100.0, // 17
100.0, // 18
100.0 // 19
}
new Float:PlayerSpeed[MAX_LEVEL] =
{
240.0, // 0
240.0, // 1
240.0, // 2
240.0, // 3
245.0, // 4
245.0, // 5
245.0, // 6
245.0, // 7
250.0, // 8
255.0, // 9
260.0, // 10
265.0, // 11
270.0, // 12
275.0, // 13
280.0, // 14
285.0, // 15
290.0, // 16
295.0, // 17
300.0, // 18
300.0 // 19
}
new Float:PlayerGravity[MAX_LEVEL] =
{
1.0, // 0
1.0, // 1
1.0, // 2
1.0, // 3
0.95, // 4
0.95, // 5
0.9, // 6
0.9, // 7
0.9, // 8
0.85, // 9
0.8, // 10
0.75, // 11
0.7, // 12
0.65, // 13
0.6, // 14
0.6, // 15
0.55, // 16
0.5, // 17
0.5, // 18
0.5 // 19
}
new Float:PlayerDamage[MAX_LEVEL] =
{
1.0, // 0
1.0, // 1
1.0, // 2
1.0, // 3
1.0, // 4
1.1, // 5
1.1, // 6
1.1, // 7
1.1, // 8
1.1, // 9
1.2, // 10
1.2, // 11
1.2, // 12
1.2, // 13
1.2, // 14
1.3, // 15
1.3, // 16
1.3, // 17
1.4, // 18
1.4 // 19
}
new PlayerPacks[MAX_LEVEL] =
{
0, // 0
0, // 1
0, // 2
0, // 3
5, // 4
5, // 5
5, // 6
10, // 7
10, // 8
10, // 9
15, // 10
15, // 11
20, // 12
20, // 13
20, // 14
25, // 15
25, // 16
30, // 17
30, // 18
30 // 19
}
new CvarHealth, CvarArmor, CvarSpeed, CvarGravity, CvarDamage, CvarPack, CvarItem
new cDamage
new iMaxClients, bool:bIsConnected[33], iLevel[33]
#define IsPlayerConnected(%0) (1<=%0<=iMaxClients && bIsConnected[%0])
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
iMaxClients = get_maxplayers()
CvarHealth = register_cvar("xp_level_health", "1")
CvarArmor = register_cvar("xp_level_armor", "1")
CvarSpeed = register_cvar("xp_level_speed", "1")
CvarGravity = register_cvar("xp_level_gravity", "1")
CvarDamage = register_cvar("xp_level_damage", "1")
CvarPack = register_cvar("xp_level_pack", "1")
CvarItem = register_cvar("xp_level_item", "1")
register_event("HLTV", "OnNewRound", "a", "1=0", "2=0")
RegisterHam(Ham_TakeDamage, "player", "OnPlayerTakeDamage")
}
public OnNewRound()
{
cDamage = get_pcvar_num(CvarDamage) //should cache because it call too often in 'Ham_TakeDamage' forward.
}
public client_putinserver(id)
{
bIsConnected[id] = true
}
public client_disconnect(id)
{
bIsConnected[id] = false
remove_task(id+TASK_ITEM)
}
public xp_user_login(id, level, exp)
{
iLevel[id] = level
if(get_pcvar_num(CvarPack)) zp_set_user_ammopacks(id, zp_get_user_ammopacks(id)+PlayerPacks[level]); //give free ammopacks once player join the server.
}
public xp_user_levelup(id, level, exp)
{
iLevel[id] = level
}
public zp_user_humanized_post(id)
{
if(!zp_get_user_survivor(id)) SetPlayerPower(id);
}
public OnPlayerTakeDamage(victim, inflictor, attacker, Float:damage, damagetype)
{
if(!cDamage) return HAM_IGNORED;
if(victim == attacker) return HAM_IGNORED;
if(!(damagetype & DMG_BULLET)) return HAM_IGNORED;
if(!IsPlayerConnected(attacker)) return HAM_IGNORED;
if(zp_get_user_zombie(victim) && !zp_get_user_zombie(attacker))
{
damage *= PlayerDamage[iLevel[attacker]]
SetHamParamFloat(4, damage)
return HAM_IGNORED;
}
return HAM_IGNORED;
}
SetPlayerPower(id)
{
new cLevel = iLevel[id]
if(get_pcvar_num(CvarHealth))
{
if(entity_get_float(id, EV_FL_health) < PlayerHealth[cLevel]) entity_set_float(id, EV_FL_health, PlayerHealth[cLevel]);
}
if(get_pcvar_num(CvarArmor))
{
if(entity_get_float(id, EV_FL_armorvalue) < PlayerArmor[cLevel]) entity_set_float(id, EV_FL_armorvalue, PlayerArmor[cLevel]);
}
if(get_pcvar_num(CvarSpeed))
{
set_user_maxspeed(id, PlayerSpeed[cLevel], false)
}
if(get_pcvar_num(CvarGravity))
{
entity_set_float(id, EV_FL_gravity, PlayerGravity[cLevel])
}
if(get_pcvar_num(CvarItem))
{
if(cLevel >= 8)
{
remove_task(id+TASK_ITEM)
set_task(1.0, "TaskGiveItem", id+TASK_ITEM)
}
}
}
public TaskGiveItem(id)
{
id-=TASK_ITEM
if(!is_user_alive(id) || zp_get_user_zombie(id)) return; //recheck
switch(iLevel[id])
{
case 8..13:
{
if(user_has_weapon(id, CSW_HEGRENADE)) cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE)+1);
else give_item(id, "weapon_hegrenade");
}
case 14..16:
{
if(user_has_weapon(id, CSW_HEGRENADE)) cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE)+2);
else give_item(id, "weapon_hegrenade");
if(user_has_weapon(id, CSW_FLASHBANG)) cs_set_user_bpammo(id, CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG)+2);
else give_item(id, "weapon_flashbang");
}
case 17..19:
{
if(user_has_weapon(id, CSW_HEGRENADE)) cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE)+3);
else give_item(id, "weapon_hegrenade");
if(user_has_weapon(id, CSW_FLASHBANG)) cs_set_user_bpammo(id, CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG)+3);
else give_item(id, "weapon_flashbang");
if(user_has_weapon(id, CSW_SMOKEGRENADE)) cs_set_user_bpammo(id, CSW_SMOKEGRENADE, cs_get_user_bpammo(id, CSW_SMOKEGRENADE)+3);
else give_item(id, "weapon_smokegrenade");
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
|