Raised This Month: $51 Target: $400
 12% 

Subplugin Submission [ZP] Class : Thermal Zombie


Post New Thread Reply   
 
Thread Tools Display Modes
Synceed
Junior Member
Join Date: Apr 2016
Old 07-02-2016 , 12:17   Re: [ZP] Class : Thermal Zombie
Reply With Quote #21

What about the asassin what about the nemesis ? if i choose thermal zombie and i get assasin i still can see through walls and is over power for the assasin so somebody can fix it please ?
Synceed is offline
n3Oh112
Junior Member
Join Date: Dec 2017
Old 01-19-2018 , 15:04   Re: [ZP] Class : Thermal Zombie
Reply With Quote #22

Hello guys.
Code:
#include <amxmodx>
#include <engine>
#include <xs>
#include <zombieplague>

new Float:g_fDelay[33]
new g_ThermalOn[33]
new sprite_playerheat

new cvar_enable
new cvar_maxdistance
new cvar_updatedelay

new g_zclass_thermal

// Thermal Zombie Atributes
new const zclass_name[] = { "Thermal" } // name
new const zclass_info[] = { "Looks through walls" } // description
new const zclass_model[] = { "zombie_source" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
const zclass_health = 1800 // health
const zclass_speed = 240 // speed
const Float:zclass_gravity = 1.0 // gravity
const Float:zclass_knockback = 1.5 // knockback

static const PLUGIN_NAME[]     = "Thermal Zombie"
static const PLUGIN_AUTHOR[]     = "Cheap_Suit"
static const PLUGIN_VERSION[]    = "1.0"

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar(PLUGIN_NAME, PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER)
    
    cvar_enable     = register_cvar("amx_tig_enable",     "1")
    cvar_maxdistance = register_cvar("amx_tig_distance",     "600")
    cvar_updatedelay = register_cvar("amx_tig_updatedelay", "0.2")
    
    register_event("NVGToggle", "Event_NVGToggle", "be")
}

public plugin_precache()
{
    sprite_playerheat = precache_model("sprites/poison.spr")
    g_zclass_thermal = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public Event_NVGToggle(id)
    g_ThermalOn[id] = read_data(1)

public client_PostThink(id)
{
    if(!is_user_alive(id) || !zp_get_user_zombie(id)) return PLUGIN_CONTINUE
    if(zp_get_user_zombie_class(id) != g_zclass_thermal) return PLUGIN_CONTINUE
        
    if((g_fDelay[id] + get_pcvar_float(cvar_updatedelay)) > get_gametime())
        return PLUGIN_CONTINUE
    
    g_fDelay[id] = get_gametime()
    
    new Float:fMyOrigin[3]
    entity_get_vector(id, EV_VEC_origin, fMyOrigin)
    
    static Players[32], iNum
    get_players(Players, iNum, "a")
    for(new i = 0; i < iNum; ++i) if(id != Players[i])
    {
        new target = Players[i]
        
        if (!zp_get_user_zombie(target))
        {
        new Float:fTargetOrigin[3]
        entity_get_vector(target, EV_VEC_origin, fTargetOrigin)
        
        if((get_distance_f(fMyOrigin, fTargetOrigin) > get_pcvar_num(cvar_maxdistance)) 
        || !is_in_viewcone(id, fTargetOrigin))
            continue

        new Float:fMiddle[3], Float:fHitPoint[3]
        xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle)
        trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint)
                                
        new Float:fWallOffset[3], Float:fDistanceToWall
        fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0
        normalize(fMiddle, fWallOffset, fDistanceToWall)
        
        new Float:fSpriteOffset[3]
        xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset)
        new Float:fScale, Float:fDistanceToTarget = vector_distance(fMyOrigin, fTargetOrigin)
        if(fDistanceToWall > 100.0)
            fScale = 8.0 * (fDistanceToWall / fDistanceToTarget)
        else
            fScale = 2.0
    
        te_sprite(id, fSpriteOffset, sprite_playerheat, floatround(fScale), 125)
        }
    }
    return PLUGIN_CONTINUE
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
    message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
    write_byte(TE_SPRITE)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2]))
    write_short(sprite)
    write_byte(scale) 
    write_byte(brightness)
    message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul)
{
    new Float:fLen = xs_vec_len(fIn)
    xs_vec_copy(fIn, fOut)
    
    fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
    fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}
How can i use this zombie class for zombie plague xp?
I want to use this class for level 2.

Last edited by n3Oh112; 01-19-2018 at 15:04.
n3Oh112 is offline
Undercloacked
Member
Join Date: Jun 2012
Old 01-23-2018 , 11:00   Re: [ZP] Class : Thermal Zombie
Reply With Quote #23

Good job, works as expected!
Undercloacked is offline
Reply



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 15:51.


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