Post by otmar on Aug 3, 2021 15:11:07 GMT
Hi guys can you make it extra item only zombie player, I got this plugin from gamebanana.com/scripts/10584 and I will make it plugin only zombie player but, I don't know how to make it. So I hope you are can help me
This is script
This is script
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <zombieplague>
const knifespeed_ap_cost = 20 // Ap cast
new Float:knifespeed_mins[3] = { -2.0, -2.0, -2.0 }
new Float:knifespeed_maxs[3] = { 2.0, 2.0, 2.0 }
new g_iItemID, g_msgCurWeapon, g_msgSayText
// arrays
new g_hasks[33], g_iCurrentWeapon[33]
// cvars
new cvar_enable, cvar_oneround, cvar_dropflags, cvar_pattack_rate, cvar_sattack_rate
// drop flags
const DROPFLAG_INDEATH = (1<<0) // a - death victim
const DROPFLAG_INFECTED = (1<<1) // b - drop in infected
const DROPFLAG_SURVHUMAN = (1<<2) // c - drop become survivor
// offset
const m_pPlayer = 41
const m_flNextPrimaryAttack = 46
const m_flNextSecondaryAttack = 47
const m_flTimeWeaponIdle = 48
// Plug info.
#define PLUG_VERSION "1.0"
#define PLUG_AUTH "Rhyme"
public plugin_init()
{
// register plugin
register_plugin("[ZP] Extra Item: Knife Speed", PLUG_VERSION, PLUG_AUTH)
// events
register_event("HLTV", "event_RoundStart", "a", "1=0", "2=0")
register_event("CurWeapon", "event_CurWeapon", "b", "1=1")
// cvars
cvar_enable = register_cvar("zp_ks_enable", "1")
cvar_oneround = register_cvar("zp_ks_oneround", "1")
cvar_dropflags = register_cvar("zp_ks_dropflags", "bcd")
cvar_pattack_rate = register_cvar("zp_ks_attack1_rate", "0.1")
cvar_sattack_rate = register_cvar("zp_ks_attack2_rate", "0.5")
new szCvar[30]
formatex(szCvar, charsmax(szCvar), "v%s by %s", PLUG_VERSION, PLUG_AUTH)
register_cvar("zp_extra_knifespeed", szCvar, FCVAR_SERVER|FCVAR_SPONLY)
// engine forwards
register_touch("cs_knifespeed", "player", "fw_Knifespeed_Touch")
// Ham Forwards
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fw_Knife_PrimaryAttack_Post", 1)
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_Knife_SecondaryAttack_Post", 1)
// Variables
g_iItemID = zp_register_extra_item("Speed hammer \r[+500 armor]", knifespeed_ap_cost, ZP_TEAM_HUMAN)
// Message ID's vars
g_msgSayText = get_user_msgid("SayText")
g_msgCurWeapon = get_user_msgid("CurWeapon")
// Client Commands
//register_clcmd("drop", "clcmd_drop")
}
public plugin_precache()
{
precache_sound("items/gunpickup2.wav")
}
public event_RoundStart()
{
// Remove knifespeeds (entities)
remove_entity_name("cs_knifespeed")
}
public event_CurWeapon(id)
{
// Not alive...
if(!is_user_alive(id))
return PLUGIN_CONTINUE
// Updating weapon array
g_iCurrentWeapon[id] = read_data(2)
// Check
if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
return PLUGIN_CONTINUE
// Has knifespeed and weapon is Knife
if(!g_hasks[id] || g_iCurrentWeapon[id] != CSW_KNIFE)
return PLUGIN_CONTINUE
return PLUGIN_CONTINUE
}
/*================================================================================
[Main Functions]
=================================================================================*/
public drop_knifespeed(id)
{
// Get Aim and Origin
static Float:flAim[3], Float:flOrigin[3]
VelocityByAim(id, 64, flAim)
entity_get_vector(id, EV_VEC_origin, flOrigin)
// Changing Origin coords
flOrigin[0] += flAim[0]
flOrigin[1] += flAim[1]
// Creating the Entity
new iEnt = create_entity("info_target")
// Classname
entity_set_string(iEnt, EV_SZ_classname, "cs_knifespeed")
// Origin
entity_set_origin(iEnt, flOrigin)
// Size
set_size(iEnt, knifespeed_mins, knifespeed_maxs)
entity_set_vector(iEnt, EV_VEC_mins, knifespeed_mins)
entity_set_vector(iEnt, EV_VEC_maxs, knifespeed_maxs)
// Solid Type
entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER)
// Movetype
entity_set_int(iEnt, EV_INT_movetype, MOVETYPE_TOSS)
// Var's
g_hasks[id] = false
// Model bugfix
reset_user_knife(id)
}
public reset_user_knife(id)
{
// Execute weapon Deploy
if(user_has_weapon(id, CSW_KNIFE))
ExecuteHamB(Ham_Item_Deploy, find_ent_by_owner(-1, "weapon_knife", id))
// Updating Model
engclient_cmd(id, "weapon_knife")
emessage_begin(MSG_ONE, g_msgCurWeapon, _, id)
ewrite_byte(1) // active
ewrite_byte(CSW_KNIFE) // weapon
ewrite_byte(-1) // clip
emessage_end()
}
/*================================================================================
[ZombiePlague Forwards]
=================================================================================*/
public zp_extra_item_selected(id, itemid)
{
if (itemid == g_iItemID)
{
// Check cvar
if(get_pcvar_num(cvar_enable))
{
// Already has a KnifeSpeed
if (g_hasks[id])
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + knifespeed_ap_cost)
client_printcolor(id, "/g[ZP]/y You already have a /gKnife Speed")
}
else
{
// Boolean
g_hasks[id] = true
// Emiting Sound
emit_sound(id, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
set_pev(id, pev_armorvalue, float(min(pev(id, pev_armorvalue)+500, 500)))
// Client Print
client_printcolor(id, "/g[ZP]/y You now have a /gKnife Speed")
// Change weapon to Knife
reset_user_knife(id)
}
}
// Isn't enabled...
else
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + knifespeed_ap_cost)
client_printcolor(id, "/g[ZP]/y Knife Speed item has been disabled. /gContact Admin")
}
}
}
public zp_user_infected_pre(id, infector)
{
// Drop in infection
if (g_hasks[id])
{
if(check_drop_flag(DROPFLAG_INFECTED))
drop_knifespeed(id)
else
{
g_hasks[id] = false
reset_user_knife(id)
}
}
}
public zp_user_humanized_post(id)
{
// Is survivor
if(zp_get_user_survivor(id) && g_hasks[id])
{
if(check_drop_flag(DROPFLAG_SURVHUMAN))
drop_knifespeed(id)
else
{
g_hasks[id] = false
reset_user_knife(id)
}
}
}
/*================================================================================
[Main Forwards]
=================================================================================*/
public client_putinserver(id)
{
g_hasks[id] = false
}
public client_disconnect(id)
{
g_hasks[id] = false
}
public fw_PlayerSpawn_Post(id)
{
// Check Oneround Cvar and Strip all the KnifeSpeeds
if(get_pcvar_num(cvar_oneround) || !get_pcvar_num(cvar_enable))
{
// Has KnifeSpeed
if(g_hasks[id])
{
// Var's
g_hasks[id] = false
// Update Knife
reset_user_knife(id)
}
}
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
// Check
if(victim == attacker || !attacker)
return HAM_IGNORED
// Attacker is not a Player
if(!is_user_connected(attacker))
return HAM_IGNORED
// Attacker Has a KnifeSpeed
if(g_hasks[attacker] && g_iCurrentWeapon[attacker] == CSW_KNIFE && !zp_get_user_nemesis(victim))
// Victim Has a KnifeSpeed
if(g_hasks[victim])
{
if(check_drop_flag(DROPFLAG_INDEATH))
drop_knifespeed(victim)
else
{
g_hasks[victim] = false
reset_user_knife(victim)
}
}
return HAM_IGNORED
}
public fw_Knifespeed_Touch(saw, player)
{
// Entities are not valid
if(!is_valid_ent(saw) || !is_valid_ent(player))
return PLUGIN_CONTINUE
// Is a valid player?
if(!is_user_connected(player))
return PLUGIN_CONTINUE
// Alive, Zombie or Survivor
if(!is_user_alive(player) || zp_get_user_zombie(player) || zp_get_user_survivor(player) || g_hasks[player])
return PLUGIN_CONTINUE
// Var's
g_hasks[player] = true
// Emiting Sound
emit_sound(player, CHAN_WEAPON, "items/gunpickup2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
// Knife Deploy
reset_user_knife(player)
// Remove dropped KnifeSpeed
remove_entity(saw)
return PLUGIN_CONTINUE
}
public fw_Knife_PrimaryAttack_Post(knife)
{
// Get knife owner
static id
id = get_pdata_cbase(knife, m_pPlayer, 4)
// has a KnifeSpeed
if(is_user_connected(id) && g_hasks[id])
{
// Get new fire rate
static Float:flRate
flRate = get_pcvar_float(cvar_pattack_rate)
// Set new rates
set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
}
return HAM_IGNORED
}
public fw_Knife_SecondaryAttack_Post(knife)
{
// Get knife owner
static id
id = get_pdata_cbase(knife, m_pPlayer, 4)
// has a KnifeSpeed
if(is_user_connected(id) && g_hasks[id])
{
// Get new fire rate
static Float:flRate
flRate = get_pcvar_float(cvar_sattack_rate)
// Set new rates
set_pdata_float(knife, m_flNextPrimaryAttack, flRate, 4)
set_pdata_float(knife, m_flNextSecondaryAttack, flRate, 4)
set_pdata_float(knife, m_flTimeWeaponIdle, flRate, 4)
}
return HAM_IGNORED
}
check_drop_flag(flag)
{
new szFlags[10]
get_pcvar_string(cvar_dropflags, szFlags, charsmax(szFlags))
if(read_flags(szFlags) & flag)
return true
return false
}
stock client_printcolor(const id, const input[], any:...)
{
new iCount = 1, iPlayers[32]
static szMsg[191]
vformat(szMsg, charsmax(szMsg), input, 3)
replace_all(szMsg, 190, "/g", "^4") // green txt
replace_all(szMsg, 190, "/y", "^1") // orange txt
replace_all(szMsg, 190, "/ctr", "^3") // team txt
replace_all(szMsg, 190, "/w", "^0") // team txt
if(id) iPlayers[0] = id
else get_players(iPlayers, iCount, "ch")
for (new i = 0; i < iCount; i++)
{
if (is_user_connected(iPlayers[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i])
write_byte(iPlayers[i])
write_string(szMsg)
message_end()
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1251\\ deff0\\ deflang1049{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/