AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Entity [ Block Player ] (https://forums.alliedmods.net/showthread.php?t=321475)

MayroN 02-12-2020 12:57

Entity [ Block Player ]
 
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.

https://c.radikal.ru/c12/2002/91/75495b1c5b0at.jpg

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();
    }




All times are GMT -4. The time now is 04:55.

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