Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Помогите доработать плагин

, Name Menu
Статус пользователя Sonic2790
сообщение 16.8.2012, 15:19
Сообщение #1


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Здравствуйте. Нашел плагин Name Menu - менюшка, через которую можно сменить Ник игроку. Надо дописать функцию проверки игрока на админство. Т.е. если ИГРОК, которому надо сменить ник АМДИН с флагом b - написать в чат сообщение, что имеет иммунитет.
Уже пробовал по разному, но чет не катит(



sma
Код
#include <amxmodx>
#include <amxmisc>
#include <colorchat>

#pragma semicolon     1
#define VERSION        "1"


new g_iTarget[33];


public plugin_init()
{
    register_plugin("Name Changer Menu", VERSION, "noskill");
    
    register_clcmd("amx_namemenu", "CmdNameMenu", ADMIN_MENU);
    register_clcmd("***change_name", "CmdChangeName");
}


public CmdNameMenu(id, iLvl, iCid)
{
    if(!cmd_access(id, iLvl, iCid, 1))
        return PLUGIN_HANDLED;
        
    new iPlayers[32], iNum, iPlayer,
        iMenu, szName[32], szPlayer[3];
        
    get_players(iPlayers, iNum);
    iMenu = menu_create("Смена ника игроку", "HandleNameMenu");
    
    for(new i = 0; i < iNum; i++)
    {
        iPlayer = iPlayers[i];
        
        get_user_name(iPlayer, szName, charsmax(szName));
        num_to_str(iPlayer, szPlayer, charsmax(szPlayer));
        
        menu_additem(iMenu, szName, szPlayer);
    }
    
    menu_display(id, iMenu);
    return PLUGIN_HANDLED;
}


public HandleNameMenu(id, iMenu, iItem)
{
    if(iItem == MENU_EXIT)
    {
        menu_destroy(iMenu);
        return PLUGIN_HANDLED;
    }

    new szData[6], szName[64];
    new iAccess, iCallback;
    menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback);

    g_iTarget[id] = str_to_num(szData);

    client_cmd(id, "messagemode ***change_name");
    ColorChat(id, RED, "[Сервер] ^x04Введите новый ник!");
    
    return PLUGIN_HANDLED;
}


public CmdChangeName(id)
{
    if(!g_iTarget[id])
        return PLUGIN_HANDLED;
        
    new szArg[32];
    read_args(szArg, charsmax(szArg));
    remove_quotes(szArg);
    
    if(szArg[0])
    {
         new iPlayer = g_iTarget[id],
         szOldName[32];
        
         get_user_name(iPlayer, szOldName, charsmax(szOldName));
         set_user_info(iPlayer, "name", szArg);
         g_iTarget[id] = 0;
        
         ColorChat(0, RED, "[Сервер] ^x01Администратор сменил ник ^x04%s ^x01на ^x04%s!", szOldName, szArg);
    }
    
    return PLUGIN_HANDLED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 16.8.2012, 19:23
Сообщение #2
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Sonic2790,
не совсем понял что нужно делать...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя АльТ
сообщение 16.8.2012, 19:39
Сообщение #3


Стаж: 14 лет

Сообщений: 407
Благодарностей: 102
Полезность: 500

Orty_Hart,
насколько я понял иммунитет админу перед сменой ника.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 16.8.2012, 20:49
Сообщение #4


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Цитата(Orty_Hart @ 16.8.2012, 20:23) *
Sonic2790,
не совсем понял что нужно делать...


Это меню для удобной смены ника игрокам. Т.е. - Выбираем игрока, вписываем новый ник - и игроку меняется ник. А мне надо сделать проверку на флаги:

Выбираем игрока. Если игрок админ - пишем ошибку в чат. А если обычный игрок - меняем ник.

Ну или хотя бы в меню добавить, что бы не возможно выбрать игрока в флагами (любыми).

Сам долго ковырял, но толку 0 =(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Rejiser
сообщение 17.8.2012, 0:47
Сообщение #5


Стаж: 15 лет

Сообщений: 2261
Благодарностей: 1068
Полезность: 870

Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <colorchat>

#pragma semicolon     1
#define VERSION        "1"


new g_iTarget[33];


public plugin_init()
{
    register_plugin("Name Changer Menu", VERSION, "noskill");
    
    register_clcmd("amx_namemenu", "CmdNameMenu", ADMIN_MENU);
    register_clcmd("***change_name", "CmdChangeName");
}


public CmdNameMenu(id, iLvl, iCid)
{
    if(!cmd_access(id, iLvl, iCid, 1))
        return PLUGIN_HANDLED;
        
    new iPlayers[32], iNum, iPlayer,
        iMenu, szName[32], szPlayer[3], menuItem[60];
        
    get_players(iPlayers, iNum);
    iMenu = menu_create("Смена ника игроку", "HandleNameMenu");
    
    for(new i = 0; i < iNum; i++)
    {
        iPlayer = iPlayers[i];
        
        get_user_name(iPlayer, szName, charsmax(szName));
        num_to_str(iPlayer, szPlayer, charsmax(szPlayer));
        
        if(get_user_flags(iPlayer) & ADMIN_IMMUNITY)
        {
            formatex(menuItem, charsmax(menuItem), "\d%s\r*", szName)
        }
        else
        {
            formatex(menuItem, charsmax(menuItem), "\n%s", szName)
        }
        
        menu_additem(iMenu, menuItem, szPlayer);
    }
    
    menu_display(id, iMenu);
    return PLUGIN_HANDLED;
}


public HandleNameMenu(id, iMenu, iItem)
{
    if(iItem == MENU_EXIT)
    {
        menu_destroy(iMenu);
        return PLUGIN_HANDLED;
    }

    new szData[6], szName[64];
    new iAccess, iCallback;
    menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback);

    g_iTarget[id] = str_to_num(szData);

    if(get_user_flags(szData) & ADMIN_IMMUNITY)
    {
        ColorChat(id, RED, "[Сервер] ^x04Игрок имеет иммунитет!");
    }
    else
    {
        client_cmd(id, "messagemode ***change_name");
        ColorChat(id, RED, "[Сервер] ^x04Введите новый ник!");
    }
    
    return PLUGIN_HANDLED;
}


public CmdChangeName(id)
{
    if(!g_iTarget[id])
        return PLUGIN_HANDLED;
        
    new szArg[32];
    read_args(szArg, charsmax(szArg));
    remove_quotes(szArg);
    
    if(szArg[0])
    {
         new iPlayer = g_iTarget[id],
         szOldName[32];
        
         get_user_name(iPlayer, szOldName, charsmax(szOldName));
         set_user_info(iPlayer, "name", szArg);
         g_iTarget[id] = 0;
        
         ColorChat(0, RED, "[Сервер] ^x01Администратор сменил ник ^x04%s ^x01на ^x04%s!", szOldName, szArg);
    }
    
    return PLUGIN_HANDLED;
}


Отредактировал: Rejiser, - 19.8.2012, 3:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 17.8.2012, 12:35
Сообщение #6


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Почему то не компилится:

С начало выдавало это -
Скрытый текст
Код
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// namemenu.sma
// C:\Users\Sonic\Desktop\╩юьяшы ЄюЁ\namemenu.sma(42) : error 001: expected toke
n: ";", but found "}"
// C:\Users\Sonic\Desktop\╩юьяшы ЄюЁ\namemenu.sma(46) : error 001: expected toke
n: ";", but found "}"
// C:\Users\Sonic\Desktop\╩юьяшы ЄюЁ\namemenu.sma(70) : error 035: argument type
mismatch (argument 1)
//
// 3 Errors.
// Could not locate output file C:\Users\Sonic\Desktop\╩юьяшы ЄюЁ\compiled\namem
enu.amx (compile failed).
//
// Compilation Time: 0,11 sec
// ----------------------------------------

Press enter to exit ...


Добавил ";", теперь только ошибка о несоответствии аргумента в 70 строке.
Скрытый текст
Код
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// namemenu.sma
// C:\Users\Sonic\Desktop\╩юьяшы ЄюЁ\namemenu.sma(70) : error 035: argument type
mismatch (argument 1)
//
// 1 Error.
// Could not locate output file C:\Users\Sonic\Desktop\╩юьяшы ЄюЁ\compiled\namem
enu.amx (compile failed).
//
// Compilation Time: 0,11 sec
// ----------------------------------------

Press enter to exit ...


Отредактировал: Sonic2790, - 17.8.2012, 12:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 18.8.2012, 13:55
Сообщение #7


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

UP. Пока еще актуально (
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Rejiser
сообщение 19.8.2012, 3:34
Сообщение #8


Стаж: 15 лет

Сообщений: 2261
Благодарностей: 1068
Полезность: 870

Компилятора нет под рукой =\ попробуй так:

Скрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <colorchat>

#pragma semicolon     1
#define VERSION        "1"


new g_iTarget[33];


public plugin_init()
{
    register_plugin("Name Changer Menu", VERSION, "noskill");
    
    register_clcmd("amx_namemenu", "CmdNameMenu", ADMIN_MENU);
    register_clcmd("***change_name", "CmdChangeName");
}


public CmdNameMenu(id, iLvl, iCid)
{
    if(!cmd_access(id, iLvl, iCid, 1))
        return PLUGIN_HANDLED;
        
    new iPlayers[32], iNum, iPlayer,
        iMenu, szName[32], szPlayer[3], menuItem[60];
        
    get_players(iPlayers, iNum);
    iMenu = menu_create("Смена ника игроку", "HandleNameMenu");
    
    for(new i = 0; i < iNum; i++)
    {
        iPlayer = iPlayers[i];
        
        get_user_name(iPlayer, szName, charsmax(szName));
        num_to_str(iPlayer, szPlayer, charsmax(szPlayer));
        
        if(get_user_flags(iPlayer) & ADMIN_IMMUNITY)
        {
            formatex(menuItem, charsmax(menuItem), "\d%s\r*", szName);
        }
        else
        {
            formatex(menuItem, charsmax(menuItem), "\n%s", szName);
        }
        
        menu_additem(iMenu, menuItem, szPlayer);
    }
    
    menu_display(id, iMenu);
    return PLUGIN_HANDLED;
}


public HandleNameMenu(id, iMenu, iItem)
{
    if(iItem == MENU_EXIT)
    {
        menu_destroy(iMenu);
        return PLUGIN_HANDLED;
    }

    new szData[6], szName[64];
    new iAccess, iCallback;
    menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback);

    new pId = g_iTarget[id];
    pId = str_to_num(szData);

    if(get_user_flags(pId) & ADMIN_IMMUNITY)
    {
        ColorChat(id, RED, "[Сервер] ^x04Игрок имеет иммунитет!");
    }
    else
    {
        client_cmd(id, "messagemode ***change_name");
        ColorChat(id, RED, "[Сервер] ^x04Введите новый ник!");
    }
    return PLUGIN_HANDLED;
}


public CmdChangeName(id)
{
    if(!g_iTarget[id])
        return PLUGIN_HANDLED;
        
    new szArg[32];
    read_args(szArg, charsmax(szArg));
    remove_quotes(szArg);
    
    if(szArg[0])
    {
         new iPlayer = g_iTarget[id],
         szOldName[32];
        
         get_user_name(iPlayer, szOldName, charsmax(szOldName));
         set_user_info(iPlayer, "name", szArg);
         g_iTarget[id] = 0;
        
         ColorChat(0, RED, "[Сервер] ^x01Администратор сменил ник ^x04%s ^x01на ^x04%s!", szOldName, szArg);
    }
    
    return PLUGIN_HANDLED;
}


Отредактировал: Rejiser, - 19.8.2012, 3:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 19.8.2012, 15:03
Сообщение #9


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Rejiser, спасибо. А то я из менюшки сам убрал админов, а вот доп проверку не смог(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 19.8.2012, 16:11
Сообщение #10


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Блин. Не хочет менять ник зараза(((( Все работает норм, но когда вписал новый ник - не меняет(

Rejiser, а можно как то узнать ник игрока, который решил сменить имя игроку? Дописать в строке:
Код
ColorChat(0, RED, "[Сервер] ^x01Администратор ^x04%s ^x01сменил ник ^x04%s ^x01на ^x04%s!", szAdmin, szOldName, szArg);
например.

Отредактировал: Sonic2790, - 19.8.2012, 16:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 22.8.2012, 21:07
Сообщение #11


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

UP
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 22.8.2012, 21:09
Сообщение #12


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Sonic2790,
amx_nick "old name" "new name"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 23.8.2012, 1:10
Сообщение #13


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

Surf, очень хочу менюшку =(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sonic2790
сообщение 26.8.2012, 15:57
Сообщение #14


Стаж: 18 лет

Сообщений: 236
Благодарностей: 38
Полезность: 142

up up
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: