Raised This Month: $ Target: $400
 0% 

When thrown molotov server crash. No error.


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
wicked95
Member
Join Date: Dec 2012
Old 12-14-2015 , 16:47   When thrown molotov server crash. No error.
Reply With Quote #1

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_GLOCK18CSW_USPCSW_P228CSW_DEAGLECSW_ELITE000},
    { 
CSW_M3CSW_XM1014000000},
    { 
CSW_MAC10CSW_MP5NAVYCSW_UMP45CSW_P900000},
    { 
CSW_GALILCSW_AK47CSW_SCOUTCSW_SG552CSW_AWPCSW_G3SG100},
    { 
CSW_M2490000000},
    { 
CSW_HEGRENADECSW_FLASHBANGCSW_SMOKEGRENADE00000},
    { 
CSW_VESTCSW_VESTHELM000000}
};
new const 
g_SubMenuItemPriceT[MAX_MAIN_ITEMS][9] =
{
    { 
400500600650800000},
    { 
17003000000000},
    { 
14001500170023500000},
    { 
20002500275035004750500000},
    { 
57500000000},
    { 
30020030011000},
    { 
6501000125000000}
};

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_GLOCK18CSW_USPCSW_P228CSW_DEAGLECSW_FIVESEVEN000},
    { 
CSW_M3CSW_XM1014000000},
    { 
CSW_TMPCSW_MP5NAVYCSW_UMP45CSW_P900000},
    { 
CSW_FAMASCSW_SCOUTCSW_M4A1CSW_AUGCSW_SG550CSW_AWP00},
    { 
CSW_M2490000000},
    { 
CSW_HEGRENADECSW_FLASHBANGCSW_SMOKEGRENADE00000},
    { 
CSW_VESTCSW_VESTHELM000000}
};
new const 
g_SubMenuItemPriceCT[MAX_MAIN_ITEMS][9] =
{
    { 
400500600650750000},
    { 
17003000000000},
    { 
12501500170023500000},
    { 
22502750210035004200475000},
    { 
57500000000},
    { 
30020030011000},
    { 
650100012502002200000}
};

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[] =    {052090132110090112010010090909010012030,    12020032901209023590900100};

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_msgBuyClosegmsgDeathMsggmsgScoreInfog_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:fNewRoundTimelast_Molotov_entg_gg_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_FindEntityByStringent"model"sz_wMolotov)))
    {
        if(
pev_valid(ent))
            
engfunc(EngFunc_RemoveEntityent);
    }
    while((
ent engfunc(EngFunc_FindEntityByStringent"model"sz_wDecoy)))
    {
        if(
pev_valid(ent))
            
engfunc(EngFunc_RemoveEntityent);
    }
}

public 
fw_CmdStart(id)
{
    static 
i;
    if(
i++ < 10)
        return 
FMRES_IGNORED;
    
0;
    if(!
is_user_alive(id))
        return 
FMRES_IGNORED;
    if(
pev(idpev_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(idpev_viewmodel2sz_vNormalHE);
                
set_pev(idpev_weaponmodel2sz_pNormalHE);
                
bSwitchNapalm[id] = false;
                
client_print(idprint_center"Switched to GRENADE mode");
            }
            else
            {
                if(
cs_get_user_team(id) == CS_TEAM_T)
                {
                    
set_pev(idpev_viewmodel2sz_vMolotov);
                    
set_pev(idpev_weaponmodel2sz_pMolotov);
                    
set_pev(idpev_weaponanim9);
                }
                else
                    
set_pev(idpev_viewmodel2sz_vNapalm);
                
bSwitchNapalm[id] = true;
                
client_print(idprint_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(idpev_viewmodel2sz_vShieldDecoy);
                    
set_pev(idpev_weaponmodel2sz_pShieldDecoy);
                }
                else
                {
                    
set_pev(idpev_viewmodel2sz_vDecoy);
                    
set_pev(idpev_weaponmodel2sz_pDecoy);
                }
                
bSwitchDecoy[id] = true;
                
client_print(idprint_center"Switched to DECOY mode");
            }
            else
            {
                if(
cs_get_user_shield(id))
                {
                    
set_pev(idpev_viewmodel2sz_vNormalShieldSmoke);
                    
set_pev(idpev_weaponmodel2sz_pNormalShieldSmoke);
                }
                else
                {
                    
set_pev(idpev_viewmodel2sz_vNormalSmoke);
                    
set_pev(idpev_weaponmodel2sz_pNormalSmoke);
                }
                
bSwitchDecoy[id] = false;
                
client_print(idprint_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(idiWeaponIDiWeaponID);
    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(idpev_viewmodel2sz_vMolotov);
                
set_pev(idpev_weaponmodel2sz_pMolotov);
            }
            else
                
set_pev(idpev_viewmodel2sz_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(idpev_viewmodel2sz_vShieldDecoy);
                
set_pev(idpev_weaponmodel2sz_pShieldDecoy);
            }
            else
            {
                
set_pev(idpev_viewmodel2sz_vDecoy);
                
set_pev(idpev_weaponmodel2sz_pDecoy);
            }
        }
    }
    return 
PLUGIN_CONTINUE;
}

