Deluks
Верховное DNO|
- Сообщения
- 1,853
- Реакции
- 812
ну нельзя же быть таким ленивым... -_-Подскажите, пожалуйста, как создать префикс в shop и поставить его цену, что то догнать не могу
/addons/sourcemod/configs/shop/chat.txt
ну нельзя же быть таким ленивым... -_-Подскажите, пожалуйста, как создать префикс в shop и поставить его цену, что то догнать не могу
А можно пожалуйста, архив где 125 цветов, а то не переходит по ссылке
"Colors"
{
"Черный" "000000"
"Тускло-серый" "696969"
"Серый" "808080"
"Тёмно-серый" "A9A9A9"
"Серебристый" "C0C0C0"
"Светло-серый" "D3D3D3"
"Дымчатый" "F5F5F5"
"Белый" "FFFFFF"
"Снежный" "FFFAFA"
"Розово-коричневый" "BC8F8F"
"Светло-коралловый" "F08080"
"Каштановый" "CD5C5C"
"Коричневый" "A52A2A"
"Кирпичный" "B22222"
"Густой красно-коричневый" "800000"
"Тёмно-красный" "8B0000"
"Красный" "FF0000"
"Лососевый" "FA8072"
"Томатный" "FF6347"
"Тёмно-лососевый" "E9967A"
"Коралловый" "FF7F50"
"Оранжево-красный" "FF4500"
"Светло-лососевый" "FFA07A"
"Сиена" "A0522D"
"Кожаного седла" "8B4513"
"Шоколадный" "D2691E"
"Персиковый" "FFDAB9"
"Рыжеватый" "F4A460"
"Льняной" "FAF0E6"
"Перу" "CD853F"
"Бисквитный" "FFE4C4"
"Тёмно-оранжевый" "FF8C00"
"Антикварная белизна" "FAEBD7"
"Жёлто-коричневый" "D2B48C"
"Древесный" "DEB887"
"Очищенный миндаль" "FFEBCD"
"Белый навахо" "FFDEAD"
"Мокасиновый" "FFE4B5"
"Пшеничный" "F5DEB3"
"Оранжевый" "FFA500"
"Цветочный-белый" "FFFAF0"
"Золотисто-берёзовый" "DAA520"
"Тёмно-золотой" "B8860B"
"Зерновой-шелк" "FFF8DC"
"Золотой" "FFD700"
"Хаки" "F0E68C"
"Бледно-золотистый" "EEE8AA"
"Темный-хаки" "BDB76B"
"Светло-жёлтый" "FFFFE0"
"Оливковый" "808000"
"Жёлтый" "FFFF00"
"Нежно-оливковый" "6B8E23"
"Жёлто-зелёный" "9ACD32"
"Темный оливково-зелёный" "556B2F"
"Зелено-жёлтый" "ADFF2F"
"Зелёная лужайка" "7CFC00"
"Ядовито-зелёный" "7FFF00"
"Светло-зелёный" "90EE90"
"Бледный зеленовато-жёлтый" "98FB98"
"Зелёный лес" "228B22"
"Лаймово-зелёный" "32CD32"
"Тёмно-зелёный" "006400"
"Зелёный" "008000"
"Лайм" "00FF00"
"Зелёно-морской" "2E8B57"
"Море умеренного зелёного" "3CB371"
"Весенне-зелёный" "00FF7F"
"Умеренный весенний зелёный" "00FA9A"
"Умеренный аквамариновый" "66CDAA"
"Аквамариновый" "7FFFD4"
"Светло-бирюзовый" "40E0D0"
"Светлое зелёное море" "20B2AA"
"Умеренно-бирюзовый" "48D1CC"
"Бледно-синий" "AFEEEE"
"Аспидно-серый" "2F4F4F"
"Сине-зелёный" "008080"
"Тёмный циан" "008B8B"
"Циан" "00FFFF"
"Светлый циан" "E0FFFF"
"Тёмно-бирюзовый" "00CED1"
"Серо-синий" "5F9EA0"
"Пыльно-голубой" "B0E0E6"
"Светло-синий" "ADD8E6"
"Небесно-голубой" "00BFFF"
"Небесная синева" "87CEEB"
"Светло-голубой" "87CEFA"
"Синяя сталь" "4682B4"
"Аспидно-серый" "708090"
"Светлый аспидно-серый" "778899"
"Защитно-синий" "1E90FF"
"Светлый стальной-синий" "B0C4DE"
"Васильковый" "6495ED"
"Королевская синева" "4169E1"
"Призрачно-белый" "F8F8FF"
"Полуночный чёрный" "191970"
"Тёмно-синий" "000080"
"Ультрамариновый" "00008B"
"Умеренно-синий" "0000CD"
"Синий" "0000FF"
"Тёмная сланцевая синева" "483D8B"
"Сланцевая синева" "6A5ACD"
"Умеренная сланцевая синева" "7B68EE"
"Умеренный фиолетовый" "9370DB"
"Сине-фиолетовый" "8A2BE2"
"Индиго" "4B0082"
"Темная Орхидея" "9932CC"
"Темно-фиолетовый" "9400D3"
"Умеренная Орхидея" "BA55D3"
"Чертополоховый" "D8BFD8"
"Светлая слива" "DDA0DD"
"Розово-фиолетовый" "EE82EE"
"Пурпурный" "800080"
"Тёмный маджента" "8B008B"
"Маджента" "FF00FF"
"Орхидеевый" "DA70D6"
"Умеренный фиолетово-красный" "C71585"
"Глубокий розовый" "FF1493"
"Ярко-розовый" "FF69B4"
"Лиловый" "DB7093"
"Малиновый" "DC143C"
"Розовый" "FFC0CB"
"Светло-розовый" "FFB6C1"
}
Поставил их на ксс OB, работает только 2 цвета..Кому нужно файл 125 цветами держите все цвета рабочие. 4 часа делал все цвета и проверял какие работают а какие нет. Удалил где-то около 20-30 цветов которые не работали. Остальные все 125 цветов работают.
Здравствуйте.
Плагин работает. Но вопрос остается открытым, после перезахода на сервер не сохраняется выбор цвета.
Лучше поздно чем никогда.@R1KO, Здравствуйте! С чем может быть связан сброс цвета текста, ника, префикса и самого префикса при перезаходе на сервер или при смене карты?
ПробуйЛучше поздно чем никогда.
//------------------------------------------------------------------------------
// GPL LISENCE (short)
//------------------------------------------------------------------------------
/*
* Copyright (c) 2014 R1KO
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma semicolon 1
#include <sourcemod>
#include <shop>
#include <sdktools_functions>
#include <basecomm>
#include <clientprefs>
#define CATEGORY "Chat"
#define ITEM1 "Name Color"
#define ITEM2 "Prefix"
#define ITEM3 "Text Color"
public Plugin:myinfo =
{
name = "[Shop] Name/Prefix/Text Color (For v34)",
author = "R1KO",
version = "2.2.2"
}
#define NAME_COLOR 0
#define TEXT_COLOR 1
#define PREFIX_COLOR 2
#define PREFIX 3
new Handle:g_hMenuColor,
Handle:g_hMenuPref,
Handle:g_hCookie[4];
new g_iArrayPrice[3],
g_iArraySellPrice[3],
g_iArrayDuration[3],
bool:g_bUsePrefixFile;
new bool:g_bUsed[MAXPLAYERS+1][3],
String:g_sColors[MAXPLAYERS+1][3][15],
String:g_sPrefix[MAXPLAYERS+1][100],
g_iTypeMenu[MAXPLAYERS+1];
new ItemId:id[3];
public OnPluginStart()
{
new Handle:hCvar;
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_name_price", "1000", "Цена цвета ника.")), NamePriceChange);
g_iArrayPrice[NAME_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_name_sellprice", "1000", "Цена продажи цвета ника. (Запретить продажу: -1)")), NameSellPriceChange);
g_iArraySellPrice[NAME_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_name_duration", "86400", "Длительность использования цвета ника.")), NameDurationChange);
g_iArrayDuration[NAME_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_text_price", "1000", "Цена цвета сообщений.")), TextPriceChange);
g_iArrayPrice[TEXT_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_text_sellprice", "1000", "Цена продажи цвета сообщений. (Запретить продажу: -1)")), TextSellPriceChange);
g_iArraySellPrice[TEXT_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_text_duration", "86400", "Длительность использования цвета сообщений.")), TextDurationChange);
g_iArrayDuration[TEXT_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_prefix_price", "1000", "Цена префикса и его цвета.")), PrefixPriceChange);
g_iArrayPrice[PREFIX_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_prefix_sellprice", "1000", "Цена продажи префикса и его цвета. (Запретить продажу: -1)")), PrefixSellPriceChange);
g_iArraySellPrice[PREFIX_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_prefix_duration", "86400", "Длительность использования префикса и его цвета.")), PrefixDurationChange);
g_iArrayDuration[PREFIX_COLOR] = GetConVarInt(hCvar);
HookConVarChange((hCvar = CreateConVar("sm_shop_chat_use_prefix_file", "0", "Разрешить выбрать только префиксы из списка, иначе - сможет указать любой (1 - Вкл., 0 - Выкл)")), UsePrefixFileChange);
g_bUsePrefixFile = GetConVarBool(hCvar);
CloseHandle(hCvar);
AutoExecConfig(true, "shop_chat", "shop");
g_hCookie[NAME_COLOR] = RegClientCookie("Shop Name Color", "Name Color", CookieAccess_Public);
g_hCookie[TEXT_COLOR] = RegClientCookie("Shop Text Color", "Text Color", CookieAccess_Public);
g_hCookie[PREFIX_COLOR] = RegClientCookie("Shop Prefix Color", "Prefix Color", CookieAccess_Public);
g_hCookie[PREFIX] = RegClientCookie("Shop Prefix", "Prefix", CookieAccess_Public);
RegConsoleCmd("sm_color", MyColor_CMD);
RegConsoleCmd("sm_myprefix", MyPref_CMD);
if (Shop_IsStarted()) Shop_Started();
}
public NamePriceChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArrayPrice[NAME_COLOR] = GetConVarInt(hCvar);
if(id[NAME_COLOR] != INVALID_ITEM) Shop_SetItemPrice(id[NAME_COLOR], g_iArrayPrice[NAME_COLOR]);
}
public NameSellPriceChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArraySellPrice[NAME_COLOR] = GetConVarInt(hCvar);
if(id[NAME_COLOR] != INVALID_ITEM) Shop_SetItemSellPrice(id[NAME_COLOR], g_iArraySellPrice[NAME_COLOR]);
}
public NameDurationChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArrayDuration[NAME_COLOR] = GetConVarInt(hCvar);
if(id[NAME_COLOR] != INVALID_ITEM) Shop_SetItemValue(id[NAME_COLOR], g_iArrayDuration[NAME_COLOR]);
}
public TextPriceChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArrayPrice[TEXT_COLOR] = GetConVarInt(hCvar);
if(id[TEXT_COLOR] != INVALID_ITEM) Shop_SetItemPrice(id[TEXT_COLOR], g_iArrayPrice[TEXT_COLOR]);
}
public TextSellPriceChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArraySellPrice[TEXT_COLOR] = GetConVarInt(hCvar);
if(id[TEXT_COLOR] != INVALID_ITEM) Shop_SetItemSellPrice(id[TEXT_COLOR], g_iArraySellPrice[TEXT_COLOR]);
}
public TextDurationChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArrayDuration[TEXT_COLOR] = GetConVarInt(hCvar);
if(id[TEXT_COLOR] != INVALID_ITEM) Shop_SetItemValue(id[TEXT_COLOR], g_iArrayDuration[TEXT_COLOR]);
}
public PrefixPriceChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArrayPrice[PREFIX_COLOR] = GetConVarInt(hCvar);
if(id[PREFIX_COLOR] != INVALID_ITEM) Shop_SetItemPrice(id[PREFIX_COLOR], g_iArrayPrice[PREFIX_COLOR]);
}
public PrefixSellPriceChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArraySellPrice[PREFIX_COLOR] = GetConVarInt(hCvar);
if(id[PREFIX_COLOR] != INVALID_ITEM) Shop_SetItemSellPrice(id[PREFIX_COLOR], g_iArraySellPrice[PREFIX_COLOR]);
}
public PrefixDurationChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_iArrayDuration[PREFIX_COLOR] = GetConVarInt(hCvar);
if(id[PREFIX_COLOR] != INVALID_ITEM) Shop_SetItemValue(id[PREFIX_COLOR], g_iArrayDuration[PREFIX_COLOR]);
}
public UsePrefixFileChange(Handle:hCvar, const String:oldValue[], const String:newValue[])
{
g_bUsePrefixFile = GetConVarBool(hCvar);
CreatePrefixMenu();
}
public OnConfigsExecuted() ParseCFG();
public OnPluginEnd() Shop_UnregisterMe();
public Shop_Started()
{
new CategoryId:category_id = Shop_RegisterCategory(CATEGORY, "Чат", "");
if (Shop_StartItem(category_id, ITEM1))
{
Shop_SetInfo("Цвет ника", "", g_iArrayPrice[NAME_COLOR], g_iArraySellPrice[NAME_COLOR], Item_Togglable, g_iArrayDuration[NAME_COLOR]);
Shop_SetCallbacks(OnNameItemRegistered, OnNameColorUsed);
Shop_EndItem();
}
if (Shop_StartItem(category_id, ITEM3))
{
Shop_SetInfo("Цвет текста", "", g_iArrayPrice[TEXT_COLOR], g_iArraySellPrice[TEXT_COLOR], Item_Togglable, g_iArrayDuration[TEXT_COLOR]);
Shop_SetCallbacks(OnTextItemRegistered, OnTextColorUsed);
Shop_EndItem();
}
if (Shop_StartItem(category_id, ITEM2))
{
Shop_SetInfo("Титул и его цвет", "", g_iArrayPrice[PREFIX_COLOR], g_iArraySellPrice[PREFIX_COLOR], Item_Togglable, g_iArrayDuration[PREFIX_COLOR]);
Shop_SetCallbacks(OnPrefixItemRegistered, OnPrefixUsed);
Shop_EndItem();
}
}
public OnNameItemRegistered(CategoryId:category_id, const String:category[], const String:item[], ItemId:item_id) id[NAME_COLOR] = item_id;
public OnTextItemRegistered(CategoryId:category_id, const String:category[], const String:item[], ItemId:item_id) id[TEXT_COLOR] = item_id;
public OnPrefixItemRegistered(CategoryId:category_id, const String:category[], const String:item[], ItemId:item_id) id[PREFIX_COLOR] = item_id;
public Shop_OnAuthorized(iClient)
{
for(new i = 0; i < 3; i++)
{
if(Shop_IsClientHasItem(iClient, id[i]))
{
g_bUsed[iClient][i] = Shop_IsClientItemToggled(iClient, id[i]);
if(g_bUsed[iClient][i])
{
GetClientCookie(iClient, g_hCookie[i], g_sColors[iClient][i], sizeof(g_sColors[][]));
if(i == PREFIX_COLOR)
{
GetClientCookie(iClient, g_hCookie[PREFIX], g_sPrefix[iClient], sizeof(g_sPrefix[]));
if(g_sPrefix[iClient][0] == '\0')
strcopy(g_sPrefix[iClient], sizeof(g_sPrefix[]), "Префикс");
}
}
else
{
g_sColors[iClient][i][0] = '\0';
}
}
else
{
g_sColors[iClient][i][0] = '\0';
g_bUsed[iClient][i] = false;
}
}
if(!g_bUsed[iClient][PREFIX_COLOR])
g_sPrefix[iClient][0] = '\0';
}
public OnClientPostAdminCheck(iClient)
{
if(!IsFakeClient(iClient))
{
// Загружаем сохраненные значения при подключении
for(new i = 0; i < 3; i++)
{
if(g_hCookie[i] != INVALID_HANDLE)
{
GetClientCookie(iClient, g_hCookie[i], g_sColors[iClient][i], sizeof(g_sColors[][]));
}
}
if(g_hCookie[PREFIX] != INVALID_HANDLE)
{
GetClientCookie(iClient, g_hCookie[PREFIX], g_sPrefix[iClient], sizeof(g_sPrefix[]));
}
}
}
public ShopAction:OnNameColorUsed(iClient, CategoryId:category_id, const String:category[], ItemId:item_id, const String:item[], bool:isOn, bool:elapsed)
{
if (isOn || elapsed)
{
g_bUsed[iClient][NAME_COLOR] = false;
return Shop_UseOff;
}
GetClientCookie(iClient, g_hCookie[NAME_COLOR], g_sColors[iClient][NAME_COLOR], sizeof(g_sColors[][]));
g_bUsed[iClient][NAME_COLOR] = true;
PrintToChat(iClient, "\x04[Shop] \x01Чтобы выбрать цвет ника введите в чат \x04!color");
return Shop_UseOn;
}
public ShopAction:OnTextColorUsed(iClient, CategoryId:category_id, const String:category[], ItemId:item_id, const String:item[], bool:isOn, bool:elapsed)
{
if (isOn || elapsed)
{
g_bUsed[iClient][TEXT_COLOR] = false;
return Shop_UseOff;
}
GetClientCookie(iClient, g_hCookie[TEXT_COLOR], g_sColors[iClient][TEXT_COLOR], sizeof(g_sColors[][]));
g_bUsed[iClient][TEXT_COLOR] = true;
PrintToChat(iClient, "\x04[Shop] \x01Чтобы выбрать цвет текста введите в чат \x04!color");
return Shop_UseOn;
}
public ShopAction:OnPrefixUsed(iClient, CategoryId:category_id, const String:category[], ItemId:item_id, const String:item[], bool:isOn, bool:elapsed)
{
if (isOn || elapsed)
{
g_bUsed[iClient][PREFIX_COLOR] = false;
return Shop_UseOff;
}
GetClientCookie(iClient, g_hCookie[PREFIX_COLOR], g_sColors[iClient][PREFIX_COLOR], sizeof(g_sColors[][]));
GetClientCookie(iClient, g_hCookie[PREFIX], g_sPrefix[iClient], sizeof(g_sPrefix[]));
if(g_sPrefix[iClient][0] == '\0') strcopy(g_sPrefix[iClient], sizeof(g_sPrefix[]), "Префикс");
g_bUsed[iClient][PREFIX_COLOR] = true;
PrintToChat(iClient, "\x04[Shop] \x01Чтобы выбрать префикс и его цвет введите в чат \x04!color");
return Shop_UseOn;
}
ParseCFG()
{
g_hMenuColor = CreateMenu(MenuHandler_Color);
SetMenuExitBackButton(g_hMenuColor, true);
SetMenuTitle(g_hMenuColor, "Выберите цвет:\n \n");
AddMenuItem(g_hMenuColor, "{DEFAULT}", "Желтый");
AddMenuItem(g_hMenuColor, "{GREEN}", "Зеленый");
AddMenuItem(g_hMenuColor, "{LIGHTGREEN}", "Салатовый");
AddMenuItem(g_hMenuColor, "{TEAM}", "Цвет команды");
AddMenuItem(g_hMenuColor, "{RED}", "Красный");
AddMenuItem(g_hMenuColor, "{BLUE}", "Синий");
AddMenuItem(g_hMenuColor, "{GRAY}", "Серый");
CreatePrefixMenu();
}
CreatePrefixMenu()
{
CheckCloseHandle(g_hMenuPref);
g_hMenuPref = CreateMenu(MenuHandler_Pref);
if(g_bUsePrefixFile)
{
SetMenuExitBackButton(g_hMenuPref, true);
SetMenuTitle(g_hMenuPref, "Выберите префикс:\n \n");
decl String:sBuffer[PLATFORM_MAX_PATH];
BuildPath(Path_SM, sBuffer, sizeof(sBuffer), "configs/shop/chat_prefix.cfg");
if(!FileExists(sBuffer)) SetFailState("Не найден файл %s", sBuffer);
new Handle:hFile = OpenFile(sBuffer, "r");
if (hFile != INVALID_HANDLE)
{
while (!IsEndOfFile(hFile) && ReadFileLine(hFile, sBuffer, sizeof(sBuffer)))
{
TrimString(sBuffer);
if (sBuffer[0]) AddMenuItem(g_hMenuPref, sBuffer, sBuffer);
}
} else SetFailState("Не удалось открыть файл %s", sBuffer);
CloseHandle(hFile);
if(GetMenuItemCount(g_hMenuPref) == 0) AddMenuItem(g_hMenuPref, "", "Нет доступных префиксов", ITEMDRAW_DISABLED);
} else
{
SetMenuExitButton(g_hMenuPref, true);
SetMenuTitle(g_hMenuPref, "Для установки префикса\nвведите в консоль:\n \nsm_myprefix \"ваш префикс\"\n \nЛибо в чат:\n \n!myprefix \"ваш префикс\"\n \n");
AddMenuItem(g_hMenuPref, "", "Назад");
}
}
public Action:MyColor_CMD(iClient, args)
{
if(iClient > 0)
{
if(g_bUsed[iClient][NAME_COLOR] || g_bUsed[iClient][TEXT_COLOR] || g_bUsed[iClient][PREFIX_COLOR]) SendChatMenu(iClient);
else PrintToChat(iClient, "\x04[Shop] \x01Купите бонусы в Shop, чтобы открыть это меню!");
}
return Plugin_Handled;
}
SendChatMenu(iClient)
{
new Handle:hChatMenu = CreateMenu(MenuHandler_ChatMenu);
SetMenuTitle(hChatMenu, "Управление чатом\n \n");
SetMenuExitButton(hChatMenu, true);
AddMenuItem(hChatMenu, "", "Цвет ника", (g_bUsed[iClient][NAME_COLOR]) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
AddMenuItem(hChatMenu, "", "Цвет текста", (g_bUsed[iClient][TEXT_COLOR]) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
AddMenuItem(hChatMenu, "", "Цвет префикса", (g_bUsed[iClient][PREFIX_COLOR]) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
AddMenuItem(hChatMenu, "", "Префикс", (g_bUsed[iClient][PREFIX_COLOR]) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
DisplayMenu(hChatMenu, iClient, MENU_TIME_FOREVER);
}
public MenuHandler_ChatMenu(Handle:hMenu, MenuAction:action, iClient, option)
{
if (action == MenuAction_Select)
{
if(option == 3) DisplayMenu(g_hMenuPref, iClient, MENU_TIME_FOREVER);
else
{
g_iTypeMenu[iClient] = option;
DisplayMenu(g_hMenuColor, iClient, MENU_TIME_FOREVER);
}
} else if (action == MenuAction_End) CloseHandle(hMenu);
}
public MenuHandler_Color(Handle:hMenu, MenuAction:action, iClient, option)
{
if (action == MenuAction_Select)
{
GetMenuItem(hMenu, option, g_sColors[iClient][g_iTypeMenu[iClient]], sizeof(g_sColors[][]));
SetClientCookie(iClient, g_hCookie[g_iTypeMenu[iClient]], g_sColors[iClient][g_iTypeMenu[iClient]]);
SendChatMenu(iClient);
} else if (action == MenuAction_Cancel && option == MenuCancel_ExitBack) SendChatMenu(iClient);
}
public MenuHandler_Pref(Handle:hMenu, MenuAction:action, iClient, option)
{
if (action == MenuAction_Select)
{
if(!g_bUsePrefixFile) SendChatMenu(iClient);
else
{
GetMenuItem(hMenu, option, g_sPrefix[iClient], sizeof(g_sPrefix[]));
SetClientCookie(iClient, g_hCookie[PREFIX], g_sPrefix[iClient]);
PrintToChat(iClient, "\x04[Shop] \x01Вы установили себе префикс: \x04%s", g_sPrefix[iClient]);
SendChatMenu(iClient);
}
} else if (action == MenuAction_Cancel && option == MenuCancel_ExitBack) SendChatMenu(iClient);
}
public Action:MyPref_CMD(iClient, args)
{
if(iClient > 0)
{
if(g_bUsed[iClient][PREFIX_COLOR])
{
if(!g_bUsePrefixFile)
{
GetCmdArgString(g_sPrefix[iClient], sizeof(g_sPrefix[]));
if(g_sPrefix[iClient][0] == '\0') strcopy(g_sPrefix[iClient], sizeof(g_sPrefix[]), "Префикс");
SetClientCookie(iClient, g_hCookie[PREFIX], g_sPrefix[iClient]);
PrintToChat(iClient, "\x04[Shop] \x01Вы установили себе префикс: \x04%s", g_sPrefix[iClient]);
} else PrintToChat(iClient, "\x04[Shop] \x01Даная команда недоступна!");
} else PrintToChat(iClient, "\x04[Shop] \x01Для доступа к этой команде купите префикс в \x04Shop\x01!");
}
}
public Action:OnClientSayCommand(iClient, const String:command[], const String:sArgs[])
{
if(iClient > 0 && !IsFakeClient(iClient))
{
if(BaseComm_IsClientGagged(iClient)) return Plugin_Handled;
if(g_bUsed[iClient][NAME_COLOR] || g_bUsed[iClient][TEXT_COLOR] || g_bUsed[iClient][PREFIX_COLOR])
{
if(sArgs[1] == '@' || sArgs[1] == '/') return Plugin_Continue;
decl String:sText[192];
strcopy(sText, sizeof(sText), sArgs);
TrimString(sText);
StripQuotes(sText);
new iTeam = GetClientTeam(iClient);
decl String:sNameColor[80], String:sTextColor[210], String:sPrefix[120];
FormatEx(sNameColor, sizeof(sNameColor), "%s%N", (g_bUsed[iClient][NAME_COLOR]) ? g_sColors[iClient][NAME_COLOR]:"\x03", iClient);
FormatEx(sTextColor, sizeof(sTextColor), "\x01: %s%s", (g_bUsed[iClient][TEXT_COLOR]) ? g_sColors[iClient][TEXT_COLOR]:"", sText);
if(g_bUsed[iClient][PREFIX_COLOR]) FormatEx(sPrefix, sizeof(sPrefix), "%s%s ", g_sColors[iClient][PREFIX_COLOR], g_sPrefix[iClient]);
else sPrefix[0] = '\0';
if(StrEqual(command, "say"))
{
FormatEx(sText, sizeof(sText), "\x01%s%s%s%s", (iTeam < 2) ? "*НАБЛЮДАТЕЛЬ* ":((IsPlayerAlive(iClient)) ? "":"*УБИТ* "), sPrefix, sNameColor, sTextColor);
ReplaceString(sText, sizeof(sText), "{DEFAULT}", "\x01", false);
ReplaceString(sText, sizeof(sText), "{GREEN}", "\x04", false);
new iColor = ReplaceColors(sText, sizeof(sText));
switch(iColor)
{
case -1,0: PrintToChatAll(sText);
case 1,2,3: PrintSayToChatAll(sText, iColor);
case 4: PrintSayAll(iClient, sText);
}
} else if(StrEqual(command, "say_team"))
{
FormatEx(sText, sizeof(sText), "\x01%s %s%s%s%s", (iTeam < 2) ? "(Наблюдатель)":((iTeam == 2) ? "(Террорист)":"(Спецназовец)"), (iTeam < 2) ? "":((IsPlayerAlive(iClient)) ? "":"*УБИТ* "), sPrefix, sNameColor, sTextColor);
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && !IsFakeClient(i) && GetClientTeam(i) == iTeam)
{
new Handle:h = StartMessageOne("SayText2", i);
if (h != INVALID_HANDLE)
{
BfWriteByte(h, iClient);
BfWriteByte(h, true);
BfWriteString(h, sText);
EndMessage();
}
}
}
}
return Plugin_Handled;
}
}
return Plugin_Continue;
}
stock PrintSayAll(iClient, const String:sMsg[])
{
new Handle:h = StartMessageAll("SayText2");
if (h != INVALID_HANDLE)
{
BfWriteByte(h, iClient);
BfWriteByte(h, true);
BfWriteString(h, sMsg);
EndMessage();
}
}
stock PrintSayToChatAll(const String:sMsg[], iColor)
{
new iTarget = FindPlayerByTeam(iColor);
if(iTarget)
{
new Handle:h = StartMessageAll("SayText2");
if (h != INVALID_HANDLE)
{
BfWriteByte(h, iTarget);
BfWriteByte(h, true);
BfWriteString(h, sMsg);
EndMessage();
}
} else PrintMsgToAll(sMsg);
}
stock PrintMsgToAll(const String:sMsg[], any:...)
{
for (new i=1; i <= MaxClients; i++)
{
if(IsClientInGame(i))
{
new Handle:hBf = StartMessageOne("SayText2", i);
if (hBf != INVALID_HANDLE)
{
BfWriteByte(hBf, i);
BfWriteByte(hBf, true);
BfWriteString(hBf, sMsg);
EndMessage();
}
}
}
}
stock ReplaceColors(String:sMsg[], MaxLength)
{
if(ReplaceString(sMsg, MaxLength, "{LIGHTGREEN}", "\x03", false)) return 0;
if(ReplaceString(sMsg, MaxLength, "{GRAY}", "\x03", false)) return 1;
if(ReplaceString(sMsg, MaxLength, "{RED}", "\x03", false)) return 2;
if(ReplaceString(sMsg, MaxLength, "{BLUE}", "\x03", false)) return 3;
if(ReplaceString(sMsg, MaxLength, "{TEAM}", "\x03", false)) return 4;
return -1;
}
stock FindPlayerByTeam(iTeam)
{
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && GetClientTeam(i) == iTeam) return i;
}
return -1;
}
stock CheckCloseHandle(&Handle:handle)
{
if (handle != INVALID_HANDLE)
{
CloseHandle(handle);
handle = INVALID_HANDLE;
}
}