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

vip_menu_jetpack_T_terke2 ошибка при полетё и выстреле

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

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

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

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

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

vip_menu_jetpack_T_terke2 ошибка при полетё и выстреле

Сообщение kross » 14 окт 2016, 21:30

Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
native zp_get_user_zombie(id)
native zp_register_extra_item(const name[], costteams)

new const 
ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/Reega_kz/v_jetpack_T.mdl"
new const ModelPJetPack[] = "models/Reega_kz/p_jetpack_T.mdl"
new const ModelWJetPack[] = "models/Reega_kz/w_jetpack_T.mdl"
new const ModelRocket[] = "models/Reega_kz/s_jetpack_T.mdl"
new const SoundPickup[] = "items/gunpickup2.wav"
new const SoundShoot[] = "Reega_kz/jet_T_shoot.wav"
new const SoundTravel[] = "zs/bfuu.wav"
new const SoundFly[] = "Reega_kz/jet_T_fly.wav"
new const SoundBlow[] = "Reega_kz/jet_T_fly_empty.wav"

new bool:bHasJetPack[33]
new 
Float:fJetpackFuel[33]
new 
Float:fLastShoot[33]
new 
SprExpSprTrailiAllocInfoTargetiMaxClientsMsgSayText
new CvarMaxFuelCvarRadiusCvarDamageCvarSpeedCvarCooldownCvarRegenCvarRocketSpeed
new Float:CMaxFuelFloat:CRadiusFloat:CDamageCSpeedFloat:CCooldownFloat:CRegenCRocketSpeed
#define IsPlayer(%0) (1<=%0<=iMaxClients)
#define ZP_TEAM_HUMAN (1<<1)
#define ZP_PLUGIN_HANDLED 97
#define PevEntType pev_flSwimTime
#define EntTypeJetPack 3904
#define EntTypeRocket 9340

// Uncomment this to draw ring effect
#define DrawRing

// Uncomment this to draw flame effect
// #define DrawFlame

#if defined DrawRing
new SprRing
#endif

#if defined DrawFlame
new SprFlame
#endif

public plugin_precache()
{
    
precache_sound(SoundPickup)
    
precache_sound(SoundShoot)
    
precache_sound(SoundTravel)
    
precache_sound(SoundFly)
    
precache_sound(SoundBlow)

    
SprExp precache_model("sprites/Reega_kz/jet_T_exp.spr")
    
SprTrail precache_model("sprites/Reega_kz/thanatos_smoke.spr")

    
#if defined DrawFlame
    
SprFlame precache_model("sprites/xfireball3.spr")
    
#endif

    #if defined DrawRing
    
SprRing precache_model("sprites/shockwave.spr")
    
#endif

    
precache_model(ModelVJetPack)
    
precache_model(ModelPJetPack)
    
precache_model(ModelWJetPack)
    
precache_model(ModelRocket)
}

public 
plugin_init()
{
    
register_plugin("New Jetpack""0.0.2""Bad_Bud,ZmOutStanding,Connor,wbyokomo")

    
register_event("HLTV""OnNewRound""a""1=0""2=0")
    
register_logevent("OnRoundEnd"2"1=Round_End")

    
RegisterHam(Ham_Killed"player""OnPlayerKilled")
    
RegisterHam(Ham_Player_Jump"player""OnPlayerJump")
    
RegisterHam(Ham_Weapon_SecondaryAttack"weapon_knife""OnKnifeSecAtkPost"1)
    
RegisterHam(Ham_Item_Deploy"weapon_knife""OnKnifeDeployPost"1)

    
register_forward(FM_PlayerPreThink"OnPlayerPreThink")
    
register_forward(FM_Touch"OnTouch")

    
CvarMaxFuel register_cvar("jp_maxfuel""250.0")
    
CvarRadius register_cvar("jp_radius""250.0")
    
CvarDamage register_cvar("jp_damage""600.0")
    
CvarSpeed register_cvar("jp_speed""300")
    
CvarCooldown register_cvar("jp_cooldown""10.0")
    
CvarRegen register_cvar("jp_regen""0.5")
    
CvarRocketSpeed register_cvar("jp_rocket_speed""1500")

    
iMaxClients get_maxplayers()
    
MsgSayText get_user_msgid("SayText")
    
//ItemJetPack = zp_register_extra_item("Jetpack", 35, ZP_TEAM_HUMAN)

    
register_clcmd("drop""CmdDropJP")
}

public 
plugin_cfg()
{
    
iAllocInfoTarget engfunc(EngFunc_AllocString"info_target")
}

public 
client_putinserver(id)
{
    
ResetValues(id)
}

public 
client_disconnect(id)
{
    
ResetValues(id)
}

public 
OnNewRound()
{
    
RemoveAllJetPack()
    
CMaxFuel get_pcvar_float(CvarMaxFuel)
    
CRadius get_pcvar_float(CvarRadius)
    
CDamage get_pcvar_float(CvarDamage)
    
CSpeed get_pcvar_num(CvarSpeed)
    
CCooldown get_pcvar_float(CvarCooldown)
    
CRegen get_pcvar_float(CvarRegen)
    
CRocketSpeed get_pcvar_num(CvarRocketSpeed)
}

public 
OnRoundEnd()
{
    
RemoveAllJetPack()
}

public 
OnPlayerKilled(id)
{
    if(
bHasJetPack[id]) DropJetPack(id);

    
ResetValues(id)
}

public 
OnPlayerJump(id)
{
    if(
bHasJetPack[id] && fJetpackFuel[id] > 0.0 && get_user_weapon(id) == CSW_KNIFE && pev(idpev_button) & IN_DUCK && ~pev(idpev_flags) & FL_ONGROUND)
    {
        static 
Float:vVelocity[3], Float:upSpeed
        pev
(idpev_velocityvVelocity)
        
upSpeed vVelocity[2] + 35.0
        velocity_by_aim
(idCSpeedvVelocity)
        
vVelocity[2] = upSpeed 300.0 300.0 upSpeed
        set_pev
(idpev_velocityvVelocity)

        
#if defined DrawFlame
        
pev(idpev_originvVelocity)
        
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvVelocity0)
        
write_byte(TE_SPRITE)
        
engfunc(EngFunc_WriteCoordvVelocity[0])
        
engfunc(EngFunc_WriteCoordvVelocity[1])
        
engfunc(EngFunc_WriteCoordvVelocity[2])
        
write_short(SprFlame)
        
write_byte(8)
        
write_byte(128)
        
message_end()
        
#endif

        
fJetpackFuel[id] > 80.0 emit_sound(idCHAN_STREAMSoundFlyVOL_NORMATTN_NORM0,  PITCH_NORM) : emit_sound(idCHAN_STREAMSoundBlowVOL_NORMATTN_NORM0PITCH_NORM);
        
fJetpackFuel[id] -= 1.0
    
}
}

public 
plugin_natives ()
{
    
register_native("give_jet_pack""native_give_weapon_add"1)
}

public 
native_give_weapon_add(id)
{
    
give_jetpack(id)
}

public 
zp_user_infected_pre(id)
{
    if(
bHasJetPack[id]) DropJetPack(id);

    
ResetValues(id)
}

public 
give_jetpack(id)
{
    if(
bHasJetPack[id])
    {
        
zp_colored_print(id"^x04[ZP]^x01 You already have this item!")
        return 
ZP_PLUGIN_HANDLED;
    }

    
bHasJetPack[id] = true
    zp_colored_print
(id"^x04[ZP]^x01 Чтобы использовать Джет:^x04 Пробел+CTRL^x01 -- нажми. |^x04 Удачи!^x01 -- Танатос джет :D")
    
engclient_cmd(id"weapon_knife")
    
ReplaceModel(id)

    return 
PLUGIN_CONTINUE;
}

public 
OnKnifeSecAtkPost(ent2)
{
    if(
pev_valid(ent2) == 2)
    {
        static 
idFloat:ctime
        id 
get_pdata_cbase(ent2414)
        
ctime get_gametime()
        if(
is_user_alive(id) && bHasJetPack[id] && fLastShoot[id] < ctime)
        {
            new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
            if(
ent)
            {
                
engfunc(EngFunc_SetModelentModelRocket)
                
engfunc(EngFunc_SetSizeentFloat:{0.00.00.0}, Float:{0.00.00.0})
                new 
Float:fOrigin[3]
                
pev(idpev_originfOrigin)
                
fOrigin[2] += 16.0
                engfunc
(EngFunc_SetOriginentfOrigin)
                
set_pev(entpev_classnameClassnameRocket)
                
set_pev(entpev_dmg100.0)
                
set_pev(entpev_ownerid)
                
velocity_by_aim(idCRocketSpeedfOrigin)
                
set_pev(entpev_velocityfOrigin)
                new 
Float:vecAngles[3]
                
engfunc(EngFunc_VecToAnglesfOriginvecAngles)
                
set_pev(entpev_anglesvecAngles)
                
set_pev(entPevEntTypeEntTypeRocket)    
                
set_pev(entpev_movetypeMOVETYPE_FLY)
                
set_pev(entpev_effectsEF_LIGHT)
                
set_pev(entpev_solidSOLID_BBOX)

                
emit_sound(idCHAN_STATICSoundShootVOL_NORMATTN_NORM0PITCH_NORM)
                
emit_sound(entCHAN_WEAPONSoundTravelVOL_NORMATTN_NORM0PITCH_NORM)

                
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
                
write_byte(TE_BEAMFOLLOW)
                
write_short(ent)
                
write_short(SprTrail)
                
write_byte(15)
                
write_byte(15)
                
write_byte(0)
                
write_byte(191)
                
write_byte(255)
                
write_byte(192)
                
message_end()

                
fLastShoot[id] = ctime+CCooldown
            
}
            else
            {
                
client_print(idprint_chat"[JpDebug] Failed to create rocket!")
                
fLastShoot[id] = ctime+1.5
            
}
        }
    }
}

public 
OnKnifeDeployPost(ent)
{
    if(
pev_valid(ent) == 2)
    {
        static 
idid get_pdata_cbase(ent414)
        if(
is_user_alive(id) && bHasJetPack[id]) ReplaceModel(id);
    }
}

public 
OnPlayerPreThink(id)
{
    if(
bHasJetPack[id] && fJetpackFuel[id] < CMaxFuel)
    {
        static 
buttonbutton pev(idpev_button)
        if(!(
button IN_DUCK) && !(button IN_JUMP)) fJetpackFuel[id] += CRegen;
    }
}

public 
OnTouch(entid)
{
    if(
pev_valid(ent))
    {
        if(
pev(entPevEntType) == EntTypeJetPack)
        {
            if(
IsPlayer(id) && is_user_alive(id) && !zp_get_user_zombie(id) && !bHasJetPack[id])
            {
                
engfunc(EngFunc_RemoveEntityent)
                
bHasJetPack[id] = true
                emit_sound
(idCHAN_STATICSoundPickupVOL_NORMATTN_NORM0PITCH_NORM)
                
engclient_cmd(id,"weapon_knife")
                
ReplaceModel(id)
            }
        }
        else if(
pev(entPevEntType) == EntTypeRocket)
        {
            static 
Float:fOrigin[3]
            
pev(entpev_originfOrigin)

            
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin0)
            
write_byte(TE_EXPLOSION)
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2])
            
write_short(SprExp)
            
write_byte(10)
            
write_byte(30)
            
write_byte(10)
            
message_end()

            
#if defined DrawRing
            
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin0)
            
write_byte(TE_BEAMCYLINDER)
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2])
            
engfunc(EngFunc_WriteCoordfOrigin[0])
            
engfunc(EngFunc_WriteCoordfOrigin[1])
            
engfunc(EngFunc_WriteCoordfOrigin[2]+555.0)
            
write_short(SprRing)
            
write_byte(0)
            
write_byte(1)
            
write_byte(6)
            
write_byte(8)
            
write_byte(10)
            
write_byte(0)
             
write_byte(191)
             
write_byte(255)
            
write_byte(192)
            
write_byte(5)
            
message_end()
            
#endif

            
static attackerattacker pev(entpev_owner)
            if(!
is_user_connected(attacker))
            {
                
engfunc(EngFunc_RemoveEntityent)
                return 
FMRES_IGNORED;
            }

            if(
pev_valid(id) && !is_user_connected(id))
            {
                static 
szClassname[32]
                
pev(idpev_classnameszClassname31)
                if(
equal(szClassname"func_breakable") && (pev(idpev_solid) != SOLID_NOT))
                {
                    
dllfunc(DLLFunc_Useident)
                }
            }

            static 
victimvictim = -1
            
while((victim engfunc(EngFunc_FindEntityInSpherevictimfOriginCRadius)) != 0)
            {
                if(
is_user_alive(victim) && zp_get_user_zombie(victim))
                {
                    static 
Float:originV[3], Float:distFloat:damage
                    pev
(victimpev_originoriginV)
                    
dist get_distance_f(fOriginoriginV)
                    
damage CDamage-(CDamage/CRadius)*dist
                    
if(damage 0.0)
                    {
                        
ExecuteHamB(Ham_TakeDamagevictimentattackerdamageDMG_BULLET)
                        
// client_print(attacker, print_chat, "[JpDebug] Rocket damage: %.1f", damage)
                    
}
                }
            }

            
engfunc(EngFunc_RemoveEntityent)
        }
    }

    return 
FMRES_IGNORED;
}

public 
CmdDropJP(id)
{
    if(
is_user_alive(id) && bHasJetPack[id] && get_user_weapon(id) == CSW_KNIFE)
    {
        
DropJetPack(id)
        
ResetValues(id)
        
set_pev(idpev_viewmodel2"models/v_knife.mdl")
        
set_pev(idpev_weaponmodel2"models/p_knife.mdl")
        return 
PLUGIN_HANDLED;
    }

    return 
PLUGIN_CONTINUE;
}

ReplaceModel(id)
{
    
set_pev(idpev_viewmodel2ModelVJetPack)
    
set_pev(idpev_weaponmodel2ModelPJetPack)
}

DropJetPack(id)
{
    new 
Float:fAim[3], Float:fOrigin[3]
    
velocity_by_aim(id64fAim)
    
pev(idpev_originfOrigin)
    
fOrigin[0] += fAim[0]
    
fOrigin[1] += fAim[1]

    new 
ent engfunc(EngFunc_CreateNamedEntityiAllocInfoTarget)
    if(
ent)
    {
        
engfunc(EngFunc_SetModelentModelWJetPack)
        
engfunc(EngFunc_SetSizeentFloat:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
        
engfunc(EngFunc_SetOriginentfOrigin)
        
set_pev(entpev_classnameClassnameJetPack)
        
set_pev(entpev_dmg100.0)
        
set_pev(entPevEntTypeEntTypeJetPack)
        
set_pev(entpev_movetypeMOVETYPE_TOSS)
        
set_pev(entpev_solidSOLID_TRIGGER)
    }
}

RemoveAllJetPack()
{
    new 
ent engfunc(EngFunc_FindEntityByString, -1"classname"ClassnameJetPack)
    while(
ent 0)
    {
        
engfunc(EngFunc_RemoveEntityent)
        
ent engfunc(EngFunc_FindEntityByString, -1"classname"ClassnameJetPack)
    }
}

ResetValues(id)
{
    
bHasJetPack[id] = false
    fJetpackFuel
[id] = get_pcvar_float(CvarMaxFuel)
}

zp_colored_print(target, const message[], any:...)
{
    static 
buffer[512], iargscount
    argscount 
numargs()

    if (!
target)
    {
        static 
iPlayers[32], iNumjplayer
        get_players
(iPlayersiNum"ch")
        for (
0iNumj++)
        {
            
player iPlayers[j]
            static 
changed[5], changedcount
            changedcount 
0

            
for (2argscounti++)
            {
                if (
getarg(i) == LANG_PLAYER)
                {
                    
setarg(i0player)
                    
changed[changedcount] = i
                    changedcount
++
                }
            }

            
vformat(buffercharsmax(buffer), message3)
            
message_begin(MSG_ONE_UNRELIABLEMsgSayText_player)
            
write_byte(player)
            
write_string(buffer)
            
message_end()

            for (
0changedcounti++) setarg(changed[i], 0LANG_PLAYER);
        }
    }
    else
    {
        
vformat(buffercharsmax(buffer), message3)
        
message_begin(MSG_ONEMsgSayText_target)
        
write_byte(target)
        
write_string(buffer)
        
message_end()
    }
Аватара пользователя
kross
 
Сообщения: 1
Зарегистрирован: 14 окт 2016, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

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

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

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