public 
grenade_throw(identwid)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_CONTINUE;
    new 
info[2];
    if(
wid == CSW_HEGRENADE)
    {
        if(
bHasNade[id][I_NAPALM] && bSwitchNapalm[id])
        {
            
engfunc(EngFunc_SetModelentcs_get_user_team(id) == CS_TEAM_T sz_wMolotov sz_wNapalm);
            
bSwitchNapalm[id] = false;
            
bHasNade[id][I_NAPALM] = false;
            
set_pev(entpev_nextthink99999.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(idCSW_FLASHBANG))
            
bHasNade[id][I_FLASH] = false;
    }
    else if(
wid == CSW_SMOKEGRENADE)
    {
        if(
bHasNade[id][I_DECOY] && bSwitchDecoy[id])
        {
            
engfunc(EngFunc_SetModelentsz_wDecoy);
            
bSwitchDecoy[id] = false;
            
bHasNade[id][I_DECOY] = false;
            
set_pev(entpev_nextthink99999.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(entchannelsample[]) {

    static 
szModel[32];
    if(
equal(sample[8], "he_bounce"9))
    {
        new 
i;
        
pev(entpev_modelszModelcharsmax(szModel));
        if(
equal(szModel[9], "lotov/w_molotov.mdl"))
            
1;
        else if(
equal(szModel[9], "palm/w_napalm.mdl"))
            
2;
        if(
i)
        {
            if(
last_Molotov_ent != ent)
            {
                new 
Float:fFrictionFloat:fVelocity[3];
                
pev(entpev_frictionfFriction);
                
pev(entpev_velocityfVelocity);
                
fFriction *= 1.3;
                
set_pev(entpev_frictionfFriction);
                
last_Molotov_ent ent;
                
grenade_explode(enti);
                return 
FMRES_SUPERCEDE;
            }
        }
    }
    else if(
equal(sample[8], "grenade_hit"11))
    {
        
pev(entpev_modelszModelcharsmax(szModel));
        if(
equal(szModel[9], "coy/w_decoy.mdl"))
        {
            
activate_decoy(ent);
            return 
FMRES_SUPERCEDE;
        }
    }
    return 
FMRES_IGNORED;
}

public 
activate_decoy(ent)
{
    
set_pev(entpev_euser1random(sizeof(szWeaponSounds)));
    
set_task(1.0"decoy_sound"ent+TASK_DECOY);
    
set_task(random_float(100.0200.0), "destroy_decoy"ent+TASK_DESTROY_DECOY);
}

public 
destroy_decoy(ent)
{
    
ent -= TASK_DESTROY_DECOY;
    if(
pev_valid(ent))
        
engfunc(EngFunc_RemoveEntityent);
}

public 
decoy_sound(ent)
{
    
ent -= TASK_DECOY
    
if(pev_valid(ent))
    {
        
emit_sound(entCHAN_AUTOszWeaponSounds[pev(entpev_euser1)], VOL_NORMATTN_NORM0PITCH_NORM);
        
set_task(random_float(0.52.0), "decoy_sound"ent+TASK_DECOY);
    }
}

public 
grenade_explode(enti_num)
{
    new 
param[6], iOrigin[3];
    new 
Float:fOrigin[3];
    new 
owner pev(entpev_owner);
    new 
ent2 engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));

    
pev(entpev_originfOrigin);

    
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(entCHAN_AUTO"molotov/molotov_fire.wav"VOL_NORMATTN_NORM0PITCH_NORM);

    if(
i_num == 1)
        
engfunc(EngFunc_SetModelentsz_wBrokeMolotov);
    else
        
engfunc(EngFunc_RemoveEntityent);

    
random_fire(iOriginent2);
    
radius_damage(ownerfOrigin50.0150.0DMG_BLAST);

    new 
Float:FireTime 10.0;

    
set_task(0.2"fire_damage"MOLOTOV_TASKID_DAMAGE entparam6"a"floatround(FireTime 0.2floatround_floor));
    
set_task(1.0"fire_sound"MOLOTOV_TASKID_SOUND entparam6"a"floatround(FireTime) - 1);
    
set_task(FireTime"fire_stop"MOLOTOV_TASKID_STOP entparam6);

    return 
PLUGIN_CONTINUE;
}

public 
fire_sound(param[])    emit_sound(param[1], CHAN_AUTOszFireSoundVOL_NORMATTN_NORM0PITCH_NORM);

public 
fire_stop(param[])
{
    
g_g 0;
    if(
pev_valid(param[0]))    engfunc(EngFunc_RemoveEntityparam[0]);
    if(
pev_valid(param[1]))    engfunc(EngFunc_RemoveEntityparam[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(iOriginparam[1]);

    
IVecFVec(iOriginfOrigin);
    
radius_damage(param[2], fOrigin3.0150.0DMG_BURN0);
}

stock radius_damage(attackerFloat:origin[3], Float:damageFloat:rangedmgtypecalc 1)
{
    new 
Float:pOrigin[3], Float:distFloat:tmpdmgiCsTeams: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(ipev_originpOrigin);
        
dist get_distance_f(originpOrigin);
        if(
dist range)
            continue;
        if(
calc)
            
tmpdmg damage - (damage range) * dist;
        else
            
tmpdmg damage;

        if(
pev(ipev_health) < tmpdmg)
            
kill(attackeri);
        else
            
fm_fakedamage(i"molotov"tmpdmgdmgtype);
        
set_task(0.1"burning_flame"i);
    }

    while((
engfunc(EngFunc_FindEntityInSphereioriginrange)))
    {
        if(
pev(ipev_takedamage))
        {
            if(
calc)
            {
                
pev(ipev_originpOrigin);
                
tmpdmg damage - (damage range) * get_distance_f(originpOrigin);
            }
            else
                
tmpdmg damage;
            
fm_fakedamage(i"molotov"tmpdmgdmgtype);
        }
    }
}

public 
burning_flame(burn_id)
{
    if(!
is_user_alive(burn_id))
        return;
    static 
Float:originF[3], flags;
    
pev(burn_idpev_originoriginF);
    
flags pev(burn_idpev_flags);

    if((
flags FL_INWATER))
    {
        
// Smoke sprite
        
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0);
        
write_byte(TE_SMOKE); // TE id
        
engfunc(EngFunc_WriteCoordoriginF[0]); // x
        
engfunc(EngFunc_WriteCoordoriginF[1]); // y
        
engfunc(EngFunc_WriteCoordoriginF[2]-50.0); // z
        
write_short(g_SmokeSpr[random_num(01)]); // sprite
        
write_byte(random_num(1030)); // scale
        
write_byte(random_num(1020)); // framerate
        
message_end();
        return;
    }

    if (
0.5 0.0 && (flags FL_ONGROUND))
    {
        static 
Float:velocity[3];
        
pev(burn_idpev_velocityvelocity);
        
xs_vec_mul_scalar(velocity0.5velocity);
        
set_pev(burn_idpev_velocityvelocity);
    }

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0);
    
write_byte(TE_SPRITE); // TE id
    
engfunc(EngFunc_WriteCoordoriginF[0]+random_float(-5.05.0)); // x
    
engfunc(EngFunc_WriteCoordoriginF[1]+random_float(-5.05.0)); // y
    
engfunc(EngFunc_WriteCoordoriginF[2]+random_float(-10.010.0)); // z
    
write_short(g_FireSpr); // sprite
    
write_byte(random_num(515)); // 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(-150150);
        
iOrigin[1] = Origin[1] + random_num(-150150);
        
iOrigin[2] = Origin[2];
        
iOrigin[2] = ground_z(iOriginent);

        while(
get_distance(iOriginOrigin) > 150.0)
        {
            
g_g++;
            
iOrigin[0] = Origin[0] + random_num(-150150);
            
iOrigin[1] = Origin[1] + random_num(-150150);
            
iOrigin[2] = Origin[2];

            if(
g_g >= 7.0)
                
iOrigin[2] = ground_z(iOriginent1);
            else
                
iOrigin[2] = ground_z(iOriginent);
        }

        new 
rand random_num(515);
        
message_begin(MSG_BROADCASTSVC_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(!(
4))
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
            
write_byte(TE_SMOKE);
            
write_coord(iOrigin[0]);
            
write_coord(iOrigin[1]);
            
write_coord(iOrigin[2] + 120);
            
write_short(g_SmokeSpr[random_num(01)]);
            
write_byte(random_num(1030));
            
write_byte(random_num(1020));
            
message_end();
        }
    }
}

