Gaze Upon My Hat
Join Date: Feb 2009
Location: Viña del Mar, Chile
|
12-21-2009
, 15:17
Re: Can anyone make a Blinker Class?
|
#4
|
Quote:
Originally Posted by Zombiezzz
PHP Code:
#include <amxmodx> #include <cstrike> #include <fun> #include <fakemeta> #include <zombieplague> #include <chr_engine> #define MIN_DISTANCE 50 new const g_item_name[] = { "Knife Blink (once)" } const g_item_cost = 5 const g_iMaxDistance = 300; /*============================================================================*/ new Float:g_fSpeed = 1000.0; new Float:g_fDelay = 1.0; new g_iMaxPlayers; new g_iEnemy[33]; new g_iInBlink[33]; new Float:g_fLastSlash[33]; new g_iCanceled[33]; new g_iSlash[33]; new g_iBlinks[33]; new g_itemid_blink; // Zombie Attributes new const zclass_name[] = { "Blinker Zombie" } // name new const zclass_info[] = { "-HP +Speed } // description new const zclass_model[] = { "zombie_source" } // model new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model const zclass_health = 850 // health const zclass_speed = 350 // speed const Float:zclass_gravity = 0.8 // gravity const Float:zclass_knockback = 0.6 // knockback new g_zclass_infecter, Ammo public plugin_init(){ register_plugin("[ZP] Blinker Zombie", "1.2", "Zombiezzz); g_iMaxPlayers = get_maxplayers(); g_itemid_blink = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_ZOMBIE); register_forward(FM_TraceLine, "FW_TraceLine_Post", 1); register_forward(FM_PlayerPreThink, "FW_PlayerPreThink"); register_event("HLTV", "EVENT_round_start", "a", "1=0", "2=0") } public plugin_precache() { register_plugin("[ZP] Zombie Class: Blinker Zombie", "1.2", "Zombiezzz") g_zclass_infecter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) } public FW_TraceLine_Post(Float:start[3], Float:end[3], conditions, id, trace){ if (!CHECK_ValidPlayer(id)) return FMRES_IGNORED; new iWeaponID = get_user_weapon(id); if ( iWeaponID != CSW_KNIFE ){ OP_Cancel(id); return FMRES_IGNORED; } new enemy = g_iEnemy[id]; if (!enemy){ enemy = get_tr2(trace, TR_pHit); if ( !CHECK_ValidPlayer(enemy) || zp_get_user_zombie(enemy) ){ OP_Cancel(id); return FMRES_IGNORED; } g_iEnemy[id] = enemy; } return FMRES_IGNORED; } public FW_PlayerPreThink(id){ if (!CHECK_ValidPlayer(id)) return FMRES_IGNORED; new iWeaponID = get_user_weapon(id); if ( iWeaponID != CSW_KNIFE || !zp_get_user_zombie(id) ){ OP_Cancel(id); return FMRES_IGNORED; } if ( g_iBlinks[id] == 0 ) return FMRES_IGNORED; new button = pev(id,pev_button); if ( !(button & IN_ATTACK) && !(button & IN_ATTACK2) ){ OP_Cancel(id) return FMRES_IGNORED; } if (g_iSlash[id]) g_iSlash[id] = 0; OP_NearEnemy(id); if( g_iInBlink[id] ){ OP_SetBlink(id); OP_Blink(id); g_iCanceled[id] = 0; } return FMRES_IGNORED; } public zp_user_infected_post(id, infector) { if (zp_get_user_zombie_class(id) == g_zclass_infecter && !zp_get_user_nemesis(id)) if (infector == g_itemid_blink) { g_iBlinks[infector] += 1; client_print(id, print_chat, "[ZP] You've chosen Infecter Zombie, good luck!") } } public EVENT_round_start() { for (new id; id <= 32; id++) g_iBlinks[id] = 0; } public OP_NearEnemy(id){ new enemy = g_iEnemy[id]; new Float:time = get_gametime(); if (!enemy || g_fLastSlash[id]+g_fDelay>time){ g_iInBlink[id] = 0; return; } new origin[3], origin_enemy[3]; get_user_origin(id, origin, 0); get_user_origin(enemy, origin_enemy, 0); new distance = get_distance(origin, origin_enemy); if ( MIN_DISTANCE<=distance<=g_iMaxDistance){ g_iInBlink[id] = 1; return; }else if (MIN_DISTANCE>distance && g_iInBlink[id]) { OP_Slash(id); } OP_Cancel(id); } public OP_Blink(id){ new Float:new_velocity[3]; new enemy = g_iEnemy[id]; new Float:origin_enemy[3]; pev(enemy, pev_origin, origin_enemy); entity_set_aim(id, origin_enemy); get_speed_vector2(id, enemy, g_fSpeed, new_velocity) set_pev(id, pev_velocity, new_velocity); } public OP_Cancel(id){ g_iInBlink[id] = 0; g_iEnemy[id] = 0; if (!g_iCanceled[id]){ OP_SetBlink(id); g_iCanceled[id] = 1; } } public OP_Slash(id){ set_pev(id, pev_velocity, {0.0,0.0,0.0}); // stop player's blink new weaponID = get_user_weapon(id, _, _); if(weaponID == CSW_KNIFE){ new weapon[32] get_weaponname(weaponID,weapon,31) new ent = fm_find_ent_by_owner(-1,weapon,id) if(ent){ set_pdata_float(ent,46, 0.0); set_pdata_float(ent,47, 0.0); g_iSlash[id] = 1; g_fLastSlash[id] = get_gametime(); g_iBlinks[id] -= 1; new name[32]; get_user_name(id,name,31) client_print(0, print_chat, "[ZP] %s just used a Knife Blink!", name); client_print(id, print_chat, "[ZP] %d Knife Blinks remaining", g_iBlinks[id]); } } } public OP_SetBlink(id){ new blink = g_iInBlink[id]; if (blink>1) return; if (blink) g_iInBlink[id] += 1; }
public CHECK_ValidPlayer(id){ if (1<=id<=g_iMaxPlayers && is_user_alive(id)) return 1; return 0; } // from fakemeta_util.inc stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) { new strtype[11] = "classname", ent = index; switch (jghgtype) { case 1: strtype = "target"; case 2: strtype = "targetname"; } while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {} return ent; }
|
PHP Code:
register_plugin("[ZP] Blinker Zombie", "1.2", "Zombiezzz");
HAHAHA, big fail man, you suck
PHP Code:
register_plugin("[ZP] Extra Item: Knife Blink", "1.2", "pharse");
That's the real author, moron. Do not try to change the autor's name.
__________________
Quote:
Originally Posted by joropito
You're right Metalicross
|
|
|