Перейти к содержанию

ryancoolround

Администратор
  • Постов

    7 076
  • Зарегистрирован

  • Посещение

  • Победитель дней

    546

Весь контент ryancoolround

  1. ryancoolround

    One-Shot Defib

    Если прервать воскрешение Дефибриллятором, то Дефибриллятор исчезнет. Плагин удобно использовать в связке вместе с: Установка: Поместите l4d2_oneshotdefib.smx в /left4dead2/addons/sourcemod/plugins Сделайте рестарт сервера l4d2_oneshotdefib.sp l4d2_oneshotdefib.smx
  2. Version 1.0.2 is available for download. Changes in v1.0.2: Removed Google Adsense code from <head> which I forgot to remove before posting the topic. Excuse me!
  3. ryancoolround

    Defib Healing

    С помощью Дефибрилляции теперь можно лечить живых игроков. Команды: sm_defib_chat: Если 1, сообщит всем на сервере, когда кто-то лечит кого-то дефибриллятором. sm_defib_health: Количество здоровья, которое можно дать человеку при дефибрации (примечание: не исцеляет больше 100). defibs.smx defibs.sp
  4. На наших активах числиться сервер по игре Left 4 Dead 2, который никак не используется и который стоит в выключенном режиме. Что бы сервер просто так не простаивал, и что бы понять, стоит ли на него тратить в дальнейшем деньги, я вам предлагаю взять этот сервер под свой контроль абсолютно бесплатно. Вы полностью управляете сервером, так сказать от А до Я. Условия просты, что бы этот сервер оплачивался в дальнейшем, вы должны показать что это полностью активная и играбельная сборка, на которую игроку интересно будет возвращаться снова и снова. Tickrate сервера: 66 Слотов: 8 (Есть возможность изменения) FTP доступ: Предоставляется Простая и удобная панель управления, настроить сервер можно в два клика; Профессиональное оборудование, которое гарантирует вам круглосуточную поддержку сервера; Полноценную защиту и возможность физической блокировки по IP. Я жду ваших предложений в этой теме. Спасибо за внимание!
  5. В общем у меня появилась возможность увешать сайт рекламой. Я не хочу это делать не посоветовавшись с вами. Этот опрос решит, будет ли на нашем сайте реклама. Спасибо!
  6. Максимально просто! Все оружие, которое будет раскидано по карте на сервере в L4D2, будет иметь рандомное количество боеприпасов. При первом запуске плагина создается конфиг l4d2_varyingammo.cfg в /left4dead2/cfg/sourcemod, в котором у каждого оружия можно указать минимальное количество патронов и максимальное. L4D2VaryingAmmo.sp L4D2VaryingAmmo.smx
  7. Если коротко, то Выжившие смогут прыгать как Охотники. А теперь более подробное описание. Есть 2 текстовых команды, !fyzb и !fyzb2. !fyzb - Выжившие прыгают как Охотники благодаря нажатию комбинации Shift + Пробел. !fyzb2 - Выжившие прыгают как Охотники благодаря нажатию комбинации Ctrl + Пробел. В чате время от времени будет показываться реклама о текущей возможности: Напиши !fyzb или !fyzb2 что бы выжившие могли прыгать как Охотник. Первая пропись !fyzb или !fyzb2 включает возможность. Повторная пропись команд !fyzb или !fyzb2 отключает возможность прыгать как Охотник. А при каждом прыжке клиенту будет посылаться надпись "Hunter Jump". Есть огромная вероятность того, что ваш прыжок привлечет внимание Инфицированных, и тогда заспавнится кто то из: Толстяк Охотник Курильщик Ведьма При первом запуске плагина, в пути /left4dead2/cfg/sourcemod создается файл l4d_fyzb_en_v20.cfg. Чуть ниже лишь малая часть переменных из этого конфига. l4d_fyzb_damage "0" - Получит ли Выживший урон при прыжке? l4d_fyzb_damage2 "0" - Получит ли Выживший урон при прыжке? l4d_fyzb_distancediff "60.0" - Дистанция прыжка l4d_fyzb_enabled "1" - Включен ли плагин l4d_fyzb_god "1" - Бесмертие во время прыжка l4d_fyzb_infecteduse "0" - 0 Плагин не доступен Зараженным, 1 - Плагин доступен всем Зараженным 2 - Плагин доступен всем Зараженным кроме Танка HumanHunterJump.sp HumanHunterJump.smx
  8. С помощью тактических маркеров в L4D2, к примеру капитан команды зараженных сможет управлять атакой. Плагин прекрасно работает на сервере Left 4 Dead 2. А по заявлению автора, он будет работать в любой игре на движке Source. Тестировался: SourceMod (1.10.0.6492) Установка: Поместите содержимое архива, сохраняя иерархию на свой сервер Сделайте рестарт сервера Команды: Для администраторов: sm_removeallmarkers - Удаляет все маркеры в команде, в которой находится исполняющий администратор. sm_banmarker Nickname - Запрещает игроку ставить маркеры sm_unbanmarker Nickname - Снимает запрет у игрока ставить маркеры Для каждого игрока: sm_attackmarker - Размещает маркер в том месте, на которое смотрит прицел игрока attackmarker.zip
  9. Версия, которая кикает абсолютно всех ботов при подключении. Это может пригодится, если сервер заточен на игру без ботов. swapper.smx swapper.sp
  10. Не рекомендуется использовать данную версию плагина на публичных серверах. Мне надо было протестировать один из плагинов, и для тестов мне понадобилось установить этот плагин. И благодаря этому я обнаружил следующую ошибку. С помощью спама командой "Сменить Команду", можно заспавнить огромное количество ботов. И вообще, копаясь в исходнике плагина я понял что он написан исключительно для Counter Strike: Source. Как он у меня заработал (Хоть и с багом), ума не приложу. #pragma semicolon 1 #include <sourcemod> #include <sdktools> #undef REQUIRE_EXTENSIONS #include <cstrike> #undef REQUIRE_PLUGIN #include <adminmenu> #define PLUGIN_VERSION "0.02" #define YELLOW 0x01 #define NAME_TEAMCOLOR 0x02 #define TEAMCOLOR 0x03 #define GREEN 0x04 public Plugin:myinfo = { name = "Player swapper", author = "X@IDER", description = "Useful tool for swapping players", version = PLUGIN_VERSION, url = "http://www.sourcemod.net/" }; // Array for end round swaps new NewTeam[64]; // Handle to top menu new Handle:hTopMenu; // Handles to change models new Handle:hGameConf; new Handle:hSetModel; // Handle to drop weapons new Handle:hDrop; // Teams new TEAM1,TEAM2; new game; new String:t_models[4][PLATFORM_MAX_PATH] = { "models/player/t_phoenix.mdl", "models/player/t_leet.mdl", "models/player/t_arctic.mdl", "models/player/t_guerilla.mdl" }; new String:ct_models[4][PLATFORM_MAX_PATH] = { "models/player/ct_urban.mdl", "models/player/ct_gsg9.mdl", "models/player/ct_sas.mdl", "models/player/ct_gign.mdl" }; // Team names new String:teams[4][16] = { "N/A", "SPEC", "T", "CT" }; public OnPluginStart() { LoadTranslations("common.phrases"); LoadTranslations("plugin.swapper"); decl String:gdir[PLATFORM_MAX_PATH]; GetGameFolderName(gdir, sizeof(gdir)); if (StrEqual(gdir,"cstrike",false)) game = 0; else if (StrEqual(gdir,"dod",false)) game = 1; else if (StrEqual(gdir,"hl2mp",false)) game = 2; else if (StrEqual(gdir,"Insurgency",false)) game = 3; else if (StrEqual(gdir,"tf",false)) game = 4; else game = 5; TEAM1 = 2; TEAM2 = 3; // Loading SetModel & WeaponDrop for CS:S if (!game) { hGameConf = LoadGameConfigFile("swapper.gamedata"); StartPrepSDKCall(SDKCall_Player); PrepSDKCall_SetFromConf(hGameConf, SDKConf_Virtual, "SetModel"); PrepSDKCall_AddParameter(SDKType_String, SDKPass_Pointer); hSetModel = EndPrepSDKCall(); StartPrepSDKCall(SDKCall_Player); PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "DropWeapon"); PrepSDKCall_AddParameter(SDKType_CBaseEntity, SDKPass_Pointer); PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain); PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain); hDrop = EndPrepSDKCall(); } RegAdminCmd("sm_swap", Swap, ADMFLAG_GENERIC); RegAdminCmd("sm_swapround", SwapRound, ADMFLAG_GENERIC); RegAdminCmd("sm_exch", Exchange, ADMFLAG_GENERIC); RegAdminCmd("sm_exchround", ExchangeRound, ADMFLAG_GENERIC); if (game) HookEvent("player_death",PlayerDeath); HookEvent("player_spawn",PlayerSpawn); HookEvent("round_end",RoundEnd); } public OnMapStart() { // Getting team names for mods other than cstrike if (game) { GetTeamName(TEAM1,teams[TEAM1],16); GetTeamName(TEAM2,teams[TEAM2],16); } } public PrintToChatAllEx(from,const String:format[], any:...) { decl String:message[256]; VFormat(message,sizeof(message),format,3); if (game == 1) { PrintToChatAll(message); return; } new Handle:hBf = StartMessageAll("SayText2"); if (hBf != INVALID_HANDLE) { BfWriteByte(hBf, from); BfWriteByte(hBf, true); BfWriteString(hBf, message); EndMessage(); } } public ChangeClientTeamEx(client,team) { if (game) { ChangeClientTeam(client,team); return; } new oldTeam = GetClientTeam(client); CS_SwitchTeam(client,team); decl String:model[PLATFORM_MAX_PATH],String:newmodel[PLATFORM_MAX_PATH]; GetClientModel(client,model,sizeof(model)); newmodel = model; if (oldTeam == TEAM1) { new c4 = GetPlayerWeaponSlot(client,CS_SLOT_C4); if (c4 != -1) SDKCall(hDrop,client,c4,true,false); if (StrContains(model,t_models[0],false)) newmodel = ct_models[0]; if (StrContains(model,t_models[1],false)) newmodel = ct_models[1]; if (StrContains(model,t_models[2],false)) newmodel = ct_models[2]; if (StrContains(model,t_models[3],false)) newmodel = ct_models[3]; } else if (oldTeam == TEAM2) { SetEntProp(client, Prop_Send, "m_bHasDefuser", 0, 1); if (StrContains(model,ct_models[0],false)) newmodel = t_models[0]; if (StrContains(model,ct_models[1],false)) newmodel = t_models[1]; if (StrContains(model,ct_models[2],false)) newmodel = t_models[2]; if (StrContains(model,ct_models[3],false)) newmodel = t_models[3]; } SDKCall(hSetModel, client, newmodel); } public SwapPlayer(client,target) { if (GetClientTeam(target) == TEAM1) ChangeClientTeamEx(target,TEAM2); else if (GetClientTeam(target) == TEAM2) ChangeClientTeamEx(target,TEAM1); } public SwapPlayerRound(client,target) { decl String:buffer[64]; GetClientName(target,buffer,sizeof(buffer)); if (NewTeam[target]) { PrintToChatAllEx(target,"%t","Swap Cancel",YELLOW,TEAMCOLOR,buffer,YELLOW,GREEN,teams[NewTeam[target]],YELLOW); NewTeam[target] = 0; return; } if (GetClientTeam(target) == TEAM1) NewTeam[target] = TEAM2; else if (GetClientTeam(target) == TEAM2) NewTeam[target] = TEAM1; PrintToChatAllEx(target,"%t","Swap",YELLOW,TEAMCOLOR,buffer,YELLOW,GREEN,teams[NewTeam[target]],YELLOW); } public ExchangePlayers(client,cl1,cl2) { if ((GetClientTeam(cl1) == TEAM1) && (GetClientTeam(cl2) == TEAM2)) { ChangeClientTeamEx(cl1,TEAM2); ChangeClientTeamEx(cl2,TEAM1); } else if ((GetClientTeam(cl1) == TEAM2) && (GetClientTeam(cl2) == TEAM1)) { ChangeClientTeamEx(cl1,TEAM1); ChangeClientTeamEx(cl2,TEAM2); } else ReplyToCommand(client,"%t","Bad targets"); } public ExchangePlayersRound(client,cl1,cl2) { if (((GetClientTeam(cl1) == TEAM1) && (GetClientTeam(cl2) == TEAM2)) || ((GetClientTeam(cl1) == TEAM2) && (GetClientTeam(cl2) == TEAM1))) { SwapPlayerRound(client,cl1); SwapPlayerRound(client,cl2); } else ReplyToCommand(client,"%t","Bad targets"); } public Action:Swap(client,args) { if (!args) { ReplyToCommand(client,"\x04sm_swap <player>"); return Plugin_Handled; } decl String:pattern[64],String:buffer[64]; GetCmdArg(1,pattern,sizeof(pattern)); new Targets[64],bool:mb; new count = ProcessTargetString(pattern,client,Targets,sizeof(Targets),0,buffer,sizeof(buffer),mb); if (!count) ReplyToCommand(client,"%t","No target",YELLOW,TEAMCOLOR,pattern,YELLOW); else for (new i = 0; i < count; i++) SwapPlayer(client,Targets[i]); return Plugin_Handled; } public Action:SwapRound(client,args) { if (!args) { ReplyToCommand(client,"\x04sm_swapround <player>"); return Plugin_Handled; } new String:pattern[64],String:buffer[64]; GetCmdArg(1,pattern,sizeof(pattern)); new Targets[64],bool:mb; new count = ProcessTargetString(pattern,client,Targets,sizeof(Targets),0,buffer,sizeof(buffer),mb); if (!count) ReplyToCommand(client,"%t","No target",YELLOW,TEAMCOLOR,pattern,YELLOW); else for (new i = 0; i < count; i++) SwapPlayerRound(client,Targets[i]); return Plugin_Handled; } public Action:Exchange(client,args) { if (args < 2) { ReplyToCommand(client,"\x04sm_exch <player1> <player2>"); return Plugin_Handled; } new String:p1[64],String:p2[64]; GetCmdArg(1,p1,sizeof(p1)); GetCmdArg(2,p2,sizeof(p2)); new cl1 = FindTarget(client,p1); new cl2 = FindTarget(client,p2); if (cl1 == -1) ReplyToCommand(client,"%t","No target",YELLOW,TEAMCOLOR,p1,YELLOW); if (cl2 == -1) ReplyToCommand(client,"%t","No target",YELLOW,TEAMCOLOR,p2,YELLOW); if ((cl1 > 0) && (cl2 > 0)) ExchangePlayers(client,cl1,cl2); return Plugin_Handled; } public Action:ExchangeRound(client,args) { if (args < 2) { ReplyToCommand(client,"\x04sm_exchround <player1> <player2>"); return Plugin_Handled; } new String:p1[64],String:p2[64]; GetCmdArg(1,p1,sizeof(p1)); GetCmdArg(2,p2,sizeof(p2)); new cl1 = FindTarget(client,p1); new cl2 = FindTarget(client,p2); if (cl1 == -1) ReplyToCommand(client,"%t","No target",YELLOW,TEAMCOLOR,p1,YELLOW); if (cl2 == -1) ReplyToCommand(client,"%t","No target",YELLOW,TEAMCOLOR,p2,YELLOW); if ((cl1 > 0) && (cl2 > 0)) ExchangePlayersRound(client,cl1,cl2); return Plugin_Handled; } public PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { // mystery protection new client = GetClientOfUserId(GetEventInt(event,"userid")); NewTeam[client] = 0; } public PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event,"userid")); if (NewTeam[client]) { ChangeClientTeamEx(client,NewTeam[client]); NewTeam[client] = 0; } } public RoundEnd(Handle:event, const String:name[], bool:dontBroadcast) { for (new i = 1; i < sizeof(NewTeam); i++) if (NewTeam[i] && IsClientInGame(i)) { ChangeClientTeamEx(i,NewTeam[i]); NewTeam[i] = 0; } } public OnAdminMenuReady(Handle:topmenu) { if (topmenu == hTopMenu) { return; } hTopMenu = topmenu; new TopMenuObject:player_commands = FindTopMenuCategory(hTopMenu, ADMINMENU_PLAYERCOMMANDS); if (player_commands != INVALID_TOPMENUOBJECT) { AddToTopMenu(hTopMenu,"sm_swap",TopMenuObject_Item,AdminMenu_Swap,player_commands,"sm_swap",ADMFLAG_GENERIC); AddToTopMenu(hTopMenu,"sm_swapround",TopMenuObject_Item,AdminMenu_SwapRound,player_commands,"sm_swap",ADMFLAG_GENERIC); AddToTopMenu(hTopMenu,"sm_exch",TopMenuObject_Item,AdminMenu_Exchange,player_commands,"sm_swap",ADMFLAG_GENERIC); AddToTopMenu(hTopMenu,"sm_exchround",TopMenuObject_Item,AdminMenu_ExchangeRound,player_commands,"sm_swap",ADMFLAG_GENERIC); } } public AdminMenu_Swap(Handle:topmenu,TopMenuAction:action,TopMenuObject:object_id,param,String:buffer[],maxlength) { if (action == TopMenuAction_DisplayOption) { Format(buffer, maxlength, "%T", "Swap Now", param); } else if (action == TopMenuAction_SelectOption) { DisplaySwapMenu(param,false); } } public AdminMenu_SwapRound(Handle:topmenu,TopMenuAction:action,TopMenuObject:object_id,param,String:buffer[],maxlength) { if (action == TopMenuAction_DisplayOption) { Format(buffer, maxlength, "%T", "Swap Round", param); } else if (action == TopMenuAction_SelectOption) { DisplaySwapMenu(param,true); } } public AdminMenu_Exchange(Handle:topmenu,TopMenuAction:action,TopMenuObject:object_id,param,String:buffer[],maxlength) { if (action == TopMenuAction_DisplayOption) { Format(buffer, maxlength, "%T", "Exchange Now", param); } else if (action == TopMenuAction_SelectOption) { DisplayExchangeMenu(param,false); } } public AdminMenu_ExchangeRound(Handle:topmenu,TopMenuAction:action,TopMenuObject:object_id,param,String:buffer[],maxlength) { if (action == TopMenuAction_DisplayOption) { Format(buffer, maxlength, "%T", "Exchange Round", param); } else if (action == TopMenuAction_SelectOption) { DisplayExchangeMenu(param,true); } } public MenuHandler_Swap(Handle:menu, MenuAction:action, param1, param2) { if (action == MenuAction_End) CloseHandle(menu); else if (action == MenuAction_Cancel) { if ((param2 == MenuCancel_ExitBack) && (hTopMenu != INVALID_HANDLE)) DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory); } else if (action == MenuAction_Select) { decl String:title[100],String:id[16],String:Round[100]; GetMenuItem(menu, param2, id, sizeof(id)); new target = GetClientOfUserId(StringToInt(id)); GetMenuTitle(menu, title, sizeof(title)); Format(Round, sizeof(Round), "%t", "Swap Round", param1); if (!strcmp(Round,title)) SwapPlayerRound(param1,target); else SwapPlayer(param1,target); DisplaySwapMenu(param1,!strcmp(Round,title)); } } public DisplaySwapMenu(client,bool:round) { new Handle:menu = CreateMenu(MenuHandler_Swap); SetMenuExitBackButton(menu,true); decl String:title[100],String:name[64],String:id[16]; if (round) Format(title, sizeof(title), "%t", "Swap Round", client); else Format(title, sizeof(title), "%t", "Swap Now", client); SetMenuTitle(menu, title); for (new i = 1; i <= MaxClients; i++) if (IsClientInGame(i)) { new team = GetClientTeam(i); if (team > CS_TEAM_SPECTATOR) { GetClientName(i,name,sizeof(name)); if (NewTeam[i]) Format(title, sizeof(title), "[>>%s] %s",teams[NewTeam[i]],name); else Format(title, sizeof(title), "[%s] %s",teams[team],name); IntToString(GetClientUserId(i),id,sizeof(id)); AddMenuItem(menu,id,title); } } DisplayMenu(menu, client, MENU_TIME_FOREVER); } public MenuHandler_Exchange2(Handle:menu, MenuAction:action, param1, param2) { if (action == MenuAction_End) CloseHandle(menu); else if (action == MenuAction_Cancel) { if ((param2 == MenuCancel_ExitBack) && (hTopMenu != INVALID_HANDLE)) DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory); } else if (action == MenuAction_Select) { decl String:id1[16],String:id2[16],String:Round[100]; GetMenuItem(menu, 0, id1, sizeof(id1)); GetMenuItem(menu, param2, id2, sizeof(id2)); new cl1 = GetClientOfUserId(StringToInt(id1)); new cl2 = GetClientOfUserId(StringToInt(id2)); decl String:title[100]; GetMenuTitle(menu, title, sizeof(title)); Format(Round, sizeof(Round), "%t", "Exchange Round", param1); if (!strcmp(Round,title)) ExchangePlayersRound(param1,cl1,cl2); else ExchangePlayers(param1,cl1,cl2); } } public MenuHandler_Exchange(Handle:menu, MenuAction:action, param1, param2) { if (action == MenuAction_End) CloseHandle(menu); else if (action == MenuAction_Cancel) { if ((param2 == MenuCancel_ExitBack) && (hTopMenu != INVALID_HANDLE)) DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory); } else if (action == MenuAction_Select) { decl String:title[100],String:id[16],String:name[64]; GetMenuItem(menu, param2, id, sizeof(id)); new target = GetClientOfUserId(StringToInt(id)); new team = GetClientTeam(target); new Handle:menu2 = CreateMenu(MenuHandler_Exchange2); SetMenuExitBackButton(menu2,true); GetMenuTitle(menu, title, sizeof(title)); SetMenuTitle(menu2, title); GetClientName(target,name,sizeof(name)); Format(title, sizeof(title), "[%s] %s",teams[team],name); AddMenuItem(menu2,id,title,ITEMDRAW_DISABLED); for (new i = 1; i <= MaxClients; i++) if (IsClientInGame(i) && (i != target)) { new team2 = GetClientTeam(i); if ((team2 > CS_TEAM_SPECTATOR) && (team != team2)) { GetClientName(i,name,sizeof(name)); Format(title, sizeof(title), "[%s] %s",teams[team2],name); IntToString(GetClientUserId(i),id,sizeof(id)); AddMenuItem(menu2,id,title); } } DisplayMenu(menu2, param1, MENU_TIME_FOREVER); } } public DisplayExchangeMenu(client,bool:round) { new Handle:menu = CreateMenu(MenuHandler_Exchange); SetMenuExitBackButton(menu,true); decl String:title[100],String:name[64],String:id[16]; if (round) Format(title, sizeof(title), "%t", "Exchange Round", client); else Format(title, sizeof(title), "%t", "Exchange Now", client); SetMenuTitle(menu, title); for (new i = 1; i <= MaxClients; i++) if (IsClientInGame(i)) { new team = GetClientTeam(i); if (team > CS_TEAM_SPECTATOR) { GetClientName(i,name,sizeof(name)); Format(title, sizeof(title), "[%s] %s",teams[team],name); IntToString(GetClientUserId(i),id,sizeof(id)); AddMenuItem(menu,id,title); } } DisplayMenu(menu, client, MENU_TIME_FOREVER); }
  11. даже погода не любит сони!

    chasing hold up GIF by PlayStation

    42477zffjoh51.jpg

    FVz7UsLXbKM.jpg

  12. Эта тема является официальной темой поддержки нашего дизайна, IP-Gamers 2021, который продаётся тут: https://invisioncommunity.com/files/file/9713-ip-gamers-2021-old-mister-yellow/ О всех обновлениях я буду упоминать в этой теме. Если у вас есть предложения, замечания или прочие идеи и мысли, не стесняйтесь написать их в эту тему. Спасибо.
  13. Снова чуть чуть, поработал над русским языком.
  14. Как ни странно, но данная система баннов, очень быстренько так попадает в поисковик Яндекс. Заметил я это очень давно, но конкретное внимание обратил только сейчас, когда появилось время на это. На мой взгляд, каждый уважающий себя, SEO оптимизатор, админ, в общем тот человек, у которого есть доступ к файловой системе сайта, должен избавляться от подобных проблем в кратчайшие сроки. Ведь, пока Яндекс робот тратит время на то, чтобы проиндексировать страницы без контента и добавить их в поиск, у него нет времени, чтобы проиндексировать действительно нужные страницы. Попробуем избавиться от данной проблемы. К примеру, у нас есть сайт https://l4d2noob.ru/ и скажем наша система банов лежит по следующему пути https://l4d2noob.ru/sourcebans++/, соответственно этот путь надо полностью запретить добавлять в поиск. Для этого в FileZilla идем в корневую папку сайта, там обычно лежит файл robots.txt. Если у вас действительно есть уже сформированный robots.txt, то вам нужно открыть его текстовым редактором стереть в нем все строки, которые как то связаны с вашим SourceBans++, и вместо них добавить следующую строку: Disallow: /sourcebans++/ Эта строка запрещает индексировать все содержимое, что находится в разделе https://l4d2noob.ru/sourcebans++/. Но может быть и такое, что у вас нет еще сформированного файла robots.txt. Тогда вам надо его создать самостоятельно в корневой папке сайта. Вот шаблон robots.txt, который запрещает поисковикам индексировать директорию /SourceBans++/ но при этом все остальное роботам индексировать можно. User-agent: * Disallow: /sourcebans++/ Sitemap: Вставьте ссылку на ваш sitemap.xml здесь Сохраняете, и ждете. Не молниеносно, но со временем, ненужные страницы начнут исчезать из поисковиков.
  15. ryancoolround

    Rly как

    Ну вот небольшие советы. Всегда атакуй в команде. Подожди, пока возродятся другие. Играя в одиночку в качестве инфицированного, выжившим будет очень легко убить тебя. При атаке делай это в каком-то порядке. Например, бумер сначала ослепляет их, а потом громила хватает не ослепленного. Ради бога, избегай случайных плевков от плевальщицы. Все так делают. Это бесполезная трата способности. Ты получишь большое количество гарантированного урона, если плюнекшь ПОСЛЕ того, как кто-то другой схватил выжившего. Что касается киков, то это случается со всеми в паблик серверах. База игроков всегда полна идиотов. Большинство из них даже не используют микрофон, но раздражаются, когда вы не читаете их мысли и не идете в том направлении, которое они хотели, или какое-то другое воображаемое нарушение их собственной воображаемой версии «правил». Лучший совет - играть с друзьями, присоединяться к сообществу, например нашему.
  16. В принципе все просто. Если выжившего схватит кто то из зараженных, выживший потеряет оружие, которое на этот момент у него было в руках. Эта версия плагина, где выжившие не будут терять вторичное оружие. Только основное, гранаты, аптечки, таблетки и т.д. При первом запуске плагина, автоматически создается cfg файл: // This file was auto-generated by SourceMod (v1.10.0.6492) // ConVars for plugin "l4d2_caughtitemdrop.smx" // Advertisements after round start delay? 0-disable // - // Default: "15.0" // Minimum: "0.000000" // Maximum: "120.000000" l4d2_ciw_adsdelay "15.0" - Отвечает за задержку рекламы после старта раунда // Drop Item when pummelled? // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" l4d2_ciw_droponcharger "1" - Потеря после схватки с Громилой // Drop Item when pounced? // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" l4d2_ciw_droponhunter "1" Потеря после схватки с Охотником // Drop Item when jockeyed? // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" l4d2_ciw_droponjockey "1" Жокей // Drop Item when dragged? // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" l4d2_ciw_droponsmoker "1" Курильщик // Show info to players that they dropped item? 0-disabled, 1-chat, 2-hint // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" l4d2_ciw_showinfo "1" Информация Установка: Файл l4d2_caughtitemdrop.phrases.txt поместить в /left4dead2/addons/sourcemod/translations Файл l4d2_caughtitemdrop.smx поместить в /left4dead2/addons/sourcemod/plugins Сделать рестарт сервера l4d2_caughtitemdrop.phrases.txt l4d2_caughtitemdrop.sp l4d2_caughtitemdrop.smx
  17. Админка > Система > Приложения > Звездочка справа от приложения устанавливает приложение по умолчанию.
  18. Версия 1.0.6 Добавлена возможность заспавнить Дефибриллятор В команду добавлен флаг d sm_spawnmedipack <p / a / m /d> Medkits.smx Medkits.sp
  19. ryancoolround

    Silent Panic

    Вам не нравится звук приближающейся орды? Этот плагин избавляется от этого. l4d_2_silentpanic.smx l4d_2_silentpanic.sp
  20. Огромное спасибо @dr.lex за помощь в исправлении ошибок. Плагину для полноценной работы необходим admin-flatfile.smx. Он идет в стандартном пакете SM, так что у вас не должно возникнуть проблем. Но так как я, особо умный сносил абсолютно все плагины, мне пришлось разбираться, из за чего не работает данный плагин. Описание: Если админ введет необходимую команду, он сможет заспавнить Аптечку, Адреналин или Таблетки. После спавна предмета воспроизводится звук, который услышат все игроки. Команда: sm_spawnmedipack < m / p / a > Установка: Поместите Medkits.smx в /left4dead2/addons/sourcemod/plugins Перезапустите сервер Для удобства в L4D2 можно использовать бинды: bind key sm_spawnmedipack m Medkits.sp Medkits.smx
  21. Вас слишком раздражает стандартная система телепортации для призраков в L4D2? Она всегда приводит вас к Выжившему, который находится дальше всех (с точки зрения навигации)? Кроме того вас никогда не телепортирует к последнему идущему выжившему? Этот плагин полностью заменяет систему по умолчанию. Нажимая (или удерживая) кнопку E, вы теперь по очереди телепортируетесь ко всем остальным игрокам (по одному каждую секунду, чтобы вы не попадали мимо своей цели). Кроме того, ваш угол обзора будет в том же направлении что и у цели, так что вы можете сразу пройти мимо цели и найти место для засады. В качестве дополнительного бонуса вы получаете небольшое сообщение о том, к кому вы только что телепортировались. Плагин проверялся на SourceMod (1.10.0.6492). infectedghosteverywhere.sp infectedghosteverywhere.smx
  22. ryancoolround

    Speed Meter

    Проверялся на: SourceMod (1.10.0.6492) Описание: Не знаю зачем, может пригодится тем, кто занимается спидраннами. Но это полноценный, работающий спидометр на SourceMod, для L4D2. Установка: Извлеките содержимое из архива Положите файл speedmeter.phrases.txt в /left4dead2/addons/sourcemod/translations/ Положите файл speedmeter.smx в /left4dead2/addons/sourcemod/plugins Перезапустите сервер Downloads.rar
  23. Спасибо что помогаешь бабушке!

×
×
  • Создать...