Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Помогите добавить проверку

Статус пользователя DANDY
сообщение 23.11.2015, 23:57
Сообщение #1
Стаж: 15 лет

Сообщений: 270
Благодарностей: 38
Полезность: 120

Здравствуйте.

Прошу помочь с добавлением проверки: Если игрок с флагом b ИЛИ с флагом t, то разрешить покупку джетпака.

sma

Код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
native zp_get_user_zombie(id)
native zp_register_extra_item(const name[], cost, teams)

new const ClassnameJetPack[] = "n4d_jetpack"
new const ClassnameRocket[] = "n4d_bazooka"
new const ModelVJetPack[] = "models/ls/v_jp_lars.mdl"
new const ModelPJetPack[] = "models/p_egon.mdl"
new const ModelWJetPack[] = "models/w_egon.mdl"
new const ModelRocket[] = "models/rpgrocket.mdl"
new const SoundPickup[] = "items/gunpickup2.wav"
new const SoundShoot[] = "ls/at4-1.wav"
new const SoundTravel[] = "ls/bfuu.wav"
new const SoundFly[] = "ls/fly.wav"
new const SoundBlow[] = "ls/blow.wav"

new bool:bHasJetPack[33]
new Float:fJetpackFuel[33]
new Float:fLastShoot[33]
new SprExp, SprTrail, ItemJetPack, iAllocInfoTarget, iMaxClients, MsgSayText
new CvarMaxFuel, CvarRadius, CvarDamage, CvarSpeed, CvarCooldown, CvarRegen, CvarRocketSpeed, CvarCount
new Float:CMaxFuel, Float:CRadius, Float:CDamage, CSpeed, Float:CCooldown, Float:CRegen, CRocketSpeed, CCount
#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

// Uncomment this to draw flame effect
#define DrawTrail

#if defined DrawTrail
#define TRAIL_LIFE            1
#define TRAIL_WIDTH           8
#define TRAIL_RED               210
#define TRAIL_GREEN           100
#define TRAIL_BLUE        0
#define TRAIL_BRIGTHNESS    200
#endif

#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/zerogxplode.spr")
    SprTrail = precache_model("sprites/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_event("CurWeapon", "check_models", "be")

    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", "800.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")
    CvarCount = register_cvar("jp_count", "3")

    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)
    CCount = get_pcvar_num(CvarCount)
}

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(id, pev_button) & IN_DUCK && ~pev(id, pev_flags) & FL_ONGROUND)
    {
        static Float:vVelocity[3], Float:upSpeed
        pev(id, pev_velocity, vVelocity)
        upSpeed = vVelocity[2] + 35.0
        velocity_by_aim(id, CSpeed, vVelocity)
        vVelocity[2] = upSpeed > 300.0 ? 300.0 : upSpeed
        set_pev(id, pev_velocity, vVelocity)

        #if defined DrawFlame
        pev(id, pev_origin, vVelocity)
        engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vVelocity, 0)
        write_byte(TE_SPRITE)
        engfunc(EngFunc_WriteCoord, vVelocity[0])
        engfunc(EngFunc_WriteCoord, vVelocity[1])
        engfunc(EngFunc_WriteCoord, vVelocity[2])
        write_short(SprFlame)
        write_byte(8)
        write_byte(128)
        message_end()
        #endif

        #if defined DrawTrail
        message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
        write_byte (TE_BEAMFOLLOW)
        write_short (id)
        write_short (SprTrail)
        write_byte (TRAIL_LIFE)
        write_byte (TRAIL_WIDTH)
        write_byte (TRAIL_RED)
        write_byte (TRAIL_GREEN)
        write_byte (TRAIL_BLUE)
        write_byte (TRAIL_BRIGTHNESS)
        message_end()
        #endif

        fJetpackFuel[id] > 80.0 ? emit_sound(id, CHAN_STREAM, SoundFly, VOL_NORM, ATTN_NORM, 0,  PITCH_NORM) : emit_sound(id, CHAN_STREAM, SoundBlow, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        fJetpackFuel[id] -= 1.0
    }
}

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

    ResetValues(id)
}

public zp_extra_item_selected(id, item)
{
    if(item == ItemJetPack)
    {
        if(bHasJetPack[id])
        {
            zp_colored_print(id, "^x04[ZP]^x01 You already have this item!")
            return ZP_PLUGIN_HANDLED;
        }
        else if (jet_count() >= CCount)
        {
            zp_colored_print(id, "^x04[ZP]^x01 Sorry, but maximum JetPack's reached!")
            return ZP_PLUGIN_HANDLED;
        }
        else
        {
            bHasJetPack[id] = true
            //zp_colored_print(id, "^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
            engclient_cmd(id, "weapon_knife")
            ReplaceModel(id)
        }
    }

    return PLUGIN_CONTINUE;
}

jet_count()
{
    new i, count = 0;
    
    for(i = 1; i < 33; i++)
    {
        if(bHasJetPack[i])
        {
            count++;
        }
    }
    return count;
}

