AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   When thrown molotov server crash. No error. (https://forums.alliedmods.net/showthread.php?t=276090)

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_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;



wicked95 12-18-2015 07:48

Re: When thrown molotov server crash. No error.
 
Anyone?

Arkshine 12-18-2015 07:59

Re: When thrown molotov server crash. No error.
 
Debug and see what code triggers crash.


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

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