AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   i added zombie class sound but error (https://forums.alliedmods.net/showthread.php?t=312125)

Kvothe 11-17-2018 08:11

i added zombie class sound but error
 
Sma 1 is original and no problem is worked.
sma 2 ( my plugin ) i added sound my zombi class but error and no sounds
whats wrong ?

L 11/17/2018 - 16:02:28: [ZP] Invalid Player (134)
L 11/17/2018 - 16:02:28: [AMXX] Displaying debug trace (plugin "cso_class_zombi3.amxx")
L 11/17/2018 - 16:02:28: [AMXX] Run time error 10: native error (native "zp_get_user_zombie_class")

sma 2
PHP Code:

#include <amxmodx> 
#include <fakemeta> 
#include <zombieplague> 
#include <engine>
#include <fun>
#include <xs>

new const zclass_name[ ] = "zombi3"  
new const zclass_info[ ] = "zombie3" 
new const zclass_model[ ] = "zombi3" 
new const zclass_clawmodel[ ] = "v_zombie3.mdl"
new const g_vgrenade[] = "models/zombie_plague/v_bomb_zombi3.mdl"

const zclass_health 2500 
const zclass_speed 245

const Float:zclass_gravity 0.6
const Float:zclass_knockback 0.1

new const tank_knife_sounds[][] =
{
        
"weapons/knife_dep.wav",
        
"zm_sounds/zombie_tank/hit_normal_01.wav",
        
"zm_sounds/zombie_tank/hit_normal_02.wav",
        
"zm_sounds/zombie_tank/hit_normal_03.wav",
        
"zm_sounds/zombie_tank/miss_wall_01.wav",
        
"zm_sounds/zombie_tank/miss_wall_02.wav",
        
"zm_sounds/zombie_tank/miss_slash_01.wav",
        
"zm_sounds/zombie_tank/miss_slash_02.wav",
        
"zm_sounds/zombie_tank/hit_stab_01.wav",
        
"zm_sounds/zombie_tank/hit_stab_02.wav",
        
"zm_sounds/zombie_tank/hit_stab_03.wav"    
}

new 
g_iGhostClass ;
const 
UNIT_SECOND = (1<<12)

public 
plugin_init( ) 
{
    
register_plugin
    
(
        
"[ CSO ] Class Ghost" ,
        
"1.0",
        
"Shurik07/Death Stroke"
    
);
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_StartFrame"fw_StartFrame")
    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink")
    
register_forward(FM_Touch"fw_Touch")
    
register_forward(FM_Think"fw_Think")
    
register_forward(FM_EmitSound"fw_EmitSound")
    
register_event("CurWeapon""Event_CurrentWeapon""be""1=1")
}

public 
plugin_precache( ) 
{
    
g_iGhostClass zp_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback);
    
    
precache_model(g_vgrenade)
    
    for(new 
0sizeof tank_knife_soundsi++)
        
precache_sound(tank_knife_sounds[i])
}

public 
Event_CurrentWeapon(id)    
{
    new 
weaponID read_data(2)
    
    if(!
zp_get_user_zombie(id) || !is_user_alive(id) || zp_get_user_zombie_class(id) != g_iGhostClass)
        return 
PLUGIN_CONTINUE
    
    
if(weaponID == CSW_SMOKEGRENADE)
    {
        
set_pev(idpev_viewmodelengfunc(EngFunc_AllocStringg_vgrenade))
    }
    return 
PLUGIN_CONTINUE
}

public 
zp_round_ended ( ) 
{
    static 
iPlayer 
    for ( 
iPlayer 1iPlayer <= get_maxplayers( ); iPlayer++ )
    {
        
remove_taskiPlayer );
    }
}    

public 
zp_user_infected_postiPlayer iInfector iNemesis )
{
    if( 
zp_get_user_zombieiPlayer ) && zp_get_user_zombie_classiPlayer ) == g_iGhostClass &&
    !
zp_get_user_nemesisiPlayer ) )
    {
        
UTIL_ColorChatiPlayer "%L" iPlayer "CLASS_INFORMATION" );
        
remove_taskiPlayer ) ;
    }
}

stock UTIL_ColorChat(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
    
replace_all(msg190"!g""^4")
    
replace_all(msg190"!y""^1")
    
replace_all(msg190"!team""^3")
    
    if (
idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }


stock PlaySound(id, const sound[])
{
    if (
equal(sound[strlen(sound)-4], ".mp3"))
        
client_cmd(id"mp3 play ^"sound/%s^""sound)
    else
        
client_cmd(id"spk ^"%s^""sound)
}

stock UTIL_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)
{
    static 
Float:color[3];
    
color[0] = float(r);
    
color[1] = float(g);
    
color[2] = float(b);
    
    
set_pev(entitypev_renderfxfx);
    
set_pev(entitypev_rendercolorcolor);
    
set_pev(entitypev_rendermoderender);
    
set_pev(entitypev_renderamtfloat(amount));
}

