Русское сообщество по скриптингу

no kill zone урон от маг. палки

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

no kill zone урон от маг. палки

Сообщение Logarifm » 14 мар 2017, 01:32

Приветствую всех!
В зоне ноу килл, наносится урон от магической палки, помогите исправить.
Код: Выделить всё
#include < amxmodx >
#include < xs >
#include < engine >
#include < cstrike >
#include < fakemeta >
#include < hamsandwich >

#define PLUGIN        "[ JB ] Magic stick"
#define VERSION        "1.0"
#define AUTHOR         "Opo4uMapy"

#define FIRERATE     1.8
#define HITSD         0.7
#define DAMAGE         30.0
#define DAMAGE_MULTI     3.0

#define CSW_WPN     CSW_KNIFE
#define weapon        "weapon_knife"

new const snd_hit[][]     =     { "knife_hit1.wav" }
new const snd_fire[][]    =     { "chill.wav" }

new const MAGIC_MODEL[][] =
{
    "models/v_palka.mdl",
    "models/p_palka.mdl"
}

new Float:g_flLastFireTime[33], g_HasRifle[33]

new g_sprBeam, g_sprExp, g_sprBlood, sprite_ability

const ANIM_FIRE         
=         1
const ANIM_DRAW            
=         3
const WPNKEY             
=         2816

public plugin_init
() 
{
    //Authors
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    
//Event
    register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
    register_event("CurWeapon", "event_CurWeapon", "b", "1=1")

    //Message
    //register_message(get_user_msgid("WeapPickup"), "message_weappickup")

    //Fm (Forward)
    register_forward(FM_CmdStart, "fw_CmdStart")
    register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
    
    
//Ham
    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
    RegisterHam(Ham_Item_Deploy, weapon, "fw_Deploy_Post", 1)
    RegisterHam(Ham_Item_AddToPlayer, weapon, "fw_AddToPlayer")
    RegisterHam(Ham_Weapon_SecondaryAttack, weapon, "SecondaryAttack_Pre", 0)

    //register_clcmd("giv_gar", "give_rifle")
}

public plugin_precache()
{
    static i

    for
(= 0; i < sizeof MAGIC_MODEL; i++)
        precache_model(MAGIC_MODEL[i])

    g_sprBlood = precache_model("sprites/blood.spr")
    g_sprBeam = precache_model("sprites/lgtning.spr")
    g_sprExp = precache_model("sprites/deimosexp.spr")

    sprite_ability = precache_model("sprites/green.spr")
//    precache_generic("sprites/js_jb_magic_stick.txt")
//    precache_generic("sprites/js_shop_item.spr")
    
    for
(= 0; i < sizeof snd_fire; i++)
        precache_sound(snd_fire[i])

    for(= 0; i < sizeof snd_hit; i++)
        precache_sound(snd_hit[i])

//    register_clcmd("js_jb_magic_stick", "clcmd_justserver")
}
/*
public clcmd_justserver(id)
{
    engclient_cmd(id, "weapon_knife")
    return PLUGIN_HANDLED
}

public message_weappickup(msg_id, msg_dest, id)
{
    if(!is_user_connected(id))
        return

    if(get_msg_arg_int(1) == CSW_KNIFE)
    {
        message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id)
        if(g_HasRifle[id])
            write_string("js_jb_magic_stick")
        else
            write_string("weapon_knife")
        write_byte(-1)
        write_byte(-1)
        write_byte(-1)
        write_byte(-1)
        write_byte(2)
        write_byte(1)
        write_byte(CSW_KNIFE)
        write_byte(0)
        message_end()
    }
}
*/

public plugin_natives ()
{
    register_native("give_weapon_rifle", "native_give_weapon_add", 1)
}
public native_give_weapon_add(id)
{
    give_rifle(id)
}

public event_CurWeapon(id)
{
    if(!is_user_alive(id))
        return
    
    if
(!g_HasRifle[id] || get_user_weapon(id) != CSW_WPN) 
        return
        
    set_pev
(id, pev_viewmodel2, "models/v_palka.mdl")
    set_pev(id, pev_weaponmodel2, "models/p_palka.mdl")
}

public fw_PlayerKilled(victim, attacker, shouldgib)
{
    if(!is_user_connected(victim))
        return HAM_IGNORED

    g_HasRifle
[victim] = false

    return HAM_HANDLED
}

public Event_NewRound()
{
    for (new i = 1; i <= get_maxplayers(); i++)
    {
        if(!is_user_connected(i))
            continue

        g_HasRifle
[i] = false
    
}
}

public SecondaryAttack_Pre(Weapon)
{
    new Player = get_pdata_cbase(Weapon, 41, 4)

    if(!is_user_alive(Player))
        return HAM_IGNORED

    if
(g_HasRifle[Player])
        return HAM_SUPERCEDE

    return HAM_HANDLED
;
}

public give_rifle(id)
{
    if(!is_user_alive(id))
        return

        g_HasRifle
[id] = true
    fm_give_item
(id, weapon)    
    engclient_cmd
(id, weapon)

    if(get_user_weapon(id) == CSW_KNIFE)
    {
        set_pev(id, pev_viewmodel2,  "models/v_palka.mdl")
        set_pev(id, pev_weaponmodel2, "models/p_palka.mdl")
        set_wpnanim(id, ANIM_DRAW)
    }
}

public fw_CmdStart(id, handle, seed)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED
    
    if
(!g_HasRifle[id])
        return FMRES_IGNORED
            
    if
(get_user_weapon(id) != CSW_WPN)
        return FMRES_IGNORED
        
    static iButton
    iButton 
= get_uc(handle, UC_Buttons)
    
    if
(iButton & IN_ATTACK)
    {
        set_uc(handle, UC_Buttons, iButton & ~IN_ATTACK)
        
        static Float
:flCurTime
        flCurTime 
= halflife_time()
        
        if
(flCurTime - g_flLastFireTime[id] < FIRERATE)
            return FMRES_IGNORED
            
        static iWpnID
        iWpnID 
= get_pdata_cbase(id, 373, 5)
        
        set_pdata_float
(iWpnID, 46, FIRERATE, 4)
        set_pdata_float(iWpnID, 47, FIRERATE, 4)
        set_pdata_float(iWpnID, 48, FIRERATE, 4)

        g_flLastFireTime[id] = flCurTime
        primary_attack
(id)
        make_punch(id, 50)
        
        return FMRES_IGNORED
    
}
    return FMRES_IGNORED
}

public fw_UpdateClientData_Post(id, sendweapons, handle)
{
    if(!is_user_alive(id))
        return FMRES_IGNORED
        
    if
(!g_HasRifle[id])
        return FMRES_IGNORED
        
    if
(get_user_weapon(id) != CSW_WPN)
        return FMRES_IGNORED
        
    set_cd
(handle, CD_flNextAttack, halflife_time() + 0.001)
    return FMRES_HANDLED
}

public fw_Deploy_Post(wpn)
{
    static id
    id 
= fm_cs_get_weapon_ent_owner(wpn)
    
    if
(is_user_connected(id) && g_HasRifle[id])
    {
        set_pev(id, pev_viewmodel2,  "models/v_palka.mdl")
        set_pev(id, pev_weaponmodel2, "models/p_palka.mdl")
        set_wpnanim(id, ANIM_DRAW)
    }
    return HAM_IGNORED
}

public fw_AddToPlayer(wpn, id)
{
    if(!is_valid_ent(wpn) || is_user_connected(id) || entity_get_int(wpn, EV_INT_impulse) != WPNKEY)
        return HAM_IGNORED

    g_HasRifle
[id] = true
    entity_set_int
(wpn, EV_INT_impulse, 0)

    return HAM_IGNORED
}

public primary_attack(id)
{
    set_wpnanim(id, ANIM_FIRE)
    entity_set_vector(id, EV_VEC_punchangle, Float:{ -1.5, 0.0, 0.0 })
    emit_sound(id, CHAN_WEAPON, snd_fire[random_num(0, sizeof snd_fire - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

    static iTarget, iBody, iEndOrigin[3]
    get_user_origin(id, iEndOrigin, 3)

    fire_effects(id, iEndOrigin)
    get_user_aiming(id, iTarget, iBody)

    new iEnt = create_entity("info_target")
    
    static Float
:flOrigin[3]
    IVecFVec(iEndOrigin, flOrigin)
    entity_set_origin(iEnt, flOrigin)

    remove_entity(iEnt)
    
    if
(is_user_alive(iTarget) && (cs_get_user_team(iTarget) != cs_get_user_team(id)))
    {
        if(HITSD > 0.0)
        {
            static Float:flVelocity[3]
            get_user_velocity(iTarget, flVelocity)
            xs_vec_mul_scalar(flVelocity, HITSD, flVelocity)
            set_user_velocity(iTarget, flVelocity)    

            new iHp 
= pev(iTarget, pev_health)
            new Float:iDamage, iBloodScale
            if
(iBody == HIT_HEAD)
            {
                iDamage = DAMAGE
                iBloodScale 
= 10
            
}
            else
            
{
                iDamage = DAMAGE*DAMAGE_MULTI
                iBloodScale 
= 25
            
}
            if(iHp > iDamage) 
            
{
                make_blood(iTarget, iBloodScale)
                set_pev(iTarget, pev_health, iHp-iDamage)
                damage_effects(iTarget)
            }
            else if(iHp <= iDamage)
            {
                balls_effects(iTarget)
                ExecuteHamB(Ham_Killed, iTarget, id, 2)
            }
        }
    }
    else emit_sound(id, CHAN_WEAPON, snd_hit[random_num(0, sizeof snd_hit - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}

public client_putinserver(id)     g_HasRifle[id] = false
public client_disconnect
(id)     g_HasRifle[id] = false

stock fire_effects
(id, iEndOrigin[3])
{
    UTIL_PlayWeaponAnimation(id, 5)
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte (TE_BEAMENTPOINT)
    write_short(id | 0x1000)
    write_coord(iEndOrigin[0])      // Конец луча: x
    write_coord(iEndOrigin[1])      // Конец луча: y
    write_coord(iEndOrigin[2])      // Конец луча: z
    write_short(g_sprBeam)
    write_byte(0)
    write_byte(5)
    write_byte(1)
    write_byte(30)
    write_byte(40)
    write_byte(255)
    write_byte(0)
    write_byte(0)
    write_byte(1000)
    write_byte(0)
    message_end()
    
    message_begin
(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(3)
    write_coord(iEndOrigin[0])
    write_coord(iEndOrigin[1])
    write_coord(iEndOrigin[2])
    write_short(g_sprExp)
    write_byte(10)
    write_byte(15)
    write_byte(4)
    message_end()
}

stock balls_effects(index)
{
    static Float:flOrigin[3]
    pev(index, pev_origin, flOrigin)
            
    message_begin 
(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte( TE_SPRITETRAIL ) // Throws a shower of sprites or models
    engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // start pos
    engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
    engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 200.0)
    engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // velocity
    engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
    engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 20.0)
    write_short(sprite_ability) // spr
    write_byte(15) // (count)
    write_byte(random_num(27,30)) // (life in 0.1's)
    write_byte(2) // byte (scale in 0.1's)
    write_byte(random_num(30,70)) // (velocity along vector in 10's)
    write_byte(40) // (randomness of velocity in 10's)
    message_end()
}

stock damage_effects(id)
{
    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, id)
    write_byte(0)
    write_byte(0)
    write_long(DMG_NERVEGAS)
    write_coord(0) 
    write_coord
(0)
    write_coord(0)
    message_end()
    
    message_begin
(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, id)
    write_short(1<<13)
    write_short(1<<14)
    write_short(0x0000)
    write_byte(0)
    write_byte(255)
    write_byte(0)
    write_byte(100) 
    message_end
()
        
    message_begin
(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
    write_short(0xFFFF)
    write_short(1<<13)
    write_short(0xFFFF) 
    message_end
()

    static Float:flOrigin[3]
    pev(id, pev_origin, flOrigin)

    message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte( TE_SPRITETRAIL ) // Throws a shower of sprites or models
    engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // start pos
    engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
    engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 200.0)
    engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // velocity
    engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
    engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 20.0)
    write_short(sprite_ability) // spr
    write_byte(15) // (count)
    write_byte(random_num(27,30)) // (life in 0.1's)
    write_byte(2) // byte (scale in 0.1's)
    write_byte(random_num(30,70)) // (velocity along vector in 10's)
    write_byte(40) // (randomness of velocity in 10's)
    message_end()
}

stock make_blood(id, scale)
{
    new Float:iVictimOrigin[3]
    pev(id, pev_origin, iVictimOrigin)
    
    message_begin
(MSG_BROADCAST, SVC_TEMPENTITY) 
    write_byte
(115)
    write_coord(floatround(iVictimOrigin[0]+random_num(-20,20))) 
    write_coord
(floatround(iVictimOrigin[1]+random_num(-20,20))) 
    write_coord
(floatround(iVictimOrigin[2]+random_num(-20,20))) 
    write_short
(g_sprBlood)
    write_short(g_sprBlood) 
    write_byte
(248) 
    write_byte
(scale) 
    message_end
()
}

stock set_wpnanim(id, anim)
{
    entity_set_int(id, EV_INT_weaponanim, anim)
    message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)
    write_byte(anim)
    write_byte(entity_get_int(id, EV_INT_body))
    message_end()
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
    set_pev(Player, pev_weaponanim, Sequence)
    
    message_begin
(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
    write_byte(Sequence)
    write_byte(0)
    message_end()
}

stock make_punch(id, velamount) 
{
    static Float:flNewVelocity[3], Float:flCurrentVelocity[3]
    velocity_by_aim(id, -velamount, flNewVelocity)
    get_user_velocity(id, flCurrentVelocity)
    xs_vec_add(flNewVelocity, flCurrentVelocity, flNewVelocity)
    set_user_velocity(id, flNewVelocity)    
}

stock fm_give_item(index, const item[])
{
    if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
        return 0

    new ent 
= engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))

    if (!pev_valid(ent))
        return 0
    
    new Float
:origin[3];
    pev(index, pev_origin, origin)
    set_pev(ent, pev_origin, origin)
    set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
    dllfunc(DLLFunc_Spawn, ent)
    
    new save 
= pev(ent, pev_solid)

    dllfunc(DLLFunc_Touch, ent, index)
    if(pev(ent, pev_solid) != save)
        return ent
    
    engfunc
(EngFunc_RemoveEntity, ent)
    
    return 
-1
}

stock fm_cs_get_weapon_ent_owner(ent) 
{
    if (pev_valid(ent) != 2)
        return -1
    
    return get_pdata_cbase
(ent, 41, 4)
}


Код: Выделить всё
#include <amxmodx>
#include <engine>
#include <hamsandwich>

#define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers )

new const g_szClassname[ ] = "trigger_rules_watch";

enum {
    JAIL,
    GUNROOM,
    MARIOROOM
};

enum _:CVARS {
    CV_JAIL_NOKILL,
    CV_JAIL_TIME,
    
    CV_GUNROOM_NOKILL
,
    CV_GUNROOM_TIME,
    
    CV_MARIOROOM_NOKILL
,
    CV_MARIOROOM_TIME
};

new const g_szZones[ ][ ] = {
    "Jail",
    "Gun room",
    "Mario room"
};

new const Float:g_flOrigins[ ][ 3 ] = {
    { -405.0, 2900.0, 720.0 },
    { -486.0, -1000.0, -275.0 },
    { -405.0, 2949.0, 2422.0 }
};

new const Float:g_flAngles[ ][ 3 ] = {
    { 0.0, 270.0, 0.0 },
    { 0.0, 270.0, 0.0 },
    { 0.0, 270.0, 0.0 }
};

new g_iMaxPlayers;
new g_iCounter[ 33 ];
new bool:g_bNoKill[ 33 ];
new Float:g_flLastTouch[ 33 ];
new g_pCvars[ CVARS ], g_iCvars[ CVARS ];

public plugin_init( ) {
    register_plugin( "surf_ski_2: Rules Watcher", "1.0", "xPaw" );
    
    register_cvar
( "ss2_rules_watcher", "1.0", FCVAR_SERVER | FCVAR_SPONLY );
    
    g_iMaxPlayers 
= get_maxplayers( );
    
    g_pCvars
[ CV_JAIL_NOKILL ]      = register_cvar( "rw_ss2_jail_nokill",      "0" );
    g_pCvars[ CV_JAIL_TIME ]        = register_cvar( "rw_ss2_jail_time",        "0" );
    
    g_pCvars
[ CV_GUNROOM_NOKILL ]   = register_cvar( "rw_ss2_gunroom_nokill",   "1" );
    g_pCvars[ CV_GUNROOM_TIME ]     = register_cvar( "rw_ss2_gunroom_time",     "15" );
    
    g_pCvars
[ CV_MARIOROOM_NOKILL ] = register_cvar( "rw_ss2_marioroom_nokill", "1" );
    g_pCvars[ CV_MARIOROOM_TIME ]   = register_cvar( "rw_ss2_marioroom_time",   "30" );
    
    new szMap
[ 11 ];
    get_mapname( szMap, 10 );
    
    if
( equali( szMap, "surf_ski_2" ) ) {
        CreateTrigger( JAIL, Float:{ -579.0, 2983.0, 586.0 }, Float:{ -309.0, 3288.0, 796.0 } );
        CreateTrigger( GUNROOM, Float:{ -713.0, -990.0, -157.0 }, Float:{ -295.0, -651.0, 26.0 } );
        CreateTrigger( MARIOROOM, Float:{ 2735.0, 193.0, -2361.0 }, Float:{ 3654.0, 1118.0, -2083.0 } );
        
        register_touch
( g_szClassname, "player", "FwdTriggerTouch" );
        RegisterHam( Ham_Spawn,        "player", "FwdHamPlayerSpawn", 1 );
        RegisterHam( Ham_TakeDamage,   "player", "FwdHamTakeDamage" );
        RegisterHam( Ham_TraceAttack,  "player", "FwdHamTraceAttack" );
        
        register_event
( "HLTV", "EventNewRound", "a", "1=0", "2=0" );
        
        CacheCvars
( );
    }
}

public EventNewRound( )
    CacheCvars( );

public FwdHamPlayerSpawn( id ) {
    if( is_user_alive( id ) ) {
        g_bNoKill[ id ] = false;
        g_flLastTouch[ id ] = 0.0;
        g_iCounter[ id ] = 0;
    }
}

public FwdHamTraceAttack( id, iAttacker ) {
    if( IsPlayer( iAttacker ) && g_bNoKill[ id ] && id != iAttacker ) {
        if( ( g_flLastTouch[ id ] + 0.1 ) >= get_gametime( ) )
            return HAM_SUPERCEDE;
        else
            g_bNoKill
[ id ] = false;
    }
    
    return HAM_IGNORED
;
}

public FwdHamTakeDamage( id, iInflictor, iAttacker ) {
    if( IsPlayer( iAttacker ) && g_bNoKill[ id ] && id != iAttacker ) {
        if( ( g_flLastTouch[ id ] + 0.1 ) >= get_gametime( ) )
            return HAM_SUPERCEDE;
        else
            g_bNoKill
[ id ] = false;
    }
    
    return HAM_IGNORED
;
}

public FwdTriggerTouch( iEntity, id ) {
    static Float:flGametime;
    flGametime = get_gametime( );
    
    if
( flGametime > ( g_flLastTouch[ id ] + 1.2 ) ) {
        g_iCounter[ id ] = 0;
        g_flLastTouch[ id ] = flGametime;
    }
    else if( g_flLastTouch[ id ] < flGametime ) {
        g_iCounter[ id ]++;
        
        static iType
, bool:bNoKill, iTime;
        iType = entity_get_int( iEntity, EV_INT_iuser1 );
        
        GetCvars
( iType, bNoKill, iTime );
        
        g_bNoKill
[ id ] = bNoKill;
        
        if
( iTime > 0 ) {
            if( g_iCounter[ id ] >= iTime ) {
                if( iTime >= 5 ) {
                    engclient_print( id, engprint_center, "^nYou stayed more than %i seconds in%s%s.^nYou have been thrown out.", iTime, iType == MARIOROOM ? "^n" : " ", g_szZones[ iType ] );
                    
                    client_cmd
( id, "spk buttons/blip1" );
                }
                
                entity_set_vector
( id, EV_VEC_angles, g_flAngles[ iType ] );
                entity_set_int( id, EV_INT_fixangle, 1 );
                entity_set_origin( id, g_flOrigins[ iType ] );
            }
        }
        
        
        if
( g_iCounter[ id ] < 5 ) {
            if( iTime >= 5 )
                engclient_print( id, engprint_center, "%sYou are in %s.%s^n^nYou have %i seconds to leave it!", bNoKill ? "" : "^n", g_szZones[ iType ], bNoKill ? "^nYou can't kill anyone here." : "", iTime );
            else
                engclient_print
( id, engprint_center, "%sYou are in %s.%s", bNoKill ? "" : "^n", g_szZones[ iType ], bNoKill ? "^nYou can't kill anyone here." : "" );
        }
        
        g_flLastTouch
[ id ] = flGametime + 1.0;
    }
}

GetCvars( iType, &bool:bNoKill, &iTime ) {
    static CvarNoKill, CvarTime;
    
    switch
( iType ) {
        case JAIL: {
            CvarNoKill = CV_JAIL_NOKILL;
            CvarTime = CV_JAIL_TIME;
        }
        case GUNROOM: {
            CvarNoKill = CV_GUNROOM_NOKILL;
            CvarTime = CV_GUNROOM_TIME;
        }
        case MARIOROOM: {
            CvarNoKill = CV_MARIOROOM_NOKILL;
            CvarTime = CV_MARIOROOM_TIME;
        }
    }
    
    bNoKill 
= bool:( g_iCvars[ CvarNoKill ] );
    iTime = g_iCvars[ CvarTime ];
}

CacheCvars( ) {
    g_iCvars[ CV_JAIL_NOKILL ]      = get_pcvar_num( g_pCvars[ CV_JAIL_NOKILL ] );
    g_iCvars[ CV_JAIL_TIME ]        = get_pcvar_num( g_pCvars[ CV_JAIL_TIME ] );
    
    g_iCvars
[ CV_GUNROOM_NOKILL ]   = get_pcvar_num( g_pCvars[ CV_GUNROOM_NOKILL ] );
    g_iCvars[ CV_GUNROOM_TIME ]     = get_pcvar_num( g_pCvars[ CV_GUNROOM_TIME ] );
    
    g_iCvars
[ CV_MARIOROOM_NOKILL ] = get_pcvar_num( g_pCvars[ CV_MARIOROOM_NOKILL ] );
    g_iCvars[ CV_MARIOROOM_TIME ]   = get_pcvar_num( g_pCvars[ CV_MARIOROOM_TIME ] );
}

CreateTrigger( iType, Float:flMins[ 3 ], Float:flMaxs[ 3 ] ) {
    new iEntity = create_entity( "info_target" );
    
    if
( !is_valid_ent( iEntity ) ) {
        log_amx( "There was an error with creating ^"%s^"", g_szZones[ iType ] );
        
        return 0
;
    }
    
    entity_set_string
( iEntity, EV_SZ_classname, g_szClassname );
    entity_set_int( iEntity, EV_INT_iuser1, iType );
    entity_set_int( iEntity, EV_INT_movetype, MOVETYPE_FLY );
    entity_set_int( iEntity, EV_INT_solid, SOLID_TRIGGER );
    entity_set_size( iEntity, flMins, flMaxs );
    
    return iEntity
;
}
Аватара пользователя
Logarifm
 
Сообщения: 56
Зарегистрирован: 21 май 2013, 20:44
Благодарил (а): 20 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: no kill zone урон от маг. палки

Сообщение Papito » 14 мар 2017, 15:18

Создавай натив отключения урона от палочки и вставляй в условие "если в зоне, то урон не наносится".
Или проще отключить вообще палочку в зоне
Аватара пользователя
Papito
 
Сообщения: 545
Зарегистрирован: 09 ноя 2012, 16:28
Откуда: Montana
Благодарил (а): 44 раз.
Поблагодарили: 121 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter Strike 1.6
SAMP


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14