←  Prośby o modyfikację

AMXX.pl: Support AMX Mod X i SourceMod

»

Zombie Plague 4.3
zablokować możliwość wyrzucania BAZUKI

  • +
  • -
ZIGI89 - zdjęcie ZIGI89 04.12.2015

Witam posiadam  serwer zombi mod 4,3  

prosił bym ,by ktoś przerobił mi tak  bazoke

aby zablokować  możliwość wyrzucenia jej

lub tak aby po przekazaniu  zniknęła 

 

dokładniej chodzi mi  o wyeliminowanie przekazywania sobie bazooki miedzy graczami

wiadomo ze bazuka potrzebuje czasu na przeładowanie 

a gdy ja przekazujemy  sobie miedzy graczami  to  niema tego czasu na przeładowywanie

 

 

z góry dziękuje


Użytkownik ZIGI89 edytował ten post 04.12.2015 22:50
Odpowiedz

  • +
  • -
ZIGI89 - zdjęcie ZIGI89 05.12.2015

Proszę o połączenie  a nie usuwanie bo zapomniałem dodać  sms

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

#define PLUGINNAME    "Extra Item Bazooka"
#define VERSION        "1.0"
#define AUTHOR        "B!gBud"

#define ACCESS_LEVEL    ADMIN_LEVEL_A

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

#define BAZOOKA_COST 30 // set how may ammopacks the Bazooka costs

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

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

new hasbazooka[33]
new Float:gltime = 0.0
new Float:last_Rocket[33] = 0.0
new explosion, trail, white
new cvar_RocketDelay, cvar_RocketSpeed, cvar_RocketDmg, cvar_Dmg_range, g_item_bazooka

public plugin_init()
{
    register_plugin(PLUGINNAME, VERSION, AUTHOR)
    
    g_item_bazooka = zp_register_extra_item("Bazooka", BAZOOKA_COST, ZP_TEAM_HUMAN, 1)
    register_clcmd("drop","cmdDrop")
    
    new ver[64]
    format(ver,63,"%s v%s",PLUGINNAME,VERSION)
    register_cvar("zp_bz_version",ver,FCVAR_SERVER)    
    
    cvar_RocketDelay=register_cvar("zp_bz_rocket_delay","15.0")
    cvar_RocketSpeed=register_cvar("zp_bz_rocket_speed","1500")
    cvar_RocketDmg=register_cvar("zp_bz_rocket_damage","800")
    cvar_Dmg_range=register_cvar("zp_bz_damage_radius","350")
    
    register_event("CurWeapon", "check_models", "be", "1=1")
    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_rpg.mdl")
    precache_model("models/v_rpg.mdl")
    precache_model("models/w_rpg.mdl")
    
    precache_model(ROCKET_MDL)
    precache_sound(ROCKET_SOUND)
    precache_sound(getrocket)
    
    explosion = precache_model("sprites/zerogxplode.spr")
    trail = precache_model("sprites/smoke.spr")
    white = precache_model("sprites/white.spr")
}

public client_putinserver(id)
{
    rocket[id] = false
}

public client_disconnect(id)
{
    rocket[id] = false
}

public event_round_start()
{
    remove_bazookas();
}

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

public bz_forward(player)
{
    if (!hasbazooka[player])
        return FMRES_IGNORED
    
    check_rocket(player)
    
    new clip,ammo
    new wpnid = get_user_weapon(player,clip,ammo)
    if (wpnid == CSW_KNIFE)
    {
        if((pev(player,pev_button)&IN_ATTACK2))
        {
                attack2(player)    
        }    
    }
    return FMRES_IGNORED
}

public attack2(player)
{
        
    if (rocket[player])
    {
        
        new rocket = create_entity("info_target")
        if(rocket == 0) return PLUGIN_CONTINUE
        
        entity_set_string(rocket, EV_SZ_classname, "zp_bz_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)
        
        new Float:vSrc[3]
        entity_get_vector(player, EV_VEC_origin, vSrc)
        
        new Float:Aim[3],Float:origin[3]
        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)
        
        new Float:velocity[3], Float:angles[3]
        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_survivor(id))
        return;
    
    if(hasbazooka[id])
    {
        new wpnid = read_data(2);
        if ( wpnid == CSW_KNIFE)
        {
            switchmodel(id)
        }
    }
}

public switchmodel(id)
{
        set_pev(id,pev_viewmodel2,"models/v_rpg.mdl")
        set_pev(id,pev_weaponmodel2,"models/p_rpg.mdl")
}

public remove_bazookas()
{
    new nextitem  = find_ent_by_class(-1,"zp_bazooka")
    while(nextitem)
    {
        remove_entity(nextitem)
        nextitem = find_ent_by_class(-1,"zp_bazooka")
    }
    return PLUGIN_CONTINUE
}

public emitsound(entity, channel, const sample[])
{
    if(is_user_alive(entity))
    {
        new clip,ammo
        new weapon = get_user_weapon(entity,clip,ammo)
        
        if(hasbazooka[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 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, "[Bazooka] Bron przeladowana !!!")
        rksound[player] = true
    }
}

public player_die()
{
    new id = read_data(2)
    if(hasbazooka[id])
    {
        drop_bazooka(id)
        rocket[id] = false
    }
    return PLUGIN_CONTINUE
}

public cmdDrop(id)
{
    if(hasbazooka[id])
    {
        new clip,ammo
        new weapon = get_user_weapon(id,clip,ammo)
        if(weapon == CSW_KNIFE)
        {
            drop_bazooka(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_bazooka(player)
{
    if(hasbazooka[player])
    {
        new Float:Aim[3],Float:origin[3]
        VelocityByAim(player, 64, Aim)
        entity_get_vector(player,EV_VEC_origin,origin)
        
        origin[0] += Aim[0]
        origin[1] += Aim[1]
        
        new bazooka = create_entity("info_target")
        entity_set_string(bazooka,EV_SZ_classname,"zp_bazooka")
        entity_set_model(bazooka,"models/w_rpg.mdl")    
        
        entity_set_size(bazooka,Float:{-16.0,-16.0,-16.0},Float:{16.0,16.0,16.0})
        entity_set_int(bazooka,EV_INT_solid,1)
        
        entity_set_int(bazooka,EV_INT_movetype,6)
        
        entity_set_vector(bazooka,EV_VEC_origin,origin)
    
        
        hasbazooka[player] = 0
        rocket[player] = false
    }    
}

public pfn_touch(ptr, ptd)
{
    if(is_valid_ent(ptr))
    {
        new classname[32]
        entity_get_string(ptr,EV_SZ_classname,classname,31)
        
        if(equal(classname, "zp_bazooka"))
        {
            if(is_valid_ent(ptd))
            {
                new id = ptd
                if(id > 0 && id < 34) {
                    if(!hasbazooka[id] && !zp_get_user_zombie(id) && is_user_alive(id))
                    {
                        engclient_cmd(id,"weapon_knife")
                        hasbazooka[id] = 1
                        rocket[id] = true
                        client_cmd(id,"spk items/gunpickup2.wav")
                        switchmodel(id)
                        remove_entity(ptr)
                    }
                }
            }
        }
        else if(equal(classname, "zp_bz_rocket"))
        {
            new Float:fOrigin[3]
            new iOrigin[3]
            entity_get_vector(ptr, EV_VEC_origin, fOrigin)
            FVecIVec(fOrigin,iOrigin)
            bz_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))
            {
                new classname2[32]
                entity_get_string(ptd,EV_SZ_classname,classname2,31)
                
                if(equal(classname2,"func_breakable"))
                    force_use(ptr,ptd)
            }
            
            remove_entity(ptr)
        }
    }
    return PLUGIN_CONTINUE
}

public zp_user_infected_pre(player, infector)
{
    drop_bazooka(player)
    hasbazooka[player] = 0;
    rocket[player] = false;
}

public zp_extra_item_selected(player, itemid)
{
    new clip,ammo
    new weapon = get_user_weapon(player,clip,ammo)
        
    if (itemid == g_item_bazooka)
    {
        hasbazooka[player] = 1
        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 bz_radius_damage(entity)
{
    new attacker  = entity_get_edict(entity, EV_ENT_owner);
    new name[35];
    get_user_name(attacker, name, 34);
    for(new i = 1; i < 33; i++)
    {
        if(is_user_alive(i))
        {
            new dist = floatround(entity_range(entity,i))
            
            if(dist <= get_pcvar_num(cvar_Dmg_range))
            {
                new hp = get_user_health(i)
                new Float:damage = get_pcvar_float(cvar_RocketDmg)-(get_pcvar_float(cvar_RocketDmg)/get_pcvar_float(cvar_Dmg_range))*float(dist)
                
                
                if(zp_get_user_zombie(attacker) != zp_get_user_zombie(i))
                {
                        if(hp > damage)
                        {
                            ExecuteHamB(Ham_TakeDamage, i,  entity, attacker, damage, DMG_BLAST);
                        }
                        else
                        {
                            ExecuteHamB(Ham_TakeDamage, i,  entity, attacker, float(hp), DMG_BLAST);
                            log_kill(attacker ,i,"Bazooka",0)
                        }
                }
            }
        }
    }
}

stock log_kill(killer, victim, weapon[], headshot)
{
    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;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
Odpowiedz

  • +
  • -
StoDwaJeden - zdjęcie StoDwaJeden 05.12.2015

Wytnij " register_clcmd("drop","cmdDrop") " i skompiluj nie będzie się dało wyrzucić broni naciskając "G", po śmierci będzie wypadać.


Użytkownik StoDwaJeden edytował ten post 05.12.2015 10:15
Odpowiedz

  • +
  • -
ZIGI89 - zdjęcie ZIGI89 06.12.2015

nie umiem tego kompilować    errror error

 

zrobiłbyś to

Odpowiedz

  • +
  • -
StoDwaJeden - zdjęcie StoDwaJeden 13.12.2015

Teraz kompiluj, poprawiłem i nie da się wyrzucić bazooki przez kliknięcie G. http://amxx.pl/kompi...ame=bazooka.sma


Użytkownik StoDwaJeden edytował ten post 13.12.2015 19:21
Odpowiedz

  • +
  • -
ZIGI89 - zdjęcie ZIGI89 25.01.2016

dalej  nie chce mi sie zkampilowac

 

mógł by to ktoś  zrobić

Odpowiedz

  • +
  • -
RaS_ - zdjęcie RaS_ 29.01.2016

Się nie kompiluje bo nie ma biblioteki czyli pliku .inc

użyj kompilacji lokalnej w wrzuć ten plik z załocznika do folderu include i będzie działać

Załączone pliki

Odpowiedz

  • +
  • -
ZIGI89 - zdjęcie ZIGI89 29.01.2016

ok dzięki działa już

Odpowiedz