zablokować możliwość wyrzucania BAZUKI
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
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 } */
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
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
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ć