Raised This Month: $ Target: $400
 0% 

Entity [ Block Player ]


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
MayroN
Senior Member
Join Date: Aug 2017
Location: Kyiv
Old 02-12-2020 , 12:57   Entity [ Block Player ]
Reply With Quote #1

Please help to ban to install Entity model on players
The Ability Of A Zombie.Install only the ceiling of Entity.There's nowhere else to put it.
But for some reason there is no ban on players.
I'm doing everything.
Thanks.



Model setting function
PHP Code:
public create_barnacle(id)
{
    if (
g_barnacleCount[id] > 0)
    {
        new 
origin[3], Float:fOrigin[3]
        
get_user_origin(idorigin3)
        
IVecFVec(originfOrigin)
        
        
fOrigin[2] -= 2.0
        
new const Float:direction[4][3] = {{5.00.00.0}, {-5.00.00.0}, {0.05.00.0}, {0.0, -5.00.0}}
        new 
Float:temp[3]
        
xs_vec_copy(fOrigintemp)
        new 
i
        
for (04i++)
        {
            
xs_vec_add(fOrigindirection[i], temp)
            if (
engfunc(EngFunc_PointContentstemp) != -1)
                break
        }
        
        if (
!= 4)
            
client_print(idprint_center"Эту Ловушку нужно ставить на потолок !")
        else
        {
            
fOrigin[2] += 2.0
            
new ent engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
        
            
set_pev(ent,pev_classnamebarnacle_class)
            
engfunc(EngFunc_SetModelent"models/zp_trap/zp_trap2.mdl")
         
            
set_pev(entpev_iuser1id)
         
            
set_pev(entpev_minsFloat:{-16.0,-16.0, -36.0})
            
set_pev(entpev_maxsFloat:{16.0,16.0,0.0})
            
set_pev(entpev_sizeFloat:{-16.0,-16.0, -36.0,16.0,16.0,0.0})
            
engfunc(EngFunc_SetSizeentFloat:{-16.0,-16.0,-36.0}, Float:{16.0,16.0,0.0})
            
            
set_pev(entpev_solidSOLID_BBOX)
            
set_pev(entpev_movetypeMOVETYPE_FLY)
        
            
set_pev(entpev_healthget_pcvar_float(g_CvarHP) + HEALTH_OFFSET)
            
set_pev(entpev_takedamage1.0)
        
            
set_pev(entpev_dmg1.0)
        
            
set_pev(entpev_maxspeed20.0)
        
            
set_pev(ent,pev_flagsFL_MONSTER|FL_MONSTERCLIP)
        
            
set_pev(entpev_originfOrigin)
            
            
set_pev(entpev_animtime10.0)
            
set_pev(entpev_framerate0.5)
            
set_pev(entpev_sequenceidle3)
            
set_pev(entpev_gaitsequenceidle3)
            
            
set_pev(entpev_nextthink,get_gametime() + THINK_DELAY)
            
            
g_barnacleCount[id]--

            
client_print(idprint_center"Осталось Ловушек : %d"g_barnacleCount[id])
        }
    }
    else
        
client_print(idprint_center"Больше нет Ловушек !")

All code
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
#include <fun>
#include <xs>
#include <zombieplague>

#define TASK_COOLDOWN 27015
#define TASK_REMOVE_TRAP 37015

#define HEALTH_OFFSET 500
#define THINK_DELAY 0.1

enum
{
    
idle1,
    
idle2,
    
idle3,
    
flinch_sm,
    
attack1,
    
chewcycle,
    
death
}

enum (+= 666)
{
    
TASK_BOT_USE_SKILL
}

#define ID_BOT_USE_SKILL (taskid - TASK_BOT_USE_SKILL)

new const zclass_name[] = { "Отродие" 
new const 
zclass_info[] = { "Ловушки" 
new const 
zclass_model[] = { "zombie_zaraza" 
new const 
zclass_clawmodel[] = { "v_cutit_nemesis.mdl" }
const 
zclass_health 5000
const zclass_speed 260
const Float:zclass_gravity 0.8 
const Float:zclass_knockback 1.0 

new const barnacle_class[] = "barnacle"
new g_mdl_gib_head

new g_CvarSpeedg_CvarDamageg_CvarHPg_CvarInfect

new g_msgScreenFade

new g_barnacleCount[33]

new 
g_zheavy
new bool:can_make_trap[33]
new 
bool:player_trapped[33]

new const 
trap_string[] = "trap"
new const trap_model[] = "models/zp_trap/zp_trap.mdl"

new cvar_cooldown
new cvar_trap_hp
new cvar_trap_time

public plugin_init()
{
    
register_plugin("[ZP] Zombie Class: Heavy""1.2""Dias")
    
register_event("HLTV""eventFreezeTimeStart""a""1=0""2=0")
    
register_event("ResetHUD""new_round""be")
    
register_touch(trap_string"*""fw_touch")
    
register_forward(FM_PlayerPreThink"fw_think"0);
        
register_forward(FM_PlayerPreThink"CmdStart")
    
register_forward(FM_Think"fwdThink")

    
g_CvarSpeed register_cvar("barnacle_speed""20.0")
    
g_CvarDamage register_cvar("barnacle_damage""30.0")
    
g_CvarHP register_cvar("barnacle_hp""2000.0")
    
g_CvarInfect register_cvar("barnacle_infect""1")

    
register_logevent("logevent_round_start",2"1=Round_Start")
    
g_msgScreenFade get_user_msgid("ScreenFade")

    
cvar_register()
}

public 
cvar_register()
{
    
cvar_cooldown register_cvar("qz_cooldown""25")
    
cvar_trap_time register_cvar("qz_trap_time""15")
    
cvar_trap_hp register_cvar("qz_trap_hp""2000")
}

public 
plugin_precache()
{
    
g_zheavy zp_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback)    
    
precache_model(trap_model)
    
precache_model("models/zp_trap/zp_trap2.mdl")
    
    
precache_sound("zp_trap/bcl_alert2.wav")
    
precache_sound("zp_trap/bcl_chew1.wav")
    
precache_sound("zp_trap/bcl_chew2.wav")
    
precache_sound("zp_trap/bcl_chew3.wav")
    
precache_sound("zp_trap/bcl_die1.wav" )
    
precache_sound("zp_trap/bcl_die3.wav" )
    
    
g_mdl_gib_head precache_model("models/GIB_Skull.mdl")
}

public 
logevent_round_start()
{
    for (new 
id=1id<33id++)
    {
        if (!
is_user_connected(id)) continue;
        if (
is_user_bot(id))
        {
            if (
task_exists(id+TASK_BOT_USE_SKILL)) remove_task(id+TASK_BOT_USE_SKILL)
            
set_task(float(random_num(5,15)), "bot_use_skill"id+TASK_BOT_USE_SKILL)
        }
    }
}

// bot use skill
public bot_use_skill(taskid)
{
    new 
id ID_BOT_USE_SKILL
    
if (!is_user_alive(id)) return;
    if (!
is_user_bot(id) ||  !zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id)) return;

        if (
zp_get_user_zombie_class(id) == g_zheavy)

        switch(
random_num(0,2))
        {
        case 
0create_trap(id)
        case 
1create_barnacle(id)
        }      
        
    if (
task_exists(taskid)) remove_task(taskid)
    
set_task(float(random_num(5,15)), "bot_use_skill"id+TASK_BOT_USE_SKILL)
}

public 
CmdStart(id)
{        
    new 
button pev(idpev_button)
    new 
oldbutton pev(idpev_oldbuttons)
    
    if (
zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && (zp_get_user_zombie_class(id) == g_zheavy))
    {
        if(
oldbutton IN_RELOAD && !(button IN_RELOAD))
        {
                        
create_barnacle(id)
                }
        if(
oldbutton IN_USE && !(button IN_USE))
        {
        if(
can_make_trap[id])
        {
            
create_trap(id)
            } else {
                
print_chatColor(id"\g[ Зомби Чума ] \tЛовушка будет доступна через \g%i секунд"get_pcvar_num(cvar_cooldown)) 
        }
        }
    }
    return 
FMRES_IGNORED
}

public 
fwdThink(ent)
{
    if (!
pev_valid(ent))
        return
    static class[
32]
    
pev(entpev_classname, class, 31)
    if (
equal(barnacle_class, class))
    {
        
        static 
Float:takedamageFloat:origin[3], Float:endPoint[3], Float:gametimetrhit
        pev
(entpev_takedamagetakedamage)
        if (
pev(entpev_health) - HEALTH_OFFSET <= && takedamage == DAMAGE_YES)
        {
            
set_pev(entpev_animtime6.6)
            
set_pev(ent,pev_framerate1.0)
            
set_pev(ent,pev_sequencedeath)
            
            
set_pev(entpev_takedamageDAMAGE_NO)
            
set_pev(entpev_controller_0255)
            
set_pev(entpev_nextthinkget_gametime() + 99999.0)
            
            
set_pev(entpev_solidSOLID_NOT)
            
            switch(
random_num(01))
            {
                case 
0:
                    
engfunc(EngFunc_EmitSoundentCHAN_WEAPON"zp_trap/bcl_die1.wav"1.0ATTN_NORM0PITCH_NORM)
                case 
1:
                    
engfunc(EngFunc_EmitSoundentCHAN_WEAPON"zp_trap/bcl_die3.wav"1.0ATTN_NORM0PITCH_NORM)
            }
            
            
pev(entpev_originorigin)
            
createGibs(origin)
            return            
        }
        else
        if (!
pev(ent,pev_enemy) && takedamage == DAMAGE_YES)
        {
            
            
pev(entpev_originorigin)
            
xs_vec_copy(originendPoint)
            
endPoint[2]-=2048.0
            engfunc
(EngFunc_TraceLineoriginendPointDONT_IGNORE_MONSTERSenttr)
            
hit get_tr2(trTR_pHit)
            if (
is_user_alive(hit)  && !zp_get_user_zombie(hit))
            {
                
set_pev(entpev_enemyhit)
                
set_pev(entpev_sequencechewcycle)
                
set_pev(entpev_gaitsequencechewcycle)
                                
screen_fade(hit)
                
engfunc(EngFunc_EmitSoundentCHAN_WEAPON"zp_trap/bcl_alert2.wav"1.0ATTN_NORM0PITCH_NORM)
            }
            else
            if (!
pev(entpev_controller_0))
            {
                
get_tr2(trTR_vecEndPosendPoint)
                
set_pev(entpev_controller_0281 floatround(255.0 1024.0 * (origin[2] - endPoint[2])))
            }
            
free_tr2(tr)
                            
        }
        else
        if (
takedamage == DAMAGE_YES)
        {
            static 
idFloat:distanceFloat:flNextAttackTime
            id 
pev(ent,pev_enemy)
            if (
is_user_alive(id))
            {
                
pev(entpev_originorigin)
                
pev(idpev_originendPoint)
                
distance origin[2] - endPoint[2]
                if (
distance 100.0)
                {
                    
endPoint[0] = origin[0]
                    
endPoint[1] = origin[1]
                    
endPoint[2] += get_pcvar_float(g_CvarSpeed)
                    
set_pev(idpev_originendPoint)
                    
set_pev(entpev_controller_0261 floatround(255.0 1024.0 distance))
                }
                else
                {
                    if (
get_pcvar_num(g_CvarInfect) && !(
                        
zp_get_user_last_human(id) ||
                        
zp_get_user_survivor(id) ||
                        
zp_is_survivor_round() || 
                        
zp_is_swarm_round()
                    ))
                    {
                        
zp_infect_user(idpev(entpev_iuser1), 01)
                        
release(ent)
                        
                    }
                    else
                    {
                        
pev(entpev_fuser1flNextAttackTime)
                        
gametime get_gametime()
                        if (
flNextAttackTime <= gametime)
                        {
                            
ExecuteHamB(Ham_TakeDamageidentpev(entpev_iuser1), get_pcvar_float(g_CvarDamage), DMG_GENERIC)
                            
set_pev(entpev_fuser1gametime 1.0)
                            
                            switch(
random_num(02))
                            {
                                case 
0:
                                    
engfunc(EngFunc_EmitSoundentCHAN_WEAPON"zp_trap/bcl_chew1.wav"1.0ATTN_NORM0PITCH_NORM)
                                case 
1:
                                    
engfunc(EngFunc_EmitSoundentCHAN_WEAPON"zp_trap/bcl_chew2.wav"1.0ATTN_NORM0PITCH_NORM)
                                case 
2:
                                    
engfunc(EngFunc_EmitSoundentCHAN_WEAPON"zp_trap/bcl_chew3.wav"1.0ATTN_NORM0PITCH_NORM)    
                            }
                        }
                        if (
pev(ent,pev_sequence) != attack1)
                        {
                            
set_pev(ent,pev_sequenceattack1)
                            
set_pev(ent,pev_gaitsequenceattack1)
                            
set_pev(entpev_controller_0255)
                        }
                    }
                }
                
set_pev(idpev_velocityFloat:{0.00.00.0})
            }
            else
                
release(ent)
            
        }
        
set_pev(entpev_nextthinkget_gametime() + THINK_DELAY)
    }
}

public 
create_barnacle(id)
{
    if (
g_barnacleCount[id] > 0)
    {
        new 
origin[3], Float:fOrigin[3]
        
get_user_origin(idorigin3)
        
IVecFVec(originfOrigin)
        
        
fOrigin[2] -= 2.0
        
new const Float:direction[4][3] = {{5.00.00.0}, {-5.00.00.0}, {0.05.00.0}, {0.0, -5.00.0}}
        new 
Float:temp[3]
        
xs_vec_copy(fOrigintemp)
        new 
i
        
for (04i++)
        {
            
xs_vec_add(fOrigindirection[i], temp)
            if (
engfunc(EngFunc_PointContentstemp) != -1)
                break
        }
        
        if (
!= 4)
            
client_print(idprint_center"Эту Ловушку нужно ставить на потолок !")
        else
        {
            
fOrigin[2] += 2.0
            
new ent engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
        
            
set_pev(ent,pev_classnamebarnacle_class)
            
engfunc(EngFunc_SetModelent"models/zp_trap/zp_trap2.mdl")
         
            
set_pev(entpev_iuser1id)
         
            
set_pev(entpev_minsFloat:{-16.0,-16.0, -36.0})
            
set_pev(entpev_maxsFloat:{16.0,16.0,0.0})
            
set_pev(entpev_sizeFloat:{-16.0,-16.0, -36.0,16.0,16.0,0.0})
            
engfunc(EngFunc_SetSizeentFloat:{-16.0,-16.0,-36.0}, Float:{16.0,16.0,0.0})
            
            
set_pev(entpev_solidSOLID_BBOX)
            
set_pev(entpev_movetypeMOVETYPE_FLY)
        
            
set_pev(entpev_healthget_pcvar_float(g_CvarHP) + HEALTH_OFFSET)
            
set_pev(entpev_takedamage1.0)
        
            
set_pev(entpev_dmg1.0)
        
            
set_pev(entpev_maxspeed20.0)
        
            
set_pev(ent,pev_flagsFL_MONSTER|FL_MONSTERCLIP)
        
            
set_pev(entpev_originfOrigin)
            
            
set_pev(entpev_animtime10.0)
            
set_pev(entpev_framerate0.5)
            
set_pev(entpev_sequenceidle3)
            
set_pev(entpev_gaitsequenceidle3)
            
            
set_pev(entpev_nextthink,get_gametime() + THINK_DELAY)
            
            
g_barnacleCount[id]--

            
client_print(idprint_center"Осталось Ловушек : %d"g_barnacleCount[id])
        }
    }
    else
        
client_print(idprint_center"Больше нет Ловушек !")
}

public 
eventFreezeTimeStart()
{
    static 
string_class[] = "classname"
    
new ent FM_NULLENT
    
while ((ent engfunc(EngFunc_FindEntityByStringentstring_classbarnacle_class))) 
        
set_pev(entpev_flagsFL_KILLME)
    new 
i
    
for (033i++)
        
g_barnacleCount[i] = 0
}

public 
createGibs(Float:origin[3])
{
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(TE_MODEL)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[2]-40.0)
    
write_coord(random_num(-2020))
    
write_coord(random_num(-2020))
    
write_coord(random_num(-200))
    
write_angle(random_num(0,360))
    
write_short(g_mdl_gib_head)
    
write_byte(0)
    
write_byte(400)
    
message_end()
}

public 
release(ent)
{
    new 
Float:origin[3], Float:endPoint[3], tr
    set_pev
(entpev_enemy0)
                
    
pev(entpev_originorigin)
    
xs_vec_copy(originendPoint)
    
endPoint[2]-=2048.0
    engfunc
(EngFunc_TraceLineoriginendPointIGNORE_MONSTERSenttr)
    
    
get_tr2(trTR_vecEndPosendPoint)
    
free_tr2(tr)
    
set_pev(entpev_controller_0281 floatround(255.0 1024.0 * (origin[2] - endPoint[2])))
    
    
set_pev(entpev_animtime10.0)
    
set_pev(entpev_framerate0.5)
    
set_pev(entpev_sequenceidle3)
    
set_pev(entpev_gaitsequenceidle3)
    
    
free_tr2(tr)
}

public 
new_round(id)
{
    new 
trap find_ent_by_class(0trap_string)
    
remove_entity(trap)
    
    
can_make_trap[id] = false
    player_trapped
[id] = false
    
    set_user_maxspeed
(id, -1.0)
    
set_user_gravity(id1.0)
    
    
remove_task(id+TASK_COOLDOWN)
    
remove_task(id+TASK_REMOVE_TRAP)
}

public 
zp_user_infected_post(idattacker)
{
    if(
zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && zp_get_user_zombie_class(id) == g_zheavy)
    {
        
remove_task(id+TASK_COOLDOWN)
        
print_chatColor(id"\g[ Зомби Чума ] \tНаземная Ловушка - \gE \tНастенная Ловушка - \gR"
                
g_barnacleCount[id] += 10
        can_make_trap
[id] = true
    
}
    
    if(
player_trapped[id] == true)
    {
        
player_trapped[id] = false
        
        
new trap find_ent_by_class(0trap_string)
        
remove_entity(trap)
        
        
remove_task(id+TASK_REMOVE_TRAP)
    }
}

public 
create_trap(id)
{
    new 
Float:Origin[3]
    
entity_get_vector(idEV_VEC_originOrigin)
    
    
Origin[2] -= 35.0
    
    
new trap create_entity("info_target")
    
entity_set_vector(trapEV_VEC_originOrigin)
    
    
entity_set_float(trapEV_FL_takedamage1.0)
    
entity_set_float(trapEV_FL_healthget_pcvar_float(cvar_trap_hp))
    
    
entity_set_string(trapEV_SZ_classnametrap_string)
    
entity_set_model(traptrap_model)    
    
entity_set_int(trapEV_INT_solid1)
    
    
entity_set_byte(trap,EV_BYTE_controller1,125);
    
entity_set_byte(trap,EV_BYTE_controller2,125);
    
entity_set_byte(trap,EV_BYTE_controller3,125);
    
entity_set_byte(trap,EV_BYTE_controller4,125);
    
    new 
Float:size_max[3] = {5.0,5.0,5.0}
    new 
Float:size_min[3] = {-5.0,-5.0,-5.0}
    
entity_set_size(trapsize_minsize_max)    
    
    
drop_to_floor(trap)
    
    
can_make_trap[id] = false
    set_task
(get_pcvar_float(cvar_cooldown), "reset_cooldown"id+TASK_COOLDOWN)
}

public 
reset_cooldown(taskid)
{
    new 
id taskid TASK_COOLDOWN
    
if(is_user_alive(id) && zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zheavy)
    {
        if(
can_make_trap[id] == false)
        {
            
can_make_trap[id] = true
                print_chatColor
(id"\g[ Зомби Чума ] \tЛовушка Доступна"
        }
    }    
}

public 
fw_touch(trapid)
{
    if(!
pev_valid(trap))
        return    
    
    if(
is_user_alive(id) && !zp_get_user_zombie(id))
    {
                
client_print(idprint_center"Вы попали в Ловушку ! Подождите ...")
                
screen_fade(id)

        new 
ent find_ent_by_class(0trap_string)
                
entity_set_string(trapEV_SZ_classnametrap_string)
                
set_pev(entpev_sequence1)
                
set_pev(entpev_animtime15.0)
                
set_pev(entpev_framerate1.0)

        
        
player_trapped[id] = true
        set_task
(get_pcvar_float(cvar_trap_time), "remove_trap"id+TASK_REMOVE_TRAP)
    }
}

public 
remove_trap(taskid)
{
    new 
id taskid TASK_REMOVE_TRAP
    
    set_user_maxspeed
(id, -1.0)
    
set_user_gravity(id1.0)
    
player_trapped[id] = false

    
new trap find_ent_by_class(0trap_string)
    
remove_entity(trap)
    
    
remove_task(id+TASK_REMOVE_TRAP)
}

public 
spawn_post(id)
{
    if(
is_user_alive(id))
    {
        
player_trapped[id] = false 
    
}
}  

public 
fw_think(id)
{
    if(
is_user_alive(id) && player_trapped[id] == true)
    {
        
set_user_maxspeed(id0.1)
        
set_user_gravity(id10000.0)
    }
}

public 
screen_fade(id) {
    
message_begin(MSG_ONEg_msgScreenFade, {0,0,0}, id
    
write_short(1<<12)
    
write_short(1<<12)
    
write_short(1<<12)
    
write_byte(0)
    
write_byte(200)
    
write_byte(0)
    
write_byte(20)
    
message_end()
}

stock print_chatColor(id,const input[], any:...)
{
    new 
msg[191], players[32], count 1;
    
vformat(msg,190,input,3);
    
replace_all(msg,190,"\g","^4");// green
    
replace_all(msg,190,"\n","^1");// normal
    
replace_all(msg,190,"\t","^3");// team
    
    
if (idplayers[0] = id; else get_players(players,count,"ch");
    for (new 
i=0;i<count;i++)
    if (
is_user_connected(players[i]))
    {
        
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
        
write_byte(players[i]);
        
write_string(msg);
        
message_end();
    }


Last edited by MayroN; 02-13-2020 at 16:19.
MayroN is offline
Send a message via ICQ to MayroN Send a message via Skype™ to MayroN
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 01:12.


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