- | Afiseaza codul
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> #include <cstrike> #include <colorchat> #include <fun> new const PLUGIN[] = "Global Offensive"; new const VERSION[] = "1.1p"; new const AUTHOR[] = "DeRoiD"; #define MAX 50 #define PointsMin 3 #define PointsMax 8 #define Drop 10 #define MarkMin 25 #pragma semicolon 1 new WeaponNames[MAX][32], WeaponMdls[MAX][48], Weapons[MAX], WeaponDrop[MAX], AllWeapon; new UsingWeapon[3][33], uWeapon[MAX][33], Chest[33], pKey[33], Points[33], Rang[33], Kills[33], aThing[33], aTarget[33], aPoints[33], Prefix[32]; new Folder[48], SkinFile[48], SaveFile[48], RegisterFile[48], DefaultSkinFile[48], RangFile[48], MenuMod[33], SayText; new WeaponinMarket[33], inMarket[33], MarketPoints[33], Choosen[33]; new SavedPassword[33][32], bool:Loged[33], Password[33][32]; new DefaultSkin[31][32], NeedKills[30], Rangs[30][32]; new const eWeapon[][] = { "weapon_famas", "weapon_p228", "weapon_p90", "weapon_glock18", "weapon_mac10", "weapon_usp", "weapon_awp","weapon_scout", "weapon_mp5navy", "weapon_m3", "weapon_m4a1","weapon_deagle", "weapon_ak47", "weapon_knife", "weapon_flashbang", "weapon_hegrenade", "weapon_smokegrenade", "weapon_c4" }; new const FirstWeaponNames[][][] = { { "AK47", "weapon_ak47" }, { "M4A1", "weapon_m4a1" }, { "AWP", "weapon_awp" }, { "P90", "weapon_p90" }, { "SCOUT", "weapon_scout" }, { "MAC10", "weapon_mac10" }, { "FAMAS", "weapon_famas" }, { "MP5", "weapon_mp5navy" }, { "SHOTGUN", "weapon_m3" } }; new const SecondaryWeaponNames[][][] = { { "DEAGLE", "weapon_deagle" }, { "P228", "weapon_p228" }, { "GLOCK18", "weapon_glock18" }, { "USP", "weapon_usp" } }; public plugin_precache() { new Line[128], Data[4][48], Len; AllWeapon++; get_configsdir(Folder, 47); format(SkinFile, 47, "%s/csgo/skins.cfg", Folder); format(SaveFile, 47, "%s/csgo/save.ini", Folder); format(RangFile, 47, "%s/csgo/rangs.cfg", Folder); format(RegisterFile, 47, "%s/csgo/reg.ini", Folder); format(DefaultSkinFile, 47, "%s/csgo/dskins.cfg", Folder); format(Prefix, 31, "[Global Offensive]"); if(file_exists(RangFile)) { for(new i; i < file_size(RangFile, 1); i++) { read_file(RangFile, i, Line, 127, Len); parse(Line, Data[0], 31, Data[1], 31); copy(Rangs, 31, Data[0]); NeedKills = str_to_num(Data[1]); } } if(file_exists(SkinFile)) { for(new i; i < file_size(SkinFile, 1); i++) { read_file(SkinFile, i, Line, 127, Len); if(strlen(Line) < 5 || Line[0] == ';') continue; parse(Line, Data[0], 31, Data[1], 31, Data[2], 47, Data[3], 31); Weapons[AllWeapon] = str_to_num(Data[0]); copy(WeaponNames[AllWeapon], 31, Data[1]); if(ValidMdl(Data[2])) { precache_model(Data[2]); copy(WeaponMdls[AllWeapon], 47, Data[2]); } WeaponDrop[AllWeapon] = str_to_num(Data[3]); AllWeapon++; } } if(file_exists(DefaultSkinFile)) { for(new i; i < file_size(DefaultSkinFile, 1); i++) { read_file(DefaultSkinFile, i, Line, 127, Len); if(strlen(Line) < 5 || Line[0] == ';') continue; parse(Line, Data[0], 31, Data[1], 47); if(ValidMdl(Data[1])) { precache_model(Data[1]); copy(DefaultSkin[str_to_num(Data[0])], 47, Data[1]); } } } } public plugin_init() { register_dictionary("globaloffensive.txt"); register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar(PLUGIN, VERSION, FCVAR_SERVER); register_clcmd("say /menu", "MenuOpen"); register_clcmd("say /reg", "RegMenu"); register_clcmd("say /gun", "Guns"); register_concmd("Cost", "MarketCost"); register_concmd("Gift", "GiftPoint"); register_concmd("UserPassword", "PlayerPassword"); SayText = get_user_msgid("SayText"); register_forward(FM_ClientUserInfoChanged, "NameChange"); RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1); for(new i; i < sizeof(eWeapon); i++) { RegisterHam(Ham_Item_Deploy, eWeapon, "WeaponSwitch", 1); } register_clcmd("say", "Say"); register_clcmd("say_team", "Say"); set_task(67.3, "Message", 7217, _, _, "b"); } public Message() { print_color(0, "!g%s%L", Prefix, LANG_SERVER, "MSG", PLUGIN, VERSION, AUTHOR); } public Guns(id) { if(Choosen[id] < 1) { Choosen[id] = 0; WeaponMenu(id); } } public PlayerSpawn(id) { if(is_user_alive(id)) { Choosen[id] = 0; if(user_has_weapon(id, CSW_C4)) { strip_user_weapons(id); give_item(id, "weapon_c4"); give_item(id, "weapon_knife"); // WeaponMenu(id); return PLUGIN_HANDLED; } strip_user_weapons(id); give_item(id, "weapon_knife"); // WeaponMenu(id); if(cs_get_user_team(id) == CS_TEAM_CT) { cs_set_user_defuse(id, 1); } } return PLUGIN_CONTINUE; } public Say(id) { new Chat[256], Name[32], cChat[256]; read_args(Chat, 255); remove_quotes(Chat); get_user_name(id, Name, 31); if(strlen(Chat) > 1) { formatex(cChat, 255, "^4[%s] ^3%s^1: %s", Rangs[Rang[id]], Name, Chat); } ColorChat(0, TEAM_COLOR, cChat); return PLUGIN_HANDLED; } public MenuOpen(id) { if(!Loged[id]) { RegMenu(id); return; } MenuMod[id] = 0; Menu(id); } public client_death(Killer, Victim) { if(Killer == Victim) { return PLUGIN_HANDLED; } Kills[Killer]++; if(Rang[Killer] < sizeof(Rangs) && Rang[Killer] < file_size(RangFile, 1)) { if(Kills[Killer] >= NeedKills[Rang[Killer]]) Rang[Killer]++; } new pPont, Name[32]; pPont += random_num(PointsMin, PointsMax); Points[Killer] += pPont; set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0); show_hudmessage(Killer, "%L", LANG_SERVER, "POINT", pPont); if(Drop >= random_num(1, 100)) { get_user_name(Killer, Name, 31); new x = random_num(1, 2); if(x == 1) { pKey[Killer]++; print_color(0, "!g%s%L", Prefix, LANG_SERVER, "FOUNDKEY", Name); } if(x == 2) { Chest[Killer]++; print_color(0, "!g%s%L", Prefix, LANG_SERVER, "FOUNDCHEST", Name); } } Save(Killer); return PLUGIN_CONTINUE; } public MarketCost(id) { if(inMarket[id] || !Loged[id]) return PLUGIN_HANDLED; new Data[32], Cost; read_args(Data, 31); remove_quotes(Data); Cost = str_to_num(Data); if(Cost < 0) { client_cmd(id, "messagemode Cost"); return PLUGIN_HANDLED; } else if(MarkMin >= Cost) { print_color(id, "%s %L", Prefix, LANG_SERVER, "NOTENOUGHTMARKET", MarkMin); client_cmd(id, "messagemode Cost"); return PLUGIN_HANDLED; } else { MarketPoints[id] = Cost; Menu(id); MenuMod[id] = 3; return PLUGIN_CONTINUE; } return PLUGIN_CONTINUE; } public GiftPoint(id) { if(inMarket[id] || !Loged[id]) return PLUGIN_HANDLED; new Data[32], Cost; read_args(Data, 31); remove_quotes(Data); Cost = str_to_num(Data); if(Cost < 0 || Points[id] < Cost) { client_cmd(id, "messagemode Gift"); return PLUGIN_HANDLED; } else { aPoints[id] = Cost; Menu(id); MenuMod[id] = 5; return PLUGIN_CONTINUE; } return PLUGIN_CONTINUE; } public WeaponSwitch(Weapon) { new id = get_pdata_cbase(Weapon, 41, 4); new wid = cs_get_weapon_id(Weapon); if(id > 32 || id < 1) { return HAM_SUPERCEDE; } for(new i = 1; i < AllWeapon; i++) { if(i == UsingWeapon[0][id]) { if(wid == Weapons) { set_pev(id, pev_viewmodel2, WeaponMdls); return HAM_SUPERCEDE; } } else if(i == UsingWeapon[1][id]) { if(wid == Weapons) { set_pev(id, pev_viewmodel2, WeaponMdls); return HAM_SUPERCEDE; } } else if(i == UsingWeapon[2][id]) { if(wid == Weapons) { set_pev(id, pev_viewmodel2, WeaponMdls); return HAM_SUPERCEDE; } } } if(ValidMdl(DefaultSkin[wid])) { set_pev(id, pev_viewmodel2, DefaultSkin[wid]); } return HAM_IGNORED; } public ChestOpen(id) { new rWeapon = random_num(1, AllWeapon); new rNum = random_num(1, 100); if(WeaponDrop[rWeapon] >= rNum) { new Name[32]; get_user_name(id, Name, 31); print_color(id, "!g[CSGO]%L", LANG_SERVER, "FOUNDITEM", Name, WeaponNames[rWeapon]); uWeapon[rWeapon][id]++; Save(id); } else { set_task(0.1, "ChestOpen", id); } } public Menu(id) { if(!Loged[id]) { RegMenu(id); return; } new sMenu, Line[128]; if(MenuMod[id] == -2) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "GIFTCH", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); new String[32], All; for(new i = 1; i < AllWeapon; i++) { if(uWeapon[id] == 0) continue; num_to_str(i, String, 31); formatex(Line, 127, "%L", LANG_SERVER, "SKINPIECE", WeaponNames[i], uWeapon[i][id]); menu_additem(sMenu, Line, String); All++; } if(Chest[id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "CHESTPIECE", Chest[id]); menu_additem(sMenu, Line, "101"); All++; } if(pKey[id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "KEYPIECE", pKey[id]); menu_additem(sMenu, Line, "102"); All++; } if(All == 0) { MenuMod[id] = 0; Menu(id); } } else if(MenuMod[id] == -1) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "GIFTCH", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); new String[32], All; for(new i = 1; i < AllWeapon; i++) { if(uWeapon[i][id] == 0) continue; num_to_str(i, String, 31); formatex(Line, 127, "%L", LANG_SERVER, "SKINPIECE", WeaponNames[i], uWeapon[i][id]); menu_additem(sMenu, Line, String); All++; } if(Chest[id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "CHESTPIECE", Chest[id]); menu_additem(sMenu, Line, "101"); All++; } if(pKey[id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "KEYPIECE", pKey[id]); menu_additem(sMenu, Line, "102"); All++; } if(All == 0) { MenuMod[id] = 0; Menu(id); } } else if(MenuMod[id] == 0) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "MAIN", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); formatex(Line, 127, "%L", LANG_SERVER, "MENUTOSKINS"); menu_additem(sMenu, Line, "1"); if(!inMarket[id]) { formatex(Line, 127, "%L", LANG_SERVER, "MENUTOCHESTOPEN"); menu_additem(sMenu, Line, "2"); } else { formatex(Line, 127, "%L %L", LANG_SERVER, "MENUTOCHESTOPEN", LANG_SERVER, "INMARKET"); menu_additem(sMenu, Line, "0"); } formatex(Line, 127, "%L", LANG_SERVER, "MENUTOMARKET"); menu_additem(sMenu, Line, "3"); if(!inMarket[id]) { formatex(Line, 127, "%L", LANG_SERVER, "MENUTODUSTBIN"); menu_additem(sMenu, Line, "4"); } else { formatex(Line, 127, "%L %L", LANG_SERVER, "MENUTODUSTBIN", LANG_SERVER, "INMARKET"); menu_additem(sMenu, Line, "0"); } if(!inMarket[id]) { formatex(Line, 127, "%L%L", LANG_SERVER, "MENUTOGIFT", LANG_SERVER, "MRANG", Rangs[Rang[id]+1], Kills[id], NeedKills[Rang[id]]); menu_additem(sMenu, Line, "5"); } else { formatex(Line, 127, "%L %L%L", LANG_SERVER, "MENUTOGIFT", LANG_SERVER, "INMARKET", LANG_SERVER, "MRANG", Rangs[Rang[id]+1], Kills[id], NeedKills[Rang[id]]); menu_additem(sMenu, Line, "0"); } } else if(MenuMod[id] == 1) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "MENUTOSKINS", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); new String[32], All; for(new i = 1; i < AllWeapon; i++) { if(uWeapon[i][id] == 0) continue; formatex(String, 31, "%d %d", i, Weapons[i]); formatex(Line, 127, "%L", LANG_SERVER, "SKINPIECE", WeaponNames[i], uWeapon[i][id]); menu_additem(sMenu, Line, String); All++; } if(All == 0) { MenuMod[id] = 0; Menu(id); } } else if(MenuMod[id] == 2) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "MENUTOCHESTOPEN", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); formatex(Line, 127, "%L", LANG_SERVER, "CHESTSANDKEYS", Chest[id], pKey[id]); menu_additem(sMenu, Line, "1"); } else if(MenuMod[id] == 3) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "MENUTOMARKET", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); new String[32], All; if(!inMarket[id]) { for(new i = 1; i < AllWeapon; i++) { if(i == WeaponinMarket[id] && uWeapon[i][id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "MARKETPLACES", WeaponNames[i], MarketPoints [id]); All++; } } if(101 == WeaponinMarket[id] && Chest[id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "MARKETPLACEC", MarketPoints[id]); All++; } if(102 == WeaponinMarket[id] && pKey[id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "MARKETPLACEK", MarketPoints[id]); All++; } if(All == 0) formatex(Line, 127, "%L", LANG_SERVER, "MARKETPLACECH"); menu_additem(sMenu, Line, "-1"); } if(!inMarket[id]) formatex(Line, 127, "%L", LANG_SERVER, "TOMARKETM"); else formatex(Line, 127, "%L", LANG_SERVER, "BACKMARKET"); menu_additem(sMenu, Line, "0"); new Name[32]; for(new x; x < 32; x++) { if(!is_user_connected(x)) continue; if(inMarket[x] && MarketPoints[x] > 0) { num_to_str(x, String, 31); get_user_name(x, Name, 31); if(101 == WeaponinMarket[x]) { formatex(Line, 127, "%L", LANG_SERVER, "SELLERC", Name, MarketPoints[x]); menu_additem(sMenu, Line, String); } else if(102 == WeaponinMarket[x]) { formatex(Line, 127, "%L", LANG_SERVER, "SELLERK", Name, MarketPoints[x]); menu_additem(sMenu, Line, String); } else { formatex(Line, 127, "%L", LANG_SERVER, "SELLERS", Name, WeaponNames[WeaponinMarket[x]], MarketPoints[x]); menu_additem(sMenu, Line, String); } } } } else if(MenuMod[id] == 4) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "MENUTODUSTBIN", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); new String[32], All; for(new i = 1; i < AllWeapon; i++) { if(uWeapon[i][id] == 0) continue; num_to_str(i, String, 31); formatex(Line, 127, "%L", LANG_SERVER, "SKINPIECE", WeaponNames[i], uWeapon[i][id]); menu_additem(sMenu, Line, String); All++; } if(All == 0) { MenuMod[id] = 0; Menu(id); } } else if(MenuMod[id] == 5) { formatex(Line, 127, "%s\r %L %L", Prefix, LANG_SERVER, "MENUTOGIFT", LANG_SERVER, "YPOINT", Points[id]); sMenu = menu_create(Line, "MenuHandler"); new All, Name[32], String[32]; get_user_name(aTarget[id], Name, 31); if(aTarget[id] > 0 && is_user_alive(aTarget[id])) { formatex(Line, 127, "%L", LANG_SERVER, "GIFTT", Name); menu_additem(sMenu, Line, "-1"); for(new i = 1; i < AllWeapon; i++) { if(i == aThing[id] && uWeapon[i][id] > 0) { formatex(Line, 127, "%L", LANG_SERVER, "GIFTS", WeaponNames[i]); menu_additem(sMenu, Line, "-2"); All++; } } if(aThing[id] == 0 && All == 0) { formatex(Line, 127, "%L", LANG_SERVER, "GIFTCH"); menu_additem(sMenu, Line, "-2"); } else if(aThing[id] > 100) { if(101 == aThing[id]) { formatex(Line, 127, "%L", LANG_SERVER, "GIFTC"); } if(102 == aThing[id]) { formatex(Line, 127, "%L", LANG_SERVER, "GIFTK"); } menu_additem(sMenu, Line, "-2"); } formatex(Line, 127, "%L", LANG_SERVER, "GIFTPOINTS", aPoints[id]); menu_additem(sMenu, Line, "-4"); formatex(Line, 127, "%L", LANG_SERVER, "SENDGIFT"); menu_additem(sMenu, Line, "-3"); } else { for(new i; i < 32; i++) { if(is_user_connected(i)) { get_user_name(i, Name, 31); num_to_str(i, String, 31); menu_additem(sMenu, Name, String); } } } } menu_display(id, sMenu); } public MenuHandler(id, gMenu, Key) { if(Key == MENU_EXIT) { MenuMod[id] = 0; menu_destroy(gMenu); return PLUGIN_HANDLED; } new aMenu[2], Data[4][32], sKey[32], Name[32], mName[32]; menu_item_getinfo(gMenu, Key, aMenu[0], Data[0], 31, Data[1], 31, aMenu[1]); parse(Data[0], sKey, 31); Key = str_to_num(sKey); if(MenuMod[id] == -2) { aThing[id] = Key; MenuMod[id] = 5; Menu(id); return PLUGIN_HANDLED; } if(MenuMod[id] == -1) { MenuMod[id] = 3; WeaponinMarket[id] = Key; client_cmd(id, "messagemode Cost"); Menu(id); return PLUGIN_HANDLED; } else if(MenuMod[id] == 0) { MenuMod[id] = Key; Menu(id); return PLUGIN_HANDLED; } else if(MenuMod[id] == 1) { parse(Data[0], Data[2], 31, Data[3], 31); if(str_to_num(Data[3]) == 16 || str_to_num(Data[3]) == 26) UsingWeapon[1][id] = str_to_num(Data[2]); else if(str_to_num(Data[3]) == 29) UsingWeapon[2][id] = str_to_num(Data[2]); else UsingWeapon[0][id] = str_to_num(Data[2]); return PLUGIN_HANDLED; } else if(MenuMod[id] == 2) { if(Key == 1) { if(Chest[id] > 0 && pKey[id] > 0) { Chest[id]--; pKey[id]--; ChestOpen(id); Menu(id); return PLUGIN_HANDLED; } } } else if(MenuMod[id] == 3) { if(Key == -1) { MenuMod[id] = -1; Menu(id); return PLUGIN_HANDLED; } else if(Key == 0) { if(inMarket[id]) inMarket[id] = false; else if(MarketPoints[id] > 0) { get_user_name(id, Name, 31); print_color(0, "!g%s%L", Prefix, LANG_SERVER, "TOMARKET", Name, WeaponNames[WeaponinMarket[id]], MarketPoints[id]); inMarket[id] = true; } Menu(id); return PLUGIN_HANDLED; } else if(inMarket[Key] && Points[id] >= MarketPoints[Key]) { get_user_name(Key, Name, 31); get_user_name(id, mName, 31); if(WeaponinMarket[Key] < 101) { print_color(0, "!g%s%L", Prefix, LANG_SERVER, "BUYMARKETITEM", mName, WeaponNames[WeaponinMarket[Key]], MarketPoints[Key], Name); uWeapon[WeaponinMarket[Key]][id]++; uWeapon[WeaponinMarket[Key]][Key]--; } else if(WeaponinMarket[Key] == 101) { print_color(0, "!g%s%L", Prefix, LANG_SERVER, "BUYMARKETCHEST", mName, MarketPoints[Key], Name); Chest[id]++; Chest[Key]--; } else if(WeaponinMarket[Key] == 102) { print_color(0, "!g%s%L", Prefix, LANG_SERVER, "BUYMARKETKEY", mName, MarketPoints[Key], Name); pKey[id]++; pKey[Key]--; } Points[Key] += MarketPoints[Key]; Points[id] -= MarketPoints[Key]; Save(Key); Save(id); inMarket[Key] = false; MarketPoints[Key] = 0; WeaponinMarket[Key] = 0; MenuMod[id] = 0; } } else if(MenuMod[id] == 4) { uWeapon[Key][id]--; Menu(id); Save(id); return PLUGIN_HANDLED; } else if(MenuMod[id] == 5) { if(Key == -1) { aTarget[id] = 0; } if(Key == -2) { MenuMod[id] = -2; } if(Key == -3) { if(uWeapon[aThing[id]][id] > 0) { uWeapon[aThing[id]][aTarget[id]]++; uWeapon[aThing[id]][id]--; Points[aTarget[id]] += aPoints[id]; Points[id] -= aPoints[id]; Save(aTarget[id]); Save(id); MenuMod[id] = 0; aThing[id] = 0; aTarget[id] = 0; aPoints[id] = 0; print_color(id, "!g%s%L", Prefix, LANG_SERVER, "GIFTSUCCESS"); } } if(Key == -4) { client_cmd(id, "messagemode Gift"); } if(Key > 0) aTarget[id] = Key; Menu(id); return PLUGIN_HANDLED; } MenuMod[id] = 0; return PLUGIN_CONTINUE; } 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, SayText, _, Players[i]); write_byte(Players[i]); write_string(Msg); message_end(); } } } return PLUGIN_HANDLED; } public client_putinserver(id) { Kills[id] = 0, Rang[id] = 0, Points[id] = 0, Choosen[id] = 0, pKey[id] = 0, Chest[id] = 0; for(new i; i < AllWeapon; i++) { uWeapon[i][id] = 0; } Load(id); Password[id] = ""; SavedPassword[id] = ""; Loged[id] = false; } public Load(id) { if(!is_user_connected(id)) { return PLUGIN_HANDLED; } new pFile, Name[32]; pFile = fopen(SaveFile, "rt"); get_user_name(id, Name, 31); if(pFile) { new Line[256]; new LineName[32], tData[5][8], Data[MAX][8]; while(!feof(pFile)) { fgets(pFile, Line, 255); if(Line[0] == ';' || strlen(Line) < 2) continue; parse(Line, LineName, 31); if(equal(LineName, Name)) { parse(Line, LineName, 31, tData[0], 7, tData[1], 7, tData[2], 7, tData[3], 7, tData[4], 7, Data[0], 7, Data[1], 7, Data[2], 7, Data[3], 7, Data[4], 7, Data[5], 7, Data[6], 7, Data[7], 7, Data[8], 7, Data[9], 7, Data[10], 7, Data[11], 7, Data[12], 7, Data[13], 7, Data[14], 7, Data[15], 7, Data[16], 7, Data[17], 7, Data[18], 7, Data[19], 7, Data[20], 7, Data[21], 7, Data[22], 7, Data[23], 7, Data[24], 7, Data[25], 7, Data[26], 7, Data[27], 7, Data[28], 7, Data[29], 7, Data[30], 7, Data[31], 7, Data[32], 7, Data[33], 7, Data[34], 7, Data[35], 7, Data[36], 7, Data[37], 7, Data[38], 7, Data[39], 7, Data[40], 7, Data[41], 7, Data[42], 7, Data[43], 7, Data[44], 7, Data[45], 7, Data[46], 7, Data[47], 7, Data[48], 7, Data[49], 7); Kills[id] = str_to_num(tData[0]); Points[id] = str_to_num(tData[1]); pKey[id] = str_to_num(tData[2]); Chest[id] = str_to_num(tData[3]); Rang[id] = str_to_num(tData[4]); for(new i; i < MAX; i++) { uWeapon[i][id] = str_to_num(Data[i]); } return PLUGIN_HANDLED; } } fclose(pFile); } return PLUGIN_CONTINUE; } public Save(id) { if(!is_user_connected(id)) { return PLUGIN_HANDLED; } new pFile, Name[32]; pFile = fopen(SaveFile, "rt"); get_user_name(id, Name, 31); if(pFile) { new Line[192], Lines; new LineName[32], bool:Found; while(!feof(pFile)) { fgets(pFile, Line, 191); if(Line[0] == ';' || strlen(Line) < 2) continue; parse(Line, LineName, 31); if(equal(LineName, Name) && !Found) { new mLine[256], LoadWeapon[256], String[8]; format(String, 7, "^"%i^" ", Kills[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", Points[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", pKey[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", Chest[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", Rang[id]); add(LoadWeapon, 255, String); for(new i; i < MAX; i++) { format(String, 7, "^"%i^" ", uWeapon[i][id]); add(LoadWeapon, 255, String); } formatex(mLine, 255, "^"%s^" %s", Name, LoadWeapon); write_file(SaveFile, mLine, Lines); Found = true; return PLUGIN_HANDLED; } Lines++; } if(!Found) { new mLine[256], LoadWeapon[256], String[8]; format(String, 7, "^"%i^" ", Kills[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", Points[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", pKey[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", Chest[id]); add(LoadWeapon, 255, String); format(String, 7, "^"%i^" ", Rang[id]); add(LoadWeapon, 255, String); for(new i; i < MAX; i++) { format(String, 7, "^"%i^" ", uWeapon[i][id]); add(LoadWeapon, 255, String); } formatex(mLine, 255, "^"%s^" %s", Name, LoadWeapon); write_file(SaveFile, mLine); return PLUGIN_HANDLED; } fclose(pFile); } return PLUGIN_CONTINUE; } public WeaponMenu(id) { new String[128], Name[32]; format(String, 127, "%s %L", Prefix, LANG_SERVER, "WPM"); new wMenu = menu_create(String, "wMenuHandler"); get_user_name(id, Name, 31); if(Choosen[id] == 0) { for(new i; i < sizeof(FirstWeaponNames); i++) { format(String, 127, "%s", FirstWeaponNames[i][0]); menu_additem(wMenu, String, FirstWeaponNames[i][1]); } } if(Choosen[id] == 1) { for(new i; i < sizeof(SecondaryWeaponNames); i++) { format(String, 127, "%s", SecondaryWeaponNames[i][0]); menu_additem(wMenu, String, SecondaryWeaponNames[i][1]); } } menu_display(id, wMenu); } public wMenuHandler(id, gMenu, item) { if(item == MENU_EXIT) { menu_destroy(gMenu); return; } new data[32], name[64]; new access, callback; menu_item_getinfo(gMenu, item, access, data, charsmax(data), name, charsmax(name), callback); give_item(id, data); Choosen[id]++; if(Choosen[id] >= 2) Grenades(id); WeaponMenu(id); } public RegMenu(id) { new String[128], Name[32]; format(String, 127, "%s %L", Prefix, LANG_SERVER, "RMMAIN"); new rMenu = menu_create(String, "rMenuHandler"); get_user_name(id, Name, 31); format(String, 127, "%L", LANG_SERVER, "RMACCOUNT", Name); menu_additem(rMenu, String, "0"); if(!Registered(id)) { format(String, 127, "%L", LANG_SERVER, "RMP", Password[id]); menu_additem(rMenu, String, "1"); if(strlen(Password[id]) > 4) { format(String, 127, "%L", LANG_SERVER, "RMR"); menu_additem(rMenu, String, "2"); } else { format(String, 127, "\d%L", LANG_SERVER, "RMR"); menu_additem(rMenu, String, "0"); } } else { if(!Loged[id]) { format(String, 127, "%L", LANG_SERVER, "RMP", Password[id]); menu_additem(rMenu, String, "1"); if(equal(SavedPassword[id], Password[id])) { format(String, 127, "%L", LANG_SERVER, "RMLOGIN"); menu_additem(rMenu, String, "3"); } else { format(String, 127, "\d%L", LANG_SERVER, "RMLOGIN"); menu_additem(rMenu, String, "0"); } } else { format(String, 127, "%L", LANG_SERVER, "RMLOGOUT"); menu_additem(rMenu, String, "-1"); } } menu_display(id, rMenu); } public rMenuHandler(id, gMenu, item) { if(item == MENU_EXIT) { menu_destroy(gMenu); return; } new data[9], name[64], Key; new access, callback; menu_item_getinfo(gMenu, item, access, data, charsmax(data), name, charsmax(name), callback); Key = str_to_num(data); if(Key == -1) ToLogout(id); if(Key == 0) RegMenu(id); if(Key == 1) { client_cmd(id, "messagemode UserPassword"); RegMenu(id); } if(Key == 2) { print_color(id, "!g%s%L", Prefix, LANG_SERVER, "REGISTERSUCCESS", Password[id]); Register(id, Password[id]); copy(SavedPassword[id], 31, Password[id]); Loged[id] = true; Menu(id); } if(Key == 3) { if(equal(SavedPassword[id], Password[id])) { Loged[id] = true; print_color(id, "!g%s%L", Prefix, LANG_SERVER, "REGISTERLOGIN"); Menu(id); } } } public ToLogout(id) { if(Loged[id]) { Loged[id] = false; Password[id] = ""; print_color(id, "!g%s%L", Prefix, LANG_SERVER, "REGISTERLOGOUT"); } } public PlayerPassword(id) { new Data[32]; read_args(Data, 31); remove_quotes(Data); if(strlen(Data) < 5) { print_color(id, "!g%s%L", Prefix, LANG_SERVER, "REGISTERSHORT"); client_cmd(id, "messagemode UserPassword"); return PLUGIN_HANDLED; } if(Loged[id]) { return PLUGIN_HANDLED; } copy(Password[id], 31, Data); RegMenu(id); return PLUGIN_CONTINUE; } public NameChange(id) { if(!is_user_connected(id)) return FMRES_IGNORED; new OldName[32], NewName[32], Name[32]; get_user_name(id, Name, 31); pev(id, pev_netname, OldName, charsmax(OldName)); if(OldName[0]) { get_user_info(id, "name", NewName, charsmax(NewName)); if(!equal(OldName, NewName)) { set_user_info(id, "name", OldName); print_color(id, "!g%s%L", Prefix, LANG_SERVER, "REGISTERNAMECHANGE"); return FMRES_HANDLED; } } return FMRES_IGNORED; } stock bool:ValidMdl(Mdl[]) { if(containi(Mdl, ".mdl") != -1) { return true; } return false; } stock bool:Registered(id) { new pFile, Data[2][32], Line[64], Name[32]; get_user_name(id, Name, 31); pFile = fopen(RegisterFile, "rt"); while(!feof(pFile)) { fgets(pFile, Line, 63); parse(Line, Data[0], 31, Data[1], 31); if(equal(Data[0], Name)) { copy(SavedPassword[id], 31, Data[1]); return true; } } fclose(pFile); return false; } stock Register(id, const rSavedPassword[]) { new pFile, Line[64], Name[32]; get_user_name(id, Name, 31); pFile = fopen(RegisterFile, "at+"); format(Line, 63, "^n^"%s^" ^"%s^"", Name, rSavedPassword); write_file(RegisterFile, Line); fclose(pFile); } stock Grenades(id) { give_item(id, "weapon_hegrenade"); give_item(id, "weapon_smokegrenade"); give_item(id, "weapon_flashbang"); } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par } */
meniu weapons arme
Discutii legate de instalarea, configurarea si modificarea unui server de Counter-Strike.
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
- A k c 3 n 7
- Super moderator
- Posts: 5137
- Joined: 25 Aug 2014, 21:31
- Detinator Steam: Da
- CS Status: who dares wins
- SteamID: Jandarmeria
- Reputatie: Super moderator
Moderatorul anului 2023
Fost Membru Club eXtreamCS ( o luna )
Fost eXtream Mod
Fost Intermediar
Nume anterior: Sorinel - Fond eXtream: 0
- Location: Unknown
- Discord: remusakcent
- Has thanked: 4 times
- Been thanked: 46 times
-
- Membru, skill 0
- Posts: 26
- Joined: 07 Aug 2017, 18:44
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Detinator server CS: GO.USTRIKE.RO
- Fond eXtream: 0
- Contact:
Multumesc mult. merge. Mai am o problema cu unul . daca il includ in plugins.ini imi da server-ul ofline
Tot un plugin ca celalalt este dar e un update dar nu inteleg de ce nu imi merge. de aici l-am luat https://forums.alliedmods.net/showthread.php?t=294858
- | Afiseaza codul
#include <amxmodx> #include <amxmisc> #include <engine> #include <sqlx> #include <fakemeta> #include <fun> #include <cstrike> #include <hamsandwich> #include <xs> /* ColorChat Support */ #define NORMAL DontChange #define GREEN DontChange #define TEAM_COLOR DontChange #define RED Red #define BLUE Blue #define GREY Grey #define ColorChat client_print_color /* ColorChat Support */ enum _:Colors { DontChange, Red, Blue, Grey } stock const g_szTeamName[Colors][] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" } stock client_print_color(id, iColor=DontChange, const szMsg[], any:...) { // check if id is different from 0 if( id && !is_user_connected(id) ) { return 0; } if( iColor > Grey ) { iColor = DontChange; } new szMessage[192]; if( iColor == DontChange ) { szMessage[0] = 0x04; } else { szMessage[0] = 0x03; } new iParams = numargs(); // Specific player code if(id) { if( iParams == 3 ) { copy(szMessage[1], charsmax(szMessage)-1, szMsg); } else { vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); } if( iColor ) { new szTeam[11]; // store current team so we can restore it get_user_team(id, szTeam, charsmax(szTeam)); // set id TeamInfo in consequence // so SayText msg gonna show the right color Send_TeamInfo(id, id, g_szTeamName[iColor]); // Send the message Send_SayText(id, id, szMessage); // restore TeamInfo Send_TeamInfo(id, id, szTeam); } else { Send_SayText(id, id, szMessage); } } // Send message to all players else { // Figure out if at least 1 player is connected // so we don't send useless message if not // and we gonna use that player as team reference (aka SayText message sender) for color change new iPlayers[32], iNum; get_players(iPlayers, iNum, "ch"); if( !iNum ) { return 0; } new iFool = iPlayers[0]; new iMlNumber, i, j; new Array:aStoreML = ArrayCreate(); if( iParams >= 5 ) // ML can be used { for(j=4; j<iParams; j++) { // retrieve original param value and check if it's LANG_PLAYER value if( getarg(j) == LANG_PLAYER ) { i=0; // as LANG_PLAYER == -1, check if next parm string is a registered language translation while( ( szMessage[ i ] = getarg( j + 1, i++ ) ) ) {} if( GetLangTransKey(szMessage) != TransKey_Bad ) { // Store that arg as LANG_PLAYER so we can alter it later ArrayPushCell(aStoreML, j++); // Update ML array saire so we'll know 1st if ML is used, // 2nd how many args we have to alterate iMlNumber++; } } } } // If arraysize == 0, ML is not used // we can only send 1 MSG_BROADCAST message if( !iMlNumber ) { if( iParams == 3 ) { copy(szMessage[1], charsmax(szMessage)-1, szMsg); } else { vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); } if( iColor ) { new szTeam[11]; get_user_team(iFool, szTeam, charsmax(szTeam)); Send_TeamInfo(0, iFool, g_szTeamName[iColor]); Send_SayText(0, iFool, szMessage); Send_TeamInfo(0, iFool, szTeam); } else { Send_SayText(0, iFool, szMessage); } } // ML is used, we need to loop through all players, // format text and send a MSG_ONE_UNRELIABLE SayText message else { new szTeam[11], szFakeTeam[10]; if( iColor ) { get_user_team(iFool, szTeam, charsmax(szTeam)); copy(szFakeTeam, charsmax(szFakeTeam), g_szTeamName[iColor]); } for( i = 0; i < iNum; i++ ) { id = iPlayers; for(j=0; j<iMlNumber; j++) { // Set all LANG_PLAYER args to player index ( = id ) // so we can format the text for that specific player setarg(ArrayGetCell(aStoreML, j), _, id); } // format string for specific player vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); if( iColor ) { Send_TeamInfo(id, iFool, szFakeTeam); Send_SayText(id, iFool, szMessage); Send_TeamInfo(id, iFool, szTeam); } else { Send_SayText(id, iFool, szMessage); } } ArrayDestroy(aStoreML); } } return 1; } stock Send_TeamInfo(iReceiver, iPlayerId, szTeam[]) { static iTeamInfo = 0; if( !iTeamInfo ) { iTeamInfo = get_user_msgid("TeamInfo"); } message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iTeamInfo, .player=iReceiver); write_byte(iPlayerId); write_string(szTeam); message_end(); } stock Send_SayText(iReceiver, iPlayerId, szMessage[]) { static iSayText = 0; if( !iSayText ) { iSayText = get_user_msgid("SayText"); } message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, .player=iReceiver); write_byte(iPlayerId); write_string(szMessage); message_end(); } stock register_dictionary_colored(const filename[]) { if( !register_dictionary(filename) ) { return 0; } new szFileName[256]; get_localinfo("amxx_datadir", szFileName, charsmax(szFileName)); format(szFileName, charsmax(szFileName), "%s/lang/%s", szFileName, filename); new fp = fopen(szFileName, "rt"); if( !fp ) { log_amx("Failed to open %s", szFileName); return 0; } new szBuffer[512], szLang[3], szKey[64], szTranslation[256], TransKey:iKey; while( !feof(fp) ) { fgets(fp, szBuffer, charsmax(szBuffer)); trim(szBuffer); if( szBuffer[0] == '[' ) { strtok(szBuffer[1], szLang, charsmax(szLang), szBuffer, 1, ']'); } else if( szBuffer[0] ) { strbreak(szBuffer, szKey, charsmax(szKey), szTranslation, charsmax(szTranslation)); iKey = GetLangTransKey(szKey); if( iKey != TransKey_Bad ) { while( replace(szTranslation, charsmax(szTranslation), "!g", "^4") ){} while( replace(szTranslation, charsmax(szTranslation), "!t", "^3") ){} while( replace(szTranslation, charsmax(szTranslation), "!n", "^1") ){} AddTranslation(szLang, iKey, szTranslation[2]); } } } fclose(fp); return 1; } 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[0]) > 1) { formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[1]); precache_model(Mdl); } if(strlen(SkinData[2]) > 1) { formatex(Mdl, charsmax(Mdl), "models/%s%s.mdl", SkinFolder, SkinData[2]); precache_model(Mdl); } } for(new i = 1; i < sizeof(DefaultModels); i++) { if(strlen(DefaultModels[0]) > 1) { formatex(Mdl, charsmax(Mdl), "models/%s%s", DSkinFolder, DefaultModels[0]); precache_model(Mdl); } } } public plugin_end() { SQL_FreeHandle(SQL_TUPLE); } public plugin_init() { for(new i; i < MAXWP; i++) { copy(SkinDataTrade, 31, SkinData[0]); } register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar(PLUGIN, VERSION, FCVAR_SERVER); register_dictionary("csgov2.txt"); CvarHost = register_cvar("sql11.freesqldatabase.com", ""); CvarDatabase = register_cvar("sql11190087", ""); CvarUser = register_cvar("sql11190087", ""); CvarPassword = register_cvar("lQ8CqTLZDl", ""); 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[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 } */
Tot un plugin ca celalalt este dar e un update dar nu inteleg de ce nu imi merge. de aici l-am luat https://forums.alliedmods.net/showthread.php?t=294858
☆ GO.USTRIKE.RO -=[CS:GO COMPETITIVE | !WS !KNIFE !GLOVES]=- WWW.USTRIKE.RO ☆
- A k c 3 n 7
- Super moderator
- Posts: 5137
- Joined: 25 Aug 2014, 21:31
- Detinator Steam: Da
- CS Status: who dares wins
- SteamID: Jandarmeria
- Reputatie: Super moderator
Moderatorul anului 2023
Fost Membru Club eXtreamCS ( o luna )
Fost eXtream Mod
Fost Intermediar
Nume anterior: Sorinel - Fond eXtream: 0
- Location: Unknown
- Discord: remusakcent
- Has thanked: 4 times
- Been thanked: 46 times
-
- Membru, skill 0
- Posts: 26
- Joined: 07 Aug 2017, 18:44
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Detinator server CS: GO.USTRIKE.RO
- Fond eXtream: 0
- Contact:
- A k c 3 n 7
- Super moderator
- Posts: 5137
- Joined: 25 Aug 2014, 21:31
- Detinator Steam: Da
- CS Status: who dares wins
- SteamID: Jandarmeria
- Reputatie: Super moderator
Moderatorul anului 2023
Fost Membru Club eXtreamCS ( o luna )
Fost eXtream Mod
Fost Intermediar
Nume anterior: Sorinel - Fond eXtream: 0
- Location: Unknown
- Discord: remusakcent
- Has thanked: 4 times
- Been thanked: 46 times
sunt unele pluginuri care pica serverul din cauza hostului slab, cred ca asta este problema
-
- Membru, skill 0
- Posts: 26
- Joined: 07 Aug 2017, 18:44
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Detinator server CS: GO.USTRIKE.RO
- Fond eXtream: 0
- Contact:
Am inteles .Deci raman pe cel vechi. As mai avea niste probleme cu el. Nu imi ramane arma salvata daca castig runda , si daca aplic un skin si dau arma jos si o ia alt jucator el nu poate vedea skinul. poti sa ma ajuti ?
☆ GO.USTRIKE.RO -=[CS:GO COMPETITIVE | !WS !KNIFE !GLOVES]=- WWW.USTRIKE.RO ☆
-
- Membru, skill 0
- Posts: 26
- Joined: 07 Aug 2017, 18:44
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Detinator server CS: GO.USTRIKE.RO
- Fond eXtream: 0
- Contact:
Si pe cel care l-ai facut tu nu imi mai da cufere si chei
☆ GO.USTRIKE.RO -=[CS:GO COMPETITIVE | !WS !KNIFE !GLOVES]=- WWW.USTRIKE.RO ☆
Return to “Probleme la servere dedicate de Counter-Strike”
Jump to
- eXtream - Forum
- ↳ Steam
- ↳ Forum
- ↳ WebDesign
- ↳ Incepatori
- ↳ Cos de reciclare
- ↳ Discutii generale
- ↳ Anunturi
- ↳ Security zone
- ↳ Filme si seriale
- ↳ Reclamatii
- ↳ Entertainment
- ↳ Distractie
- ↳ Clubul eXtreamCS - Intra si tu ! [noi oportunitati]
- eXtream - Counter-Strike 2
- ↳ Counter-Strike 2
- eXtream - Counter-Strike 1.6
- ↳ Diverse
- ↳ Filme gaming
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Tutoriale
- ↳ Cereri
- ↳ Discutii generale
- ↳ Probleme la servere dedicate de Counter-Strike
- ↳ Cereri admin / slot
- ↳ Probleme in jocul Counter-Strike
- ↳ Pluginuri
- ↳ Pluginuri eXtream
- ↳ Cereri
- ↳ AdminMod
- ↳ AmxModX
- ↳ Resurse
- ↳ Moduri
- ↳ Addon-uri
- ↳ Kit-uri
- ↳ Harti
- ↳ Diverse
- ↳ Cereri
- ↳ Servere
- ↳ Programarea CS-ului
- ↳ Scripting
- ↳ Modificari pluginuri
- ↳ CStrike
- ↳ Cereri
- eXtream - Echipa
- ↳ Productia eXtream
- ↳ Harti eXtream
- ↳ CS.eXtreamCS.com - Server oficial eXtreamCS
- ↳ Zona administrativă
- ↳ Cereri acces
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Admin zone
- ↳ CS2.eXtreamCS.com - Server official eXtreamCS
- ↳ XMAS.eXtreamCS.com
- ↳ Cereri admin
- ↳ Cereri unban
- ↳ Reclamatii / Sugestii
- ↳ eXtreamCS #PubMasters
- eXtream - Counter Strike Global Offensive
- ↳ Diverse
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Probleme la servere dedicate de Counter-Strike: Global Offensive
- ↳ Probleme in jocul Counter-Strike: Global Offensive
- ↳ Pluginuri
- ↳ Cereri
- ↳ Resurse
- ↳ Addons-uri
- ↳ Hărți
- ↳ Diverse
- ↳ Servere
- eXtream - Counter-Strike Source
- ↳ Tutoriale
- ↳ Pluginuri
- ↳ Servere
- ↳ Resurse
- ↳ Harti
- ↳ Moduri
- ↳ Diverse
- ↳ Classic » CS
- ↳ Anunțuri administrative
- ↳ Cereri admin/slot
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Banlist
- ↳ Admins Only
- ↳ Discord