Поиск Нужен рабочий , простенький плагин для смены ника игроку в игре CS 1.6

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
145
Реакции
8
Здравствуйте , нужен простенький рабочий плагин для смены ника игроку во время игры в CS
Много заходят игроков с никами которые содержат рекламу каких то сайтов , матерных выражений и т.д
Хотелось бы найти плагин который позволяет админу сменить игроку ник на какой то другой .
amx_nick - конечно знаю об это функции , но возможно кто то встречал или же у кого то есть исходник плагина с менюшкой ?
 
Сообщения
552
Реакции
49
Предупреждения
2
Помог
4 раз(а)
NEXT1M,
Код:
#include <amxmodx>
 
new const g_BadNames[][] =
{
   "cs16Player",
   "Exes | Player",
   "[CS-Exes.Ru] Player"
}
new const g_NewName[][] =
{
    
   "Indeec",
   "dyra4ok"
}
 
public plugin_init()
{
   register_plugin("ChangeName", "1.1", "ill"); // original prostotema
}
 
public client_infochanged(id)
{   
   new newname[32];
   get_user_info( id, "name", newname, charsmax( newname ) );
      
   for(new i; i < sizeof(g_BadNames); i++)
   {
      if(containi(g_BadNames[i], newname) != -1)
      {
         set_user_info(id, "name", g_NewName[random(sizeof g_NewName)]);
         return PLUGIN_HANDLED;
      }
   }
 
   return PLUGIN_CONTINUE;
}
20 Окт 2022
Код:
new const g_BadNames[][] =
{
   "cs16Player",
   "Exes | Player",
   "[CS-Exes.Ru] Player"
}
new const g_NewName[][] =
{
    
   "Indeec",
   "dyra4ok"
}
в первое то плохие имена
во второе на что менять те имена
 
Сообщения
154
Реакции
46
Помог
1 раз(а)
мониторингами запрещено менять деф ники, на всякий случай написал.
 
Сообщения
145
Реакции
8
g2rise, я понимаю это . но когда заходит игрок с ником админ пид!с ...
и пока я напишу в чате amx_nick и т.д пройдет время . хотелось бы найти какой то функциональный плагин который можно было бы внедрить в меню админа . и просто при нажатии сменить ник игроку отравилась менюшка с выбором игрока и т .д я где то видел исходник ( такого плагина ) но найти не могу теперь .
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
мониторингами запрещено менять деф ники, на всякий случай написал.
Вместо set_user_info
Код:
set_member(pPlayer, m_szNewName, "новый ник");
set_member(pPlayer, m_bHasChangedName, true);
20 Окт 2022
В RG_CBasePlayer_GetIntoGame в pre.
В RG_CBasePlayer_SetClientUserInfoName блок мессаги, запрещенные подменять через SetHookChainArg.
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
bizon, это правильный вариант, но я все же склонен к бану. Насколько бы не был игрок мерзким, но это остается грубо говоря слоухакингом, хоть и только против таких индивидуумов. Забанил и болт на него
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Albertio, если цитировать ТС, то ставят ник "админ 3.14iдорас", а если так, то заставить его сменить ник на другой таким способом сложно назвать слоухакингом.
Это правильный вариант, который все делает от лица движка. Ни один мониторинг не должен "учуять" условную "подставу".
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
bizon, монитор не поймет - это да, поэтому и юзают этот метод, но это остается слоухакингом) Смысл менять ник им, если это сильное нарушение в виде оскорбления, в бан кинул и не сношаешь свой мозг
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Albertio, почему это слоухакинг? Это имитация смены ника игроком.
Ты ничего не отсылаешь игроку, а даешь понять, что якобы игрок захотел сменить ник.
Честно говоря, не могу понять где ты тут увидел слоухакинг.
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
bizon, ты судишь со стороны кода, да это так и есть, по идее ты не лезешь в его клиент. Но я говорю про картину в целом, ты же меняешь ему ник без его ведома, а это его данные, то есть слоухакинг. Называть это можно, как угодно, но это остается слоухакингом. ИМХО
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Albertio, изменённый ник будет только на сервере. В user_info будет старый ник, как и в настройках клиента.
Проверь.
Поэтому это ни разу не слоухакинг.
21 Окт 2022
Возможно, если задашь vat_netname, то это будет слоухакинг.
21 Окт 2022
Но речи о нем не шло.
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
Извини за мое скудное мышление, перед тем, как написать свой коммент и спорить с тобой, даже не подумал сурс чекнуть, да на стороне клиента ник не меняется, лишь на сервере, тогда да, полностью можно использовать без угрызения совести)))
 
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
Возможно, если задашь vat_netname, то это будет слоухакинг.
Я его юзаю, во всяком случае в клиенте мое имя не менялось.

