Witajcie. Otóż zmodyfikowałem sobie nieco plugin knife mod żeby był tylko dla vipa, i prawie wszystko śmiga. Ale jeśli danemu graczowi skończy się VIP, to ostatni nóż który miał wybrany na serwerze, mu zostaje... Czy mógłby mi ktoś zrobić żeby po ukończeniu się VIPa danemu graczowi, nóż wracał ponownie do standardowego noża?
Niżej macie .sma knife moda:
#include <amxmodx> #include <amxmisc> #include <engine> #include <vault> #include <fun> #define PLUGIN "Knife Mod" #define VERSION "1.0" #define AUTHOR "spunko" #define TASK_INTERVAL 4.0 #define MAX_HEALTH 255 new knife_model[33] new g_Menu new CVAR_HIGHSPEED new CVAR_LOWSPEED new CVAR_LOWGRAV new CVAR_NORMGRAV new CVAR_HEALTH_ADD new CVAR_HEALTH_MAX new CVAR_DAMAGE public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event( "Damage", "event_damage", "be" ) register_event("CurWeapon","CurWeapon","be","1=1") g_Menu = register_menuid("Knife Mod") register_menucmd(g_Menu, 1023, "knifemenu") register_clcmd("say /knife", "display_knife") set_task(480.0, "kmodmsg", 0, _, _, "b") } public plugin_precache() { precache_model("models/noze/v_knife.mdl") precache_model("models/noze/p_knife.mdl") precache_model("models/noze/v_gut.mdl") precache_model("models/noze/v_huntsman.mdl") precache_model("models/noze/v_karambit.mdl") precache_model("models/v_knife.mdl") precache_model("models/p_knife.mdl") } public display_knife(id) { if(!is_user_connected(id) || !(get_user_flags(id) & read_flags("t"))) return PLUGIN_HANDLED; new menuBody[512] add(menuBody, 511, "\rKnife Mod\w^n^n") add(menuBody, 511, "1. Tribal ButterFly Knife^n")//0 add(menuBody, 511, "2. Gut Knife^n")//1 add(menuBody, 511, "3. Huntsman Knife^n")//2 add(menuBody, 511, "4. Karambit Knife^n")//3 add(menuBody, 511, "5. Default Knife^n^n")//4 add(menuBody, 511, "0. Exit^n") new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 ) show_menu(id, keys, menuBody, -1, "Knife Mod") } public knifemenu(id, key) { switch(key) { case 0: SetKnife(id , 4) case 1: SetKnife(id , 2) case 2: SetKnife(id , 3) case 3: SetKnife(id , 1) case 4: SetKnife(id , 0) default: return PLUGIN_HANDLED } SaveData(id) return PLUGIN_HANDLED } public SetKnife(id , Knife) { knife_model[id] = Knife new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo) if ( Weapon != CSW_KNIFE ) return PLUGIN_HANDLED new vModel[56],pModel[56] switch(Knife) { case 0: { format(vModel,55,"models/v_knife.mdl") format(pModel,55,"models/p_knife.mdl") } case 1: { format(vModel,55,"models/noze/v_huntsman.mdl") } case 2: { format(vModel,55,"models/noze/v_karambit.mdl") } case 3: { format(vModel,55,"models/noze/v_gut.mdl") } case 4: { format(vModel,55,"models/noze/v_knife.mdl") format(pModel,55,"models/noze/p_knife.mdl") } } entity_set_string(id, EV_SZ_viewmodel, vModel) entity_set_string(id, EV_SZ_weaponmodel, pModel) return PLUGIN_HANDLED; } public event_damage( id ) { new victim_id = id; if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE new dmg_take = read_data( 2 ); new dmgtype = read_data( 3 ); new Float:multiplier = get_pcvar_float(CVAR_DAMAGE); new Float:damage = dmg_take * multiplier; new health = get_user_health( victim_id ); new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID ); if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) { return PLUGIN_HANDLED } if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 ) { if( floatround(damage) >= health ) { if( victim_id == attacker_id ) { return PLUGIN_CONTINUE }else{ log_kill( attacker_id, victim_id, "knife", 0 ); } return PLUGIN_CONTINUE }else { if( victim_id == attacker_id ) return PLUGIN_CONTINUE fakedamage( victim_id, "weapon_knife", damage, dmgtype ); } } return PLUGIN_CONTINUE } public CurWeapon(id) { new Weapon = read_data(2) // Set Knife Model SetKnife(id, knife_model[id]) // Task Options if(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE) set_task(TASK_INTERVAL , "task_healing",id,_,_,"b") else if(task_exists(id)) remove_task(id) // Abilities new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0 set_user_gravity(id , Gravity) // Speed new Float:Speed if(Weapon != CSW_KNIFE || knife_model[id] < 3) return PLUGIN_CONTINUE else if(knife_model[id] == 3) Speed = get_pcvar_float(CVAR_HIGHSPEED) else if(knife_model[id] == 4) Speed = get_pcvar_float(CVAR_LOWSPEED) set_user_maxspeed(id, Speed) return PLUGIN_HANDLED } stock log_kill(killer, victim, weapon[],headshot) { user_silentkill( victim ); message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 ); write_byte( killer ); write_byte( victim ); write_byte( headshot ); write_string( weapon ); message_end(); new kfrags = get_user_frags( killer ); set_user_frags( killer, kfrags++ ); new vfrags = get_user_frags( victim ); set_user_frags( victim, vfrags++ ); return PLUGIN_CONTINUE } public task_healing(id) { new addhealth = get_pcvar_num(CVAR_HEALTH_ADD) if (!addhealth) return new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX) if (maxhealth > MAX_HEALTH) { set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH) maxhealth = MAX_HEALTH } new health = get_user_health(id) if (is_user_alive(id) && (health < maxhealth)) { set_user_health(id, health + addhealth) set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4) show_hudmessage(id,"<< !!HEAL IN PROGRESS!! >>") message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id) write_short(1<<10) write_short(1<<10) write_short(0x0000) write_byte(0) write_byte(200) write_byte(0) write_byte(75) message_end() } else { if (is_user_alive(id) && (health > maxhealth)) remove_task(id) } } public client_disconnect(id) { if(task_exists(id)) remove_task(id) } public kmodmsg() { client_print(0,print_chat,"[ZMIEN NOZ] Wpisz /knife i zmien wyglad swojego noza! [4 UNIKALNE NOZE][DOSTEPNE TYLKO DLA VIPA]") } public client_authorized(id) { LoadData(id) } SaveData(id) { new authid[32] get_user_authid(id, authid, 31) new vaultkey[64] new vaultdata[64] format(vaultkey, 63, "KMOD_%s", authid) format(vaultdata, 63, "%d", knife_model[id]) set_vaultdata(vaultkey, vaultdata) } LoadData(id) { new authid[32] get_user_authid(id,authid,31) new vaultkey[64], vaultdata[64] format(vaultkey, 63, "KMOD_%s", authid) get_vaultdata(vaultkey, vaultdata, 63) knife_model[id] = str_to_num(vaultdata) } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */