Код:
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <fakemeta_util>
/*
* Special Thanks To "KORD_12.7" << *
*
* v0.1 - first realease
* v0.2 - ??? :D
* v0.3 - 04.04.2011 [removed FUN module]
* v0.4 - 16.05.2011 [added cvars and hudmessage]
* v0.4a - 31.05.2011 [code rewriting]
* v0.4b - 09.07.2011 [1)some optimizations, 2)added chek (victim ?= killer)]
* v0.4c - 18.07.2011 [1)removed 2 Float's, 2)added chek killer's life]
* v0.4d - 28.08.2011 [1)optimizations]
*
* http://aghl.ru/forum/ - Russian Half-Life and Adrenaline Gamer Community
*
*/
new min_add, max_add, MAX, Hp_Ap, hs_multiple, show_bonus, start_hp, start_ap
enum _:MODES
{
MODE_HEALTH,
MODE_ARMOR
}
#define check_bit(%1,%2) (%1 & (1<<%2))
#define PLUGIN "Ap & HP for killing"
#define VERSION "0.4d"
#define AUTHOR "Turanga_Leela"
new weapons[][] = {
"weapon_357",
"weapon_9mmAR",
"weapon_crossbow",
"weapon_egon",
// "weapon_gauss",
"weapon_mp5",
// "weapon_buckshot",
"weapon_rpg",
"weapon_shotgun"
"weapon_hornetgun"
};
public plugin_init()
{
register_event("DeathMsg", "on_death", "a", "1!0")
register_plugin(PLUGIN, VERSION, AUTHOR)
min_add = register_cvar("amx_HL_MiN+", "1")
max_add = register_cvar("amx_HL_MaX+", "20")
hs_multiple = register_cvar("amx_HL_Hs_MultiplE", "2")
MAX = register_cvar("amx_HL_MaX_HpAp", "250")
Hp_Ap = register_cvar("amx_HL_Hp_Ap", "3")
show_bonus = register_cvar("amx_HL_ShoW_BonuS", "1")
start_hp = register_cvar("amx_HL_start_hp", "100")
start_ap = register_cvar("amx_HL_start_ap", "0")
RegisterHam(Ham_Spawn, "player", "On_Player_Spawn", 1);
}
public On_Player_Spawn(id)
{
set_pev(id, pev_health, float(get_pcvar_num(start_hp)));
set_pev(id, pev_armorvalue, float(get_pcvar_num(start_ap)));
log_amx("Setting player hp = %d, ap = %d", get_pcvar_num(start_hp), get_pcvar_num(start_ap));
fm_give_item(id, weapons[random_num(0, sizeof(weapons) - 1)]);
return(HAM_SUPERCEDE);
}
public on_death()
{
//if(!get_pcvar_num(Hp_Ap)) return
new KilleR = read_data(1)
new VictiM = read_data(2)
if(KilleR == VictiM || !is_user_alive(KilleR)) return
new LasT_HiT_GrouP = get_pdata_int(VictiM, 90)
new int = random_num(get_pcvar_num(min_add), get_pcvar_num(max_add))
if(LasT_HiT_GrouP == HIT_HEAD && get_pcvar_num(hs_multiple))
int *= get_pcvar_num(hs_multiple)
(get_pcvar_num(max_add) < get_pcvar_num(min_add)) ? (set_pcvar_num(max_add, get_pcvar_num(min_add))):max_add
//new cvar = get_pcvar_num(Hp_Ap)
/*if(check_bit(cvar, MODE_HEALTH))
func_bonus(KilleR, int, 0)
if(check_bit(cvar, MODE_ARMOR))
func_bonus(KilleR, int, 1)*/
func_bonus(KilleR, int, random_num(0,1));
// func_bonus(KilleR, int, 0);
// func_bonus(KilleR, int, 1);
// func_bonus(KilleR, int, 2);
if(get_pcvar_num(show_bonus) && !is_user_bot(KilleR))
{
// set_hudmessage(0, 100, 200, 0.1, 0.9, 2, 1.0, 3.0, 0.5, 0.5, -1)
// show_hudmessage(KilleR, "+%d", int)
set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)
show_hudmessage(KilleR, "Healed +%d hp", int)
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, KilleR)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(200)
write_byte(75)
message_end()
}
}
func_bonus(id, num, mode)
{
static Float:value
// server_print("%f", get_user_maxspeed(id));
/* if(mode == 2)
{
// server_print("%f, %f", get_user_gravity(id),random_float(0.02, 0.07));
// set_user_gravity(id,get_user_gravity(id)-random_float(0.012, 0.15) > 0.01 ? get_user_gravity(id)-random_float(0.02, 0.07) : 0.01);
}
else if(mode == 3)
{
// server_print("%f, %f", get_user_gravity(id),random_float(0.02, 0.07));
// set_user_maxspeed(id,get_user_maxspeed(id)+random_float(0.2, 0.7) > 300.0 ? get_user_maxspeed(id)+random_float(0.02, 0.07) : 300.0;
// set_user_maxspeed(id,400.0);
set_user_maxspeed(id,get_user_maxspeed(id) == 0.0 ? 300.0 : get_user_maxspeed(id)+10.0);
}
else
{ */
pev(id, pev_health, value);
if(value < 0.0 || value > float(get_pcvar_num(MAX)))
{
server_cmd("kick #%d", id);
}
pev(id, !mode ? pev_health : pev_armorvalue, value)
new Float:cvar_max = float(get_pcvar_num(MAX))
((value += float(num)) > cvar_max) ? (value = cvar_max) : value
set_pev(id, !mode ? pev_health : pev_armorvalue, value)
// }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ fbidis\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ ltrpar\\ lang5121\\ f0\\ fs16 \n\\ par }
*/