stock kill(killervictim)
{
    new 
kTeam get_user_team(killer);
    new 
vTeam get_user_team(victim);
    
user_silentkill(victim);

    
message_begin(MSG_ALLgmsgScoreInfo);
    
write_byte(killer);
    
write_short(get_user_frags(killer) + ((kTeam == vTeam) ? -1));
    
write_short(get_user_deaths(killer));
    
write_short(0);
    
write_short(kTeam);
    
message_end();

    
message_begin(MSG_ALLgmsgScoreInfo);
    
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_ALLgmsgDeathMsg, {0,0,0}, 0);
    
write_byte(killer);
    
write_byte(victim);
    
write_byte(0);
    
write_string("molotov");
    
message_end();

    
set_user_frags(killerget_user_frags(killer) + 1);

    if(
kTeam != vTeam)
        
cs_set_user_money(killercs_get_user_money(killer) + 300);
    else
        
cs_set_user_money(killercs_get_user_money(killer) - 300);
}

stock ground_z(iOrigin[3], entskip 0iRecursion 0)
{
    
iOrigin[2] += random_num(580);

    if(!
pev_valid(ent))
        return 
iOrigin[2];

    new 
Float:fOrigin[3];
    
IVecFVec(iOriginfOrigin);
    
set_pev(entpev_originfOrigin);
    
engfunc(EngFunc_DropToFloorent);

    if(!
skip && !engfunc(EngFunc_EntIsOnFloorent))
    {
        if(
iRecursion >= 7.0)
            
skip 1;
        return 
ground_z(iOriginentskip, ++iRecursion);
    }
    
pev(entpev_originfOrigin);
    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(idSLOT_PRIMARY_aWeaponIDs), iWeaponID;
        for(new 
i=0;i<iCount;i++)
        {
            
iWeaponID ArrayGetCell(aWeaponIDsi);
            
cs_set_user_bpammo(idiWeaponIDg_WeaponBPAmmo[iWeaponID]);
        }
        
ArrayDestroy(aWeaponIDs);
        
aWeaponIDs ArrayCreate(1);
        
iCount GetWeaponsFromSlot(idSLOT_SECONDARY_aWeaponIDs);
        for(new 
i=0;i<iCount;i++)
        {
            
iWeaponID ArrayGetCell(aWeaponIDsi);
            
cs_set_user_bpammo(idiWeaponIDg_WeaponBPAmmo[iWeaponID]);
        }
        
ArrayDestroy(aWeaponIDs);
    }
}

