Senior Member
Join Date: Aug 2013
Location: Brazil
|
08-24-2023
, 23:54
Re: Zombie Plague Special 4.5 [Patch v1] (12 March 2022)
|
#190
|
Quote:
Originally Posted by Rainq
there is a problem, when I use this zm and use space to jump I stay in the air with 0 gravity while the ability is active
I tested on several addons, only here I found this problem
Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <fakemeta>
#include <zombie_plague_special>
#include <hamsandwich>
#define PLUGIN "[ZP] Class Predator"
#define VERSION "1.0"
#define AUTHOR "TEo"
//Some vars
new g_zclass_Predator, g_maxplayers, g_status
new g_sndInv[] = "predator/predator.wav"
new cvar_ability_time, cvar_invamount, cvar_speed, cvar_infect_hp, cvar_cooldown, cvar_gravity, cvar_icon, cvar_dmg_multi
new Float:g_last[33]
new g_icon[33][16]
new bool: g_ability[33]
//Predator Atributes
new const zclass_name[] = { "PredatoR Creature" }
new const zclass_info[] = { "[T]" }
new const zclass_model[] = { "thexforce_predator" }
new const zclass_clawmodel[] = { "v_thexforce_predator.mdl" }
const zclass_health = 15600
const zclass_speed = 308
const Float:zclass_gravity = 0.6
const Float:zclass_knockback = 3.0
public plugin_init()
{
cvar_dmg_multi = register_cvar("zp_predator_dmg_multi", "5.0")
cvar_ability_time = register_cvar("zp_Predator_ability_long", "10")
cvar_invamount = register_cvar("zp_Predator_visible_amount", "0")
cvar_speed = register_cvar("zp_Predator_max_speed", "309")
cvar_infect_hp = register_cvar("zp_Predator_infect_hp", "1000")
cvar_cooldown = register_cvar("zp_Predator_cooldown", "10")
cvar_gravity = register_cvar("zp_Predator_gravity", "500")
cvar_icon = register_cvar("zp_Predator_icon", "1")
register_forward(FM_PlayerPreThink, "fw_ppt")
register_event("HLTV", "newround", "a", "1=0", "2=0")
register_event("DeathMsg", "death", "a")
RegisterHam( Ham_TakeDamage, "player", "fw_TakeDamage" )
g_status = get_user_msgid("StatusIcon")
}
public plugin_precache()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_zclass_Predator = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
precache_sound(g_sndInv)
}
public zp_user_infect_attempt(id, infector, nemesis)
{
if (zp_get_user_zombie_class(infector) == g_zclass_Predator)
{
set_pev(infector, pev_health, float(pev(infector, pev_health) + get_pcvar_num(cvar_infect_hp)))
}
if (zp_get_user_zombie_class(id) == g_zclass_Predator)
{
g_ability[id] = false
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 255)
set_user_maxspeed(id, float(zclass_speed))
set_user_gravity(id, zclass_gravity)
}
}
public zp_user_humanized_post(id)
if(zp_get_user_zombie_class(id) == g_zclass_Predator)
ability_end(id)
public ability(id)
{
if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_Predator))
{
if(g_ability[id])
{
return PLUGIN_HANDLED
}
if(!is_user_alive(id))
{
return PLUGIN_HANDLED
}
static Float: i
i = get_pcvar_float(cvar_cooldown)
if (get_gametime() - g_last[id] < i) {
return PLUGIN_HANDLED
} else {
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, get_pcvar_num(cvar_invamount))
set_user_maxspeed(id, get_pcvar_float(cvar_speed))
set_user_gravity(id, get_pcvar_float(cvar_gravity) / 800)
emit_sound(id, CHAN_BODY, g_sndInv, 1.0, ATTN_NORM, 0, PITCH_HIGH)
set_task(get_pcvar_float(cvar_ability_time), "ability_end", id)
if(get_pcvar_num(cvar_icon) == 1)
set_icon(id)
g_ability[id] = true
}
}
return PLUGIN_CONTINUE
}
public ability_end(id)
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 255)
set_user_maxspeed(id, float(zclass_speed))
set_user_gravity(id, zclass_gravity)
if (get_pcvar_num(cvar_cooldown) > 0)
if(get_pcvar_num(cvar_icon) == 1)
delete_icon(id)
g_last[id] = get_gametime()
g_ability[id] = false
}
public client_impulse(id, impulse)
{
if(impulse == 201)
{
if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zclass_Predator)
{
ability(id);
return PLUGIN_HANDLED;
}if (g_ability[id] && (zp_get_user_zombie_class(id) == g_zclass_Predator) && zp_get_user_zombie(id))
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, get_pcvar_num(cvar_invamount))
set_user_maxspeed(id, get_pcvar_float(cvar_speed))
set_pev(id, pev_flTimeStepSound, 999)
set_user_gravity(id, get_pcvar_float(cvar_gravity) / 800)
}
}
return PLUGIN_CONTINUE;
}
public newround()
{
g_maxplayers = get_maxplayers()
for (new id = 1; id <= g_maxplayers; id++)
{
g_last[id] = get_gametime()
g_ability[id] = false
}
}
public fw_TakeDamage( victim, inflictor, attacker, Float:damage, damagebits )
{
if ( (is_user_connected(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclass_Predator) && (get_user_weapon(attacker) == CSW_KNIFE) && zp_get_user_zombie(attacker))
{
SetHamParamFloat( 4, damage * get_pcvar_float(cvar_dmg_multi) )
}
}
public death()
{
new id = read_data(2)
ability_end(id)
return PLUGIN_HANDLED
}
public set_icon(id)
{
static color[3], sprite[16]
color = {250, 250, 250}
sprite = "dmg_gas"
g_icon[id] = sprite
message_begin(MSG_ONE, g_status, {0, 0, 0}, id)
write_byte(1)
write_string(g_icon[id])
write_byte(color[0])
write_byte(color[1])
write_byte(color[2])
message_end()
}
public delete_icon(id)
{
message_begin(MSG_ONE, g_status, {0, 0, 0}, id)
write_byte(0)
write_string(g_icon[id])
message_end()
}
|
Zombie Plague special have a speed, gravity and render natives, i changed to zp special natives, test this code below:
Code:
#include <amxmodx>
#include <amxmisc>
// #include <fun>
#include <fakemeta>
#include <zombie_plague_special>
#include <hamsandwich>
#define PLUGIN "[ZP] Class Predator"
#define VERSION "1.0"
#define AUTHOR "TEo"
//Some vars
new g_zclass_Predator, g_maxplayers, g_status
new g_sndInv[] = "predator/predator.wav"
new cvar_ability_time, cvar_invamount, cvar_speed, cvar_infect_hp, cvar_cooldown, cvar_gravity, cvar_icon, cvar_dmg_multi
new Float:g_last[33]
new g_icon[33][16]
new bool: g_ability[33]
//Predator Atributes
new const zclass_name[] = { "PredatoR Creature" }
new const zclass_info[] = { "[T]" }
new const zclass_model[] = { "thexforce_predator" }
new const zclass_clawmodel[] = { "v_thexforce_predator.mdl" }
const zclass_health = 15600
const zclass_speed = 308
const Float:zclass_gravity = 0.6
const Float:zclass_knockback = 3.0
public plugin_init()
{
cvar_dmg_multi = register_cvar("zp_predator_dmg_multi", "5.0")
cvar_ability_time = register_cvar("zp_Predator_ability_long", "10")
cvar_invamount = register_cvar("zp_Predator_visible_amount", "0")
cvar_speed = register_cvar("zp_Predator_max_speed", "309")
cvar_infect_hp = register_cvar("zp_Predator_infect_hp", "1000")
cvar_cooldown = register_cvar("zp_Predator_cooldown", "10")
cvar_gravity = register_cvar("zp_Predator_gravity", "500")
cvar_icon = register_cvar("zp_Predator_icon", "1")
register_forward(FM_PlayerPreThink, "fw_ppt")
register_event("HLTV", "newround", "a", "1=0", "2=0")
register_event("DeathMsg", "death", "a")
RegisterHam( Ham_TakeDamage, "player", "fw_TakeDamage" )
g_status = get_user_msgid("StatusIcon")
}
public plugin_precache()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_zclass_Predator = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
precache_sound(g_sndInv)
}
public zp_user_infected_post(id, infector)
{
if (zp_get_user_zombie_class(infector) == g_zclass_Predator)
{
set_pev(infector, pev_health, float(pev(infector, pev_health) + get_pcvar_num(cvar_infect_hp)))
}
if (zp_get_user_zombie_class(id) == g_zclass_Predator)
{
g_ability[id] = false
zp_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 255)
zp_set_user_maxspeed(id, float(zclass_speed))
zp_set_user_gravity(id, zclass_gravity)
}
}
public zp_user_humanized_post(id)
if(zp_get_user_zombie_class(id) == g_zclass_Predator)
ability_end(id);
public ability(id)
{
if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_Predator))
{
if(g_ability[id])
{
return PLUGIN_HANDLED
}
if(!is_user_alive(id))
{
return PLUGIN_HANDLED
}
static Float: i
i = get_pcvar_float(cvar_cooldown)
if (get_gametime() - g_last[id] < i) {
return PLUGIN_HANDLED
} else {
zp_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, get_pcvar_num(cvar_invamount))
zp_set_user_maxspeed(id, get_pcvar_float(cvar_speed))
zp_set_user_gravity(id, get_pcvar_float(cvar_gravity) / 800)
emit_sound(id, CHAN_BODY, g_sndInv, 1.0, ATTN_NORM, 0, PITCH_HIGH)
set_task(get_pcvar_float(cvar_ability_time), "ability_end", id)
if(get_pcvar_num(cvar_icon) == 1)
set_icon(id)
g_ability[id] = true
}
}
return PLUGIN_CONTINUE
}
public ability_end(id)
{
// zp_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 255)
// zp_set_user_maxspeed(id, float(zclass_speed))
// zp_set_user_gravity(id, zclass_gravity)
zp_reset_user_rendering(id)
zp_reset_user_maxspeed(id)
zp_reset_user_gravity(id)
// if (get_pcvar_num(cvar_cooldown) > 0)
if(get_pcvar_num(cvar_icon) == 1)
delete_icon(id)
g_last[id] = get_gametime()
g_ability[id] = false
}
public client_impulse(id, impulse)
{
if(impulse == 201)
{
if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zclass_Predator)
{
ability(id);
return PLUGIN_HANDLED;
}if (g_ability[id] && (zp_get_user_zombie_class(id) == g_zclass_Predator) && zp_get_user_zombie(id))
{
zp_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, get_pcvar_num(cvar_invamount))
zp_set_user_maxspeed(id, get_pcvar_float(cvar_speed))
set_pev(id, pev_flTimeStepSound, 999)
zp_set_user_gravity(id, get_pcvar_float(cvar_gravity) / 800)
}
}
return PLUGIN_CONTINUE;
}
public newround()
{
g_maxplayers = get_maxplayers()
for (new id = 1; id <= g_maxplayers; id++)
{
g_last[id] = get_gametime()
g_ability[id] = false
}
}
public fw_TakeDamage( victim, inflictor, attacker, Float:damage, damagebits )
{
if ( (is_user_connected(attacker)) && (zp_get_user_zombie_class(attacker) == g_zclass_Predator) && (get_user_weapon(attacker) == CSW_KNIFE) && zp_get_user_zombie(attacker))
{
SetHamParamFloat( 4, damage * get_pcvar_float(cvar_dmg_multi) )
}
}
public death()
{
new id = read_data(2)
ability_end(id)
return PLUGIN_HANDLED
}
public set_icon(id)
{
static color[3], sprite[16]
color = {250, 250, 250}
sprite = "dmg_gas"
g_icon[id] = sprite
message_begin(MSG_ONE, g_status, {0, 0, 0}, id)
write_byte(1)
write_string(g_icon[id])
write_byte(color[0])
write_byte(color[1])
write_byte(color[2])
message_end()
}
public delete_icon(id)
{
message_begin(MSG_ONE, g_status, {0, 0, 0}, id)
write_byte(0)
write_string(g_icon[id])
message_end()
}
__________________
|
|