public OnKnifeSecAtkPost(ent2)
{
    if(pev_valid(ent2) == 2)
    {
        static id, Float:ctime
        id = get_pdata_cbase(ent2, 41, 4)
        ctime = get_gametime()
        if(is_user_alive(id) && bHasJetPack[id] && fLastShoot[id] < ctime)
        {
            new ent = engfunc(EngFunc_CreateNamedEntity, iAllocInfoTarget)
            if(ent)
            {
                engfunc(EngFunc_SetModel, ent, ModelRocket)
                engfunc(EngFunc_SetSize, ent, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
                new Float:fOrigin[3]
                pev(id, pev_origin, fOrigin)
                fOrigin[2] += 16.0
                engfunc(EngFunc_SetOrigin, ent, fOrigin)
                set_pev(ent, pev_classname, ClassnameRocket)
                set_pev(ent, pev_dmg, 100.0)
                set_pev(ent, pev_owner, id)
                velocity_by_aim(id, CRocketSpeed, fOrigin)
                set_pev(ent, pev_velocity, fOrigin)
                new Float:vecAngles[3]
                engfunc(EngFunc_VecToAngles, fOrigin, vecAngles)
                set_pev(ent, pev_angles, vecAngles)
                set_pev(ent, PevEntType, EntTypeRocket)    
                set_pev(ent, pev_movetype, MOVETYPE_FLY)
                set_pev(ent, pev_effects, EF_LIGHT)
                set_pev(ent, pev_solid, SOLID_BBOX)

                emit_sound(id, CHAN_STATIC, SoundShoot, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
                emit_sound(ent, CHAN_WEAPON, SoundTravel, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

                message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
                write_byte(TE_BEAMFOLLOW)
                write_short(ent)
                write_short(SprTrail)
                write_byte(40)
                write_byte(5)
                write_byte(224)
                write_byte(224)
                write_byte(255)
                write_byte(192)
                message_end()

                //set_pdata_float(ent2, 46, CCooldown, 4)
                //set_pdata_float(ent2, 47, CCooldown, 4)
                //set_pdata_float(ent2, 48, CCooldown, 4)
                set_pdata_float(id, 83, CCooldown, 5)
                fLastShoot[id] = ctime+CCooldown
            }
            else
            {
                client_print(id, print_chat, "[JpDebug] Failed to create rocket!")
                fLastShoot[id] = ctime+1.5
            }
        }
    }
}

public check_models(id)
{
    if (zp_get_user_zombie(id))
    {
        return FMRES_IGNORED
    }
    if(bHasJetPack[id])
    {
        new clip,ammo
        new wpnid = get_user_weapon(id,clip,ammo)
        
        if ( wpnid == CSW_KNIFE )
        {
            ReplaceModel(id)
        }
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}

/*
public OnKnifeDeployPost(ent)
{
    if(pev_valid(ent) == 2)
    {
    static id; id = get_pdata_cbase(ent, 41, 4)
    //if(is_user_alive(id) && bHasJetPack[id]) ReplaceModel(id);
    if(!is_user_alive(id)) return;
    //if(bHasJetPack[id]) ReplaceModel(id);
    if(bHasJetPack[id])
    {
        new clip,ammo
        new wpnid = get_user_weapon(id,clip,ammo)
        
        if ( wpnid == CSW_KNIFE )
        {
        ReplaceModel(id)
        }
    }
    }
}
*/

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

public OnTouch(ent, id)
{
    if(pev_valid(ent))
    {
        if(pev(ent, PevEntType) == EntTypeJetPack)
        {
            if(IsPlayer(id) && is_user_alive(id) && !zp_get_user_zombie(id) && !bHasJetPack[id])
            {
                engfunc(EngFunc_RemoveEntity, ent)
                bHasJetPack[id] = true
                emit_sound(id, CHAN_STATIC, SoundPickup, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
                engclient_cmd(id,"weapon_knife")
                ReplaceModel(id)
            }
        }
        else if(pev(ent, PevEntType) == EntTypeRocket)
        {
            static Float:fOrigin[3]
            pev(ent, pev_origin, fOrigin)

            engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0)
            write_byte(TE_EXPLOSION)
            engfunc(EngFunc_WriteCoord, fOrigin[0])
            engfunc(EngFunc_WriteCoord, fOrigin[1])
            engfunc(EngFunc_WriteCoord, fOrigin[2])
            write_short(SprExp)
            write_byte(40)
            write_byte(30)
            write_byte(10)
            message_end()

            #if defined DrawRing
            engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0)
            write_byte(TE_BEAMCYLINDER)
            engfunc(EngFunc_WriteCoord, fOrigin[0])
            engfunc(EngFunc_WriteCoord, fOrigin[1])
            engfunc(EngFunc_WriteCoord, fOrigin[2])
            engfunc(EngFunc_WriteCoord, fOrigin[0])
            engfunc(EngFunc_WriteCoord, fOrigin[1])
            engfunc(EngFunc_WriteCoord, fOrigin[2]+555.0)
            write_short(SprRing)
            write_byte(0)
            write_byte(1)
            write_byte(6)
            write_byte(8)
            write_byte(10)
            write_byte(224)
            write_byte(224)
            write_byte(255)
            write_byte(192)
            write_byte(5)
            message_end()
            #endif

            static attacker; attacker = pev(ent, pev_owner)
            if(!is_user_connected(attacker))
            {
                engfunc(EngFunc_RemoveEntity, ent)
                return FMRES_IGNORED;
            }

            if(pev_valid(id) && !is_user_connected(id))
            {
                static szClassname[32]
                pev(id, pev_classname, szClassname, 31)
                if(equal(szClassname, "func_breakable") && (pev(id, pev_solid) != SOLID_NOT))
                {
                    dllfunc(DLLFunc_Use, id, ent)
                }
            }

            static victim; victim = -1
            while((victim = engfunc(EngFunc_FindEntityInSphere, victim, fOrigin, CRadius)) != 0)
            {
                if(is_user_alive(victim) && zp_get_user_zombie(victim))
                {
                    static Float:originV[3], Float:dist, Float:damage
                    pev(victim, pev_origin, originV)
                    dist = get_distance_f(fOrigin, originV)
                    damage = CDamage-(CDamage/CRadius)*dist
                    if(damage > 0.0)
                    {
                        ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, damage, DMG_BULLET)
                        // client_print(attacker, print_chat, "[JpDebug] Rocket damage: %.1f", damage)
                    }
                }
            }

            engfunc(EngFunc_RemoveEntity, ent)
        }
    }

    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(id, pev_viewmodel2, "models/v_knife.mdl")
        set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
        return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

ReplaceModel(id)
{
    set_pev(id, pev_viewmodel2, ModelVJetPack)
    set_pev(id, pev_weaponmodel2, ModelPJetPack)
}

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

    new ent = engfunc(EngFunc_CreateNamedEntity, iAllocInfoTarget)
    if(ent)
    {
        engfunc(EngFunc_SetModel, ent, ModelWJetPack)
        engfunc(EngFunc_SetSize, ent, Float:{-4.0,-4.0,-4.0}, Float:{4.0,4.0,4.0})
        engfunc(EngFunc_SetOrigin, ent, fOrigin)
        set_pev(ent, pev_classname, ClassnameJetPack)
        set_pev(ent, pev_dmg, 100.0)
        set_pev(ent, PevEntType, EntTypeJetPack)
        set_pev(ent, pev_movetype, MOVETYPE_TOSS)
        set_pev(ent, pev_solid, SOLID_TRIGGER)
    }
}

RemoveAllJetPack()
{
    new ent = engfunc(EngFunc_FindEntityByString, -1, "classname", ClassnameJetPack)
    while(ent > 0)
    {
        engfunc(EngFunc_RemoveEntity, ent)
        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], i, argscount
    argscount = numargs()

    if (!target)
    {
        static iPlayers[32], iNum, j, player
        get_players(iPlayers, iNum, "ch")
        for (j = 0; j < iNum; j++)
        {
            player = iPlayers[j]
            static changed[5], changedcount
            changedcount = 0

            for (i = 2; i < argscount; i++)
            {
                if (getarg(i) == LANG_PLAYER)
                {
                    setarg(i, 0, player)
                    changed[changedcount] = i
                    changedcount++
                }
            }

            vformat(buffer, charsmax(buffer), message, 3)
            message_begin(MSG_ONE_UNRELIABLE, MsgSayText, _, player)
            write_byte(player)
            write_string(buffer)
            message_end()

            for (i = 0; i < changedcount; i++) setarg(changed[i], 0, LANG_PLAYER);
        }
    }
    else
    {
        vformat(buffer, charsmax(buffer), message, 3)
        message_begin(MSG_ONE, MsgSayText, _, target)
        write_byte(target)
        write_string(buffer)
        message_end()
    }
}



Заранее спасибо!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ST90
сообщение 26.11.2015, 8:25
Сообщение #2
Стаж: 10 лет

Сообщений: 13
Благодарностей: 7
Полезность: 0

замени.
Код:
public zp_extra_item_selected(id, item)
{
if(get_user_flags(id) & ADMIN_RESERVATION || get_user_flags(id) & ADMIN_LEVEL_H)
{
zp_colored_print(id, "^x04[ZP]^x01 You are not allowed to buy!")
}
else
{
zp_colored_print(id, "^x04[ZP]^x01 You bought JetPack!")
return ZP_PLUGIN_HANDLED;
}
if(item == ItemJetPack)
{
if(bHasJetPack[id])
{
zp_colored_print(id, "^x04[ZP]^x01 You already have this item!")
return ZP_PLUGIN_HANDLED;
}
else if (jet_count() >= CCount)
{
zp_colored_print(id, "^x04[ZP]^x01 Sorry, but maximum JetPack's reached!")
return ZP_PLUGIN_HANDLED;
}
else
{
bHasJetPack[id] = true
//zp_colored_print(id, "^x04[ZP]^x01 JetPack usage:^x04 JUMP+DUCK^x01 -- fly |^x04 SECATTACK^x01 -- shoot rocket.")
engclient_cmd(id, "weapon_knife")
ReplaceModel(id)
}
}

return PLUGIN_CONTINUE;
}


Отредактировал: Bloo, - 26.11.2015, 16:57
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DANDY
сообщение 26.11.2015, 23:19
Сообщение #3
Стаж: 15 лет

Сообщений: 270
Благодарностей: 38
Полезность: 120

Извиняюсь, тот плагин, который скинул, не подошел....
Прошу добавить проверку такую же вот в этот плагин:
Исходник

Код
#include <amxmodx>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>

#define PLUGINNAME        "Extra Item Jetpack+Bazooka"
#define VERSION            "3.2"
#define AUTHOR            "B!gBud"

#define ACCESS_LEVEL    ADMIN_LEVEL_A
#define VOTE_ACCESS    ADMIN_CFG

#define TE_EXPLOSION    3
#define TE_BEAMFOLLOW    22
#define TE_BEAMCYLINDER    21

#define JETPACK_COST 30 // set how may ammopacks the Jatpack+Rocket cost

new ROCKET_MDL[64] = "models/rpgrocket.mdl"
new ROCKET_SOUND[64] = "weapons/rocketfire1.wav"
new getrocket[64] = "items/9mmclip2.wav"

new bool:fly[33] = false
new bool:rocket[33] = false
new bool:rksound[33] = false
new bool:shot[33] = false

new Float:gltime = 0.0
new Float:last_Rocket[33] = 0.0
new Float:jp_cal[33] = 0.0
new Float:jp_soun[33] = 0.0
new flame, explosion, trail, white
new g_flyEnergy[33], hasjet[33]
new cvar_jetpack, cvar_jetpackSpeed, cvar_jetpackUpSpeed, cvar_jetpackAcrate ,cvar_RocketDelay, cvar_RocketSpeed, cvar_RocketDmg, cvar_Dmg_range, cvar_fly_max_engery, cvar_fly_engery, cvar_regain_energy, g_item_jetpack, cvar_cal_time, cvar_oneround


public plugin_init() {
    register_plugin(PLUGINNAME, VERSION, AUTHOR)
    
    g_item_jetpack = zp_register_extra_item("Jetpack+Bazooka (one Round)", JETPACK_COST, ZP_TEAM_HUMAN)
    register_clcmd("drop","cmdDrop")
    register_clcmd("say /jphelp","cmdHelp",0,": Displays Jetpack help")
    
    new ver[64]
    format(ver,63,"%s v%s",PLUGINNAME,VERSION)
    register_cvar("zp_jp_version",ver,FCVAR_SERVER)    
    
    cvar_jetpack = register_cvar("zp_jetpack", "2")
    
    cvar_jetpackSpeed=register_cvar("zp_jp_forward_speed","300.0")
    cvar_jetpackUpSpeed=register_cvar("zp_jp_up_speed","35.0")
    cvar_jetpackAcrate=register_cvar("zp_jp_accelerate","100.0")
    
    cvar_RocketDelay=register_cvar("zp_jp_rocket_delay","12.0")
    cvar_RocketSpeed=register_cvar("zp_jp_rocket_speed","1500")
    cvar_RocketDmg=register_cvar("zp_jp_rocket_damage","700")
    cvar_Dmg_range=register_cvar("zp_jp_damage_radius","300")
    
    cvar_fly_max_engery = register_cvar("zp_jp_max_engery", "100")
    cvar_fly_engery = register_cvar("zp_jp_engery", "10")
    cvar_regain_energy = register_cvar("zp_jp_regain_energy", "3")
    cvar_cal_time = register_cvar("zp_jp_energy_cal", "1.0")
    cvar_oneround = register_cvar("zp_jp_oneround", "0")

    
    register_event("CurWeapon", "check_models", "be")
    register_event("DeathMsg", "player_die", "a")
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
    
    register_forward(FM_StartFrame, "fm_startFrame")
    register_forward(FM_EmitSound, "emitsound")
}

public plugin_precache() {
    precache_model("models/p_egon.mdl")
    precache_model("models/v_egon.mdl")
    precache_model("models/w_egon.mdl")
    precache_sound("jetpack.wav")
    precache_sound("jp_blow.wav")
    
    precache_model(ROCKET_MDL)
    precache_sound(ROCKET_SOUND)
    precache_sound(getrocket)
    
    explosion = precache_model("sprites/zerogxplode.spr")
    trail = precache_model("sprites/smoke.spr")
    flame = precache_model("sprites/xfireball3.spr")
    white = precache_model("sprites/white.spr")
}

public zp_user_humanized_post(id, surv)
{
   if(surv)    
      hasjet[id] = 0
}

public client_putinserver(id) {
    fly[id] = false
    rocket[id] = false
    hasjet[id] = 0
    g_flyEnergy[id] = 0
}

public client_disconnect(id) {
    fly[id] = false
    rocket[id] = false
    hasjet[id] = 0
    g_flyEnergy[id] = 0
}

public event_round_start()
{
    remove_jetpacks();
    if (get_pcvar_num(cvar_oneround) == 1) {
        for (new id; id <= 32; id++) hasjet[id] = 0, g_flyEnergy[id] = 0,    fly[id] = false;
    }
}

public fm_startFrame(){
        
    gltime = get_gametime()
    static id
    for (id = 1; id <= 32; id++)
    {
        jp_forward(id)
    }
}

public jp_forward(player) {
    
    if (!hasjet[player])
        return FMRES_IGNORED

    if (!is_user_alive(player) && (zp_get_user_zombie(player) || zp_get_user_nemesis(player) || zp_get_user_survivor(player)))
        return FMRES_IGNORED        
        
    if(jp_cal[player] < gltime){
        jp_energy(player); jp_cal[player] = gltime + get_pcvar_float(cvar_cal_time)
    }
    
    check_rocket(player)
    
    static clip, ammo, wpnid
    wpnid = get_user_weapon(player,clip,ammo)
    if (wpnid == CSW_KNIFE){
        if(get_pcvar_num(cvar_jetpack) == 1){
            if(!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK){
                if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){
                    if(jp_soun[player] < gltime){
                        emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
                        jp_soun[player] = gltime + 1.0
                    }
                }            
                else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){
                    if(jp_soun[player] < gltime){
                            emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
                            jp_soun[player] = gltime + 1.0
                    }
                }
            }
            human_fly(player)
            attack(player)    
        }
        if((pev(player,pev_button)&IN_ATTACK2)){
                attack2(player)    
            }    
    }
    if((get_pcvar_num(cvar_jetpack) == 2 && !(pev(player, pev_flags)&FL_ONGROUND)) && (pev(player,pev_button)&IN_JUMP && pev(player,pev_button)&IN_DUCK)){            
        if((g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){
            if(jp_soun[player] < gltime){
                emit_sound(player,CHAN_ITEM,"jetpack.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
                jp_soun[player] = gltime + 1.0
            }
        }                    
        else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){
            if(jp_soun[player] < gltime){
                emit_sound(player,CHAN_ITEM,"jp_blow.wav",1.0,ATTN_NORM,1,PITCH_HIGH)
                jp_soun[player] = gltime + 1.0
            }
        }
        human_fly(player)
        attack(player)
    }
    // Icon Show system
    /*if (!is_user_alive(player) && zp_get_user_zombie(player) && zp_get_user_nemesis(player) && zp_get_user_survivor(player))    
        Icon_Energy({0, 255, 0}, 0, player);
                //Icon_Energy({128, 128, 0}, 0, player);
                //Icon_Energy({255, 255, 0}, 0, player);
                        
    }*/
    if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.8) && (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery))){
        Icon_Energy({0, 255, 0}, 1, player); // Green
    }
    else if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.5) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.8)){
        Icon_Energy({255, 255, 0}, 1, player); // yellow
    }
    else if((g_flyEnergy[player] >= get_pcvar_num(cvar_fly_max_engery)*0.3) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.5)){
        Icon_Energy({255, 215, 0}, 2, player);
    }
    else if((g_flyEnergy[player] > 0) && (g_flyEnergy[player] < get_pcvar_num(cvar_fly_max_engery)*0.3)){
        Icon_Energy({255, 0, 0}, 1, player);
    }
    
    return FMRES_IGNORED
}

public jp_energy(player) {
            
        if (!(pev(player, pev_flags)&FL_ONGROUND) && pev(player,pev_button)&IN_ATTACK)    
        {
            // Get our current velocity        
            static clip, ammo, wpnid
            wpnid = get_user_weapon(player,clip,ammo)
            if (wpnid == CSW_KNIFE)
            {
            // flying
            if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09)
                g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery);     // Increase distance counter        
            }
        }
        else if ((get_pcvar_num(cvar_jetpack) == 2 && !(pev(player, pev_flags)&FL_ONGROUND)) && (pev(player,pev_button)&IN_JUMP && pev(player,pev_button)&IN_DUCK))
        {
            if(g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.09)
                g_flyEnergy[player] = g_flyEnergy[player] - get_pcvar_num(cvar_fly_engery);     // Increase distance counter    
        }
        // Walking/Runnig
        if (pev(player, pev_flags) & FL_ONGROUND)    
            g_flyEnergy[player] = g_flyEnergy[player] + get_pcvar_num(cvar_regain_energy);// Decrease distance counter
}

public attack(player) {
//code snippa from TS_Jetpack 1.0 - Jetpack plugin for The Specialists.
//http://forums.alliedmods.net/showthread.php?t=55709&highlight=jetpack
//By: Bad_Bud
    if(fly[player])
    {    
        static Float:JetpackData[3], fOrigin[3],Float:Aim[3], Float:Speed, Float:JetpackData2[3]
        pev(player,pev_velocity,JetpackData)
        VelocityByAim(player, 10, Aim)
        get_user_origin(player,fOrigin)
        fOrigin[0] -= floatround(Aim[0])
        fOrigin[1] -= floatround(Aim[1])
        fOrigin[2] -= floatround(Aim[2])
        if((pev(player,pev_button)&IN_FORWARD) && !(pev(player, pev_flags) & FL_ONGROUND))
            {
                
                message_begin(MSG_ALL,SVC_TEMPENTITY)
                write_byte(17)
                write_coord(fOrigin[0])
                write_coord(fOrigin[1])
                write_coord(fOrigin[2])
                write_short(flame)
                write_byte(10)
                write_byte(255)
                message_end()    
                
                Speed=floatsqroot(JetpackData[0]*JetpackData[0]+JetpackData[1]*JetpackData[1])
                    
                if(Speed!=0.0)//Makes players only lay down if their speed isn't 0; if they are thrusting forward.
                {
                    set_pev(player,pev_gaitsequence,0)
                    set_pev(player,pev_sequence,111)
                }
                    
                if(Speed<get_pcvar_float(cvar_jetpackSpeed))
                    Speed+=get_pcvar_float(cvar_jetpackAcrate)
                        
                pev(player,pev_angles,JetpackData2)
                JetpackData2[2]=0.0//Remove the Z value/
                    
                angle_vector(JetpackData2,ANGLEVECTOR_FORWARD,JetpackData2)
                JetpackData2[0]*=Speed
                JetpackData2[1]*=Speed
                    
                JetpackData[0]=JetpackData2[0]
                JetpackData[1]=JetpackData2[1]
            }
            
        if(JetpackData[2]<get_pcvar_float(cvar_jetpackSpeed)&&JetpackData[2]>0.0)//Jetpacks get more power on the way down -- it helps landing.
                JetpackData[2]+=get_pcvar_float(cvar_jetpackUpSpeed)
            else if(JetpackData[2]<0.0)
                JetpackData[2]+=(get_pcvar_float(cvar_jetpackUpSpeed)*1.15)
                    
        set_pev(player,pev_velocity,JetpackData)
    }
}

public attack2(player) {
        
    if (rocket[player])
    {
        
        static rocket, Float:vSrc[3], Float:Aim[3],Float:origin[3], Float:velocity[3], Float:angles[3]
                rocket = create_entity("info_target")
        if(!is_valid_ent(rocket)) return PLUGIN_CONTINUE
        
        entity_set_string(rocket, EV_SZ_classname, "zp_jp_rocket")
        entity_set_model(rocket, ROCKET_MDL)
        
        entity_set_size(rocket, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
        entity_set_int(rocket, EV_INT_movetype, MOVETYPE_FLY)
        entity_set_int(rocket, EV_INT_solid, SOLID_BBOX)
        
        entity_get_vector(player, EV_VEC_origin, vSrc)
        
        VelocityByAim(player, 64, Aim)
        entity_get_vector(player,EV_VEC_origin,origin)
        
        vSrc[0] += Aim[0]
        vSrc[1] += Aim[1]
        entity_set_origin(rocket, vSrc)
        
        VelocityByAim(player, get_pcvar_num(cvar_RocketSpeed), velocity)
        
        entity_set_vector(rocket, EV_VEC_velocity, velocity)
        vector_to_angle(velocity, angles)
        entity_set_vector(rocket, EV_VEC_angles, angles)
        entity_set_edict(rocket,EV_ENT_owner,player)
        entity_set_float(rocket, EV_FL_takedamage, 1.0)
        
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_BEAMFOLLOW)
        write_short(rocket)
        write_short(trail)
        write_byte(25)
        write_byte(5)
        write_byte(224)
        write_byte(224)
        write_byte(255)
        write_byte(255)
        message_end()

        emit_sound(rocket, CHAN_WEAPON, ROCKET_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
        
        shot[player] = true
        last_Rocket[player] = gltime + get_pcvar_num(cvar_RocketDelay)
    }
    return PLUGIN_CONTINUE
}

public check_models(id) {

    if (zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id))
        return FMRES_IGNORED
    
    if(hasjet[id]) {
        static clip,ammo, wpnid
        wpnid = get_user_weapon(id,clip,ammo)
        
        if ( wpnid == CSW_KNIFE ) {
            switchmodel(id)
        }
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}

public switchmodel(id) {
    entity_set_string(id,EV_SZ_viewmodel,"models/v_egon.mdl")
    entity_set_string(id,EV_SZ_weaponmodel,"models/p_egon.mdl")
}

public remove_jetpacks() {
    static nextitem
        nextitem = find_ent_by_class(-1,"zp_jp_jetpack")
    while(nextitem) {
        remove_entity(nextitem)
        nextitem = find_ent_by_class(-1,"zp_jp_jetpack")
    }
    return PLUGIN_CONTINUE
}

public emitsound(entity, channel, const sample[]) {
    if(is_user_alive(entity)) {
        static clip,ammo,weapon
        weapon = get_user_weapon(entity,clip,ammo)
        if(hasjet[entity] && weapon == CSW_KNIFE) {
            if(equal(sample,"weapons/knife_slash1.wav")) return FMRES_SUPERCEDE
            if(equal(sample,"weapons/knife_slash2.wav")) return FMRES_SUPERCEDE
            
            if(equal(sample,"weapons/knife_deploy1.wav")) return FMRES_SUPERCEDE
            if(equal(sample,"weapons/knife_hitwall1.wav")) return FMRES_SUPERCEDE
            
            if(equal(sample,"weapons/knife_hit1.wav")) return FMRES_SUPERCEDE
            if(equal(sample,"weapons/knife_hit2.wav")) return FMRES_SUPERCEDE
            if(equal(sample,"weapons/knife_hit3.wav")) return FMRES_SUPERCEDE
            if(equal(sample,"weapons/knife_hit4.wav")) return FMRES_SUPERCEDE
            
            if(equal(sample,"weapons/knife_stab.wav")) return FMRES_SUPERCEDE
        }
    }
    return FMRES_IGNORED
}

public Icon_Show(icon[], color[3], mode, player) {
            
    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("StatusIcon"), {0,0,0}, player);
    write_byte(mode);     // status (0=hide, 1=show, 2=flash)
    write_string(icon);     // sprite name
    write_byte(color[0]);     // red
    write_byte(color[1]);     // green
    write_byte(color[2]);     // blue
    message_end();

}

public Icon_Energy(color[3], mode, player) {
    
    Icon_Show("item_longjump", color, mode, player)
}

public human_fly(player) {
    
    if (g_flyEnergy[player] <= get_pcvar_num(cvar_fly_max_engery)*0.1)
    {
        jp_off(player);    
    }
    if (g_flyEnergy[player] > get_pcvar_num(cvar_fly_max_engery)*0.1)
    {
        jp_on(player);
    }
}

public jp_on(player) {

    fly[player] = true
    
}

public jp_off(player) {

    fly[player] = false
    
}

public check_rocket(player) {
        
    if (last_Rocket[player] > gltime)
    {    
        rk_forbidden(player)
        rksound[player] = true
    }
    else
    {    

        if (shot[player])
        {
            rksound[player] = false
            shot[player] = false
        }
        rk_sound(player)
        rk_allow(player)
    }
    
}

public rk_allow(player) {
        
    rocket[player] = true
}

public rk_forbidden(player) {

    rocket[player] = false
    
}

public rk_sound(player) {

    if (!rksound[player])
    {
        engfunc(EngFunc_EmitSound, player, CHAN_WEAPON, getrocket, 1.0, ATTN_NORM, 0, PITCH_NORM)
        client_print(player, print_center, "Ракета готова к запуску!")
        rksound[player] = true
    }
    else if (rksound[player])
    {
        
    }
    
}
        
public cmdHelp(id) {
    
    new g_max = get_pcvar_num(cvar_fly_max_engery)
    new g_lost = get_pcvar_num(cvar_fly_engery)
    new g_back = get_pcvar_num(cvar_regain_energy)
    new g_dmg = get_pcvar_num(cvar_RocketDmg)
    new g_delay = get_pcvar_num(cvar_RocketDelay)
    new jpmotd[2048], title[64], dpos = 0
    format(title,63,"[ZP] %s ver.%s",PLUGINNAME,VERSION)
    
    
    dpos += format(jpmotd[dpos],2047-dpos,"<html><head><style type=^"text/css^">pre{color:#FF0505;}body{background:#000000;margin-left:16px;margin-top:1px;}</style></head><pre><body>")
    dpos += format(jpmotd[dpos],2047-dpos,"<b>%s</b>^n^n",title)
    
    dpos += format(jpmotd[dpos],2047-dpos,"How to use:^n")
    dpos += format(jpmotd[dpos],2047-dpos,"=============^n^n")
    if(get_pcvar_num(cvar_jetpack) == 1) {
        dpos += format(jpmotd[dpos],2047-dpos,"- choose/have Knive & use/hold ATTACK to fly^n")
        dpos += format(jpmotd[dpos],2047-dpos,"^n")
        dpos += format(jpmotd[dpos],2047-dpos,"- choose/have Knive(Bazooka) & use ATTACK2 to shoot a Rocket^n^n")
    }
    else if(get_pcvar_num(cvar_jetpack) == 2){
        dpos += format(jpmotd[dpos],2047-dpos,"- use/hold JUMP & DUCK to flyn")
        dpos += format(jpmotd[dpos],2047-dpos,"^n")
        dpos += format(jpmotd[dpos],2047-dpos,"choose/have Knive(Bazooka) & use ATTACK2 to shoot a Rocket^n^n")
    }
    dpos += format(jpmotd[dpos],2047-dpos,"INFO's^n")
    dpos += format(jpmotd[dpos],2047-dpos,"MAX Energy set to : <b>%i Units</b>^n^n", g_max)
    dpos += format(jpmotd[dpos],2047-dpos,"Jetpack need %i Units per 1 Sec. to work^n", g_lost)
    dpos += format(jpmotd[dpos],2047-dpos,"Energy regain %i Units per 1 Sec. (when you are on the ground)^n^n", g_back)
    dpos += format(jpmotd[dpos],2047-dpos,"MAX Rocket Dmg set to: <b>%i dmg</b>^n",g_dmg)
    dpos += format(jpmotd[dpos],2047-dpos,"New Rocket comes ervry <b>%i Sec.</b>^n^n", g_delay )
    dpos += format(jpmotd[dpos],2047-dpos,"-Have Fun!^n")
    

    show_motd(id,jpmotd,title)
}

public player_die() {
    
    static id
        id = read_data(2)
    if(hasjet[id]) {
        drop_jetpack(id)
        hasjet[id] = 0
        rocket[id] = false
        g_flyEnergy[id] = 0
    }
    
    return PLUGIN_CONTINUE
}

public cmdDrop(id) {

    if(hasjet[id]) {
        static clip,ammo,weapon
        weapon = get_user_weapon(id,clip,ammo)
        if(weapon == CSW_KNIFE) {
            drop_jetpack(id)
            if(!zp_get_user_zombie(id)){
                entity_set_string(id,EV_SZ_viewmodel,"models/v_knife.mdl")
                entity_set_string(id,EV_SZ_weaponmodel,"models/p_knife.mdl")
                }
            return PLUGIN_HANDLED
        }
    }
    return PLUGIN_CONTINUE
}

public drop_jetpack(player) {
    if(hasjet[player]) {
        static Float:Aim[3],Float:origin[3], jetpack
        VelocityByAim(player, 64, Aim)
        entity_get_vector(player,EV_VEC_origin,origin)
        
        origin[0] += Aim[0]
        origin[1] += Aim[1]
        
        jetpack = create_entity("info_target")
                if(!is_valid_ent(jetpack))
                {
                     return;
                }
        entity_set_string(jetpack,EV_SZ_classname,"zp_jp_jetpack")
        entity_set_model(jetpack,"models/w_egon.mdl")    
        
        entity_set_size(jetpack,Float:{-16.0,-16.0,-16.0},Float:{16.0,16.0,16.0})
        entity_set_int(jetpack,EV_INT_solid,1)
        
        entity_set_int(jetpack,EV_INT_movetype,6)
        
        entity_set_vector(jetpack,EV_VEC_origin,origin)
        
        Icon_Energy({255, 255, 0}, 0, player)
        Icon_Energy({128, 128, 0}, 0, player )
        Icon_Energy({0, 255, 0}, 0, player)
        
        hasjet[player] = 0
        rocket[player] = false
    }    
}

public pfn_touch(ptr, ptd) {
    if(is_valid_ent(ptr)) {
        static classname[32], id, Float:fOrigin[3], iOrigin[3]
        entity_get_string(ptr,EV_SZ_classname,classname,31)
        
        if(equal(classname, "zp_jp_jetpack")) {
            if(is_valid_ent(ptd)) {
                                id = ptd
                if(id > 0 && id < 34) {
                    if(!hasjet[id] && !zp_get_user_zombie(id) && is_user_alive(id)) {
                        
                        hasjet[id] = 1
                        g_flyEnergy[id] = get_pcvar_num(cvar_fly_max_engery)
                        rocket[id] = true
                        client_cmd(id,"spk items/gunpickup2.wav")
                        engclient_cmd(id,"weapon_knife")
                        switchmodel(id)
                        remove_entity(ptr)
                    }
                }
            }
        }else if(equal(classname, "zp_jp_rocket")) {
            entity_get_vector(ptr, EV_VEC_origin, fOrigin)
            FVecIVec(fOrigin,iOrigin)
            jp_radius_damage(ptr)
                
            message_begin(MSG_BROADCAST,SVC_TEMPENTITY,iOrigin)
            write_byte(TE_EXPLOSION)
            write_coord(iOrigin[0])
            write_coord(iOrigin[1])
            write_coord(iOrigin[2])
            write_short(explosion)
            write_byte(30)
            write_byte(15)
            write_byte(0)
            message_end()
                
            message_begin(MSG_ALL,SVC_TEMPENTITY,iOrigin)
            write_byte(TE_BEAMCYLINDER)
            write_coord(iOrigin[0])
            write_coord(iOrigin[1])
            write_coord(iOrigin[2])
            write_coord(iOrigin[0])
            write_coord(iOrigin[1])
            write_coord(iOrigin[2]+200)
            write_short(white)
            write_byte(0)
            write_byte(1)
            write_byte(6)
            write_byte(8)
            write_byte(1)
            write_byte(255)
            write_byte(255)
            write_byte(192)
            write_byte(128)
            write_byte(5)
            message_end()
            
            if(is_valid_ent(ptd)) {
                entity_get_string(ptd,EV_SZ_classname,classname,31)
                
                if(equal(classname,"func_breakable"))
                    force_use(ptr,ptd)
            }
            
            remove_entity(ptr)
        }
    }
    return PLUGIN_CONTINUE
}

public zp_user_infected_pre(player, infector)
{
    Icon_Energy({0, 255, 0}, 0, player);
    cmdDrop(player);
    hasjet[player] = 0;
    g_flyEnergy[player] = 0;
    rocket[player] = false;
}

public zp_extra_item_selected(player, itemid)
{
    static clip,ammo,weapon
    weapon = get_user_weapon(player,clip,ammo)
    if (itemid == g_item_jetpack)
    {
        client_print(player, print_chat, "[ZP] Напишите /jphelp чтобы открыть страницу помощи по джетпаку")
        hasjet[player] = 1
        g_flyEnergy[player] = get_pcvar_num(cvar_fly_max_engery)
        rocket[player] = true
        client_cmd(player,"spk items/gunpickup2.wav")
        if(weapon == CSW_KNIFE){
            switchmodel(player)
        }
        else
        {
            engclient_cmd(player,"weapon_knife"),switchmodel(player)
        }
    }
}

stock jp_radius_damage(entity) {
    static id, dist, i, hp, Float:damage, Origin[3]
        id = entity_get_edict(entity,EV_ENT_owner)
    for(i = 1; i < 33; i++) {
        if(is_user_alive(i)) {
            dist = floatround(entity_range(entity,i))
            
            if(dist <= get_pcvar_num(cvar_Dmg_range)) {
                hp = get_user_health(i)
                damage = get_pcvar_float(cvar_RocketDmg)-(get_pcvar_float(cvar_RocketDmg)/get_pcvar_float(cvar_Dmg_range))*float(dist)
        
                get_user_origin(i,Origin)
                
                if(zp_get_user_zombie(id) != zp_get_user_zombie(i)) {
                        if(hp > damage)
                            jp_take_damage(i,floatround(damage),Origin,DMG_BLAST)
                        else
                            log_kill(id,i,"Jetpack Rocket",0)
                    }
            }
        }
    }
}

stock log_kill(killer, victim, weapon[], headshot)
{
// code from MeRcyLeZZ
    set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
    ExecuteHamB(Ham_Killed, victim, killer, 2) // set last param to 2 if you want victim to gib
    set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)

    
    message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg"))
    write_byte(killer)
    write_byte(victim)
    write_byte(headshot)
    write_string(weapon)
    message_end()
//
    
    if(get_user_team(killer)!=get_user_team(victim))
        set_user_frags(killer,get_user_frags(killer) +1)
    if(get_user_team(killer)==get_user_team(victim))
        set_user_frags(killer,get_user_frags(killer) -1)
        
    new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]

    get_user_name(killer, kname, 31)
    get_user_team(killer, kteam, 9)
    get_user_authid(killer, kauthid, 31)

    get_user_name(victim, vname, 31)
    get_user_team(victim, vteam, 9)
    get_user_authid(victim, vauthid, 31)
        
    log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
    kname, get_user_userid(killer), kauthid, kteam,
    vname, get_user_userid(victim), vauthid, vteam, weapon)

    return PLUGIN_CONTINUE;
}

stock jp_take_damage(victim,damage,origin[3],bit) {
    message_begin(MSG_ONE,get_user_msgid("Damage"),{0,0,0},victim)
    write_byte(21)
    write_byte(20)
    write_long(bit)
    write_coord(origin[0])
    write_coord(origin[1])
    write_coord(origin[2])
    message_end()
    set_user_health(victim,get_user_health(victim)-damage)
}



Пытался вставить после
Код
public zp_extra_item_selected(player, itemid)
{

вот это:
Код
if(get_user_flags(id) & ADMIN_RESERVATION || get_user_flags(id) & ADMIN_LEVEL_H)
    {
        zp_colored_print(id, "^x04[ZP]^x01 You are not allowed to buy!")
    }
    else
    {
        zp_colored_print(id, "^x04[ZP]^x01 You bought JetPack!")
        return ZP_PLUGIN_HANDLED;
    }

ничего не получилось....
Да-да, я не шарю в скриптинге вообще.

Отредактировал: DANDY, - 26.11.2015, 23:20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 26.11.2015, 23:37
Сообщение #4
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

DANDY, вместо id пиши player.
перемести
return ZP_PLUGIN_HANDLED
выше
(те после сообщ. You are not allowed to buy)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DANDY
сообщение 26.11.2015, 23:41
Сообщение #5
Стаж: 15 лет

Сообщений: 270
Благодарностей: 38
Полезность: 120

Написал
Код:
public zp_extra_item_selected(player, itemid)
{
if(get_user_flags(player) & ADMIN_RESERVATION || get_user_flags(player) & ADMIN_LEVEL_H)
{
zp_colored_print(player, "^x04[ZP]^x01 Вы купили Джетпак")
return ZP_PLUGIN_HANDLED;
}
else
{
zp_colored_print(player, "^x04[ZP]^x01 Доступно только для ^x04Админов ^x01и ^x04Випов")
}
static clip,ammo,weapon
weapon = get_user_weapon(player,clip,ammo)
if (itemid == g_item_jetpack)
{


Ошибка компиляции:
Код
//// zp_extra_jetpack_bazooka.sma
// C:\Users\Dmitry\Desktop\Compiler\zp_extra_jetpack_bazooka.sma(671) : error 01
7: undefined symbol "zp_colored_print"
// C:\Users\Dmitry\Desktop\Compiler\zp_extra_jetpack_bazooka.sma(672) : warning
217: loose indentation
// C:\Users\Dmitry\Desktop\Compiler\zp_extra_jetpack_bazooka.sma(674) : warning
217: loose indentation
// C:\Users\Dmitry\Desktop\Compiler\zp_extra_jetpack_bazooka.sma(676) : error 01
7: undefined symbol "zp_colored_print"
// C:\Users\Dmitry\Desktop\Compiler\zp_extra_jetpack_bazooka.sma(695) : warning
209: function "zp_extra_item_selected" should return a value
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DANDY
сообщение 27.11.2015, 0:21
Сообщение #6
Стаж: 15 лет

Сообщений: 270
Благодарностей: 38
Полезность: 120

Скомпилировал обычным client_print. А как добавить (дефайн или инклуд, не знаю), чтобы можно zp_colored_chat было использовать?

И еще, в меню Extra-Items у меня длинное имя файла не помещается, как увеличить буфер (если это так называется) длины названия этого айтима?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: