Solved edit janus

Unpaid Requests, Public Plugins
Post Reply
Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

edit janus

#1

Post by Rain1153 » 5 years ago

can anyone remove the knockback from the 2nd attack of janus ( the electric attack)
  1. #include <zombie_escape>
  2. #include <fakemeta_util>
  3. #include <xs>
  4. #include <cstrike>
  5.  
  6. #define get_bit(%1,%2)      (%1 & (1 << (%2 & 31)))
  7. #define set_bit(%1,%2)      %1 |= (1 << (%2 & 31))
  8. #define reset_bit(%1,%2)    %1 &= ~(1 << (%2 & 31))
  9.  
  10. #define EV_INT_WEAPONKEY    EV_INT_impulse
  11. #define WEAPONKEY 7
  12. #define JANUS7_CLIPAMMO 200
  13. #define JANUS7_BPAMMO   200
  14. #define JANUS7_DAMAGE   29
  15. #define SHOTS_NEED  8
  16. #define RELOAD_TIME 4.7
  17. #define wId CSW_M249
  18.  
  19. #define JANUS7_VMODEL "models/zombie_escape/v_janus7.mdl"
  20. #define JANUS7_PMODEL "models/zombie_escape/p_janus7.mdl"
  21. #define JANUS7_WMODEL "models/zombie_escape/w_janus7.mdl"  
  22.  
  23. new g_SmokePuff_SprId
  24. new id
  25. new const Fire_snd[][] = {"weapons/janus7-1.wav", "weapons/janus7-2.wav"};
  26. new const went[] ="weapon_m249";
  27. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };
  28.  
  29. new  g_iItemID,g_mode[33], g_shots[33], g_sprite, g_sprite1, g_target[33],
  30.           g_sound[33],g_has_janus7[33],g_orig_event_janus7, g_clip_ammo[33],
  31.           Float:cl_pushangle[33][3], m_iBlood[2], g_janus7_TmpClip[33], g_bitsMuzzleFlash, g_iEntity;
  32.  
  33. public plugin_init()
  34. {
  35.     register_plugin("Janus-7",      "1.0",      "kademik");
  36.     register_clcmd("weapon_janus7", "Hook_Select");
  37.    
  38.     register_event("CurWeapon", "CurrentWeapon",    "be","1=1");
  39.     g_iItemID = ze_register_item("Janus 7", 50, 0)  
  40.    
  41.     RegisterHam(Ham_Item_AddToPlayer,   went,       "fw_janus7_AddToPlayer");
  42.     RegisterHam(Ham_Item_Deploy,        went,       "fw_Item_Deploy_Post", 1);
  43.     RegisterHam(Ham_Weapon_PrimaryAttack,   went,       "fw_janus7_PrimaryAttack");
  44.     RegisterHam(Ham_Weapon_PrimaryAttack,   went,       "fw_janus7_PrimaryAttack_Post", 1);
  45.     RegisterHam(Ham_Item_PostFrame,     went,       "janus7__ItemPostFrame");
  46.     RegisterHam(Ham_Weapon_Reload,      went,       "janus7__Reload");
  47.     RegisterHam(Ham_Weapon_Reload,      went,       "janus7__Reload_Post", 1);
  48.     RegisterHam(Ham_TakeDamage,         "player",    "fw_TakeDamage");
  49.    
  50.     register_forward(FM_AddToFullPack,   "CPlayer__AddToFullPack_post", 1);
  51.     register_forward(FM_CheckVisibility,     "CEntity__CheckVisibility");
  52.     register_forward(FM_SetModel,        "fw_SetModel");
  53.     register_forward(FM_UpdateClientData,    "fw_UpdateClientData_Post", 1);
  54.     register_forward(FM_PlaybackEvent,   "fwPlaybackEvent");    
  55. }
  56.  
  57. public plugin_precache()
  58. {
  59.     precache_model(JANUS7_VMODEL);
  60.     precache_model(JANUS7_PMODEL);
  61.     precache_model(JANUS7_WMODEL);
  62.     g_sprite = precache_model("sprites/ls/lgtning.spr");
  63.     g_sprite1 = precache_model("sprites/ls/colflare.spr");
  64.     precache_generic( "sprites/weapon_janus7.txt" );
  65.     precache_generic( "sprites/ls/640hud7.spr" );
  66.     precache_generic( "sprites/ls/640hud12.spr" );
  67.     precache_generic( "sprites/ls/640hud99.spr" );
  68.  
  69.     precache_sound(Fire_snd[0]);
  70.     precache_sound(Fire_snd[1]);
  71.     precache_sound("weapons/janus7_change1.wav");
  72.     precache_sound("weapons/janus7_change2.wav");
  73.    
  74.     m_iBlood[0] = precache_model("sprites/blood.spr");
  75.     m_iBlood[1] = precache_model("sprites/bloodspray.spr");
  76.     precache_model("sprites/ls/muzzleflash_janus7.spr");
  77.     g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr");
  78.     g_iEntity = create_entity("info_target");
  79.    
  80.     entity_set_model(g_iEntity, "sprites/ls/muzzleflash_janus7.spr");
  81.    
  82.     entity_set_float(g_iEntity, EV_FL_scale, 0.1);
  83.    
  84.     entity_set_int(g_iEntity, EV_INT_rendermode, kRenderTransTexture);
  85.     entity_set_float(g_iEntity, EV_FL_renderamt, 0.0);
  86.  
  87.    
  88.     register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1);
  89.    
  90. }
  91.  
  92. public fwPrecacheEvent_Post(type, const name[])
  93. {
  94.     if (equal("events/m249.sc", name))
  95.     {
  96.         g_orig_event_janus7 = get_orig_retval();
  97.         return FMRES_HANDLED;
  98.     }
  99.     return FMRES_IGNORED;
  100. }
  101.  
  102. public Hook_Select(id)
  103. {
  104.     engclient_cmd(id, went);
  105.     return PLUGIN_HANDLED;
  106. }
  107.  
  108.  
  109. public client_connect(id)
  110. {
  111.     g_has_janus7[id] = false;
  112. }
  113.  
  114. public client_disconnected(id)
  115. {
  116.     g_has_janus7[id] = false;
  117. }
  118.  
  119. public ze_user_infected(iVictim, iInfector)
  120. {
  121.     if (ze_is_user_zombie(id))
  122.     {
  123.         g_has_janus7[id] = false;
  124.         g_sound[id] = false;
  125.         emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  126.         g_mode[id] = false;
  127.         g_shots[id] = false;
  128.     }
  129. }
  130.  
  131. public fw_SetModel(entity, model[])
  132. {
  133.     if(!is_valid_ent(entity))
  134.         return FMRES_IGNORED;
  135.        
  136.     static szClassName[33];
  137.     entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
  138.     if(!equal(szClassName, "weaponbox"))
  139.         return FMRES_IGNORED;
  140.     static iOwner;
  141.     iOwner = entity_get_edict(entity, EV_ENT_owner);
  142.     if(equal(model, "models/w_m249.mdl"))
  143.     {
  144.         static iStoredSVDID;
  145.         iStoredSVDID = find_ent_by_owner(-1, went, entity);
  146.         if(!is_valid_ent(iStoredSVDID))
  147.             return FMRES_IGNORED;
  148.         if(g_has_janus7[iOwner])
  149.         {
  150.             entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, WEAPONKEY);
  151.             g_has_janus7[iOwner] = false;
  152.             entity_set_model(entity, JANUS7_WMODEL);
  153.             g_mode[iOwner] = false;
  154.             g_shots[iOwner] = false;
  155.             remove_task(iOwner+1231);
  156.             return FMRES_SUPERCEDE;
  157.         }
  158.     }
  159.     return FMRES_IGNORED;
  160. }
  161.  
  162. public CEntity__CheckVisibility(iEntity, pSet)
  163. {
  164.     if (iEntity != g_iEntity)
  165.         return FMRES_IGNORED;
  166.    
  167.     forward_return(FMV_CELL, 1);
  168.    
  169.     return FMRES_SUPERCEDE;
  170. }
  171.  
  172.  
  173. public give_janus7(id)
  174. {
  175.     drop_weapons(id, 1);
  176.     new iWep2 = fm_give_item(id,went);
  177.     if( iWep2 > 0 )
  178.     {
  179.         cs_set_weapon_ammo(iWep2, JANUS7_CLIPAMMO);
  180.         cs_set_user_bpammo (id, wId, JANUS7_BPAMMO);
  181.     }
  182.     g_has_janus7[id] = true;
  183.     g_shots[id] = 0;
  184.     g_mode[id] = false;
  185.     Sprite(id, 1);
  186. }
  187.  
  188. public ze_select_item_pre(id, itemid)
  189. {
  190.     // This not our item?
  191.     if (itemid != g_iItemID)
  192.         return ZE_ITEM_AVAILABLE
  193.    
  194.     // Available for Humans only, So don't show it for zombies
  195.     if (ze_is_user_zombie(id))
  196.         return ZE_ITEM_DONT_SHOW
  197.    
  198.     // Finally return that it's available
  199.     return ZE_ITEM_AVAILABLE
  200. }
  201.  
  202. public ze_select_item_post(id, itemid)
  203. {
  204.     // This is not our item, Block it here and don't execute the blew code
  205.     if (itemid != g_iItemID)
  206.         return
  207.    
  208.     give_janus7(id);        
  209. }
  210.  
  211. public fw_janus7_AddToPlayer(janus7, id)
  212. {
  213.     if(!is_valid_ent(janus7) || !is_user_connected(id))
  214.         return HAM_IGNORED;
  215.        
  216.     if(entity_get_int(janus7, EV_INT_WEAPONKEY) == WEAPONKEY)
  217.     {
  218.         g_has_janus7[id] = true;
  219.         g_mode[id] = false;
  220.         g_shots[id] = 0;
  221.         g_sound[id] = 0;
  222.         entity_set_int(janus7, EV_INT_WEAPONKEY, 0);
  223.         Sprite(id, 1);
  224.         return HAM_HANDLED;
  225.     }
  226.     else Sprite(id, 0);
  227.     return HAM_IGNORED;
  228. }
  229.  
  230. public fw_Item_Deploy_Post(weapon_ent)
  231. {
  232.     static owner;
  233.     owner = pev(weapon_ent, pev_owner);
  234.     static weaponid;
  235.     weaponid = cs_get_weapon_id(weapon_ent);
  236.     replace_weapon_models(owner, weaponid);
  237. }
  238.  
  239. public CurrentWeapon(id)    replace_weapon_models(id, read_data(2));
  240.  
  241. replace_weapon_models(id, weaponid)
  242. {
  243.     static g_wpn[33];
  244.     switch (weaponid)
  245.     {
  246.         case wId:
  247.         {
  248.             if(is_user_alive(id) && is_user_connected(id) && g_has_janus7[id])
  249.             {
  250.                 if (ze_is_user_zombie(id))
  251.                     return;
  252.                
  253.                 if(g_wpn[id] != CSW_M249){
  254.                     if( g_mode[id]) UTIL_PlayWeaponAnimation(id, 8);
  255.                     else UTIL_PlayWeaponAnimation(id, g_shots[id]>50?14:2);
  256.                 }
  257.                 set_pev(id, pev_viewmodel2, JANUS7_VMODEL);
  258.                 set_pev(id, pev_weaponmodel2, JANUS7_PMODEL);
  259.             }
  260.         }
  261.     }
  262.     if(is_user_alive(id))g_wpn[id] = get_user_weapon(id);
  263. }
  264.  
  265. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  266. {
  267.     if(!is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_janus7[Player])
  268.         return FMRES_IGNORED;
  269.        
  270.     set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001);
  271.     return FMRES_HANDLED;
  272. }
  273.  
  274. public fw_janus7_PrimaryAttack(Weapon)
  275. {
  276.     new Player = get_pdata_cbase(Weapon, 41, 4);
  277.     if (!g_has_janus7[Player])
  278.         return HAM_IGNORED;
  279.     pev(Player,pev_punchangle,cl_pushangle[Player]);
  280.     g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon);
  281.    
  282.     if( g_mode[Player] ) return HAM_SUPERCEDE;
  283.     return HAM_IGNORED;
  284. }
  285.  
  286. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  287. {
  288.     if ((eventid != g_orig_event_janus7))
  289.         return FMRES_IGNORED;
  290.        
  291.     if (!(1 <= invoker <= get_maxplayers()))
  292.         return FMRES_IGNORED;
  293.        
  294.     playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2);
  295.     return FMRES_SUPERCEDE;
  296. }
  297.  
  298. public fw_janus7_PrimaryAttack_Post(Weapon) {
  299.    
  300.     new Player = get_pdata_cbase(Weapon, 41, 4);
  301.     new szClip, szAmmo;
  302.     get_user_weapon(Player, szClip, szAmmo);
  303.     if(Player > 0 && Player < 33)
  304.     {
  305.         if(g_has_janus7[Player])
  306.         {
  307.             if(szClip > 0 && !g_sound[Player]) {
  308.                 emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  309.                 if(g_mode[Player])g_sound[Player] = true;
  310.             }
  311.         }
  312.         if(g_has_janus7[Player])
  313.         {
  314.             new Float:push[3];
  315.             pev(Player,pev_punchangle,push);
  316.             xs_vec_sub(push,cl_pushangle[Player],push);
  317.             xs_vec_mul_scalar(push,0.6,push);
  318.             xs_vec_add(push,cl_pushangle[Player],push);
  319.             set_pev(Player,pev_punchangle,push);
  320.             if (!g_clip_ammo[Player])
  321.                 return;
  322.             set_pdata_float(Player, 83, g_mode[Player]?0.05:0.1);
  323.             if(g_mode[Player]) UTIL_PlayWeaponAnimation(Player, random_num(9,10));
  324.             else UTIL_PlayWeaponAnimation(Player, g_shots[Player]>=SHOTS_NEED?5:random_num(3,4));
  325.             if( !g_mode[Player])make_blood_and_bulletholes(Player);
  326.             new Float:origin1[3], targ, body;
  327.             if( g_target[Player] ) {
  328.                 pev(g_target[Player], pev_origin, origin1);
  329.             }
  330.             else fm_get_aim_origin(Player, origin1);
  331.             get_user_aiming(Player, targ, body);
  332.            
  333.             if( !g_mode[Player]) set_bit(g_bitsMuzzleFlash, Player);
  334.             if(g_mode[Player]) {
  335.                 message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
  336.                 write_byte (TE_BEAMENTPOINT);
  337.                 write_short(Player | 0x1000);
  338.                 write_coord(floatround(origin1[0]));
  339.                 write_coord(floatround(origin1[1]));
  340.                 write_coord(floatround(origin1[2]));
  341.                 write_short( g_sprite );
  342.                 write_byte( 1 ); // framestart
  343.                 write_byte( 100 ); // framerate
  344.                 write_byte( 1 ); // life
  345.                 write_byte( 15 ); // width
  346.                 write_byte( 20 ); // noise
  347.                 write_byte( 255 ); // r, g, b
  348.                 write_byte( 165 ); // r, g, b
  349.                 write_byte( 0 ); // r, g, b
  350.                 write_byte( 250 ); // brightness
  351.                 write_byte( 255 ); // speed
  352.                 message_end();      
  353.                 if( targ && is_user_alive(targ) && ze_is_user_zombie(targ) && !g_target[Player]) {
  354.                     remove_task(targ+324);
  355.                     pev(targ, pev_origin, origin1);
  356.                     ExecuteHam(Ham_TakeDamage, targ, Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
  357.                     fm_set_user_rendering(targ, kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
  358.                     set_task(0.2, "delete_effect", targ+324);
  359.                     g_target[Player] = targ;
  360.                     message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  361.                     write_byte(TE_EXPLOSION);
  362.                     write_coord(floatround(origin1[0]));
  363.                     write_coord(floatround(origin1[1]));
  364.                     write_coord(floatround(origin1[2]));
  365.                     write_short(g_sprite1);
  366.                     write_byte(10);
  367.                     write_byte(10);
  368.                     write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
  369.                     message_end();
  370.                    
  371.                 }
  372.                 else if( g_target[Player] && is_user_alive(g_target[Player]) && ze_is_user_zombie(g_target[Player]) ) {
  373.                     remove_task(g_target[Player]+324);
  374.                     ExecuteHam(Ham_TakeDamage, g_target[Player], Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
  375.                     pev(g_target[Player], pev_origin, origin1);
  376.                     fm_set_user_rendering(g_target[Player], kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
  377.                     set_task(0.2, "delete_effect", g_target[Player]+324);
  378.                     message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  379.                     write_byte(TE_EXPLOSION);
  380.                     write_coord(floatround(origin1[0]));
  381.                     write_coord(floatround(origin1[1]));
  382.                     write_coord(floatround(origin1[2]));
  383.                     write_short(g_sprite1);
  384.                     write_byte(10);
  385.                     write_byte(10);
  386.                     write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
  387.                     message_end();
  388.  
  389.                    
  390.                 }
  391.             }
  392.            
  393.         }
  394.     }
  395. }
  396.  
  397. public delete_effect(id) {
  398.     id-=324;
  399.     fm_set_user_rendering(id);
  400. }
  401.  
  402. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  403. {
  404.     if (victim != attacker && is_user_connected(attacker))
  405.     {
  406.         if(get_user_weapon(attacker) == wId)
  407.         {
  408.             if(g_has_janus7[attacker]) {
  409.                 if( g_mode[attacker] ) return;
  410.                 g_shots[attacker] ++;
  411.                 SetHamParamFloat(4, JANUS7_DAMAGE*(g_mode[attacker]?2.0:1.0));
  412.             }
  413.         }
  414.     }
  415. }
  416.  
  417. public CPlayer__AddToFullPack_post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
  418. {
  419.     if (iEnt != g_iEntity)
  420.         return;
  421.    
  422.     if (get_bit(g_bitsMuzzleFlash, iHost))
  423.     {
  424.         set_es(esState, ES_Frame, float(random_num(0, 2)));
  425.            
  426.         set_es(esState, ES_RenderMode, kRenderTransAdd);
  427.         set_es(esState, ES_RenderAmt, 250.0);
  428.        
  429.         reset_bit(g_bitsMuzzleFlash, iHost);
  430.     }
  431.        
  432.     set_es(esState, ES_Skin, iHost);
  433.     set_es(esState, ES_Body, 1);
  434.     set_es(esState, ES_AimEnt, iHost);
  435.     set_es(esState, ES_MoveType, MOVETYPE_FOLLOW);
  436. }
  437.  
  438. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  439. {
  440.     set_pev(Player, pev_weaponanim, Sequence);
  441.     message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
  442.     write_byte(Sequence);
  443.     write_byte(0);
  444.     message_end();
  445. }
  446.  
  447. stock Make_BulletSmoke(id, TrResult)
  448. {
  449.     static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG;
  450.     get_weapon_attachment(id, vecSrc);
  451.     global_get(glb_v_forward, vecEnd);
  452.     xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd);
  453.     xs_vec_add(vecSrc, vecEnd, vecEnd);
  454.     get_tr2(TrResult, TR_vecEndPos, vecSrc);
  455.     get_tr2(TrResult, TR_vecPlaneNormal, vecEnd);
  456.     xs_vec_mul_scalar(vecEnd, 2.5, vecEnd);
  457.     xs_vec_add(vecSrc, vecEnd, vecEnd);
  458.     TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  459.     TE_FLAG |= TE_EXPLFLAG_NOSOUND
  460.     TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  461.     engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0);
  462.     write_byte(TE_EXPLOSION);
  463.     engfunc(EngFunc_WriteCoord, vecEnd[0]);
  464.     engfunc(EngFunc_WriteCoord, vecEnd[1]);
  465.     engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0);
  466.     write_short(g_SmokePuff_SprId);
  467.     write_byte(3);
  468.     write_byte(70);
  469.     write_byte(TE_EXPLFLAG_NODLIGHTS | TE_FLAG | TE_EXPLFLAG_NODLIGHTS);
  470.     message_end();
  471. }
  472.  
  473. stock Sprite(id, type)
  474. {
  475.    
  476.     message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id);
  477.     write_string(type?"weapon_janus7":"weapon_m249");
  478.     write_byte(3);
  479.     write_byte(200);
  480.     write_byte(-1);
  481.     write_byte(-1);
  482.     write_byte(0);
  483.     write_byte(4);
  484.     write_byte(20);
  485.     write_byte(0);
  486.     message_end();
  487.  
  488. }
  489.  
  490.    
  491. stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
  492. {
  493.     new Float:vfEnd[3]
  494.     fm_get_aim_origin(id, vfEnd);
  495.     new Float:fOrigin[3], Float:fAngle[3]
  496.     pev(id, pev_origin, fOrigin)
  497.     pev(id, pev_view_ofs, fAngle)
  498.     xs_vec_add(fOrigin, fAngle, fOrigin)
  499.     new Float:fAttack[3]
  500.     xs_vec_sub(vfEnd, fOrigin, fAttack)
  501.     xs_vec_sub(vfEnd, fOrigin, fAttack)
  502.     new Float:fRate
  503.     fRate = fDis / vector_length(fAttack)
  504.     xs_vec_mul_scalar(fAttack, fRate, fAttack)
  505.     xs_vec_add(fOrigin, fAttack, output)
  506. }
  507.  
  508.  
  509. stock make_blood_and_bulletholes(id)
  510. {
  511.     new aimOrigin[3], target, body;
  512.     get_user_origin(id, aimOrigin, 3);
  513.     get_user_aiming(id, target, body);
  514.     if(target > 0 && target <= get_maxplayers() && ze_is_user_zombie(target))
  515.     {
  516.         new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3];
  517.         pev(id, pev_origin, fStart);
  518.         velocity_by_aim(id, 64, fVel);
  519.         fStart[0] = float(aimOrigin[0]);
  520.         fStart[1] = float(aimOrigin[1]);
  521.         fStart[2] = float(aimOrigin[2]);
  522.         fEnd[0] = fStart[0]+fVel[0];
  523.         fEnd[1] = fStart[1]+fVel[1];
  524.         fEnd[2] = fStart[2]+fVel[2];
  525.         new res;
  526.         engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res);
  527.         get_tr2(res, TR_vecEndPos, fRes);
  528.         message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  529.         write_byte(TE_BLOODSPRITE);
  530.         write_coord(floatround(fStart[0]));
  531.         write_coord(floatround(fStart[1]));
  532.         write_coord(floatround(fStart[2]));
  533.         write_short( m_iBlood [ 1 ]);
  534.         write_short( m_iBlood [ 0 ] );
  535.         write_byte(70);
  536.         write_byte(random_num(1,2));
  537.         message_end();
  538.     }
  539.     else if(!is_user_connected(target))
  540.     {
  541.         for(new i = 0; i <= 1; i ++) {
  542.             if(target)
  543.             {
  544.                 message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  545.                 write_byte(TE_DECAL);
  546.                 write_coord(aimOrigin[0]);
  547.                 write_coord(aimOrigin[1]);
  548.                 write_coord(aimOrigin[2]);
  549.                 write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  550.                 write_short(target);
  551.                 message_end();
  552.             }
  553.             else
  554.             {
  555.                 message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  556.                 write_byte(TE_WORLDDECAL);
  557.                 write_coord(aimOrigin[0]);
  558.                 write_coord(aimOrigin[1]);
  559.                 write_coord(aimOrigin[2]);
  560.                 write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  561.                 message_end();
  562.             }
  563.             message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  564.             write_byte(TE_GUNSHOTDECAL);
  565.             write_coord(aimOrigin[0]);
  566.             write_coord(aimOrigin[1]);
  567.             write_coord(aimOrigin[2]);
  568.             write_short(id);
  569.             write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  570.             message_end();
  571.         }
  572.         Make_BulletSmoke(id, 0);
  573.     }
  574. }
  575.  
  576. public janus7__ItemPostFrame(weapon_entity) {
  577.     new id = pev(weapon_entity, pev_owner);
  578.     if (!is_user_connected(id))
  579.         return HAM_IGNORED;
  580.        
  581.     if (!g_has_janus7[id])
  582.         return HAM_IGNORED;
  583.        
  584.     new Float:flNextAttack = get_pdata_float(id, 83, 5);
  585.     new iBpAmmo = cs_get_user_bpammo(id, wId);
  586.     new iClip = get_pdata_int(weapon_entity, 51, 4);
  587.     new fInReload = get_pdata_int(weapon_entity, 54, 4);
  588.     if( fInReload && flNextAttack <= 0.0 )
  589.     {
  590.         new j = min(JANUS7_CLIPAMMO- iClip, iBpAmmo);
  591.         set_pdata_int(weapon_entity, 51, iClip + j, 4);
  592.         cs_set_user_bpammo(id, wId, iBpAmmo-j);
  593.         set_pdata_int(weapon_entity, 54, 0, 4);
  594.         fInReload = 0;
  595.     }
  596.     new Float:origin[3];
  597.     pev(g_target[id], pev_origin, origin);
  598.    
  599.     if( g_shots[id] >= SHOTS_NEED && flNextAttack <= 0.0 && !g_mode[id] ) {
  600.        
  601.         UTIL_PlayWeaponAnimation(id, 12);
  602.        
  603.         if( get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0 && iClip > 0) {
  604.            
  605.             UTIL_PlayWeaponAnimation(id, 6);
  606.             set_pdata_float( id, 83, 2.0);
  607.             g_mode[id] = 1;
  608.             g_shots[id] = 0;
  609.             set_task( 20.0, "remove_mode", id+1231 );
  610.         }
  611.            
  612.    
  613.     }
  614.     else if (g_mode[id] && flNextAttack <= 0.0 ) {
  615.        
  616.         if( !(get_user_button(id) & IN_ATTACK) ) {
  617.             g_target[id] = 0;
  618.             emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  619.             g_sound[id] = 0;
  620.         }
  621.         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))
  622.             g_target[id] = 0;
  623.        
  624.         UTIL_PlayWeaponAnimation(id, 7);
  625.        
  626.     }
  627.     return HAM_IGNORED;
  628. }
  629.  
  630. public remove_mode(id) {
  631.     id-=1231;
  632.     if(!g_mode[id]) return;
  633.     g_mode[id] = false;
  634.     g_shots[id] = false;
  635.     g_sound[id] = false;
  636.     emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  637.     UTIL_PlayWeaponAnimation(id, 11);
  638.     set_pdata_float(id, 83, 2.0);
  639. }
  640.    
  641. public janus7__Reload(weapon_entity) {
  642.     new id = pev(weapon_entity, pev_owner);
  643.     if (!is_user_connected(id))
  644.         return HAM_IGNORED;
  645.     if (!g_has_janus7[id])
  646.         return HAM_IGNORED;
  647.     if(g_mode[id])
  648.         return HAM_SUPERCEDE;
  649.     g_janus7_TmpClip[id] = -1;
  650.     new iBpAmmo = cs_get_user_bpammo(id, wId);
  651.     new iClip = get_pdata_int(weapon_entity, 51, 4);
  652.     if (iBpAmmo <= 0)
  653.         return HAM_SUPERCEDE;
  654.     if (iClip >= JANUS7_CLIPAMMO)
  655.         return HAM_SUPERCEDE;
  656.     g_janus7_TmpClip[id] = iClip;
  657.     return HAM_IGNORED;
  658. }
  659. public janus7__Reload_Post(weapon_entity) {
  660.     new id = pev(weapon_entity, pev_owner);
  661.     if (!is_user_connected(id))
  662.         return HAM_IGNORED;
  663.     if (!g_has_janus7[id])
  664.         return HAM_IGNORED;
  665.     if (g_janus7_TmpClip[id] == -1)
  666.         return HAM_IGNORED;
  667.     if(g_mode[id])
  668.         return HAM_SUPERCEDE;
  669.     set_pdata_int(weapon_entity, 51, g_janus7_TmpClip[id], 4);
  670.     set_pdata_float(weapon_entity, 48, RELOAD_TIME, 4);
  671.     set_pdata_float(id, 83, RELOAD_TIME, 5);
  672.     set_pdata_int(weapon_entity, 54, 1, 4);
  673.     if( g_mode[id]) g_mode[id] = 0;
  674.     UTIL_PlayWeaponAnimation(id, g_shots[id]>50?13:1);
  675.     return HAM_IGNORED;
  676. }
  677.  
  678. stock drop_weapons(id, dropwhat)
  679. {
  680.     static weapons[32], num, i, weaponid;
  681.     num = 0;
  682.     get_user_weapons(id, weapons, num);
  683.     for (i = 0; i < num; i++)
  684.     {
  685.         weaponid = weapons[i];
  686.         const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|
  687.         (1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|
  688.         (1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
  689.         if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  690.         {
  691.             static wname[32];
  692.             get_weaponname(weaponid, wname, sizeof wname - 1);
  693.             engclient_cmd(id, "drop", wname);
  694.         }
  695.     }
  696. }
  697.  
  698. public bool:can_see_fm(entindex1, entindex2)
  699. {
  700.     if (!entindex1 || !entindex2)
  701.         return false;
  702.  
  703.     if (pev_valid(entindex1) && pev_valid(entindex1))
  704.     {
  705.         new flags = pev(entindex1, pev_flags);
  706.         if (flags & EF_NODRAW || flags & FL_NOTARGET)
  707.         {
  708.             return false;
  709.         }
  710.  
  711.         new Float:lookerOrig[3];
  712.         new Float:targetBaseOrig[3];
  713.         new Float:targetOrig[3];
  714.         new Float:temp[3];
  715.  
  716.         pev(entindex1, pev_origin, lookerOrig);
  717.         pev(entindex1, pev_view_ofs, temp);
  718.         lookerOrig[0] += temp[0];
  719.         lookerOrig[1] += temp[1];
  720.         lookerOrig[2] += temp[2];
  721.  
  722.         pev(entindex2, pev_origin, targetBaseOrig);
  723.         pev(entindex2, pev_view_ofs, temp);
  724.         targetOrig[0] = targetBaseOrig [0] + temp[0];
  725.         targetOrig[1] = targetBaseOrig [1] + temp[1];
  726.         targetOrig[2] = targetBaseOrig [2] + temp[2];
  727.  
  728.         engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);//  checks the had of seen player
  729.         if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
  730.         {
  731.             return false;
  732.         }
  733.         else
  734.         {
  735.             new Float:flFraction;
  736.             get_tr2(0, TraceResult:TR_flFraction, flFraction);
  737.             if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  738.             {
  739.                 return true;
  740.             }
  741.             else
  742.             {
  743.                 targetOrig[0] = targetBaseOrig [0];
  744.                 targetOrig[1] = targetBaseOrig [1];
  745.                 targetOrig[2] = targetBaseOrig [2];
  746.                 engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the body of seen player
  747.                 get_tr2(0, TraceResult:TR_flFraction, flFraction);
  748.                 if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  749.                 {
  750.                     return true;
  751.                 }
  752.                 else
  753.                 {
  754.                     targetOrig[0] = targetBaseOrig [0];
  755.                     targetOrig[1] = targetBaseOrig [1];
  756.                     targetOrig[2] = targetBaseOrig [2] - 17.0;
  757.                     engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the legs of seen player
  758.                     get_tr2(0, TraceResult:TR_flFraction, flFraction);
  759.                     if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  760.                     {
  761.                         return true;
  762.                     }
  763.                 }
  764.             }
  765.         }
  766.     }
  767.     return false;
  768. }
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#2

Post by Raheem » 5 years ago

The damage type i think which cause the knockback: Try from those:
    1. #define DMG_GENERIC                     0           // Generic damage was done
    2. #define DMG_CRUSH                       (1<<0)      // Crushed by falling or moving object
    3. #define DMG_BULLET                      (1<<1)      // Shot
    4. #define DMG_SLASH                       (1<<2)      // Cut, clawed, stabbed
    5. #define DMG_BURN                        (1<<3)      // Heat burned
    6. #define DMG_FREEZE                      (1<<4)      // Frozen
    7. #define DMG_FALL                        (1<<5)      // Fell too far
    8. #define DMG_BLAST                       (1<<6)      // Explosive blast damage
    9. #define DMG_CLUB                        (1<<7)      // Crowbar, punch, headbutt
    10. #define DMG_SHOCK                       (1<<8)      // Electric shock
    11. #define DMG_SONIC                       (1<<9)      // Sound pulse shockwave
    12. #define DMG_ENERGYBEAM                  (1<<10)     // Laser or other high energy beam
    13. #define DMG_NEVERGIB                    (1<<12)     // With this bit OR'd in, no damage type will be able to gib victims upon death
    14. #define DMG_ALWAYSGIB                   (1<<13)     // With this bit OR'd in, any damage type can be made to gib victims upon death.
    15. #define DMG_DROWN                       (1<<14)     // Drowning
    16. #define DMG_PARALYZE                    (1<<15)     // Slows affected creature down
    17. #define DMG_NERVEGAS                    (1<<16)     // Nerve toxins, very bad
    18. #define DMG_POISON                      (1<<17)     // Blood poisioning
    19. #define DMG_RADIATION                   (1<<18)     // Radiation exposure
    20. #define DMG_DROWNRECOVER                (1<<19)     // Drowning recovery
    21. #define DMG_ACID                        (1<<20)     // Toxic chemicals or acid burns
    22. #define DMG_SLOWBURN                    (1<<21)     // In an oven
    23. #define DMG_SLOWFREEZE                  (1<<22)     // In a subzero freezer
    24. #define DMG_MORTAR                      (1<<23)     // Hit by air raid (done to distinguish grenade from mortar)
    25. #define DMG_GRENADE                     (1<<24)     // Counter-Strike only - Hit by HE grenade
    26. #define DMG_TIMEBASED                   (~(0x3fff)) // Mask for time-based damage
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#3

Post by Rain1153 » 5 years ago

um can u pls fix the errors?of the code
  1. #include <zombie_escape>
  2. #include <fakemeta_util>
  3. #include <xs>
  4. #include <cstrike>
  5.  
  6. #define get_bit(%1,%2)      (%1 & (1 << (%2 & 31)))
  7. #define set_bit(%1,%2)      %1 |= (1 << (%2 & 31))
  8. #define reset_bit(%1,%2)    %1 &= ~(1 << (%2 & 31))
  9.  
  10. #define EV_INT_WEAPONKEY    EV_INT_impulse
  11. #define WEAPONKEY 7
  12. #define JANUS7_CLIPAMMO 200
  13. #define JANUS7_BPAMMO   200
  14. #define JANUS7_DAMAGE   29
  15. #define SHOTS_NEED  8
  16. #define RELOAD_TIME 4.7
  17. #define wId CSW_M249
  18.  
  19. #define JANUS7_VMODEL "models/zombie_escape/v_janus7.mdl"
  20. #define JANUS7_PMODEL "models/zombie_escape/p_janus7.mdl"
  21. #define JANUS7_WMODEL "models/zombie_escape/w_janus7.mdl"  
  22.  
  23. new g_SmokePuff_SprId
  24. new id
  25. new const Fire_snd[][] = {"weapons/janus7-1.wav", "weapons/janus7-2.wav"};
  26. new const went[] ="weapon_m249";
  27. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };
  28.  
  29. new  g_iItemID,g_mode[33], g_shots[33], g_sprite, g_sprite1, g_target[33],
  30.           g_sound[33],g_has_janus7[33],g_orig_event_janus7, g_clip_ammo[33],
  31.           Float:cl_pushangle[33][3], m_iBlood[2], g_janus7_TmpClip[33], g_bitsMuzzleFlash, g_iEntity;
  32.  
  33. public plugin_init()
  34. {
  35.     register_plugin("Janus-7",      "1.0",      "kademik");
  36.     register_clcmd("weapon_janus7", "Hook_Select");
  37.    
  38.     register_event("CurWeapon", "CurrentWeapon",    "be","1=1");
  39.     g_iItemID = ze_register_item("Janus 7", 50, 0)  
  40.    
  41.     RegisterHam(Ham_Item_AddToPlayer,   went,       "fw_janus7_AddToPlayer");
  42.     RegisterHam(Ham_Item_Deploy,        went,       "fw_Item_Deploy_Post", 1);
  43.     RegisterHam(Ham_Weapon_PrimaryAttack,   went,       "fw_janus7_PrimaryAttack");
  44.     RegisterHam(Ham_Weapon_PrimaryAttack,   went,       "fw_janus7_PrimaryAttack_Post", 1);
  45.     RegisterHam(Ham_Item_PostFrame,     went,       "janus7__ItemPostFrame");
  46.     RegisterHam(Ham_Weapon_Reload,      went,       "janus7__Reload");
  47.     RegisterHam(Ham_Weapon_Reload,      went,       "janus7__Reload_Post", 1);
  48.     RegisterHam(Ham_TakeDamage,         "player",    "fw_TakeDamage");
  49.    
  50.     register_forward(FM_AddToFullPack,   "CPlayer__AddToFullPack_post", 1);
  51.     register_forward(FM_CheckVisibility,     "CEntity__CheckVisibility");
  52.     register_forward(FM_SetModel,        "fw_SetModel");
  53.     register_forward(FM_UpdateClientData,    "fw_UpdateClientData_Post", 1);
  54.     register_forward(FM_PlaybackEvent,   "fwPlaybackEvent");    
  55. }
  56.  
  57. public plugin_precache()
  58. {
  59.     precache_model(JANUS7_VMODEL);
  60.     precache_model(JANUS7_PMODEL);
  61.     precache_model(JANUS7_WMODEL);
  62.     g_sprite = precache_model("sprites/ls/lgtning.spr");
  63.     g_sprite1 = precache_model("sprites/ls/colflare.spr");
  64.     precache_generic( "sprites/weapon_janus7.txt" );
  65.     precache_generic( "sprites/ls/640hud7.spr" );
  66.     precache_generic( "sprites/ls/640hud12.spr" );
  67.     precache_generic( "sprites/ls/640hud99.spr" );
  68.  
  69.     precache_sound(Fire_snd[0]);
  70.     precache_sound(Fire_snd[1]);
  71.     precache_sound("weapons/janus7_change1.wav");
  72.     precache_sound("weapons/janus7_change2.wav");
  73.    
  74.     m_iBlood[0] = precache_model("sprites/blood.spr");
  75.     m_iBlood[1] = precache_model("sprites/bloodspray.spr");
  76.     precache_model("sprites/ls/muzzleflash_janus7.spr");
  77.     g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr");
  78.     g_iEntity = create_entity("info_target");
  79.    
  80.     entity_set_model(g_iEntity, "sprites/ls/muzzleflash_janus7.spr");
  81.    
  82.     entity_set_float(g_iEntity, EV_FL_scale, 0.1);
  83.    
  84.     entity_set_int(g_iEntity, EV_INT_rendermode, kRenderTransTexture);
  85.     entity_set_float(g_iEntity, EV_FL_renderamt, 0.0);
  86.  
  87.    
  88.     register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1);
  89.    
  90. }
  91.  
  92. public fwPrecacheEvent_Post(type, const name[])
  93. {
  94.     if (equal("events/m249.sc", name))
  95.     {
  96.         g_orig_event_janus7 = get_orig_retval();
  97.         return FMRES_HANDLED;
  98.     }
  99.     return FMRES_IGNORED;
  100. }
  101.  
  102. public Hook_Select(id)
  103. {
  104.     engclient_cmd(id, went);
  105.     return PLUGIN_HANDLED;
  106. }
  107.  
  108.  
  109. public client_connect(id)
  110. {
  111.     g_has_janus7[id] = false;
  112. }
  113.  
  114. public client_disconnected(id)
  115. {
  116.     g_has_janus7[id] = false;
  117. }
  118.  
  119. public ze_user_infected(iVictim, iInfector)
  120. {
  121.     if (ze_is_user_zombie(id))
  122.     {
  123.         g_has_janus7[id] = false;
  124.         g_sound[id] = false;
  125.         emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  126.         g_mode[id] = false;
  127.         g_shots[id] = false;
  128.     }
  129. }
  130.  
  131. public fw_SetModel(entity, model[])
  132. {
  133.     if(!is_valid_ent(entity))
  134.         return FMRES_IGNORED;
  135.        
  136.     static szClassName[33];
  137.     entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
  138.     if(!equal(szClassName, "weaponbox"))
  139.         return FMRES_IGNORED;
  140.     static iOwner;
  141.     iOwner = entity_get_edict(entity, EV_ENT_owner);
  142.     if(equal(model, "models/w_m249.mdl"))
  143.     {
  144.         static iStoredSVDID;
  145.         iStoredSVDID = find_ent_by_owner(-1, went, entity);
  146.         if(!is_valid_ent(iStoredSVDID))
  147.             return FMRES_IGNORED;
  148.         if(g_has_janus7[iOwner])
  149.         {
  150.             entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, WEAPONKEY);
  151.             g_has_janus7[iOwner] = false;
  152.             entity_set_model(entity, JANUS7_WMODEL);
  153.             g_mode[iOwner] = false;
  154.             g_shots[iOwner] = false;
  155.             remove_task(iOwner+1231);
  156.             return FMRES_SUPERCEDE;
  157.         }
  158.     }
  159.     return FMRES_IGNORED;
  160. }
  161.  
  162. public CEntity__CheckVisibility(iEntity, pSet)
  163. {
  164.     if (iEntity != g_iEntity)
  165.         return FMRES_IGNORED;
  166.    
  167.     forward_return(FMV_CELL, 1);
  168.    
  169.     return FMRES_SUPERCEDE;
  170. }
  171.  
  172.  
  173. public give_janus7(id)
  174. {
  175.     drop_weapons(id, 1);
  176.     new iWep2 = fm_give_item(id,went);
  177.     if( iWep2 > 0 )
  178.     {
  179.         cs_set_weapon_ammo(iWep2, JANUS7_CLIPAMMO);
  180.         cs_set_user_bpammo (id, wId, JANUS7_BPAMMO);
  181.     }
  182.     g_has_janus7[id] = true;
  183.     g_shots[id] = 0;
  184.     g_mode[id] = false;
  185.     Sprite(id, 1);
  186. }
  187.  
  188. public ze_select_item_pre(id, itemid)
  189. {
  190.     // This not our item?
  191.     if (itemid != g_iItemID)
  192.         return ZE_ITEM_AVAILABLE
  193.    
  194.     // Available for Humans only, So don't show it for zombies
  195.     if (ze_is_user_zombie(id))
  196.         return ZE_ITEM_DONT_SHOW
  197.    
  198.     // Finally return that it's available
  199.     return ZE_ITEM_AVAILABLE
  200. }
  201.  
  202. public ze_select_item_post(id, itemid)
  203. {
  204.     // This is not our item, Block it here and don't execute the blew code
  205.     if (itemid != g_iItemID)
  206.         return
  207.    
  208.     give_janus7(id);        
  209. }
  210.  
  211. public fw_janus7_AddToPlayer(janus7, id)
  212. {
  213.     if(!is_valid_ent(janus7) || !is_user_connected(id))
  214.         return HAM_IGNORED;
  215.        
  216.     if(entity_get_int(janus7, EV_INT_WEAPONKEY) == WEAPONKEY)
  217.     {
  218.         g_has_janus7[id] = true;
  219.         g_mode[id] = false;
  220.         g_shots[id] = 0;
  221.         g_sound[id] = 0;
  222.         entity_set_int(janus7, EV_INT_WEAPONKEY, 0);
  223.         Sprite(id, 1);
  224.         return HAM_HANDLED;
  225.     }
  226.     else Sprite(id, 0);
  227.     return HAM_IGNORED;
  228. }
  229.  
  230. public fw_Item_Deploy_Post(weapon_ent)
  231. {
  232.     static owner;
  233.     owner = pev(weapon_ent, pev_owner);
  234.     static weaponid;
  235.     weaponid = cs_get_weapon_id(weapon_ent);
  236.     replace_weapon_models(owner, weaponid);
  237. }
  238.  
  239. public CurrentWeapon(id)    replace_weapon_models(id, read_data(2));
  240.  
  241. replace_weapon_models(id, weaponid)
  242. {
  243.     static g_wpn[33];
  244.     switch (weaponid)
  245.     {
  246.         case wId:
  247.         {
  248.             if(is_user_alive(id) && is_user_connected(id) && g_has_janus7[id])
  249.             {
  250.                 if (ze_is_user_zombie(id))
  251.                     return;
  252.                
  253.                 if(g_wpn[id] != CSW_M249){
  254.                     if( g_mode[id]) UTIL_PlayWeaponAnimation(id, 8);
  255.                     else UTIL_PlayWeaponAnimation(id, g_shots[id]>50?14:2);
  256.                 }
  257.                 set_pev(id, pev_viewmodel2, JANUS7_VMODEL);
  258.                 set_pev(id, pev_weaponmodel2, JANUS7_PMODEL);
  259.             }
  260.         }
  261.     }
  262.     if(is_user_alive(id))g_wpn[id] = get_user_weapon(id);
  263. }
  264.  
  265. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  266. {
  267.     if(!is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_janus7[Player])
  268.         return FMRES_IGNORED;
  269.        
  270.     set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001);
  271.     return FMRES_HANDLED;
  272. }
  273.  
  274. public fw_janus7_PrimaryAttack(Weapon)
  275. {
  276.     new Player = get_pdata_cbase(Weapon, 41, 4);
  277.     if (!g_has_janus7[Player])
  278.         return HAM_IGNORED;
  279.     pev(Player,pev_punchangle,cl_pushangle[Player]);
  280.     g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon);
  281.    
  282.     if( g_mode[Player] ) return HAM_SUPERCEDE;
  283.     return HAM_IGNORED;
  284. }
  285.  
  286. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  287. {
  288.     if ((eventid != g_orig_event_janus7))
  289.         return FMRES_IGNORED;
  290.        
  291.     if (!(1 <= invoker <= get_maxplayers()))
  292.         return FMRES_IGNORED;
  293.        
  294.     playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2);
  295.     return FMRES_SUPERCEDE;
  296. }
  297.  
  298. public fw_janus7_PrimaryAttack_Post(Weapon) {
  299.    
  300.     new Player = get_pdata_cbase(Weapon, 41, 4);
  301.     new szClip, szAmmo;
  302.     get_user_weapon(Player, szClip, szAmmo);
  303.     if(Player > 0 && Player < 33)
  304.     {
  305.         if(g_has_janus7[Player])
  306.         {
  307.             if(szClip > 0 && !g_sound[Player]) {
  308.                 emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  309.                 if(g_mode[Player])g_sound[Player] = true;
  310.             }
  311.         }
  312.         if(g_has_janus7[Player])
  313.         {
  314.             new Float:push[3];
  315.             pev(Player,pev_punchangle,push);
  316.             xs_vec_sub(push,cl_pushangle[Player],push);
  317.             xs_vec_mul_scalar(push,0.6,push);
  318.             xs_vec_add(push,cl_pushangle[Player],push);
  319.             set_pev(Player,pev_punchangle,push);
  320.             if (!g_clip_ammo[Player])
  321.                 return;
  322.             set_pdata_float(Player, 83, g_mode[Player]?0.05:0.1);
  323.             if(g_mode[Player]) UTIL_PlayWeaponAnimation(Player, random_num(9,10));
  324.             else UTIL_PlayWeaponAnimation(Player, g_shots[Player]>=SHOTS_NEED?5:random_num(3,4));
  325.             if( !g_mode[Player])make_blood_and_bulletholes(Player);
  326.             new Float:origin1[3], targ, body;
  327.             if( g_target[Player] ) {
  328.                 pev(g_target[Player], pev_origin, origin1);
  329.             }
  330.             else fm_get_aim_origin(Player, origin1);
  331.             get_user_aiming(Player, targ, body);
  332.            
  333.             if( !g_mode[Player]) set_bit(g_bitsMuzzleFlash, Player);
  334.             if(g_mode[Player]) {
  335.                 message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
  336.                 write_byte (TE_BEAMENTPOINT);
  337.                 write_short(Player | 0x1000);
  338.                 write_coord(floatround(origin1[0]));
  339.                 write_coord(floatround(origin1[1]));
  340.                 write_coord(floatround(origin1[2]));
  341.                 write_short( g_sprite );
  342.                 write_byte( 1 ); // framestart
  343.                 write_byte( 100 ); // framerate
  344.                 write_byte( 1 ); // life
  345.                 write_byte( 15 ); // width
  346.                 write_byte( 20 ); // noise
  347.                 write_byte( 255 ); // r, g, b
  348.                 write_byte( 165 ); // r, g, b
  349.                 write_byte( 0 ); // r, g, b
  350.                 write_byte( 250 ); // brightness
  351.                 write_byte( 255 ); // speed
  352.                 message_end();      
  353.                 if( targ && is_user_alive(targ) && ze_is_user_zombie(targ) && !g_target[Player]) {
  354.                     remove_task(targ+324);
  355.                     pev(targ, pev_origin, origin1);
  356.                    
  357.                     fm_set_user_rendering(targ, kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
  358.                     set_task(0.2, "delete_effect", targ+324);
  359.                     g_target[Player] = targ;
  360.                     message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  361.                     write_byte(TE_EXPLOSION);
  362.                     write_coord(floatround(origin1[0]));
  363.                     write_coord(floatround(origin1[1]));
  364.                     write_coord(floatround(origin1[2]));
  365.                     write_short(g_sprite1);
  366.                     write_byte(10);
  367.                     write_byte(10);
  368.                     write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
  369.                     message_end();
  370.                    
  371.                 }
  372.                 else if( g_target[Player] && is_user_alive(g_target[Player]) && ze_is_user_zombie(g_target[Player]) ) {
  373.                     remove_task(g_target[Player]+324);
  374.                     ExecuteHam(Ham_TakeDamage, g_target[Player], Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
  375.                     pev(g_target[Player], pev_origin, origin1);
  376.                     fm_set_user_rendering(g_target[Player], kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
  377.                     set_task(0.2, "delete_effect", g_target[Player]+324);
  378.                     message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  379.                     write_byte(TE_EXPLOSION);
  380.                     write_coord(floatround(origin1[0]));
  381.                     write_coord(floatround(origin1[1]));
  382.                     write_coord(floatround(origin1[2]));
  383.                     write_short(g_sprite1);
  384.                     write_byte(10);
  385.                     write_byte(10);
  386.                     write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
  387.                     message_end();
  388.  
  389.                    
  390.                 }
  391.             }
  392.            
  393.         }
  394.     }
  395. }
  396.  
  397. public delete_effect(id) {
  398.     id-=324;
  399.     fm_set_user_rendering(id);
  400. }
  401.  
  402. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  403. {
  404.     if (victim != attacker && is_user_connected(attacker))
  405.     {
  406.         if(get_user_weapon(attacker) == wId)
  407.         {
  408.             if(g_has_janus7[attacker]) {
  409.                 if( g_mode[attacker] ) return;
  410.                 g_shots[attacker] ++;
  411.                 SetHamParamFloat(4, JANUS7_DAMAGE*(g_mode[attacker]?2.0:1.0));
  412.             }
  413.         }
  414.     }
  415. }
  416.  
  417. public CPlayer__AddToFullPack_post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
  418. {
  419.     if (iEnt != g_iEntity)
  420.         return;
  421.    
  422.     if (get_bit(g_bitsMuzzleFlash, iHost))
  423.     {
  424.         set_es(esState, ES_Frame, float(random_num(0, 2)));
  425.            
  426.         set_es(esState, ES_RenderMode, kRenderTransAdd);
  427.         set_es(esState, ES_RenderAmt, 250.0);
  428.        
  429.         reset_bit(g_bitsMuzzleFlash, iHost);
  430.     }
  431.        
  432.     set_es(esState, ES_Skin, iHost);
  433.     set_es(esState, ES_Body, 1);
  434.     set_es(esState, ES_AimEnt, iHost);
  435.     set_es(esState, ES_MoveType, MOVETYPE_FOLLOW);
  436. }
  437.  
  438. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  439. {
  440.     set_pev(Player, pev_weaponanim, Sequence);
  441.     message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
  442.     write_byte(Sequence);
  443.     write_byte(0);
  444.     message_end();
  445. }
  446.  
  447. stock Make_BulletSmoke(id, TrResult)
  448. {
  449.     static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG;
  450.     get_weapon_attachment(id, vecSrc);
  451.     global_get(glb_v_forward, vecEnd);
  452.     xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd);
  453.     xs_vec_add(vecSrc, vecEnd, vecEnd);
  454.     get_tr2(TrResult, TR_vecEndPos, vecSrc);
  455.     get_tr2(TrResult, TR_vecPlaneNormal, vecEnd);
  456.     xs_vec_mul_scalar(vecEnd, 2.5, vecEnd);
  457.     xs_vec_add(vecSrc, vecEnd, vecEnd);
  458.     TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  459.     TE_FLAG |= TE_EXPLFLAG_NOSOUND
  460.     TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  461.     engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0);
  462.     write_byte(TE_EXPLOSION);
  463.     engfunc(EngFunc_WriteCoord, vecEnd[0]);
  464.     engfunc(EngFunc_WriteCoord, vecEnd[1]);
  465.     engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0);
  466.     write_short(g_SmokePuff_SprId);
  467.     write_byte(3);
  468.     write_byte(70);
  469.     write_byte(TE_EXPLFLAG_NODLIGHTS | TE_FLAG | TE_EXPLFLAG_NODLIGHTS);
  470.     message_end();
  471. }
  472.  
  473. stock Sprite(id, type)
  474. {
  475.    
  476.     message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id);
  477.     write_string(type?"weapon_janus7":"weapon_m249");
  478.     write_byte(3);
  479.     write_byte(200);
  480.     write_byte(-1);
  481.     write_byte(-1);
  482.     write_byte(0);
  483.     write_byte(4);
  484.     write_byte(20);
  485.     write_byte(0);
  486.     message_end();
  487.  
  488. }
  489.  
  490.    
  491. stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
  492. {
  493.     new Float:vfEnd[3]
  494.     fm_get_aim_origin(id, vfEnd);
  495.     new Float:fOrigin[3], Float:fAngle[3]
  496.     pev(id, pev_origin, fOrigin)
  497.     pev(id, pev_view_ofs, fAngle)
  498.     xs_vec_add(fOrigin, fAngle, fOrigin)
  499.     new Float:fAttack[3]
  500.     xs_vec_sub(vfEnd, fOrigin, fAttack)
  501.     xs_vec_sub(vfEnd, fOrigin, fAttack)
  502.     new Float:fRate
  503.     fRate = fDis / vector_length(fAttack)
  504.     xs_vec_mul_scalar(fAttack, fRate, fAttack)
  505.     xs_vec_add(fOrigin, fAttack, output)
  506. }
  507.  
  508.  
  509. stock make_blood_and_bulletholes(id)
  510. {
  511.     new aimOrigin[3], target, body;
  512.     get_user_origin(id, aimOrigin, 3);
  513.     get_user_aiming(id, target, body);
  514.     if(target > 0 && target <= get_maxplayers() && ze_is_user_zombie(target))
  515.     {
  516.         new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3];
  517.         pev(id, pev_origin, fStart);
  518.         velocity_by_aim(id, 64, fVel);
  519.         fStart[0] = float(aimOrigin[0]);
  520.         fStart[1] = float(aimOrigin[1]);
  521.         fStart[2] = float(aimOrigin[2]);
  522.         fEnd[0] = fStart[0]+fVel[0];
  523.         fEnd[1] = fStart[1]+fVel[1];
  524.         fEnd[2] = fStart[2]+fVel[2];
  525.         new res;
  526.         engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res);
  527.         get_tr2(res, TR_vecEndPos, fRes);
  528.         message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  529.         write_byte(TE_BLOODSPRITE);
  530.         write_coord(floatround(fStart[0]));
  531.         write_coord(floatround(fStart[1]));
  532.         write_coord(floatround(fStart[2]));
  533.         write_short( m_iBlood [ 1 ]);
  534.         write_short( m_iBlood [ 0 ] );
  535.         write_byte(70);
  536.         write_byte(random_num(1,2));
  537.         message_end();
  538.     }
  539.     else if(!is_user_connected(target))
  540.     {
  541.         for(new i = 0; i <= 1; i ++) {
  542.             if(target)
  543.             {
  544.                 message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  545.                 write_byte(TE_DECAL);
  546.                 write_coord(aimOrigin[0]);
  547.                 write_coord(aimOrigin[1]);
  548.                 write_coord(aimOrigin[2]);
  549.                 write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  550.                 write_short(target);
  551.                 message_end();
  552.             }
  553.             else
  554.             {
  555.                 message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  556.                 write_byte(TE_WORLDDECAL);
  557.                 write_coord(aimOrigin[0]);
  558.                 write_coord(aimOrigin[1]);
  559.                 write_coord(aimOrigin[2]);
  560.                 write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  561.                 message_end();
  562.             }
  563.             message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  564.             write_byte(TE_GUNSHOTDECAL);
  565.             write_coord(aimOrigin[0]);
  566.             write_coord(aimOrigin[1]);
  567.             write_coord(aimOrigin[2]);
  568.             write_short(id);
  569.             write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  570.             message_end();
  571.         }
  572.         Make_BulletSmoke(id, 0);
  573.     }
  574. }
  575.  
  576. public janus7__ItemPostFrame(weapon_entity) {
  577.     new id = pev(weapon_entity, pev_owner);
  578.     if (!is_user_connected(id))
  579.         return HAM_IGNORED;
  580.        
  581.     if (!g_has_janus7[id])
  582.         return HAM_IGNORED;
  583.        
  584.     new Float:flNextAttack = get_pdata_float(id, 83, 5);
  585.     new iBpAmmo = cs_get_user_bpammo(id, wId);
  586.     new iClip = get_pdata_int(weapon_entity, 51, 4);
  587.     new fInReload = get_pdata_int(weapon_entity, 54, 4);
  588.     if( fInReload && flNextAttack <= 0.0 )
  589.     {
  590.         new j = min(JANUS7_CLIPAMMO- iClip, iBpAmmo);
  591.         set_pdata_int(weapon_entity, 51, iClip + j, 4);
  592.         cs_set_user_bpammo(id, wId, iBpAmmo-j);
  593.         set_pdata_int(weapon_entity, 54, 0, 4);
  594.         fInReload = 0;
  595.     }
  596.     new Float:origin[3];
  597.     pev(g_target[id], pev_origin, origin);
  598.    
  599.     if( g_shots[id] >= SHOTS_NEED && flNextAttack <= 0.0 && !g_mode[id] ) {
  600.        
  601.         UTIL_PlayWeaponAnimation(id, 12);
  602.        
  603.         if( get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0 && iClip > 0) {
  604.            
  605.             UTIL_PlayWeaponAnimation(id, 6);
  606.             set_pdata_float( id, 83, 2.0);
  607.             g_mode[id] = 1;
  608.             g_shots[id] = 0;
  609.             set_task( 20.0, "remove_mode", id+1231 );
  610.         }
  611.            
  612.    
  613.     }
  614.     else if (g_mode[id] && flNextAttack <= 0.0 ) {
  615.        
  616.         if( !(get_user_button(id) & IN_ATTACK) ) {
  617.             g_target[id] = 0;
  618.             emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  619.             g_sound[id] = 0;
  620.         }
  621.         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))
  622.             g_target[id] = 0;
  623.        
  624.         UTIL_PlayWeaponAnimation(id, 7);
  625.        
  626.     }
  627.     return HAM_IGNORED;
  628. }
  629.  
  630. public remove_mode(id) {
  631.     id-=1231;
  632.     if(!g_mode[id]) return;
  633.     g_mode[id] = false;
  634.     g_shots[id] = false;
  635.     g_sound[id] = false;
  636.     emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  637.     UTIL_PlayWeaponAnimation(id, 11);
  638.     set_pdata_float(id, 83, 2.0);
  639. }
  640.    
  641. public janus7__Reload(weapon_entity) {
  642.     new id = pev(weapon_entity, pev_owner);
  643.     if (!is_user_connected(id))
  644.         return HAM_IGNORED;
  645.     if (!g_has_janus7[id])
  646.         return HAM_IGNORED;
  647.     if(g_mode[id])
  648.         return HAM_SUPERCEDE;
  649.     g_janus7_TmpClip[id] = -1;
  650.     new iBpAmmo = cs_get_user_bpammo(id, wId);
  651.     new iClip = get_pdata_int(weapon_entity, 51, 4);
  652.     if (iBpAmmo <= 0)
  653.         return HAM_SUPERCEDE;
  654.     if (iClip >= JANUS7_CLIPAMMO)
  655.         return HAM_SUPERCEDE;
  656.     g_janus7_TmpClip[id] = iClip;
  657.     return HAM_IGNORED;
  658. }
  659. public janus7__Reload_Post(weapon_entity) {
  660.     new id = pev(weapon_entity, pev_owner);
  661.     if (!is_user_connected(id))
  662.         return HAM_IGNORED;
  663.     if (!g_has_janus7[id])
  664.         return HAM_IGNORED;
  665.     if (g_janus7_TmpClip[id] == -1)
  666.         return HAM_IGNORED;
  667.     if(g_mode[id])
  668.         return HAM_SUPERCEDE;
  669.     set_pdata_int(weapon_entity, 51, g_janus7_TmpClip[id], 4);
  670.     set_pdata_float(weapon_entity, 48, RELOAD_TIME, 4);
  671.     set_pdata_float(id, 83, RELOAD_TIME, 5);
  672.     set_pdata_int(weapon_entity, 54, 1, 4);
  673.     if( g_mode[id]) g_mode[id] = 0;
  674.     UTIL_PlayWeaponAnimation(id, g_shots[id]>50?13:1);
  675.     return HAM_IGNORED;
  676. }
  677.  
  678. stock drop_weapons(id, dropwhat)
  679. {
  680.     static weapons[32], num, i, weaponid;
  681.     num = 0;
  682.     get_user_weapons(id, weapons, num);
  683.     for (i = 0; i < num; i++)
  684.     {
  685.         weaponid = weapons[i];
  686.         const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|
  687.         (1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|
  688.         (1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
  689.         if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  690.         {
  691.             static wname[32];
  692.             get_weaponname(weaponid, wname, sizeof wname - 1);
  693.             engclient_cmd(id, "drop", wname);
  694.         }
  695.     }
  696. }
  697.  
  698. public bool:can_see_fm(entindex1, entindex2)
  699. {
  700.     if (!entindex1 || !entindex2)
  701.         return false;
  702.  
  703.     if (pev_valid(entindex1) && pev_valid(entindex1))
  704.     {
  705.         new flags = pev(entindex1, pev_flags);
  706.         if (flags & EF_NODRAW || flags & FL_NOTARGET)
  707.         {
  708.             return false;
  709.         }
  710.  
  711.         new Float:lookerOrig[3];
  712.         new Float:targetBaseOrig[3];
  713.         new Float:targetOrig[3];
  714.         new Float:temp[3];
  715.  
  716.         pev(entindex1, pev_origin, lookerOrig);
  717.         pev(entindex1, pev_view_ofs, temp);
  718.         lookerOrig[0] += temp[0];
  719.         lookerOrig[1] += temp[1];
  720.         lookerOrig[2] += temp[2];
  721.  
  722.         pev(entindex2, pev_origin, targetBaseOrig);
  723.         pev(entindex2, pev_view_ofs, temp);
  724.         targetOrig[0] = targetBaseOrig [0] + temp[0];
  725.         targetOrig[1] = targetBaseOrig [1] + temp[1];
  726.         targetOrig[2] = targetBaseOrig [2] + temp[2];
  727.  
  728.         engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);//  checks the had of seen player
  729.         if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
  730.         {
  731.             return false;
  732.         }
  733.         else
  734.         {
  735.             new Float:flFraction;
  736.             get_tr2(0, TraceResult:TR_flFraction, flFraction);
  737.             if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  738.             {
  739.                 return true;
  740.             }
  741.             else
  742.             {
  743.                 targetOrig[0] = targetBaseOrig [0];
  744.                 targetOrig[1] = targetBaseOrig [1];
  745.                 targetOrig[2] = targetBaseOrig [2];
  746.                 engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the body of seen player
  747.                 get_tr2(0, TraceResult:TR_flFraction, flFraction);
  748.                 if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  749.                 {
  750.                     return true;
  751.                 }
  752.                 else
  753.                 {
  754.                     targetOrig[0] = targetBaseOrig [0];
  755.                     targetOrig[1] = targetBaseOrig [1];
  756.                     targetOrig[2] = targetBaseOrig [2] - 17.0;
  757.                     engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the legs of seen player
  758.                     get_tr2(0, TraceResult:TR_flFraction, flFraction);
  759.                     if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  760.                     {
  761.                         return true;
  762.                     }
  763.                 }
  764.             }
  765.         }
  766.     }
  767.     return false;
  768. }
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#4

Post by Raheem » 5 years ago

You forget #include <engine>
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#5

Post by Rain1153 » 5 years ago

yeah thanks xD
LOL

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#6

Post by Rain1153 » 5 years ago

removed this line but i still get knockbacks from 2nd attack
  1. ExecuteHam(Ham_TakeDamage, targ, Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
LOL

User avatar
Mark
VIP
VIP
United States of America
Posts: 283
Joined: 5 years ago
Location: Des Moines/USA
Contact:

#7

Post by Mark » 5 years ago

Rain1153 wrote: 5 years ago removed this line but i still get knockbacks from 2nd attack
  1. ExecuteHam(Ham_TakeDamage, targ, Player, Player, JANUS7_DAMAGE*2.0, DMG_SLASH);
I still see it in the code...

Try!
  1. #include <zombie_escape>
  2. #include <fakemeta_util>
  3. #include <xs>
  4. #include <cstrike>
  5.  
  6. #define get_bit(%1,%2)      (%1 & (1 << (%2 & 31)))
  7. #define set_bit(%1,%2)      %1 |= (1 << (%2 & 31))
  8. #define reset_bit(%1,%2)    %1 &= ~(1 << (%2 & 31))
  9.  
  10. #define EV_INT_WEAPONKEY    EV_INT_impulse
  11. #define WEAPONKEY 7
  12. #define JANUS7_CLIPAMMO 200
  13. #define JANUS7_BPAMMO   200
  14. #define JANUS7_DAMAGE   29
  15. #define SHOTS_NEED  8
  16. #define RELOAD_TIME 4.7
  17. #define wId CSW_M249
  18.  
  19. #define JANUS7_VMODEL "models/zombie_escape/v_janus7.mdl"
  20. #define JANUS7_PMODEL "models/zombie_escape/p_janus7.mdl"
  21. #define JANUS7_WMODEL "models/zombie_escape/w_janus7.mdl"  
  22.  
  23. new g_SmokePuff_SprId
  24. new id
  25. new const Fire_snd[][] = {"weapons/janus7-1.wav", "weapons/janus7-2.wav"};
  26. new const went[] ="weapon_m249";
  27. new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 };
  28.  
  29. new  g_iItemID,g_mode[33], g_shots[33], g_sprite, g_sprite1, g_target[33],
  30.           g_sound[33],g_has_janus7[33],g_orig_event_janus7, g_clip_ammo[33],
  31.           Float:cl_pushangle[33][3], m_iBlood[2], g_janus7_TmpClip[33], g_bitsMuzzleFlash, g_iEntity;
  32.  
  33. public plugin_init()
  34. {
  35.     register_plugin("Janus-7",      "1.0",      "kademik");
  36.     register_clcmd("weapon_janus7", "Hook_Select");
  37.    
  38.     register_event("CurWeapon", "CurrentWeapon",    "be","1=1");
  39.     g_iItemID = ze_register_item("Janus 7", 50, 0)  
  40.    
  41.     RegisterHam(Ham_Item_AddToPlayer,   went,       "fw_janus7_AddToPlayer");
  42.     RegisterHam(Ham_Item_Deploy,        went,       "fw_Item_Deploy_Post", 1);
  43.     RegisterHam(Ham_Weapon_PrimaryAttack,   went,       "fw_janus7_PrimaryAttack");
  44.     RegisterHam(Ham_Weapon_PrimaryAttack,   went,       "fw_janus7_PrimaryAttack_Post", 1);
  45.     RegisterHam(Ham_Item_PostFrame,     went,       "janus7__ItemPostFrame");
  46.     RegisterHam(Ham_Weapon_Reload,      went,       "janus7__Reload");
  47.     RegisterHam(Ham_Weapon_Reload,      went,       "janus7__Reload_Post", 1);
  48.     RegisterHam(Ham_TakeDamage,         "player",    "fw_TakeDamage");
  49.    
  50.     register_forward(FM_AddToFullPack,   "CPlayer__AddToFullPack_post", 1);
  51.     register_forward(FM_CheckVisibility,     "CEntity__CheckVisibility");
  52.     register_forward(FM_SetModel,        "fw_SetModel");
  53.     register_forward(FM_UpdateClientData,    "fw_UpdateClientData_Post", 1);
  54.     register_forward(FM_PlaybackEvent,   "fwPlaybackEvent");    
  55. }
  56.  
  57. public plugin_precache()
  58. {
  59.     precache_model(JANUS7_VMODEL);
  60.     precache_model(JANUS7_PMODEL);
  61.     precache_model(JANUS7_WMODEL);
  62.     g_sprite = precache_model("sprites/ls/lgtning.spr");
  63.     g_sprite1 = precache_model("sprites/ls/colflare.spr");
  64.     precache_generic( "sprites/weapon_janus7.txt" );
  65.     precache_generic( "sprites/ls/640hud7.spr" );
  66.     precache_generic( "sprites/ls/640hud12.spr" );
  67.     precache_generic( "sprites/ls/640hud99.spr" );
  68.  
  69.     precache_sound(Fire_snd[0]);
  70.     precache_sound(Fire_snd[1]);
  71.     precache_sound("weapons/janus7_change1.wav");
  72.     precache_sound("weapons/janus7_change2.wav");
  73.    
  74.     m_iBlood[0] = precache_model("sprites/blood.spr");
  75.     m_iBlood[1] = precache_model("sprites/bloodspray.spr");
  76.     precache_model("sprites/ls/muzzleflash_janus7.spr");
  77.     g_SmokePuff_SprId = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr");
  78.     g_iEntity = create_entity("info_target");
  79.    
  80.     entity_set_model(g_iEntity, "sprites/ls/muzzleflash_janus7.spr");
  81.    
  82.     entity_set_float(g_iEntity, EV_FL_scale, 0.1);
  83.    
  84.     entity_set_int(g_iEntity, EV_INT_rendermode, kRenderTransTexture);
  85.     entity_set_float(g_iEntity, EV_FL_renderamt, 0.0);
  86.  
  87.    
  88.     register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1);
  89.    
  90. }
  91.  
  92. public fwPrecacheEvent_Post(type, const name[])
  93. {
  94.     if (equal("events/m249.sc", name))
  95.     {
  96.         g_orig_event_janus7 = get_orig_retval();
  97.         return FMRES_HANDLED;
  98.     }
  99.     return FMRES_IGNORED;
  100. }
  101.  
  102. public Hook_Select(id)
  103. {
  104.     engclient_cmd(id, went);
  105.     return PLUGIN_HANDLED;
  106. }
  107.  
  108.  
  109. public client_connect(id)
  110. {
  111.     g_has_janus7[id] = false;
  112. }
  113.  
  114. public client_disconnected(id)
  115. {
  116.     g_has_janus7[id] = false;
  117. }
  118.  
  119. public ze_user_infected(iVictim, iInfector)
  120. {
  121.     if (ze_is_user_zombie(id))
  122.     {
  123.         g_has_janus7[id] = false;
  124.         g_sound[id] = false;
  125.         emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  126.         g_mode[id] = false;
  127.         g_shots[id] = false;
  128.     }
  129. }
  130.  
  131. public fw_SetModel(entity, model[])
  132. {
  133.     if(!is_valid_ent(entity))
  134.         return FMRES_IGNORED;
  135.        
  136.     static szClassName[33];
  137.     entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName));
  138.     if(!equal(szClassName, "weaponbox"))
  139.         return FMRES_IGNORED;
  140.     static iOwner;
  141.     iOwner = entity_get_edict(entity, EV_ENT_owner);
  142.     if(equal(model, "models/w_m249.mdl"))
  143.     {
  144.         static iStoredSVDID;
  145.         iStoredSVDID = find_ent_by_owner(-1, went, entity);
  146.         if(!is_valid_ent(iStoredSVDID))
  147.             return FMRES_IGNORED;
  148.         if(g_has_janus7[iOwner])
  149.         {
  150.             entity_set_int(iStoredSVDID, EV_INT_WEAPONKEY, WEAPONKEY);
  151.             g_has_janus7[iOwner] = false;
  152.             entity_set_model(entity, JANUS7_WMODEL);
  153.             g_mode[iOwner] = false;
  154.             g_shots[iOwner] = false;
  155.             remove_task(iOwner+1231);
  156.             return FMRES_SUPERCEDE;
  157.         }
  158.     }
  159.     return FMRES_IGNORED;
  160. }
  161.  
  162. public CEntity__CheckVisibility(iEntity, pSet)
  163. {
  164.     if (iEntity != g_iEntity)
  165.         return FMRES_IGNORED;
  166.    
  167.     forward_return(FMV_CELL, 1);
  168.    
  169.     return FMRES_SUPERCEDE;
  170. }
  171.  
  172.  
  173. public give_janus7(id)
  174. {
  175.     drop_weapons(id, 1);
  176.     new iWep2 = fm_give_item(id,went);
  177.     if( iWep2 > 0 )
  178.     {
  179.         cs_set_weapon_ammo(iWep2, JANUS7_CLIPAMMO);
  180.         cs_set_user_bpammo (id, wId, JANUS7_BPAMMO);
  181.     }
  182.     g_has_janus7[id] = true;
  183.     g_shots[id] = 0;
  184.     g_mode[id] = false;
  185.     Sprite(id, 1);
  186. }
  187.  
  188. public ze_select_item_pre(id, itemid)
  189. {
  190.     // This not our item?
  191.     if (itemid != g_iItemID)
  192.         return ZE_ITEM_AVAILABLE
  193.    
  194.     // Available for Humans only, So don't show it for zombies
  195.     if (ze_is_user_zombie(id))
  196.         return ZE_ITEM_DONT_SHOW
  197.    
  198.     // Finally return that it's available
  199.     return ZE_ITEM_AVAILABLE
  200. }
  201.  
  202. public ze_select_item_post(id, itemid)
  203. {
  204.     // This is not our item, Block it here and don't execute the blew code
  205.     if (itemid != g_iItemID)
  206.         return
  207.    
  208.     give_janus7(id);        
  209. }
  210.  
  211. public fw_janus7_AddToPlayer(janus7, id)
  212. {
  213.     if(!is_valid_ent(janus7) || !is_user_connected(id))
  214.         return HAM_IGNORED;
  215.        
  216.     if(entity_get_int(janus7, EV_INT_WEAPONKEY) == WEAPONKEY)
  217.     {
  218.         g_has_janus7[id] = true;
  219.         g_mode[id] = false;
  220.         g_shots[id] = 0;
  221.         g_sound[id] = 0;
  222.         entity_set_int(janus7, EV_INT_WEAPONKEY, 0);
  223.         Sprite(id, 1);
  224.         return HAM_HANDLED;
  225.     }
  226.     else Sprite(id, 0);
  227.     return HAM_IGNORED;
  228. }
  229.  
  230. public fw_Item_Deploy_Post(weapon_ent)
  231. {
  232.     static owner;
  233.     owner = pev(weapon_ent, pev_owner);
  234.     static weaponid;
  235.     weaponid = cs_get_weapon_id(weapon_ent);
  236.     replace_weapon_models(owner, weaponid);
  237. }
  238.  
  239. public CurrentWeapon(id)    replace_weapon_models(id, read_data(2));
  240.  
  241. replace_weapon_models(id, weaponid)
  242. {
  243.     static g_wpn[33];
  244.     switch (weaponid)
  245.     {
  246.         case wId:
  247.         {
  248.             if(is_user_alive(id) && is_user_connected(id) && g_has_janus7[id])
  249.             {
  250.                 if (ze_is_user_zombie(id))
  251.                     return;
  252.                
  253.                 if(g_wpn[id] != CSW_M249){
  254.                     if( g_mode[id]) UTIL_PlayWeaponAnimation(id, 8);
  255.                     else UTIL_PlayWeaponAnimation(id, g_shots[id]>50?14:2);
  256.                 }
  257.                 set_pev(id, pev_viewmodel2, JANUS7_VMODEL);
  258.                 set_pev(id, pev_weaponmodel2, JANUS7_PMODEL);
  259.             }
  260.         }
  261.     }
  262.     if(is_user_alive(id))g_wpn[id] = get_user_weapon(id);
  263. }
  264.  
  265. public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
  266. {
  267.     if(!is_user_alive(Player) || (get_user_weapon(Player) != wId) || !g_has_janus7[Player])
  268.         return FMRES_IGNORED;
  269.        
  270.     set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001);
  271.     return FMRES_HANDLED;
  272. }
  273.  
  274. public fw_janus7_PrimaryAttack(Weapon)
  275. {
  276.     new Player = get_pdata_cbase(Weapon, 41, 4);
  277.     if (!g_has_janus7[Player])
  278.         return HAM_IGNORED;
  279.     pev(Player,pev_punchangle,cl_pushangle[Player]);
  280.     g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon);
  281.    
  282.     if( g_mode[Player] ) return HAM_SUPERCEDE;
  283.     return HAM_IGNORED;
  284. }
  285.  
  286. public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
  287. {
  288.     if ((eventid != g_orig_event_janus7))
  289.         return FMRES_IGNORED;
  290.        
  291.     if (!(1 <= invoker <= get_maxplayers()))
  292.         return FMRES_IGNORED;
  293.        
  294.     playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2);
  295.     return FMRES_SUPERCEDE;
  296. }
  297.  
  298. public fw_janus7_PrimaryAttack_Post(Weapon) {
  299.    
  300.     new Player = get_pdata_cbase(Weapon, 41, 4);
  301.     new szClip, szAmmo;
  302.     get_user_weapon(Player, szClip, szAmmo);
  303.     if(Player > 0 && Player < 33)
  304.     {
  305.         if(g_has_janus7[Player])
  306.         {
  307.             if(szClip > 0 && !g_sound[Player]) {
  308.                 emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  309.                 if(g_mode[Player])g_sound[Player] = true;
  310.             }
  311.         }
  312.         if(g_has_janus7[Player])
  313.         {
  314.             new Float:push[3];
  315.             pev(Player,pev_punchangle,push);
  316.             xs_vec_sub(push,cl_pushangle[Player],push);
  317.             xs_vec_mul_scalar(push,0.6,push);
  318.             xs_vec_add(push,cl_pushangle[Player],push);
  319.             set_pev(Player,pev_punchangle,push);
  320.             if (!g_clip_ammo[Player])
  321.                 return;
  322.             set_pdata_float(Player, 83, g_mode[Player]?0.05:0.1);
  323.             if(g_mode[Player]) UTIL_PlayWeaponAnimation(Player, random_num(9,10));
  324.             else UTIL_PlayWeaponAnimation(Player, g_shots[Player]>=SHOTS_NEED?5:random_num(3,4));
  325.             if( !g_mode[Player])make_blood_and_bulletholes(Player);
  326.             new Float:origin1[3], targ, body;
  327.             if( g_target[Player] ) {
  328.                 pev(g_target[Player], pev_origin, origin1);
  329.             }
  330.             else fm_get_aim_origin(Player, origin1);
  331.             get_user_aiming(Player, targ, body);
  332.            
  333.             if( !g_mode[Player]) set_bit(g_bitsMuzzleFlash, Player);
  334.             if(g_mode[Player]) {
  335.                 message_begin( MSG_BROADCAST,SVC_TEMPENTITY);
  336.                 write_byte (TE_BEAMENTPOINT);
  337.                 write_short(Player | 0x1000);
  338.                 write_coord(floatround(origin1[0]));
  339.                 write_coord(floatround(origin1[1]));
  340.                 write_coord(floatround(origin1[2]));
  341.                 write_short( g_sprite );
  342.                 write_byte( 1 ); // framestart
  343.                 write_byte( 100 ); // framerate
  344.                 write_byte( 1 ); // life
  345.                 write_byte( 15 ); // width
  346.                 write_byte( 20 ); // noise
  347.                 write_byte( 255 ); // r, g, b
  348.                 write_byte( 165 ); // r, g, b
  349.                 write_byte( 0 ); // r, g, b
  350.                 write_byte( 250 ); // brightness
  351.                 write_byte( 255 ); // speed
  352.                 message_end();      
  353.                 if( targ && is_user_alive(targ) && ze_is_user_zombie(targ) && !g_target[Player]) {
  354.                     remove_task(targ+324);
  355.                     pev(targ, pev_origin, origin1);
  356.                    
  357.                     fm_set_user_rendering(targ, kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
  358.                     set_task(0.2, "delete_effect", targ+324);
  359.                     g_target[Player] = targ;
  360.                     message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  361.                     write_byte(TE_EXPLOSION);
  362.                     write_coord(floatround(origin1[0]));
  363.                     write_coord(floatround(origin1[1]));
  364.                     write_coord(floatround(origin1[2]));
  365.                     write_short(g_sprite1);
  366.                     write_byte(10);
  367.                     write_byte(10);
  368.                     write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
  369.                     message_end();
  370.                    
  371.                 }
  372.                 else if( g_target[Player] && is_user_alive(g_target[Player]) && ze_is_user_zombie(g_target[Player]) ) {
  373.                     remove_task(g_target[Player]+324);
  374.                     pev(g_target[Player], pev_origin, origin1);
  375.                     fm_set_user_rendering(g_target[Player], kRenderFxGlowShell, 255, 165, 0, kRenderNormal, 10);
  376.                     set_task(0.2, "delete_effect", g_target[Player]+324);
  377.                     message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  378.                     write_byte(TE_EXPLOSION);
  379.                     write_coord(floatround(origin1[0]));
  380.                     write_coord(floatround(origin1[1]));
  381.                     write_coord(floatround(origin1[2]));
  382.                     write_short(g_sprite1);
  383.                     write_byte(10);
  384.                     write_byte(10);
  385.                     write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NODLIGHTS);
  386.                     message_end();
  387.  
  388.                    
  389.                 }
  390.             }
  391.            
  392.         }
  393.     }
  394. }
  395.  
  396. public delete_effect(id) {
  397.     id-=324;
  398.     fm_set_user_rendering(id);
  399. }
  400.  
  401. public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
  402. {
  403.     if (victim != attacker && is_user_connected(attacker))
  404.     {
  405.         if(get_user_weapon(attacker) == wId)
  406.         {
  407.             if(g_has_janus7[attacker]) {
  408.                 if( g_mode[attacker] ) return;
  409.                 g_shots[attacker] ++;
  410.                 SetHamParamFloat(4, JANUS7_DAMAGE*(g_mode[attacker]?2.0:1.0));
  411.             }
  412.         }
  413.     }
  414. }
  415.  
  416. public CPlayer__AddToFullPack_post(esState, iE, iEnt, iHost, iHostFlags, iPlayer, pSet)
  417. {
  418.     if (iEnt != g_iEntity)
  419.         return;
  420.    
  421.     if (get_bit(g_bitsMuzzleFlash, iHost))
  422.     {
  423.         set_es(esState, ES_Frame, float(random_num(0, 2)));
  424.            
  425.         set_es(esState, ES_RenderMode, kRenderTransAdd);
  426.         set_es(esState, ES_RenderAmt, 250.0);
  427.        
  428.         reset_bit(g_bitsMuzzleFlash, iHost);
  429.     }
  430.        
  431.     set_es(esState, ES_Skin, iHost);
  432.     set_es(esState, ES_Body, 1);
  433.     set_es(esState, ES_AimEnt, iHost);
  434.     set_es(esState, ES_MoveType, MOVETYPE_FOLLOW);
  435. }
  436.  
  437. stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
  438. {
  439.     set_pev(Player, pev_weaponanim, Sequence);
  440.     message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
  441.     write_byte(Sequence);
  442.     write_byte(0);
  443.     message_end();
  444. }
  445.  
  446. stock Make_BulletSmoke(id, TrResult)
  447. {
  448.     static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG;
  449.     get_weapon_attachment(id, vecSrc);
  450.     global_get(glb_v_forward, vecEnd);
  451.     xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd);
  452.     xs_vec_add(vecSrc, vecEnd, vecEnd);
  453.     get_tr2(TrResult, TR_vecEndPos, vecSrc);
  454.     get_tr2(TrResult, TR_vecPlaneNormal, vecEnd);
  455.     xs_vec_mul_scalar(vecEnd, 2.5, vecEnd);
  456.     xs_vec_add(vecSrc, vecEnd, vecEnd);
  457.     TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
  458.     TE_FLAG |= TE_EXPLFLAG_NOSOUND
  459.     TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
  460.     engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0);
  461.     write_byte(TE_EXPLOSION);
  462.     engfunc(EngFunc_WriteCoord, vecEnd[0]);
  463.     engfunc(EngFunc_WriteCoord, vecEnd[1]);
  464.     engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0);
  465.     write_short(g_SmokePuff_SprId);
  466.     write_byte(3);
  467.     write_byte(70);
  468.     write_byte(TE_EXPLFLAG_NODLIGHTS | TE_FLAG | TE_EXPLFLAG_NODLIGHTS);
  469.     message_end();
  470. }
  471.  
  472. stock Sprite(id, type)
  473. {
  474.    
  475.     message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id);
  476.     write_string(type?"weapon_janus7":"weapon_m249");
  477.     write_byte(3);
  478.     write_byte(200);
  479.     write_byte(-1);
  480.     write_byte(-1);
  481.     write_byte(0);
  482.     write_byte(4);
  483.     write_byte(20);
  484.     write_byte(0);
  485.     message_end();
  486.  
  487. }
  488.  
  489.    
  490. stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
  491. {
  492.     new Float:vfEnd[3]
  493.     fm_get_aim_origin(id, vfEnd);
  494.     new Float:fOrigin[3], Float:fAngle[3]
  495.     pev(id, pev_origin, fOrigin)
  496.     pev(id, pev_view_ofs, fAngle)
  497.     xs_vec_add(fOrigin, fAngle, fOrigin)
  498.     new Float:fAttack[3]
  499.     xs_vec_sub(vfEnd, fOrigin, fAttack)
  500.     xs_vec_sub(vfEnd, fOrigin, fAttack)
  501.     new Float:fRate
  502.     fRate = fDis / vector_length(fAttack)
  503.     xs_vec_mul_scalar(fAttack, fRate, fAttack)
  504.     xs_vec_add(fOrigin, fAttack, output)
  505. }
  506.  
  507.  
  508. stock make_blood_and_bulletholes(id)
  509. {
  510.     new aimOrigin[3], target, body;
  511.     get_user_origin(id, aimOrigin, 3);
  512.     get_user_aiming(id, target, body);
  513.     if(target > 0 && target <= get_maxplayers() && ze_is_user_zombie(target))
  514.     {
  515.         new Float:fStart[3], Float:fEnd[3], Float:fRes[3], Float:fVel[3];
  516.         pev(id, pev_origin, fStart);
  517.         velocity_by_aim(id, 64, fVel);
  518.         fStart[0] = float(aimOrigin[0]);
  519.         fStart[1] = float(aimOrigin[1]);
  520.         fStart[2] = float(aimOrigin[2]);
  521.         fEnd[0] = fStart[0]+fVel[0];
  522.         fEnd[1] = fStart[1]+fVel[1];
  523.         fEnd[2] = fStart[2]+fVel[2];
  524.         new res;
  525.         engfunc(EngFunc_TraceLine, fStart, fEnd, 0, target, res);
  526.         get_tr2(res, TR_vecEndPos, fRes);
  527.         message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  528.         write_byte(TE_BLOODSPRITE);
  529.         write_coord(floatround(fStart[0]));
  530.         write_coord(floatround(fStart[1]));
  531.         write_coord(floatround(fStart[2]));
  532.         write_short( m_iBlood [ 1 ]);
  533.         write_short( m_iBlood [ 0 ] );
  534.         write_byte(70);
  535.         write_byte(random_num(1,2));
  536.         message_end();
  537.     }
  538.     else if(!is_user_connected(target))
  539.     {
  540.         for(new i = 0; i <= 1; i ++) {
  541.             if(target)
  542.             {
  543.                 message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  544.                 write_byte(TE_DECAL);
  545.                 write_coord(aimOrigin[0]);
  546.                 write_coord(aimOrigin[1]);
  547.                 write_coord(aimOrigin[2]);
  548.                 write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  549.                 write_short(target);
  550.                 message_end();
  551.             }
  552.             else
  553.             {
  554.                 message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  555.                 write_byte(TE_WORLDDECAL);
  556.                 write_coord(aimOrigin[0]);
  557.                 write_coord(aimOrigin[1]);
  558.                 write_coord(aimOrigin[2]);
  559.                 write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  560.                 message_end();
  561.             }
  562.             message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  563.             write_byte(TE_GUNSHOTDECAL);
  564.             write_coord(aimOrigin[0]);
  565.             write_coord(aimOrigin[1]);
  566.             write_coord(aimOrigin[2]);
  567.             write_short(id);
  568.             write_byte(GUNSHOT_DECALS[random_num ( 0, sizeof GUNSHOT_DECALS -1 ) ] );
  569.             message_end();
  570.         }
  571.         Make_BulletSmoke(id, 0);
  572.     }
  573. }
  574.  
  575. public janus7__ItemPostFrame(weapon_entity) {
  576.     new id = pev(weapon_entity, pev_owner);
  577.     if (!is_user_connected(id))
  578.         return HAM_IGNORED;
  579.        
  580.     if (!g_has_janus7[id])
  581.         return HAM_IGNORED;
  582.        
  583.     new Float:flNextAttack = get_pdata_float(id, 83, 5);
  584.     new iBpAmmo = cs_get_user_bpammo(id, wId);
  585.     new iClip = get_pdata_int(weapon_entity, 51, 4);
  586.     new fInReload = get_pdata_int(weapon_entity, 54, 4);
  587.     if( fInReload && flNextAttack <= 0.0 )
  588.     {
  589.         new j = min(JANUS7_CLIPAMMO- iClip, iBpAmmo);
  590.         set_pdata_int(weapon_entity, 51, iClip + j, 4);
  591.         cs_set_user_bpammo(id, wId, iBpAmmo-j);
  592.         set_pdata_int(weapon_entity, 54, 0, 4);
  593.         fInReload = 0;
  594.     }
  595.     new Float:origin[3];
  596.     pev(g_target[id], pev_origin, origin);
  597.    
  598.     if( g_shots[id] >= SHOTS_NEED && flNextAttack <= 0.0 && !g_mode[id] ) {
  599.        
  600.         UTIL_PlayWeaponAnimation(id, 12);
  601.        
  602.         if( get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0 && iClip > 0) {
  603.            
  604.             UTIL_PlayWeaponAnimation(id, 6);
  605.             set_pdata_float( id, 83, 2.0);
  606.             g_mode[id] = 1;
  607.             g_shots[id] = 0;
  608.             set_task( 20.0, "remove_mode", id+1231 );
  609.         }
  610.            
  611.    
  612.     }
  613.     else if (g_mode[id] && flNextAttack <= 0.0 ) {
  614.        
  615.         if( !(get_user_button(id) & IN_ATTACK) ) {
  616.             g_target[id] = 0;
  617.             emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  618.             g_sound[id] = 0;
  619.         }
  620.         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))
  621.             g_target[id] = 0;
  622.        
  623.         UTIL_PlayWeaponAnimation(id, 7);
  624.        
  625.     }
  626.     return HAM_IGNORED;
  627. }
  628.  
  629. public remove_mode(id) {
  630.     id-=1231;
  631.     if(!g_mode[id]) return;
  632.     g_mode[id] = false;
  633.     g_shots[id] = false;
  634.     g_sound[id] = false;
  635.     emit_sound(id, CHAN_WEAPON, Fire_snd[g_mode[id]], 0.0, ATTN_NORM, 0, PITCH_NORM);
  636.     UTIL_PlayWeaponAnimation(id, 11);
  637.     set_pdata_float(id, 83, 2.0);
  638. }
  639.    
  640. public janus7__Reload(weapon_entity) {
  641.     new id = pev(weapon_entity, pev_owner);
  642.     if (!is_user_connected(id))
  643.         return HAM_IGNORED;
  644.     if (!g_has_janus7[id])
  645.         return HAM_IGNORED;
  646.     if(g_mode[id])
  647.         return HAM_SUPERCEDE;
  648.     g_janus7_TmpClip[id] = -1;
  649.     new iBpAmmo = cs_get_user_bpammo(id, wId);
  650.     new iClip = get_pdata_int(weapon_entity, 51, 4);
  651.     if (iBpAmmo <= 0)
  652.         return HAM_SUPERCEDE;
  653.     if (iClip >= JANUS7_CLIPAMMO)
  654.         return HAM_SUPERCEDE;
  655.     g_janus7_TmpClip[id] = iClip;
  656.     return HAM_IGNORED;
  657. }
  658. public janus7__Reload_Post(weapon_entity) {
  659.     new id = pev(weapon_entity, pev_owner);
  660.     if (!is_user_connected(id))
  661.         return HAM_IGNORED;
  662.     if (!g_has_janus7[id])
  663.         return HAM_IGNORED;
  664.     if (g_janus7_TmpClip[id] == -1)
  665.         return HAM_IGNORED;
  666.     if(g_mode[id])
  667.         return HAM_SUPERCEDE;
  668.     set_pdata_int(weapon_entity, 51, g_janus7_TmpClip[id], 4);
  669.     set_pdata_float(weapon_entity, 48, RELOAD_TIME, 4);
  670.     set_pdata_float(id, 83, RELOAD_TIME, 5);
  671.     set_pdata_int(weapon_entity, 54, 1, 4);
  672.     if( g_mode[id]) g_mode[id] = 0;
  673.     UTIL_PlayWeaponAnimation(id, g_shots[id]>50?13:1);
  674.     return HAM_IGNORED;
  675. }
  676.  
  677. stock drop_weapons(id, dropwhat)
  678. {
  679.     static weapons[32], num, i, weaponid;
  680.     num = 0;
  681.     get_user_weapons(id, weapons, num);
  682.     for (i = 0; i < num; i++)
  683.     {
  684.         weaponid = weapons[i];
  685.         const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|
  686.         (1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)| (1<<CSW_M249)|(1<<CSW_M3)|
  687.         (1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
  688.         if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
  689.         {
  690.             static wname[32];
  691.             get_weaponname(weaponid, wname, sizeof wname - 1);
  692.             engclient_cmd(id, "drop", wname);
  693.         }
  694.     }
  695. }
  696.  
  697. public bool:can_see_fm(entindex1, entindex2)
  698. {
  699.     if (!entindex1 || !entindex2)
  700.         return false;
  701.  
  702.     if (pev_valid(entindex1) && pev_valid(entindex1))
  703.     {
  704.         new flags = pev(entindex1, pev_flags);
  705.         if (flags & EF_NODRAW || flags & FL_NOTARGET)
  706.         {
  707.             return false;
  708.         }
  709.  
  710.         new Float:lookerOrig[3];
  711.         new Float:targetBaseOrig[3];
  712.         new Float:targetOrig[3];
  713.         new Float:temp[3];
  714.  
  715.         pev(entindex1, pev_origin, lookerOrig);
  716.         pev(entindex1, pev_view_ofs, temp);
  717.         lookerOrig[0] += temp[0];
  718.         lookerOrig[1] += temp[1];
  719.         lookerOrig[2] += temp[2];
  720.  
  721.         pev(entindex2, pev_origin, targetBaseOrig);
  722.         pev(entindex2, pev_view_ofs, temp);
  723.         targetOrig[0] = targetBaseOrig [0] + temp[0];
  724.         targetOrig[1] = targetBaseOrig [1] + temp[1];
  725.         targetOrig[2] = targetBaseOrig [2] + temp[2];
  726.  
  727.         engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0);//  checks the had of seen player
  728.         if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
  729.         {
  730.             return false;
  731.         }
  732.         else
  733.         {
  734.             new Float:flFraction;
  735.             get_tr2(0, TraceResult:TR_flFraction, flFraction);
  736.             if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  737.             {
  738.                 return true;
  739.             }
  740.             else
  741.             {
  742.                 targetOrig[0] = targetBaseOrig [0];
  743.                 targetOrig[1] = targetBaseOrig [1];
  744.                 targetOrig[2] = targetBaseOrig [2];
  745.                 engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the body of seen player
  746.                 get_tr2(0, TraceResult:TR_flFraction, flFraction);
  747.                 if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  748.                 {
  749.                     return true;
  750.                 }
  751.                 else
  752.                 {
  753.                     targetOrig[0] = targetBaseOrig [0];
  754.                     targetOrig[1] = targetBaseOrig [1];
  755.                     targetOrig[2] = targetBaseOrig [2] - 17.0;
  756.                     engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0); //  checks the legs of seen player
  757.                     get_tr2(0, TraceResult:TR_flFraction, flFraction);
  758.                     if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
  759.                     {
  760.                         return true;
  761.                     }
  762.                 }
  763.             }
  764.         }
  765.     }
  766.     return false;
  767. }

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#8

Post by Raheem » 5 years ago

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.
He who fails to plan is planning to fail

Rain1153
Senior Member
Senior Member
India
Posts: 278
Joined: 6 years ago
Contact:

#9

Post by Rain1153 » 5 years ago

like how???
LOL

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#10

Post by Raheem » 5 years ago

To change for example 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

Post Reply

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

Register

Sign in

Who is online

Users browsing this forum: No registered users and 0 guests