jeżeli natywy w dokumentacji sa dobrze opisane to teoretycznie powinno dzialac ale pisalem to na raz wiec nie mam pewnosci, a nawet zp zeby to sprawdzic
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <ColorChat>
#define is_vip(%1) (get_user_flags(%1) & ADMIN_LEVEL_G)
forward zp_user_infected_post(id, infector, nemesis)
forward amxbans_admin_connect(id);
native zp_get_user_zombie(id)
native zp_set_user_ammo_packs(id, amount)
native zp_get_user_ammo_packs(id)
new g_damage[33],skoki[33];
public plugin_init() {
register_plugin("svip", "1.0", "fresh")
RegisterHam(Ham_Spawn,"player","fw_SpawnPlayerPost",1)
RegisterHam(Ham_TakeDamage,"player","fw_TakeDamagePre",0)
RegisterHam(Ham_Killed,"player","fw_PlayerKilledPost",1)
register_forward(FM_CmdStart, "CmdStartPre");
register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
register_message(get_user_msgid("SayText"),"handleSayText");
register_clcmd("say /svips","lista_vipow")
}
public client_connect(id)
g_damage[id] = 0
public amxbans_admin_connect(id)
{
static name[64]
get_user_name(id,name,63)
if(is_vip(id))
ColorChat(0,RED,"Na serwer wchodzi ^4SVIP %s",name)
}
public fw_SpawnPlayerPost(id)
{
if(!is_user_alive(id) || zp_get_user_zombie(id) || !is_vip(id))
return;
set_pev(id,pev_health,pev(id,pev_health)+100.0)
set_pev(id,pev_armortype,1)
set_pev(id,pev_armorvalue,100.0)
}
public fw_TakeDamagePre(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_alive(idattacker) || !is_user_alive(this) || zp_get_user_zombie(idattacker) || !is_vip(idattacker))
return HAM_IGNORED
SetHamParamFloat(4,damage*1.35)
g_damage[idattacker]+=floatround(damage*1.35)
if(g_damage[idattacker]>900)
{
zp_set_user_ammo_packs(idattacker,zp_get_user_ammo_packs(idattacker)+1)
g_damage[idattacker] = 0
}
return HAM_HANDLED
}
public fw_PlayerKilledPost(id,attacker,shouldgib)
{
if(!zp_get_user_zombie(id) || !is_user_connected(attacker) || !is_vip(attacker))
return;
zp_set_user_ammo_packs(attacker,zp_get_user_ammo_packs(attacker)+3)
}
public CmdStartPre(id, uc_handle){
static flags; flags = pev(id, pev_flags);
if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]>0 && is_vip(id) && !zp_get_user_zombie(id)){
--skoki[id];
static Float:velocity[3];
pev(id, pev_velocity,velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id,pev_velocity,velocity);
} else if(flags & FL_ONGROUND && skoki[id]!=-1){
skoki[id] = 2;
}
}
public VipStatus(){
static id; id=get_msg_arg_int(1);
if(is_user_alive(id) && is_vip(id)){
set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
}
}
public handleSayText(msgId,msgDest,msgEnt){
static id; id = get_msg_arg_int(1);
if(is_user_connected(id) && is_vip(id)){
static szTmp[256],szTmp2[256];
get_msg_arg_string(2,szTmp, charsmax(szTmp))
static szPrefix[64];szPrefix = "^x04[SuperVIP]";
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
}
return PLUGIN_CONTINUE;
}
public lista_vipow(id)
{
static name[64], menu ; menu = menu_create("Super Vipy ONLINE","handle")
for(new i = 1 ; i <= get_maxplayers() ; i++)
if(is_vip(i))
{
get_user_name(i,name,63)
menu_additem(menu,name)
}
menu_display(id,menu)
}
public handle()
return 0
public zp_user_infected_post(id,infector,nemesis)
{
if(!is_user_alive(id))
return;
if(zp_get_user_zombie(id) && is_vip(id))
set_pev(id,pev_health,pev(id,pev_health)+1000.0)
if(!infector || !is_vip(infector))
return;
set_pev(infector,pev_health,pev(infector,pev_health)+350.0)
zp_set_user_ammo_packs(infector,zp_get_user_ammo_packs(infector)+5)
}
Użytkownik rzeznik9871 edytował ten post 17.03.2017 20:15