Так же юзаю set_user_info потому что иначе не получилось заблокировать смену никнейма на сервере, какие то личности все же умудрялись его менять с овер большим кол-вом раз, и В RG_CBasePlayer_SetClientUserInfoName & SetHookChainArg не помог.

С m_szNewName, m_bHasChangedName не игрался, первый раз их вижу
21 Окт 2022
bizon, утверждать не стану, но set_user_info вроде тоже ничего не меняет клиенту, он обновляет строку с инфой об клиенте, но как я понял, только на сервере, то есть что бы был реальный слоухакинг нужно менять путем client_cmd(id, "name 123")
 
Сообщения
49
Реакции
32
А как мониторинг может обнаружить, что игрокам меняется ник, собственно? На сервер заходит бот с довольно объективным ником, проверяет сервер и выходит. Ник ему меняться не будет, так как вряд ли бот будет заходить с ником, оскорбляющим администратора. Следовательно, никаких банов тоже не будет.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Javekson, всё верно. Ни одна из этих функций напрямую на клиент ничего не шлёт. За исключением client_cmd.
Что касается хуков от reapi - у меня все работает с ними безупречно. Честно говоря, представления не имею, как частая смена ника может сбить их работу.
Касательно этих двух пдат. При спавне проверяется состояние m_bHasChangedName, если true, то ник меняется на указанный в m_szNewName.
Клиентский аналог того, когда, будучи мертвым, меняешь ник и ещё в чат выводится, что ник будет изменён в следующем раунде.
21 Окт 2022
UrShade, для ботов в принципе можно сделать исключение и не проверять корректность их ника.
 
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
А как мониторинг может обнаружить, что игрокам меняется ник, собственно?
протекторы проверяют команды которые отправляются в клиент, тот же самый client_cmd
 
Сообщения
145
Реакции
8
Нашел , плагин . Но не компилируется !


Код:
#include <amxmodx>
#include <amxmisc>

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_idPlayer[33]

public plugin_init()
{
    register_plugin("Admin Player Name", "1.5", "Sutar")
    
    register_clcmd("amx_namemenu", "cmdNameMenu")
    register_clcmd("plname", "cmdNameChange")
    
    register_menucmd(register_menuid("Player Name Menu"), 1023, "actionPlayerNameMenu")
}

public cmdNameMenu(id)
{
    if(!(get_user_flags(id) & ADMIN_SLAY))
    {
        client_print(id, print_chat, "* Команда доступна только для Админов!")
        return PLUGIN_HANDLED
    }
    
    displayNameMenu(id, g_menuPosition[id] = 0)
    return PLUGIN_HANDLED
}

public displayNameMenu(id, pos)
{
    if(pos < 0)
        return PLUGIN_HANDLED
    
    get_players(g_menuPlayers[id], g_menuPlayersNum[id])
    
    new menuBody[512]
    new b = 0
    new i
    new name[32]
    new start = pos * 8

    if(start >= g_menuPlayersNum[id])
        start = pos = g_menuPosition[id] = 0

    new len = format(menuBody, 511, "\yМеню смены ника игрока\Rст. %d из %d\w^n^n", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))
    new end = start + 8
    new keys = MENU_KEY_0

    if(end > g_menuPlayersNum[id])
        end = g_menuPlayersNum[id]

    for(new a = start; a < end; a++)
    {
        i = g_menuPlayers[id][a]
        get_user_name(i, name, 31)
        
        if(get_user_flags(i) & ADMIN_IMMUNITY)
            len += format(menuBody[len], 511-len, "\d%d. %s *^n", ++b, name)
        else
        {
            keys |= (1<<b)
            
            if(is_user_admin(i))
                len += format(menuBody[len], 511-len, "%d. %s *^n", ++b, name)
            else
                len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
        }
    }

    if(end != g_menuPlayersNum[id])
    {
        keys |= MENU_KEY_9
        format(menuBody[len], 511-len, "^n9. Дальше...^n0. %s", pos ? "Назад" : "Выход")
    }
    else
        format(menuBody[len], 511-len, "^n0. %s", pos ? "Назад" : "Выход")
    show_menu(id, keys, menuBody, -1, "Player Name Menu")
}

public actionPlayerNameMenu(id, key)
{
    switch(key)
    {
        case 8: displayNameMenu(id, ++g_menuPosition[id])
        case 9: displayNameMenu(id, --g_menuPosition[id])
        default:
        {
            g_idPlayer[id] = g_menuPlayers[id][g_menuPosition[id] * 8 + key]
            client_cmd(id, "messagemode plname")
        }
    }
    return PLUGIN_HANDLED
}

public cmdNameChange(id)
{
    if(!(get_user_flags(id) & ADMIN_SLAY))
    {
        client_print(id, print_chat, "* Команда доступна только для Админов!")
        return PLUGIN_HANDLED
    }
    
    if(!g_idPlayer[id])
    {
        client_print(id, print_chat, "* Функцию необходимы использовать через меню.")
        return PLUGIN_HANDLED
    }
    
    new g_adminname[15], g_plname[32], g_plnewname[32]
    
    get_user_name(id, g_adminname, 31)
    get_user_name(g_idPlayer[id], g_plname, 31)
    read_argv(1, g_plnewname, 31)
    
    if(equal(g_plname, g_plnewname))
    {
        client_print(id, print_chat, "* Вам необходимо указать другой ник.")
        client_cmd(id, "messagemode plname")
        return PLUGIN_HANDLED
    }
    
    client_cmd(g_idPlayer[id], "name ^"%s^"", g_plnewname)
    g_idPlayer[id] = 0
    
    client_print(0, print_chat, "[Young] Администратор %s сменил ник игрока %s на %s", g_adminname, g_plname, g_plnewname)
    return PLUGIN_HANDLED
 
Сообщения
94
Реакции
11
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
NEXT1M, пробуй

Код:
#include <amxmodx>
#include <amxmisc>

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_idPlayer[33]

public plugin_init()
{
    register_plugin("Admin Player Name", "1.5", "Sutar")
    
    register_clcmd("amx_namemenu", "cmdNameMenu")
    register_clcmd("plname", "cmdNameChange")
    
    register_menucmd(register_menuid("Player Name Menu"), 1023, "actionPlayerNameMenu")
}

public cmdNameMenu(id)
{
    if(!(get_user_flags(id) & ADMIN_SLAY))
    {
        client_print(id, print_chat, "* Команда доступна только для Админов!")
        return PLUGIN_HANDLED
    }
    
    displayNameMenu(id, g_menuPosition[id] = 0)
    return PLUGIN_HANDLED
}

public displayNameMenu(id, pos)
{
    if(pos < 0)
        return PLUGIN_HANDLED
    
    get_players(g_menuPlayers[id], g_menuPlayersNum[id])
    
    new menuBody[512]
    new b = 0
    new i
    new name[32]
    new start = pos * 8

    if(start >= g_menuPlayersNum[id])
        start = pos = g_menuPosition[id] = 0

    new len = format(menuBody, 511, "\yМеню смены ника игрока\Rст. %d из %d\w^n^n", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))
    new end = start + 8
    new keys = MENU_KEY_0

    if(end > g_menuPlayersNum[id])
        end = g_menuPlayersNum[id]

    for(new a = start; a < end; a++)
    {
        i = g_menuPlayers[id][a]
        get_user_name(i, name, 31)
        
        if(get_user_flags(i) & ADMIN_IMMUNITY)
            len += format(menuBody[len], 511-len, "\d%d. %s *^n", ++b, name)
        else
        {
            keys |= (1<<b)
            
            if(is_user_admin(i))
                len += format(menuBody[len], 511-len, "%d. %s *^n", ++b, name)
            else
                len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
        }
    }

    if(end != g_menuPlayersNum[id])
    {
        keys |= MENU_KEY_9
        format(menuBody[len], 511-len, "^n9. Дальше...^n0. %s", pos ? "Назад" : "Выход")
    }
    else
        format(menuBody[len], 511-len, "^n0. %s", pos ? "Назад" : "Выход")
    show_menu(id, keys, menuBody, -1, "Player Name Menu")

    return PLUGIN_HANDLED
}

public actionPlayerNameMenu(id, key)
{
    switch(key)
    {
        case 8: displayNameMenu(id, ++g_menuPosition[id])
        case 9: displayNameMenu(id, --g_menuPosition[id])
        default:
        {
            g_idPlayer[id] = g_menuPlayers[id][g_menuPosition[id] * 8 + key]
            client_cmd(id, "messagemode plname")
        }
    }
    return PLUGIN_HANDLED
}

public cmdNameChange(id)
{
    if(!(get_user_flags(id) & ADMIN_SLAY))
    {
        client_print(id, print_chat, "* Команда доступна только для Админов!")
        return PLUGIN_HANDLED
    }
    
    if(!g_idPlayer[id])
    {
        client_print(id, print_chat, "* Функцию необходимы использовать через меню.")
        return PLUGIN_HANDLED
    }
    
    new g_adminname[15], g_plname[32], g_plnewname[32]
    
    get_user_name(id, g_adminname, 31)
    get_user_name(g_idPlayer[id], g_plname, 31)
    read_argv(1, g_plnewname, 31)
    
    if(equal(g_plname, g_plnewname))
    {
        client_print(id, print_chat, "* Вам необходимо указать другой ник.")
        client_cmd(id, "messagemode plname")
        return PLUGIN_HANDLED
    }
    
    client_cmd(g_idPlayer[id], "name ^"%s^"", g_plnewname)
    g_idPlayer[id] = 0
    
    client_print(0, print_chat, "[Young] Администратор %s сменил ник игрока %s на %s", g_adminname, g_plname, g_plnewname)
    return PLUGIN_HANDLED
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу