Skip to content

Instantly share code, notes, and snippets.

@j3pclub
Last active September 12, 2017 13:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save j3pclub/762e7d558b1d74fdfa82c2923105eef2 to your computer and use it in GitHub Desktop.
Save j3pclub/762e7d558b1d74fdfa82c2923105eef2 to your computer and use it in GitHub Desktop.
Простенькое меню, которое изменяет цвет чата у клиента
#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);
}
; .ini файл для плагина colourmenu.amxx
; "название цвета" "r g b - цвет"
"Дефолтный" 255 180 30
"Белый" 255 255 255
"Черный" 0 0 0
"Синий" 0 125 255
"Красный" 245 0 0
"Фиолетовый" 148 0 211
"Зеленый" 25 200 0
"Розовый" 255 182 193
"Коричневый" 140 70 0
"Голубой" 0 255 255
"Темно-зеленый" 0 150 40
"Небесно-голубой" 0 191 255
"Гранатовый" 0 0 190
"Темно-розовый" 255 20 147
"Серый" 155 155 155
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment