Offline |
|
|
Csatlakozott:2016.02.27. 17:55 Hozzászólások:349 Megköszönt másnak: 25 alkalommal Megköszönték neki: 57 alkalommal
|
Üdv mindenkinek! Ahogy a téma neve is elárulja, DeR0iD egyik pluginjáról lenne szó. A plugin tökéletesen működik, 1 dolgot kivéve. Ugyebár minden kör elején előhoz egy Fegyver Menü-t, amiből fegyvert & pisztolyt kell választani. Ez jó is lenne, de minden fegyverhez csak 1 tár lőszert ad. Valaki segítene, hogy mit hova írjak, hogy minden fegyverhez az alap lőszert adja? Pl.: M4A1(90), AWP(30), Deagle(35) stb. LINK: https://forums.alliedmods.net/showthread.php?t=265653FORRÁSKÓD:#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_usp", "weapon_awp", "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" }, { "FAMAS", "weapon_famas" }, { "MP5", "weapon_mp5navy" }, { "SHOTGUN", "weapon_mp3" } }; new const SecondaryWeaponNames[][][] = { { "DEAGLE", "weapon_deagle" }, { "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[i], 31, Data[0]); NeedKills[i] = 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[i], "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[i]) { set_pev(id, pev_viewmodel2, WeaponMdls[i]); return HAM_SUPERCEDE; } } else if(i == UsingWeapon[1][id]) { if(wid == Weapons[i]) { set_pev(id, pev_viewmodel2, WeaponMdls[i]); return HAM_SUPERCEDE; } } else if(i == UsingWeapon[2][id]) { if(wid == Weapons[i]) { set_pev(id, pev_viewmodel2, WeaponMdls[i]); 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[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] == -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 } */
|
|