#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <sqlx>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <xs>
#include <ColorChat>
new const PLUGIN[] = "Global Offensive";
new const VERSION[] = "2.15";
new const AUTHOR[] = "DeRoiD";
new const Prefix[] = "[CSGOMOD]";
new SQL_Host[32], SQL_Database[32], SQL_User[32], SQL_Password[32];
new Handle:SQL_TUPLE;
new ServerLoaded;
new const SkinFolder[] = "deroidcsgo/";
new const DSkinFolder[] = "deroidcsgo/default/";
#define MAXP 32 + 1
#define MAXWP 120 + 1
#define MAXCASES 6
#define MAXKNIFESKINS 30 + 1
#define MAXTRADEINSAMETIME 5
#define RARE 4
#define COVERT 3
#define RESTRICTED 2
#define COMMON 1
#pragma semicolon 1
new Weapons[MAXP][MAXWP], SkinDataTrade[MAXWP][32], inUse[MAXP][4], Dollars[MAXP], Cases[MAXP][MAXCASES+1], Keys[MAXP], Name[MAXP][32],
TradeFounding[MAXP], inTrade[MAXP], TradeID[MAXP], TradePiece[MAXP], TradeItem[MAXP], TradeDollars[MAXP],
TradePartner[MAXP], Accept[MAXP], MarketDollar[MAXP], MarketItem[MAXP], InMarket[MAXP], bool:Logined[MAXP],
User[MAXP][32], Password[MAXP][32], Found[MAXP], UserLoad[MAXP], RegisterMod[MAXP], inProgress[MAXP],
UserID[MAXP], Activity[MAXP], Choosen[MAXP], CurrentRank[MAXP], Kills[MAXP];
new dSync;
new CvarHost, CvarDatabase, CvarUser, CvarPassword, CvarFoundCase, CvarFoundKey, CvarMinDollarDrop,
CvarMaxDollarDrop, CvarMinDollarMarket, CvarMaxDollarMarket, CvarSkinCheck, CvarMenuButton, CvarWeaponMenu, CvarGiveSmokeGrenade;
new MinDollarMarket, MaxDollarMarket, MinDollarDrop, MaxDollarDrop, FoundKeyChance, FoundCasesChance, GiveSmokeGrenade;
new PendingTrade, PTradeId[MAXP];
new const AnimationIDs[][] =
{
{ 0, 0, 0 },
{ 6, 0, 1 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 6, 0, 1 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 6, 0, 1 },
{ 6, 0, 1 },
{ 16, 17, 2 },
{ 13, 0, 2 },
{ 6, 0, 1 },
{ 6, 0, 1 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 15, 14, 1 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 6, 0, 2 },
{ 0, 0, 0 },
{ 6, 0, 1 },
{ 8, 0, 3 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 }
};
new const DropData[][] =
{
{ 0, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0000 },
{ 0, 01, 11, 21, 33, 43, 53, 65, 75, 85, 0000 },
{ 0, 31, 41, 51, 83, 73, 63, 35, 45, 55, 0000 },
{ 1, 81, 71, 61, 13, 23, 03, 25, 15, 05, 0004 },
{ 1, 02, 12, 22, 34, 44, 54, 66, 76, 86, 0008 },
{ 1, 32, 42, 52, 84, 74, 64, 36, 46, 56, 0010 },
{ 1, 82, 72, 62, 14, 24, 04, 26, 16, 06, 0020 }
};
new const DefaultModels[][][] = {
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "HE.mdl", "weapon_hegrenade" },
{ "", "" },
{ "C4.mdl", "weapon_c4" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "", "" },
{ "Galil.mdl", "weapon_galil" },
{ "Famas.mdl", "weapon_famas" },
{ "USP-S.mdl", "weapon_usp" },
{ "Glock.mdl", "weapon_glock18" },
{ "AWP.mdl", "weapon_awp" },
{ "MP7.mdl", "weapon_mp5navy" },
{ "", "" },
{ "", "" },
{ "M4A4.mdl", "weapon_m4a1" },
{ "", "" },
{ "", "" },
{ "FLASH.mdl", "weapon_flashbang" },
{ "Deagle.mdl", "weapon_deagle" },
{ "", "" },
{ "AK47.mdl", "weapon_ak47" },
{ "Knife.mdl", "weapon_knife" },
{ "", "" },
{ "", "" },
{ "", "" }
};
new const RareData[][] =
{
"",
"\d",
"\w",
"\r",
"\y"
};
new const SkinData[][][] =
{
{ "Name", "VMODEL", "PMODEL", 0, 0 },
{ "AK-47 | Outlaw", "ak47/Outlaw", "", CSW_AK47, COMMON },
{ "AK-47 | Aquamarine Revenge", "ak47/Aquamarine", "", CSW_AK47, COMMON },
{ "AK-47 | Jaguar", "ak47/Jaguar", "", CSW_AK47, RESTRICTED },
{ "AK-47 | Vulcan", "ak47/Vulcan", "", CSW_AK47, RESTRICTED },
{ "AK-47 | Wasteland Rebel", "ak47/Wasteland", "", CSW_AK47, COVERT },
{ "AK-47 | Fireserpent", "ak47/Fireserpent", "", CSW_AK47, COVERT },
{ "", "AK47/", "", CSW_AK47, 0 },
{ "", "AK47/", "", CSW_AK47, 0 },
{ "", "AK47/", "", CSW_AK47, 0 },
{ "", "AK47/", "", CSW_AK47, 0 },
{ "AWP | Worm God", "awp/WormGod", "", CSW_AWP, COMMON },
{ "AWP | Man'o'war", "awp/Manowar", "", CSW_AWP, COMMON },
{ "AWP | Redline", "awp/Redline", "", CSW_AWP, RESTRICTED },
{ "AWP | Hyper Beast", "awp/HBeast", "", CSW_AWP, RESTRICTED },
{ "AWP | Asiimov", "awp/Asiimov", "", CSW_AWP, COVERT },
{ "AWP | Dragon Lore", "awp/DragonLore", "", CSW_AWP, COVERT },
{ "", "AWP/", "", CSW_AWP, 0 },
{ "", "AWP/", "", CSW_AWP, 0 },
{ "", "AWP/", "", CSW_AWP, 0 },
{ "", "AWP/", "", CSW_AWP, 0 },
{ "M4A4 | Griffin", "m4a1/Griffin", "", CSW_M4A1, COMMON },
{ "M4A4 | Bullet Rain", "m4a1/BulletRain", "", CSW_M4A1, COMMON },
{ "M4A4 | Dragon King", "m4a1/DragonKing", "", CSW_M4A1, RESTRICTED },
{ "M4A4 | Asiimov", "m4a1/Asiimov", "", CSW_M4A1, RESTRICTED },
{ "M4A4 | Poseidon", "m4a1/Poseidon", "", CSW_M4A1, COVERT },
{ "M4A4 | Howl", "m4a1/Howl", "", CSW_M4A1, COVERT },
{ "", "m4a4/", "", CSW_M4A1, 0 },
{ "", "m4a4/", "", CSW_M4A1, 0 },
{ "", "m4a4/", "", CSW_M4A1, 0 },
{ "", "m4a4/", "", CSW_M4A1, 0 },
{ "FAMAS | Blue Way", "famas/BlueWay", "", CSW_FAMAS, COMMON },
{ "FAMAS | Nuclear", "famas/Nuclear", "", CSW_FAMAS, COMMON },
{ "FAMAS | Vanquish", "famas/Vanquish", "", CSW_FAMAS, RESTRICTED },
{ "FAMAS | Biohazard", "famas/Biohazard", "", CSW_FAMAS, RESTRICTED },
{ "FAMAS | Pulse", "famas/Pulse", "", CSW_FAMAS, COVERT },
{ "FAMAS | Spitfire", "famas/Spitfire", "", CSW_FAMAS, COVERT },
{ "", "famas/", "", CSW_FAMAS, 0 },
{ "", "famas/", "", CSW_FAMAS, 0 },
{ "", "famas/", "", CSW_FAMAS, 0 },
{ "", "famas/", "", CSW_FAMAS, 0 },
{ "GALIL-AR | Crimson Web", "galil/CrimsonWeb", "", CSW_GALIL, COMMON },
{ "GALIL-AR | Blue Way", "galil/BlueWay", "", CSW_GALIL, COMMON },
{ "GALIL-AR | Eco", "galil/Eco", "", CSW_GALIL, RESTRICTED },
{ "GALIL-AR | Odyssy", "galil/Odyssy", "", CSW_GALIL, RESTRICTED },
{ "GALIL-AR | Cerberus", "galil/Cerberus", "", CSW_GALIL, COVERT },
{ "GALIL-AR | Chatterbox", "galil/Chatterbox", "", CSW_GALIL, COVERT },
{ "", "galil/", "", CSW_GALIL, 0 },
{ "", "galil/", "", CSW_GALIL, 0 },
{ "", "galil/", "", CSW_GALIL, 0 },
{ "", "galil/", "", CSW_GALIL, 0 },
{ "MP7 | Blood", "mp5/Blood", "", CSW_MP5NAVY, COMMON },
{ "MP7 | Now Purple!", "mp5/NowPurple", "", CSW_MP5NAVY, COMMON },
{ "MP7 | Rising Sun", "mp5/RisingSun", "", CSW_MP5NAVY, RESTRICTED },
{ "MP7 | Seaweed", "mp5/Seaweed", "", CSW_MP5NAVY, RESTRICTED },
{ "MP7 | Carbonite", "mp5/Carbonite", "", CSW_MP5NAVY, COVERT },
{ "MP7 | Urbanhazard", "mp5/UrbanHazard", "", CSW_MP5NAVY, COVERT },
{ "", "mp5/", "", CSW_MP5NAVY, 0 },
{ "", "mp5/", "", CSW_MP5NAVY, 0 },
{ "", "mp5/", "", CSW_MP5NAVY, 0 },
{ "", "mp5/", "", CSW_MP5NAVY, 0 },
{ "USP-S | Stainless", "usp/Stainless", "", CSW_USP, COMMON },
{ "USP-S | Vertex", "usp/Vertex", "", CSW_USP, COMMON },
{ "USP-S | Caiman", "usp/Caiman", "", CSW_USP, RESTRICTED },
{ "USP-S | Road Rash", "usp/Rash", "", CSW_USP, RESTRICTED },
{ "USP-S | Orion", "usp/Orion", "", CSW_USP, COVERT },
{ "USP-S | Kill Confirmed", "usp/KConfirmed", "", CSW_USP, COVERT },
{ "", "usp/", "", CSW_USP, 0 },
{ "", "usp/", "", CSW_USP, 0 },
{ "", "usp/", "", CSW_USP, 0 },
{ "", "usp/", "", CSW_USP, 0 },
{ "DEAGLE | Engraved", "deagle/Engraved", "", CSW_DEAGLE, COMMON },
{ "DEAGLE | Golden Rose", "deagle/GoldenRose", "", CSW_DEAGLE, COMMON },
{ "DEAGLE | Biohazard", "deagle/Biohazard", "", CSW_DEAGLE, RESTRICTED },
{ "DEAGLE | Jungle", "deagle/Jungle", "", CSW_DEAGLE, RESTRICTED },
{ "DEAGLE | Hypnotic", "deagle/Hypnotic", "", CSW_DEAGLE, COVERT },
{ "DEAGLE | Blaze", "deagle/Blaze", "", CSW_DEAGLE, COVERT },
{ "", "deagle/", "", CSW_DEAGLE, 0 },
{ "", "deagle/", "", CSW_DEAGLE, 0 },
{ "", "deagle/", "", CSW_DEAGLE, 0 },
{ "", "deagle/", "", CSW_DEAGLE, 0 },
{ "GLOCK-18 | Candy Apple", "glock/Candy", "", CSW_GLOCK18, COMMON },
{ "GLOCK-18 | Green Way", "glock/GreenWay", "", CSW_GLOCK18, COMMON },
{ "GLOCK-18 | Catacombs", "glock/Catacombs", "", CSW_GLOCK18, RESTRICTED },
{ "GLOCK-18 | Grinder", "glock/Grinder", "", CSW_GLOCK18, RESTRICTED },
{ "GLOCK-18 | Water Elemental", "glock/WaterElemental", "", CSW_GLOCK18, COVERT },
{ "GLOCK-18 | Fade", "glock/Fade", "", CSW_GLOCK18, COVERT },
{ "", "glock/", "", CSW_GLOCK18, 0 },
{ "", "glock/", "", CSW_GLOCK18, 0 },
{ "", "glock/", "", CSW_GLOCK18, 0 },
{ "", "glock/", "", CSW_GLOCK18, 0 },
{ "Karambit | Doppler Ocean", "knife/DopplerOcean_K", "", CSW_KNIFE, RARE },
{ "Karambit | Doppler Pink", "knife/DopplerPink_K", "", CSW_KNIFE, RARE },
{ "Karambit | Crimson Web", "knife/Crimson_K", "", CSW_KNIFE, RARE },
{ "Butterfly Knife | Sea", "knife/Sea_BF", "", CSW_KNIFE, RARE },
{ "Butterfly Knife | Hawaiian", "knife/Hawaiian_BF", "", CSW_KNIFE, RARE },
{ "Butterfly Knife | Crimson Web", "knife/Crimson_BF", "", CSW_KNIFE, RARE },
{ "Bayonet M9 | Fade", "knife/Fade_B", "", CSW_KNIFE, RARE },
{ "Bayonet M9 | Doppler Sapphire", "knife/Sapphire_B", "", CSW_KNIFE, RARE },
{ "Bayonet | Space", "knife/Space_B", "", CSW_KNIFE, RARE },
{ "Gut Knife | Asiimov", "knife/Asiimov_GUT", "", CSW_KNIFE, RARE },
{ "Gut Knife | Doppler", "knife/Doppler_GUT", "", CSW_KNIFE, RARE },
{ "Gut Knife | Razer", "knife/Razer_GUT", "", CSW_KNIFE, RARE },
{ "Flip Knife | ROG", "knife/ROG_FL", "", CSW_KNIFE, RARE },
{ "Flip Knife | Fade", "knife/Fade_FL", "", CSW_KNIFE, RARE },
{ "Flip Knife | Marble Fade", "knife/MarbleFade_FL", "", CSW_KNIFE, RARE },
{ "Shadow Daggers", "knife/Def_SD", "", CSW_KNIFE, RARE },
{ "Shadow Daggers | Magma", "knife/Magma_SD", "", CSW_KNIFE, RARE },
{ "Shadow Daggers | Rainbow", "knife/Rainbow_SD", "", CSW_KNIFE, RARE },
{ "Falchion Knife | Orange", "knife/Orange_F", "", CSW_KNIFE, RARE },
{ "Falchion Knife | Diamond", "knife/Diamond_F", "", CSW_KNIFE, RARE },
{ "Falchion Knife", "knife/Def_F", "", CSW_KNIFE, RARE },
{ "Huntsman Knife | Fade", "knife/Fade_HM", "", CSW_KNIFE, RARE },
{ "Huntsman Knife | Crimson Web", "knife/Crimson_HM", "", CSW_KNIFE, RARE },
{ "Huntsman Knife | Slaughter", "knife/Slaughter_HM", "", CSW_KNIFE, RARE },
{ "", "knife/", "", CSW_KNIFE, 0 },
{ "", "knife/", "", CSW_KNIFE, 0 },
{ "", "knife/", "", CSW_KNIFE, 0 },
{ "", "knife/", "", CSW_KNIFE, 0 },
{ "", "knife/", "", CSW_KNIFE, 0 },
{ "", "knife/", "", CSW_KNIFE, 0 }
};
new const KeyName[] = "Key";
new const Case_Data[][][] =
{
{ "Case Name", "Found Num 0.1-100.0%" }, //Last must be 1
{ "Chroma Case", 1000 }, //First must be 1000
{ "Chroma 2 Case", 1025 },
{ "Chroma 3 Case", 0380 },
{ "Gamma Case", 0105 },
{ "Gamma 2 Case", 0017 },
{ "Falcion Case", 0009 }
};
new const FirstWeaponNames[][][] =
{
{ "", "", 0 },
{ "AK47", "weapon_ak47", CSW_AK47 },
{ "M4A4", "weapon_m4a1", CSW_M4A1 },
{ "AWP", "weapon_awp", CSW_AWP },
{ "FAMAS", "weapon_famas", CSW_FAMAS },
{ "MP5", "weapon_mp5navy", CSW_MP5NAVY },
{ "GALIL", "weapon_galil", CSW_GALIL }
};
new const SecondaryWeaponNames[][][] =
{
{ "", "", 0 },
{ "DEAGLE", "weapon_deagle", CSW_DEAGLE },
{ "USP", "weapon_usp", CSW_USP },
{ "GLOCK-18", "weapon_glock18", CSW_GLOCK18 }
};
new const Ranks[][] =
{
"",
"Silver I",
"Silver II",
"Silver III",
"Silver IV",
"Silver Elite",
"Silver Elite Master",
"Gold Nova I",
"Gold Nova II",
"Gold Nova III",
"Gold Nova Master",
"Master Guardian I",
"Master Guardian II",
"Master Guardian Elite",
"Distinguished Master Guardian",
"Legendary Eagle",
"Legendary Eagle Master",
"Supreme Master First Class",
"The Global Elite",
""
};
new const RankKills[] =
{
0,
0,
25,
100,
250,
750,
1000,
1500,
2250,
3000,
3900,
4900,
5900,
7000,
8500,
10000,
15000,
22000,
30000,
40000,
0
};
public plugin_precache()
{
new Mdl[96];
for(new i = 1; i < sizeof(SkinData); i++)
{
if(strlen(SkinData[i][0]) > 1)
{
formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[i][1]);
precache_model(Mdl);
}
if(strlen(SkinData[i][2]) > 1)
{
formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[i][2]);
precache_model(Mdl);
}
}
for(new i = 1; i < sizeof(DefaultModels); i++)
{
if(strlen(DefaultModels[i][0]) > 1)
{
formatex(Mdl, charsmax(Mdl), "models/%s%s", DSkinFolder, DefaultModels[i][0]);
precache_model(Mdl);
}
}
}
public plugin_end()
{
SQL_FreeHandle(SQL_TUPLE);
}
public plugin_init()
{
for(new i; i < MAXWP; i++)
{
copy(SkinDataTrade[i], 31, SkinData[i][0]);
}
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar(PLUGIN, VERSION, FCVAR_SERVER);
register_dictionary("csgov2.txt");
CvarHost = register_cvar("csgo_host", "");
CvarDatabase = register_cvar("csgo_db", "");
CvarUser = register_cvar("csgo_user", "");
CvarPassword = register_cvar("csgo_pw", "");
get_pcvar_string(CvarHost, SQL_Host, charsmax(SQL_Host));
get_pcvar_string(CvarDatabase, SQL_Database, charsmax(SQL_Database));
get_pcvar_string(CvarUser, SQL_User, charsmax(SQL_User));
get_pcvar_string(CvarPassword, SQL_Password, charsmax(SQL_Password));
CvarFoundCase = register_cvar("csgo_casefound", "20");
CvarFoundKey = register_cvar("csgo_keyfound", "15");
CvarMinDollarDrop = register_cvar("csgo_minddrop", "1");
CvarMaxDollarDrop = register_cvar("csgo_maxddrop", "3");
CvarMinDollarMarket = register_cvar("csgo_minmarketd", "10");
CvarMaxDollarMarket = register_cvar("csgo_maxmarketd", "1000000");
CvarSkinCheck = register_cvar("csgo_scheck", "1");
CvarMenuButton = register_cvar("csgo_mbutton", "1");
CvarWeaponMenu = register_cvar("csgo_wpmenu", "1");
CvarGiveSmokeGrenade = register_cvar("csgo_givesg", "0");
FoundCasesChance = get_pcvar_num(CvarFoundCase);
FoundKeyChance = get_pcvar_num(CvarFoundKey);
MinDollarDrop = get_pcvar_num(CvarMinDollarDrop);
MaxDollarDrop = get_pcvar_num(CvarMaxDollarDrop);
MinDollarMarket = get_pcvar_num(CvarMinDollarMarket);
MaxDollarMarket = get_pcvar_num(CvarMaxDollarMarket);
FoundCasesChance = get_pcvar_num(CvarFoundCase);
GiveSmokeGrenade = get_pcvar_num(CvarGiveSmokeGrenade);
register_concmd("TRADEPIECE", "cmdPiece");
register_concmd("TRADEDOLLARS", "cmdDollarT");
register_concmd("MARKETDOLLAR", "cmdDollarM");
register_concmd("MY_USERNAME", "cmdUser");
register_concmd("MY_PASSWORD", "cmdPassword");
register_clcmd("say /menu", "MainMenu");
if(get_pcvar_num(CvarSkinCheck) == 1)
register_impulse(100, "SkinCheck");
if(get_pcvar_num(CvarMenuButton) == 1)
register_impulse(201, "MainMenu");
register_event("DeathMsg", "Death", "a");
dSync = CreateHudSyncObj();
for(new i = 1; i < sizeof(DefaultModels); i++)
{
if(strlen(DefaultModels[i][1]) > 0)
{
RegisterHam(Ham_Item_Deploy, DefaultModels[i][1], "WeaponSkin", 1);
}
}
RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1);
if(get_pcvar_num(CvarWeaponMenu) == 1)
{
register_message(get_user_msgid("StatusIcon"), "msgStatusIcon");
register_clcmd("say /guns", "Guns");
register_clcmd("say guns", "Guns");
}
register_clcmd("say", "HandleSay");
set_task(55.0, "Message", 20170309, _, _, "b");
SQL_FirstLoad() ;
}
public msgStatusIcon(msgid, msgdest, id)
{
static szIcon[8];
get_msg_arg_string(2, szIcon, 7);
if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
{
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public Message()
{
for(new i; i < MAXP; i++)
if(is_user_connected(i))
print_color(i, "!g%s!y %L", Prefix, i, "SVMESSAGE");
}
public HandleSay(id)
{
new Message[192], None[2][32], Chat[192], Alive[16];
read_args(Message, 191);
remove_quotes(Message);
formatex(None[0], 31, "");
formatex(None[1], 31, " ");
if(Message[0] == '@' || Message[0] == '!' || equal (Message, ""))
return PLUGIN_HANDLED;
if(!is_user_alive(id))
Alive = "*DEATH* ";
else
Alive = "";
if(!equali(Message, None[0]) && !equali(Message, None[1]))
{
if(Logined[id])
{
formatex(Chat, 191, "^1%s^4[%s] ^3%s^1 : %s", Alive, Ranks[CurrentRank[id]], Name[id], Message);
}
else
{
formatex(Chat, 191, "^1%s^4[Unranked] ^3%s^1 : %s", Alive, Name[id], Message);
}
switch(cs_get_user_team(id))
{
case CS_TEAM_T: ColorChat(0, RED, Chat);
case CS_TEAM_CT: ColorChat(0, BLUE, Chat);
case CS_TEAM_SPECTATOR: ColorChat(0, GREY, Chat);
}
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public Death()
{
new id = read_data(1);
new x = read_data(2);
if(id == 0 || id == x || x == 0 || !Logined[id])
{
return;
}
new DollarDrop = random_num(MinDollarDrop, MaxDollarDrop);
Dollars[id] += DollarDrop;
set_hudmessage(0, 255, 0, -1.00, 0.85, 0, 6.0, 2.0);
ShowSyncHudMsg(id, dSync, "+%d$", x);
new Drop = random_num(1, 100);
if(FoundCasesChance >= Drop)
{
DropCase(id);
}
else if(FoundCasesChance+FoundKeyChance >= Drop)
{
for(new i; i < MAXP; i++)
if(is_user_connected(i))
print_color(i, "!g%s!y %L", Prefix, i, "FOUND", Name[id], KeyName);
Keys[id]++;
}
Kills[id]++;
if(RankKills[CurrentRank[id]+1] <= Kills[id] && RankKills[CurrentRank[id]+1] != 0)
{
CurrentRank[id]++;
print_color(id, "!g%s!y %L", Prefix, id, "RANKNEWLV", Ranks[CurrentRank[id]]);
}
SQL_UpdateUser(id);
}
public DropCase(id)
{
new RandomNum;
RandomNum = random(1001);
for(new i = 1; i < sizeof(Case_Data); i++)
{
if(Case_Data[i][1][0] <= RandomNum)
{
for(new x; x < MAXP; x++)
if(is_user_connected(x))
print_color(x, "!g%s!y %L", Prefix, x, "FOUND", Name[id], Case_Data[i][0]);
Cases[id][i]++;
break;
}
}
SQL_UpdateUser(id);
}
public SkinDrop(id, CaseNum)
{
new RandomNum = random_num(1, 1000);
if(DropData[CaseNum][10] >= RandomNum && DropData[CaseNum][0] == 1)
{
new RandomKnife = random_num(91, 90+MAXKNIFESKINS-1);
Weapons[id][RandomKnife]++;
for(new i; i < MAXP; i++)
if(is_user_connected(i))
print_color(i, "!g%s!y %L", Prefix, i, "UNBOXING", Name[id], SkinData[RandomKnife][0]);
}
else
{
new RandomNums[2], DroppedSkin;
RandomNum = random_num(1, 10);
if(RandomNum == 1)
{
RandomNums[0] = 7; RandomNums[1] = 9;
}
else if(RandomNum <= 4)
{
RandomNums[0] = 4; RandomNums[1] = 6;
}
else if(RandomNum <= 10)
{
RandomNums[0] = 1; RandomNums[1] = 3;
}
DroppedSkin = DropData[CaseNum][random_num(RandomNums[0], RandomNums[1])];
Weapons[id][DroppedSkin]++;
for(new i; i < MAXP; i++)
if(is_user_connected(i))
print_color(i, "!g%s!y %L", Prefix, i, "UNBOXING", Name[id], SkinData[DroppedSkin][0]);
}
SQL_UpdateUser(id);
}
public WeaponSkin(f)
{
new id = get_pdata_cbase(f, 41, 4);
new wid = cs_get_weapon_id(f);
if(id > 32 || id < 1 || !is_user_alive(id))
{
return HAM_SUPERCEDE;
}
new k = AnimationIDs[wid][2], Mdl[86];
if(inUse[id][k] > 0 && SkinData[inUse[id][k]][3][0] == wid && Weapons[id][inUse[id][k]] > 0)
{
formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[inUse[id][k]][1]);
set_pev(id, pev_viewmodel2, Mdl);
if(strlen(SkinData[inUse[id][k]][2]) > 0)
{
formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[inUse[id][k]][2]);
set_pev(id, pev_weaponmodel2, Mdl);
}
}
else
{
formatex(Mdl, charsmax(Mdl), "models/%s%s", DSkinFolder, DefaultModels[wid][0]);
set_pev(id, pev_viewmodel2, Mdl);
}
return HAM_IGNORED;
}
public MainMenu(id)
{
if(!Logined[id])
{
RegMenu(id);
return;
}
new String[128];
formatex(String, charsmax(String), "%L", id, "MAINMENU", Dollars[id]);
new Menu = menu_create(String, "MainMenuh");
formatex(String, charsmax(String), "%L", id, "INVENTORY");
menu_additem(Menu, String, "1");
formatex(String, charsmax(String), "%L", id, "CASEOPEN");
menu_additem(Menu, String, "2");
formatex(String, charsmax(String), "%L", id, "TRADE");
menu_additem(Menu, String, "3");
formatex(String, charsmax(String), "%L^n", id, "MARKET");
menu_additem(Menu, String, "4");
if(RankKills[CurrentRank[id]+1] != 0)
{
formatex(String, charsmax(String), "%L%L", id, "TRASH", id, "RANKMENU",
Ranks[CurrentRank[id]], Kills[id], RankKills[CurrentRank[id]+1], Ranks[CurrentRank[id]+1]);
}
else
{
formatex(String, charsmax(String), "%L%L", id, "TRASH", id, "RANKMENUMAX",
Ranks[CurrentRank[id]], Kills[id]);
}
menu_additem(Menu, String, "5");
menu_display(id, Menu);
}
public MainMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
switch(x)
{
case 1 : {
Inventory(id);
}
case 2 : {
CaseMenu(id);
if(MarketItem[id] > 0 || TradeItem[id] > 0 || inTrade[id] > 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
DeleteTradeandMarket(id);
}
}
case 3 : {
if(PendingTrade > MAXTRADEINSAMETIME && PTradeId[id] == 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "BLOCKTRADE");
return;
}
TradeMenu(id);
if(MarketItem[id] > 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
DeleteTradeandMarket(id);
}
}
case 4 : {
MMarketMenu(id);
if(TradeItem[id] > 0 || inTrade[id] > 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
DeleteTradeandMarket(id);
}
}
case 5 : {
TrashMenu(id);
if(MarketItem[id] > 0 || TradeItem[id] > 0 || inTrade[id] > 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "TMMESSAGE");
DeleteTradeandMarket(id);
}
}
}
}
public CaseMenu(id)
{
new String[128];
formatex(String, charsmax(String), "%L", id, "CASEOPENM", Keys[id]);
new Menu = menu_create(String, "CaseMenuh");
for(new i = 1; i < sizeof(Case_Data); i++)
{
new NumToString[6];
num_to_str(i, NumToString, 5);
formatex(String, charsmax(String), "%s \r(%d)", Case_Data[i][0], Cases[id][i]);
menu_additem(Menu, String, NumToString);
}
menu_display(id, Menu);
}
public CaseMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
if(Cases[id][x] > 0 && Keys[id] > 0)
{
Keys[id]--;
Cases[id][x]--;
SkinDrop(id, x);
}
else if(Keys[id] == 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "NOTENOUGHK");
}
else
{
print_color(id, "!g%s!y %L", Prefix, id, "NOTENOUGHC");
}
CaseMenu(id);
}
public TrashMenu(id)
{
new String[128];
formatex(String, charsmax(String), "%L", id, "TRASH");
new Menu = menu_create(String, "TrashMenuh");
for(new i = 1; i < sizeof(SkinData); i++)
{
if(Weapons[id][i] > 0 && strlen(SkinData[i][0]) > 1)
{
new NumToString[6];
num_to_str(i, NumToString, 5);
if(SkinData[i][3][0] != CSW_KNIFE)
formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
else
formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinData[i][0], Weapons[id][i]);
menu_additem(Menu, String, NumToString);
}
}
menu_display(id, Menu);
}
public TrashMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
Weapons[id][x]--;
TrashMenu(id);
SQL_UpdateUser(id);
}
public Inventory(id)
{
new String[128];
formatex(String, charsmax(String), "%L", id, "INVENTORY");
new Menu = menu_create(String, "Inventoryh");
for(new i = 1; i < sizeof(SkinData); i++)
{
if(Weapons[id][i] > 0 && strlen(SkinData[i][0]) > 1)
{
new NumToString[6];
num_to_str(i, NumToString, 5);
if(SkinData[i][3][0] != CSW_KNIFE)
formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinDataTrade[i], Weapons[id][i]);
else
formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinDataTrade[i], Weapons[id][i]);
menu_additem(Menu, String, NumToString);
}
}
menu_display(id, Menu);
}
public Inventoryh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
if(SkinData[x][3][0] == 16 || SkinData[x][3][0] == 17 || SkinData[x][3][0] == 26)
{
inUse[id][2] = x;
}
else if(SkinData[x][3][0] == 29)
{
inUse[id][3] = x;
}
else
{
inUse[id][1] = x;
}
}
public SkinCheck(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new Sil, WPName[32];
formatex(WPName, charsmax(WPName), DefaultModels[get_user_weapon(id)][1]);
new WPN = find_ent_by_owner(-1, DefaultModels[get_user_weapon(id)][1], id);
if(get_user_weapon(id) == CSW_M4A1 || get_user_weapon(id) == CSW_USP)
Sil = cs_get_weapon_silen(WPN);
if(get_user_weapon(id) == CSW_AWP)
cs_set_user_zoom(id, 0, 0);
PlayAnimation(id, AnimationIDs[get_user_weapon(id)][Sil]);
return PLUGIN_HANDLED;
}
public TradeMenu(id)
{
if(TradePiece[id] == 0)
{
TradePiece[id] = 1;
}
new String[128], kid, Menu;
if(TradePartner[id] > 0)
kid = TradePartner[id];
else
kid = TradeID[id];
if(TradeFounding[id] == 1)
{
formatex(String, charsmax(String), "%L", id, "WANTTRADE", Name[kid]);
}
else if(inTrade[id] == 1 && inTrade[kid] == 1)
{
formatex(String, charsmax(String), "%L", id, "TRADEITEMS", Name[kid]);
}
else
{
formatex(String, charsmax(String), "%L", id, "TRADEDOLLAR", Dollars[id]);
}
Menu = menu_create(String, "TradeMenuh");
if(TradeFounding[id] == 1)
{
formatex(String, charsmax(String), "%L", id, "TRADEACCEPT");
menu_additem(Menu, String, "-3");
formatex(String, charsmax(String), "%L", id, "TRADEREJECT");
menu_additem(Menu, String, "-2");
}
else if(inTrade[id] == 1 && inTrade[kid] == 1)
{
if(TradeItem[kid] == 0)
{
formatex(String, charsmax(String), "%L", id, "TRADENOTHING");
}
else if(TradeItem[kid] > 0 && TradeItem[kid] <= 90+MAXKNIFESKINS)
{
formatex(String, charsmax(String), "%L", id, "TRADEITEM", SkinDataTrade[TradeItem[kid]], TradePiece[kid]);
}
else if(TradeItem[kid] > 90+MAXKNIFESKINS && TradeItem[kid] <= 90+MAXKNIFESKINS+MAXCASES)
{
formatex(String, charsmax(String), "%L", id, "TRADEITEM", Case_Data[TradeItem[kid]-(90+MAXKNIFESKINS)][0], TradePiece[kid]);
}
else
{
formatex(String, charsmax(String), "%L", id, "TRADEITEM", KeyName, TradePiece[kid]);
}
menu_additem(Menu, String, "0");
formatex(String, charsmax(String), "%L", id, "TRADEYOURITEMS", TradeDollars[kid]);
menu_additem(Menu, String, "0");
if(TradeItem[id] == 0)
{
formatex(String, charsmax(String), "%L", id, "TRADENOTHING");
}
else if(TradeItem[id] > 0 && TradeItem[id] <= 90+MAXKNIFESKINS)
{
formatex(String, charsmax(String), "%L", id, "TRADEITEM", SkinDataTrade[TradeItem[id]], TradePiece[id]);
}
else if(TradeItem[id] > 90+MAXKNIFESKINS && TradeItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
{
formatex(String, charsmax(String), "%L", id, "TRADEITEM", Case_Data[TradeItem[id]-(90+MAXKNIFESKINS)][0], TradePiece[id]);
}
else
{
formatex(String, charsmax(String), "%L", id, "TRADEITEM", KeyName, TradePiece[id]);
}
menu_additem(Menu, String, "-4");
formatex(String, charsmax(String), "%L", id, "TRADEDOLLAR2", TradeDollars[id]);
menu_additem(Menu, String, "-5");
formatex(String, charsmax(String), "%L", id, "TRADEACCEPT");
menu_additem(Menu, String, "-6");
formatex(String, charsmax(String), "%L", id, "TRADEREJECT");
menu_additem(Menu, String, "-7");
}
else if(TradeID[id] == 0)
{
for(new i; i < MAXP; i++)
{
new NumToStr[6];
if(is_user_connected(i))
{
if(i == id || is_user_bot(i))
continue;
if(TradeFounding[i] == 0 && inTrade[i] == 0)
{
num_to_str(i, NumToStr, 5);
formatex(String, charsmax(String), "%s", Name[i]);
menu_additem(Menu, String, NumToStr);
}
}
}
}
else if(TradeID[id] > 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "DONTACCEPTEDTRADE");
return;
}
menu_display(id, Menu);
}
public TradeMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
if(x <= 0)
{
switch(x)
{
case 0 : TradeMenu(id);
case -3 : {
if(PendingTrade > MAXTRADEINSAMETIME)
{
print_color(id, "!g%s!y %L", Prefix, id, "BLOCKTRADE");
return;
}
TradeFounding[id] = 0;
inTrade[id] = 1;
new kid;
if(TradePartner[id] > 0)
kid = TradePartner[id];
else
kid = TradeID[id];
inTrade[kid] = 1;
TradePiece[id] = 0;
TradePiece[kid] = 0;
PTradeId[id] = 1;
PTradeId[kid] = 1;
TradeMenu(id);
TradeMenu(kid);
PendingTrade++;
}
case -2 : {
new kid;
if(TradePartner[id] > 0)
kid = TradePartner[id];
else
kid = TradeID[id];
inTrade[id] = 0;
TradePartner[id] = 0;
TradeFounding[id] = 0;
inTrade[kid] = 0;
TradeID[kid] = 0;
TradeID[id] = 0;
}
case -4 : {
TChooseItem(id);
}
case -5 : {
client_cmd(id, "messagemode TRADEDOLLARS");
}
case -6 : {
new kid;
if(TradePartner[id] > 0)
kid = TradePartner[id];
else
kid = TradeID[id];
Accept[id] = 1;
if(Accept[id] == 1 && Accept[kid] == 1)
{
Trade(id, kid);
}
else
{
MainMenu(id);
}
}
case -7 : {
new kid;
if(TradePartner[id] > 0)
kid = TradePartner[id];
else
kid = TradeID[id];
inTrade[id] = 0;
TradePartner[id] = 0;
TradeFounding[id] = 0;
TradeID[id] = 0;
inTrade[kid] = 0;
TradePartner[kid] = 0;
TradeFounding[kid] = 0;
TradeID[kid] = 0;
PTradeId[id] = 0;
PTradeId[kid] = 0;
PendingTrade--;
}
}
}
else
{
if(PendingTrade > MAXTRADEINSAMETIME && PTradeId[id] == 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "BLOCKTRADE");
return;
}
TradeID[id] = x;
print_color(x, "!g%s!y %L", Prefix, x, "WANTTRADE2", Name[id]);
TradeFounding[x] = 1;
TradeFounding[id] = 0;
inTrade[id] = 1;
TradePartner[x] = id;
remove_task(TradeID[id]+9929);
set_task(30.0, "DeleteTrade", TradeID[id]+9929);
}
}
public DeleteTrade(id)
{
id = id - 9929;
if(Logined[id])
{
if(inTrade[id] == 0)
{
inTrade[id] = 0;
TradePartner[id] = 0;
TradeFounding[id] = 0;
}
}
}
public Trade(x, y) {
if(Logined[x] && Logined[y] ||
inTrade[x] == 1 && inTrade[y] == 1 ||
Accept[x] == 1 && Accept[y] == 1)
{
PendingTrade--;
if(TradeItem[x] > 0 && TradeItem[x] <= 90+MAXKNIFESKINS)
{
Weapons[y][TradeItem[x]] += TradePiece[x];
Weapons[x][TradeItem[x]] -= TradePiece[x];
}
else if(TradeItem[x] > 90+MAXKNIFESKINS && TradeItem[x] <= 90+MAXKNIFESKINS+MAXCASES)
{
Cases[y][TradeItem[x]-(90+MAXKNIFESKINS)] += TradePiece[x];
Cases[x][TradeItem[x]-(90+MAXKNIFESKINS)] -= TradePiece[x];
}
else if(TradeItem[x] > 0)
{
Keys[y] += TradePiece[x];
Keys[x] -= TradePiece[x];
}
if(TradeItem[y] > 0 && TradeItem[y] <= 90+MAXKNIFESKINS)
{
Weapons[y][TradeItem[y]] -= TradePiece[y];
Weapons[x][TradeItem[y]] += TradePiece[y];
}
else if(TradeItem[y] > 90+MAXKNIFESKINS && TradeItem[y] <= 90+MAXKNIFESKINS+MAXCASES)
{
Cases[y][TradeItem[y]-(90+MAXKNIFESKINS)] -= TradePiece[y];
Cases[x][TradeItem[y]-(90+MAXKNIFESKINS)] += TradePiece[y];
}
else if(TradeItem[y] > 0)
{
Keys[y] -= TradePiece[y];
Keys[x] += TradePiece[y];
}
Dollars[x] += TradeDollars[y];
Dollars[y] += TradeDollars[x];
Dollars[x] -= TradeDollars[x];
Dollars[y] -= TradeDollars[y];
print_color(x, "!g%s!y %L", Prefix, x, "SUCCESSTRADE");
print_color(y, "!g%s!y %L", Prefix, y, "SUCCESSTRADE");
DeleteTradeandMarket(x);
DeleteTradeandMarket(y);
show_menu(x, 0, "^n", 1);
show_menu(y, 0, "^n", 1);
set_task(0.5, "SQL_UpdateUser", x);
set_task(0.5, "SQL_UpdateUser", y);
PTradeId[x] = 0;
PTradeId[y] = 0;
}
}
public TChooseItem(id)
{
new String[128];
formatex(String, charsmax(String), "%L", id, "CHOOSEITEM");
new Menu = menu_create(String, "TChooseItemh");
for(new i = 1; i < sizeof(SkinData); i++)
{
if(Weapons[id][i] > 0 && strlen(SkinDataTrade[i]) > 1)
{
new NumToString[6];
num_to_str(i, NumToString, 5);
if(SkinData[i][3][0] != CSW_KNIFE)
formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinDataTrade[i], Weapons[id][i]);
else
formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinDataTrade[i], Weapons[id][i]);
menu_additem(Menu, String, NumToString);
}
}
for(new i = 1; i < sizeof(Case_Data); i++)
{
if(Cases[id][i] > 0)
{
new NumToString[6];
num_to_str(i+sizeof(SkinData), NumToString, 5);
formatex(String, charsmax(String), "%s \r(%d)", Case_Data[i][0], Cases[id][i]);
menu_additem(Menu, String, NumToString);
}
}
if(Keys[id] > 0)
{
new NumToString[6];
num_to_str(1+sizeof(SkinData)+sizeof(Case_Data), NumToString, 5);
formatex(String, charsmax(String), "%s \r(%d)", KeyName, Keys[id]);
menu_additem(Menu, String, NumToString);
}
menu_display(id, Menu);
}
public TChooseItemh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
TradeItem[id] = x;
client_cmd(id, "messagemode TRADEPIECE");
}
public MChooseItem(id)
{
new String[128];
formatex(String, charsmax(String), "%L", id, "CHOOSEITEM");
new Menu = menu_create(String, "MChooseItemh");
for(new i = 1; i < sizeof(SkinData); i++)
{
if(Weapons[id][i] > 0 && strlen(SkinDataTrade[i]) > 1)
{
new NumToString[6];
num_to_str(i, NumToString, 5);
if(SkinData[i][3][0] != CSW_KNIFE)
formatex(String, charsmax(String), "%s%s \y(%d)", RareData[SkinData[i][4][0]], SkinDataTrade[i], Weapons[id][i]);
else
formatex(String, charsmax(String), "%s%s \w(%d)", RareData[SkinData[i][4][0]], SkinDataTrade[i], Weapons[id][i]);
menu_additem(Menu, String, NumToString);
}
}
for(new i = 1; i < sizeof(Case_Data); i++)
{
if(Cases[id][i] > 0)
{
new NumToString[6];
num_to_str(i+sizeof(SkinData), NumToString, 5);
formatex(String, charsmax(String), "%s \r(%d)", Case_Data[i][0], Cases[id][i]);
menu_additem(Menu, String, NumToString);
}
}
if(Keys[id] > 0)
{
new NumToString[6];
num_to_str(1+sizeof(SkinData)+sizeof(Case_Data), NumToString, 5);
formatex(String, charsmax(String), "%s \r(%d)", KeyName, Keys[id]);
menu_additem(Menu, String, NumToString);
}
menu_display(id, Menu);
}
public MChooseItemh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
MarketItem[id] = x;
MarketMenu(id);
}
public cmdDollarM(id)
{
if(inTrade[id] == 1 || !Logined[id])
return;
new Price, Data[32];
read_args(Data, charsmax(Data));
remove_quotes(Data);
Price = str_to_num(Data);
if(Price <= MinDollarMarket)
{
print_color(id, "!g%s!y %L", Prefix, id, "LOWPRICE", MinDollarMarket);
client_cmd(id, "messagemode MARKETDOLLAR");
MarketMenu(id);
}
else if(MaxDollarMarket >= Price)
{
MarketDollar[id] = Price;
MarketMenu(id);
}
else
{
print_color(id, "!g%s!y %L", Prefix, id, "HIGHPRICE", MaxDollarMarket);
client_cmd(id, "messagemode MARKETDOLLAR");
MarketMenu(id);
}
}
public cmdDollarT(id)
{
if(inTrade[id] == 0 || !Logined[id])
return;
new Piece, Data[32], kid;
read_args(Data, charsmax(Data));
remove_quotes(Data);
Piece = str_to_num(Data);
if(TradePartner[id] > 0)
kid = TradePartner[id];
else
kid = TradeID[id];
if(Piece <= 0)
{
client_cmd(id, "messagemode TRADEDOLLARS");
}
else if(Dollars[id] >= Piece)
{
TradeDollars[id] = Piece;
TradeMenu(id);
TradeMenu(kid);
Accept[id] = 0;
Accept[kid] = 0;
}
else
{
TradeDollars[id] = Dollars[id];
TradeMenu(id);
TradeMenu(kid);
Accept[id] = 0;
Accept[kid] = 0;
}
}
public cmdPiece(id)
{
new kid;
if(TradePartner[id] > 0)
kid = TradePartner[id];
else
kid = TradeID[id];
if(inTrade[id] == 0 || inTrade[kid] == 0 || !Logined[id])
return;
new Piece, Data[32];
read_args(Data, charsmax(Data));
remove_quotes(Data);
Piece = str_to_num(Data);
if(TradeItem[id] > 0 && TradeItem[id] <= 90+MAXKNIFESKINS)
{
if(Weapons[id][TradeItem[id]] >= Piece && Piece >= 1)
{
TradePiece[id] = Piece;
TradeMenu(id);
TradeMenu(kid);
Accept[id] = 0;
Accept[kid] = 0;
}
}
else if(TradeItem[id] > 90+MAXKNIFESKINS && TradeItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
{
if(Cases[id][TradeItem[id]-(90+MAXKNIFESKINS)] >= Piece && Piece >= 1)
{
TradePiece[id] = Piece;
TradeMenu(id);
TradeMenu(kid);
Accept[id] = 0;
Accept[kid] = 0;
}
}
else if(TradeItem[id] > 0)
{
if(Keys[id] >= Piece && Piece >= 1)
{
TradePiece[id] = Piece;
TradeMenu(id);
TradeMenu(kid);
Accept[id] = 0;
Accept[kid] = 0;
}
}
else
{
TradePiece[id] = 0;
TradeMenu(id);
TradeMenu(kid);
Accept[id] = 0;
Accept[kid] = 0;
return;
}
}
public RegMenu(id)
{
if(ServerLoaded == 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "SERVERLOADING");
return;
}
new String[128];
formatex(String, charsmax(String), "%L", id, "REGISTERMENU");
new menu = menu_create(String, "RegMenuh" );
if(strlen(User[id]) > 0)
{
formatex(String, charsmax(String), "%L", id, "USERNAME", User[id]);
menu_additem(menu, String, "1");
formatex(String, charsmax(String), "%L^n", id, "PASSWORD", Password[id]);
menu_additem(menu, String, "2");
}
else
{
formatex(String, charsmax(String), "%L", id, "USERNAME2", User[id]);
menu_additem(menu, String, "1");
}
if(strlen(User[id]) > 0 && strlen(Password[id]) > 0 && UserLoad[id] == 0 && inProgress[id] == 0)
{
if(Found[id])
{
formatex(String, charsmax(String), "%L", id, "LOGIN");
menu_additem(menu, String, "3");
}
else
{
formatex(String, charsmax(String), "%L", id, "REGISTER");
menu_additem(menu, String, "4");
}
}
menu_display(id, menu);
}
public RegMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
switch(x)
{
case 1 : {
client_cmd(id, "messagemode MY_USERNAME");
RegMenu(id);
}
case 2 : {
client_cmd(id, "messagemode MY_PASSWORD");
RegMenu(id);
}
case 3 : {
if(inProgress[id] == 0)
{
inProgress[id] = 1;
print_color(id, "!g%s!y %L", Prefix, id, "LOGINPENDING");
RegisterMod[id] = 1;
SQL_Check(id);
RegMenu(id);
}
else
{
RegMenu(id);
}
}
case 4 : {
if(inProgress[id] == 0)
{
inProgress[id] = 1;
print_color(id, "!g%s!y %L", Prefix, id, "REGISTERPENDING");
RegisterMod[id] = 2;
SQL_Check(id);
RegMenu(id);
}
else
{
RegMenu(id);
}
}
}
}
public SQL_RegCheck(id)
{
new szQuery[128], Len, a[32];
formatex(a, 31, "%s", User[id]);
replace_all(a, 31, "\", "\\");
replace_all(a, 31, "'", "\'");
Len += formatex(szQuery[Len], 128, "SELECT * FROM globaloffensive ");
Len += formatex(szQuery[Len], 128-Len,"WHERE USER = '%s'", a);
new szData[2];
szData[0] = id;
szData[1] = get_user_userid(id);
SQL_ThreadQuery(SQL_TUPLE, "SQL_RegCheckResult", szQuery, szData, 2);
UserLoad[id] = 1;
}
public SQL_RegCheckResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", Error);
return;
}
new id = szData[0];
if(szData[1] != get_user_userid(id))
return;
if(SQL_NumRows(Query) > 0)
{
Found[id] = true;
}
else
{
Found[id] = false;
}
UserLoad[id] = 0;
RegMenu(id);
}
public SQL_Check(id)
{
new szQuery[128], Len, a[32];
formatex(a, 31, "%s", User[id]);
replace_all(a, 31, "\", "\\");
replace_all(a, 31, "'", "\'");
Len += formatex(szQuery[Len], 128, "SELECT * FROM globaloffensive ");
Len += formatex(szQuery[Len], 128-Len,"WHERE USER = '%s'", a);
new szData[2];
szData[0] = id;
szData[1] = get_user_userid(id);
SQL_ThreadQuery(SQL_TUPLE, "SQL_CheckResult", szQuery, szData, 2);
}
public SQL_CheckResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", Error);
return;
}
new id = szData[0];
if(szData[1] != get_user_userid(id))
return;
if(RegisterMod[id] == 2)
{
if(SQL_NumRows(Query) > 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "USERNAMEUSING");
inProgress[id] = 0;
RegMenu(id);
}
else
{
SQL_NewAccount(id);
}
}
else if(RegisterMod[id] == 1)
{
if(SQL_NumRows(Query) == 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "BADPW");
inProgress[id] = 0;
RegMenu(id);
}
else
{
SQL_UserLoad(id);
}
}
}
public SQL_NewAccount(id)
{
new szQuery[512], Len, a[32], b[32], c[32];
formatex(a, 31, "%s", User[id]);
formatex(b, 31, "%s", Password[id]);
formatex(c, 31, "%s", Name[id]);
replace_all(a, 31, "\", "\\");
replace_all(a, 31, "'", "\'");
replace_all(b, 31, "\", "\\");
replace_all(b, 31, "'", "\'");
replace_all(c, 31, "\", "\\");
replace_all(c, 31, "'", "\'");
Len += formatex(szQuery[Len], 511, "INSERT INTO globaloffensive ");
Len += formatex(szQuery[Len], 511-Len,"(USER,PW,NAME) VALUES('%s','%s','%s')", a, b, c);
new szData[2];
szData[0] = id;
szData[1] = get_user_userid(id);
SQL_ThreadQuery(SQL_TUPLE,"SQL_NewAccountResult", szQuery, szData, 2);
}
public SQL_NewAccountResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", Error);
return;
}
new id = szData[0];
if(szData[1] != get_user_userid(id))
return;
inProgress[id] = 0;
RegisterMod[id] = 2;
print_color(id, "!g%s!y %L", Prefix, id, "REGISTERED");
print_color(id, "!g%s!y %L", Prefix, id, "REGDATAS", User[id], Password[id]);
SQL_RegCheck(id);
return;
}
public SQL_UserLoad(id)
{
new szQuery[256], Len, a[32];
formatex(a, 31, "%s", User[id]);
replace_all(a, 31, "\", "\\");
replace_all(a, 31, "'", "\'");
Len += formatex(szQuery[Len], 256, "SELECT * FROM globaloffensive ");
Len += formatex(szQuery[Len], 256-Len,"WHERE USER = '%s'", a);
new szData[2];
szData[0] = id;
szData[1] = get_user_userid(id);
SQL_ThreadQuery(SQL_TUPLE,"SQL_UserLoadResult", szQuery, szData, 2);
}
public SQL_UserLoadResult(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", Error);
return;
}
else
{
new id = szData[0];
if(szData[1] != get_user_userid(id))
return;
new SqlPassword[32], i;
SQL_ReadResult(Query, 2, SqlPassword, 31);
if(equal(Password[id], SqlPassword))
{
SQL_ReadResult(Query, 2, Password[id], 31);
Activity[id] = SQL_ReadResult(Query, 132);
if(Activity[id] > 0)
{
print_color(id, "!g%s!y %L", Prefix, id, "USERUSING");
inProgress[id] = 0;
RegMenu(id);
return;
}
UserID[id] = SQL_ReadResult(Query, 0);
Dollars[id] = SQL_ReadResult(Query, 4);
Keys[id] = SQL_ReadResult(Query, 11);
for(i = 1; i < sizeof(Case_Data); i++)
{
Cases[id][i] = SQL_ReadResult(Query, 4+i);
}
for(i = 1; i < sizeof(SkinData); i++)
{
Weapons[id][i] = SQL_ReadResult(Query, 11+i);
}
Activity[id] = 1;
Kills[id] = SQL_ReadResult(Query, 133);
CurrentRank[id] = SQL_ReadResult(Query, 134);
if(CurrentRank[id] == 0)
{
CurrentRank[id] = 1;
}
SQL_UpdateActivity(id);
print_color(id, "!g%s!y %L", Prefix, id, "LOGINED");
inProgress[id] = 0;
Logined[id] = true;
MainMenu(id);
}
else
{
print_color(id, "!g%s!y %L", Prefix, id, "BADPW");
inProgress[id] = 0;
RegMenu(id);
}
}
}
public cmdUser(id)
{
if(Logined[id])
{
return PLUGIN_HANDLED;
}
if(UserLoad[id] == 1)
{
RegMenu(id);
return PLUGIN_HANDLED;
}
new cmdData[32], cmdLength;
cmdData[0] = EOS;
read_args(cmdData, 31);
remove_quotes(cmdData);
cmdLength = strlen(cmdData);
if(cmdLength < 4)
{
print_color(id, "!g%s!y %L", Prefix, id, "SHORT");
return PLUGIN_HANDLED;
}
if(cmdLength > 19)
{
print_color(id, "!g%s!y %L", Prefix, id, "LONG");
return PLUGIN_HANDLED;
}
copy(User[id], 31, cmdData);
SQL_RegCheck(id);
return PLUGIN_HANDLED;
}
public cmdPassword(id)
{
if(Logined[id] || strlen(User[id]) == 0)
{
return PLUGIN_HANDLED;
}
new cmdData[32], cmdLength;
cmdData[0] = EOS;
read_args(cmdData, 31);
remove_quotes(cmdData);
cmdLength = strlen(cmdData);
if(cmdLength < 4)
{
print_color(id, "!g%s!y %L", Prefix, id, "SHORT");
return PLUGIN_HANDLED;
}
if(cmdLength > 19)
{
print_color(id, "!g%s!y %L", Prefix, id, "LONG");
return PLUGIN_HANDLED;
}
copy(Password[id], 31, cmdData);
RegMenu(id);
return PLUGIN_HANDLED;
}
public SQL_Results(FailState, Handle:Query, Error[], Errcode, szData[], DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
{
log_amx("%s", Error);
return;
}
}
public SQL_FirstLoad()
{
SQL_TUPLE = SQL_MakeDbTuple(SQL_Host, SQL_User, SQL_Password, SQL_Database);
SQL_Reload();
}
public SQL_Reload()
{
new szQuery[256], Len;
Len += formatex(szQuery[Len], 256, "UPDATE globaloffensive SET ");
Len += formatex(szQuery[Len], 255-Len,"ACT = '0' ");
Len += formatex(szQuery[Len], 255-Len,"WHERE ACT = '1'");
SQL_ThreadQuery(SQL_TUPLE,"SQL_Results", szQuery);
ServerLoaded = 1;
}
public SQL_UpdateActivity(id)
{
new sQuery[512], szQuery[256], a[32];
formatex(a, 31, "%s", Name[id]);
replace_all(a, 31, "\", "\\");
replace_all(a, 31, "'", "\'");
formatex(szQuery, charsmax(szQuery), "UPDATE globaloffensive SET ");
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"NAME = '%s', ", a);
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"ACT = '%d' ", Activity[id]);
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"WHERE Id = '%d'", UserID[id]);
add(sQuery, charsmax(sQuery), szQuery);
SQL_ThreadQuery(SQL_TUPLE, "SQL_Results", sQuery);
}
public SQL_UpdateUser(id)
{
if(!Logined[id])
return;
new sQuery[2000], szQuery[256];
new a[32], i;
formatex(a, 31, "%s", Name[id]);
replace_all(a, 31, "\", "\\");
replace_all(a, 31, "'", "\'");
formatex(szQuery, charsmax(szQuery), "UPDATE globaloffensive SET ");
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"NAME = '%s', ", a);
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"DOLLAR = '%d', ", Dollars[id]);
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"K = '%d', ", Keys[id]);
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"KILLS = '%d', ", Kills[id]);
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"RANK = '%d', ", CurrentRank[id]);
add(sQuery, charsmax(sQuery), szQuery);
for(i = 1; i < sizeof(Case_Data); i++)
{
formatex(szQuery, charsmax(szQuery), "C%d = '%d', ", i, Cases[id][i]);
add(sQuery, charsmax(sQuery), szQuery);
}
for(i = 1; i < sizeof(SkinData); i++)
{
formatex(szQuery, charsmax(szQuery), "W%d = '%d', ", i, Weapons[id][i]);
add(sQuery, charsmax(sQuery), szQuery);
}
formatex(szQuery, charsmax(szQuery),"ACT = '%d' ", Activity[id]);
add(sQuery, charsmax(sQuery), szQuery);
formatex(szQuery, charsmax(szQuery),"WHERE Id = '%d'", UserID[id]);
add(sQuery, charsmax(sQuery), szQuery);
SQL_ThreadQuery(SQL_TUPLE, "SQL_Results", sQuery);
}
public client_putinserver(id)
{
for(new i = 1; i < 3; i++)
inUse[id][i] = 0;
UserLoad[id] = 0;
inProgress[id] = 0;
Logined[id] = false;
copy(Password[id], 31, "");
copy(User[id], 31, "");
get_user_name(id, Name[id], 31);
Activity[id] = 0;
DeleteTradeandMarket(id);
}
public client_disconnect(id)
{
DeleteTradeandMarket(id);
if(Logined[id])
{
Logined[id] = false;
Activity[id] = 0;
SQL_UpdateActivity(id);
log_amx("asdsdadsadsa");
}
}
public DeleteTradeandMarket(id)
{
new kid;
if(TradePartner[id] > 0)
kid = TradePartner[id];
else if(TradeID[id] > 0)
kid = TradeID[id];
inTrade[id] = 0;
TradeDollars[id] = 0;
TradeFounding[id] = 0;
TradePartner[id] = 0;
TradeItem[id] = 0;
TradeID[id] = 0;
if(kid > 0)
{
inTrade[id] = 0;
TradeDollars[id] = 0;
TradeFounding[id] = 0;
TradePartner[id] = 0;
TradeItem[id] = 0;
TradeID[id] = 0;
PTradeId[id] = 0;
PTradeId[kid] = 0;
}
}
public MMarketMenu(id)
{
new String[128];
formatex(String, charsmax(String), "%L", id, "MMARKET", Dollars[id]);
new Menu = menu_create(String, "MMarketMenuh");
formatex(String, charsmax(String), "%L", id, "SELLI");
menu_additem(Menu, String, "1");
formatex(String, charsmax(String), "%L", id, "BUYI");
menu_additem(Menu, String, "2");
menu_display(id, Menu);
}
public MMarketMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
switch(x)
{
case 1 : {
MarketMenu(id);
}
case 2 : {
BuyMenu(id);
}
}
}
public MarketMenu(id)
{
new String[128], ItemName[32];
if(MarketItem[id] > 0 && MarketItem[id] <= 90+MAXKNIFESKINS)
{
formatex(ItemName, charsmax(ItemName), "%s", SkinData[MarketItem[id]][0]);
}
else if(MarketItem[id] > 90+MAXKNIFESKINS && MarketItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
{
formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[id]-(90+MAXKNIFESKINS)][0]);
}
else if(MarketItem[id] > 0)
{
formatex(ItemName, charsmax(ItemName), "%s", KeyName);
}
formatex(String, charsmax(String), "%L", id, "MARKET");
new menu = menu_create(String, "MarketMenuh" );
if(InMarket[id] == 0)
{
if(MarketItem[id] == 0)
{
formatex(String, charsmax(String), "%L^n", id, "CHOOSEITEM");
}
else
{
formatex(String, charsmax(String), "%L", id, "ITEM", ItemName);
}
menu_additem(menu, String, "1");
formatex(String, charsmax(String), "%L", id, "CHOOSESELLITEM", MarketDollar[id]);
menu_additem(menu, String, "2");
formatex(String, charsmax(String), "%L", id, "TOMARKET");
menu_additem(menu, String, "3");
}
else
{
formatex(String, charsmax(String), "%L", id, "INMARKET", ItemName, MarketDollar[id]);
menu_additem(menu, String, "0");
}
menu_display(id, menu);
}
public MarketMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
switch(x)
{
case 0:
{
InMarket[id] = 0;
MarketItem[id] = 0;
MarketDollar[id] = 0;
MChooseItem(id);
}
case 1:
{
MChooseItem(id);
}
case 2:
{
client_cmd(id, "messagemode MARKETDOLLAR");
MarketMenu(id);
}
case 3:
{
if(MarketItem[id] > 0)
{
new ItemName[32];
if(MarketItem[id] > 0 && MarketItem[id] <= 90+MAXKNIFESKINS)
{
formatex(ItemName, charsmax(ItemName), "%s", SkinData[MarketItem[id]][0]);
}
else if(MarketItem[id] > 90+MAXKNIFESKINS && MarketItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
{
formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[id]-(90+MAXKNIFESKINS)][0]);
}
else if(MarketItem[id] > 0)
{
formatex(ItemName, charsmax(ItemName), "%s", KeyName);
}
for(new i; i < MAXP; i++)
if(is_user_connected(i))
print_color(i, "!g%s!y %L", Prefix, i, "SOLVEDTOMARKET", Name[id], ItemName, MarketDollar[id]);
InMarket[id] = 1;
MarketMenu(id);
}
else
{
MarketMenu(id);
}
}
}
}
public BuyMenu(id)
{
new String[128], ItemName[32];
formatex(String, charsmax(String), "%L", id, "MARKETMENUBUY", Dollars[id]);
new Menu = menu_create(String, "BuyMenuh" );
for(new i; i < MAXP; i++)
{
if(!is_user_connected(i) || !Logined[i] || InMarket[i] == 0)
continue;
if(MarketItem[i] > 0 && MarketItem[i] <= 90+MAXKNIFESKINS)
{
formatex(ItemName, charsmax(ItemName), "%s", SkinDataTrade[MarketItem[i]]);
}
else if(MarketItem[i] > 90+MAXKNIFESKINS && MarketItem[i] <= 90+MAXKNIFESKINS+MAXCASES)
{
formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[i]-(90+MAXKNIFESKINS)][0]);
}
else if(MarketItem[i] > 0)
{
formatex(ItemName, charsmax(ItemName), "%s", KeyName);
}
new Nts[3];
num_to_str(i, Nts, 2);
formatex(String, charsmax(String), "%L", id, "SELLITEM", ItemName, MarketDollar[i], Name[i]);
menu_additem(Menu, String, Nts);
}
menu_display(id, Menu);
}
public BuyMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
if(InMarket[x] > 0 && MarketItem[x] > 0 && MarketDollar[x] > 0)
{
if(Dollars[id] < MarketDollar[x])
{
print_color(id, "!g%s!y %L", Prefix, id, "NOTENOUGHDOLLAR");
return;
}
if(MarketItem[x] > 0 && MarketItem[x] <= 90+MAXKNIFESKINS)
{
Weapons[id][MarketItem[x]]++;
Weapons[x][MarketItem[x]]--;
}
else if(MarketItem[x] > 90+MAXKNIFESKINS && MarketItem[x] <= 90+MAXKNIFESKINS+MAXCASES)
{
Cases[id][MarketItem[x]-(90+MAXKNIFESKINS)]++;
Cases[x][MarketItem[x]-(90+MAXKNIFESKINS)]--;
}
else if(MarketItem[x] > 0)
{
Keys[id]++;
Keys[x]--;
}
Dollars[id] -= MarketDollar[x];
Dollars[x] += MarketDollar[x];
InMarket[x] = 0;
new ItemName[32];
if(MarketItem[id] > 0 && MarketItem[id] <= 90+MAXKNIFESKINS)
{
formatex(ItemName, charsmax(ItemName), "%s", SkinData[MarketItem[id]][0]);
}
else if(MarketItem[id] > 90+MAXKNIFESKINS && MarketItem[id] <= 90+MAXKNIFESKINS+MAXCASES)
{
formatex(ItemName, charsmax(ItemName), "%s", Case_Data[MarketItem[id]-(90+MAXKNIFESKINS)][0]);
}
else if(MarketItem[id] > 0)
{
formatex(ItemName, charsmax(ItemName), "%s", KeyName);
}
for(new i; i < MAXP; i++)
if(is_user_connected(i))
print_color(i, "!g%s!y %L", Prefix, i, "BUYINGITEM", Name[id], ItemName, MarketDollar[x], Name[x]);
MarketDollar[x] = 0;
MarketItem[x] = 0;
SQL_UpdateUser(id);
SQL_UpdateUser(x);
}
}
public Guns(id)
{
if(Choosen[id] > 1)
{
print_color(id, "!g%s!y %L", Prefix, id, "WPMESSAGE");
}
else if(Choosen[id] < 1)
{
Choosen[id] = 0;
TakeWeapons(id);
}
}
public PlayerSpawn(id)
{
if(!is_user_alive(id))
return;
if(get_pcvar_num(CvarWeaponMenu) == 1)
{
Choosen[id] = 0;
TakeWeapons(id);
give_item(id, "item_kevlar");
give_item(id, "item_assaultsuit");
}
}
public TakeWeapons(id)
{
if(is_user_alive(id))
{
Choosen[id] = 0;
new HasC4;
if(user_has_weapon(id, CSW_C4))
{
HasC4 = 1;
}
strip_user_weapons(id);
give_item(id, "weapon_knife");
WeaponMenu(id);
if(HasC4 == 1)
{
give_item(id, "weapon_c4");
}
if(cs_get_user_team(id) == CS_TEAM_CT)
{
give_item(id, "item_thighpack");
}
}
return PLUGIN_CONTINUE;
}
public WeaponMenu(id)
{
if(Choosen[id] > 1)
return;
new String[128], Menu;
if(Choosen[id] == 0)
{
formatex(String, 127, "%s %L", Prefix, LANG_SERVER, "WPMENU2");
Menu = menu_create(String, "WeaponMenuh");
for(new i = 1; i < sizeof(FirstWeaponNames); i++)
{
new NumToString[6];
num_to_str(i, NumToString, 5);
formatex(String, charsmax(String), "%s", FirstWeaponNames[i][0]);
menu_additem(Menu, String, NumToString);
}
}
if(Choosen[id] == 1)
{
formatex(String, 127, "%s %L", Prefix, LANG_SERVER, "WPMENU2");
Menu = menu_create(String, "WeaponMenuh");
for(new i = 1; i < sizeof(SecondaryWeaponNames); i++)
{
new NumToString[6];
num_to_str(i, NumToString, 5);
formatex(String, charsmax(String), "%s", SecondaryWeaponNames[i][0]);
menu_additem(Menu, String, NumToString);
}
}
menu_display(id, Menu);
}
public WeaponMenuh(id, Menu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(Menu);
return;
}
new Data[14], Line[32];
new Access, Callback;
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data), Line, charsmax(Line), Callback);
new x = str_to_num(Data);
if(Choosen[id] == 0)
{
give_item(id, FirstWeaponNames[x][1]);
cs_set_user_bpammo(id, FirstWeaponNames[x][2][0], 90);
}
if(Choosen[id] == 1)
{
give_item(id, SecondaryWeaponNames[x][1]);
cs_set_user_bpammo(id, SecondaryWeaponNames[x][2][0], 90);
}
Choosen[id]++;
if(Choosen[id] >= 2)
{
Grenades(id);
}
WeaponMenu(id);
}
stock PlayAnimation(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence);
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player);
write_byte(Sequence);
write_byte(pev(Player, pev_body));
message_end();
}
stock print_color(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
if(id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
return PLUGIN_HANDLED;
}
stock Grenades(id)
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
if(GiveSmokeGrenade == 1)
{
give_item(id, "weapon_smokegrenade");
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/