Ошибка Компиляции Chat Colour Menu

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
80
Реакции
24
Ошибка
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// colourmenu.sma
//
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(28) : error 021: symbol already defined: "client_print_color"
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(31) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(33) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(36) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(40) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(57) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(59) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(63) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(68) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(70) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(74) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(76) : warning 218: old style prototypes used with optional semicolumns
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(77) : error 054: unmatched closing brace
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(79) : warning 218: old style prototypes used with optional semicolumns
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(80) : error 054: unmatched closing brace
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(83) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(88) : error 021: symbol already defined: "get_players"
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(89) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(91) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(96) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(98) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(101) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(105) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(106) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(109) : error 021: symbol already defined: "ArrayPushCell"
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(113) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(121) : error 010: invalid function or declaration
// D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\include\colorchat.inc(123) : error 010: invalid function or declaration
//
// Compilation aborted.
// 26 Errors.
// Could not locate output file D:\╤╥╬╦\╩юьяхы ЄюЁ√\1.9.0_scripting\compiled\colourmenu.amx (compile failed).
//
// Compilation Time: 0,22 sec
// ----------------------------------------

Press enter to exit ...
Компилятор
Локальный
Amx Mod X
1.9.0
Исходный код
#include <amxmodx>
#include <colorchat>

#define PLUGIN "Chat Colour Menu"
#define VERSION "1.0.1"
#define AUTHOR "shadow.hk / Reeps"

#define MAX_COLOURS 30

new const colourfile[] = "addons/amxmodx/configs/colours.ini"

new g_iMenuPage[33]

new g_szColourName[MAX_COLOURS][32]
new g_ColourSettings[MAX_COLOURS][3]

new g_MaxColours

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /colour", "ColourMenu")
register_clcmd("say colour", "ColourMenu")
register_menucmd(register_menuid("Смена цвета в чате"), 1023, "ColourMenu_handler")
LoadFile()
}

public client_disconnect(id)
{
g_iMenuPage[id] = 0
}

public ColourMenu(id, iPos)
{
static i, iKeys, szMenu[384], iCurrPos
iCurrPos = 0

static iStart, iEnd
iStart = iPos * 7

if( iStart >= g_MaxColours )
{
iStart = iPos = g_iMenuPage[id] = 0
}

static iLen;
iLen = formatex(szMenu, 255, "\yСмена цвета в чате^n^n")

iEnd = iStart + 7
iKeys = ( 1<<9 )

if( iEnd > g_MaxColours )
{
iEnd = g_MaxColours;
}

for(i = iStart; i < iEnd; i++)
{
iKeys |= ( 1<<iCurrPos++ );
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "\r%d. \w%s^n", iCurrPos, g_szColourName[i])
}

if( !iStart )
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r8. \dНазад")
else
{
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r8. \yНазад")
iKeys |= ( 1<<7 );
}

if( iEnd == g_MaxColours )
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r9. \dДалее")
else
{
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r9. \yДалее")
iKeys |= ( 1<<8 )
}

iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r0. \rВыход")

show_menu(id, iKeys, szMenu, -1, "")
return PLUGIN_HANDLED;
}

public ColourMenu_handler(id, key)
{
switch( key )
{
case 7: --g_iMenuPage[id]
case 8: ++g_iMenuPage[id]
case 9:
{
g_iMenuPage[id] = 0
return PLUGIN_HANDLED
}
default:
{
static colour;
colour = ( g_iMenuPage[id] * 7 + key )

client_cmd(id, "con_color ^"%i %i %i^"", g_ColourSettings[colour][0], g_ColourSettings[colour][1], g_ColourSettings[colour][2])
ColorChat(id, NORMAL, "^01[^04Сервер^01] ^03Вы выбрали ^01%s ^03цвет чата!", g_szColourName[colour]);
}
}

ColourMenu(id, g_iMenuPage[id])
return PLUGIN_HANDLED
}

LoadFile()
{
if( !file_exists(colourfile) )
{
write_file(colourfile, "; Colours Configuration file^n; Usage: <Colourname> <r|g|b>^n^"Default^" 255 180 30")

g_szColourName[0] = "Default"

g_ColourSettings[0][0] = 255
g_ColourSettings[0][1] = 180;
g_ColourSettings[0][2] = 30;

g_MaxColours++;

log_amx("Colour File not found! Loading default colour.");
return;
}

new szLine[64], szData[4][8];

g_MaxColours = 0;

new file = fopen(colourfile, "r");

while( !feof(file) )
{
fgets(file, szLine, 63);
trim(szLine);

if( !szLine[0] || szLine[0] == '^n' || szLine[0] == ';' ) continue;

parse(szLine, g_szColourName[g_MaxColours], 31, szData[0], 3, szData[1], 3, szData[2], 3);

g_ColourSettings[g_MaxColours][0] = str_to_num(szData[0]);
g_ColourSettings[g_MaxColours][1] = str_to_num(szData[1]);
g_ColourSettings[g_MaxColours][2] = str_to_num(szData[2]);

g_MaxColours++;

if( g_MaxColours == MAX_COLOURS )
{
log_amx("Maximum Colours reached at %s (%i) - Increase MAX_COLOURS in the script to allow more", g_szColourName[g_MaxColours-1], g_MaxColours);
break;
}
}

fclose(file);

log_amx("Colours: %i colours were loaded from file", g_MaxColours);
}
Нашёл старенький плагин Chat Colour Menu Хочу его поставить на сервер. Столкнулся с проблемой под Amx Mod X 1.9.0 не получилось скампелировать. Плюс он режет Слова (Отображаются не полным текстом. на скриншоте видно) post-91560-1434227629.jpg

Подскажите как Исправить. Плагин старый Хотелось бы чтобы Знающий человек посмотрел код и возможно там есть другие ошибки.
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
1,335
Реакции
528
Помог
91 раз(а)
sas333, убрать
Код:
#include <colorchat>
в 28 строке
Код:
public client_disconnected(id)
в 102 строке
Код:
ColorChat(id, NORMAL,
заменить на
Код:
client_print_color(id, print_team_default,
 
Сообщения
80
Реакции
24
Может лучше этот код подправить? Не знаю правда чем они отличаются

PHP:
#pragma semicolon 1

// Includes
////////////

#include <amxmodx>
#include <amxmisc>

// Defines
////////////

#define MAX_PLAYERS    32

// Arrays
////////////

new Array:g_aColourName;
new Array:g_aColourSettings;

// Integers
////////////

new g_iColour[MAX_PLAYERS+1][3];
new g_iCustomColour[MAX_PLAYERS+1][3];

new g_iTemp[MAX_PLAYERS+1];
new g_iMenuPage[MAX_PLAYERS+1];

new g_iMaxColours;

//////////////////////////////////////////////////////////////
// Plugin Forwards                            //
//////////////////////////////////////////////////////////////

public plugin_init()
{
    register_plugin("Chat Colour Menu", "1.50", "shadow.hk");
    
    register_dictionary("common.txt");
    register_dictionary("colourmenu.txt");
    
    register_clcmd("say /colours",    "ColourMenu");
    register_clcmd("say colours",    "ColourMenu");
    
    register_clcmd("colour_value",    "cmdColourValue",    -1,    "<value>");
    
    register_menucmd(register_menuid("Chat Colour Menu"),        1023,    "ColourMenu_handler");
    register_menucmd(register_menuid("Custom Colour Menu"),    1023,    "CustomMenu_handler");
}

public plugin_cfg()
{
    g_aColourName = ArrayCreate(16);
    g_aColourSettings = ArrayCreate(3);
    
    new configsdir[32], file[64];
    get_configsdir(configsdir, 31);
    format(file, 63, "%s/colours.ini", configsdir);
    
    LoadFile(file);
}

//////////////////////////////////////////////////////////////
// Client Forwards                            //
//////////////////////////////////////////////////////////////

public client_putinserver(id)
{
    g_iCustomColour[id] = { 0, 0, 0 };
    set_task(0.5, "taskColours", id);
}

//////////////////////////////////////////////////////////////
// Commands                                    //
//////////////////////////////////////////////////////////////

public cmdColourValue(id)
{
    new szArg[4];
    read_argv(1, szArg, 3);
    
    if( !is_str_num(szArg) )
    {
        return PLUGIN_HANDLED;
    }
    
    g_iCustomColour[id][g_iTemp[id]] = clamp(str_to_num(szArg), 0, 255);
    
    CustomMenu(id);
    return PLUGIN_HANDLED;
}

//////////////////////////////////////////////////////////////
// Menus & Menu Handlers                        //
//////////////////////////////////////////////////////////////

// taken from alka's voteban source code
public ColourMenu(id, iPos)
{
    static i, iKeys, szMenu[512], iCurrPos;
    iCurrPos = 0;
    
    static iStart, iEnd;
    iStart = iPos * 6;
    
    static iPages;
    iPages = floatround(float(g_iMaxColours) / 6.0, floatround_ceil);
    
    iEnd = iStart + 6;
    iKeys = ( MENU_KEY_0 | MENU_KEY_7 | MENU_KEY_8 );
    
    if( iEnd > g_iMaxColours )
    {
        iEnd = g_iMaxColours;
    }
    
    // heading
    static iLen;
    iLen = formatex(szMenu, sizeof(szMenu) - 1, "\y%L (\w%i/%i\y):^n^n", id, "MENU_COLOUR", g_iMenuPage[id] + 1, iPages);
    
    // colour keys
    for(i = iStart; i < iEnd; i++)
    {
        iKeys |= ( 1<<iCurrPos++ );
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r%d. \w%a^n", iCurrPos, ArrayGetStringHandle(g_aColourName, i));
    }
    
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r7. \y%L", id, "MENU_CUSTOM");
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r8. \y%L^n", id, "COLOUR_DEFAULT");
    
    // forward key
    if( iEnd == g_iMaxColours )
    {
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r9. \d%L", id, "MORE");
    }
    else
    {
        iKeys |= MENU_KEY_9;
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r9. \w%L", id, "MORE");
    }
    
    // exit key
    if( !g_iMenuPage[id] )
    {
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r0. \w%L", id, "EXIT");
    }
    else
    {
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r0. \w%L", id, "BACK");
    }
    
    show_menu(id, iKeys, szMenu, -1, "Chat Colour Menu");
    return PLUGIN_HANDLED;
}

public ColourMenu_handler(id, key)
{
    switch( key )
    {
        case 6:
        {
            CustomMenu(id);
            return PLUGIN_HANDLED;
        }
        case 7:
        {
            client_cmd(id, "con_color ^"%i %i %i^"", g_iColour[id][0], g_iColour[id][1], g_iColour[id][2]);
            client_print(id, print_chat, "[CC] %L %L", id, "COLOUR_SET", id, "COLOUR_DEFAULT");
        }
        case 8: ++g_iMenuPage[id];
        case 9:
        {
            if( !g_iMenuPage[id] )
            {
                return PLUGIN_HANDLED;
            }
            
            --g_iMenuPage[id];
        }
        default:
        {
            static colour, colours[3];
            colour = ( g_iMenuPage[id] * 6 + key );
            
            ArrayGetArray(g_aColourSettings, colour, colours);
            
            client_cmd(id, "con_color ^"%i %i %i^"", colours[0], colours[1], colours[2]);
            client_print(id, print_chat, "[CC] %L %a", id, "COLOUR_SET", ArrayGetStringHandle(g_aColourName, colour));
        }
    }
    
    ColourMenu(id, g_iMenuPage[id]);
    return PLUGIN_HANDLED;
}

public CustomMenu(id)
{
    new iLen, szMenu[256], iKeys;
    iKeys = ( MENU_KEY_0 | MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_8 | MENU_KEY_9 );
    
    iLen = formatex(szMenu, sizeof(szMenu) - 1, "\y%L:^n^n", id, "MENU_CUSTOM");
    
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r1. \w%L: \y%i^n",    id,    "RED",    g_iCustomColour[id][0]);
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r2. \w%L: \y%i^n",    id,    "GREEN",    g_iCustomColour[id][1]);
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r3. \w%L: \y%i^n^n",    id,    "BLUE",    g_iCustomColour[id][2]);
    
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r8. \y%L^n",    id,    "CUSTOM_SET");
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r9. \w%L^n",    id,    "BACK");
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r0. \w%L",    id,    "EXIT");
    
    show_menu(id, iKeys, szMenu, -1, "Custom Colour Menu");
    return PLUGIN_HANDLED;
}

public CustomMenu_handler(id, key)
{
    switch( key )
    {
        case 0, 1, 2:
        {
            g_iTemp[id] = key;
            
            client_cmd(id, "messagemode colour_value");
            client_print(id, print_chat, "[CC] %L", id, "CUSTOM_VALUE");
        }
        
        case 7:
        {
            CustomMenu(id);
            
            client_cmd(id, "con_color ^"%i %i %i^"", g_iCustomColour[id][0], g_iCustomColour[id][1], g_iCustomColour[id][2]);
            client_print(id, print_chat, "[CC] %L ^"%i %i %i^"", id, "COLOUR_SET", g_iCustomColour[id][0], g_iCustomColour[id][1], g_iCustomColour[id][2]);
        }
        case 8: ColourMenu(id, g_iMenuPage[id]);
        case 9: g_iMenuPage[id] = 0;
    }
    
    return PLUGIN_HANDLED;
}

//////////////////////////////////////////////////////////////
// Tasks                            //
//////////////////////////////////////////////////////////////

public taskColours(id)
{
    query_client_cvar(id, "con_color", "fwdConColour");
}

//////////////////////////////////////////////////////////////
// Miscellaneous Forwards                        //
//////////////////////////////////////////////////////////////

public fwdConColour(id, const cvar[], const value[])
{
    new colour[12];
    copy(colour, 11, value);
    
    if( contain(colour, "+") != -1 )
    {
        replace_all(colour, 11, "+", " ");
    }
    
    new szData[3][4];
    parse(colour, szData[0], 3, szData[1], 3, szData[2], 3);
    
    g_iColour[id][0] = clamp(str_to_num(szData[0]), 0, 255);
    g_iColour[id][1] = clamp(str_to_num(szData[1]), 0, 255);
    g_iColour[id][2] = clamp(str_to_num(szData[2]), 0, 255);
}

//////////////////////////////////////////////////////////////
// File Data                                //
//////////////////////////////////////////////////////////////

// Load Colour File
LoadFile(const file[])
{
    // Create a default file, if it doesn't exist
    if( !file_exists(file) )
    {
        write_file(file, "; Colours Configuration file^n; Usage: <Colourname> <red> <green> <blue>^n^"CS Default^" 255 180 30");
        
        ArrayPushString(g_aColourName, "CS Default");
        ArrayPushArray(g_aColourSettings, { 255, 180, 30 });
        
        g_iMaxColours = 1;
        
        log_amx("%L", LANG_SERVER, "LOG_ERROR");
        return;
    }
    
    new szLine[64], szData[3][4], szColourName[16], colours[3];
    
    new File = fopen(file, "r");
    
    while( !feof(File) )
    {
        fgets(File, szLine, 63);
        trim(szLine);
        
        if( !szLine[0] || szLine[0] == '^n' || szLine[0] == ';' )
        {
            continue;
        }
        
        parse(szLine, szColourName, 15, szData[0], 3, szData[1], 3, szData[2], 3);
        
        colours[0] = clamp(str_to_num(szData[0]), 0, 255);
        colours[1] = clamp(str_to_num(szData[1]), 0, 255);
        colours[2] = clamp(str_to_num(szData[2]), 0, 255);
        
        ArrayPushArray(g_aColourSettings, colours);
        ArrayPushString(g_aColourName, szColourName);
    }
    
    fclose(File);
    
    g_iMaxColours = ArraySize(g_aColourName);
    
    log_amx("%L", LANG_SERVER, "LOG_LOADED", g_iMaxColours);
}
8 Сен 2019
Взято с https://forums.alliedmods.net/showthread.php?p=956608
8 Сен 2019
Предыдущий брал с github.com
 
Последнее редактирование:
Сообщения
80
Реакции
24
Alex1985, Не совсем то что нужно. Сильно большой функционал который у меня в других плагинах есть. Будут конфликты. нужно что то более простое типа как этот что я скинул. Без лишнего всего. Открыл меню выбрал цвет и всё.
 
Сообщения
80
Реакции
24
Решил использовать этот https://forums.alliedmods.net/showthread.php?p=956608 Единственная проблема то что он не полный текст пишет. Помогите исправить. Так понимаю это из за того что символы русские. Есть вообще возможность увеличить лимит на знаки?

Скриншот 08-09-2019 195813.png

Как видно на скриншоте Слова не полные
8 Сен 2019
PHP:
#pragma semicolon 1

// Includes
////////////

#include <amxmodx>
#include <amxmisc>

// Defines
////////////

#define MAX_PLAYERS    32

// Arrays
////////////

new Array:g_aColourName;
new Array:g_aColourSettings;

// Integers
////////////

new g_iColour[MAX_PLAYERS+1][3];
new g_iCustomColour[MAX_PLAYERS+1][3];

new g_iTemp[MAX_PLAYERS+1];
new g_iMenuPage[MAX_PLAYERS+1];

new g_iMaxColours;

//////////////////////////////////////////////////////////////
// Plugin Forwards                            //
//////////////////////////////////////////////////////////////

public plugin_init()
{
    register_plugin("Chat Colour Menu", "1.50", "shadow.hk");
   
    register_dictionary("common.txt");
    register_dictionary("colourmenu.txt");
   
    register_clcmd("say /colours",    "ColourMenu");
    register_clcmd("say colours",    "ColourMenu");
   
    register_clcmd("colour_value",    "cmdColourValue",    -1,    "<value>");
   
    register_menucmd(register_menuid("Chat Colour Menu"),        1023,    "ColourMenu_handler");
    register_menucmd(register_menuid("Custom Colour Menu"),    1023,    "CustomMenu_handler");
}

public plugin_cfg()
{
    g_aColourName = ArrayCreate(16);
    g_aColourSettings = ArrayCreate(3);
   
    new configsdir[32], file[64];
    get_configsdir(configsdir, 31);
    format(file, 63, "%s/colours.ini", configsdir);
   
    LoadFile(file);
}

//////////////////////////////////////////////////////////////
// Client Forwards                            //
//////////////////////////////////////////////////////////////

public client_putinserver(id)
{
    g_iCustomColour[id] = { 0, 0, 0 };
    set_task(0.5, "taskColours", id);
}

//////////////////////////////////////////////////////////////
// Commands                                    //
//////////////////////////////////////////////////////////////

public cmdColourValue(id)
{
    new szArg[4];
    read_argv(1, szArg, 3);
   
    if( !is_str_num(szArg) )
    {
        return PLUGIN_HANDLED;
    }
   
    g_iCustomColour[id][g_iTemp[id]] = clamp(str_to_num(szArg), 0, 255);
   
    CustomMenu(id);
    return PLUGIN_HANDLED;
}

//////////////////////////////////////////////////////////////
// Menus & Menu Handlers                        //
//////////////////////////////////////////////////////////////

// taken from alka's voteban source code
public ColourMenu(id, iPos)
{
    static i, iKeys, szMenu[512], iCurrPos;
    iCurrPos = 0;
   
    static iStart, iEnd;
    iStart = iPos * 6;
   
    static iPages;
    iPages = floatround(float(g_iMaxColours) / 6.0, floatround_ceil);
   
    iEnd = iStart + 6;
    iKeys = ( MENU_KEY_0 | MENU_KEY_7 | MENU_KEY_8 );
   
    if( iEnd > g_iMaxColours )
    {
        iEnd = g_iMaxColours;
    }
   
    // heading
    static iLen;
    iLen = formatex(szMenu, sizeof(szMenu) - 1, "\y%L (\w%i/%i\y):^n^n", id, "MENU_COLOUR", g_iMenuPage[id] + 1, iPages);
   
    // colour keys
    for(i = iStart; i < iEnd; i++)
    {
        iKeys |= ( 1<<iCurrPos++ );
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r%d. \w%a^n", iCurrPos, ArrayGetStringHandle(g_aColourName, i));
    }
   
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r7. \y%L", id, "MENU_CUSTOM");
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r8. \y%L^n", id, "COLOUR_DEFAULT");
   
    // forward key
    if( iEnd == g_iMaxColours )
    {
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r9. \d%L", id, "MORE");
    }
    else
    {
        iKeys |= MENU_KEY_9;
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r9. \w%L", id, "MORE");
    }
   
    // exit key
    if( !g_iMenuPage[id] )
    {
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r0. \w%L", id, "EXIT");
    }
    else
    {
        iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "^n\r0. \w%L", id, "BACK");
    }
   
    show_menu(id, iKeys, szMenu, -1, "Chat Colour Menu");
    return PLUGIN_HANDLED;
}

public ColourMenu_handler(id, key)
{
    switch( key )
    {
        case 6:
        {
            CustomMenu(id);
            return PLUGIN_HANDLED;
        }
        case 7:
        {
            client_cmd(id, "con_color ^"%i %i %i^"", g_iColour[id][0], g_iColour[id][1], g_iColour[id][2]);
            client_print(id, print_chat, "[CC] %L %L", id, "COLOUR_SET", id, "COLOUR_DEFAULT");
        }
        case 8: ++g_iMenuPage[id];
        case 9:
        {
            if( !g_iMenuPage[id] )
            {
                return PLUGIN_HANDLED;
            }
           
            --g_iMenuPage[id];
        }
        default:
        {
            static colour, colours[3];
            colour = ( g_iMenuPage[id] * 6 + key );
           
            ArrayGetArray(g_aColourSettings, colour, colours);
           
            client_cmd(id, "con_color ^"%i %i %i^"", colours[0], colours[1], colours[2]);
            client_print(id, print_chat, "[CC] %L %a", id, "COLOUR_SET", ArrayGetStringHandle(g_aColourName, colour));
        }
    }
   
    ColourMenu(id, g_iMenuPage[id]);
    return PLUGIN_HANDLED;
}

public CustomMenu(id)
{
    new iLen, szMenu[256], iKeys;
    iKeys = ( MENU_KEY_0 | MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_8 | MENU_KEY_9 );
   
    iLen = formatex(szMenu, sizeof(szMenu) - 1, "\y%L:^n^n", id, "MENU_CUSTOM");
   
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r1. \w%L: \y%i^n",    id,    "RED",    g_iCustomColour[id][0]);
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r2. \w%L: \y%i^n",    id,    "GREEN",    g_iCustomColour[id][1]);
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r3. \w%L: \y%i^n^n",    id,    "BLUE",    g_iCustomColour[id][2]);
   
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r8. \y%L^n",    id,    "CUSTOM_SET");
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r9. \w%L^n",    id,    "BACK");
    iLen += formatex(szMenu[iLen], sizeof(szMenu) - 1 - iLen, "\r0. \w%L",    id,    "EXIT");
   
    show_menu(id, iKeys, szMenu, -1, "Custom Colour Menu");
    return PLUGIN_HANDLED;
}

public CustomMenu_handler(id, key)
{
    switch( key )
    {
        case 0, 1, 2:
        {
            g_iTemp[id] = key;
           
            client_cmd(id, "messagemode colour_value");
            client_print(id, print_chat, "[CC] %L", id, "CUSTOM_VALUE");
        }
       
        case 7:
        {
            CustomMenu(id);
           
            client_cmd(id, "con_color ^"%i %i %i^"", g_iCustomColour[id][0], g_iCustomColour[id][1], g_iCustomColour[id][2]);
            client_print(id, print_chat, "[CC] %L ^"%i %i %i^"", id, "COLOUR_SET", g_iCustomColour[id][0], g_iCustomColour[id][1], g_iCustomColour[id][2]);
        }
        case 8: ColourMenu(id, g_iMenuPage[id]);
        case 9: g_iMenuPage[id] = 0;
    }
   
    return PLUGIN_HANDLED;
}

//////////////////////////////////////////////////////////////
// Tasks                            //
//////////////////////////////////////////////////////////////

public taskColours(id)
{
    query_client_cvar(id, "con_color", "fwdConColour");
}

//////////////////////////////////////////////////////////////
// Miscellaneous Forwards                        //
//////////////////////////////////////////////////////////////

public fwdConColour(id, const cvar[], const value[])
{
    new colour[12];
    copy(colour, 11, value);
   
    if( contain(colour, "+") != -1 )
    {
        replace_all(colour, 11, "+", " ");
    }
   
    new szData[3][4];
    parse(colour, szData[0], 3, szData[1], 3, szData[2], 3);
   
    g_iColour[id][0] = clamp(str_to_num(szData[0]), 0, 255);
    g_iColour[id][1] = clamp(str_to_num(szData[1]), 0, 255);
    g_iColour[id][2] = clamp(str_to_num(szData[2]), 0, 255);
}

//////////////////////////////////////////////////////////////
// File Data                                //
//////////////////////////////////////////////////////////////

// Load Colour File
LoadFile(const file[])
{
    // Create a default file, if it doesn't exist
    if( !file_exists(file) )
    {
        write_file(file, "; Colours Configuration file^n; Usage: <Colourname> <red> <green> <blue>^n^"CS Default^" 255 180 30");
       
        ArrayPushString(g_aColourName, "CS Default");
        ArrayPushArray(g_aColourSettings, { 255, 180, 30 });
       
        g_iMaxColours = 1;
       
        log_amx("%L", LANG_SERVER, "LOG_ERROR");
        return;
    }
   
    new szLine[64], szData[3][4], szColourName[16], colours[3];
   
    new File = fopen(file, "r");
   
    while( !feof(File) )
    {
        fgets(File, szLine, 63);
        trim(szLine);
       
        if( !szLine[0] || szLine[0] == '^n' || szLine[0] == ';' )
        {
            continue;
        }
       
        parse(szLine, szColourName, 15, szData[0], 3, szData[1], 3, szData[2], 3);
       
        colours[0] = clamp(str_to_num(szData[0]), 0, 255);
        colours[1] = clamp(str_to_num(szData[1]), 0, 255);
        colours[2] = clamp(str_to_num(szData[2]), 0, 255);
       
        ArrayPushArray(g_aColourSettings, colours);
        ArrayPushString(g_aColourName, szColourName);
    }
   
    fclose(File);
   
    g_iMaxColours = ArraySize(g_aColourName);
   
    log_amx("%L", LANG_SERVER, "LOG_LOADED", g_iMaxColours);
}
8 Сен 2019
Так же на второй странице вообще нет слова под цифрой один

Скриншот 08-09-2019 200136.png
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
sas333, выкидывай плагин этот, нечего в конфиг клиента лезть.
 
Сообщения
80
Реакции
24
выкидывай плагин этот
По подробнее пожалуйста

нечего в конфиг клиента лезть.
Только Заменил название цвета на русские. Знаю что русский символ считается за 2 поэтому и спросил если возможность увеличить.
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
sas333, client_cmd(id, "con_color ^"%i %i %i^"", colours[0], colours[1], colours[2]);
Изменять конфиг игроку без его ведома не годится, да и протекторы не дадут.
 
Сообщения
80
Реакции
24
sas333, client_cmd(id, "con_color ^"%i %i %i^"", colours[0], colours[1], colours[2]);
Изменять конфиг игроку без его ведома не годится, да и протекторы не дадут.
В скриптенге не силён. По описанию плагин меняет только если игрок сам этого захочет через меню
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
sas333, в исходное положение оно не возвращает ничего. Если что-то меняешь клиенту, будь добр возвращать это в исходное положение, в противном случае лучше ничего не менять.
 
Сообщения
80
Реакции
24
d3m37r4, Этот плагин был скачан. Не я его писал. Если на столько всё критично подскажите как сделать чтобы возвращало
 

d3m37r4

111111
Сообщения
1,424
Реакции
1,162
Помог
10 раз(а)
sas333, никак не сделать.
 
Сообщения
3,328
Реакции
1,462
Помог
124 раз(а)
d3m37r4, никак, там в меню есть пункт "Стандартный цвет":dntknw:

P.s. не поддерживаю слоухакинг, но в данном случае это будет являться не совсем им.
 
Сообщения
80
Реакции
24
P.s. не поддерживаю слоухакинг, но в данном случае это будет являться не совсем им.
Если не всё так плохо, может тогда подскажите как исправить проблему с урезанием слов. Так понимаю нужно увеличить количество символов?
 
Статус
В этой теме нельзя размещать новые ответы.

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

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