Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 16.04.2014, 06:51   #1
Ingress DVO ^-^
 Маршал
Аватар для InfectedXMP
 
InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(InfectedXMP сломал счётчик популярности :(
Регистрация: 20.11.2012
Сообщений: 864
Популярность: 12544
Золото Zhyk.Ru: 90
Сказал(а) спасибо: 1,246
Поблагодарили 1,440 раз(а) в 756 сообщениях
 
По умолчанию Kick игрока с причиной в меню админа Sourcemod

Kick игрока с причиной в меню админа Sourcemod

[Ссылки могут видеть только зарегистрированные пользователи. ]
Есть два варианта для добавления причин Кика в меню админа, рассмотрим эти два варианта.

Вариант №1
Открываем файл: ../addons/sourcemod/configs/adminmenu_custom.txt
и заполняем его следующим:
Код:
"Commands"
{
    "PlayerCommands"
    {
		"Кикнуть игрока"
        {
            "cmd"        "sm_kick #1 @2"
            "1"
            {
                "title"       "Выберите игрока"
                "type"        "player"
            }
            "2"
            {
                "title"        "Причина кика"
                "type"         "list"
                    "1"            "мат"
                    "2"            "оскорбление игроков"
                    "3"            "реклама"
                    "4"            "спам в микрофон"
                    "5"            "игнорирование админа"
                    "6"            "некорректный спрей"
                    "7"            "нарушение правил сервера"
                    "8"            "другое"
                    "9"            "долгое время в спеках"
            }
        }
    }		
}
но после этого, у нас в меню админа, в категории «Управление игроками», появится два пункта Кик игрока (стандартное и наше, вновь встроенное). Поэтому данный вариант не очень удобный. И во втором варианте рассмотрим, как добавить причины Кика в стандартную функцию.


Вариант №2
В этом варианте добавим причины в стандартную функцию Кика. Но здесь мы будем уже редактировать стандартные исходники плагинов, а затем компилировать уже.
  1. Открываем файл: ../addons/sourcemod/scripting/basecommands.sp
    И вставляем в него после строчек:
    Код:
    new Handle:g_MapList;
    new Handle:g_ProtectedVars;
    следующее:
    Код:
    new g_kickTarget[MAXPLAYERS+1];
    Сохраняем этот файл.

  2. Теперь открываем файл: ../addons/sourcemod/scripting/basecommands/kick.sp
    Находим строку (48 примерно)
    Код:
    DisplayKickMenu(client)
    и заменяем на:
    Код:
    DisplayKickTargetMenu(client)
    Теперь после этой функции:
    Код:
    DisplayKickTargetMenu(client)
    {
    	new Handle:menu = CreateMenu(MenuHandler_Kick);
    	
    	decl String:title[100];
    	Format(title, sizeof(title), "%T:", "Kick player", client);
    	SetMenuTitle(menu, title);
    	SetMenuExitBackButton(menu, true);
    	
    	AddTargetsToMenu(menu, client, false, false);
    	
    	DisplayMenu(menu, client, MENU_TIME_FOREVER);
    }
    вставляем наши причины:
    Код:
    DisplayKickReasonMenu(client)
    {
    	new Handle:menu = CreateMenu(MenuHandler_Reason);
    	
    	decl String:title[100];
    	Format(title, sizeof(title), "Kick reason", client);
    	SetMenuTitle(menu, title);
    	SetMenuExitBackButton(menu, true);
    
    	AddMenuItem(menu, "Abusive", "Abusive");
    	AddMenuItem(menu, "Racism", "Racism");
    	AddMenuItem(menu, "General cheating/exploits", "General cheating/exploits");
    	AddMenuItem(menu, "Wallhack", "Wallhack");
    	AddMenuItem(menu, "Aimbot", "Aimbot");
    	AddMenuItem(menu, "Speedhacking", "Speedhacking");
    	AddMenuItem(menu, "Mic spamming", "Mic spamming");
    	AddMenuItem(menu, "Admin disrepect", "Admin disrepect");
    	AddMenuItem(menu, "Camping", "Camping");
    	AddMenuItem(menu, "Team killing", "Team killing");
    	AddMenuItem(menu, "Unacceptable Spray", "Unacceptable Spray");
    	AddMenuItem(menu, "Breaking Server Rules", "Breaking Server Rules");
    	AddMenuItem(menu, "Other", "Other");
    	
    	DisplayMenu(menu, client, MENU_TIME_FOREVER);
    }
    Находим строчку (101 примерно строка):
    Код:
    		DisplayKickMenu(param);
    заменяем на:
    Код:
    		DisplayKickTargetMenu(param);
    находим (110 примерно строка)
    Код:
    			decl String:name[MAX_NAME_LENGTH];
    			GetClientName(target, name, sizeof(name));
    			ShowActivity2(param1, "[SM] ", "%t", "Kicked target", "_s", name);
    			PerformKick(param1, target, "");
    заменяем на:
    Код:
    			g_kickTarget[param1] = target;
    			DisplayKickReasonMenu(param1);
    		}
    	}
    }
    
    public MenuHandler_Reason(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)
    	{
    		new target = g_kickTarget[param1];
    		decl String:info[64];
    		
    		GetMenuItem(menu, param2, info, sizeof(info));
    
    		if (target == 0)
    		{
    			PrintToChat(param1, "[SM] %t", "Player no longer available");
    		}
    		else if (!CanUserTarget(param1, target))
    		{
    			PrintToChat(param1, "[SM] %t", "Unable to target");
    		}
    		else
    		{			
    			ShowActivity2(param1, "[SM] ", "%N kicked %N (Reason: %s)", param1, target, info);
    			PerformKick(param1, target, info);
    находим (119 примерно строка):
    Код:
    			DisplayKickMenu(param1);
    заменяем на:
    Код:
    			DisplayKickTargetMenu(param1);
    Компилируем плагин, и кидаем на сервер. После чего, наша родная встроенная функция Кик игрока, будет с причинами.

    Примечание: Если вы причины указываете на русском, то перед компиляцией плагина, необходимо исходник kick.sp перевести в кодировку UTF8 без BOM.
    И число символов в левой части не должно превышать 62 знака, иначе причины игроку будут показываться обрезанными.
    Подсчитать символы можно с помощью программы Notepad++
    Пример ниже
    [Ссылки могут видеть только зарегистрированные пользователи. ]
Послесловие от меня: Данной модификацией пользуюсь уже примерно месяцев 7 и это очень помогает порой объяснить игроку, что так делать нельзя, при этом без лишних слов.

Ниже во вложении прилагаются готовые файлы для Sourcemod_1.5.2

[Ссылки могут видеть только зарегистрированные пользователи. ]
Вложения
Тип файла: zip basecommands SM_1.5.2.zip (24.2 Кб, 11 просмотров)
  Ответить с цитированием
Старый 20.05.2014, 16:38   #2
Заблокирован
 Сержант
Аватар для Alp€rium
 
Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(Alp€rium сломал счётчик популярности :(
Регистрация: 11.11.2011
Сообщений: 98
Популярность: 33905
Золото Zhyk.Ru: 70
Сказал(а) спасибо: 792
Поблагодарили 342 раз(а) в 205 сообщениях
Отправить сообщение для Alp€rium с помощью ICQ Отправить сообщение для Alp€rium с помощью Skype™
 
По умолчанию Re: Kick игрока с причиной в меню админа Sourcemod

баганый версия кстати, на ист нашел переделанный .sp файл - "kick"
с
Код:
else if (action == MenuAction_Select)
	{
		decl String:info[32];
		new userid, target;
		
		GetMenuItem(menu, param2, info, sizeof(info));
		userid = StringToInt(info);

		if ((target = GetClientOfUserId(userid)) == 0)
		{
			PrintToChat(param1, "[SM] %t", "Player no longer available");
		}
		else if (!CanUserTarget(param1, target))
		{
			PrintToChat(param1, "[SM] %t", "Unable to target");
		}
		else
		{
			g_kickTarget[param1] = target;
			DisplayKickReasonMenu(param1);
		}

	}
на
Код:
else if (action == MenuAction_Select)
	{
		decl String:info[32];

		GetMenuItem(menu, param2, info, sizeof(info));
		
		new target = GetClientOfUserId(StringToInt(info));

		if (target > 0 && IsClientInGame(target))

		{
			g_kickTarget[param1] = target;
			DisplayKickReasonMenu(param1);
		}
		else PrintToChat(param1, "[SM] %t", "Player no longer available");
	}
заменить то ошибок не будет
  Ответить с цитированием
Старый 21.05.2014, 08:53   #3
 Пехотинец
Аватар для soul8320
 
soul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краяхsoul8320 неизвестен в этих краях
Регистрация: 09.04.2010
Сообщений: 95
Популярность: -1654
Сказал(а) спасибо: 30
Поблагодарили 7 раз(а) в 6 сообщениях
 
По умолчанию Re: Kick игрока с причиной в меню админа Sourcemod

Альпериум, норм робит, спс, без ошибок
L 21.05.14 - 3:43:07: SourceMod error session started
L 21.05.14 - 3:43:07: Info (map "de_dust2") (file "errors_20131210.log")
L 21.05.14 - 3:43:07: [SM] Native "CanUserTarget" reported: Client 3 is not connected
L 21.05.14 - 3:43:07:: [SM] Displaying call stack trace for plugin "basecommands.smx":
L 21.05.14 - 3:43:07: [SM] [0] Line 156, H:\SERVER\01-scripting-sm1.5.2\addons\sourcemod\scripting\basecommands/kick.sp::MenuHandler_Reason()
________________
Знаю все хитрости и баги в игре Легенда, пишем в ЛС.
Кому помог, жмём "Спасибо"
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Установка скинов админа на SourceMod Alp€rium Counter-Strike 0 05.04.2014 13:08
[Статья] Custom Admin Menu (Делаем админское меню для SourceMod) InfectedXMP Counter-Strike 6 01.04.2014 10:16
[Услуги] Ищу писателя плагинов SourceMod на заказ. Novichok Товары/услуги в Сети 0 18.01.2014 19:23
Сборка: CSS Dedicated Server v34 SourceMod, eSTEAMATION pickwick Готовые серверы 10 13.06.2012 18:19
[Продам] Продам игрока в Free Style online Игрока эрика den1777 Другие игры 0 09.09.2011 18:53

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 05:03.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net