Witam posiadam serwer zombi mod 4,3
prosił bym ,by ktoś przerobił mi tak bazoke
aby nie dało jej się przekazać innej osobie albo aby po przekazaniu była bezużyteczna (nie miała naboi albo po prostu zablokować możliwość wyrzucania jej )
dokładniej chodzi mi o wyeliminowanie przekazywania sobie bazooki miedzy graczami
wiadomo ze bazuka optrzebuje czasu na przeładowanie
a gdy ja przekazujemy sobie miedzy graczami to niema tego czasu na przeładowywanie
i mona strzelać cały czas
#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 } */
Użytkownik ZIGI89 edytował ten post 01.12.2015 23:46