- #include <zombie_escape>
- #include <fakemeta_util>
- #include <xs>
- #include <cstrike>
- #define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
- #define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
- #define reset_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
- #define EV_INT_WEAPONKEY EV_INT_impulse
- #define WEAPONKEY 7
- #define JANUS7_CLIPAMMO 200
- #define JANUS7_BPAMMO 200
- #define JANUS7_DAMAGE 29
- #define SHOTS_NEED 8
- #define RELOAD_TIME 4.7
- #define wId CSW_M249
- #define JANUS7_VMODEL "models/zombie_escape/v_janus7.mdl"
- #define JANUS7_PMODEL "models/zombie_escape/p_janus7.mdl"
- #define JANUS7_WMODEL "models/zombie_escape/w_janus7.mdl"
- new g_SmokePuff_SprId
- new id
- new const Fire_snd[][] = {"weapons/janus7-1.wav", "weapons/janus7-2.wav"};
- new const went[] ="weapon_m249";
- new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };
- new g_iItemID,g_mode[33], g_shots[33], g_sprite, g_sprite1, g_target[33],
- g_sound[33],g_has_janus7[33],g_orig_event_janus7, g_clip_ammo[33],
- Float:cl_pushangle[33][3], m_iBlood[2], g_janus7_TmpClip[33], g_bitsMuzzleFlash, g_iEntity;
- public plugin_init()
- {
- register_plugin("Janus-7", "1.0", "kademik");
- register_clcmd("weapon_janus7", "Hook_Select");
- register_event("CurWeapon", "CurrentWeapon", "be","1=1");
- g_iItemID = ze_register_item("Janus 7", 50, 0)
- RegisterHam(Ham_Item_AddToPlayer, went, "fw_janus7_AddToPlayer");
- RegisterHam(Ham_Item_Deploy, went, "fw_Item_Deploy_Post", 1);
- RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janus7_PrimaryAttack");
- RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janus7_PrimaryAttack_Post", 1);
- RegisterHam(Ham_Item_PostFrame, went, "janus7__ItemPostFrame");
- RegisterHam(Ham_Weapon_Reload, went, "janus7__Reload");
- RegisterHam(Ham_Weapon_Reload, went, "janus7__Reload_Post", 1);
- RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
- register_forward(FM_AddToFullPack, "CPlayer__AddToFullPack_post", 1);
- register_forward(FM_CheckVisibility, "CEntity__CheckVisibility");
- register_forward(FM_SetModel, "fw_SetModel");
- register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
- register_forward(FM_PlaybackEvent, "fwPlaybackEvent");
- }
- public plugin_precache()
- {
- precache_model(JANUS7_VMODEL);
- precache_model(JANUS7_PMODEL);
- precache_model(JANUS7_WMODEL);
- g_sprite = precache_model("sprites/ls/lgtning.spr");
- g_sprite1 = precache_model("sprites/ls/colflare.spr");
- precache_generic( "sprites/weapon_janus7.txt" );
- precache_generic( "sprites/ls/640hud7.spr" );
- precache_generic( "sprites/ls/640hud12.spr" );
- precache_generic( "sprites/ls/640hud99.spr" );
- precache_sound(Fire_snd[0]);
- precache_sound(Fire_snd[1]);
- precache_sound("weapons/janus7_change1.wav");
- precache_sound("weapons/janus7_change2.wav");
- m_iBlood[0] = precache_model("sprites/blood.spr");
- m_iBlood[1] = precache_model("sprites/bloodspray.spr");
- precache_model("sprites/ls/muzzleflash_janus7.spr");
- g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr");
- g_iEntity = create_entity("info_target");
- entity_set_model(g_iEntity, "sprites/ls/muzzleflash_janus7.spr");
- entity_set_float(g_iEntity, EV_FL_scale, 0.1);
- entity_set_int(g_iEntity, EV_INT_rendermode, kRenderTransTexture);
- entity_set_float(g_iEntity, EV_FL_renderamt, 0.0);
- register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1);
- }
- public fwPrecacheEvent_Post(type, const name[])
- {
- if (equal("events/m249.sc", name))
- {
- g_orig_event_janus7 = get_orig_retval();
- return FMRES_HANDLED;
- }
- return FMRES_IGNORED;
- }
- public Hook_Select(id)
- {
- engclient_cmd(id, went);
- return PLUGIN_HANDLED;
- }
- public client_connect(id)
- {
- g_has_janus7[id] = false;
- }
- public client_disconnected(id)
- {
- g_has_janus7[id] = false;
- }
- public ze_user_infected(iVictim, iInfector)
- {
- if (ze_is_user_zombie(id))
- {
- g_has_janus7[id] = false;
- g_sound[id] = false;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- g_mode[id] = false;
- g_shots[id] = false;
- }
- }
- public fw_SetModel(entity, model[])
- {
- if(!is_valid_ent(entity))
- return FMRES_IGNORED;
- static szClassName[33];
- entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
- if(!equal(szClassName, "weaponbox"))
- return FMRES_IGNORED;
- static iOwner;
- iOwner = entity_get_edict(entity, EV_ENT_owner);
- if(equal(model, "models/w_m249.mdl"))
- {
- static iStoredSVDID;
- iStoredSVDID = find_ent_by_owner(-1, went, entity);
- if(!is_valid_ent(iStoredSVDID))
- return FMRES_IGNORED;
- if(g_has_janus7[iOwner])
- {
- entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, WEAPONKEY);
- g_has_janus7[iOwner] = false;
- entity_set_model(entity, JANUS7_WMODEL);
- g_mode[iOwner] = false;
- g_shots[iOwner] = false;
- remove_task(iOwner+1231);
- return FMRES_SUPERCEDE;
- }
- }
- return FMRES_IGNORED;
- }
- public CEntity__CheckVisibility(iEntity, pSet)
- {
- if (iEntity != g_iEntity)
- return FMRES_IGNORED;
- forward_return(FMV_CELL, 1);
- return FMRES_SUPERCEDE;
- }
- public give_janus7(id)
- {
- drop_weapons(id, 1);
- new iWep2 = fm_give_item(id,went);
- if( iWep2 > 0 )
- {
- cs_set_weapon_ammo(iWep2, JANUS7_CLIPAMMO);
- cs_set_user_bpammo (id, wId, JANUS7_BPAMMO);
- }
- g_has_janus7[id] = true;
- g_shots[id] = 0;
- g_mode[id] = false;
- Sprite(id, 1);
- }
- public ze_select_item_pre(id, itemid)
- {
- // This not our item?
- if (itemid != g_iItemID)
- return ZE_ITEM_AVAILABLE
- // Available for Humans only, So don't show it for zombies
- if (ze_is_user_zombie(id))
- return ZE_ITEM_DONT_SHOW
- // Finally return that it's available
- return ZE_ITEM_AVAILABLE
- }
- public ze_select_item_post(id, itemid)
- {
- // This is not our item, Block it here and don't execute the blew code
- if (itemid != g_iItemID)
- return
- give_janus7(id);
- }
- public fw_janus7_AddToPlayer(janus7, id)
- {
- if(!is_valid_ent(janus7) || !is_user_connected(id))
- return HAM_IGNORED;
- if(entity_get_int(janus7, EV_INT_WEAPONKEY) == WEAPONKEY)
- {
- g_has_janus7[id] = true;
- g_mode[id] = false;
- g_shots[id] = 0;
- g_sound[id] = 0;
- entity_set_int(janus7, EV_INT_WEAPONKEY, 0);
- Sprite(id, 1);
- return HAM_HANDLED;
- }
- else Sprite(id, 0);
- return HAM_IGNORED;
- }
- public fw_Item_Deploy_Post(weapon_ent)
- {
- static owner;
- owner = pev(weapon_ent, pev_owner);
- static weaponid;
- weaponid = cs_get_weapon_id(weapon_ent);
- replace_weapon_models(owner, weaponid);
- }
- public CurrentWeapon(id) replace_weapon_models(id, read_data(2));
- replace_weapon_models(id, weaponid)
- {
- static g_wpn[33];
- switch (weaponid)
- {
- case wId:
- {
- if(is_user_alive(id) && is_user_connected(id) && g_has_janus7[id])
- {
- if (ze_is_user_zombie(id))
- return;
- if(g_wpn[id] != CSW_M249){
- if( g_mode[id]) UTIL_PlayWeaponAnimation(id, 8);
- else UTIL_PlayWeaponAnimation(id, g_shots[id]>50?14:2);
- }
- set_pev(id, pev_viewmodel2, JANUS7_VMODEL);
- set_pev(id, pev_weaponmodel2, JANUS7_PMODEL);
- }
- }
- }
- if(is_user_alive(id))g_wpn[id] = get_user_weapon(id);
- }
- public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
- {
- if(!is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_janus7[Player])
- return FMRES_IGNORED;
- set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001);
- return FMRES_HANDLED;
- }
- public fw_janus7_PrimaryAttack(Weapon)
- {
- new Player = get_pdata_cbase(Weapon, 41, 4);
- if (!g_has_janus7[Player])
- return HAM_IGNORED;
- pev(Player,pev_punchangle,cl_pushangle[Player]);
- g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon);
- if( g_mode[Player] ) return HAM_SUPERCEDE;
- return HAM_IGNORED;
- }
- public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
- {
- if ((eventid != g_orig_event_janus7))
- return FMRES_IGNORED;
- if (!(1 <= invoker <= get_maxplayers()))
- return FMRES_IGNORED;
- playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2);
- return FMRES_SUPERCEDE;
- }
- public fw_janus7_PrimaryAttack_Post(Weapon) {
- new Player = get_pdata_cbase(Weapon, 41, 4);
- new szClip, szAmmo;
- get_user_weapon(Player, szClip, szAmmo);
- if(Player > 0 && Player < 33)
- {
- if(g_has_janus7[Player])
- {
- if(szClip > 0 && !g_sound[Player]) {
- emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
- if(g_mode[Player])g_sound[Player] = true;
- }
- }
- if(g_has_janus7[Player])
- {
- new Float:push[3];
- pev(Player,pev_punchangle,push);
- xs_vec_sub(push,cl_pushangle[Player],push);
- xs_vec_mul_scalar(push,0.6,push);
- xs_vec_add(push,cl_pushangle[Player],push);
- set_pev(Player,pev_punchangle,push);
- if (!g_clip_ammo[Player])
- return;
- set_pdata_float(Player, 83, g_mode[Player]?0.05:0.1);
- if(g_mode[Player]) UTIL_PlayWeaponAnimation(Player, random_num(9,10));
- else UTIL_PlayWeaponAnimation(Player, g_shots[Player]>=SHOTS_NEED?5:random_num(3,4));
- if( !g_mode[Player])make_blood_and_bulletholes(Player);
- new Float:origin1[3], targ, body;
- if( g_target[Player] ) {
- pev(g_target[Player], pev_origin, origin1);
- }
- else fm_get_aim_origin(Player, origin1);
- get_user_aiming(Player, targ, body);
- if( !g_mode[Player]) set_bit(g_bitsMuzzleFlash, Player);
- if(g_mode[Player]) {
- message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
- write_byte (TE_BEAMENTPOINT);
- write_short(Player | 0x1000);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short( g_sprite );
- write_byte( 1 ); // framestart
- write_byte( 100 ); // framerate
- write_byte( 1 ); // life
- write_byte( 15 ); // width
- write_byte( 20 ); // noise
- write_byte( 255 ); // r, g, b
- write_byte( 165 ); // r, g, b
- write_byte( 0 ); // r, g, b
- write_byte( 250 ); // brightness
- write_byte( 255 ); // speed
- message_end();
- if( targ && is_user_alive(targ) && ze_is_user_zombie(targ) && !g_target[Player]) {
- remove_task(targ+324);
- pev(targ, pev_origin, origin1);
- ExecuteHam(Ham_TakeDamage, targ, Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
- fm_set_user_rendering(targ, kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
- set_task(0.2, "delete_effect", targ+324);
- g_target[Player] = targ;
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_EXPLOSION);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short(g_sprite1);
- write_byte(10);
- write_byte(10);
- write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- else if( g_target[Player] && is_user_alive(g_target[Player]) && ze_is_user_zombie(g_target[Player]) ) {
- remove_task(g_target[Player]+324);
- ExecuteHam(Ham_TakeDamage, g_target[Player], Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
- pev(g_target[Player], pev_origin, origin1);
- fm_set_user_rendering(g_target[Player], kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
- set_task(0.2, "delete_effect", g_target[Player]+324);
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_EXPLOSION);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short(g_sprite1);
- write_byte(10);
- write_byte(10);
- write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- }
- }
- }
- }
- public delete_effect(id) {
- id-=324;
- fm_set_user_rendering(id);
- }
- public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
- {
- if (victim != attacker && is_user_connected(attacker))
- {
- if(get_user_weapon(attacker) == wId)
- {
- if(g_has_janus7[attacker]) {
- if( g_mode[attacker] ) return;
- g_shots[attacker] ++;
- SetHamParamFloat(4, JANUS7_DAMAGE*(g_mode[attacker]?2.0:1.0));
- }
- }
- }
- }
- public CPlayer__AddToFullPack_post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
- {
- if (iEnt != g_iEntity)
- return;
- if (get_bit(g_bitsMuzzleFlash, iHost))
- {
- set_es(esState, ES_Frame, float(random_num(0, 2)));
- set_es(esState, ES_RenderMode, kRenderTransAdd);
- set_es(esState, ES_RenderAmt, 250.0);
- reset_bit(g_bitsMuzzleFlash, iHost);
- }
- set_es(esState, ES_Skin, iHost);
- set_es(esState, ES_Body, 1);
- set_es(esState, ES_AimEnt, iHost);
- set_es(esState, ES_MoveType, MOVETYPE_FOLLOW);
- }
- stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
- {
- set_pev(Player, pev_weaponanim, Sequence);
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
- write_byte(Sequence);
- write_byte(0);
- message_end();
- }
- stock Make_BulletSmoke(id, TrResult)
- {
- static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG;
- get_weapon_attachment(id, vecSrc);
- global_get(glb_v_forward, vecEnd);
- xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd);
- xs_vec_add(vecSrc, vecEnd, vecEnd);
- get_tr2(TrResult, TR_vecEndPos, vecSrc);
- get_tr2(TrResult, TR_vecPlaneNormal, vecEnd);
- xs_vec_mul_scalar(vecEnd, 2.5, vecEnd);
- xs_vec_add(vecSrc, vecEnd, vecEnd);
- TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
- TE_FLAG |= TE_EXPLFLAG_NOSOUND
- TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
- engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0);
- write_byte(TE_EXPLOSION);
- engfunc(EngFunc_WriteCoord, vecEnd[0]);
- engfunc(EngFunc_WriteCoord, vecEnd[1]);
- engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0);
- write_short(g_SmokePuff_SprId);
- write_byte(3);
- write_byte(70);
- write_byte(TE_EXPLFLAG_NODLIGHTS | TE_FLAG | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- stock Sprite(id, type)
- {
- message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id);
- write_string(type?"weapon_janus7":"weapon_m249");
- write_byte(3);
- write_byte(200);
- write_byte(-1);
- write_byte(-1);
- write_byte(0);
- write_byte(4);
- write_byte(20);
- write_byte(0);
- message_end();
- }
- stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
- {
- new Float:vfEnd[3]
- fm_get_aim_origin(id, vfEnd);
- new Float:fOrigin[3], Float:fAngle[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, fAngle)
- xs_vec_add(fOrigin, fAngle, fOrigin)
- new Float:fAttack[3]
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- new Float:fRate
- fRate = fDis / vector_length(fAttack)
- xs_vec_mul_scalar(fAttack, fRate, fAttack)
- xs_vec_add(fOrigin, fAttack, output)
- }
- stock make_blood_and_bulletholes(id)
- {
- new aimOrigin[3], target, body;
- get_user_origin(id, aimOrigin, 3);
- get_user_aiming(id, target, body);
- if(target > 0 && target <= get_maxplayers() && ze_is_user_zombie(target))
- {
- new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3];
- pev(id, pev_origin, fStart);
- velocity_by_aim(id, 64, fVel);
- 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];
- new res;
- engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res);
- get_tr2(res, TR_vecEndPos, fRes);
- 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( m_iBlood [ 1 ]);
- write_short( m_iBlood [ 0 ] );
- write_byte(70);
- write_byte(random_num(1,2));
- message_end();
- }
- else if(!is_user_connected(target))
- {
- for(new i = 0; i <= 1; i ++) {
- if(target)
- {
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_DECAL);
- write_coord(aimOrigin[0]);
- write_coord(aimOrigin[1]);
- write_coord(aimOrigin[2]);
- write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- write_short(target);
- message_end();
- }
- else
- {
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_WORLDDECAL);
- write_coord(aimOrigin[0]);
- write_coord(aimOrigin[1]);
- write_coord(aimOrigin[2]);
- write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- message_end();
- }
- 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(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- message_end();
- }
- Make_BulletSmoke(id, 0);
- }
- }
- public janus7__ItemPostFrame(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- new Float:flNextAttack = get_pdata_float(id, 83, 5);
- new iBpAmmo = cs_get_user_bpammo(id, wId);
- new iClip = get_pdata_int(weapon_entity, 51, 4);
- new fInReload = get_pdata_int(weapon_entity, 54, 4);
- if( fInReload && flNextAttack <= 0.0 )
- {
- new j = min(JANUS7_CLIPAMMO- iClip, iBpAmmo);
- set_pdata_int(weapon_entity, 51, iClip + j, 4);
- cs_set_user_bpammo(id, wId, iBpAmmo-j);
- set_pdata_int(weapon_entity, 54, 0, 4);
- fInReload = 0;
- }
- new Float:origin[3];
- pev(g_target[id], pev_origin, origin);
- if( g_shots[id] >= SHOTS_NEED && flNextAttack <= 0.0 && !g_mode[id] ) {
- UTIL_PlayWeaponAnimation(id, 12);
- if( get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0 && iClip > 0) {
- UTIL_PlayWeaponAnimation(id, 6);
- set_pdata_float( id, 83, 2.0);
- g_mode[id] = 1;
- g_shots[id] = 0;
- set_task( 20.0, "remove_mode", id+1231 );
- }
- }
- else if (g_mode[id] && flNextAttack <= 0.0 ) {
- if( !(get_user_button(id) & IN_ATTACK) ) {
- g_target[id] = 0;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- g_sound[id] = 0;
- }
- if( !is_user_alive(g_target[id]) || !ze_is_user_zombie(g_target[id]) || !can_see_fm(id,g_target[id]) || entity_range(id, g_target[id]) > 400.0 || !is_in_viewcone(id, origin))
- g_target[id] = 0;
- UTIL_PlayWeaponAnimation(id, 7);
- }
- return HAM_IGNORED;
- }
- public remove_mode(id) {
- id-=1231;
- if(!g_mode[id]) return;
- g_mode[id] = false;
- g_shots[id] = false;
- g_sound[id] = false;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- UTIL_PlayWeaponAnimation(id, 11);
- set_pdata_float(id, 83, 2.0);
- }
- public janus7__Reload(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- if(g_mode[id])
- return HAM_SUPERCEDE;
- g_janus7_TmpClip[id] = -1;
- new iBpAmmo = cs_get_user_bpammo(id, wId);
- new iClip = get_pdata_int(weapon_entity, 51, 4);
- if (iBpAmmo <= 0)
- return HAM_SUPERCEDE;
- if (iClip >= JANUS7_CLIPAMMO)
- return HAM_SUPERCEDE;
- g_janus7_TmpClip[id] = iClip;
- return HAM_IGNORED;
- }
- public janus7__Reload_Post(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- if (g_janus7_TmpClip[id] == -1)
- return HAM_IGNORED;
- if(g_mode[id])
- return HAM_SUPERCEDE;
- set_pdata_int(weapon_entity, 51, g_janus7_TmpClip[id], 4);
- set_pdata_float(weapon_entity, 48, RELOAD_TIME, 4);
- set_pdata_float(id, 83, RELOAD_TIME, 5);
- set_pdata_int(weapon_entity, 54, 1, 4);
- if( g_mode[id]) g_mode[id] = 0;
- UTIL_PlayWeaponAnimation(id, g_shots[id]>50?13:1);
- return HAM_IGNORED;
- }
- stock drop_weapons(id, dropwhat)
- {
- static weapons[32], num, i, weaponid;
- num = 0;
- get_user_weapons(id, weapons, num);
- for (i = 0; i < num; i++)
- {
- weaponid = weapons[i];
- const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|
- (1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|
- (1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
- if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
- {
- static wname[32];
- get_weaponname(weaponid, wname, sizeof wname - 1);
- engclient_cmd(id, "drop", wname);
- }
- }
- }
- public bool:can_see_fm(entindex1, entindex2)
- {
- if (!entindex1 || !entindex2)
- return false;
- if (pev_valid(entindex1) && pev_valid(entindex1))
- {
- new flags = pev(entindex1, pev_flags);
- if (flags & EF_NODRAW || flags & FL_NOTARGET)
- {
- return false;
- }
- new Float:lookerOrig[3];
- new Float:targetBaseOrig[3];
- new Float:targetOrig[3];
- new Float:temp[3];
- pev(entindex1, pev_origin, lookerOrig);
- pev(entindex1, pev_view_ofs, temp);
- lookerOrig[0] += temp[0];
- lookerOrig[1] += temp[1];
- lookerOrig[2] += temp[2];
- pev(entindex2, pev_origin, targetBaseOrig);
- pev(entindex2, pev_view_ofs, temp);
- targetOrig[0] = targetBaseOrig [0] + temp[0];
- targetOrig[1] = targetBaseOrig [1] + temp[1];
- targetOrig[2] = targetBaseOrig [2] + temp[2];
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);// checks the had of seen player
- if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
- {
- return false;
- }
- else
- {
- new Float:flFraction;
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- else
- {
- targetOrig[0] = targetBaseOrig [0];
- targetOrig[1] = targetBaseOrig [1];
- targetOrig[2] = targetBaseOrig [2];
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); // checks the body of seen player
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- else
- {
- targetOrig[0] = targetBaseOrig [0];
- targetOrig[1] = targetBaseOrig [1];
- targetOrig[2] = targetBaseOrig [2] - 17.0;
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); // checks the legs of seen player
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- }
- }
- }
- }
- return false;
- }
edit janus
edit janus
can anyone remove the knockback from the 2nd attack of janus ( the electric attack)
LOL
The damage type i think which cause the knockback:
- ExecuteHam(Ham_TakeDamage, targ, Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
- #define DMG_GENERIC 0 // Generic damage was done
- #define DMG_CRUSH (1<<0) // Crushed by falling or moving object
- #define DMG_BULLET (1<<1) // Shot
- #define DMG_SLASH (1<<2) // Cut, clawed, stabbed
- #define DMG_BURN (1<<3) // Heat burned
- #define DMG_FREEZE (1<<4) // Frozen
- #define DMG_FALL (1<<5) // Fell too far
- #define DMG_BLAST (1<<6) // Explosive blast damage
- #define DMG_CLUB (1<<7) // Crowbar, punch, headbutt
- #define DMG_SHOCK (1<<8) // Electric shock
- #define DMG_SONIC (1<<9) // Sound pulse shockwave
- #define DMG_ENERGYBEAM (1<<10) // Laser or other high energy beam
- #define DMG_NEVERGIB (1<<12) // With this bit OR'd in, no damage type will be able to gib victims upon death
- #define DMG_ALWAYSGIB (1<<13) // With this bit OR'd in, any damage type can be made to gib victims upon death.
- #define DMG_DROWN (1<<14) // Drowning
- #define DMG_PARALYZE (1<<15) // Slows affected creature down
- #define DMG_NERVEGAS (1<<16) // Nerve toxins, very bad
- #define DMG_POISON (1<<17) // Blood poisioning
- #define DMG_RADIATION (1<<18) // Radiation exposure
- #define DMG_DROWNRECOVER (1<<19) // Drowning recovery
- #define DMG_ACID (1<<20) // Toxic chemicals or acid burns
- #define DMG_SLOWBURN (1<<21) // In an oven
- #define DMG_SLOWFREEZE (1<<22) // In a subzero freezer
- #define DMG_MORTAR (1<<23) // Hit by air raid (done to distinguish grenade from mortar)
- #define DMG_GRENADE (1<<24) // Counter-Strike only - Hit by HE grenade
- #define DMG_TIMEBASED (~(0x3fff)) // Mask for time-based damage
He who fails to plan is planning to fail
um can u pls fix the errors?of the code
- #include <zombie_escape>
- #include <fakemeta_util>
- #include <xs>
- #include <cstrike>
- #define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
- #define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
- #define reset_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
- #define EV_INT_WEAPONKEY EV_INT_impulse
- #define WEAPONKEY 7
- #define JANUS7_CLIPAMMO 200
- #define JANUS7_BPAMMO 200
- #define JANUS7_DAMAGE 29
- #define SHOTS_NEED 8
- #define RELOAD_TIME 4.7
- #define wId CSW_M249
- #define JANUS7_VMODEL "models/zombie_escape/v_janus7.mdl"
- #define JANUS7_PMODEL "models/zombie_escape/p_janus7.mdl"
- #define JANUS7_WMODEL "models/zombie_escape/w_janus7.mdl"
- new g_SmokePuff_SprId
- new id
- new const Fire_snd[][] = {"weapons/janus7-1.wav", "weapons/janus7-2.wav"};
- new const went[] ="weapon_m249";
- new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };
- new g_iItemID,g_mode[33], g_shots[33], g_sprite, g_sprite1, g_target[33],
- g_sound[33],g_has_janus7[33],g_orig_event_janus7, g_clip_ammo[33],
- Float:cl_pushangle[33][3], m_iBlood[2], g_janus7_TmpClip[33], g_bitsMuzzleFlash, g_iEntity;
- public plugin_init()
- {
- register_plugin("Janus-7", "1.0", "kademik");
- register_clcmd("weapon_janus7", "Hook_Select");
- register_event("CurWeapon", "CurrentWeapon", "be","1=1");
- g_iItemID = ze_register_item("Janus 7", 50, 0)
- RegisterHam(Ham_Item_AddToPlayer, went, "fw_janus7_AddToPlayer");
- RegisterHam(Ham_Item_Deploy, went, "fw_Item_Deploy_Post", 1);
- RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janus7_PrimaryAttack");
- RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janus7_PrimaryAttack_Post", 1);
- RegisterHam(Ham_Item_PostFrame, went, "janus7__ItemPostFrame");
- RegisterHam(Ham_Weapon_Reload, went, "janus7__Reload");
- RegisterHam(Ham_Weapon_Reload, went, "janus7__Reload_Post", 1);
- RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
- register_forward(FM_AddToFullPack, "CPlayer__AddToFullPack_post", 1);
- register_forward(FM_CheckVisibility, "CEntity__CheckVisibility");
- register_forward(FM_SetModel, "fw_SetModel");
- register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
- register_forward(FM_PlaybackEvent, "fwPlaybackEvent");
- }
- public plugin_precache()
- {
- precache_model(JANUS7_VMODEL);
- precache_model(JANUS7_PMODEL);
- precache_model(JANUS7_WMODEL);
- g_sprite = precache_model("sprites/ls/lgtning.spr");
- g_sprite1 = precache_model("sprites/ls/colflare.spr");
- precache_generic( "sprites/weapon_janus7.txt" );
- precache_generic( "sprites/ls/640hud7.spr" );
- precache_generic( "sprites/ls/640hud12.spr" );
- precache_generic( "sprites/ls/640hud99.spr" );
- precache_sound(Fire_snd[0]);
- precache_sound(Fire_snd[1]);
- precache_sound("weapons/janus7_change1.wav");
- precache_sound("weapons/janus7_change2.wav");
- m_iBlood[0] = precache_model("sprites/blood.spr");
- m_iBlood[1] = precache_model("sprites/bloodspray.spr");
- precache_model("sprites/ls/muzzleflash_janus7.spr");
- g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr");
- g_iEntity = create_entity("info_target");
- entity_set_model(g_iEntity, "sprites/ls/muzzleflash_janus7.spr");
- entity_set_float(g_iEntity, EV_FL_scale, 0.1);
- entity_set_int(g_iEntity, EV_INT_rendermode, kRenderTransTexture);
- entity_set_float(g_iEntity, EV_FL_renderamt, 0.0);
- register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1);
- }
- public fwPrecacheEvent_Post(type, const name[])
- {
- if (equal("events/m249.sc", name))
- {
- g_orig_event_janus7 = get_orig_retval();
- return FMRES_HANDLED;
- }
- return FMRES_IGNORED;
- }
- public Hook_Select(id)
- {
- engclient_cmd(id, went);
- return PLUGIN_HANDLED;
- }
- public client_connect(id)
- {
- g_has_janus7[id] = false;
- }
- public client_disconnected(id)
- {
- g_has_janus7[id] = false;
- }
- public ze_user_infected(iVictim, iInfector)
- {
- if (ze_is_user_zombie(id))
- {
- g_has_janus7[id] = false;
- g_sound[id] = false;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- g_mode[id] = false;
- g_shots[id] = false;
- }
- }
- public fw_SetModel(entity, model[])
- {
- if(!is_valid_ent(entity))
- return FMRES_IGNORED;
- static szClassName[33];
- entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
- if(!equal(szClassName, "weaponbox"))
- return FMRES_IGNORED;
- static iOwner;
- iOwner = entity_get_edict(entity, EV_ENT_owner);
- if(equal(model, "models/w_m249.mdl"))
- {
- static iStoredSVDID;
- iStoredSVDID = find_ent_by_owner(-1, went, entity);
- if(!is_valid_ent(iStoredSVDID))
- return FMRES_IGNORED;
- if(g_has_janus7[iOwner])
- {
- entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, WEAPONKEY);
- g_has_janus7[iOwner] = false;
- entity_set_model(entity, JANUS7_WMODEL);
- g_mode[iOwner] = false;
- g_shots[iOwner] = false;
- remove_task(iOwner+1231);
- return FMRES_SUPERCEDE;
- }
- }
- return FMRES_IGNORED;
- }
- public CEntity__CheckVisibility(iEntity, pSet)
- {
- if (iEntity != g_iEntity)
- return FMRES_IGNORED;
- forward_return(FMV_CELL, 1);
- return FMRES_SUPERCEDE;
- }
- public give_janus7(id)
- {
- drop_weapons(id, 1);
- new iWep2 = fm_give_item(id,went);
- if( iWep2 > 0 )
- {
- cs_set_weapon_ammo(iWep2, JANUS7_CLIPAMMO);
- cs_set_user_bpammo (id, wId, JANUS7_BPAMMO);
- }
- g_has_janus7[id] = true;
- g_shots[id] = 0;
- g_mode[id] = false;
- Sprite(id, 1);
- }
- public ze_select_item_pre(id, itemid)
- {
- // This not our item?
- if (itemid != g_iItemID)
- return ZE_ITEM_AVAILABLE
- // Available for Humans only, So don't show it for zombies
- if (ze_is_user_zombie(id))
- return ZE_ITEM_DONT_SHOW
- // Finally return that it's available
- return ZE_ITEM_AVAILABLE
- }
- public ze_select_item_post(id, itemid)
- {
- // This is not our item, Block it here and don't execute the blew code
- if (itemid != g_iItemID)
- return
- give_janus7(id);
- }
- public fw_janus7_AddToPlayer(janus7, id)
- {
- if(!is_valid_ent(janus7) || !is_user_connected(id))
- return HAM_IGNORED;
- if(entity_get_int(janus7, EV_INT_WEAPONKEY) == WEAPONKEY)
- {
- g_has_janus7[id] = true;
- g_mode[id] = false;
- g_shots[id] = 0;
- g_sound[id] = 0;
- entity_set_int(janus7, EV_INT_WEAPONKEY, 0);
- Sprite(id, 1);
- return HAM_HANDLED;
- }
- else Sprite(id, 0);
- return HAM_IGNORED;
- }
- public fw_Item_Deploy_Post(weapon_ent)
- {
- static owner;
- owner = pev(weapon_ent, pev_owner);
- static weaponid;
- weaponid = cs_get_weapon_id(weapon_ent);
- replace_weapon_models(owner, weaponid);
- }
- public CurrentWeapon(id) replace_weapon_models(id, read_data(2));
- replace_weapon_models(id, weaponid)
- {
- static g_wpn[33];
- switch (weaponid)
- {
- case wId:
- {
- if(is_user_alive(id) && is_user_connected(id) && g_has_janus7[id])
- {
- if (ze_is_user_zombie(id))
- return;
- if(g_wpn[id] != CSW_M249){
- if( g_mode[id]) UTIL_PlayWeaponAnimation(id, 8);
- else UTIL_PlayWeaponAnimation(id, g_shots[id]>50?14:2);
- }
- set_pev(id, pev_viewmodel2, JANUS7_VMODEL);
- set_pev(id, pev_weaponmodel2, JANUS7_PMODEL);
- }
- }
- }
- if(is_user_alive(id))g_wpn[id] = get_user_weapon(id);
- }
- public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
- {
- if(!is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_janus7[Player])
- return FMRES_IGNORED;
- set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001);
- return FMRES_HANDLED;
- }
- public fw_janus7_PrimaryAttack(Weapon)
- {
- new Player = get_pdata_cbase(Weapon, 41, 4);
- if (!g_has_janus7[Player])
- return HAM_IGNORED;
- pev(Player,pev_punchangle,cl_pushangle[Player]);
- g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon);
- if( g_mode[Player] ) return HAM_SUPERCEDE;
- return HAM_IGNORED;
- }
- public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
- {
- if ((eventid != g_orig_event_janus7))
- return FMRES_IGNORED;
- if (!(1 <= invoker <= get_maxplayers()))
- return FMRES_IGNORED;
- playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2);
- return FMRES_SUPERCEDE;
- }
- public fw_janus7_PrimaryAttack_Post(Weapon) {
- new Player = get_pdata_cbase(Weapon, 41, 4);
- new szClip, szAmmo;
- get_user_weapon(Player, szClip, szAmmo);
- if(Player > 0 && Player < 33)
- {
- if(g_has_janus7[Player])
- {
- if(szClip > 0 && !g_sound[Player]) {
- emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
- if(g_mode[Player])g_sound[Player] = true;
- }
- }
- if(g_has_janus7[Player])
- {
- new Float:push[3];
- pev(Player,pev_punchangle,push);
- xs_vec_sub(push,cl_pushangle[Player],push);
- xs_vec_mul_scalar(push,0.6,push);
- xs_vec_add(push,cl_pushangle[Player],push);
- set_pev(Player,pev_punchangle,push);
- if (!g_clip_ammo[Player])
- return;
- set_pdata_float(Player, 83, g_mode[Player]?0.05:0.1);
- if(g_mode[Player]) UTIL_PlayWeaponAnimation(Player, random_num(9,10));
- else UTIL_PlayWeaponAnimation(Player, g_shots[Player]>=SHOTS_NEED?5:random_num(3,4));
- if( !g_mode[Player])make_blood_and_bulletholes(Player);
- new Float:origin1[3], targ, body;
- if( g_target[Player] ) {
- pev(g_target[Player], pev_origin, origin1);
- }
- else fm_get_aim_origin(Player, origin1);
- get_user_aiming(Player, targ, body);
- if( !g_mode[Player]) set_bit(g_bitsMuzzleFlash, Player);
- if(g_mode[Player]) {
- message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
- write_byte (TE_BEAMENTPOINT);
- write_short(Player | 0x1000);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short( g_sprite );
- write_byte( 1 ); // framestart
- write_byte( 100 ); // framerate
- write_byte( 1 ); // life
- write_byte( 15 ); // width
- write_byte( 20 ); // noise
- write_byte( 255 ); // r, g, b
- write_byte( 165 ); // r, g, b
- write_byte( 0 ); // r, g, b
- write_byte( 250 ); // brightness
- write_byte( 255 ); // speed
- message_end();
- if( targ && is_user_alive(targ) && ze_is_user_zombie(targ) && !g_target[Player]) {
- remove_task(targ+324);
- pev(targ, pev_origin, origin1);
- fm_set_user_rendering(targ, kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
- set_task(0.2, "delete_effect", targ+324);
- g_target[Player] = targ;
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_EXPLOSION);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short(g_sprite1);
- write_byte(10);
- write_byte(10);
- write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- else if( g_target[Player] && is_user_alive(g_target[Player]) && ze_is_user_zombie(g_target[Player]) ) {
- remove_task(g_target[Player]+324);
- ExecuteHam(Ham_TakeDamage, g_target[Player], Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
- pev(g_target[Player], pev_origin, origin1);
- fm_set_user_rendering(g_target[Player], kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
- set_task(0.2, "delete_effect", g_target[Player]+324);
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_EXPLOSION);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short(g_sprite1);
- write_byte(10);
- write_byte(10);
- write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- }
- }
- }
- }
- public delete_effect(id) {
- id-=324;
- fm_set_user_rendering(id);
- }
- public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
- {
- if (victim != attacker && is_user_connected(attacker))
- {
- if(get_user_weapon(attacker) == wId)
- {
- if(g_has_janus7[attacker]) {
- if( g_mode[attacker] ) return;
- g_shots[attacker] ++;
- SetHamParamFloat(4, JANUS7_DAMAGE*(g_mode[attacker]?2.0:1.0));
- }
- }
- }
- }
- public CPlayer__AddToFullPack_post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
- {
- if (iEnt != g_iEntity)
- return;
- if (get_bit(g_bitsMuzzleFlash, iHost))
- {
- set_es(esState, ES_Frame, float(random_num(0, 2)));
- set_es(esState, ES_RenderMode, kRenderTransAdd);
- set_es(esState, ES_RenderAmt, 250.0);
- reset_bit(g_bitsMuzzleFlash, iHost);
- }
- set_es(esState, ES_Skin, iHost);
- set_es(esState, ES_Body, 1);
- set_es(esState, ES_AimEnt, iHost);
- set_es(esState, ES_MoveType, MOVETYPE_FOLLOW);
- }
- stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
- {
- set_pev(Player, pev_weaponanim, Sequence);
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
- write_byte(Sequence);
- write_byte(0);
- message_end();
- }
- stock Make_BulletSmoke(id, TrResult)
- {
- static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG;
- get_weapon_attachment(id, vecSrc);
- global_get(glb_v_forward, vecEnd);
- xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd);
- xs_vec_add(vecSrc, vecEnd, vecEnd);
- get_tr2(TrResult, TR_vecEndPos, vecSrc);
- get_tr2(TrResult, TR_vecPlaneNormal, vecEnd);
- xs_vec_mul_scalar(vecEnd, 2.5, vecEnd);
- xs_vec_add(vecSrc, vecEnd, vecEnd);
- TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
- TE_FLAG |= TE_EXPLFLAG_NOSOUND
- TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
- engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0);
- write_byte(TE_EXPLOSION);
- engfunc(EngFunc_WriteCoord, vecEnd[0]);
- engfunc(EngFunc_WriteCoord, vecEnd[1]);
- engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0);
- write_short(g_SmokePuff_SprId);
- write_byte(3);
- write_byte(70);
- write_byte(TE_EXPLFLAG_NODLIGHTS | TE_FLAG | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- stock Sprite(id, type)
- {
- message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id);
- write_string(type?"weapon_janus7":"weapon_m249");
- write_byte(3);
- write_byte(200);
- write_byte(-1);
- write_byte(-1);
- write_byte(0);
- write_byte(4);
- write_byte(20);
- write_byte(0);
- message_end();
- }
- stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
- {
- new Float:vfEnd[3]
- fm_get_aim_origin(id, vfEnd);
- new Float:fOrigin[3], Float:fAngle[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, fAngle)
- xs_vec_add(fOrigin, fAngle, fOrigin)
- new Float:fAttack[3]
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- new Float:fRate
- fRate = fDis / vector_length(fAttack)
- xs_vec_mul_scalar(fAttack, fRate, fAttack)
- xs_vec_add(fOrigin, fAttack, output)
- }
- stock make_blood_and_bulletholes(id)
- {
- new aimOrigin[3], target, body;
- get_user_origin(id, aimOrigin, 3);
- get_user_aiming(id, target, body);
- if(target > 0 && target <= get_maxplayers() && ze_is_user_zombie(target))
- {
- new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3];
- pev(id, pev_origin, fStart);
- velocity_by_aim(id, 64, fVel);
- 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];
- new res;
- engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res);
- get_tr2(res, TR_vecEndPos, fRes);
- 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( m_iBlood [ 1 ]);
- write_short( m_iBlood [ 0 ] );
- write_byte(70);
- write_byte(random_num(1,2));
- message_end();
- }
- else if(!is_user_connected(target))
- {
- for(new i = 0; i <= 1; i ++) {
- if(target)
- {
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_DECAL);
- write_coord(aimOrigin[0]);
- write_coord(aimOrigin[1]);
- write_coord(aimOrigin[2]);
- write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- write_short(target);
- message_end();
- }
- else
- {
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_WORLDDECAL);
- write_coord(aimOrigin[0]);
- write_coord(aimOrigin[1]);
- write_coord(aimOrigin[2]);
- write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- message_end();
- }
- 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(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- message_end();
- }
- Make_BulletSmoke(id, 0);
- }
- }
- public janus7__ItemPostFrame(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- new Float:flNextAttack = get_pdata_float(id, 83, 5);
- new iBpAmmo = cs_get_user_bpammo(id, wId);
- new iClip = get_pdata_int(weapon_entity, 51, 4);
- new fInReload = get_pdata_int(weapon_entity, 54, 4);
- if( fInReload && flNextAttack <= 0.0 )
- {
- new j = min(JANUS7_CLIPAMMO- iClip, iBpAmmo);
- set_pdata_int(weapon_entity, 51, iClip + j, 4);
- cs_set_user_bpammo(id, wId, iBpAmmo-j);
- set_pdata_int(weapon_entity, 54, 0, 4);
- fInReload = 0;
- }
- new Float:origin[3];
- pev(g_target[id], pev_origin, origin);
- if( g_shots[id] >= SHOTS_NEED && flNextAttack <= 0.0 && !g_mode[id] ) {
- UTIL_PlayWeaponAnimation(id, 12);
- if( get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0 && iClip > 0) {
- UTIL_PlayWeaponAnimation(id, 6);
- set_pdata_float( id, 83, 2.0);
- g_mode[id] = 1;
- g_shots[id] = 0;
- set_task( 20.0, "remove_mode", id+1231 );
- }
- }
- else if (g_mode[id] && flNextAttack <= 0.0 ) {
- if( !(get_user_button(id) & IN_ATTACK) ) {
- g_target[id] = 0;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- g_sound[id] = 0;
- }
- if( !is_user_alive(g_target[id]) || !ze_is_user_zombie(g_target[id]) || !can_see_fm(id,g_target[id]) || entity_range(id, g_target[id]) > 400.0 || !is_in_viewcone(id, origin))
- g_target[id] = 0;
- UTIL_PlayWeaponAnimation(id, 7);
- }
- return HAM_IGNORED;
- }
- public remove_mode(id) {
- id-=1231;
- if(!g_mode[id]) return;
- g_mode[id] = false;
- g_shots[id] = false;
- g_sound[id] = false;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- UTIL_PlayWeaponAnimation(id, 11);
- set_pdata_float(id, 83, 2.0);
- }
- public janus7__Reload(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- if(g_mode[id])
- return HAM_SUPERCEDE;
- g_janus7_TmpClip[id] = -1;
- new iBpAmmo = cs_get_user_bpammo(id, wId);
- new iClip = get_pdata_int(weapon_entity, 51, 4);
- if (iBpAmmo <= 0)
- return HAM_SUPERCEDE;
- if (iClip >= JANUS7_CLIPAMMO)
- return HAM_SUPERCEDE;
- g_janus7_TmpClip[id] = iClip;
- return HAM_IGNORED;
- }
- public janus7__Reload_Post(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- if (g_janus7_TmpClip[id] == -1)
- return HAM_IGNORED;
- if(g_mode[id])
- return HAM_SUPERCEDE;
- set_pdata_int(weapon_entity, 51, g_janus7_TmpClip[id], 4);
- set_pdata_float(weapon_entity, 48, RELOAD_TIME, 4);
- set_pdata_float(id, 83, RELOAD_TIME, 5);
- set_pdata_int(weapon_entity, 54, 1, 4);
- if( g_mode[id]) g_mode[id] = 0;
- UTIL_PlayWeaponAnimation(id, g_shots[id]>50?13:1);
- return HAM_IGNORED;
- }
- stock drop_weapons(id, dropwhat)
- {
- static weapons[32], num, i, weaponid;
- num = 0;
- get_user_weapons(id, weapons, num);
- for (i = 0; i < num; i++)
- {
- weaponid = weapons[i];
- const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|
- (1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|
- (1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
- if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
- {
- static wname[32];
- get_weaponname(weaponid, wname, sizeof wname - 1);
- engclient_cmd(id, "drop", wname);
- }
- }
- }
- public bool:can_see_fm(entindex1, entindex2)
- {
- if (!entindex1 || !entindex2)
- return false;
- if (pev_valid(entindex1) && pev_valid(entindex1))
- {
- new flags = pev(entindex1, pev_flags);
- if (flags & EF_NODRAW || flags & FL_NOTARGET)
- {
- return false;
- }
- new Float:lookerOrig[3];
- new Float:targetBaseOrig[3];
- new Float:targetOrig[3];
- new Float:temp[3];
- pev(entindex1, pev_origin, lookerOrig);
- pev(entindex1, pev_view_ofs, temp);
- lookerOrig[0] += temp[0];
- lookerOrig[1] += temp[1];
- lookerOrig[2] += temp[2];
- pev(entindex2, pev_origin, targetBaseOrig);
- pev(entindex2, pev_view_ofs, temp);
- targetOrig[0] = targetBaseOrig [0] + temp[0];
- targetOrig[1] = targetBaseOrig [1] + temp[1];
- targetOrig[2] = targetBaseOrig [2] + temp[2];
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);// checks the had of seen player
- if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
- {
- return false;
- }
- else
- {
- new Float:flFraction;
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- else
- {
- targetOrig[0] = targetBaseOrig [0];
- targetOrig[1] = targetBaseOrig [1];
- targetOrig[2] = targetBaseOrig [2];
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); // checks the body of seen player
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- else
- {
- targetOrig[0] = targetBaseOrig [0];
- targetOrig[1] = targetBaseOrig [1];
- targetOrig[2] = targetBaseOrig [2] - 17.0;
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); // checks the legs of seen player
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- }
- }
- }
- }
- return false;
- }
LOL
removed this line but i still get knockbacks from 2nd attack
- ExecuteHam(Ham_TakeDamage, targ, Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
LOL
I still see it in the code...
Try!
- #include <zombie_escape>
- #include <fakemeta_util>
- #include <xs>
- #include <cstrike>
- #define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
- #define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
- #define reset_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
- #define EV_INT_WEAPONKEY EV_INT_impulse
- #define WEAPONKEY 7
- #define JANUS7_CLIPAMMO 200
- #define JANUS7_BPAMMO 200
- #define JANUS7_DAMAGE 29
- #define SHOTS_NEED 8
- #define RELOAD_TIME 4.7
- #define wId CSW_M249
- #define JANUS7_VMODEL "models/zombie_escape/v_janus7.mdl"
- #define JANUS7_PMODEL "models/zombie_escape/p_janus7.mdl"
- #define JANUS7_WMODEL "models/zombie_escape/w_janus7.mdl"
- new g_SmokePuff_SprId
- new id
- new const Fire_snd[][] = {"weapons/janus7-1.wav", "weapons/janus7-2.wav"};
- new const went[] ="weapon_m249";
- new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };
- new g_iItemID,g_mode[33], g_shots[33], g_sprite, g_sprite1, g_target[33],
- g_sound[33],g_has_janus7[33],g_orig_event_janus7, g_clip_ammo[33],
- Float:cl_pushangle[33][3], m_iBlood[2], g_janus7_TmpClip[33], g_bitsMuzzleFlash, g_iEntity;
- public plugin_init()
- {
- register_plugin("Janus-7", "1.0", "kademik");
- register_clcmd("weapon_janus7", "Hook_Select");
- register_event("CurWeapon", "CurrentWeapon", "be","1=1");
- g_iItemID = ze_register_item("Janus 7", 50, 0)
- RegisterHam(Ham_Item_AddToPlayer, went, "fw_janus7_AddToPlayer");
- RegisterHam(Ham_Item_Deploy, went, "fw_Item_Deploy_Post", 1);
- RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janus7_PrimaryAttack");
- RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janus7_PrimaryAttack_Post", 1);
- RegisterHam(Ham_Item_PostFrame, went, "janus7__ItemPostFrame");
- RegisterHam(Ham_Weapon_Reload, went, "janus7__Reload");
- RegisterHam(Ham_Weapon_Reload, went, "janus7__Reload_Post", 1);
- RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
- register_forward(FM_AddToFullPack, "CPlayer__AddToFullPack_post", 1);
- register_forward(FM_CheckVisibility, "CEntity__CheckVisibility");
- register_forward(FM_SetModel, "fw_SetModel");
- register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
- register_forward(FM_PlaybackEvent, "fwPlaybackEvent");
- }
- public plugin_precache()
- {
- precache_model(JANUS7_VMODEL);
- precache_model(JANUS7_PMODEL);
- precache_model(JANUS7_WMODEL);
- g_sprite = precache_model("sprites/ls/lgtning.spr");
- g_sprite1 = precache_model("sprites/ls/colflare.spr");
- precache_generic( "sprites/weapon_janus7.txt" );
- precache_generic( "sprites/ls/640hud7.spr" );
- precache_generic( "sprites/ls/640hud12.spr" );
- precache_generic( "sprites/ls/640hud99.spr" );
- precache_sound(Fire_snd[0]);
- precache_sound(Fire_snd[1]);
- precache_sound("weapons/janus7_change1.wav");
- precache_sound("weapons/janus7_change2.wav");
- m_iBlood[0] = precache_model("sprites/blood.spr");
- m_iBlood[1] = precache_model("sprites/bloodspray.spr");
- precache_model("sprites/ls/muzzleflash_janus7.spr");
- g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr");
- g_iEntity = create_entity("info_target");
- entity_set_model(g_iEntity, "sprites/ls/muzzleflash_janus7.spr");
- entity_set_float(g_iEntity, EV_FL_scale, 0.1);
- entity_set_int(g_iEntity, EV_INT_rendermode, kRenderTransTexture);
- entity_set_float(g_iEntity, EV_FL_renderamt, 0.0);
- register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1);
- }
- public fwPrecacheEvent_Post(type, const name[])
- {
- if (equal("events/m249.sc", name))
- {
- g_orig_event_janus7 = get_orig_retval();
- return FMRES_HANDLED;
- }
- return FMRES_IGNORED;
- }
- public Hook_Select(id)
- {
- engclient_cmd(id, went);
- return PLUGIN_HANDLED;
- }
- public client_connect(id)
- {
- g_has_janus7[id] = false;
- }
- public client_disconnected(id)
- {
- g_has_janus7[id] = false;
- }
- public ze_user_infected(iVictim, iInfector)
- {
- if (ze_is_user_zombie(id))
- {
- g_has_janus7[id] = false;
- g_sound[id] = false;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- g_mode[id] = false;
- g_shots[id] = false;
- }
- }
- public fw_SetModel(entity, model[])
- {
- if(!is_valid_ent(entity))
- return FMRES_IGNORED;
- static szClassName[33];
- entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
- if(!equal(szClassName, "weaponbox"))
- return FMRES_IGNORED;
- static iOwner;
- iOwner = entity_get_edict(entity, EV_ENT_owner);
- if(equal(model, "models/w_m249.mdl"))
- {
- static iStoredSVDID;
- iStoredSVDID = find_ent_by_owner(-1, went, entity);
- if(!is_valid_ent(iStoredSVDID))
- return FMRES_IGNORED;
- if(g_has_janus7[iOwner])
- {
- entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, WEAPONKEY);
- g_has_janus7[iOwner] = false;
- entity_set_model(entity, JANUS7_WMODEL);
- g_mode[iOwner] = false;
- g_shots[iOwner] = false;
- remove_task(iOwner+1231);
- return FMRES_SUPERCEDE;
- }
- }
- return FMRES_IGNORED;
- }
- public CEntity__CheckVisibility(iEntity, pSet)
- {
- if (iEntity != g_iEntity)
- return FMRES_IGNORED;
- forward_return(FMV_CELL, 1);
- return FMRES_SUPERCEDE;
- }
- public give_janus7(id)
- {
- drop_weapons(id, 1);
- new iWep2 = fm_give_item(id,went);
- if( iWep2 > 0 )
- {
- cs_set_weapon_ammo(iWep2, JANUS7_CLIPAMMO);
- cs_set_user_bpammo (id, wId, JANUS7_BPAMMO);
- }
- g_has_janus7[id] = true;
- g_shots[id] = 0;
- g_mode[id] = false;
- Sprite(id, 1);
- }
- public ze_select_item_pre(id, itemid)
- {
- // This not our item?
- if (itemid != g_iItemID)
- return ZE_ITEM_AVAILABLE
- // Available for Humans only, So don't show it for zombies
- if (ze_is_user_zombie(id))
- return ZE_ITEM_DONT_SHOW
- // Finally return that it's available
- return ZE_ITEM_AVAILABLE
- }
- public ze_select_item_post(id, itemid)
- {
- // This is not our item, Block it here and don't execute the blew code
- if (itemid != g_iItemID)
- return
- give_janus7(id);
- }
- public fw_janus7_AddToPlayer(janus7, id)
- {
- if(!is_valid_ent(janus7) || !is_user_connected(id))
- return HAM_IGNORED;
- if(entity_get_int(janus7, EV_INT_WEAPONKEY) == WEAPONKEY)
- {
- g_has_janus7[id] = true;
- g_mode[id] = false;
- g_shots[id] = 0;
- g_sound[id] = 0;
- entity_set_int(janus7, EV_INT_WEAPONKEY, 0);
- Sprite(id, 1);
- return HAM_HANDLED;
- }
- else Sprite(id, 0);
- return HAM_IGNORED;
- }
- public fw_Item_Deploy_Post(weapon_ent)
- {
- static owner;
- owner = pev(weapon_ent, pev_owner);
- static weaponid;
- weaponid = cs_get_weapon_id(weapon_ent);
- replace_weapon_models(owner, weaponid);
- }
- public CurrentWeapon(id) replace_weapon_models(id, read_data(2));
- replace_weapon_models(id, weaponid)
- {
- static g_wpn[33];
- switch (weaponid)
- {
- case wId:
- {
- if(is_user_alive(id) && is_user_connected(id) && g_has_janus7[id])
- {
- if (ze_is_user_zombie(id))
- return;
- if(g_wpn[id] != CSW_M249){
- if( g_mode[id]) UTIL_PlayWeaponAnimation(id, 8);
- else UTIL_PlayWeaponAnimation(id, g_shots[id]>50?14:2);
- }
- set_pev(id, pev_viewmodel2, JANUS7_VMODEL);
- set_pev(id, pev_weaponmodel2, JANUS7_PMODEL);
- }
- }
- }
- if(is_user_alive(id))g_wpn[id] = get_user_weapon(id);
- }
- public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
- {
- if(!is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_janus7[Player])
- return FMRES_IGNORED;
- set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001);
- return FMRES_HANDLED;
- }
- public fw_janus7_PrimaryAttack(Weapon)
- {
- new Player = get_pdata_cbase(Weapon, 41, 4);
- if (!g_has_janus7[Player])
- return HAM_IGNORED;
- pev(Player,pev_punchangle,cl_pushangle[Player]);
- g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon);
- if( g_mode[Player] ) return HAM_SUPERCEDE;
- return HAM_IGNORED;
- }
- public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
- {
- if ((eventid != g_orig_event_janus7))
- return FMRES_IGNORED;
- if (!(1 <= invoker <= get_maxplayers()))
- return FMRES_IGNORED;
- playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2);
- return FMRES_SUPERCEDE;
- }
- public fw_janus7_PrimaryAttack_Post(Weapon) {
- new Player = get_pdata_cbase(Weapon, 41, 4);
- new szClip, szAmmo;
- get_user_weapon(Player, szClip, szAmmo);
- if(Player > 0 && Player < 33)
- {
- if(g_has_janus7[Player])
- {
- if(szClip > 0 && !g_sound[Player]) {
- emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
- if(g_mode[Player])g_sound[Player] = true;
- }
- }
- if(g_has_janus7[Player])
- {
- new Float:push[3];
- pev(Player,pev_punchangle,push);
- xs_vec_sub(push,cl_pushangle[Player],push);
- xs_vec_mul_scalar(push,0.6,push);
- xs_vec_add(push,cl_pushangle[Player],push);
- set_pev(Player,pev_punchangle,push);
- if (!g_clip_ammo[Player])
- return;
- set_pdata_float(Player, 83, g_mode[Player]?0.05:0.1);
- if(g_mode[Player]) UTIL_PlayWeaponAnimation(Player, random_num(9,10));
- else UTIL_PlayWeaponAnimation(Player, g_shots[Player]>=SHOTS_NEED?5:random_num(3,4));
- if( !g_mode[Player])make_blood_and_bulletholes(Player);
- new Float:origin1[3], targ, body;
- if( g_target[Player] ) {
- pev(g_target[Player], pev_origin, origin1);
- }
- else fm_get_aim_origin(Player, origin1);
- get_user_aiming(Player, targ, body);
- if( !g_mode[Player]) set_bit(g_bitsMuzzleFlash, Player);
- if(g_mode[Player]) {
- message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
- write_byte (TE_BEAMENTPOINT);
- write_short(Player | 0x1000);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short( g_sprite );
- write_byte( 1 ); // framestart
- write_byte( 100 ); // framerate
- write_byte( 1 ); // life
- write_byte( 15 ); // width
- write_byte( 20 ); // noise
- write_byte( 255 ); // r, g, b
- write_byte( 165 ); // r, g, b
- write_byte( 0 ); // r, g, b
- write_byte( 250 ); // brightness
- write_byte( 255 ); // speed
- message_end();
- if( targ && is_user_alive(targ) && ze_is_user_zombie(targ) && !g_target[Player]) {
- remove_task(targ+324);
- pev(targ, pev_origin, origin1);
- fm_set_user_rendering(targ, kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
- set_task(0.2, "delete_effect", targ+324);
- g_target[Player] = targ;
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_EXPLOSION);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short(g_sprite1);
- write_byte(10);
- write_byte(10);
- write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- else if( g_target[Player] && is_user_alive(g_target[Player]) && ze_is_user_zombie(g_target[Player]) ) {
- remove_task(g_target[Player]+324);
- pev(g_target[Player], pev_origin, origin1);
- fm_set_user_rendering(g_target[Player], kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
- set_task(0.2, "delete_effect", g_target[Player]+324);
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_EXPLOSION);
- write_coord(floatround(origin1[0]));
- write_coord(floatround(origin1[1]));
- write_coord(floatround(origin1[2]));
- write_short(g_sprite1);
- write_byte(10);
- write_byte(10);
- write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- }
- }
- }
- }
- public delete_effect(id) {
- id-=324;
- fm_set_user_rendering(id);
- }
- public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
- {
- if (victim != attacker && is_user_connected(attacker))
- {
- if(get_user_weapon(attacker) == wId)
- {
- if(g_has_janus7[attacker]) {
- if( g_mode[attacker] ) return;
- g_shots[attacker] ++;
- SetHamParamFloat(4, JANUS7_DAMAGE*(g_mode[attacker]?2.0:1.0));
- }
- }
- }
- }
- public CPlayer__AddToFullPack_post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
- {
- if (iEnt != g_iEntity)
- return;
- if (get_bit(g_bitsMuzzleFlash, iHost))
- {
- set_es(esState, ES_Frame, float(random_num(0, 2)));
- set_es(esState, ES_RenderMode, kRenderTransAdd);
- set_es(esState, ES_RenderAmt, 250.0);
- reset_bit(g_bitsMuzzleFlash, iHost);
- }
- set_es(esState, ES_Skin, iHost);
- set_es(esState, ES_Body, 1);
- set_es(esState, ES_AimEnt, iHost);
- set_es(esState, ES_MoveType, MOVETYPE_FOLLOW);
- }
- stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
- {
- set_pev(Player, pev_weaponanim, Sequence);
- message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
- write_byte(Sequence);
- write_byte(0);
- message_end();
- }
- stock Make_BulletSmoke(id, TrResult)
- {
- static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG;
- get_weapon_attachment(id, vecSrc);
- global_get(glb_v_forward, vecEnd);
- xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd);
- xs_vec_add(vecSrc, vecEnd, vecEnd);
- get_tr2(TrResult, TR_vecEndPos, vecSrc);
- get_tr2(TrResult, TR_vecPlaneNormal, vecEnd);
- xs_vec_mul_scalar(vecEnd, 2.5, vecEnd);
- xs_vec_add(vecSrc, vecEnd, vecEnd);
- TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
- TE_FLAG |= TE_EXPLFLAG_NOSOUND
- TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
- engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0);
- write_byte(TE_EXPLOSION);
- engfunc(EngFunc_WriteCoord, vecEnd[0]);
- engfunc(EngFunc_WriteCoord, vecEnd[1]);
- engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0);
- write_short(g_SmokePuff_SprId);
- write_byte(3);
- write_byte(70);
- write_byte(TE_EXPLFLAG_NODLIGHTS | TE_FLAG | TE_EXPLFLAG_NODLIGHTS);
- message_end();
- }
- stock Sprite(id, type)
- {
- message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id);
- write_string(type?"weapon_janus7":"weapon_m249");
- write_byte(3);
- write_byte(200);
- write_byte(-1);
- write_byte(-1);
- write_byte(0);
- write_byte(4);
- write_byte(20);
- write_byte(0);
- message_end();
- }
- stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
- {
- new Float:vfEnd[3]
- fm_get_aim_origin(id, vfEnd);
- new Float:fOrigin[3], Float:fAngle[3]
- pev(id, pev_origin, fOrigin)
- pev(id, pev_view_ofs, fAngle)
- xs_vec_add(fOrigin, fAngle, fOrigin)
- new Float:fAttack[3]
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- xs_vec_sub(vfEnd, fOrigin, fAttack)
- new Float:fRate
- fRate = fDis / vector_length(fAttack)
- xs_vec_mul_scalar(fAttack, fRate, fAttack)
- xs_vec_add(fOrigin, fAttack, output)
- }
- stock make_blood_and_bulletholes(id)
- {
- new aimOrigin[3], target, body;
- get_user_origin(id, aimOrigin, 3);
- get_user_aiming(id, target, body);
- if(target > 0 && target <= get_maxplayers() && ze_is_user_zombie(target))
- {
- new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3];
- pev(id, pev_origin, fStart);
- velocity_by_aim(id, 64, fVel);
- 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];
- new res;
- engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res);
- get_tr2(res, TR_vecEndPos, fRes);
- 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( m_iBlood [ 1 ]);
- write_short( m_iBlood [ 0 ] );
- write_byte(70);
- write_byte(random_num(1,2));
- message_end();
- }
- else if(!is_user_connected(target))
- {
- for(new i = 0; i <= 1; i ++) {
- if(target)
- {
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_DECAL);
- write_coord(aimOrigin[0]);
- write_coord(aimOrigin[1]);
- write_coord(aimOrigin[2]);
- write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- write_short(target);
- message_end();
- }
- else
- {
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
- write_byte(TE_WORLDDECAL);
- write_coord(aimOrigin[0]);
- write_coord(aimOrigin[1]);
- write_coord(aimOrigin[2]);
- write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- message_end();
- }
- 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(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
- message_end();
- }
- Make_BulletSmoke(id, 0);
- }
- }
- public janus7__ItemPostFrame(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- new Float:flNextAttack = get_pdata_float(id, 83, 5);
- new iBpAmmo = cs_get_user_bpammo(id, wId);
- new iClip = get_pdata_int(weapon_entity, 51, 4);
- new fInReload = get_pdata_int(weapon_entity, 54, 4);
- if( fInReload && flNextAttack <= 0.0 )
- {
- new j = min(JANUS7_CLIPAMMO- iClip, iBpAmmo);
- set_pdata_int(weapon_entity, 51, iClip + j, 4);
- cs_set_user_bpammo(id, wId, iBpAmmo-j);
- set_pdata_int(weapon_entity, 54, 0, 4);
- fInReload = 0;
- }
- new Float:origin[3];
- pev(g_target[id], pev_origin, origin);
- if( g_shots[id] >= SHOTS_NEED && flNextAttack <= 0.0 && !g_mode[id] ) {
- UTIL_PlayWeaponAnimation(id, 12);
- if( get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0 && iClip > 0) {
- UTIL_PlayWeaponAnimation(id, 6);
- set_pdata_float( id, 83, 2.0);
- g_mode[id] = 1;
- g_shots[id] = 0;
- set_task( 20.0, "remove_mode", id+1231 );
- }
- }
- else if (g_mode[id] && flNextAttack <= 0.0 ) {
- if( !(get_user_button(id) & IN_ATTACK) ) {
- g_target[id] = 0;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- g_sound[id] = 0;
- }
- if( !is_user_alive(g_target[id]) || !ze_is_user_zombie(g_target[id]) || !can_see_fm(id,g_target[id]) || entity_range(id, g_target[id]) > 400.0 || !is_in_viewcone(id, origin))
- g_target[id] = 0;
- UTIL_PlayWeaponAnimation(id, 7);
- }
- return HAM_IGNORED;
- }
- public remove_mode(id) {
- id-=1231;
- if(!g_mode[id]) return;
- g_mode[id] = false;
- g_shots[id] = false;
- g_sound[id] = false;
- emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
- UTIL_PlayWeaponAnimation(id, 11);
- set_pdata_float(id, 83, 2.0);
- }
- public janus7__Reload(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- if(g_mode[id])
- return HAM_SUPERCEDE;
- g_janus7_TmpClip[id] = -1;
- new iBpAmmo = cs_get_user_bpammo(id, wId);
- new iClip = get_pdata_int(weapon_entity, 51, 4);
- if (iBpAmmo <= 0)
- return HAM_SUPERCEDE;
- if (iClip >= JANUS7_CLIPAMMO)
- return HAM_SUPERCEDE;
- g_janus7_TmpClip[id] = iClip;
- return HAM_IGNORED;
- }
- public janus7__Reload_Post(weapon_entity) {
- new id = pev(weapon_entity, pev_owner);
- if (!is_user_connected(id))
- return HAM_IGNORED;
- if (!g_has_janus7[id])
- return HAM_IGNORED;
- if (g_janus7_TmpClip[id] == -1)
- return HAM_IGNORED;
- if(g_mode[id])
- return HAM_SUPERCEDE;
- set_pdata_int(weapon_entity, 51, g_janus7_TmpClip[id], 4);
- set_pdata_float(weapon_entity, 48, RELOAD_TIME, 4);
- set_pdata_float(id, 83, RELOAD_TIME, 5);
- set_pdata_int(weapon_entity, 54, 1, 4);
- if( g_mode[id]) g_mode[id] = 0;
- UTIL_PlayWeaponAnimation(id, g_shots[id]>50?13:1);
- return HAM_IGNORED;
- }
- stock drop_weapons(id, dropwhat)
- {
- static weapons[32], num, i, weaponid;
- num = 0;
- get_user_weapons(id, weapons, num);
- for (i = 0; i < num; i++)
- {
- weaponid = weapons[i];
- const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|
- (1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|
- (1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
- if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
- {
- static wname[32];
- get_weaponname(weaponid, wname, sizeof wname - 1);
- engclient_cmd(id, "drop", wname);
- }
- }
- }
- public bool:can_see_fm(entindex1, entindex2)
- {
- if (!entindex1 || !entindex2)
- return false;
- if (pev_valid(entindex1) && pev_valid(entindex1))
- {
- new flags = pev(entindex1, pev_flags);
- if (flags & EF_NODRAW || flags & FL_NOTARGET)
- {
- return false;
- }
- new Float:lookerOrig[3];
- new Float:targetBaseOrig[3];
- new Float:targetOrig[3];
- new Float:temp[3];
- pev(entindex1, pev_origin, lookerOrig);
- pev(entindex1, pev_view_ofs, temp);
- lookerOrig[0] += temp[0];
- lookerOrig[1] += temp[1];
- lookerOrig[2] += temp[2];
- pev(entindex2, pev_origin, targetBaseOrig);
- pev(entindex2, pev_view_ofs, temp);
- targetOrig[0] = targetBaseOrig [0] + temp[0];
- targetOrig[1] = targetBaseOrig [1] + temp[1];
- targetOrig[2] = targetBaseOrig [2] + temp[2];
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);// checks the had of seen player
- if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
- {
- return false;
- }
- else
- {
- new Float:flFraction;
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- else
- {
- targetOrig[0] = targetBaseOrig [0];
- targetOrig[1] = targetBaseOrig [1];
- targetOrig[2] = targetBaseOrig [2];
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); // checks the body of seen player
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- else
- {
- targetOrig[0] = targetBaseOrig [0];
- targetOrig[1] = targetBaseOrig [1];
- targetOrig[2] = targetBaseOrig [2] - 17.0;
- engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); // checks the legs of seen player
- get_tr2(0, TraceResult:TR_flFraction, flFraction);
- if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
- {
- return true;
- }
- }
- }
- }
- }
- return false;
- }
Yes it's exists two times in code, as Mark said.
Also if u removed it, second attack will not do damage at all.
I'm telling u to choose right damage type so it don't make knockback.
Also if u removed it, second attack will not do damage at all.
I'm telling u to choose right damage type so it don't make knockback.
He who fails to plan is planning to fail
To change for example
Or u can use set healh instead of take damage, like set his heatlh to current health - damage
Also to add coins for player every damage using set coins.
DMG_SLASH
to DMG_GENERIC
Or u can use set healh instead of take damage, like set his heatlh to current health - damage
Also to add coins for player every damage using set coins.
He who fails to plan is planning to fail
Create an account or sign in to join the discussion
You need to be a member in order to post a reply
Create an account
Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute
Sign in
Who is online
Users browsing this forum: No registered users and 0 guests