Цитата(firante @ 29.7.2014, 22:03)

CH0CAPIC,
Это всё не то (
тебя же нужен privatemessage который работает с русским чатом? вот возьми рабочи.
Код:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#define PLUGIN "<span class="searchlite">PrivateMessage</span>"
#define VERSION "1.0"
#define AUTHOR "CrAsH"
new szPlayerPM[33]
new szPlayerPMBlockAll[33]
new szPlayerPMBlock[33][33]
static const g_Sound[] = "pm/sms.wav"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /pm", "MainMenu")
register_clcmd("say_team /pm", "MainMenu")
register_clcmd("pm", "PMessage")
register_dictionary("pm.txt")
}
public plugin_precache()
{
precache_sound( g_Sound )
}
public MainMenu(id)
{
new szTitle[512]
new szItem[512]
formatex(szTitle, charsmax( szTitle ), "%L", id, "PM_MAINMENU_TITLE")
new szMenu = menu_create(szTitle, "MainMenu_handler" )
formatex(szItem, charsmax( szItem ), "%L", id, "PM_MAINMENU_ITEM_1")
menu_additem(szMenu, szItem, "1", 0 )
formatex(szItem, charsmax( szItem ), "%L", id, "PM_MAINMENU_ITEM_2")
menu_additem(szMenu, szItem, "2", 0 )
menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL )
menu_setprop(szMenu, MPROP_NEXTNAME, "Далее")
menu_setprop(szMenu, MPROP_BACKNAME, "Назад")
menu_setprop(szMenu, MPROP_EXITNAME, "Выход")
menu_display(id, szMenu, 0)
return PLUGIN_HANDLED
}
public MainMenu_handler(id, szMenu, szItem)
{
if(szItem == MENU_EXIT)
{
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
new szData[6], szName[64], szAccess, szCallback
menu_item_getinfo(szMenu, szItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)
new szKey = str_to_num( szData )
switch( szKey )
{
case 1:
{
PlayerMenu(id)
}
case 2:
{
BlockMenu(id)
}
}
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
public PlayerMenu(id)
{
new szTitle[512]
new szItem[512]
formatex(szTitle, charsmax( szTitle ), "%L", id, "PM_PLAYERMENU_TITLE")
new szMenu = menu_create(szTitle, "PlayerMenu_handler")
new szPlayers[32]
new szPlayer, szNum
new szName[32], szPlayerNum[10]
get_players(szPlayers, szNum)
for(new i; i < szNum; i++)
{
szPlayer = szPlayers[i]
if(szPlayer == id || is_user_bot(szPlayer) || !is_user_connected(szPlayer) || is_user_hltv(szPlayer))
continue
get_user_name(szPlayer, szName, charsmax( szName ))
num_to_str(szPlayer, szPlayerNum, charsmax( szPlayerNum ))
if(szPlayerPMBlock[szPlayer][id])
{
formatex(szItem, charsmax( szItem ), "%L", id, "PM_PLAYERMENU_BLOCKED", szName)
menu_additem(szMenu, szItem, szPlayerNum, ADMIN_ADMIN)
}else
if(szPlayerPMBlockAll[szPlayer])
{
formatex(szItem, charsmax( szItem ), "%L", id, "PM_PLAYERMENU_BLOCKED", szName)
menu_additem(szMenu, szItem, szPlayerNum, ADMIN_ADMIN)
}else{
menu_additem(szMenu, szName, szPlayerNum, 0)
}
}
menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL )
menu_setprop(szMenu, MPROP_NEXTNAME, "Далее")
menu_setprop(szMenu, MPROP_BACKNAME, "Назад")
menu_setprop(szMenu, MPROP_EXITNAME, "Выход")
menu_display(id, szMenu, 0)
return PLUGIN_HANDLED
}
public PlayerMenu_handler(id, szMenu, szItem)
{
if(szItem == MENU_EXIT)
{
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
new szData[6], szName[64], szAccess, szCallback
menu_item_getinfo(szMenu, szItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)
new szPlayer = str_to_num( szData )
szPlayerPM[id] = szPlayer
client_cmd(id, "messagemode pm")
ChatColor(id, "%L", id, "PM_SEND_INFO")
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
public BlockMenu(id)
{
new szTitle[512]
new szItem[512]
formatex(szTitle, charsmax( szTitle ), "%L", id, "PM_BLOCKMENU_TITLE")
new szMenu = menu_create(szTitle, "BlockMenu_handler")
if(!szPlayerPMBlockAll[id])
{
formatex(szItem, charsmax( szItem ), "%L", id, "PM_BLOCKMENU_ITEM_1")
menu_additem(szMenu, szItem, "1", 0 )
}else{
formatex(szItem, charsmax( szItem ), "%L", id, "PM_BLOCKMENU_ITEM_1_1")
menu_additem(szMenu, szItem, "1", 0 )
}
new szPlayers[32]
new szPlayer, szNum
new szName[32], szPlayerNum[10]
get_players(szPlayers, szNum)
for(new i; i < szNum; i++)
{
szPlayer = szPlayers[i]
if(szPlayer == id || is_user_bot(szPlayer) || !is_user_connected(szPlayer) || is_user_hltv(szPlayer))
continue
get_user_name(szPlayer, szName, charsmax( szName ))
num_to_str(szPlayer + 1, szPlayerNum, charsmax( szPlayerNum ))
if(szPlayerPMBlock[id][szPlayer])
{
formatex(szItem, charsmax( szItem ), "%L", id, "PM_PLAYERMENU_BLOCKED", szName)
menu_additem(szMenu, szItem, szPlayerNum, 0)
}else
if(szPlayerPMBlockAll[id])
{
menu_additem(szMenu, szName, szPlayerNum, ADMIN_ADMIN)
}else{
menu_additem(szMenu, szName, szPlayerNum, 0)
}
}
menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL )
menu_setprop(szMenu, MPROP_NEXTNAME, "Далее")
menu_setprop(szMenu, MPROP_BACKNAME, "Назад")
menu_setprop(szMenu, MPROP_EXITNAME, "Выход")
menu_display(id, szMenu, 0)
return PLUGIN_HANDLED
}
public BlockMenu_handler(id, szMenu, szItem)
{
if(szItem == MENU_EXIT)
{
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
new szData[6], szName[64], szAccess, szCallback
menu_item_getinfo(szMenu, szItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)
new szItemID = str_to_num( szData )
if(szItemID == 1)
{
if(!szPlayerPMBlockAll[id])
{
szPlayerPMBlockAll[id] = true
ChatColor(id, "%L", id, "PM_BLOCK_ALL")
}else{
szPlayerPMBlockAll[id] = false
ChatColor(id, "%L", id, "PM_UNBLOCK_ALL")
}
}else{
new szPlayer = szItemID - 1
new szNameBlock[32]
get_user_name(szPlayer, szNameBlock, charsmax( szNameBlock ))
if(!szPlayerPMBlock[id][szPlayer])
{
szPlayerPMBlock[id][szPlayer] = true
ChatColor(id, "%L", id, "PM_BLOCK_PLAYER", szNameBlock)
}else{
szPlayerPMBlock[id][szPlayer] = false
ChatColor(id, "%L", id, "PM_UNBLOCK_PLAYER", szNameBlock)
}
}
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
public PMessage(id)
{
if(!szPlayerPM[id])
{
ChatColor(id, "%L", id, "PM_NOPLAYER")
return PLUGIN_HANDLED
}
if(!is_user_connected(szPlayerPM[id]))
{
ChatColor(id, "%L", id, "PM_NOPLAYER_CONNECT")
return PLUGIN_HANDLED
}
new szMessage[192]
read_args(szMessage, charsmax( szMessage ))
remove_quotes( szMessage )
while (replace(szMessage, charsmax( szMessage ), "q", "й")) {}
while (replace(szMessage, charsmax( szMessage ), "w", "ц")) {}
while (replace(szMessage, charsmax( szMessage ), "e", "у")) {}
while (replace(szMessage, charsmax( szMessage ), "r", "к")) {}
while (replace(szMessage, charsmax( szMessage ), "t", "е")) {}
while (replace(szMessage, charsmax( szMessage ), "y", "н")) {}
while (replace(szMessage, charsmax( szMessage ), "u", "г")) {}
while (replace(szMessage, charsmax( szMessage ), "i", "ш")) {}
while (replace(szMessage, charsmax( szMessage ), "o", "щ")) {}
while (replace(szMessage, charsmax( szMessage ), "p", "з")) {}
while (replace(szMessage, charsmax( szMessage ), "[", "х")) {}
while (replace(szMessage, charsmax( szMessage ), "]", "ъ")) {}
while (replace(szMessage, charsmax( szMessage ), "a", "ф")) {}
while (replace(szMessage, charsmax( szMessage ), "s", "ы")) {}
while (replace(szMessage, charsmax( szMessage ), "d", "в")) {}
while (replace(szMessage, charsmax( szMessage ), "f", "а")) {}
while (replace(szMessage, charsmax( szMessage ), "g", "п")) {}
while (replace(szMessage, charsmax( szMessage ), "h", "р")) {}
while (replace(szMessage, charsmax( szMessage ), "j", "о")) {}
while (replace(szMessage, charsmax( szMessage ), "k", "л")) {}
while (replace(szMessage, charsmax( szMessage ), "l", "д")) {}
while (replace(szMessage, charsmax( szMessage ), ";", "ж")) {}
while (replace(szMessage, charsmax( szMessage ), "'", "э")) {}
while (replace(szMessage, charsmax( szMessage ), "z", "я")) {}
while (replace(szMessage, charsmax( szMessage ), "x", "ч")) {}
while (replace(szMessage, charsmax( szMessage ), "c", "с")) {}
while (replace(szMessage, charsmax( szMessage ), "v", "м")) {}
while (replace(szMessage, charsmax( szMessage ), "b", "и")) {}
while (replace(szMessage, charsmax( szMessage ), "n", "т")) {}
while (replace(szMessage, charsmax( szMessage ), "m", "ь")) {}
while (replace(szMessage, charsmax( szMessage ), ",", "б")) {}
while (replace(szMessage, charsmax( szMessage ), ".", "ю")) {}
while (replace(szMessage, charsmax( szMessage ), "Q", "Й")) {}
while (replace(szMessage, charsmax( szMessage ), "W", "Ц")) {}
while (replace(szMessage, charsmax( szMessage ), "E", "У")) {}
while (replace(szMessage, charsmax( szMessage ), "R", "К")) {}
while (replace(szMessage, charsmax( szMessage ), "T", "Е")) {}
while (replace(szMessage, charsmax( szMessage ), "Y", "Н")) {}
while (replace(szMessage, charsmax( szMessage ), "U", "Г")) {}
while (replace(szMessage, charsmax( szMessage ), "I", "Ш")) {}
while (replace(szMessage, charsmax( szMessage ), "O", "Щ")) {}
while (replace(szMessage, charsmax( szMessage ), "P", "З")) {}
while (replace(szMessage, charsmax( szMessage ), "{", "Х")) {}
while (replace(szMessage, charsmax( szMessage ), "}", "Ъ")) {}
while (replace(szMessage, charsmax( szMessage ), "A", "Ф")) {}
while (replace(szMessage, charsmax( szMessage ), "S", "Ы")) {}
while (replace(szMessage, charsmax( szMessage ), "D", "В")) {}
while (replace(szMessage, charsmax( szMessage ), "F", "А")) {}
while (replace(szMessage, charsmax( szMessage ), "G", "П")) {}
while (replace(szMessage, charsmax( szMessage ), "H", "Р")) {}
while (replace(szMessage, charsmax( szMessage ), "J", "О")) {}
while (replace(szMessage, charsmax( szMessage ), "K", "Л")) {}
while (replace(szMessage, charsmax( szMessage ), "L", "Д")) {}
while (replace(szMessage, charsmax( szMessage ), ":", "Ж")) {}
while (replace(szMessage, charsmax( szMessage ), "Z", "Я")) {}
while (replace(szMessage, charsmax( szMessage ), "X", "Ч")) {}
while (replace(szMessage, charsmax( szMessage ), "C", "С")) {}
while (replace(szMessage, charsmax( szMessage ), "V", "М")) {}
while (replace(szMessage, charsmax( szMessage ), "B", "И")) {}
while (replace(szMessage, charsmax( szMessage ), "N", "Т")) {}
while (replace(szMessage, charsmax( szMessage ), "M", "Ь")) {}
while (replace(szMessage, charsmax( szMessage ), "<", "Б")) {}
while (replace(szMessage, charsmax( szMessage ), ">", "Ю")) {}
new szNamePlayer[32], szNamePlayerPM[32]
get_user_name(id, szNamePlayer, charsmax( szNamePlayer ))
get_user_name(szPlayerPM[id], szNamePlayerPM, charsmax( szNamePlayerPM ))
ChatColor(id, "%L", id, "PM_SEND", szNamePlayerPM, szMessage)
ChatColor(szPlayerPM[id], "%L", id, "PM_SEND", szNamePlayer, szMessage)
client_cmd(szPlayerPM[id], "spk %s", g_Sound)
szPlayerPM[id] = 0
return PLUGIN_HANDLED
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}