Post by 6lackyy on Jul 24, 2022 17:35:11 GMT
Hello, I have been trying to remake one of the most popular zombie mods in my country but there are some problems I cannot figure how to solve. I am using "Knife Knockback" addon so I can change the default knife model and give players the gravity and speed, it works but somehow when I replace the model of the default knife in that addon, it does not work. Even if I use the default knife model that should be there, the knife is still default cs 1.6 knife. It does not change, is there any other addon allowing me to change model of knife, gravity and speed? I DO NOT WANT KNIFE MENU, I want everyone to have the same knife, so it cannot be a knife menu, just a single knife replacing the gravity, speed and model of the default cs 1.6 one.
There is another problem for me which is adding custom weapons into buymenu of ZP 5.0... I tried to find these types of tutorials everywhere but I cannot find one, they are hard to understand and/or it does not exist. The popular zombie mod had a buymenu like "AK-47" and then another AK-47 under it from CSO with price for cash which you could get from killing zombies or zombies killing humans.
I have a .wav music of Antidote but when I use the antidote, the sound goes for 1.25+- sec and then it stops automatically, which means it does not play full sound.
I posted a .sma file of this knockback plugin here, if you do not mind, please take a look at it. Thanks forward for ANY of your replies, I appreciate them.
There is another problem for me which is adding custom weapons into buymenu of ZP 5.0... I tried to find these types of tutorials everywhere but I cannot find one, they are hard to understand and/or it does not exist. The popular zombie mod had a buymenu like "AK-47" and then another AK-47 under it from CSO with price for cash which you could get from killing zombies or zombies killing humans.
I have a .wav music of Antidote but when I use the antidote, the sound goes for 1.25+- sec and then it stops automatically, which means it does not play full sound.
I posted a .sma file of this knockback plugin here, if you do not mind, please take a look at it. Thanks forward for ANY of your replies, I appreciate them.
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <zombieplague>
#define CUSTOM_MODELS 1
#define MAX_KNIFE_SNDS 9
#if (CUSTOM_MODELS)
new MODEL_PLAYER[] = "models/p_knife_kpecT.mdl"
#endif
#define PLUGIN "Knife Knockback"
#define VERSION "3.0"
#define AUTHOR "CHyC"
new cvar_knife , cvar_knock , cvar_jump , cvar_survivor , cvar_sounds;
new const knife_sounds[][] =
{
"zombie_plague/knife_deploy1.wav",
"zombie_plague/knife_hit1.wav",
"zombie_plague/knife_hit2.wav",
"zombie_plague/knife_hit3.wav",
"zombie_plague/knife_hit4.wav",
"zombie_plague/knife_hitwall1.wav",
"zombie_plague/knife_slash1.wav",
"zombie_plague/knife_slash2.wav",
"zombie_plague/knife_stab.wav"
}
new const oldknife_sounds[][] =
{
"weapons/knife_deploy1.wav",
"weapons/knife_hit1.wav",
"weapons/knife_hit2.wav",
"weapons/knife_hit3.wav",
"weapons/knife_hit4.wav",
"weapons/knife_hitwall1.wav",
"weapons/knife_slash1.wav",
"weapons/knife_slash2.wav",
"weapons/knife_stab.wav"
}
public plugin_init()
{
register_plugin(PLUGIN , VERSION , AUTHOR);
register_cvar("zp_knife", VERSION, FCVAR_SERVER);
register_event("Damage" , "event_Damage" , "b" , "2>0");
register_event( "CurWeapon", "Event_CurWeapon", "be", "1=1" );
register_forward(FM_EmitSound, "fw_EmitSound");
cvar_knife = register_cvar("zp_knife_knock" , "1");
cvar_knock = register_cvar("zp_knife_power" , "10");
cvar_jump = register_cvar("zp_knife_jump", "350.0");
cvar_survivor = register_cvar("zp_knife_survivor" , "1");
cvar_sounds = register_cvar("zp_knife_sound" , "1");
}
public event_Damage(id)
{
if(!get_pcvar_num(cvar_knife))
return PLUGIN_CONTINUE;
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
if(zp_get_user_survivor(id) && get_pcvar_num(cvar_survivor) == 0)
return PLUGIN_CONTINUE;
new weapon , attacker = get_user_attacker(id , weapon);
if(!is_user_alive(attacker))
return PLUGIN_CONTINUE;
if(weapon == CSW_KNIFE)
{
new Float:vec[3];
new Float:oldvelo[3];
get_user_velocity(id, oldvelo);
create_velocity_vector(id , attacker , vec);
vec[0] += oldvelo[0];
vec[1] += oldvelo[1];
set_user_velocity(id , vec);
}
return PLUGIN_CONTINUE;
}
public Event_CurWeapon( id )
{
if (!is_user_connected(id) || !is_user_alive(id) || zp_get_user_zombie(id))
return PLUGIN_CONTINUE
new WeaponID = read_data(2)
if (WeaponID != CSW_KNIFE)
return PLUGIN_CONTINUE
#if (CUSTOM_MODELS)
entity_set_string(id, EV_SZ_weaponmodel, MODEL_PLAYER)
#endif
return PLUGIN_CONTINUE;
}
stock create_velocity_vector(victim,attacker,Float:velocity[3])
{
if(!zp_get_user_zombie(victim) || !is_user_alive(attacker))
return 0;
new Float:vicorigin[3];
new Float:attorigin[3];
entity_get_vector(victim , EV_VEC_origin , vicorigin);
entity_get_vector(attacker , EV_VEC_origin , attorigin);
new Float:origin2[3]
origin2[0] = vicorigin[0] - attorigin[0];
origin2[1] = vicorigin[1] - attorigin[1];
new Float:largestnum = 0.0;
if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]);
if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]);
origin2[0] /= largestnum;
origin2[1] /= largestnum;
velocity[0] = ( origin2[0] * (get_pcvar_float(cvar_knock) * 3000) ) / get_entity_distance(victim , attacker);
velocity[1] = ( origin2[1] * (get_pcvar_float(cvar_knock) * 3000) ) / get_entity_distance(victim , attacker);
if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(200.0 , 275.0);
return 1;
}
public plugin_precache()
{
for(new i = 0; i < sizeof knife_sounds; i++)
precache_sound(knife_sounds)
#if (CUSTOM_MODELS)
precache_model(MODEL_PLAYER)
#endif
}
public fw_EmitSound(id, channel, const sound[])
{
if(!is_user_alive(id) || zp_get_user_zombie(id) || zp_get_user_survivor(id) || !get_pcvar_num(cvar_sounds))
return FMRES_IGNORED
for(new i = 0; i < sizeof knife_sounds; i++)
{
if(equal(sound, oldknife_sounds))
{
emit_sound(id, channel, knife_sounds, 1.0, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public client_PreThink(id)
{
if (!is_user_connected(id) || !is_user_alive(id) || zp_get_user_zombie(id))
return PLUGIN_CONTINUE
new temp[2], weapon = get_user_weapon(id, temp[0], temp[1])
if (weapon != CSW_KNIFE)
return PLUGIN_CONTINUE
if ((get_user_button(id) & IN_JUMP) && !(get_user_oldbutton(id) & IN_JUMP))
{
new flags = entity_get_int(id, EV_INT_flags)
new waterlvl = entity_get_int(id, EV_INT_waterlevel)
if (!(flags & FL_ONGROUND))
return PLUGIN_CONTINUE
if (flags & FL_WATERJUMP)
return PLUGIN_CONTINUE
if (waterlvl > 1)
return PLUGIN_CONTINUE
new Float:fVelocity[3]
entity_get_vector(id, EV_VEC_velocity, fVelocity)
fVelocity[2] += get_pcvar_num(cvar_jump)
entity_set_vector(id, EV_VEC_velocity, fVelocity)
entity_set_int(id, EV_INT_gaitsequence, 6)
}
return PLUGIN_CONTINUE;
}