Tessék  zombieplague4.3.ini :
Kód: ; -------------------------------------------- ; Zombie Plague 4.3 Customization File ; --------------------------------------------------- ; Any changes you make here will be ; automatically loaded at map start
; Note: No error parsing is done for this. ; Make sure you don't mistype anything.
[Access Flags] ENABLE/DISABLE MOD = l ADMIN MENU = d START MODE INFECTION = d START MODE NEMESIS = d START MODE SURVIVOR = d START MODE SWARM = d START MODE MULTI = d START MODE PLAGUE = d MAKE ZOMBIE = d MAKE HUMAN = d MAKE NEMESIS = d MAKE SURVIVOR = d RESPAWN PLAYERS = d ADMIN MODELS = d
[Player Models] (randomly chosen if more than one) HUMAN = arctic , guerilla , leet , terror , gign , gsg9 , sas , urban NEMESIS = eb@_zm2__9 SURVIVOR = sas , leet ADMIN ZOMBIE = eb@_zm2_admin_zm_ ADMIN HUMAN = eb@_zm2__admin1
; If you don't want people using altered player models, enable the following. ; 1 = Bounds Check (model's geometry must fit in the same bbox) ; 2 = CRC Check (file on client must exactly match server's file) FORCE CONSISTENCY = 0
; By default, zombie models are class specific. You can edit them separately in your zp_zombieclasses.ini ; If, however, you want all zombies to use the same models regardless of class, you can enable this ; setting and add your global zombie models to the "ZOMBIE" line. SAME MODELS FOR ALL = 0 ZOMBIE = zombie_source
[Weapon Models] V_KNIFE HUMAN = models/eb@_zm2/eb@_zm2_knife.mdl V_KNIFE NEMESIS = models/eb@_zm2/eb@_zm2__9.mdl V_M249 SURVIVOR = models/v_m249.mdl GRENADE INFECT = models/eb@_zm2/eb@_zm2_fertozo_bomba.mdl GRENADE FIRE = models/eb@_zm2/v_fire.mdl GRENADE FROST = models/zombie_plague/v_grenade_frost.mdl GRENADE FLARE = models/zombie_plague/v_grenade_flare.mdl V_KNIFE ADMIN HUMAN = models/v_knife.mdl V_KNIFE ADMIN ZOMBIE = models/zombie_plague/v_knife_zombie.mdl
[Grenade Sprites] TRAIL = sprites/laserbeam.spr RING = sprites/shockwave.spr FIRE = sprites/flame.spr SMOKE = sprites/black_smoke3.spr GLASS = models/glassgibs.mdl
[Sounds] (randomly chosen if more than one) WIN ZOMBIES = ambience/the_horror1.wav , ambience/the_horror3.wav , ambience/the_horror4.wav WIN HUMANS = zombie_plague/win_humans1.wav , zombie_plague/win_humans2.wav WIN NO ONE = ambience/3dmstart.wav ZOMBIE INFECT = eb@_zm2_sfx/scream1.wav , eb@_zm2_sfx/scream2.wav, eb@_zm2_sfx/scream3.wav ZOMBIE PAIN = zombie_plague/zombie_pain1.wav , zombie_plague/zombie_pain2.wav , zombie_plague/zombie_pain3.wav , zombie_plague/zombie_pain4.wav , zombie_plague/zombie_pain5.wav NEMESIS PAIN = eb@_zm2_sfx/pain1.wav , eb@_zm2_sfx/pain2.wav , eb@_zm2_sfx/pain3.wav , eb@_zm2_sfx/pain4.wav ZOMBIE DIE = eb@_zm2_sfx/zombi_halal1.wav , eb@_zm2_sfx/zombi_halal2.wav ZOMBIE FALL = zombie_plague/zombie_fall1.wav ZOMBIE MISS SLASH = weapons/knife_slash1.wav , weapons/knife_slash2.wav ZOMBIE MISS WALL = weapons/knife_hitwall1.wav ZOMBIE HIT NORMAL = weapons/knife_hit1.wav , weapons/knife_hit2.wav , weapons/knife_hit3.wav , weapons/knife_hit4.wav ZOMBIE HIT STAB = weapons/knife_stab.wav ZOMBIE IDLE = nihilanth/nil_now_die.wav , nihilanth/nil_slaves.wav , nihilanth/nil_alone.wav , zombie_plague/zombie_brains1.wav , zombie_plague/zombie_brains2.wav ZOMBIE IDLE LAST = nihilanth/nil_thelast.wav ZOMBIE MADNESS = zombie_plague/zombie_madness1.wav ROUND NEMESIS = zombie_plague/nemesis1.wav , zombie_plague/nemesis2.wav ROUND SURVIVOR = zombie_plague/survivor1.wav , zombie_plague/survivor2.wav ROUND SWARM = ambience/the_horror2.wav ROUND MULTI = ambience/the_horror2.wav ROUND PLAGUE = zombie_plague/nemesis1.wav , zombie_plague/survivor1.wav GRENADE INFECT EXPLODE = zombie_plague/grenade_infect.wav GRENADE INFECT PLAYER = eb@_zm2_sfx/scream1.wav , eb@_zm2_sfx/scream2.wav, eb@_zm2_sfx/scream3.wav GRENADE FIRE EXPLODE = eb@_zm2_sfx/egogranat.wav GRENADE FIRE PLAYER = zombie_plague/zombie_burn3.wav , zombie_plague/zombie_burn4.wav , zombie_plague/zombie_burn5.wav , zombie_plague/zombie_burn6.wav , zombie_plague/zombie_burn7.wav GRENADE FROST EXPLODE = eb@_zm2_sfx/frostnova.wav GRENADE FROST PLAYER = eb@_zm2_sfx/impalehit.wav GRENADE FROST BREAK = eb@_zm2_sfx/impalelaunch1.wav GRENADE FLARE = items/nvg_on.wav ANTIDOTE = items/smallmedkit1.wav THUNDER = zombie_plague/thunder1.wav , zombie_plague/thunder2.wav
[Ambience Sounds] (randomly chosen if more than one) (only .wav and .mp3 formats supported) (duration is in seconds) INFECTION ENABLE = 0 INFECTION SOUNDS = zombie_plague/ambience.wav INFECTION DURATIONS = 17 NEMESIS ENABLE = 0 NEMESIS SOUNDS = zombie_plague/ambience.wav NEMESIS DURATIONS = 17 SURVIVOR ENABLE = 0 SURVIVOR SOUNDS = zombie_plague/ambience.wav SURVIVOR DURATIONS = 17 SWARM ENABLE = 0 SWARM SOUNDS = zombie_plague/ambience.wav SWARM DURATIONS = 17 PLAGUE ENABLE = 0 PLAGUE SOUNDS = zombie_plague/ambience.wav PLAGUE DURATIONS = 17
[Buy Menu Weapons] PRIMARY = weapon_galil , weapon_famas , weapon_m4a1 , weapon_ak47 , weapon_sg552 , weapon_aug , weapon_scout , weapon_m3 , weapon_xm1014 , weapon_tmp , weapon_mac10 , weapon_ump45 , weapon_mp5navy , weapon_p90 SECONDARY = weapon_glock18 , weapon_usp , weapon_p228 , weapon_deagle , weapon_fiveseven , weapon_elite ADDITIONAL ITEMS = weapon_hegrenade , weapon_flashbang , weapon_smokegrenade
[Extra Items: Weapons and their costs] NAMES = Molotov koktel , Fagyaszto Granat , Feny Granat , AwP , M249 Para , SG550 Auto-Sniper , G3SG1 Auto-Sniper ITEMS = weapon_hegrenade , weapon_flashbang , weapon_smokegrenade , weapon_awp , weapon_m249 , weapon_sg550 , weapon_g3sg1 COSTS = 10 , 10 , 5 , 8 , 10 , 12 , 12
[Hard Coded Items Costs] NIGHT VISION = 5 ANTIDOTE = 15 ZOMBIE MADNESS = 20 INFECTION BOMB = 70
[Weather Effects] RAIN = 0 SNOW = 0 FOG = 0 FOG DENSITY = 0.018 FOG COLOR = 128 128 128
[Custom Skies] (randomly chosen if more than one) ENABLE = 1 SKY NAMES = orbital-element256_
[Lightning Lights Cycle] LIGHTS = ijklmnonmlkjihgfedcb , klmlkjihgfedcbaabcdedcb , bcdefedcijklmlkjihgfedcb
[Zombie Decals] (for bloodstains/footsteps) DECALS = 99 , 107 , 108 , 184 , 185 , 186 , 187 , 188 , 189
[Knockback Power for Weapons] (use -1.0 to disable knockback power for the weapon) P228 = 2.4 SCOUT = 6.5 XM1014 = 8.0 MAC10 = 2.3 AUG = 5.0 ELITE = 2.4 FIVESEVEN = 2.0 UMP45 = 2.4 SG550 = 5.3 GALIL = 5.5 FAMAS = 5.5 USP = 2.2 GLOCK18 = 2.0 AWP = 10.0 MP5NAVY = 2.5 M249 = 5.2 M3 = 8.0 M4A1 = 5.0 TMP = 2.4 G3SG1 = 6.5 DEAGLE = 5.3 SG552 = 5.0 AK47 = 6.0 P90 = 2.0
[Objective Entities] (and anything that would affect gameplay that needs to be removed) CLASSNAMES = func_bomb_target , info_bomb_target , info_vip_start , func_vip_safetyzone , func_escapezone , hostage_entity , monster_scientist , func_hostage_rescue , info_hostage_rescue , env_fog , env_rain , env_snow , item_longjump , func_vehicle
[SVC_BAD Prevention] (if you experience *many* SVC_BAD kicks, try one of the following) ; A. Increase the delay between model changes here (in 0.1 increments until the kicks are gone) MODELCHANGE DELAY = 0.2 ; B. If you still get recurring kicks, try enabling this setting: (experimental!) HANDLE MODELS ON SEPARATE ENT = 0
; If you want your models to have accurate hitboxes, try enabling this. ; Note: make sure your models don't have messed up hitboxes, otherwise ; this setting might cause your server insane cpu usage and lag! SET MODELINDEX OFFSET = 0
Sma: Minigun:
Kód: #include <amxmodx> #include <engine> #include <fakemeta_util> #include <cstrike> #include <hamsandwich> #include <zombieplague> #include <fun> #define MAX_PLAYERS 32 #define MAX_BLOOD_DISTANCE 64 #define LOADUP_TIME 0.75 #define SHUTDOWN_TIME 1.7 #define SHAKE_FORCE -5.0 //(must be negative value) new const GUNSHOT_DECALS[] = {41, 42, 43, 44, 45} // Gunshot decal list // Plugin information new const PLUGIN[] = "[ZP] Minigun" new const VERSION[] = "1.65" new const AUTHOR[] = "CLLlAgOB" // Weapon information new const g_item_name[] = { "Minigun" } const g_item_cost = 30 // other new bool:has_minigun[33], m249, bool:atk2[33], bool:atk1[33],bool:delay[33],bool:beackup[33], clipp[33],clipstart,g_itemid_minigun,g_fwid,g_guns_eventids_bitsum,bool:g_fix_punchangle[33], bool:frstCLIP[33],g_MaxPlayers, Float:g_lastShot[33], g_normal_trace[33],DMGMG,bool:haswhpnnmg[33], Float:g_nextSound[33], g_plAction[33],bool:canfire[33],oneround,bool:user_bot[33],bool:delayhud[33], clipstartsuv,bool:survivor[33],bool:is_alive[33],bool:is_connected[33] // Blood new g_blood new g_bloodspray // CS Player PData Offsets (win32) const OFFSET_CSTEAMS = 114 // Linux diff's const OFFSET_LINUX = 5 // offsets 5 higher in Linux builds // Models new P_MODEL[] = "models/wpnmod/m134/p_minigun.mdl" new V_MODEL[] = "models/wpnmod/m134/v_minigun.mdl" new W_MODEL[] = "models/wpnmod/m134/w_minigun.mdl" // Sounds new m_SOUND[][] = {"wpnmod/minigun/hw_shoot1.wav", "wpnmod/minigun/hw_spin.wav", "wpnmod/minigun/hw_spinup.wav", "wpnmod/minigun/hw_spindown.wav"} new g_noammo_sounds[][] = {"weapons/dryfire_rifle.wav"} //no recoil new const g_guns_events[][] = {"events/m249.sc"} //connect valid? #define is_user_valid_connected(%1) (1 <= %1 <= g_MaxPlayers && is_connected[%1]) enum { anim_idle, anim_idle2, anim_gentleidle, anim_stillidle, anim_draw, anim_holster, anim_spinup, anim_spindown, anim_spinidle, anim_spinfire, anim_spinidledown } // Types enum { act_none, act_load_up, act_run } public plugin_precache() { precache_model(P_MODEL) precache_model(V_MODEL) precache_model(W_MODEL) precache_sound(m_SOUND[0]) precache_sound(m_SOUND[1]) precache_sound(m_SOUND[2]) precache_sound(m_SOUND[3]) g_blood = precache_model("sprites/blood.spr") g_bloodspray = precache_model("sprites/bloodspray.spr") g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1) } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) clipstart = register_cvar("amx_ammo_m249","600") clipstartsuv = register_cvar("amx_ammosuv_m249","10000") m249 = register_cvar("amx_minigun_speed","0.7") DMGMG = register_cvar("amx_minigun_damage","0.35") oneround = register_cvar("amx_oneround","0") g_itemid_minigun = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_HUMAN) register_event("CurWeapon","event_curweapon","be", "1=1") register_event("DeathMsg","unminigun","a") register_forward(FM_ClientDisconnect, "fw_ClientDisconnect") register_forward(FM_CmdStart, "fwd_CmdStart") register_forward(FM_EmitSound,"fwd_emitsound") register_forward(FM_PlaybackEvent, "fwPlaybackEvent") register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1) register_forward(FM_StartFrame, "fwd_StartFrame") register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1) RegisterHam(Ham_Killed, "player", "fw_PlayerKilled") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1) RegisterHam(Ham_TakeDamage, "player", "player_TakeDamage") register_clcmd("drop","dropcmd", 0) g_MaxPlayers = get_maxplayers() //events register_logevent("event_start", 2, "1=Round_Start") register_event("TextMsg", "fwEvGameWillRestartIn", "a", "2=#Game_will_restart_in") register_event("HLTV", "event_start_freezetime", "a", "1=0", "2=0") unregister_forward(FM_PrecacheEvent, g_fwid, 1) } // Client joins the game public client_putinserver(id) { // Player joined is_connected[id] = true } // Client leaving public fw_ClientDisconnect(id) { is_connected[id] = false is_alive[id] = false } public fw_PlayerSpawn_Post(id) { // Not alive or didn't join a team yet if (!is_user_alive(id) || !fm_cs_get_user_team(id)) return; // Player spawned is_alive[id] = true } public fw_PlayerKilled(victim, attacker, shouldgib) { //player die is_alive[victim] = false } public unminigun(){ new id = read_data(2) if(has_minigun[id] && !is_alive[id]) { new Float:Aim[3],Float:origin[3] VelocityByAim(id, 64, Aim) entity_get_vector(id,EV_VEC_origin,origin) origin[0] += Aim[0] origin[1] += Aim[1] new minigun = create_entity("info_target") entity_set_string(minigun,EV_SZ_classname,"minigun") entity_set_model(minigun,W_MODEL) entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0}) entity_set_int(minigun,EV_INT_solid,1) entity_set_int(minigun,EV_INT_movetype,6) entity_set_int(minigun, EV_INT_iuser1, clipp[id]) entity_set_vector(minigun,EV_VEC_origin,origin) has_minigun[id] = false remowegun(id) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } //damage lvl public player_TakeDamage(victim, inflictor, attacker, Float:damage, damagetype) { if(damagetype & DMG_BULLET && haswhpnnmg[attacker] && has_minigun[attacker] == true && attacker!=victim) { damage = damage*get_pcvar_float(DMGMG) SetHamParamFloat(4, damage) return HAM_IGNORED } return HAM_IGNORED } public event_start_freezetime(){ remove_miniguns() static iPlayers[32], iPlayersNum, i get_players(iPlayers, iPlayersNum, "a") if(get_pcvar_num(oneround)){ for (i = 0; i <= iPlayersNum; ++i){ if(has_minigun[iPlayers[i]]){ has_minigun[iPlayers[i]] = false remowegun(iPlayers[i]) removesuv(iPlayers[i]) } } } else { for (i = 0; i <= iPlayersNum; ++i){ g_plAction[iPlayers[i]] = false canfire[iPlayers[i]] = false frstCLIP[iPlayers[i]] = true set_task(0.1,"event_curweapon",iPlayers[i]) removesuv(iPlayers[i]) } } } public removesuv(id){ if(survivor[id]){ has_minigun[id] = false survivor[id] = false remowegun(id) } } // remove gun and save all guns public remowegun(id) { new wpnList[32] new number get_user_weapons(id,wpnList,number) for (new i = 0;i < number ;i++) { if (wpnList[i] == CSW_M249) { fm_strip_user_gun(id, wpnList[i]) } } } public event_start(){ static iPlayers[32], iPlayersNum, i get_players(iPlayers, iPlayersNum, "a") for (i = 0; i <= iPlayersNum; ++i) canfire[iPlayers[i]] = true } public fwEvGameWillRestartIn() { static iPlayers[32], iPlayersNum, i get_players(iPlayers, iPlayersNum, "a") for (i = 0; i <= iPlayersNum; ++i) has_minigun[iPlayers[i]] = false } public client_connect(id){ canfire[id]= false has_minigun[id] = false g_normal_trace[id] = 0 if(is_user_bot(id)) user_bot[id] = true else user_bot[id] = false } //block sound no ammo in atack public fwd_emitsound(id, channel, sample[], Float:volume, Float:attn, flag, pitch) { if (!is_user_valid_connected(id) || !has_minigun[id]) return FMRES_IGNORED; else if((equal(sample, g_noammo_sounds[0])) && has_minigun[id] && haswhpnnmg[id]) { return FMRES_SUPERCEDE } return FMRES_IGNORED } // someone bought our extra item public zp_extra_item_selected(id, itemid) { if (itemid == g_itemid_minigun) give_weapon(id,0,1) } //infect plaer public zp_user_infected_pre(player, infector){ has_minigun[player] = false dropcmd(player) } public dropcmd(id) { if(has_minigun[id] && haswhpnnmg[id] && is_alive[id]) { new Float:Aim[3],Float:origin[3] VelocityByAim(id, 64, Aim) entity_get_vector(id,EV_VEC_origin,origin) origin[0] += Aim[0] origin[1] += Aim[1] new minigun = create_entity("info_target") entity_set_string(minigun,EV_SZ_classname,"minigun") entity_set_model(minigun,W_MODEL) entity_set_size(minigun,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0}) entity_set_int(minigun,EV_INT_solid,1) entity_set_int(minigun,EV_INT_movetype,6) entity_set_int(minigun, EV_INT_iuser1, clipp[id]) entity_set_vector(minigun,EV_VEC_origin,origin) has_minigun[id] = false canfire[id] = false remowegun(id) g_plAction[id] = false return PLUGIN_HANDLED } return PLUGIN_CONTINUE } 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, "minigun")) { if(is_valid_ent(ptd)) { new id = ptd if(id > 0 && id < 34) { if(!has_minigun[id] && is_alive[id] && !zp_get_user_zombie(id)) { give_weapon(id,entity_get_int(ptr, EV_INT_iuser1), 0) remove_entity(ptr) } } } } } } public remove_miniguns() { new nextitem = find_ent_by_class(-1,"minigun") while(nextitem) { remove_entity(nextitem) nextitem = find_ent_by_class(-1,"minigun") } return PLUGIN_CONTINUE } //give wpn public give_weapon(id, ammo, frst){ has_minigun[id] = true give_item(id,"weapon_m249") canfire[id] = true clipp[id] = ammo if(frst) frstCLIP[id] = true else beackup[id] = true } //set models public event_curweapon(id){ if(!is_alive[id] || !is_connected[id] || user_bot[id]) return; new clip, ammo, weapon = get_user_weapon(id, clip, ammo) if(zp_get_user_survivor(id) && get_pcvar_num(clipstartsuv)!=0 && !survivor[id]){ survivor[id] = true give_weapon(id,0,1) } if((has_minigun[id]) && (weapon == CSW_M249)){ if(g_plAction[id] != act_run && frstCLIP[id]){ if(survivor[id]){ clipp[id] = get_pcvar_num(clipstartsuv) } else { clipp[id] = get_pcvar_num(clipstart) } new ent = get_weapon_ent(id,weapon) if(clipp[id] < get_pcvar_num(clipstart)) clipp[id] = get_pcvar_num(clipstart) cs_set_weapon_ammo(ent, clipp[id]) frstCLIP[id] = false } if(g_plAction[id] != act_run && beackup[id]){ new ent = get_weapon_ent(id,weapon) cs_set_weapon_ammo(ent, clipp[id]) beackup[id] = false } if(clipp[id] == 0){ new ent = get_weapon_ent(id,weapon) cs_set_weapon_ammo(ent, clipp[id]) } if(g_plAction[id] == act_run){ clipp[id] = clip } message_begin(MSG_ONE, get_user_msgid("CurWeapon"), {0,0,0}, id) write_byte(1) write_byte(CSW_KNIFE) write_byte(0) message_end() if(!haswhpnnmg[id]){ entity_set_string(id,EV_SZ_viewmodel,V_MODEL) entity_set_string(id,EV_SZ_weaponmodel,P_MODEL) haswhpnnmg[id] = true } new Ent = get_weapon_ent(id,weapon) new Float:N_Speed if(Ent) { N_Speed = get_pcvar_float(m249) new Float:Delay = get_pdata_float( Ent, 46, 4) * N_Speed if (Delay > 0.0){ set_pdata_float( Ent, 46, Delay, 4) } } ammo_hud(id) if(atk1[id]){ fire_mode(id, 0) } if(atk2[id]){ fire_mode(id, 1) } } if(weapon != CSW_M249) haswhpnnmg[id] = false if((has_minigun[id]) && (!haswhpnnmg[id])) g_plAction[id] = act_none return; } //play anim public native_playanim(player,anim) { set_pev(player, pev_weaponanim, anim) message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player) write_byte(anim) write_byte(pev(player, pev_body)) message_end() } //marks on hit public native_gi_get_gunshot_decal() { return GUNSHOT_DECALS[random_num(0, sizeof(GUNSHOT_DECALS) - 1)] } //hit bulet public testbulet(id){ // Find target new aimOrigin[3], target, body get_user_origin(id, aimOrigin, 3) get_user_aiming(id, target, body) if(target > 0 && target <= g_MaxPlayers) { new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3] pev(id, pev_origin, fStart) // Get ids view direction velocity_by_aim(id, MAX_BLOOD_DISTANCE, fVel) // Calculate position where blood should be displayed fStart[0] = float(aimOrigin[0]) fStart[1] = float(aimOrigin[1]) fStart[2] = float(aimOrigin[2]) fEnd[0] = fStart[0]+fVel[0] fEnd[1] = fStart[1]+fVel[1] fEnd[2] = fStart[2]+fVel[2] // Draw traceline from victims origin into ids view direction to find // the location on the wall to put some blood on there new res engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res) get_tr2(res, TR_vecEndPos, fRes) // Show some blood :) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BLOODSPRITE) write_coord(floatround(fStart[0])) write_coord(floatround(fStart[1])) write_coord(floatround(fStart[2])) write_short(g_bloodspray) write_short(g_blood) write_byte(70) write_byte(random_num(1,2)) message_end() } else { new decal = native_gi_get_gunshot_decal() // Check if the wall hit is an entity if(target) { // Put decal on an entity message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_DECAL) write_coord(aimOrigin[0]) write_coord(aimOrigin[1]) write_coord(aimOrigin[2]) write_byte(decal) write_short(target) message_end() } else { // Put decal on "world" (a wall) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_WORLDDECAL) write_coord(aimOrigin[0]) write_coord(aimOrigin[1]) write_coord(aimOrigin[2]) write_byte(decal) message_end() } // Show sparcles message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_GUNSHOTDECAL) write_coord(aimOrigin[0]) write_coord(aimOrigin[1]) write_coord(aimOrigin[2]) write_short(id) write_byte(decal) message_end() } } //block anim standart wpn public UpdateClientData_Post( id, sendweapons, cd_handle ){ if ( !is_alive[id] ) return FMRES_IGNORED; if(haswhpnnmg[id] && has_minigun[id]) set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 ); return FMRES_HANDLED; } public fwd_CmdStart(id, uc_handle, seed) { if(!is_alive[id] || !has_minigun[id]) return FMRES_IGNORED if(!canfire[id]) return FMRES_HANDLED if(haswhpnnmg[id]) { static buttons buttons = get_uc(uc_handle, UC_Buttons) if(buttons & IN_ATTACK) { atk1[id] = true atk2[id] = false } else if(buttons & IN_ATTACK2) { atk2[id] = true atk1[id] = false } if(atk1[id] && !atk2[id] && (g_plAction[id] == act_none || g_plAction[id] == act_load_up) && clipp[id]>0){ buttons &= ~IN_ATTACK buttons &= ~IN_ATTACK2 set_uc(uc_handle, UC_Buttons, buttons) fire_mode(id,0) } else if(atk2[id] || atk1[id] && clipp[id]==0){ fire_mode(id,1) } } return FMRES_IGNORED } // in fire fire_mode(id, type) { static Float:gtime gtime = get_gametime() g_lastShot[id] = gtime if(g_nextSound[id] <= gtime && canfire[id]) { switch(g_plAction[id]) { case act_none: { native_playanim(id, anim_spinup) emit_sound(id, CHAN_WEAPON, m_SOUND[2], 1.0, ATTN_NORM, 0, PITCH_NORM) g_nextSound[id] = gtime + LOADUP_TIME g_plAction[id] = act_load_up } case act_load_up: { g_nextSound[id] = gtime g_plAction[id] = act_run } } } if(g_plAction[id] == act_run) { if(type == 0 && clipp[id]>0 && atk1[id]){ emit_sound(id, CHAN_WEAPON, m_SOUND[0], 1.0, ATTN_NORM, 0, PITCH_NORM) testbulet(id) if(!delay[id]) { native_playanim(id, anim_spinfire) ammo_hud(id) set_task(0.2,"delayanim",id) delay[id] = true } } else { if(!delay[id]) { ammo_hud(id) emit_sound(id, CHAN_WEAPON, m_SOUND[1], 1.0, ATTN_NORM, 0, PITCH_NORM) native_playanim(id, anim_spinidle) set_task(0.2,"delayanim",id) delay[id] = true } } } atk1[id] = false atk2[id] = false } public delayanim(id){ delay[id] = false } //sound and anim public fwd_StartFrame() { static Float:gtime, id gtime = get_gametime() for(id = 0; id <= g_MaxPlayers; id++) { if(g_plAction[id] != act_none) { if(!(pev(id, pev_button) & IN_ATTACK) && !(pev(id, pev_button) & IN_ATTACK2) && g_lastShot[id] + 0.2 < gtime) { native_playanim(id, anim_spinidledown) emit_sound(id, CHAN_WEAPON, m_SOUND[3], 1.0, ATTN_NORM, 0, PITCH_NORM) g_nextSound[id] = gtime + SHUTDOWN_TIME g_plAction[id] = act_none } } } } // No recoil stuff public fwPrecacheEvent(type, const name[]) { for (new i = 0; i < sizeof g_guns_events; ++i) { if (equal(g_guns_events[i], name)) { g_guns_eventids_bitsum |= (1<<get_orig_retval()) return FMRES_HANDLED } } return FMRES_IGNORED } public fwPlaybackEvent(flags, invoker, eventid) { if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_MaxPlayers) || !haswhpnnmg[invoker] || !has_minigun[invoker]) return FMRES_IGNORED g_fix_punchangle[invoker] = true return FMRES_HANDLED } public fwPlayerPostThink(id) { if (g_fix_punchangle[id]) { g_fix_punchangle[id] = false set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0}) return FMRES_HANDLED } return FMRES_IGNORED } public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, ptr) { if (!(1 <= id <= g_MaxPlayers)) return FMRES_IGNORED if (!g_normal_trace[id]) { g_normal_trace[id] = ptr return FMRES_HANDLED } if (ptr == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_alive[id] || !haswhpnnmg[id] || !has_minigun[id]) return FMRES_IGNORED fix_recoil_trace(id, start, ptr) return FMRES_SUPERCEDE } // show ammo clip public ammo_hud(id) { if(!delayhud[id]) { delayhud[id] = true new AmmoHud[65] new clip = clipp[id] format(AmmoHud, 64, "Ammo: %i", clip) set_hudmessage(200, 100, 0, 1.0 , 1.0, 0, 0.1, 0.1,0.1) show_hudmessage(id,"%s",AmmoHud) set_task(0.2,"delayhutmsg",id) } } public delayhutmsg(id){ delayhud[id]= false } //get weapon id stock get_weapon_ent(id,wpnid=0,wpnName[]="") { // who knows what wpnName will be static newName[24]; // need to find the name if(wpnid) get_weaponname(wpnid,newName,23); // go with what we were told else formatex(newName,23,"%s",wpnName); // prefix it if we need to if(!equal(newName,"weapon_",7)) format(newName,23,"weapon_%s",newName); return fm_find_ent_by_owner(get_maxplayers(),newName,id); } fix_recoil_trace(id, const Float:start[], ptr) { static Float:dest[3] pev(id, pev_v_angle, dest) engfunc(EngFunc_MakeVectors, dest) global_get(glb_v_forward, dest) xs_vec_mul_scalar(dest, 9999.0, dest) xs_vec_add(start, dest, dest) engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, ptr) } // Get User Team stock fm_cs_get_user_team(id) { return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX); } Újraéledés (/ujra)
Kód: #include <amxmodx> #include <hamsandwich> #include <zombieplague> #include <fakemeta> #include <amxmisc>
#define PLUGIN "[ZP] Extra Item : Respawn" #define VERSION "2.6" #define AUTHOR "The_Thing\Maslyak & LauNcHerR"
static const plugin[] = "Ujraeledes (sayba /ujra)"; new g_respawn_cost; new thinkobj; new g_respawn
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_respawn_cost = register_cvar("zp_respawn_cost", "15")
g_respawn = zp_register_extra_item("Ujraeledes (sayba /ujra)", get_pcvar_num(g_respawn_cost), ZP_TEAM_HUMAN) register_clcmd("say /ujra", "buy_respawn") register_clcmd("say /respawn", "buy_respawn") register_clcmd("say /ujraeledes", "buy_respawn") register_clcmd("say /eledes", "buy_respawn") thinkobj = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")); if ( pev_valid(thinkobj) ) { set_pev(thinkobj, pev_classname, "advertisement_loop"); set_pev(thinkobj, pev_nextthink, get_gametime() + 260.0); register_forward(FM_Think, "fourmin_think"); } }
public fourmin_think(ent) { if ( ent != thinkobj ) return FMRES_IGNORED;
client_print(0, print_chat, "", plugin); set_pev(ent, pev_nextthink, get_gametime() + 240.0); return FMRES_HANDLED; }
public buy_respawn(id, itemid) { if (itemid == g_respawn)
if ( is_user_alive(id) ) { client_print(id, print_chat, "[ZP] Csak halott szemelyek tudjak megvasarolni az ujraeledes kepesseget!", get_pcvar_num(g_respawn_cost)) return PLUGIN_HANDLED } new money = zp_get_user_ammo_packs(id) if ( money < get_pcvar_num(g_respawn_cost)) { client_print(id, print_chat, "[ZP] Nincs eleg loszer csomagod az ujraeledes meg vasarlashoz!", get_pcvar_num(g_respawn_cost)) return PLUGIN_HANDLED } zp_set_user_ammo_packs(id, money - get_pcvar_num(g_respawn_cost))
respawn_player(id) client_print(id, print_chat, "*** Ujraeledtel! ***")
return PLUGIN_HANDLED }
public respawn_player(id) { if(zp_is_survivor_round()) { zp_respawn_user(id, ZP_TEAM_ZOMBIE) } else { zp_respawn_user(id, ZP_TEAM_HUMAN) } }
A /ujra se megy :S
|