public 
fw_EmitSound(idchannel, const sound[])
{        
        if(!
is_user_connected(id) && !zp_get_user_zombie(id))
            return 
FMRES_HANDLED;

    
    if(
zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_iGhostClass && !zp_get_user_nemesis(id))
    {
        for(new 
0sizeof tank_knife_soundsi++)
        {
            if(
equal(soundold_tank_knife_sounds[i]))
            {
                
emit_sound(idchanneltank_knife_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
        }
    }

    return 
FMRES_IGNORED;


original sma
PHP Code:

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <xs>
#include <zombieplague>

#define PLUGIN_NAME    "[ZP] Class: DaSu (2)"
#define PLUGIN_VERSION    "1.0"
#define PLUGIN_AUTHOR    "Jim"

#define SUPPORT_BOT_TO_USE        

#define TASK_SET_TRAP        1234
#define TASK_REMOVE_TRAP     4321

// Zombie Attributes
new const zclass_name[] = { "Tank" }    
new const 
zclass_info[] = { "[Traps]" }    
new const 
zclass_model[] = {"tank"}        
new const 
zclass_clawmodel[] = { "zp_knife_tank.mdl" }    
const 
zclass_health 4000        
const zclass_speed 250        
const Float:zclass_gravity 1.0        
const Float:zclass_knockback 0.8        

new const tank_knife_sounds[][] =
{
        
"weapons/knife_deploy1.wav",
        
"zm_sounds/zombie_tank/hit_normal_01.wav",
        
"zm_sounds/zombie_tank/hit_normal_02.wav",
        
"zm_sounds/zombie_tank/hit_normal_03.wav",
        
"zm_sounds/zombie_tank/hit_normal_04.wav",
        
"zm_sounds/zombie_tank/miss_wall_01.wav",
        
"zm_sounds/zombie_tank/miss_wall_02.wav",
        
"zm_sounds/zombie_tank/miss_wall_03.wav",
        
"zm_sounds/zombie_tank/miss_wall_04.wav",
        
"zm_sounds/zombie_tank/miss_slash_01.wav",
        
"zm_sounds/zombie_tank/miss_slash_02.wav",
        
"zm_sounds/zombie_tank/miss_slash_03.wav",
        
"zm_sounds/zombie_tank/hit_stab_01.wav",
        
"zm_sounds/zombie_tank/hit_stab_02.wav"
}

new const 
old_tank_knife_sounds[][] =
{
    
"weapons/knife_deploy1.wav",
    
"weapons/knife_hit1.wav",
    
"weapons/knife_hit2.wav",
    
"weapons/knife_hit3.wav",
    
"weapons/knife_hit4.wav",
    
"weapons/knife_hitwall1.wav",
    
"weapons/knife_hitwall1.wav",
    
"weapons/knife_hitwall1.wav",
    
"weapons/knife_hitwall1.wav",
    
"weapons/knife_slash1.wav",
    
"weapons/knife_slash2.wav",
    
"weapons/knife_slash2.wav",
    
"weapons/knife_stab.wav",
    
"weapons/knife_stab.wav"
}

new 
g_chance[33]
new 
g_msgScreenFade
const FFADE_IN 0x0000
const FFADE_STAYOUT 0x0004
const UNIT_SECOND = (1<<12)

new 
is_cooldown_time[33] = 0
new is_cooldown[33] = 0

// Models
new const Trap_Model[] = { "models/zombie_plague/zombitrap.mdl"    }    

// Sounds
new const TrapTrigger_Sound[] = { "common/bodysplat.wav" }    
new const 
PlayerCatched_Sound[] = { "scientist/scream4.wav" }     
new const 
CantPlantTrap_Sound[] = { "common/wpn_denyselect.wav" }     
// Settings
const Max_Traps 3    

// Weapons Offsets (win32)
const OFFSET_flNextPrimaryAttack 46
const OFFSET_flNextSecondaryAttack 47
const OFFSET_flTimeWeaponIdle 48

// Linux diff's
const OFFSET_LINUX_WEAPONS // weapon offsets are only 4 steps higher on Linux

// Zombie id
new g_zclass_DaSu

new Float:g_revenge_cooldown 30.0 //cooldown time
new g_chance_to_cast 25 //chance in percent, where 10 = 1%, 235= 23.5% e t.c.
new const sound_sleep[] = "zm_sounds/zombie_tank/SleepImpact.wav" 
// Vars
new cvar_TrapSetTimecvar_TrapAffectTime
new g_TrapPromptSprg_PlayerCatchedSpr
new g_msgScreenShakeg_msgBarTime
new g_maxplayers
new user_has_traps[33]
new 
user_traps_ent[33][Max_Traps]
new 
bool:user_set_trap[33], set_trap_ent[33], Float:set_trap_origin[33][3]
new 
bool:user_be_catched[33], catched_trap_ent[33]

#if defined SUPPORT_BOT_TO_USE
new Float:bot_next_check_time[33]
#endif

public plugin_init()
{
        
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR)
    
    
cvar_TrapSetTime register_cvar("zp_dasu_trap_settime""3.0")        
    
cvar_TrapAffectTime register_cvar("zp_dasu_trap_affecttime""10.0")    
    

    
g_msgScreenFade get_user_msgid("ScreenFade")
    
g_maxplayers get_maxplayers()
    
register_logevent("roundStart"2"1=Round_Start")
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_StartFrame"fw_StartFrame")
    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink")
    
register_forward(FM_Touch"fw_Touch")
    
register_forward(FM_Think"fw_Think")
    
register_forward(FM_EmitSound"fw_EmitSound")
    
    
register_event("ResetHUD""event_NewSpawn""be")
    
register_event("DeathMsg""event_Death""a")
    
register_event("HLTV""event_RoundStart""a""1=0""2=0")
    
    
#if defined SUPPORT_BOT_TO_USE
    
register_event("Damage""event_Damage""be""2>0")
    
#endif
    
    
g_msgScreenShake get_user_msgid("ScreenShake")
    
g_msgBarTime get_user_msgid("BarTime")
    
g_maxplayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_sound(sound_sleep)
    
precache_model(Trap_Model)
    
    
precache_sound(TrapTrigger_Sound)
    
precache_sound(PlayerCatched_Sound)
    
precache_sound(CantPlantTrap_Sound)
    for(new 
0sizeof tank_knife_soundsi++)
        
precache_sound(tank_knife_sounds[i])

        
    
g_TrapPromptSpr precache_model("sprites/zombie_plague/trap_prompt.spr")
        
    
g_zclass_DaSu zp_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback)
}

