| wicked95 |
12-14-2015 16:47 |
When thrown molotov server crash. No error.
1 Attachment(s)
I made a buy menu for my server so it can look more like in CS GO but the molotov/napalm grenade crashes the server somehow. No error shows up so i don't know from where the error is. Plugin is not exactly finished so don't look at it much :s. I'll resume it after i fix the molotov/napalm issue.
PHP Code:
#include <amxmodx> #include <cstrike> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <fun>
#define m_rpgPlayerItems_Slot0 367 #define m_pNext 42 #define m_iId 43
#define SLOT_PRIMARY 1 #define SLOT_SECONDARY 2
#define TASK_CHECK 3243242 #define TASK_DECOY 32432423 #define TASK_DESTROY_DECOY 23423423
#define MOLOTOV_TASKID_SOUND 34534 #define MOLOTOV_TASKID_STOP 325235 #define MOLOTOV_TASKID_DAMAGE 346343
enum { HANDGUN, SHOTGUN, SUBMACHINEGUN, RIFLE, MACHINEGUN, GRENADES, EQUIPMENT, MAX_MAIN_ITEMS }
new const g_MainMenuItemNames[MAX_MAIN_ITEMS][32] = { "Handgun", "Shotgun", "Sub-Machine Gun", "Rifle", "Machine Gun^n", "Grenades", "Equipment" }
enum { I_HE, I_FLASH, I_SMOKE, I_NAPALM, I_DECOY, I_MAX_NADES }
new const g_SubMenuItemNamesT[MAX_MAIN_ITEMS][9][32] = { { "9×19mm Sidearm", "KM .45 Tactical", "228 Compact", "Night Hawk .50c", ".40 Dual Elites", "", "", "", "" }, { "Leone 12 Gauge Super", "Leone YG1265 Auto Shotgun", "", "", "", "", "", "", "" }, { "Ingram Mac-10", "KM Sub-Machine Gun", "KM UMP45", "ES C90", "", "", "", "", "" }, { "IDF Defender", "CV-47", "Schmidt Scout", "Krieg 552", "Magnum Sniper Rifle", "D3/AU-1", "", "", "" }, { "M249", "", "", "", "", "", "", "", "" }, { "He Grenade", "Flashbang", "Smoke Grenade", "Molotov", "Decoy", "", "", "", "" }, { "Kevlar Vest", "Kevlar Vest + Helmet", "NightVision Goggles", "", "", "", "", "", "" } }; new const g_SubMenuItemCSWT[MAX_MAIN_ITEMS][9] = { { CSW_GLOCK18, CSW_USP, CSW_P228, CSW_DEAGLE, CSW_ELITE, 0, 0, 0, 0 }, { CSW_M3, CSW_XM1014, 0, 0, 0, 0, 0, 0, 0 }, { CSW_MAC10, CSW_MP5NAVY, CSW_UMP45, CSW_P90, 0, 0, 0, 0, 0 }, { CSW_GALIL, CSW_AK47, CSW_SCOUT, CSW_SG552, CSW_AWP, CSW_G3SG1, 0, 0, 0 }, { CSW_M249, 0, 0, 0, 0, 0, 0, 0, 0 }, { CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE, 0, 0, 0, 0, 0, 0 }, { CSW_VEST, CSW_VESTHELM, 0, 0, 0, 0, 0, 0, 0 } }; new const g_SubMenuItemPriceT[MAX_MAIN_ITEMS][9] = { { 400, 500, 600, 650, 800, 0, 0, 0, 0 }, { 1700, 3000, 0, 0, 0, 0, 0, 0, 0 }, { 1400, 1500, 1700, 2350, 0, 0, 0, 0, 0 }, { 2000, 2500, 2750, 3500, 4750, 5000, 0, 0, 0 }, { 5750, 0, 0, 0, 0, 0, 0, 0, 0 }, { 300, 200, 300, 1, 1, 0, 0, 0, 0 }, { 650, 1000, 1250, 0, 0, 0, 0, 0, 0 } };
new const g_SubMenuItemNamesCT[MAX_MAIN_ITEMS][9][32] = { { "9×19mm Sidearm", "KM .45 Tactical", "228 Compact", "Night Hawk .50c", "ES Five-seven", "", "", "", "" }, { "Leone 12 Gauge Super", "Leone YG1265 Auto Shotgun", "", "", "", "", "", "", "" }, { "Schmidt Machine Pistol", "KM Sub-Machine Gun", "KM UMP45", "ES C90", "", "", "", "", "" }, { "Clarion 5.56", "Schmidt Scout", "Maverick M4A1 Carbine", "Bullpup", "Krieg 550 Commando", "Magnum Sniper Rifle", "", "", "" }, { "M249", "", "", "", "", "", "", "", "" }, { "He Grenade", "Flashbang", "Smoke Grenade", "Napalm", "Decoy", "", "", "", "" }, { "Kevlar Vest", "Kevlar Vest + Helmet", "NightVision Goggles", "Defuse Kit", "Tactical Shield", "", "", "", "" } }; new const g_SubMenuItemCSWCT[MAX_MAIN_ITEMS][9] = { { CSW_GLOCK18, CSW_USP, CSW_P228, CSW_DEAGLE, CSW_FIVESEVEN, 0, 0, 0, 0 }, { CSW_M3, CSW_XM1014, 0, 0, 0, 0, 0, 0, 0 }, { CSW_TMP, CSW_MP5NAVY, CSW_UMP45, CSW_P90, 0, 0, 0, 0, 0 }, { CSW_FAMAS, CSW_SCOUT, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_AWP, 0, 0, 0 }, { CSW_M249, 0, 0, 0, 0, 0, 0, 0, 0 }, { CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE, 0, 0, 0, 0, 0, 0 }, { CSW_VEST, CSW_VESTHELM, 0, 0, 0, 0, 0, 0, 0 } }; new const g_SubMenuItemPriceCT[MAX_MAIN_ITEMS][9] = { { 400, 500, 600, 650, 750, 0, 0, 0, 0 }, { 1700, 3000, 0, 0, 0, 0, 0, 0, 0 }, { 1250, 1500, 1700, 2350, 0, 0, 0, 0, 0 }, { 2250, 2750, 2100, 3500, 4200, 4750, 0, 0, 0 }, { 5750, 0, 0, 0, 0, 0, 0, 0, 0 }, { 300, 200, 300, 1, 1, 0, 0, 0, 0 }, { 650, 1000, 1250, 200, 2200, 0, 0, 0, 0 } };
new const g_iWeaponSlot[] = { 0, // none 2, // P228 1, // SHIELD 1, // SCOUT 4, // HEGRENADE 1, // XM1014 5, // C4 1, // MAC10 1, // AUG 4, // SMOKEGRENADE 2, // ELITE 2, // FIVESEVEN 1, // UMP45 1, // SG550 1, // GALIL 1, // FAMAS 2, // USP 2, // GLOCK18 1, // AWP 1, // MP5NAVY 1, // M249 1, // M3 1, // M4A1 1, // TMP 1, // G3SG1 4, // FLASHBANG 2, // DEAGLE 1, // SG552 1, // AK47 3, // KNIFE (not used) 1, // P90 0, // Kevlar 0, // Kevlar + Helm 0 // NVG }
new const szWeaponSounds[][32] = { "weapons/ak47-1.wav", "weapons/aug-1.wav", "weapons/awp1.wav", "weapons/deagle-1.wav", "weapons/famas-1.wav", "weapons/g3sg1-1.wav", "weapons/galil-1.wav", "weapons/glock18-2.wav" }
new g_WeaponBPAmmo[] = {0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100};
new const sz_vNormalHE[] = "models/v_hegrenade.mdl"; new const sz_pNormalHE[] = "models/p_hegrenade.mdl"; new const sz_vNormalSmoke[] = "models/v_smokegrenade.mdl"; new const sz_pNormalSmoke[] = "models/p_smokegrenade.mdl"; new const sz_vNormalShieldSmoke[] = "models/shield/v_smokegrenade.mdl"; new const sz_pNormalShieldSmoke[] = "models/shield/p_smokegrenade.mdl";
new const sz_pMolotov[] = "models/molotov/p_molotov.mdl"; new const sz_vMolotov[] = "models/molotov/v_molotov.mdl"; new const sz_wMolotov[] = "models/molotov/w_molotov.mdl"; new const sz_wBrokeMolotov[] = "models/molotov/w_broke_molotov.mdl";
new const sz_wNapalm[] = "models/napalm/w_napalm.mdl"; new const sz_vNapalm[] = "models/napalm/v_napalm.mdl";
new const sz_pDecoy[] = "models/decoy/p_decoy.mdl"; new const sz_vDecoy[] = "models/decoy/v_decoy.mdl"; new const sz_wDecoy[] = "models/decoy/w_decoy.mdl"; new const sz_vShieldDecoy[] = "models/decoy/v_shield_decoy.mdl"; new const sz_pShieldDecoy[] = "models/decoy/p_shield_decoy.mdl";
new const szFireSound[] = "molotov/molotov_fire.wav";
new const g_MainMenu[] = "Main Menu" new const g_SecondMenu[] = "Second Menu" new g_msgBuyClose, gmsgDeathMsg, gmsgScoreInfo, g_iMaxPlayers; new i_menu_type[33], g_iAutobuy[33][2][64], bool:bHasNade[33][I_MAX_NADES], bool:bGivingNapalm[33], bool:bGivingDecoy[33], bool:bSwitchNapalm[33]; new bool:bSwitchDecoy[33], bool:bBoughtNapalm[33], bool:bBoughtDecoy[33]; new iMenuIDs[2], Float:fNewRoundTime, last_Molotov_ent, g_g, g_SmokeSpr[2], g_FireSpr; public plugin_init() { register_plugin("New Buy Menu", "1.0", "Wicked-");
register_event("HLTV", "round_new", "a", "1=0", "2=0"); register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");
register_forward(FM_EmitSound, "fw_EmitSound"); register_forward(FM_CmdStart, "fw_CmdStart");
RegisterHam(Ham_Spawn, "player", "player_spawn", 1); RegisterHam(Ham_Killed, "player", "player_killed", 1); RegisterHam(Ham_AddPlayerItem, "player", "player_additem", 0);
gmsgScoreInfo = get_user_msgid("ScoreInfo"); gmsgDeathMsg = get_user_msgid("DeathMsg"); g_msgBuyClose = get_user_msgid("BuyClose");
register_clcmd("client_buy_open", "clcmd_client_buy_open");
register_clcmd("buy", "player_cmd_buy_main"); register_clcmd("buyammo1", "player_fillAmmo"); register_clcmd("buyammo2", "player_fillAmmo"); register_clcmd("primammo", "player_fillAmmo"); register_clcmd("secammo", "player_fillAmmo");
register_clcmd("autobuy", "player_cmd_autobuy"); register_clcmd("cl_autobuy", "player_cmd_autobuy"); register_clcmd("cl_setautobuy", "player_cmd_setAutobuy");
register_clcmd("rebuy", "player_cmd_rebuy"); register_clcmd("cl_rebuy", "player_cmd_rebuy"); register_clcmd("cl_setrebuy", "player_cmd_setRebuy");
register_menucmd(iMenuIDs[0] = register_menuid(g_MainMenu), 1023, "MainMenuHandler"); register_menucmd(iMenuIDs[1] = register_menuid(g_SecondMenu), 1023, "SecondMenuHandler");
g_iMaxPlayers = get_maxplayers(); return PLUGIN_HANDLED; }
public plugin_precache() { g_FireSpr = precache_model("sprites/flame.spr");
g_SmokeSpr[0] = precache_model("sprites/black_smoke3.spr"); g_SmokeSpr[1] = precache_model("sprites/steam1.spr");
precache_sound(szFireSound);
precache_model(sz_pMolotov); precache_model(sz_vMolotov); precache_model(sz_wMolotov); precache_model(sz_wBrokeMolotov); precache_model(sz_wNapalm); precache_model(sz_vNapalm); precache_model(sz_pDecoy); precache_model(sz_vDecoy); precache_model(sz_wDecoy); precache_model(sz_pShieldDecoy); precache_model(sz_vShieldDecoy); }
public client_putinserver(id) { for(new i=0;i<I_MAX_NADES;i++) bHasNade[id][i] = false; bGivingNapalm[id] = false; bGivingDecoy[id] = false; }
public round_new() { fNewRoundTime = get_gametime(); new ent; while((ent = engfunc(EngFunc_FindEntityByString, ent, "model", sz_wMolotov))) { if(pev_valid(ent)) engfunc(EngFunc_RemoveEntity, ent); } while((ent = engfunc(EngFunc_FindEntityByString, ent, "model", sz_wDecoy))) { if(pev_valid(ent)) engfunc(EngFunc_RemoveEntity, ent); } }
public fw_CmdStart(id) { static i; if(i++ < 10) return FMRES_IGNORED; i = 0; if(!is_user_alive(id)) return FMRES_IGNORED; if(pev(id, pev_button) & IN_ATTACK2) { static iWeaponID; iWeaponID = get_user_weapon(id); if(iWeaponID == CSW_HEGRENADE) { if(bHasNade[id][I_NAPALM] && !bHasNade[id][I_HE]) { bSwitchNapalm[id] = true; return FMRES_IGNORED; } if(!bHasNade[id][I_NAPALM] && bHasNade[id][I_HE]) { bSwitchNapalm[id] = false; return FMRES_IGNORED; } if(bSwitchNapalm[id]) { set_pev(id, pev_viewmodel2, sz_vNormalHE); set_pev(id, pev_weaponmodel2, sz_pNormalHE); bSwitchNapalm[id] = false; client_print(id, print_center, "Switched to GRENADE mode"); } else { if(cs_get_user_team(id) == CS_TEAM_T) { set_pev(id, pev_viewmodel2, sz_vMolotov); set_pev(id, pev_weaponmodel2, sz_pMolotov); set_pev(id, pev_weaponanim, 9); } else set_pev(id, pev_viewmodel2, sz_vNapalm); bSwitchNapalm[id] = true; client_print(id, print_center, "Switched to %s mode", cs_get_user_team(id) == CS_TEAM_T ? "MOLOTOV" : "NAPALM"); } } else if(iWeaponID == CSW_SMOKEGRENADE && bHasNade[id][I_DECOY]) { if(bHasNade[id][I_DECOY] && !bHasNade[id][I_SMOKE]) { bSwitchDecoy[id] = true; return FMRES_IGNORED; } if(!bHasNade[id][I_DECOY] && bHasNade[id][I_SMOKE]) { bSwitchDecoy[id] = false; return FMRES_IGNORED; } if(bSwitchDecoy[id]) { if(cs_get_user_shield(id)) { set_pev(id, pev_viewmodel2, sz_vShieldDecoy); set_pev(id, pev_weaponmodel2, sz_pShieldDecoy); } else { set_pev(id, pev_viewmodel2, sz_vDecoy); set_pev(id, pev_weaponmodel2, sz_pDecoy); } bSwitchDecoy[id] = true; client_print(id, print_center, "Switched to DECOY mode"); } else { if(cs_get_user_shield(id)) { set_pev(id, pev_viewmodel2, sz_vNormalShieldSmoke); set_pev(id, pev_weaponmodel2, sz_pNormalShieldSmoke); } else { set_pev(id, pev_viewmodel2, sz_vNormalSmoke); set_pev(id, pev_weaponmodel2, sz_pNormalSmoke); } bSwitchDecoy[id] = false; client_print(id, print_center, "Switched to SMOKE mode"); } } } return FMRES_IGNORED; }
public Event_CurWeapon(id) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; new iWeaponID = get_user_weapon(id, iWeaponID, iWeaponID); if(!cs_get_user_shield(id) && iWeaponID == CSW_HEGRENADE && bHasNade[id][I_NAPALM]) { if(!bHasNade[id][I_HE]) bSwitchNapalm[id] = true; if(bSwitchNapalm[id]) { if(cs_get_user_team(id) == CS_TEAM_T) { set_pev(id, pev_viewmodel2, sz_vMolotov); set_pev(id, pev_weaponmodel2, sz_pMolotov); } else set_pev(id, pev_viewmodel2, sz_vNapalm); } } else if(iWeaponID == CSW_SMOKEGRENADE && bHasNade[id][I_DECOY]) { if(!bHasNade[id][I_SMOKE]) bSwitchDecoy[id] = true; if(bSwitchDecoy[id]) { if(cs_get_user_shield(id)) { set_pev(id, pev_viewmodel2, sz_vShieldDecoy); set_pev(id, pev_weaponmodel2, sz_pShieldDecoy); } else { set_pev(id, pev_viewmodel2, sz_vDecoy); set_pev(id, pev_weaponmodel2, sz_pDecoy); } } } return PLUGIN_CONTINUE; }
public grenade_throw(id, ent, wid) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; new info[2]; if(wid == CSW_HEGRENADE) { if(bHasNade[id][I_NAPALM] && bSwitchNapalm[id]) { engfunc(EngFunc_SetModel, ent, cs_get_user_team(id) == CS_TEAM_T ? sz_wMolotov : sz_wNapalm); bSwitchNapalm[id] = false; bHasNade[id][I_NAPALM] = false; set_pev(ent, pev_nextthink, 99999.0); if(bHasNade[id][I_HE]) { info[0] = 1; info[1] = id; set_task(0.1, "taskGiveNade", _, info); } } else { bHasNade[id][I_HE] = false; if(bHasNade[id][I_NAPALM]) { info[0] = 1; info[1] = id; bGivingNapalm[id] = true; set_task(0.1, "taskGiveNade", _, info); } } } else if(wid == CSW_FLASHBANG) { if(!user_has_weapon(id, CSW_FLASHBANG)) bHasNade[id][I_FLASH] = false; } else if(wid == CSW_SMOKEGRENADE) { if(bHasNade[id][I_DECOY] && bSwitchDecoy[id]) { engfunc(EngFunc_SetModel, ent, sz_wDecoy); bSwitchDecoy[id] = false; bHasNade[id][I_DECOY] = false; set_pev(ent, pev_nextthink, 99999.0); if(bHasNade[id][I_SMOKE]) { info[0] = 0; info[1] = id; set_task(0.1, "taskGiveNade", _, info); } } else { bHasNade[id][I_SMOKE] = false; if(bHasNade[id][I_DECOY]) { info[0] = 0; info[1] = id; bGivingDecoy[id] = true; set_task(0.1, "taskGiveNade", _, info); } } } return PLUGIN_CONTINUE; }
public taskGiveNade(info[]) { if(is_user_alive(info[1])) { if(info[0]) give_item(info[1], "weapon_hegrenade"); else give_item(info[1], "weapon_smokegrenade"); } }
public fw_EmitSound(ent, channel, sample[]) {
static szModel[32]; if(equal(sample[8], "he_bounce", 9)) { new i; pev(ent, pev_model, szModel, charsmax(szModel)); if(equal(szModel[9], "lotov/w_molotov.mdl")) i = 1; else if(equal(szModel[9], "palm/w_napalm.mdl")) i = 2; if(i) { if(last_Molotov_ent != ent) { new Float:fFriction, Float:fVelocity[3]; pev(ent, pev_friction, fFriction); pev(ent, pev_velocity, fVelocity); fFriction *= 1.3; set_pev(ent, pev_friction, fFriction); last_Molotov_ent = ent; grenade_explode(ent, i); return FMRES_SUPERCEDE; } } } else if(equal(sample[8], "grenade_hit", 11)) { pev(ent, pev_model, szModel, charsmax(szModel)); if(equal(szModel[9], "coy/w_decoy.mdl")) { activate_decoy(ent); return FMRES_SUPERCEDE; } } return FMRES_IGNORED; }
public activate_decoy(ent) { set_pev(ent, pev_euser1, random(sizeof(szWeaponSounds))); set_task(1.0, "decoy_sound", ent+TASK_DECOY); set_task(random_float(100.0, 200.0), "destroy_decoy", ent+TASK_DESTROY_DECOY); }
public destroy_decoy(ent) { ent -= TASK_DESTROY_DECOY; if(pev_valid(ent)) engfunc(EngFunc_RemoveEntity, ent); }
public decoy_sound(ent) { ent -= TASK_DECOY if(pev_valid(ent)) { emit_sound(ent, CHAN_AUTO, szWeaponSounds[pev(ent, pev_euser1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); set_task(random_float(0.5, 2.0), "decoy_sound", ent+TASK_DECOY); } }
public grenade_explode(ent, i_num) { new param[6], iOrigin[3]; new Float:fOrigin[3]; new owner = pev(ent, pev_owner); new ent2 = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
pev(ent, pev_origin, fOrigin);
param[0] = ent; param[1] = ent2; param[2] = owner; param[3] = iOrigin[0] = floatround(fOrigin[0]); param[4] = iOrigin[1] = floatround(fOrigin[1]); param[5] = iOrigin[2] = floatround(fOrigin[2]);
emit_sound(ent, CHAN_AUTO, "molotov/molotov_fire.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
if(i_num == 1) engfunc(EngFunc_SetModel, ent, sz_wBrokeMolotov); else engfunc(EngFunc_RemoveEntity, ent);
random_fire(iOrigin, ent2); radius_damage(owner, fOrigin, 50.0, 150.0, DMG_BLAST);
new Float:FireTime = 10.0;
set_task(0.2, "fire_damage", MOLOTOV_TASKID_DAMAGE + ent, param, 6, "a", floatround(FireTime / 0.2, floatround_floor)); set_task(1.0, "fire_sound", MOLOTOV_TASKID_SOUND + ent, param, 6, "a", floatround(FireTime) - 1); set_task(FireTime, "fire_stop", MOLOTOV_TASKID_STOP + ent, param, 6);
return PLUGIN_CONTINUE; }
public fire_sound(param[]) emit_sound(param[1], CHAN_AUTO, szFireSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
public fire_stop(param[]) { g_g = 0; if(pev_valid(param[0])) engfunc(EngFunc_RemoveEntity, param[0]); if(pev_valid(param[1])) engfunc(EngFunc_RemoveEntity, param[1]); if((last_Molotov_ent = (param[0]))) last_Molotov_ent = 0; }
public fire_damage(param[]) { new iOrigin[3], Float:fOrigin[3]; iOrigin[0] = param[3]; iOrigin[1] = param[4]; iOrigin[2] = param[5];
random_fire(iOrigin, param[1]);
IVecFVec(iOrigin, fOrigin); radius_damage(param[2], fOrigin, 3.0, 150.0, DMG_BURN, 0); }
stock radius_damage(attacker, Float:origin[3], Float:damage, Float:range, dmgtype, calc = 1) { new Float:pOrigin[3], Float:dist, Float:tmpdmg, i, CsTeams:iTeam = cs_get_user_team(attacker);
while(i++ < g_iMaxPlayers) { if(!is_user_alive(i)) continue; if(iTeam == cs_get_user_team(i)) continue; pev(i, pev_origin, pOrigin); dist = get_distance_f(origin, pOrigin); if(dist > range) continue; if(calc) tmpdmg = damage - (damage / range) * dist; else tmpdmg = damage;
if(pev(i, pev_health) < tmpdmg) kill(attacker, i); else fm_fakedamage(i, "molotov", tmpdmg, dmgtype); set_task(0.1, "burning_flame", i); }
while((i = engfunc(EngFunc_FindEntityInSphere, i, origin, range))) { if(pev(i, pev_takedamage)) { if(calc) { pev(i, pev_origin, pOrigin); tmpdmg = damage - (damage / range) * get_distance_f(origin, pOrigin); } else tmpdmg = damage; fm_fakedamage(i, "molotov", tmpdmg, dmgtype); } } }
public burning_flame(burn_id) { if(!is_user_alive(burn_id)) return; static Float:originF[3], flags; pev(burn_id, pev_origin, originF); flags = pev(burn_id, pev_flags);
if((flags & FL_INWATER)) { // Smoke sprite engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_SMOKE); // TE id engfunc(EngFunc_WriteCoord, originF[0]); // x engfunc(EngFunc_WriteCoord, originF[1]); // y engfunc(EngFunc_WriteCoord, originF[2]-50.0); // z write_short(g_SmokeSpr[random_num(0, 1)]); // sprite write_byte(random_num(10, 30)); // scale write_byte(random_num(10, 20)); // framerate message_end(); return; }
if (0.5 > 0.0 && (flags & FL_ONGROUND)) { static Float:velocity[3]; pev(burn_id, pev_velocity, velocity); xs_vec_mul_scalar(velocity, 0.5, velocity); set_pev(burn_id, pev_velocity, velocity); }
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0); write_byte(TE_SPRITE); // TE id engfunc(EngFunc_WriteCoord, originF[0]+random_float(-5.0, 5.0)); // x engfunc(EngFunc_WriteCoord, originF[1]+random_float(-5.0, 5.0)); // y engfunc(EngFunc_WriteCoord, originF[2]+random_float(-10.0, 10.0)); // z write_short(g_FireSpr); // sprite write_byte(random_num(5, 15)); // scale write_byte(100); // brightness message_end(); }
stock random_fire(Origin[3], ent) { new iOrigin[3];
for(new i=1;i<=5;i++) { g_g = 1;
iOrigin[0] = Origin[0] + random_num(-150, 150); iOrigin[1] = Origin[1] + random_num(-150, 150); iOrigin[2] = Origin[2]; iOrigin[2] = ground_z(iOrigin, ent);
while(get_distance(iOrigin, Origin) > 150.0) { g_g++; iOrigin[0] = Origin[0] + random_num(-150, 150); iOrigin[1] = Origin[1] + random_num(-150, 150); iOrigin[2] = Origin[2];
if(g_g >= 7.0) iOrigin[2] = ground_z(iOrigin, ent, 1); else iOrigin[2] = ground_z(iOrigin, ent); }
new rand = random_num(5, 15); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_SPRITE); write_coord(iOrigin[0]); write_coord(iOrigin[1]); write_coord(iOrigin[2] + rand * 5); write_short(g_FireSpr); write_byte(rand); write_byte(100); message_end();
if(!(i % 4)) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_SMOKE); write_coord(iOrigin[0]); write_coord(iOrigin[1]); write_coord(iOrigin[2] + 120); write_short(g_SmokeSpr[random_num(0, 1)]); write_byte(random_num(10, 30)); write_byte(random_num(10, 20)); message_end(); } } }
stock kill(killer, victim) { new kTeam = get_user_team(killer); new vTeam = get_user_team(victim); user_silentkill(victim);
message_begin(MSG_ALL, gmsgScoreInfo); write_byte(killer); write_short(get_user_frags(killer) + ((kTeam == vTeam) ? -1 : 1)); write_short(get_user_deaths(killer)); write_short(0); write_short(kTeam); message_end();
message_begin(MSG_ALL, gmsgScoreInfo); write_byte(victim); write_short(get_user_frags(victim) + 1); write_short(get_user_deaths(victim)); write_short(0); write_short(vTeam); message_end();
message_begin(MSG_ALL, gmsgDeathMsg, {0,0,0}, 0); write_byte(killer); write_byte(victim); write_byte(0); write_string("molotov"); message_end();
set_user_frags(killer, get_user_frags(killer) + 1);
if(kTeam != vTeam) cs_set_user_money(killer, cs_get_user_money(killer) + 300); else cs_set_user_money(killer, cs_get_user_money(killer) - 300); }
stock ground_z(iOrigin[3], ent, skip = 0, iRecursion = 0) { iOrigin[2] += random_num(5, 80);
if(!pev_valid(ent)) return iOrigin[2];
new Float:fOrigin[3]; IVecFVec(iOrigin, fOrigin); set_pev(ent, pev_origin, fOrigin); engfunc(EngFunc_DropToFloor, ent);
if(!skip && !engfunc(EngFunc_EntIsOnFloor, ent)) { if(iRecursion >= 7.0) skip = 1; return ground_z(iOrigin, ent, skip, ++iRecursion); } pev(ent, pev_origin, fOrigin); return floatround(fOrigin[2]); }
public player_spawn(id) { if(is_user_alive(id)) { bBoughtNapalm[id] = false; bBoughtDecoy[id] = false; new Array:aWeaponIDs = ArrayCreate(1), iCount = GetWeaponsFromSlot(id, SLOT_PRIMARY, _, aWeaponIDs), iWeaponID; for(new i=0;i<iCount;i++) { iWeaponID = ArrayGetCell(aWeaponIDs, i); cs_set_user_bpammo(id, iWeaponID, g_WeaponBPAmmo[iWeaponID]); } ArrayDestroy(aWeaponIDs); aWeaponIDs = ArrayCreate(1); iCount = GetWeaponsFromSlot(id, SLOT_SECONDARY, _, aWeaponIDs); for(new i=0;i<iCount;i++) { iWeaponID = ArrayGetCell(aWeaponIDs, i); cs_set_user_bpammo(id, iWeaponID, g_WeaponBPAmmo[iWeaponID]); } ArrayDestroy(aWeaponIDs); } }
public player_killed(victim, killer, shouldgib) { if(killer && killer <= g_iMaxPlayers) { for(new i=0;i<I_MAX_NADES;i++) bHasNade[victim][i] = false; } }
public player_additem(id, iEnt) { static iWeaponID; iWeaponID = get_pdata_int(iEnt, m_iId, 4); if(iWeaponID == CSW_HEGRENADE) { if(bGivingNapalm[id]) bGivingNapalm[id] = false; else bHasNade[id][I_HE] = true; } else if(iWeaponID == CSW_FLASHBANG) bHasNade[id][I_FLASH] = true; else if(iWeaponID == CSW_SMOKEGRENADE) { if(bGivingDecoy[id]) bGivingDecoy[id] = false; else bHasNade[id][I_SMOKE] = true; } }
public player_fillAmmo(id) return PLUGIN_HANDLED;
public player_cmd_setRebuy(id) { // }
public player_cmd_rebuy(id) { // }
public player_cmd_setAutobuy(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; new iIndex, szWeapon[24], szArgs[1024], bool:bFound, CsTeams:iTeam; iTeam = cs_get_user_team(id); read_args(szArgs, charsmax(szArgs)); remove_quotes(szArgs); trim(szArgs); while(contain(szArgs, " ") != -1) { strbreak(szArgs, szWeapon, charsmax(szWeapon), szArgs, charsmax(szArgs)); bFound = false; if(iTeam == CS_TEAM_T) { for(new i=0;i<sizeof(g_SubMenuItemNamesT);i++) { if(!bFound) { for(new a=0;a<9;a++) { if(!bFound && equali(g_SubMenuItemNamesT[i][a], szWeapon)) { bFound = true; g_iAutobuy[id][0][iIndex++] = i; g_iAutobuy[id][1][iIndex++] = a; } } } } } else { for(new i=0;i<MAX_MAIN_ITEMS;i++) { if(!bFound) { for(new a=0;a<9;a++) { if(!bFound && equali(g_SubMenuItemNamesCT[i][a], szWeapon)) { bFound = true; g_iAutobuy[id][0][iIndex++] = i; g_iAutobuy[id][1][iIndex++] = a; } } } } } } g_iAutobuy[id][0][iIndex++] = -1; player_cmd_autobuy(id); return PLUGIN_HANDLED; }
public player_cmd_autobuy(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(!cs_get_user_buyzone(id)) { client_print(id, print_center, "You have left the buy zone."); return PLUGIN_HANDLED; } new iMoney = cs_get_user_money(id), bool:bBought[6], iWeapon, CsTeams:iTeam, iPrice, szWeaponName[32]; iTeam = cs_get_user_team(id); if(iTeam == CS_TEAM_T) { for(new i=0;i<sizeof(g_iAutobuy[]);i++) { if(g_iAutobuy[id][0][i] == -1) return PLUGIN_HANDLED; iWeapon = g_SubMenuItemCSWT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]]; if(bBought[g_iWeaponSlot[iWeapon]]) continue; iPrice = g_SubMenuItemPriceT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]]; if(iPrice > 0 && iPrice > iMoney) continue; ForceDropWeapon(id, SLOT_SECONDARY); get_weaponname(g_SubMenuItemCSWT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]], szWeaponName, charsmax(szWeaponName)); give_item(id, szWeaponName); bBought[g_iWeaponSlot[iWeapon]] = true; } } else if(iTeam == CS_TEAM_CT) { for(new i=0;i<sizeof(g_iAutobuy[]);i++) { if(g_iAutobuy[id][0][i] == -1) return PLUGIN_HANDLED; iWeapon = g_SubMenuItemCSWCT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]]; if(bBought[g_iWeaponSlot[iWeapon]]) continue; iPrice = g_SubMenuItemPriceCT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]]; if(iPrice > 0 && iPrice > iMoney) continue; ForceDropWeapon(id, SLOT_SECONDARY); get_weaponname(g_SubMenuItemCSWCT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]], szWeaponName, charsmax(szWeaponName)); give_item(id, szWeaponName); bBought[g_iWeaponSlot[iWeapon]] = true; } } return PLUGIN_HANDLED; }
public clcmd_client_buy_open(id) { message_begin(MSG_ONE, g_msgBuyClose, _, id); message_end(); ShowNewBuyMenu(id); if(!task_exists(id+TASK_CHECK)) set_task(0.5, "taskCheckBuyZone", id+TASK_CHECK); return PLUGIN_HANDLED; }
public player_cmd_buy_main(id) { ShowNewBuyMenu(id); if(!task_exists(id+TASK_CHECK)) set_task(0.5, "taskCheckBuyZone", id+TASK_CHECK); return PLUGIN_HANDLED; }
public taskCheckBuyZone(id) { id -= TASK_CHECK; static oldMenuId, newMenuId; player_menu_info(id, oldMenuId, newMenuId); if(newMenuId > -1 || (oldMenuId && oldMenuId != iMenuIDs[0] && oldMenuId != iMenuIDs[1])) return; if(!cs_get_user_buyzone(id)) { client_print(id, print_center, "You have left the buy zone."); show_menu(id, 1, " ", -1); } else set_task(0.5, "taskCheckBuyZone", id+TASK_CHECK); }
public player_cmd_buy_equipament(id) { i_menu_type[id] = EQUIPMENT; ShowSecondMenu(id); return PLUGIN_HANDLED; }
ShowNewBuyMenu(id) { if(!is_user_alive(id)) return; if(cs_get_user_vip(id)) { client_print(id, print_center, "VIP can't buy items."); return; } if(BuyTimeExpired()) { client_print(id, print_center, "Buy time has expired."); if(task_exists(id+TASK_CHECK)) remove_task(id+TASK_CHECK); return; } client_print(id, print_center, "You have %i seconds to buy something.", floatround(get_cvar_float("mp_buytime") - (get_gametime() - fNewRoundTime))); static szMenu[512], iLen, CsTeams:iTeam, keys, iMoney; iTeam = cs_get_user_team(id); if(iTeam != CS_TEAM_CT && iTeam != CS_TEAM_T) return; keys = MENU_KEY_0; iMoney = cs_get_user_money(id); iLen = formatex(szMenu, charsmax(szMenu), "\rNEW \wBuy Menu\d - by Wicked-^n\dYour money: \w%i$^n^n", iMoney); for(new i=0;i<MAX_MAIN_ITEMS;i++) { iLen += format(szMenu[iLen], charsmax(szMenu)-iLen, "%s%i. %s^n", CanBuyAnItemInCategory(id, i, iMoney) ? "\w" : "\r", i+1, g_MainMenuItemNames[i]); keys |= (1<<i); } format(szMenu[iLen], charsmax(szMenu)-iLen, "^n\w0.\w Exit"); show_menu(id, keys, szMenu, -1, g_MainMenu); }
public MainMenuHandler(id, key) { if(key != 9) { i_menu_type[id] = key; ShowSecondMenu(id); } }
ShowSecondMenu(id) { if(!cs_get_user_buyzone(id)) { client_print(id, print_center, "You have left the buy zone."); return; } if(BuyTimeExpired()) { client_print(id, print_center, "Buy time has expired."); if(task_exists(id+TASK_CHECK)) remove_task(id+TASK_CHECK); return; } static szMenu[512], iLen, CsTeams:iTeam, keys, iMoney; iTeam = cs_get_user_team(id); if(iTeam != CS_TEAM_CT && iTeam != CS_TEAM_T) return; keys = MENU_KEY_0; iMoney = cs_get_user_money(id); iLen = formatex(szMenu, charsmax(szMenu), "\rNEW \wBuy Menu\d - by Wicked-^n\wBuy %s^n\dYour money: \w%i$^n^n", g_MainMenuItemNames[i_menu_type[id]], iMoney); if(iTeam == CS_TEAM_T) { for(new i=0;i<9;i++) { if(!g_SubMenuItemNamesT[i_menu_type[id]][i][0]) break; iLen += format(szMenu[iLen], charsmax(szMenu)-iLen, "%s%i. %s - \y%i$^n", CanBuyItem(id, i_menu_type[id], i, iMoney) ? "\w" : "\r", i+1, g_SubMenuItemNamesT[i_menu_type[id]][i], g_SubMenuItemPriceT[i_menu_type[id]][i]); keys |= (1<<i); } } else { for(new i=0;i<9;i++) { if(!g_SubMenuItemNamesCT[i_menu_type[id]][i][0]) break; iLen += format(szMenu[iLen], charsmax(szMenu)-iLen, "%s%i. %s - \y%i$^n", CanBuyItem(id, i_menu_type[id], i, iMoney) ? "\w" : "\r", i+1, g_SubMenuItemNamesCT[i_menu_type[id]][i], g_SubMenuItemPriceCT[i_menu_type[id]][i]); keys |= (1<<i); } } format(szMenu[iLen], charsmax(szMenu)-iLen, "^n\w0.\w Back"); show_menu(id, keys, szMenu, -1, g_SecondMenu); }
public SecondMenuHandler(id, key) { if(!cs_get_user_buyzone(id)) { client_print(id, print_center, "You have left the buy zone."); return; } if(BuyTimeExpired()) { client_print(id, print_center, "Buy time has expired."); if(task_exists(id+TASK_CHECK)) remove_task(id+TASK_CHECK); return; } if(key == 9) { ShowNewBuyMenu(id); return; } static CsTeams:iTeam, iMoney, szWeaponName[32]; iTeam = cs_get_user_team(id); if(iTeam != CS_TEAM_CT && iTeam != CS_TEAM_T) return; iMoney = cs_get_user_money(id); if(iTeam == CS_TEAM_T) { if(iMoney < g_SubMenuItemPriceT[i_menu_type[id]][key]) { client_print(id, print_center, "You don't have enough money to buy this item."); return; } switch(i_menu_type[id]) { case HANDGUN: { ForceDropWeapon(id, SLOT_SECONDARY); get_weaponname(g_SubMenuItemCSWT[i_menu_type[id]][key], szWeaponName, charsmax(szWeaponName)); give_item(id, szWeaponName); cs_set_user_bpammo(id, g_SubMenuItemCSWT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWT[i_menu_type[id]][key]]); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } case SHOTGUN, SUBMACHINEGUN, RIFLE, MACHINEGUN: { ForceDropWeapon(id, SLOT_PRIMARY); get_weaponname(g_SubMenuItemCSWT[i_menu_type[id]][key], szWeaponName, charsmax(szWeaponName)); give_item(id, szWeaponName); cs_set_user_bpammo(id, g_SubMenuItemCSWT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWT[i_menu_type[id]][key]]); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } case GRENADES: { if(key == I_HE) { if(bHasNade[id][key]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][key] = true; give_item(id, "weapon_hegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } else if(key == I_FLASH) { if(bHasNade[id][key]) { if(cs_get_user_bpammo(id, CSW_FLASHBANG) > 1) client_print(id, print_center, "You can't carry any more of those."); else { cs_set_user_bpammo(id, CSW_FLASHBANG, 2); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } else { bHasNade[id][key] = true; give_item(id, "weapon_flashbang"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } else if(key == I_SMOKE) { if(bHasNade[id][key]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][key] = true; give_item(id, "weapon_smokegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } else if(key == I_NAPALM) { if(bBoughtNapalm[id]) client_print(id, print_center, "You can buy this item only once per spawn."); else if(bHasNade[id][key]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][key] = true; bGivingNapalm[id] = true; bBoughtNapalm[id] = true; give_item(id, "weapon_hegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } else if(key == I_DECOY) { if(bBoughtDecoy[id]) client_print(id, print_center, "You can buy this item only once per spawn."); else if(bHasNade[id][key]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][key] = true; bGivingDecoy[id] = true; bBoughtDecoy[id] = true; give_item(id, "weapon_smokegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } } case EQUIPMENT: { if(0 <= key <= 1) { if(CanBuyArmor(id, key)) { if(key == 0) cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR); else cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } else if(key == 2) { if(cs_get_user_nvg(id)) client_print(id, print_center, "You can't carry any more of those."); else { cs_set_user_nvg(id, 1); cs_set_user_money(id, iMoney - g_SubMenuItemPriceT[i_menu_type[id]][key]); } } } } } else { if(iMoney < g_SubMenuItemPriceCT[i_menu_type[id]][key]) { client_print(id, print_center, "You don't have enough money to buy this item."); return; } switch(i_menu_type[id]) { case HANDGUN: { ForceDropWeapon(id, SLOT_SECONDARY); get_weaponname(g_SubMenuItemCSWCT[i_menu_type[id]][key], szWeaponName, charsmax(szWeaponName)); give_item(id, szWeaponName); cs_set_user_bpammo(id, g_SubMenuItemCSWCT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWCT[i_menu_type[id]][key]]); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } case SHOTGUN, SUBMACHINEGUN, RIFLE, MACHINEGUN: { ForceDropWeapon(id, SLOT_PRIMARY); get_weaponname(g_SubMenuItemCSWCT[i_menu_type[id]][key], szWeaponName, charsmax(szWeaponName)); give_item(id, szWeaponName); cs_set_user_bpammo(id, g_SubMenuItemCSWCT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWCT[i_menu_type[id]][key]]); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } case GRENADES: { if(key == I_HE) { if(bHasNade[id][I_HE]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][I_HE] = true; give_item(id, "weapon_hegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else if(key == I_FLASH) { if(bHasNade[id][I_FLASH]) { if(cs_get_user_bpammo(id, CSW_FLASHBANG) > 1) client_print(id, print_center, "You can't carry any more of those."); else { cs_set_user_bpammo(id, CSW_FLASHBANG, 2); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else { bHasNade[id][I_FLASH] = true; give_item(id, "weapon_flashbang"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else if(key == I_SMOKE) { if(bHasNade[id][I_SMOKE]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][I_SMOKE] = true; give_item(id, "weapon_smokegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else if(key == I_NAPALM) { if(bBoughtNapalm[id]) client_print(id, print_center, "You can buy this item only once per spawn."); if(bHasNade[id][I_NAPALM]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][I_NAPALM] = true; bGivingNapalm[id] = true; bBoughtNapalm[id] = true; give_item(id, "weapon_hegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else if(key == I_DECOY) { if(bBoughtDecoy[id]) client_print(id, print_center, "You can buy this item only once per spawn."); if(bHasNade[id][I_DECOY]) client_print(id, print_center, "You can't carry any more of those."); else { bHasNade[id][I_DECOY] = true; bGivingDecoy[id] = true; bBoughtDecoy[id] = true; give_item(id, "weapon_smokegrenade"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } } case EQUIPMENT: { if(0 <= key <= 1) { if(CanBuyArmor(id, key)) { if(key == 0) cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR); else cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else if(key == 2) { if(cs_get_user_nvg(id)) client_print(id, print_center, "You can't carry any more of those."); else { cs_set_user_nvg(id, 1); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else if(key == 3) { if(cs_get_user_defuse(id)) client_print(id, print_center, "You can't carry any more of those."); else { cs_set_user_defuse(id, 1); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } else if(key == 4) { if(cs_get_user_shield(id)) client_print(id, print_center, "You can't carry any more of those."); else { give_item(id, "weapon_shield"); cs_set_user_money(id, iMoney - g_SubMenuItemPriceCT[i_menu_type[id]][key]); } } } } } ShowSecondMenu(id); }
bool:BuyTimeExpired() return (get_cvar_float("mp_buytime") < (get_gametime() - fNewRoundTime)) ? true : false;
bool:CanBuyAnItemInCategory(id, i, money) { for(new b=0;b<9;b++) { if(CanBuyItem(id, i, b, money)) return true; } return false; }
bool:CanBuyItem(id, i, b, money) { static CsTeams:iTeam; iTeam = cs_get_user_team(id); if(iTeam == CS_TEAM_CT) { if(i == EQUIPMENT) { if(0 <= b <= 1) return (CanBuyArmor(id, b) && money >= g_SubMenuItemPriceCT[i][b]) ? true : false; if(b == 2) return (!cs_get_user_nvg(id) && money >= g_SubMenuItemPriceCT[i][b]) ? true : false; if(b == 3) return (!cs_get_user_defuse(id) && money >= g_SubMenuItemPriceCT[i][b]) ? true : false; if(b == 4) return (!cs_get_user_shield(id) && money >= g_SubMenuItemPriceCT[i][b]) ? true : false; } if(g_SubMenuItemPriceCT[i][b] && money >= g_SubMenuItemPriceCT[i][b]) return true; } else if(iTeam == CS_TEAM_T) { if(i == EQUIPMENT) { if(0 <= b <= 1) return (CanBuyArmor(id, b) && money >= g_SubMenuItemPriceT[i][b]) ? true : false; if(b == 2) return (!cs_get_user_nvg(id) && money >= g_SubMenuItemPriceT[i][b]) ? true : false; } if(g_SubMenuItemPriceT[i][b] && money >= g_SubMenuItemPriceT[i][b]) return true; } return false; }
bool:CanBuyArmor(id, item) { new CsArmorType:ArmorType; new iArmor = cs_get_user_armor(id, ArmorType); if(!item) { if(iArmor < 100) return true; } else { if(ArmorType != CS_ARMOR_VESTHELM) return true; } return false; }
ForceDropWeapon(id, iSlot) { new Array:aWeaponIDs = ArrayCreate(1); new iCount = GetWeaponsFromSlot(id, iSlot, _, aWeaponIDs); new iWeaponID, szWeaponName[32]; for( new i = 0; i < iCount; i++ ) { iWeaponID = ArrayGetCell(aWeaponIDs, i); get_weaponname(iWeaponID, szWeaponName, charsmax(szWeaponName)); engclient_cmd(id, "drop", szWeaponName); } ArrayDestroy(aWeaponIDs); }
stock GetWeaponsFromSlot(id, iSlot, Array:aWeaponEntities=Invalid_Array, Array:aWeaponIDs=Invalid_Array) { new iWeaponCount = 0; if(1 <= iSlot <= 5) { new iEntity = get_pdata_cbase(id, m_rpgPlayerItems_Slot0 + iSlot, 5); if(iEntity > 0) { do { if(aWeaponEntities != Invalid_Array) { ArrayPushCell( aWeaponEntities, iEntity); } if(aWeaponIDs != Invalid_Array) { ArrayPushCell(aWeaponIDs, get_pdata_int(iEntity, m_iId, 4)); } iWeaponCount++; } while((iEntity = get_pdata_cbase(iEntity, m_pNext, 4)) > 0); } } return iWeaponCount; }
|