[sma] Janus-5 B-Mode Activation Error [help]
1 Attachment(s)
Hello there~ I got problems again.
Since I started to fix that "error", today is the third day.
Back to the problem, the source code is written that:
"If player shoot for 50 bullets, B-mode is allowed to be activated by right-clicking."
But somehow, I tested in game and it didn't work even I shot the entire ammo.
Quote:
JANUS-5 is the modified version of HK416 developed by Aegis Institute fed with 30 rounds of 5.56 NATO and equipped with Janus Transformation System that can do unlimited fire mode after 60 consecutive shots. The Janus form has greater firepower, accuracy, recoil and rate of fire.
|
From cso.wikia.com; whatever it is 50 or 60 shots, it just can't be activated although I shot the whole ammo. :grrr:
Some key variables:
- g_shots (no. of shots)
- g_mode (boolean; true-allowed, false-disallowed)
Here are some parts of the source code:
PHP Code:
#include <amxmodx> #include <engine> #include <fakemeta> #include <fun> #include <hamsandwich> #include <xs> #include <cstrike> #include <zombieplague>
#define ENG_NULLENT -1 #define EV_INT_WEAPONKEY EV_INT_impulse #define WEAPONKEY 332 #define MAX_PLAYERS 32 #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
const USE_STOPPED = 0 const OFFSET_ACTIVE_ITEM = 373 const OFFSET_WEAPONOWNER = 41 const OFFSET_LINUX = 5 const OFFSET_LINUX_WEAPONS = 4
#define WEAP_LINUX_XTRA_OFF 4 #define m_fKnown 44 #define m_flNextPrimaryAttack 46 #define m_flTimeWeaponIdle 48 #define m_iClip 51 #define m_fInReload 54 #define PLAYER_LINUX_XTRA_OFF 5 #define m_flNextAttack 83 #define RELOAD_TIME 3.2 #define wId CSW_M4A1
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new const Fire_snd[][] = {"weapons/janusmk5-1.wav","weapons/janusmk5-2.wav"} new const went[] ={"weapon_m4a1"} new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }
new janusmk5_V_MODEL[64] = "models/vov/v_janus5.mdl" new janusmk5_P_MODEL[64] = "models/vov/p_janus5.mdl" new janusmk5_W_MODEL[64] = "models/vov/w_janus5.mdl"
new cvar_dmg_janusmk5,g_itemid_janusmk5, cvar_clip_janusmk5, cvar_janusmk5_ammo new g_has_janusmk5[33] new g_MaxPlayers, g_orig_event_janusmk5, g_clip_ammo[33] new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2] new g_janusmk5_TmpClip[33] new g_shots[33]; new bool:g_mode[33]; new gmsgWeaponList;
public plugin_init() { register_plugin("Janus-5", "1.0", "Akhremchik.I") register_event("CurWeapon","CurrentWeapon","be","1=1") RegisterHam(Ham_Item_AddToPlayer, went, "fw_janusmk5_AddToPlayer") RegisterHam(Ham_Item_Deploy, went, "fw_Item_Deploy_Post", 1) RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janusmk5_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, went, "fw_janusmk5_PrimaryAttack_Post", 1) RegisterHam(Ham_Weapon_SecondaryAttack, went, "fw_janusmk5_SecondaryAttack"); RegisterHam(Ham_Item_PostFrame, went, "janusmk5__ItemPostFrame"); RegisterHam(Ham_Weapon_Reload, went, "janusmk5__Reload"); RegisterHam(Ham_Weapon_Reload, went, "janusmk5__Reload_Post", 1); RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage") register_forward(FM_SetModel, "fw_SetModel") register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1) register_forward(FM_PlaybackEvent, "fwPlaybackEvent") cvar_dmg_janusmk5 = register_cvar("weapon_janusmk5_dmg", "28") cvar_clip_janusmk5 = register_cvar("weapon_janusmk5_clip", "30") cvar_janusmk5_ammo = register_cvar("weapon_janusmk5_ammo", "240") g_itemid_janusmk5 = zp_register_extra_item("Janus-5", 15, ZP_TEAM_HUMAN) register_clcmd("give weapon_janusmk5", "give_janusmk5"); g_MaxPlayers = get_maxplayers() gmsgWeaponList = get_user_msgid("WeaponList"); } public plugin_precache() { precache_model(janusmk5_V_MODEL) precache_model(janusmk5_P_MODEL) precache_model(janusmk5_W_MODEL) precache_sound(Fire_snd[0]) precache_sound(Fire_snd[1]) m_iBlood[0] = precache_model("sprites/blood.spr") m_iBlood[1] = precache_model("sprites/bloodspray.spr") register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1) register_clcmd("weapon_janusmk5", "Hook_Select");
} : : public fw_janusmk5_AddToPlayer(janusmk5, id) { if(!is_valid_ent(janusmk5) || !is_user_connected(id)) return HAM_IGNORED; if(entity_get_int(janusmk5, EV_INT_WEAPONKEY) == WEAPONKEY) { g_has_janusmk5[id] = true entity_set_int(janusmk5, EV_INT_WEAPONKEY, 0) remove_task(id+121); g_shots[id] = 0; g_mode[id] = false; Sprite(id, 1); return HAM_HANDLED; } else Sprite(id, 0); return HAM_IGNORED; } : : public fw_Item_Deploy_Post(weapon_ent) { static owner owner = fm_cs_get_weapon_ent_owner(weapon_ent) static weaponid weaponid = cs_get_weapon_id(weapon_ent) replace_weapon_models(owner, weaponid) set_pdata_float(owner, 83, 1.0); new id = owner; if( g_mode[id] ) { UTIL_PlayWeaponAnimation(id, 7); return; } if( g_shots[id]>=50){ UTIL_PlayWeaponAnimation(id, 14); return; } if( !g_mode[id] && g_shots[id]<50 ) { UTIL_PlayWeaponAnimation(id, 2); return; } } : : public fw_janusmk5_PrimaryAttack_Post(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) new szClip, szAmmo get_user_weapon(Player, szClip, szAmmo) if(Player > 0 && Player < 33) { if(g_has_janusmk5[Player]) { if(szClip > 0)emit_sound(Player, CHAN_WEAPON, Fire_snd[g_mode[Player]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } if(g_has_janusmk5[Player]) { new Float:push[3] pev(Player,pev_punchangle,push) xs_vec_sub(push,cl_pushangle[Player],push) xs_vec_mul_scalar(push,1.3,push) xs_vec_add(push,cl_pushangle[Player],push) set_pev(Player,pev_punchangle,push) if (!g_clip_ammo[Player]) return HAM_IGNORED; if(g_mode[Player]) cs_set_weapon_ammo(Weapon,szClip++); set_pdata_float(Player, 83, g_mode[Player]?0.06:0.1); new id = Player; make_blood_and_bulletholes(Player) if( g_mode[id] ) { UTIL_PlayWeaponAnimation(id, random_num(8,10)); return HAM_IGNORED; } if( g_shots[id]>=50){ UTIL_PlayWeaponAnimation(id, 4); return HAM_IGNORED; } if( !g_mode[id] && g_shots[id]<50) { UTIL_PlayWeaponAnimation(id, 3); return HAM_IGNORED; } } } return HAM_IGNORED; } public fw_TakeDamage(victim, inflictor, attacker, Float:damage) { if (victim != attacker && is_user_connected(attacker)) { if(get_user_weapon(attacker) == wId) { if(g_has_janusmk5[attacker]) { if(!g_mode[attacker])g_shots[attacker]++; new body, target; get_user_aiming(attacker, target, body); new Float:a = get_pcvar_float(cvar_dmg_janusmk5); if( target == inflictor ) { if(body == HIT_HEAD) a*=100.0; if(body == HIT_CHEST) a*=1.2; if(body == HIT_LEFTARM || body == HIT_RIGHTARM) a*=0.8; if(body == HIT_LEFTLEG || body == HIT_RIGHTLEG) a*=0.7; if(body == HIT_STOMACH) a*= 1.0; }
SetHamParamFloat(4, a*(g_mode[attacker]?2.0:1.0)) } } } } : : public janusmk5__ItemPostFrame(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED; if (!g_has_janusmk5[id]) return HAM_IGNORED; new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF) new iBpAmmo = cs_get_user_bpammo(id, wId); new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF) new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF) if( fInReload && flNextAttack <= 0.0 ) { new j = min(get_pcvar_num(cvar_clip_janusmk5) - iClip, iBpAmmo) set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF) cs_set_user_bpammo(id, wId, iBpAmmo-j); set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF) fInReload = 0 } if(g_shots[id] >= 50) { if( !task_exists(id+122) ) { set_task(20.0, "nullshots", id+122); } } if(g_shots[id] >= 50 && get_user_button(id) & IN_ATTACK2 && flNextAttack <= 0.0) { UTIL_PlayWeaponAnimation(id ,5) g_mode[id] = true; set_pdata_float(id, 83, 2.0); set_task(22.0, "modestop", id+121); g_shots[id] = 0; return HAM_IGNORED; } if( flNextAttack<=0.0 ) { if( g_mode[id] && pev(id, pev_weaponanim) != 6) { UTIL_PlayWeaponAnimation(id, 6); return HAM_IGNORED; } else if( g_shots[id]>=50 && pev(id, pev_weaponanim) != 12){ UTIL_PlayWeaponAnimation(id, 12); return HAM_IGNORED; } else if( !g_mode[id] && g_shots[id]<50 && pev(id, pev_weaponanim) != 0) { UTIL_PlayWeaponAnimation(id, 0); return HAM_IGNORED; } } return HAM_IGNORED; }
public modestop(id) { id-=121; g_mode[id] = false; g_shots[id] = 0; }
public nullshots(id) { id-=122; g_shots[id] = 0; } : : public janusmk5__Reload_Post(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED; if (!g_has_janusmk5[id]) return HAM_IGNORED; if (g_janusmk5_TmpClip[id] == -1) return HAM_IGNORED; set_pdata_int(weapon_entity, m_iClip, g_janusmk5_TmpClip[id], WEAP_LINUX_XTRA_OFF) set_pdata_float(weapon_entity, m_flTimeWeaponIdle, RELOAD_TIME, WEAP_LINUX_XTRA_OFF) set_pdata_float(id, m_flNextAttack, RELOAD_TIME, PLAYER_LINUX_XTRA_OFF) set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF) if( g_mode[id] ) { g_mode[id] = false; UTIL_PlayWeaponAnimation(id, 1); remove_task(id+121); return HAM_IGNORED; } else if( g_shots[id]>=50 && pev(id, pev_weaponanim) != 12){ UTIL_PlayWeaponAnimation(id, 13); return HAM_IGNORED; } else if( !g_mode[id] && g_shots[id]<50 && pev(id, pev_weaponanim) != 0) { UTIL_PlayWeaponAnimation(id, 1); return HAM_IGNORED; } return HAM_IGNORED; }
Original files you may want:
|