public 
player_killed(victimkillershouldgib)
{
    if(
killer && killer <= g_iMaxPlayers)
    {
        for(new 
i=0;i<I_MAX_NADES;i++)
            
bHasNade[victim][i] = false;
    }
}

public 
player_additem(idiEnt)
{
    static 
iWeaponID;
    
iWeaponID get_pdata_int(iEntm_iId4);
    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 
iIndexszWeapon[24], szArgs[1024], bool:bFoundCsTeams:iTeam;
    
iTeam cs_get_user_team(id);
    
read_args(szArgscharsmax(szArgs));
    
remove_quotes(szArgs);
    
trim(szArgs);
    while(
contain(szArgs" ") != -1)
    {
        
strbreak(szArgsszWeaponcharsmax(szWeapon), szArgscharsmax(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(idprint_center"You have left the buy zone.");
        return 
PLUGIN_HANDLED;
    }
    new 
iMoney cs_get_user_money(id), bool:bBought[6], iWeaponCsTeams:iTeamiPriceszWeaponName[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 && iPrice iMoney)
                continue;
            
ForceDropWeapon(idSLOT_SECONDARY);
            
get_weaponname(g_SubMenuItemCSWT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]], szWeaponNamecharsmax(szWeaponName)); 
            
give_item(idszWeaponName);
            
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 && iPrice iMoney)
                continue;
            
