Raised This Month: $ Target: $400
 0% 

Subplugin Submission Zombie Plague Special 4.5 [Patch v2] (03 September 2023)


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Perfect Scrash
Senior Member
Join Date: Aug 2013
Location: Brazil
Old 08-24-2023 , 23:54   Re: Zombie Plague Special 4.5 [Patch v1] (12 March 2022)
Reply With Quote #1

Quote:
Originally Posted by Rainq View Post
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()
}
__________________
Perfect Scrash is offline
Send a message via Skype™ to Perfect Scrash
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 00:17.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode