Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSJetpack


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello!

Someone can add that jetpack will disappear after new round? Like it will disappear from player and he need to buy new in extra items.

Code:

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

//Uncomment this if your server is running ZP50 and above.
//#define UseZP50

#if defined UseZP50
        #tryinclude <zp50_core>
        #tryinclude <zp50_items>
        #tryinclude <zp50_ammopacks>
        #tryinclude <zp50_class_survivor>
#else
        #tryinclude <zombieplague>
#endif

new bool:bIsAlive[33], iGas[33], SprSmoke, iMaxClients, iItem
#define JpPower 400
#define JpUp 200.0
#define MaxGas 20
#define ClassnameJp "n4d_jetpack"
#define ModelJp "models/zs/p_jp2.mdl"
#define SoundFly "zs/fly2.wav"
#define SoundBlow "zs/blow.wav"
#define ItemName "ML_JETPACK"
#define ItemCost 50

public plugin_precache()
{
        SprSmoke = precache_model("sprites/smoke.spr")
        precache_model(ModelJp)
        precache_sound(SoundFly)
        precache_sound(SoundBlow)
}

public plugin_init()
{
        register_plugin(ItemName, "0.0.1", "wbyokomo")
       
        RegisterHam(Ham_Spawn, "player", "OnSpawnPost", 1)
        RegisterHam(Ham_Killed, "player", "OnKilled")
        register_forward(FM_ClientDisconnect, "OnClientDisconnect")
        register_think(ClassnameJp, "OnThinkJetPack")
       
        iMaxClients = get_maxplayers()
       
        #if defined UseZP50
        iItem = zp_items_register(ItemName, ItemCost)
        #else
        iItem = zp_register_extra_item(ItemName, ItemCost, ZP_TEAM_HUMAN)
        #endif
       
        register_clcmd("say /jp","CmdBuyJetPack")
        register_dictionary("zombie_plague.txt")
}

//this forward is from CSBot_Init API by PRoSToTeM@, see http://forums.alliedmods.net/showpost.php?p=2080292&postcount=15
public CSBot_Init(id)
{
        RegisterHamFromEntity(Ham_Spawn, id, "OnSpawnPost", 1)
        RegisterHamFromEntity(Ham_Killed, id, "OnKilled")
}

public OnClientDisconnect(id)
{
        bIsAlive[id] = false
        ResetJetPack(id)
}

public OnSpawnPost(id)
{
        if(!is_user_alive(id)) return;
       
        bIsAlive[id] = true
}

public OnKilled(id)
{
        bIsAlive[id] = false
        ResetJetPack(id)
}

public OnThinkJetPack(ent)
{
        if(ent < 1) return;
       
        static id; id = entity_get_edict(ent, EV_ENT_owner);
        if(!(1<=id<=iMaxClients)) return;
        if(!bIsAlive[id]) return;
       
        static button; button = entity_get_int(id, EV_INT_button);
        if((iGas[id] > 0) && (button & IN_DUCK) && (button & IN_JUMP))
        {
                static Float:Velocity[3], Float:Origin[3]
                velocity_by_aim(id, JpPower, Velocity)
                Velocity[2] = JpUp
                entity_set_vector(id, EV_VEC_velocity, Velocity)
               
                entity_get_vector(ent, EV_VEC_origin, Origin)
                engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
                write_byte(TE_BEAMFOLLOW)
                write_short(id)
                write_short(SprSmoke)
                write_byte(2)
                write_byte(7)
                write_byte(128)
                write_byte(32)
                write_byte(8)
                write_byte(192)
                message_end()
               
                iGas[id]--
                if(iGas[id] > 5) emit_sound(id, CHAN_WEAPON, SoundFly, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
                else emit_sound(id, CHAN_WEAPON, SoundBlow, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        }
        else
        {
                if((iGas[id] < MaxGas) && !(button & IN_DUCK) && !(button & IN_JUMP))
                {
                        iGas[id]++
                }
        }
       
        entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1)
}

public CmdBuyJetPack(id)
{
        if(!bIsAlive[id]) return PLUGIN_HANDLED;
       
        #if defined UseZP50
        if(zp_core_is_zombie(id)) return PLUGIN_HANDLED;
        if(zp_class_survivor_get(id)) return PLUGIN_HANDLED;
        #else
        if(zp_get_user_zombie(id)) return PLUGIN_HANDLED;
        if(zp_get_user_survivor(id)) return PLUGIN_HANDLED;
        #endif
       
        static iAP
        #if defined UseZP50
        iAP = zp_ammopacks_get(id)
        #else
        iAP = zp_get_user_ammo_packs(id)
        #endif
        if(iAP < ItemCost) return PLUGIN_HANDLED;
        if(IsPlayerHasJetPack(id)) return PLUGIN_HANDLED;
       
        CreateJetPack(id)
        #if defined UseZP50
        zp_ammopacks_set(id, iAP-ItemCost)
        #else
        zp_set_user_ammo_packs(id, iAP-ItemCost)
        #endif
        client_print(id, print_chat, "[ZP] Kupiles JetPack, like a Boss. Przytrzymaj SKOK+KUCANIE aby poleciec.")
       
        return PLUGIN_HANDLED;
}

#if defined UseZP50
public zp_fw_items_select_pre(id, item, ignorecost)
{
        if(item != iItem) return ZP_ITEM_AVAILABLE;
        if(zp_core_is_zombie(id)) return ZP_ITEM_DONT_SHOW;
        if(IsPlayerHasJetPack(id)) return ZP_ITEM_NOT_AVAILABLE;
       
        return ZP_ITEM_AVAILABLE;
}

public zp_fw_items_select_post(id, item, ignorecost)
{
        if(item != iItem) return;
       
        CreateJetPack(id)
        client_print(id, print_chat, "[ZP] You just bought a JetPack, fly like a BOSS. Hold JUMP+DUCK to fly.")
}

public zp_fw_core_infect_post(id)
{
        ResetJetPack(id)
}

public zp_fw_core_cure_post(id)
{
        ResetJetPack(id)
}
#else
public zp_extra_item_selected(id, item)
{
        if(item == iItem)
        {
                if(IsPlayerHasJetPack(id)) return ZP_PLUGIN_HANDLED;
               
                CreateJetPack(id)
                client_print(id, print_chat, "[ZP] You just bought a JetPack, fly like a BOSS. Hold JUMP+DUCK to fly.")
        }
       
        return PLUGIN_CONTINUE;
}

public zp_user_infected_post(id)
{
        ResetJetPack(id)
}

public zp_user_humanized_post(id)
{
        ResetJetPack(id)
}
#endif

CreateJetPack(id)
{
        new ent = create_entity("info_target")
        if(ent < 1) return;
       
        new Float:Origin[3]
        entity_get_vector(id, EV_VEC_origin, Origin)
        entity_set_string(ent, EV_SZ_classname, ClassnameJp)
        entity_set_model(ent, ModelJp)
        entity_set_origin(ent, Origin)
        entity_set_int(ent, EV_INT_movetype, MOVETYPE_FOLLOW)
        entity_set_edict(ent, EV_ENT_aiment, id)
        entity_set_int(ent, EV_INT_solid, SOLID_NOT)
        entity_set_size(ent, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
        entity_set_edict(ent, EV_ENT_owner, id)
        entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1)
}

RemovePlayerJetPack(id)
{
        new ent = -1
        while((ent = find_ent_by_class(ent, ClassnameJp)))
        {
                if(entity_get_edict(ent, EV_ENT_owner) != id) continue;
               
                entity_set_float(ent, EV_FL_nextthink, 0.0)
                remove_entity(ent)
        }
}

IsPlayerHasJetPack(id)
{
        new ent = -1
        new bHasJP = 0
        while((ent = find_ent_by_class(ent, ClassnameJp)))
        {
                if(entity_get_edict(ent, EV_ENT_owner) == id)
                {
                        bHasJP = 1
                        break;
                }
        }
       
        return bHasJP;
}

ResetJetPack(id)
{
        iGas[id] = MaxGas
        RemovePlayerJetPack(id)
}

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...