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

Ставить ion cannon на mouse1  [Решено]

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

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

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

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

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

Ставить ion cannon на mouse1

Сообщение Misha90 » 16 июн 2017, 03:37

Всем доброй ночи. Тут такой вопросик у меня стоит на сервере ion cannon и он ставится на E - англ. А я хочу сделать чтобы он ставился на mouse1. Как сделать? Помогите! :-)

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

#define IGNORE_MONSTERS 1
#define IGNORE_GLASS 0x100

#define ION_RADIUS 2000.0
#define ION_MAXDAMAGE 54200.0

new const WPN_NAME[] = "Ion Cannon"

new const W_MODEL[]    = "models/w_battery.mdl"

new SOUND_APPROACH[] = "zombie_plague/ion_canon/approaching.wav"
new SOUND_START_PLANT[]    = "zombie_plague/ion_canon/Strider_Buster_stick1.wav"
new SOUND_START_PLANTS[]    = "zombie_plague/ion_canon/ion_beacon_plant2.wav"
new SOUND_STOP[] = "vox/_comma.wav"
new SOUND_BEEP[] = "zombie_plague/ion_canon/beacon_beep.wav"
new SOUND_ATTACK[] = "zombie_plague/ion_canon/attack.wav"
new SOUND_READY[] =    "zombie_plague/ion_canon/ready.wav"

new g_Target[33], i_Pitch[33]
new 
Float:i_BeaconTime[33]
new 
Float:ion_mid_origin[33][3]
new 
Float:beam_origin[33][8][3]
new 
Float:g_degrees[33][8]
new 
Float:g_distance[33]
new 
Float:ROTATION_SPEED[33]
new 
IonBeamBlueFireShockwaveReadyFireBlueFlareIonShakeLaserFlame

new gItemID
new bool:gHasIon[33]
new const 
gCost 30
new bool:bInUse[33]
new 
g_msgDeathMsg

public plugin_init ()
{
    
gItemID zp_register_extra_item (WPN_NAMEgCostZP_TEAM_ANY)
    
    
IonShake get_user_msgid ("ScreenShake")
    
g_msgDeathMsg get_user_msgid("DeathMsg")
    
    
register_forward (FM_PlayerPreThink"fw_PlayerPreThink")
}

public 
client_connect(id)
{
    
g_Target[id] = 0
    gHasIon
[id] = false
}

public 
plugin_precache()
{
    
precache_model(W_MODEL)
    
precache_sound(SOUND_APPROACH)
    
precache_sound(SOUND_START_PLANT)
    
precache_sound(SOUND_START_PLANTS)
    
precache_sound(SOUND_BEEP)
    
precache_sound(SOUND_ATTACK)
    
precache_sound(SOUND_READY)
    
precache_sound(SOUND_STOP)
    
    
IonBeam precache_model("sprites/ion_canon/ionbeam.spr")
    
BlueFlare precache_model("sprites/ion_canon/bflare.spr")
    
ReadyFire precache_model("sprites/ion_canon/fire.spr")
    
BlueFire precache_model("sprites/ion_canon/blueflame.spr")
    
LaserFlame precache_model("sprites/ion_canon/ion_laserflame.spr")
    
Shockwave precache_model("sprites/shockwave.spr")
}

public 
ion_planted(id)
{
    
id -= 5000
    client_print 
(idprint_chat"Ion cannon beacon deploy")
    
    
emit_sound (idCHAN_WEAPONSOUND_START_PLANTSVOL_NORMATTN_NORM0PITCH_NORM)
    
    
g_Target[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    if(!
g_Target[id])
        return
    
    
set_pev(g_Target[id], pev_classname"info_target_ion")
    
engfunc(EngFunc_SetModelg_Target[id], W_MODEL)
    
    
set_pev(g_Target[id], pev_ownerid)
    
set_pev(g_Target[id], pev_movetypeMOVETYPE_TOSS)
    
set_pev(g_Target[id], pev_solidSOLID_TRIGGER)
    
    
wpn_projectile_startpos(id0050ion_mid_origin[id])
    
set_pev(g_Target[id], pev_originion_mid_origin[id])
    
    
ion_beacon(id)

    
set_task(25.0"Trace_Ready"id)
}

public 
ion_beacon (id)
{
    if (!
g_Target[id])
        return

    
i_Pitch[id] += 3
    i_BeaconTime
[id] -= 0.03
    
    
if(i_Pitch[id] > 255)
    
i_Pitch[id] = 255
    
    
if(i_BeaconTime[id] < 0.30)
    
i_BeaconTime[id] = 0.30
    
    emit_sound
(g_Target[id], CHAN_ITEMSOUND_BEEPVOL_NORMATTN_NORM0i_Pitch[id])
    
set_task(i_BeaconTime[id], "ion_beacon"id)
}

public 
Trace_Ready(id)
{
    
remove_task(id)

    new 
Float:mid_origin[33][3]
    
pev(g_Target[id],pev_origin,mid_origin[id])

    
beam_origin[id][0][0] = mid_origin[id][0] + 300.0
    beam_origin
[id][0][1] = mid_origin[id][1] + 150.0
    beam_origin
[id][0][2] = mid_origin[id][2]
    
g_degrees[id][0] = 0.0

    beam_origin
[id][1][0] = mid_origin[id][0] + 300.0
    beam_origin
[id][1][1] = mid_origin[id][1] - 150.0
    beam_origin
[id][1][2] = mid_origin[id][2]
    
g_degrees[id][1] = 45.0

    beam_origin
[id][2][0] = mid_origin[id][0] - 300.0
    beam_origin
[id][2][1] = mid_origin[id][1] - 150.0
    beam_origin
[id][2][2] = mid_origin[id][2]
    
g_degrees[id][2] = 90.0

    beam_origin
[id][3][0] = mid_origin[id][0] - 300.0
    beam_origin
[id][3][1] = mid_origin[id][1] + 150.0
    beam_origin
[id][3][2] = mid_origin[id][2]
    
g_degrees[id][3] = 135.0

    beam_origin
[id][4][0] = mid_origin[id][0] + 150.0
    beam_origin
[id][4][1] = mid_origin[id][1] + 300.0
    beam_origin
[id][4][2] = mid_origin[id][2]
    
g_degrees[id][4] = 180.0

    beam_origin
[id][5][0] = mid_origin[id][0] + 150.0
    beam_origin
[id][5][1] = mid_origin[id][1] - 300.0
    beam_origin
[id][5][2] = mid_origin[id][2]
    
g_degrees[id][5] = 225.0

    beam_origin
[id][6][0] = mid_origin[id][0] - 150.0
    beam_origin
[id][6][1] = mid_origin[id][1] - 300.0
    beam_origin
[id][6][2] = mid_origin[id][2]
    
g_degrees[id][6] = 270.0

    beam_origin
[id][7][0] = mid_origin[id][0] - 150.0
    beam_origin
[id][7][1] = mid_origin[id][1] + 300.0
    beam_origin
[id][7][2] = mid_origin[id][2]
    
g_degrees[id][7] = 315.0
    
    ion_mid_origin
[id] = mid_origin[id]

    new 
Float:addtime
    
for(new i8i++) 
    {
        
addtime addtime 0.3
        
new param[3]
        
param[0] = i
        param
[1] = id
        set_task
(0.0 addtime"Trace_Start"_,param2)
    }

    
Laser_Rotate(id)
    
    
emit_sound(g_Target[id], CHAN_ITEMSOUND_READYVOL_NORMATTN_NORM0PITCH_NORM)
    
    for(new 
Float:0.07.5+= 0.01)
    
    
set_task(i+3.0"Laser_Rotate"id)

    
set_task(2.9,"AddSpeed"id)
    
set_task(11.5,"CreateFire"id)
    
set_task(12.5,"ClearLasers"id)
    
set_task(15.2,"FireIonCannon"id)
    
    return 
PLUGIN_CONTINUE
}

public 
AddSpeed(id
{
    if(!
g_Target[id]) 
        return 
PLUGIN_CONTINUE
    
    
if(ROTATION_SPEED[id] > 1.0ROTATION_SPEED[id] = 1.0
    ROTATION_SPEED
[id] += 0.1
    
    set_task
(0.6,"AddSpeed"id)
    
    return 
PLUGIN_CONTINUE
}

public 
CreateFire(id
{
    if(!
g_Target[id]) 
        return 
PLUGIN_CONTINUE

    engfunc
(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYion_mid_origin[id], 0)
    
write_byte(TE_SPRITE)
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][0])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][1])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][2] + 100)
    
write_short(ReadyFire)
    
write_byte(30)
    
write_byte(200)
    
message_end()

    
set_task(1.5"CreateFire"id)
    
    return 
PLUGIN_CONTINUE
}

public 
ClearLasers(id)
{
    
remove_task(1018+id)
}

public 
Laser_Rotate(id)
{
    
g_distance[id] -= 0.467
    
for(new i8i++) 
    {
        
g_degrees[id][i] += ROTATION_SPEED[id]
        
        if(
g_degrees[id][i] > 360.0)
        
g_degrees[id][i] -= 360.0

        
new Float:tmp[33][3]
        
tmp[id] = ion_mid_origin[id]

        
tmp[id][0] += floatsin(g_degrees[id][i], degrees) * g_distance[id]
        
tmp[id][1] += floatcos(g_degrees[id][i], degrees) * g_distance[id]
        
tmp[id][2] += 0.0
        beam_origin
[id][i] = tmp[id]
    }
}

public 
Trace_Start(param[]) 
{
    new 
param[0]
    new 
id param[1]

    new 
Float:get_random_zFloat:SkyOrigin[33][3]
    
SkyOrigin[id] = tlx_distance_to_sky(g_Target[id])
    
get_random_z random_float(300.0SkyOrigin[id][2])

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYbeam_origin[id][i], 0)
    
write_byte(TE_SPRITE)
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][0])
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][1])
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][2] + get_random_z)
    
write_short(BlueFire)
    
write_byte(10)
    
write_byte(100)
    
message_end()
    
    
TraceAll(param)
}

public 
TraceAll(param[]) 
{
    new 
param[0]
    new 
id param[1]

    new 
Float:SkyOrigin[33][3]
    
SkyOrigin[id] = tlx_distance_to_sky(g_Target[id])
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYbeam_origin[id][i], 0)
    
write_byte(TE_BEAMPOINTS)
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][0])
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][1])
    
engfunc(EngFunc_WriteCoordSkyOrigin[id][2])

    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][0])
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][1])
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][2])
    
write_short(IonBeam)
    
write_byte(0)
    
write_byte(0)
    
write_byte(1)
    
write_byte(50)
    
write_byte(0)
    
write_byte(255)
    
write_byte(255)
    
write_byte(255)
    
write_byte(255)
    
write_byte(0)
    
message_end()
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYbeam_origin[id][i], 0)
    
write_byte(TE_SPRITE)
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][0])
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][1])
    
engfunc(EngFunc_WriteCoordbeam_origin[id][i][2])
    
write_short(LaserFlame)
    
write_byte(5)
    
write_byte(200)
    
message_end()
    
    
set_task(0.08"TraceAll"1018+idparam2)
}

public 
FireIonCannon(id
{
    new 
= -1
    
while((engfunc(EngFunc_FindEntityInSphereiion_mid_origin[id], ION_RADIUS 8000)) != 0)
    {
        if(
pev_valid(i) && pev(ipev_flags) & (FL_CLIENT FL_FAKECLIENT)) 
        {
            
message_begin(MSG_ONE_UNRELIABLEIonShake, {0,0,0}, i)
            
write_short(255<<14)
            
write_short(10<<14)
            
write_short(255<<14)
            
message_end()
        }
        continue
    }

    new 
Float:skyOrigin[33][3]
    
skyOrigin[id] = tlx_distance_to_sky(g_Target[id])

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYion_mid_origin[id], 0)
    
write_byte(TE_BEAMPOINTS
    
engfunc(EngFunc_WriteCoordskyOrigin[id][0])
    
engfunc(EngFunc_WriteCoordskyOrigin[id][1])
    
engfunc(EngFunc_WriteCoordskyOrigin[id][2])

    
engfunc(EngFunc_WriteCoordion_mid_origin[id][0])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][1])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][2])
    
write_short(IonBeam)
    
write_byte(0)
    
write_byte(0)
    
write_byte(15)
    
write_byte(255)
    
write_byte(0)
    
write_byte(255)
    
write_byte(255)
    
write_byte(255)
    
write_byte(255)
    
write_byte(0)
    
message_end()

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYion_mid_origin0)
    
write_byte(TE_BEAMCYLINDER)
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][0])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][1])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][2])

    
engfunc(EngFunc_WriteCoordion_mid_origin[id][0])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][1])
    
engfunc(EngFunc_WriteCoordion_mid_origin[id][2] + ION_RADIUS 1000.0)
    
write_short(Shockwave)
    
write_byte(0)
    
write_byte(0)
    
write_byte(100)
    
write_byte(150)
    
write_byte(0)
    
write_byte(0)
    
write_byte(100)
    
write_byte(250)
    
write_byte(150)
    
write_byte(0)
    
message_end()

    for(new 
16i++) 
    {
        
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYion_mid_origin[id], 0)
        
write_byte(TE_SPRITETRAIL)
        
engfunc(EngFunc_WriteCoordion_mid_origin[id][0])
        
engfunc(EngFunc_WriteCoordion_mid_origin[id][1])
        
engfunc(EngFunc_WriteCoordion_mid_origin[id][2])
        
engfunc(EngFunc_WriteCoordion_mid_origin[id][0])
        
engfunc(EngFunc_WriteCoordion_mid_origin[id][1])
        
engfunc(EngFunc_WriteCoordion_mid_origin[id][2] + 200)
        
write_short(BlueFlare)
        
write_byte(50)
        
write_byte(random_num(2730))
        
write_byte(10)
        
write_byte(random_num(3070))
        
write_byte(40)
        
message_end()
    }
    
    
wpn_radius_damage(g_Target[id], ION_RADIUSION_MAXDAMAGE)
    
emit_sound(g_Target[id], CHAN_ITEMSOUND_ATTACKVOL_NORMATTN_NORM0PITCH_NORM)
    
    
ResetAll(id)
}

ResetAll(id)
{
    
set_pev (g_Target[id], pev_flagsFL_KILLME)
    
g_Target[id] = 0
    gHasIon
[id] = false
}

stock Float:tlx_distance_to_sky(id)
{
    new 
Float:TraceEnd[3]
    
pev(idpev_originTraceEnd)

    new 
Float:f_dest[3]
    
f_dest[0] = TraceEnd[0]
    
f_dest[1] = TraceEnd[1]
    
f_dest[2] = TraceEnd[2] + 8192.0

    
new resFloat:SkyOrigin[3]
    
engfunc(EngFunc_TraceLineTraceEndf_destIGNORE_MONSTERS IGNORE_GLASSidres)
    
get_tr2(resTR_vecEndPosSkyOrigin)

    return 
SkyOrigin
}

stock Float:is_user_outside(id
{
    new 
Float:origin[3], Float:dist

    pev
(idpev_originorigin)
    
dist origin[2]

    while(
engfunc(EngFunc_PointContentsorigin) == CONTENTS_EMPTY)
        
origin[2] += 5.0 
    
if(engfunc(EngFunc_PointContentsorigin) == CONTENTS_SKY)
        return (
origin[2] - dist)

    return 
0.0
}

stock ProgressBar(idsecondsposition)
{
    
message_begin(MSG_ONEget_user_msgid("BarTime"), {000}, id)
    
write_byte(seconds)
    
write_byte(position)
    
message_end()
}

public 
zp_extra_item_selected(iditemid)
{
    if (
itemid == gItemID)
    {
        if (
gHasIon[id])
        {
            
zp_set_user_ammo_packs (idzp_get_user_ammo_packs (id) + gCost)
            
client_print (idprint_chat"[ZP] You already have a %s"WPN_NAME)
        }
        else 
        {
            
gHasIon[id] = true
            
            emit_sound
(idCHAN_WEAPON"items/gunpickup2.wav"1.0ATTN_NORM0PITCH_NORM)
            
            
client_print (idprint_chat"[ZP] You now have a %s"WPN_NAME)
        }
    }
}

public 
fw_PlayerPreThink(id)
{
    if (!
gHasIon[id] || !is_user_alive (id))
        return 
FMRES_IGNORED
    
    
if (pev(idpev_button) & IN_USE)
    {
        if (!
bInUse[id])
        {
            
bInUse[id] = true
            
if (g_Target[id])
            {
                
client_print (idprint_center"You already planted a beacon")
                return 
FMRES_IGNORED
            
}
            else if (
is_user_outside(id))
            {
                
g_Target[id] = 0
                i_Pitch
[id] = 97
                i_BeaconTime
[id] = 1.12
                g_distance
[id] = 350.0
                ROTATION_SPEED
[id] = 0.0
                
                emit_sound 
(idCHAN_WEAPONSOUND_START_PLANTVOL_NORMATTN_NORM0PITCH_NORM)
                
                
ProgressBar (id50)
                
set_task (5.0,"ion_planted"id+5000)
            }
            else
            {
                
client_print (idprint_center,"You need to be outside to fire with an ion cannon")
            }
        }
    }
    else if (
bInUse[id])
    {
        
bInUse[id] = false
        emit_sound
(g_Target[id], CHAN_WEAPONSOUND_STOPVOL_NORMATTN_NORM0PITCH_NORM)
        
ProgressBar (id00)
        
remove_task(id+5000)
    }
    return 
FMRES_IGNORED
}

wpn_projectile_startpos (playerforwrightupFloat:out[3])
{
    new 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3],
    
Float:vRight[3], Float:vUp[3]
    
    
pev(playerpev_originvOrigin)
    
pev(playerpev_v_anglevAngle)
    
    
engfunc(EngFunc_MakeVectorsvAngle)
    
    
global_get(glb_v_forwardvForward)
    
global_get(glb_v_rightvRight)
    
global_get(glb_v_upvUp)
    
    
out[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
    out
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
    out
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock wpn_radius_damage (inflictorFloat:radiusFloat:damage)
{
    new 
Float:vecSrc[3]
    
pev(inflictorpev_originvecSrc)
    
    new 
ent = -1
    
new Float:tmpdmg damage
    
new hitCount 0
    
new Float:kickback 1.0
    
    
new Float:Tabsmin[3], Float:Tabsmax[3], Float:vecSpot[3],
    
Float:Aabsmin[3], Float:Aabsmax[3], Float:vecSee[3]
    new 
trRes
    
new Float:flFraction
    
new Float:vecEndPos[3]
    new 
Float:distance
    
new Float:origin[3], Float:vecPush[3]
    new 
Float:invlen
    
new Float:velocity[3]
    
    new 
Float:falloff
    
if (radius 0.0)
        
falloff damage radius
    
else
        
falloff 1.0
    
    
while((ent engfunc(EngFunc_FindEntityInSphereentvecSrcradius)) != 0)
    {
        if(!
pev_valid(ent))
            continue
        if(!(
pev(entpev_flags) & (FL_CLIENT FL_FAKECLIENT FL_MONSTER)))
            continue
        
        
tmpdmg damage

        pev
(entpev_absminTabsmin)
        
pev(entpev_absmaxTabsmax)
        
vecSpot[0] = (Tabsmin[0] + Tabsmax[0]) * 0.5
        vecSpot
[1] = (Tabsmin[1] + Tabsmax[1]) * 0.5
        vecSpot
[2] = (Tabsmin[2] + Tabsmax[2]) * 0.5
        
        pev
(inflictorpev_absminAabsmin)
        
pev(inflictorpev_absmaxAabsmax)
        
vecSee[0] = (Aabsmin[0] + Aabsmax[0]) * 0.5
        vecSee
[1] = (Aabsmin[1] + Aabsmax[1]) * 0.5
        vecSee
[2] = (Aabsmin[2] + Aabsmax[2]) * 0.5
        
        engfunc
(EngFunc_TraceLinevecSeevecSpot0inflictortrRes)
        
get_tr2(trResTR_flFractionflFraction)

        if (
flFraction >= 0.9 || get_tr2(trResTR_pHit) == ent)
        {
            
get_tr2(trResTR_vecEndPosvecEndPos)

            
distance get_distance_f(vecSrcvecEndPos) * falloff
            tmpdmg 
-= distance
            
if (tmpdmg 0.0)
                
tmpdmg 0.0
            
            origin
[0] = vecSpot[0] - vecSee[0]
            
origin[1] = vecSpot[1] - vecSee[1]
            
origin[2] = vecSpot[2] - vecSee[2]
            
            
invlen 1.0/get_distance_f(vecSpotvecSee)
            
vecPush[0] = origin[0] * invlen
            vecPush
[1] = origin[1] * invlen
            vecPush
[2] = origin[2] * invlen

            pev
(entpev_velocityvelocity)
            
velocity[0] = velocity[0] + vecPush[0] * tmpdmg kickback
            velocity
[1] = velocity[1] + vecPush[1] * tmpdmg kickback
            velocity
[2] = velocity[2] + vecPush[2] * tmpdmg kickback

            
if (tmpdmg 60.0)
            {
                
velocity[0] *= 12.0
                velocity
[1] *= 12.0
                velocity
[2] *= 12.0
            
}
            else
            {
                
velocity[0] *= 4.0
                velocity
[1] *= 4.0
                velocity
[2] *= 4.0
            
}
            
set_pev(entpev_velocityvelocity)
        }

        if(
damage_user(entinflictorfloatround(tmpdmg)))
        {
            
hitCount++
        }
    }
    return 
hitCount
}

damage_user(victimattackerdmg_take)
{
    new 
flags pev(victimpev_flags)
    new 
Float:takeDamage
    pev
(victimpev_takedamagetakeDamage)
    
    if(
flags FL_GODMODE || takeDamage == 0.0)
        return 
0
    
    
if(flags & (FL_CLIENT FL_FAKECLIENT))
    {
        if(
is_team_attack(attackervictim))
        {
            return 
0
        
}
        else if(!
is_user_alive(victim))
            return 
0
    
}
    
    new 
Float:health
    pev
(victimpev_healthhealth)
    if(
health <= 0.0)
        return 
0
    
    health 
-= float(dmg_take)
    
    
set_pev(victimpev_dmg_inflictorattacker)
    
    if(
health 0)
        
set_pev(victimpev_healthhealth)
    else
    {
        
kill_user(victimattacker)
        
dmg_take = -1
    
}
    return 
dmg_take
}

kill_user(victimattacker)
{
    new 
flags pev(victimpev_flags)
    new 
bool:isVictimMonster = (flags FL_MONSTER) ? true false
    
new Float:takeDamage
    pev
(victimpev_takedamagetakeDamage)
    
    if(
flags FL_GODMODE || takeDamage == 0.0)
        return 
0
    
    
if(!isVictimMonster)
    {
        if(
is_team_attack(attackervictim))
            return 
0
    
}

    if(
isVictimMonster)
    {
        
set_pev(victimpev_health, -1)
    }
    else
    {
        
set_msg_block(g_msgDeathMsgBLOCK_ONCE)
        
user_kill(victim1)
    }
    
    new 
Float:frags
    pev
(attackerpev_fragsfrags)
    
frags++
    
    
set_pev(attackerpev_fragsfrags)
    
    if(
isVictimMonster)
        return 
1
    
    
new aname[32], aauthid[32], ateam[10]
    
get_user_name(attackeraname31)
    
get_user_team(attackerateam9)
    
get_user_authid(attackeraauthid31)
    
     if(
attacker != victim
    {
         new 
vname[32], vauthid[32], vteam[10]
        
get_user_name(victimvname31)
        
get_user_team(victimvteam9)
        
get_user_authid(victimvauthid31)
    }
    return 
1
}

bool:is_team_attack(attackervictim)
{
    if(!(
pev(victimpev_flags) & (FL_CLIENT FL_FAKECLIENT)))
        return 
false
    
    
if(get_user_team(victim) == get_user_team(attacker))
        return 
true
    
    
return false
Аватара пользователя
Misha90
 
Сообщения: 94
Зарегистрирован: 05 апр 2017, 20:06
Благодарил (а): 49 раз.
Поблагодарили: 2 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Ставить ion cannon на mouse1  [Решено]

Сообщение Subb98 » 16 июн 2017, 08:19

Код: Выделить всё
if (pev(idpev_button) & IN_USE

>>

Код: Выделить всё
if (pev(idpev_button) & IN_ATTACK
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Ставить ion cannon на mouse1

Сообщение Misha90 » 16 июн 2017, 13:52

Subb98 писал(а):
Код: Выделить всё
if (pev(id, pev_button) & IN_USE)

>>

Код: Выделить всё
if (pev(id, pev_button) & IN_ATTACK)


Спасибо
Аватара пользователя
Misha90
 
Сообщения: 94
Зарегистрирован: 05 апр 2017, 20:06
Благодарил (а): 49 раз.
Поблагодарили: 2 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#


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

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

Сейчас этот форум просматривают: Bing [Bot] и гости: 8

cron