public 
client_damage(attacker,victim)
{
    if ((
zp_get_user_zombie_class(victim) == g_zclass_DaSu) && zp_get_user_zombie(victim) && !zp_get_user_nemesis(victim) && (is_cooldown[victim] == 0))
    {
        
g_chance[victim] = random_num(0,999)
        if (
g_chance[victim] < g_chance_to_cast)
        {
            
message_begin(MSG_ONEg_msgScreenFade_attacker)
            
write_short(4// duration
            
write_short(4// hold time
            
write_short(FFADE_STAYOUT// fade type
            
write_byte(0// red
            
write_byte(0// green
            
write_byte(0// blue
            
write_byte(255// alpha
            
message_end()
            
            
set_user_health(victimget_user_health(victim) + ( get_user_health(victim) / 10 ) )
            
            
set_task(4.0,"wake_up",attacker)
            
set_task(1.0"ShowHUD"victim__"a",is_cooldown_time[victim])
            
set_task(g_revenge_cooldown,"reset_cooldown",victim)
            
            
emit_sound(attackerCHAN_STREAMsound_sleep1.0ATTN_NORM0PITCH_NORM);
            
            
is_cooldown[victim] = 1
        
}
    }
}

public 
reset_cooldown(id)
{
    if ((
zp_get_user_zombie_class(id) == g_zclass_DaSu) && zp_get_user_zombie(id) && !zp_get_user_nemesis(id))
    {
        
is_cooldown[id] = 0
        is_cooldown_time
[id] = floatround(g_revenge_cooldown)
        new 
text[100]
        
format(text,99,"tuzaga yakalandi")
        
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id
        
write_byte(id
        
write_string(text
        
message_end()
    }
}

public 
ShowHUD(id)
{
    if(
is_user_alive(id))
    {
        
is_cooldown_time[id] = is_cooldown_time[id] - 1;
        
set_hudmessage(20010000.750.9201.01.10.00.0, -1)
        
show_hudmessage(id"Revenge cooldown: %d",is_cooldown_time[id])
    }else{
        
remove_task(id)
    }
}

public 
wake_up(id)
{
    
message_begin(MSG_ONEg_msgScreenFade_id)
    
write_short(UNIT_SECOND// duration
    
write_short(0// hold time
    
write_short(FFADE_IN// fade type
    
write_byte(0// red
    
write_byte(0// green
    
write_byte(0// blue
    
write_byte(255// alpha
    
message_end()
}

public 
zp_user_infected_post(idinfector)
{
    if (
user_be_catched[id])
    {
        
clear_user_sprite(id)
        
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
    }
    
    
reset_vars(id)
    
    if (
zp_get_user_zombie_class(id) == g_zclass_DaSu && !zp_get_user_nemesis(id))
    {    
        new 
text[100]
        
        
is_cooldown[id] = 0
        is_cooldown_time
[id] = floatround(g_revenge_cooldown)
        
        new 
note_cooldown floatround(g_revenge_cooldown)
        
format(text,99,"tuzaga girdi",note_cooldown)
        
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id
        
write_byte(id
        
write_string(text
        
message_end()
        
        
user_has_traps[id] = Max_Traps
        client_print
(idprint_chat"max traps"Max_Traps)
    }

    
remove_task(id)
    
is_cooldown[id] = 0
}

public 
fw_CmdStart(iduc_handleseed)
{
    if (!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if (!
zp_get_user_zombie(id) || zp_get_user_zombie_class(id) != g_zclass_DaSu || zp_get_user_nemesis(id))
        return 
FMRES_IGNORED;
    
    
#if defined SUPPORT_BOT_TO_USE
    
if (is_user_bot(id))
    {
        
bot_use_traps(id)
        return 
FMRES_IGNORED;
    }
    
#endif
    
    
static buttonoldbutton
    button 
get_uc(uc_handleUC_Buttons)
    
oldbutton pev(idpev_oldbuttons)
    
    if (!
user_set_trap[id])
    {
        if ((
button IN_RELOAD) && !(oldbutton IN_RELOAD))
        {
            
do_set_trap(id)
        }
    }
    else
    {
        static 
user_flagsFloat:user_origin[3], Float:fdistance
        user_flags 
pev(idpev_flags)
        
pev(idpev_originuser_origin)
        
user_origin[2] -= (user_flags FL_DUCKING) ? 18.0 36.0
        fdistance 
get_distance_f(user_originset_trap_origin[id])
        
        if (!(
button IN_RELOAD) || fdistance 18.0)
        {
            
stop_set_trap(id)
        }
    }
    
    return 
FMRES_HANDLED;
}

public 
fw_StartFrame()
{
    static 
Float:timeFloat:next_check_timeidiclassname[32], Float:origin1[3], Float:origin2[3]
    
    
time get_gametime()
    
    if (
time >= next_check_time)
    {
        for (
id 1id <= g_maxplayersid++)
        {
            if (!
is_user_connected(id) || !is_user_alive(id))
                continue;
            
            if (!
zp_get_user_zombie(id) || zp_get_user_zombie_class(id) != g_zclass_DaSu || zp_get_user_nemesis(id))
                continue;
            
            for (
0Max_Trapsi++)
            {
                if (
user_traps_ent[id][i] <= 0)
                    continue;
                
                if (!
pev_valid(user_traps_ent[id][i]))
                {
                    
user_traps_ent[id][i] = 0
                    
continue;
                }
                
                
pev(user_traps_ent[id][i], pev_classnameclassnamecharsmax(classname))
                if (!
equal(classname"ZOMBIE_TRAP_ENT"))
                {
                    
user_traps_ent[id][i] = 0
                    
continue;
                }
                
                if (
pev(user_traps_ent[id][i], pev_iuser3) == 1)
                    continue;
                
                
pev(user_traps_ent[id][i], pev_originorigin1)
                
xs_vec_copy(origin1origin2)
                
origin2[2] += 30.0
                
if (fm_is_point_visible(idorigin11) || fm_is_point_visible(idorigin21))
                {
                    
origin1[2] += 30.0
                    create_user_sprite
(idorigin1g_TrapPromptSpr15)
                }
            }
        }
        
        
next_check_time time 0.1
    
}
    
    return 
FMRES_IGNORED;
}

public 
fw_PlayerPreThink(id)
{
    if (!
is_user_alive(id))
        return 
FMRES_IGNORED;
    
    if (
zp_get_user_zombie(id))
    {
        if (
zp_get_user_zombie_class(id) != g_zclass_DaSu || zp_get_user_nemesis(id))
            return 
FMRES_IGNORED;
        
        if (
user_set_trap[id])
        {
            
freeze_user_attack(id)
        }
    }
    else
    {
        if (
user_be_catched[id] && pev_valid(catched_trap_ent[id]))
        {
            static 
classname[32]
            
pev(catched_trap_ent[id], pev_classnameclassnamecharsmax(classname))
            if (!
equal(classname"ZOMBIE_TRAP_ENT"))
                return 
FMRES_IGNORED;
            
            
set_pev(idpev_velocityFloat:{ 0.00.0, -200.0 })
            
set_pev(idpev_maxspeed1.0)
            
            static 
Float:user_origin[3], Float:ent_origin[3], Float:temp_origin[3]
            
pev(idpev_originuser_origin)
            
pev(catched_trap_ent[id], pev_originent_origin)
            
xs_vec_copy(ent_origintemp_origin)
            
temp_origin[2] += 18.0
            
if (get_distance_f(user_origintemp_origin) > 18.0)
            {
                
temp_origin[2] += ((pev(idpev_flags) & FL_DUCKING) ? 0.0 18.0)
                
set_pev(idpev_origintemp_origin)
            }
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
fw_Touch(ptrptd)
{
    if (!
pev_valid(ptr) || !pev_valid(ptd))
        return 
FMRES_IGNORED;
    
    static 
classname[32]
    
pev(ptrpev_classnameclassnamecharsmax(classname))
    if (!
equal(classname"ZOMBIE_TRAP_ENT"))
        return 
FMRES_IGNORED;
    
    if (!(
<= ptd <= g_maxplayers) || !is_user_alive(ptd) || zp_get_user_zombie(ptd))
        return 
FMRES_IGNORED;
    
    if (
pev(ptrpev_iuser2) == 0
        return 
FMRES_IGNORED;

    if (
pev(ptrpev_iuser3) == && !user_be_catched[ptd])
    {
        
PlaySound(ptdTrapTrigger_Sound)
        
engfunc(EngFunc_EmitSoundptdCHAN_VOICEPlayerCatched_Sound1.0ATTN_NORM0PITCH_NORM)
        
user_screen_shake(ptd425)
        
show_user_sprite(ptdg_PlayerCatchedSpr)
        
        static 
Float:origin[3]
        
pev(ptrpev_originorigin)
        
origin[2] += ((pev(ptdpev_flags) & FL_DUCKING) ? 18.0 36.0)
        
set_pev(ptdpev_originorigin)
        
set_pev(ptdpev_velocityFloat:{ 0.00.00.0 })
        
client_print(ptdprint_center"tuzak kuruluyor")
        
        
set_pev(ptrpev_iuser31)     
        
set_pev(ptrpev_iuser4ptd)    
        
user_be_catched[ptd] = true    
        catched_trap_ent
[ptd] = ptr    
        fm_set_rendering
(ptrkRenderFxNone0,0,0kRenderNormal255)
        
set_pev(ptrpev_nextthinkget_gametime() + 0.05
        
        static 
owner
        owner 
pev(ptrpev_iuser1)
        if (
<= owner <= g_maxplayers)
            
client_print(ownerprint_center"tuzaga yakalandi")
        
        static 
Float:trap_affect_time
        trap_affect_time 
get_pcvar_float(cvar_TrapAffectTime)
        if (
trap_affect_time 0.0)
        {
            static 
args[1]
            
args[0] = ptr
            set_task
(trap_affect_time"remove_trap"TASK_REMOVE_TRAPargs1)
        }
    }
    
    return 
FMRES_IGNORED;
}

public 
fw_Think(ent)
{
    if (
pev_valid(ent))
    {
        static 
classname[32]
        
pev(entpev_classnameclassnamecharsmax(classname))
        if (
equal(classname"ZOMBIE_TRAP_ENT"))
        {
            if (
pev(entpev_sequence) != 1)
            {
                
set_pev(entpev_sequence1)
                
set_pev(entpev_frame0.0)
            }
            else
            {
                if (
pev(entpev_frame) > 241.0)
                    
set_pev(entpev_frame20.0)
                else
                    
set_pev(entpev_framepev(entpev_frame) + 1.0)
            }
            
            static 
catched_player
            catched_player 
pev(entpev_iuser4)
            if (!
user_be_catched[catched_player] || catched_trap_ent[catched_player] != ent)
            {
                
engfunc(EngFunc_RemoveEntityent)
                return 
FMRES_IGNORED;
            }
            
            
set_pev(entpev_nextthinkget_gametime() + 0.05
        }
    }
    
    return 
FMRES_IGNORED;
}

freeze_user_attack(id)
{
    new 
weaponweapon_name[32], weapon_ent
    weapon 
get_user_weapon(id)
    
get_weaponname(weaponweapon_namecharsmax(weapon_name))
    
weapon_ent fm_find_ent_by_owner(-1weapon_nameid)
    
    if (
get_weapon_next_pri_attack(weapon_ent) <= 0.1)
        
set_weapon_next_pri_attack(weapon_ent0.5)
    
    if (
get_weapon_next_sec_attack(weapon_ent) <= 0.1)
        
set_weapon_next_sec_attack(weapon_ent0.5)
    
    if (
weapon == CSW_XM1014 || weapon == CSW_M3)
    {
        if (
get_weapon_idle_time(weapon_ent) <= 0.1)
            
set_weapon_idle_time(weapon_ent0.5)
    }
}

do_set_trap(id)
{
    if (!
user_set_trap[id])
    {
        if (
set_a_trap(idset_trap_ent[id], set_trap_origin[id]) == 1)
        {
            
user_set_trap[id] = true
            
            
new Float:velocity[3]
            
pev(idpev_velocityvelocity)
            
velocity[0] = velocity[1] = 0.0
            set_pev
(idpev_velocityvelocity)
            
            new 
Float:set_trap_timetask_time
            set_trap_time 
get_pcvar_float(cvar_TrapSetTime)
            
task_time floatround(set_trap_timefloatround_floor) + (floatfract(set_trap_time) >= 0.5 0)
            
set_task(set_trap_time"trap_complete", (id TASK_SET_TRAP))
            
show_user_taskbar(idtask_time)
            
            
client_print(idprint_center"tuzak kuruluyor!")
            
client_print(idprint_chat"Tuzak kuruluyor!!"user_has_traps[id])
            
            return 
1;
        }
    }
    
    return 
0;
}

stop_set_trap(id)
{
    if (
user_set_trap[id])
    {
        
client_print(idprint_center"")
        
        if (
pev_valid(set_trap_ent[id]))
            
engfunc(EngFunc_RemoveEntityset_trap_ent[id])
        
        
user_set_trap[id] = false
        set_trap_ent
[id] = 0
        remove_task
(id TASK_SET_TRAP)
        
show_user_taskbar(id0)
    }
}

set_a_trap(id, &trap_entityFloat:trap_origin[3])
{
    if (
user_has_traps[id] <= 0)
    {
        
engfunc(EngFunc_EmitSoundidCHAN_ITEMCantPlantTrap_Sound1.0ATTN_NORM0PITCH_NORM)
        
client_print(idprint_center"baska tuzaginiz kalmadi")
        return 
0;
    }
    
    new 
user_flags pev(idpev_flags)
    if (!(
user_flags FL_ONGROUND))
    {
        
engfunc(EngFunc_EmitSoundidCHAN_ITEMCantPlantTrap_Sound1.0ATTN_NORM0PITCH_NORM)
        
client_print(idprint_center"max tuzak!")
        return 
0;
    }
    
    new 
Float:origin[3]
    
pev(idpev_originorigin)
    
origin[2] -= (user_flags FL_DUCKING) ? 18.0 36.0
    
    
if (get_too_close_traps(origin)) 
    {
        
engfunc(EngFunc_EmitSoundidCHAN_ITEMCantPlantTrap_Sound1.0ATTN_NORM0PITCH_NORM)
        
client_print(idprint_center"baska tuzak kalmadi!!")
        return 
0;
    }
    
    
client_print(idprint_center"")
    
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    if (!
ent) return -1;
    
    
// Set trap data
    
set_pev(entpev_classname"ZOMBIE_TRAP_ENT")
    
set_pev(entpev_solidSOLID_TRIGGER)
    
set_pev(entpev_movetypeMOVETYPE_FLY)
    
set_pev(entpev_sequence0)
    
set_pev(entpev_frame0.0)
    
set_pev(entpev_iuser1id)     
    
set_pev(entpev_iuser20)    
    
set_pev(entpev_iuser30)    
    
set_pev(entpev_iuser40)    
    
    
// Set trap size
    
new Float:mins[3] = { -20.0, -20.00.0 }
    new 
Float:maxs[3] = { 20.020.030.0 }
    
engfunc(EngFunc_SetSizeentminsmaxs)
    
    
// Set trap model
    
engfunc(EngFunc_SetModelentTrap_Model)
    
    
// Make trap invisible
    
fm_set_rendering(entkRenderFxGlowShell000kRenderTransAlpha0)
    
    
// Set trap position
    
set_pev(entpev_originorigin)
    
    
// Return trap entity id
    
trap_entity ent
    
    
// Return trap position
    
xs_vec_copy(origintrap_origin)
    
    return 
1;
}

public 
trap_complete(taskid)
{
    new 
id taskid TASK_SET_TRAP
    
    show_user_taskbar
(id0)
    
    if (
pev_valid(set_trap_ent[id]))
    {
        
set_pev(set_trap_ent[id], pev_iuser21
        
user_has_traps[id]--
        
set_user_traps_data(idset_trap_ent[id])
        
        
client_print(idprint_center"Tuzak Kuruldu")
        
        if (
user_has_traps[id] > 0)
            
client_print(idprint_chat"Baska tuzak kalmadi!"user_has_traps[id])
        else
            
client_print(idprint_chat"Max Tuzak")
    }
    
    
#if defined SUPPORT_BOT_TO_USE
    
if (is_user_bot(id))
    {
        
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
        
bot_next_check_time[id] = get_gametime() + 10.0    
    
}
    
#endif
    
    
user_set_trap[id] = false
    set_trap_ent
[id] = 0
}

public 
remove_trap(args[1])
{
    new 
ent args[0]
    
    if (
pev_valid(ent))
    {
        new 
classname[32]
        
pev(entpev_classnameclassnamecharsmax(classname))
        if (!
equal(classname"ZOMBIE_TRAP_ENT"))
            return;
        
        new 
catched_player pev(entpev_iuser4)
        if (
user_be_catched[catched_player] && catched_trap_ent[catched_player] == ent)
        {
            
clear_user_sprite(catched_player)
            
set_pev(catched_playerpev_flags, (pev(catched_playerpev_flags) & ~FL_FROZEN))
            
user_be_catched[catched_player] = false
            catched_trap_ent
[catched_player] = 0
        
}
        
        
engfunc(EngFunc_RemoveEntityent)
    }
}

public 
zp_user_humanized_post(id)
{
    if (
user_set_trap[id])
    {
        
stop_set_trap(id)
        
        
#if defined SUPPORT_BOT_TO_USE
        
if (pev(idpev_flags) & FL_FROZEN)
            
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
        
#endif
    
}
    
    
reset_traps_owner(id)
    
reset_vars(id)

}

public 
client_connect(id)
{
    
reset_vars(id)
}

public 
client_disconnect(id)
{
    if (
user_set_trap[id])
    {
        
stop_set_trap(id)
        
        
#if defined SUPPORT_BOT_TO_USE
        
if (pev(idpev_flags) & FL_FROZEN)
            
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
        
#endif
    
}
    
    if (
user_be_catched[id])
    {
        
clear_user_sprite(id)
        
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
    }
    
    
reset_vars(id)
}

public 
event_NewSpawn(id)
{
    if (
user_set_trap[id])
    {
        
stop_set_trap(id)
        
        
#if defined SUPPORT_BOT_TO_USE
        
if (pev(idpev_flags) & FL_FROZEN)
            
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
        
#endif
    
}
    
    if (
user_be_catched[id])
    {
        
clear_user_sprite(id)
        
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
    }
    
    
reset_vars(id)
}

public 
event_Death()
{
    new 
id read_data(2)
    if (!(
<= id <= g_maxplayers))
        return;
    
    if (
user_set_trap[id])
    {
        
stop_set_trap(id)
        
        
#if defined SUPPORT_BOT_TO_USE
        
if (pev(idpev_flags) & FL_FROZEN)
            
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
        
#endif
    
}
    
    if (
user_be_catched[id])
    {
        
clear_user_sprite(id)
        
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
    }
    
    
reset_traps_owner(id)
    
reset_vars(id)
}

public 
event_RoundStart()
{
    
remove_task(TASK_REMOVE_TRAP)
    
remove_all_traps()
}

get_too_close_traps(const Float:origin[3])
{
    new 
bool:findentFloat:ent_origin[3]
    
find false
    ent 
= -1
    
while ((ent fm_find_ent_by_class(ent"ZOMBIE_TRAP_ENT")))
    {
        if (
pev(entpev_iuser2) == 1)
        {
            
pev(entpev_originent_origin)
            if (
get_distance_f(originent_origin) <= 50.0
                
find true
        
}
    }
    
    if (!
find) return 0;
    
    return 
1;
}

set_user_traps_data(idtrap_ent)
{
    new 
bool:find false
    
    
for (new 0Max_Trapsi++)
    {
        if (
user_traps_ent[id][i] == 0)
        {
            
user_traps_ent[id][i] = trap_ent
            find 
true
            
break;
        }
    }
    
    if (!
find) return 0;
    
    return 
1;
}

reset_traps_owner(id)
{
    new 
classname[32], owner
    
for (new 0Max_Trapsi++)
    {
        if (
user_traps_ent[id][i] > && pev_valid(user_traps_ent[id][i]))
        {
            
pev(user_traps_ent[id][i], pev_classnameclassnamecharsmax(classname))
            
owner pev(user_traps_ent[id][i], pev_iuser1)
            
            if (
equal(classname"ZOMBIE_TRAP_ENT") && owner == id)
                
set_pev(user_traps_ent[id][i], pev_iuser10)
        }
    }
}

remove_all_traps()
{
    new 
ent = -1
    
while ((ent fm_find_ent_by_class(ent"ZOMBIE_TRAP_ENT")))
    {
        
engfunc(EngFunc_RemoveEntityent)
    }
}

reset_vars(id)
{
    
user_has_traps[id] = 0
    user_set_trap
[id] = false
    set_trap_ent
[id] = 0
    user_be_catched
[id] = false
    catched_trap_ent
[id] = 0
    
    
for (new 0Max_Trapsi++)
        
user_traps_ent[id][i] = 0
}

stock fm_set_rendering(entityfx kRenderFxNone255255255render kRenderNormalamount 16)
{
    new 
Float:RenderColor[3];
    
RenderColor[0] = float(r);
    
RenderColor[1] = float(g);
    
RenderColor[2] = float(b);
    
    
set_pev(entitypev_renderfxfx);
    
set_pev(entitypev_rendercolorRenderColor);
    
set_pev(entitypev_rendermoderender);
    
set_pev(entitypev_renderamtfloat(amount));
    
    return 
1;
}

stock fm_find_ent_by_class(index, const classname[])
{
    return 
engfunc(EngFunc_FindEntityByStringindex"classname"classname
}

stock PlaySound(id, const sound[])
{
    if (
equal(sound[strlen(sound)-4], ".mp3"))
        
client_cmd(id"mp3 play ^"sound/%s^""sound)
    else
        
client_cmd(id"spk ^"%s^""sound)
}

stock user_screen_shake(idamplitude 4duration 2frequency 10)
{
    
message_begin(MSG_ONE_UNRELIABLEg_msgScreenShake_id)
    
write_short((1<<12)*amplitude// ĞΆĞŠĞ‡Ğ΅β„–…
    
write_short((1<<12)*duration// ĞΆβ„’β€šĞΉβ€“β€œ
    
write_short((1<<12)*frequency// ĞΉΒ*Β»Ğ·Ğ‹β€‘
    
message_end()
}

stock show_user_taskbar(idtime)
{
    
message_begin(MSG_ONE_UNRELIABLEg_msgBarTime_id)
    
write_short(time// time (second) [0=clear]
    
message_end()
}

stock show_user_sprite(id, const sprite_index)
{
    
message_begin(MSG_ALLSVC_TEMPENTITY)
    
write_byte(TE_PLAYERATTACHMENT// TE_PLAYERATTACHMENT (124)
    
write_byte(id// player id
    
write_coord(45// vertical offset (attachment origin.z = player origin.z + vertical offset)
    
write_short(sprite_index// sprite entity index
    
write_short(32767// life (scale in 0.1's)
    
message_end()
}

stock clear_user_sprite(id)
{
    
message_begin(MSG_ALLSVC_TEMPENTITY)
    
write_byte(TE_KILLPLAYERATTACHMENTS// TE_KILLPLAYERATTACHMENTS (125)
    
write_byte(id// player id
    
message_end()
}

stock bool:fm_is_point_visible(index, const Float:point[3], ignoremonsters 1)
{
    new 
Float:start[3], Float:dest[3];
    
pev(indexpev_originstart);
    
pev(indexpev_view_ofsdest);
    
xs_vec_add(startdeststart);
    
    
engfunc(EngFunc_TraceLinestartpointignoremonstersindex0);
    
    new 
Float:fraction;
    
get_tr2(0TR_flFractionfraction);
    if (
fraction == 1.0)
        return 
true;
    
    
get_tr2(0TR_vecEndPosdest);
    if ((
dest[0] == point[0]) && (dest[1] == point[1]) && (dest[2] == point[2]))
        return 
true;
    
    return 
false;
}

stock create_user_sprite(id, const Float:originF[3], sprite_indexscale)
{
    
message_begin(MSG_ONESVC_TEMPENTITY_id)
    
write_byte(TE_SPRITE// TE id (Additive sprite, plays 1 cycle)
    
engfunc(EngFunc_WriteCoordoriginF[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF[2]) // z
    
write_short(sprite_index// sprite index
    
write_byte(scale// scale in 0.1's
    
write_byte(200// brightness
    
message_end()
}

stock fm_find_ent_by_owner(entity, const classname[], owner)
{
    while ((
entity engfunc(EngFunc_FindEntityByStringentity"classname"classname)) && (pev(entitypev_owner) != owner)) {}
    
    return 
entity;
}

stock Float:get_weapon_next_pri_attack(entity)
{
    return 
get_pdata_float(entityOFFSET_flNextPrimaryAttackOFFSET_LINUX_WEAPONS)
}

stock set_weapon_next_pri_attack(entityFloat:time)
{
    
set_pdata_float(entityOFFSET_flNextPrimaryAttacktimeOFFSET_LINUX_WEAPONS)
}

stock Float:get_weapon_next_sec_attack(entity)
{
    return 
get_pdata_float(entityOFFSET_flNextSecondaryAttackOFFSET_LINUX_WEAPONS)
}

stock set_weapon_next_sec_attack(entityFloat:time)
{
    
set_pdata_float(entityOFFSET_flNextSecondaryAttacktimeOFFSET_LINUX_WEAPONS)
}

stock Float:get_weapon_idle_time(entity)
{
    return 
get_pdata_float(entityOFFSET_flTimeWeaponIdleOFFSET_LINUX_WEAPONS)
}

stock set_weapon_idle_time(entityFloat:time)
{
    
set_pdata_float(entityOFFSET_flTimeWeaponIdletimeOFFSET_LINUX_WEAPONS)
}

#if defined SUPPORT_BOT_TO_USE
public bot_use_traps(id)
{
    
//if (!is_user_alive(id))
    //    return;
    
    //if (!zp_get_user_zombie(id) || zp_get_user_zombie_class(id) != g_zclass_BrutalDaSu || zp_get_user_nemesis(id))
    //    return;
    
    
static targethitzonedistance
    target 
get_valid_aim_target(idhitzonedistance)
    
    if (!
user_set_trap[id])
    {
        static 
Float:time
        time 
get_gametime()
        
        if (
target && (500 <= distance <= 1000) && time >= bot_next_check_time[id])
        {
            if (
random_num(1100) > 85
            {
                if (
do_set_trap(id))
                    
set_pev(idpev_flags, (pev(idpev_flags) | FL_FROZEN))
            }
            
            
bot_next_check_time[id] = time 1.0    
        
}
    }
    else
    {
        static 
Float:user_origin[3], Float:fdistance
        pev
(idpev_originuser_origin)
        
user_origin[2] = set_trap_origin[id][2]
        
fdistance get_distance_f(user_originset_trap_origin[id])
        
        if ((
target && distance <= 200) || fdistance 18.0)
        {
            
stop_set_trap(id)
            
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
        }
    }
}

public 
event_Damage(id)
{
    new 
attackerweaponhitzone
    attacker 
get_user_attacker(idweaponhitzone)
    
    if (!(
<= attacker <= g_maxplayers) || !is_user_connected(attacker) || !is_user_alive(attacker
    || 
attacker == id)
        return;
    
    new 
damage read_data(2)
    
    if (
is_user_bot(id) && damage 0)
    {
        new 
Float:origin1[3], Float:origin2[3], distance
        pev
(idpev_originorigin1)
        
pev(attackerpev_originorigin2)
        
distance floatround(get_distance_f(origin1origin2))
        
        if (
distance 500 || damage 100)
        {
            if (
user_set_trap[id])
            {
                
stop_set_trap(id)
                
set_pev(idpev_flags, (pev(idpev_flags) & ~FL_FROZEN))
            }
        }
    }
}

get_valid_aim_target(id, &hitzone, &distance)
{
    new 
targetaim_hitzone
    get_user_aiming
(idtargetaim_hitzone)
    if (!(
<= target <= g_maxplayers) || !is_user_alive(target) || zp_get_user_zombie(target))
        return 
0;
    
    
hitzone aim_hitzone
    
new Float:origin1[3], Float:origin2[3]
    
pev(idpev_originorigin1)
    
pev(targetpev_originorigin2)
    
distance floatround(get_distance_f(origin1origin2), floatround_round)
    
    return 
target;
}
#endif

public roundStart()
{
    for (new 
1<= g_maxplayersi++)
    {
        
is_cooldown[i] = 0
        is_cooldown_time
[i] = floatround(g_revenge_cooldown)
        
remove_task(i)
    }
}

public 
fw_EmitSound(idchannel, const sound[])
{        
        if(!
is_user_connected(id) && !zp_get_user_zombie(id))
            return 
FMRES_HANDLED;

    
    if(
zp_get_user_zombie(id) && zp_get_user_zombie_class(id) == g_zclass_DaSu && !zp_get_user_nemesis(id))
    {
        for(new 
0sizeof tank_knife_soundsi++)
        {
            if(
equal(soundold_tank_knife_sounds[i]))
            {
                
emit_sound(idchanneltank_knife_sounds[i], 1.0ATTN_NORM0PITCH_NORM)
                return 
FMRES_SUPERCEDE
            
}
        }
    }

    return 
FMRES_IGNORED;




All times are GMT -4. The time now is 07:40.

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