ForceDropWeapon(idSLOT_SECONDARY);
            
get_weaponname(g_SubMenuItemCSWCT[g_iAutobuy[id][i][0]][g_iAutobuy[id][i][1]], szWeaponNamecharsmax(szWeaponName)); 
            
give_item(idszWeaponName);
            
bBought[g_iWeaponSlot[iWeapon]] = true;
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
clcmd_client_buy_open(id)
{
    
message_begin(MSG_ONEg_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 
oldMenuIdnewMenuId;
    
player_menu_info(idoldMenuIdnewMenuId);
    if(
newMenuId > -|| (oldMenuId && oldMenuId != iMenuIDs[0] && oldMenuId != iMenuIDs[1]))
        return;
    if(!
cs_get_user_buyzone(id))
    {
        
client_print(idprint_center"You have left the buy zone.");
        
show_menu(id1" ", -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(idprint_center"VIP can't buy items.");
        return;
    }
    if(
BuyTimeExpired())
    {
        
client_print(idprint_center"Buy time has expired.");
        if(
task_exists(id+TASK_CHECK))
            
remove_task(id+TASK_CHECK);
        return;
    }
    
client_print(idprint_center"You have %i seconds to buy something."floatround(get_cvar_float("mp_buytime") - (get_gametime() - fNewRoundTime)));
    static 
szMenu[512], iLenCsTeams:iTeamkeysiMoney;
    
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(szMenucharsmax(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(idiiMoney) ? "\w" "\r"i+1g_MainMenuItemNames[i]);
        
keys |= (1<<i);
    }
    
format(szMenu[iLen], charsmax(szMenu)-iLen"^n\w0.\w Exit");
    
show_menu(idkeysszMenu, -1g_MainMenu);
}

public 
MainMenuHandler(idkey)
{
    if(
key != 9)
    {
        
i_menu_type[id] = key;
        
ShowSecondMenu(id);
    }
}

ShowSecondMenu(id)
{
    if(!
cs_get_user_buyzone(id))
    {
        
client_print(idprint_center"You have left the buy zone.");
        return;
    }
    if(
BuyTimeExpired())
    {
        
client_print(idprint_center"Buy time has expired.");
        if(
task_exists(id+TASK_CHECK))
            
remove_task(id+TASK_CHECK);
        return;
    }
    static 
szMenu[512], iLenCsTeams:iTeamkeysiMoney;
    
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(szMenucharsmax(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(idi_menu_type[id], iiMoney) ? "\w" "\r"i+1g_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(idi_menu_type[id], iiMoney) ? "\w" "\r"i+1g_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(idkeysszMenu, -1g_SecondMenu);
}

public 
SecondMenuHandler(idkey)
{
    if(!
cs_get_user_buyzone(id))
    {
        
client_print(idprint_center"You have left the buy zone.");
        return;
    }
    if(
BuyTimeExpired())
    {
        
client_print(idprint_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:iTeamiMoneyszWeaponName[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(idprint_center"You don't have enough money to buy this item.");
            return;
        }
        switch(
i_menu_type[id])
        {
            case 
HANDGUN:
            {
                
ForceDropWeapon(idSLOT_SECONDARY);
                
get_weaponname(g_SubMenuItemCSWT[i_menu_type[id]][key], szWeaponNamecharsmax(szWeaponName)); 
                
give_item(idszWeaponName);
                
cs_set_user_bpammo(idg_SubMenuItemCSWT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWT[i_menu_type[id]][key]]);
                
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
            }
            case 
SHOTGUNSUBMACHINEGUNRIFLEMACHINEGUN:
            {
                
ForceDropWeapon(idSLOT_PRIMARY);
                
get_weaponname(g_SubMenuItemCSWT[i_menu_type[id]][key], szWeaponNamecharsmax(szWeaponName)); 
                
give_item(idszWeaponName);
                
cs_set_user_bpammo(idg_SubMenuItemCSWT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWT[i_menu_type[id]][key]]);
                
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
            }
            case 
GRENADES:
            {
                if(
key == I_HE)
                {
                    if(
bHasNade[id][key])
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
bHasNade[id][key] = true;
                        
give_item(id"weapon_hegrenade");
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_FLASH)
                {
                    if(
bHasNade[id][key])
                    {
                        if(
cs_get_user_bpammo(idCSW_FLASHBANG) > 1)
                            
client_print(idprint_center"You can't carry any more of those.");
                        else
                        {
                            
cs_set_user_bpammo(idCSW_FLASHBANG2);
                            
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                        }
                    }
                    else
                    {
                        
bHasNade[id][key] = true;
                        
give_item(id"weapon_flashbang");
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_SMOKE)
                {
                    if(
bHasNade[id][key])
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
bHasNade[id][key] = true;
                        
give_item(id"weapon_smokegrenade");
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_NAPALM)
                {
                    if(
bBoughtNapalm[id])
                        
client_print(idprint_center"You can buy this item only once per spawn.");
                    else if(
bHasNade[id][key])
                        
client_print(idprint_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(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_DECOY)
                {
                    if(
bBoughtDecoy[id])
                        
client_print(idprint_center"You can buy this item only once per spawn.");
                    else if(
bHasNade[id][key])
                        
client_print(idprint_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(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                    }
                }
            }
            case 
EQUIPMENT:
            {
                if(
<= key <= 1)
                {
                    if(
CanBuyArmor(idkey))
                    {
                        if(
key == 0)
                            
cs_set_user_armor(id100CS_ARMOR_KEVLAR);
                        else
                            
cs_set_user_armor(id100CS_ARMOR_VESTHELM);
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == 2)
                {
                    if(
cs_get_user_nvg(id))
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
cs_set_user_nvg(id1);
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceT[i_menu_type[id]][key]);
                    }
                }
            }
        }
    }
    else
    {
        if(
iMoney g_SubMenuItemPriceCT[i_menu_type[id]][key])
        {
            
client_print(idprint_center"You don't have enough money to buy this item.");
            return;
        }
        switch(
i_menu_type[id])
        {
            case 
HANDGUN:
            {
                
ForceDropWeapon(idSLOT_SECONDARY);
                
get_weaponname(g_SubMenuItemCSWCT[i_menu_type[id]][key], szWeaponNamecharsmax(szWeaponName)); 
                
give_item(idszWeaponName);
                
cs_set_user_bpammo(idg_SubMenuItemCSWCT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWCT[i_menu_type[id]][key]]);
                
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
            }
            case 
SHOTGUNSUBMACHINEGUNRIFLEMACHINEGUN:
            {
                
ForceDropWeapon(idSLOT_PRIMARY);
                
get_weaponname(g_SubMenuItemCSWCT[i_menu_type[id]][key], szWeaponNamecharsmax(szWeaponName)); 
                
give_item(idszWeaponName);
                
cs_set_user_bpammo(idg_SubMenuItemCSWCT[i_menu_type[id]][key], g_WeaponBPAmmo[g_SubMenuItemCSWCT[i_menu_type[id]][key]]);
                
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
            }
            case 
GRENADES:
            {
                if(
key == I_HE)
                {
                    if(
bHasNade[id][I_HE])
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
bHasNade[id][I_HE] = true;
                        
give_item(id"weapon_hegrenade");
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_FLASH)
                {
                    if(
bHasNade[id][I_FLASH])
                    {
                        if(
cs_get_user_bpammo(idCSW_FLASHBANG) > 1)
                            
client_print(idprint_center"You can't carry any more of those.");
                        else
                        {
                            
cs_set_user_bpammo(idCSW_FLASHBANG2);
                            
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                        }
                    }
                    else
                    {
                        
bHasNade[id][I_FLASH] = true;
                        
give_item(id"weapon_flashbang");
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_SMOKE)
                {
                    if(
bHasNade[id][I_SMOKE])
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
bHasNade[id][I_SMOKE] = true;
                        
give_item(id"weapon_smokegrenade");
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_NAPALM)
                {
                    if(
bBoughtNapalm[id])
                        
client_print(idprint_center"You can buy this item only once per spawn.");
                    if(
bHasNade[id][I_NAPALM])
                        
client_print(idprint_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(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == I_DECOY)
                {
                    if(
bBoughtDecoy[id])
                        
client_print(idprint_center"You can buy this item only once per spawn.");
                    if(
bHasNade[id][I_DECOY])
                        
client_print(idprint_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(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
            }
            case 
EQUIPMENT:
            {
                if(
<= key <= 1)
                {
                    if(
CanBuyArmor(idkey))
                    {
                        if(
key == 0)
                            
cs_set_user_armor(id100CS_ARMOR_KEVLAR);
                        else
                            
cs_set_user_armor(id100CS_ARMOR_VESTHELM);
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == 2)
                {
                    if(
cs_get_user_nvg(id))
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
cs_set_user_nvg(id1);
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == 3)
                {
                    if(
cs_get_user_defuse(id))
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
cs_set_user_defuse(id1);
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
                else if(
key == 4)
                {
                    if(
cs_get_user_shield(id))
                        
client_print(idprint_center"You can't carry any more of those.");
                    else
                    {
                        
give_item(id"weapon_shield");
                        
cs_set_user_money(idiMoney g_SubMenuItemPriceCT[i_menu_type[id]][key]);
                    }
                }
            }
        }
    }
    
ShowSecondMenu(id);
}

bool:BuyTimeExpired()    return (get_cvar_float("mp_buytime") < (get_gametime() - fNewRoundTime)) ? true false;

bool:CanBuyAnItemInCategory(idimoney)
{
    for(new 
b=0;b<9;b++)
    {
        if(
CanBuyItem(idibmoney))
            return 
true;
    }
    return 
false;
}

bool:CanBuyItem(idibmoney)
{
    static 
CsTeams:iTeam;
    
iTeam cs_get_user_team(id);
    if(
iTeam == CS_TEAM_CT)
    {
        if(
== EQUIPMENT)
        {
            if(
<= <= 1)
                return (
CanBuyArmor(idb) && money >= g_SubMenuItemPriceCT[i][b]) ? true false;
            if(
== 2)
                return (!
cs_get_user_nvg(id) && money >= g_SubMenuItemPriceCT[i][b]) ? true false;
            if(
== 3)
                return (!
cs_get_user_defuse(id) && money >= g_SubMenuItemPriceCT[i][b]) ? true false;
            if(
== 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(
== EQUIPMENT)
        {
            if(
<= <= 1)
                return (
CanBuyArmor(idb) && money >= g_SubMenuItemPriceT[i][b]) ? true false;
            if(
== 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(iditem)
{
    new 
CsArmorType:ArmorType;
    new 
iArmor cs_get_user_armor(idArmorType);
    if(!
item)
    {
        if(
iArmor 100)
            return 
true;
    }
    else
    {
        if(
ArmorType != CS_ARMOR_VESTHELM)
            return 
true;
    }
    return 
false;
}

ForceDropWeapon(idiSlot)
{
    new Array:
aWeaponIDs ArrayCreate(1);
    new 
iCount GetWeaponsFromSlot(idiSlot_aWeaponIDs);
    new 
iWeaponIDszWeaponName[32];
    for( new 
0iCounti++ )
    {
        
iWeaponID ArrayGetCell(aWeaponIDsi);
        
get_weaponname(iWeaponIDszWeaponNamecharsmax(szWeaponName));
        
        
engclient_cmd(id"drop"szWeaponName);
    }
    
ArrayDestroy(aWeaponIDs);
}

stock GetWeaponsFromSlot(idiSlot, Array:aWeaponEntities=Invalid_Array, Array:aWeaponIDs=Invalid_Array)
{
    new 
iWeaponCount 0;
    if(
<= iSlot <= 5)
    {
        new 
iEntity get_pdata_cbase(idm_rpgPlayerItems_Slot0 iSlot5);
        if(
iEntity 0)
        {
            do
            {
                if(
aWeaponEntities != Invalid_Array)
                {
                    
ArrayPushCellaWeaponEntitiesiEntity);
                }
                if(
aWeaponIDs != Invalid_Array)
                {
                    
ArrayPushCell(aWeaponIDsget_pdata_int(iEntitym_iId4));
                }
                
iWeaponCount++;
            }
            while((
iEntity get_pdata_cbase(iEntitym_pNext4)) > 0);
        }
    }
    return 
iWeaponCount;

Attached Files
File Type: sma Get Plugin or Get Source (NewBuyMenu.sma - 541 views - 41.3 KB)
__________________

Last edited by wicked95; 12-14-2015 at 16:48.
wicked95 is offline
 


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:05.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode