привет всем, помогите мне с одним плагином
мне нужно что бы то меню что он открывает в игре могли открыть только админы и випы с флагом "S" а не все игроки
и если можно сделать команду в консоль (colorchat) а не команду в чат
спасибо большое заранее кто сделает
вот сам исходник или исходник файлом кому как удобнее
Скрытый текст
#pragma semicolon 1
#include
#define MAX_COLOURS 30
new const colourfile[] = "addons/amxmodx/configs/colours.ini";
new g_iMenuPage[33];
new g_szColourName[MAX_COLOURS][16];
new g_ColourSettings[MAX_COLOURS][3];
new g_MaxColours;
public plugin_init()
{
register_plugin("Chat Colour Menu", "1.0", "shadow.hk");
register_clcmd("say /colour", "ColourMenu");
register_clcmd("say colour", "ColourMenu");
register_menucmd(register_menuid("Chat Colour Menu"), 1023, "ColourMenu_handler");
LoadFile();
}
public client_disconnect(id)
{
g_iMenuPage[id] = 0;
}
// Taken from alka's voteban source code
public ColourMenu(id, iPos)
{
static i, iKeys, szMenu[256], iCurrPos;
iCurrPos = 0;
static iStart, iEnd;
iStart = iPos * 7;
if( iStart >= g_MaxColours )
{
iStart = iPos = g_iMenuPage[id] = 0;
}
// Heading
static iLen;
iLen = formatex(szMenu, 255, "\yChat Colour Menu:^n\rby shadow.hk^n^n");
iEnd = iStart + 7;
iKeys = ( 1<<9 );
if( iEnd > g_MaxColours )
{
iEnd = g_MaxColours;
}
// Colour keys
for(i = iStart; i < iEnd; i++)
{
iKeys |= ( 1< iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "\r%d. \w%s^n", iCurrPos, g_szColourName[i]);
}
// Back key
if( !iStart )
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r8. \dBack");
else
{
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r8. \wBack");
iKeys |= ( 1<<7 );
}
// Forward key
if( iEnd == g_MaxColours )
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r9. \dNext");
else
{
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r9. \wNext");
iKeys |= ( 1<<8 );
}
// Exit key
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r0. \wExit");
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]);
client_print(id, print_chat, "[CC] Your chat colour is now %s", g_szColourName[colour]);
}
}
ColourMenu(id, g_iMenuPage[id]);
return PLUGIN_HANDLED;
}
// Load Colour File
LoadFile()
{
// Create a default file, if it doesn't exist
if( !file_exists(colourfile) )
{
write_file(colourfile, "; Colours Configuration file^n; Usage: ^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("Colours: Colour File not found! Loading default colour");
return;
}
new szLine[64], szData[3][4];
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], 15, 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);
}
#include
#define MAX_COLOURS 30
new const colourfile[] = "addons/amxmodx/configs/colours.ini";
new g_iMenuPage[33];
new g_szColourName[MAX_COLOURS][16];
new g_ColourSettings[MAX_COLOURS][3];
new g_MaxColours;
public plugin_init()
{
register_plugin("Chat Colour Menu", "1.0", "shadow.hk");
register_clcmd("say /colour", "ColourMenu");
register_clcmd("say colour", "ColourMenu");
register_menucmd(register_menuid("Chat Colour Menu"), 1023, "ColourMenu_handler");
LoadFile();
}
public client_disconnect(id)
{
g_iMenuPage[id] = 0;
}
// Taken from alka's voteban source code
public ColourMenu(id, iPos)
{
static i, iKeys, szMenu[256], iCurrPos;
iCurrPos = 0;
static iStart, iEnd;
iStart = iPos * 7;
if( iStart >= g_MaxColours )
{
iStart = iPos = g_iMenuPage[id] = 0;
}
// Heading
static iLen;
iLen = formatex(szMenu, 255, "\yChat Colour Menu:^n\rby shadow.hk^n^n");
iEnd = iStart + 7;
iKeys = ( 1<<9 );
if( iEnd > g_MaxColours )
{
iEnd = g_MaxColours;
}
// Colour keys
for(i = iStart; i < iEnd; i++)
{
iKeys |= ( 1< iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "\r%d. \w%s^n", iCurrPos, g_szColourName[i]);
}
// Back key
if( !iStart )
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r8. \dBack");
else
{
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r8. \wBack");
iKeys |= ( 1<<7 );
}
// Forward key
if( iEnd == g_MaxColours )
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r9. \dNext");
else
{
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r9. \wNext");
iKeys |= ( 1<<8 );
}
// Exit key
iLen += formatex(szMenu[iLen], (sizeof(szMenu) - 1) - iLen, "^n\r0. \wExit");
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]);
client_print(id, print_chat, "[CC] Your chat colour is now %s", g_szColourName[colour]);
}
}
ColourMenu(id, g_iMenuPage[id]);
return PLUGIN_HANDLED;
}
// Load Colour File
LoadFile()
{
// Create a default file, if it doesn't exist
if( !file_exists(colourfile) )
{
write_file(colourfile, "; Colours Configuration file^n; Usage: ^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("Colours: Colour File not found! Loading default colour");
return;
}
new szLine[64], szData[3][4];
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], 15, 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);
}
Прикрепленные файлы
- colourmenu.sma 3,78К 7 Количество загрузок:
Сообщение отредактировал ghgl: 16 Август 2016 - 19:39