Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Информационная доска

Данный раздел предназначен для обсуждения, а также решения технических проблем связанных с серверной частью. Обсуждения касательно игровых клиентов ведутся здесь.

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.

Потрібна допомога з translit.amxx

Статус пользователя zimkonavt
сообщение 10.1.2013, 13:25
Сообщение #1
Стаж: 13 лет

Сообщений: 4
Благодарностей: 1
Полезность: 0

Що потрібно дописати чи переписати в коді скрипту щоб він не переводив в чаті слова які починаються з слешу '/' або певні слова такі як /top15 , /rank ітд і тп....
Дякую!

Ось сам код
Код скрипта
#include <amxmodx>
#include <amxmisc>

#define PLUGIN_NAME "Translit"
#define PLUGIN_VERSION "1.1"
#define PLUGIN_AUTHOR "ZmifF"

#define ADMINCHAT_TRANSLIT

#define MAX_SIMBOLS 128
#define SIZE 10

new g_TranslitSimbol[MAX_SIMBOLS][SIZE]
new g_EngSimbol[MAX_SIMBOLS][SIZE]

#if defined ADMINCHAT_TRANSLIT
#define MAX_CLR 10

new g_msgChannel

new g_Colors[MAX_CLR][] =
{
"COL_WHITE",
"COL_RED",
"COL_GREEN",
"COL_BLUE",
"COL_YELLOW",
"COL_MAGENTA",
"COL_CYAN",
"COL_ORANGE",
"COL_OCEAN",
"COL_MAROON"
}

new g_Values[MAX_CLR][] =
{
{255, 255, 255},
{255, 0, 0},
{0, 255, 0},
{0, 0, 255},
{255, 255, 0},
{255, 0, 255},
{0, 255, 255},
{227, 96, 8},
{45, 89, 116},
{103, 44, 38}
}

new Float:g_Pos[4][] =
{
{0.0, 0.0},
{0.05, 0.55},
{-1.0, 0.2},
{-1.0, 0.7}
}
#endif

public plugin_init ()
{
Translit_Table ()

register_plugin (PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_dictionary ("translit.txt")
#if defined ADMINCHAT_TRANSLIT
register_dictionary("adminchat.txt")
register_dictionary("common.txt")

new lcmdSayChat[128], lcmdSayAdmin[128]
formatex (lcmdSayChat, 127, "%L", LANG_SERVER, "HELP_SAYCHAT")
formatex (lcmdSayAdmin, 127, "%L", LANG_SERVER, "HELP_SAYADMIN")

register_clcmd("say", "cmdSayHud", ADMIN_CHAT, lcmdSayChat)
register_clcmd("say_team", "cmdSayAdmin", ADMIN_ALL, lcmdSayAdmin)

new lcmdSayAll[128], lcmdChat[128], lcmdPsay[128], lcmdTsay[128], lcmdCsay[128]
formatex (lcmdSayAll, 127, "%L", LANG_SERVER, "HELP_SAY")
formatex (lcmdChat, 127, "%L", LANG_SERVER, "HELP_CHAT")
formatex (lcmdPsay, 127, "%L", LANG_SERVER, "HELP_PSAY")
formatex (lcmdTsay, 127, "%L", LANG_SERVER, "HELP_TSAY")
formatex (lcmdCsay, 127, "%L", LANG_SERVER, "HELP_CSAY")

register_concmd ("amx_say", "cmdSayAll", ADMIN_CHAT, lcmdSayAll)
register_concmd ("amx_chat", "cmdChat", ADMIN_CHAT, lcmdChat)
register_concmd ("amx_psay", "cmdPsay", ADMIN_CHAT, lcmdPsay)
register_concmd ("amx_tsay", "cmdTsay", ADMIN_CHAT, lcmdTsay)
register_concmd ("amx_csay", "cmdTsay", ADMIN_CHAT, lcmdCsay)
#endif
register_cvar ("amx_client_translit", "1")

new lTranslitMode[128], lTranslit[128]
formatex (lTranslitMode, 127, "1/0 - %L", LANG_SERVER, "TRANSLIT_MODE")
formatex (lTranslit, 127, "%L", LANG_SERVER, "TRANSLIT")

register_clcmd ("amx_translit", "Translit", ADMIN_ALL, lTranslitMode)
register_clcmd ("say /translit", "Translit", ADMIN_ALL, lTranslitMode)
register_clcmd ("say_team /translit", "Translit", ADMIN_ALL, lTranslitMode)

register_clcmd ("say","cmdTranslit", ADMIN_ALL, lTranslit)
register_clcmd ("say_team","cmdTranslit", ADMIN_ALL, lTranslit)
}

Translit_Table ()
{
new configsDir[64]

get_configsdir (configsDir, 63)

format (configsDir, 63, "%s/translit.ini", configsDir)

if (!file_exists (configsDir))
{
console_print (0, "[AMXX] %L", LANG_SERVER, "NO_FILE", PLUGIN_NAME, configsDir)
return PLUGIN_HANDLED
}

new line, textline[64], len, splitsimbol[2], i

while ((line = read_file (configsDir, line, textline, 63, len)))
{
if (len == 0 || equal (textline, ";", 1))
continue

parse (textline, g_EngSimbol[i], SIZE, splitsimbol, 1, g_TranslitSimbol[i], SIZE)

i++
}

return PLUGIN_CONTINUE
}

public Translit (id)
{
new translit[2]

get_user_info (id, "translit", translit, 1)

if (translit[0])
{
client_cmd (id, "setinfo translit ^"^"")
client_print (id, print_console, "%L", id, "TRANSLIT_OFF")
} else {
client_cmd (id, "setinfo translit 1")
client_print (id, print_console, "%L", id, "TRANSLIT_ON")
}

return PLUGIN_HANDLED
}

public cmdTranslit (id)
{
if (!id || is_user_hltv (id) || is_user_bot (id))
return PLUGIN_CONTINUE

if (!get_cvar_num ("amx_client_translit"))
{
if (!access (id, ADMIN_CHAT))
return PLUGIN_CONTINUE
}

new translit[2]

get_user_info (id, "translit", translit, 1)

if (!translit[0])
return PLUGIN_CONTINUE

new message[192], cmd[10]

read_argv (0, cmd, 9)
read_args (message, 191)
remove_quotes (message)

if (!message[0] || message[0] == '!' || message[0] == '/')
return PLUGIN_CONTINUE

for (new i; i < MAX_SIMBOLS; i++)
{
while (contain (message, g_EngSimbol[i]) != -1)
replace (message, 191, g_EngSimbol[i], g_TranslitSimbol[i])
}

engclient_cmd (id, cmd, message)

return PLUGIN_HANDLED
}

#if defined ADMINCHAT_TRANSLIT
public cmdSayHud (id)
{
if (!access (id, ADMIN_CHAT))
return PLUGIN_CONTINUE

new said[6], i
read_argv (1, said, 5)

while (said[i] == '@')
i++

if (!i || i > 3)
return PLUGIN_CONTINUE

new a, n, s = i
new name[32], authid[32], userid
new Float:verpos = g_Pos[i][1] + float (g_msgChannel) / 35.0

switch (said[i])
{
case 'r': a = 1
case 'g': a = 2
case 'b': a = 3
case 'y': a = 4
case 'm': a = 5
case 'c': a = 6
case 'o': a = 7
}

if (a)
{
n++
s++
}

while (said[s] && isspace (said[s]))
{
n++
s++
}

get_user_authid (id, authid, 31)
get_user_name (id, name, 31)
userid = get_user_userid (id)

new message[192]

read_args (message, 191)
remove_quotes (message)

new translit[2]

get_user_info (id, "translit", translit, 1)

if (translit[0])
{
for (new i; i < MAX_SIMBOLS; i++)
{
while (contain (message, g_EngSimbol[i]) != -1)
replace (message, 191, g_EngSimbol[i], g_TranslitSimbol[i])
}
}

log_amx ("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
log_message ("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])

if (++g_msgChannel > 6 || g_msgChannel < 3)
{
g_msgChannel = 3
}

set_hudmessage (g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

if (get_cvar_num ("amx_show_activity") == 2)
{
show_hudmessage (0, "%s : %s", name, message[i + n])
client_print (0, print_notify, "%s : %s", name, message[i + n])
} else {
show_hudmessage (0, "%s", message[i + n])
client_print (0, print_notify, "%s", message[i + n])
}

return PLUGIN_HANDLED
}

public cmdSayAdmin (id)
{
new said[2]
read_argv(1, said, 1)

if (said[0] != '@')
return PLUGIN_CONTINUE

new message[192]

read_args (message, 191)
remove_quotes (message)

new translit[2]

get_user_info (id, "translit", translit, 1)

if (translit[0])
{
for (new i; i < MAX_SIMBOLS; i++)
{
while (contain (message, g_EngSimbol[i]) != -1)
replace (message, 191, g_EngSimbol[i], g_TranslitSimbol[i])
}
}

new name[32], authid[32], userid
new players[32], inum

get_user_authid (id, authid, 31)
get_user_name (id, name, 31)
userid = get_user_userid (id)

log_amx ("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
log_message ("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])

if (is_user_admin (id))
format(message, 191, "(%L) %s : %s", id, "ADMIN", name, message[1])
else
format(message, 191, "(%L) %s : %s", id, "PLAYER", name, message[1])

get_players (players, inum)

client_print (id, print_chat, "%s", message)

return PLUGIN_HANDLED
}

public cmdChat (id, level, cid)
{
if (!cmd_access (id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], players[32], inum, authid[32], userid

read_args (message, 191)
remove_quotes (message)
get_user_authid (id, authid, 31)
get_user_name (id, name, 31)
userid = get_user_userid (id)
get_players (players, inum)

format (message, 191, " (ADMINS) %s : %s", name, message)

new translit[2]

get_user_info (id, "translit", translit, 1)

if (translit[0])
{
for (new i; i < MAX_SIMBOLS; i++)
{
while (contain (message, g_EngSimbol[i]) != -1)
replace (message, 191, g_EngSimbol[i], g_TranslitSimbol[i])
}
}

log_amx ("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
log_message ("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)

console_print (id, "%s", message)

for (new i; i < inum; ++i)
{
if (access (players[i], ADMIN_CHAT))
client_print (players[i], print_chat, "%s", message)
}

return PLUGIN_HANDLED
}

public cmdSayAll (id, level, cid)
{
if (!cmd_access (id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], authid[32], userid

read_args (message, 191)
remove_quotes (message)
get_user_authid (id, authid, 31)
get_user_name (id, name, 31)
userid = get_user_userid (id)

new translit[2]

get_user_info (id, "translit", translit, 1)

if (translit[0])
{
for (new i; i < MAX_SIMBOLS; i++)
{
while (contain (message, g_EngSimbol[i]) != -1)
replace (message, 191, g_EngSimbol[i], g_TranslitSimbol[i])
}
}

client_print (0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
console_print (id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)

log_amx ("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
log_message ("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)

return PLUGIN_HANDLED
}

public cmdPsay (id, level, cid)
{
if (!cmd_access (id, level, cid, 3))
return PLUGIN_HANDLED

new name[32]
read_argv (1, name, 31)
new priv = cmd_target (id, name, 0)

if (!priv)
return PLUGIN_HANDLED

get_user_name (priv, name, 31);

new length = strlen (name) + 1
new message[192], name2[32], authid[32], authid2[32], userid, userid2

get_user_authid (id, authid, 31)
get_user_name (id, name2, 31)
userid = get_user_userid (id)
read_args (message, 191)

if (message[0] == '"' && message[length] == '"') // HLSW fix
{
message[0] = ' '
message[length] = ' '
length += 2
}

remove_quotes (message[length])
get_user_name (priv, name, 31)

new translit[2]

get_user_info (id, "translit", translit, 1)

if (translit[0])
{
for (new i; i < MAX_SIMBOLS; i++)
{
while (contain (message, g_EngSimbol[i]) != -1)
replace (message, 191, g_EngSimbol[i], g_TranslitSimbol[i])
}
}

if (id && id != priv)
client_print (id, print_chat, " (%s) %s : %s", name, name2, message[length])

client_print (priv, print_chat, " (%s) %s : %s", name, name2, message[length])
console_print (id, " (%s) %s : %s", name, name2, message[length])
get_user_authid (priv, authid2, 31)
userid2 = get_user_userid (priv)

log_amx ("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
log_message ("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])

return PLUGIN_HANDLED
}

public cmdTsay(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid

read_argv(0, cmd, 15)
new bool:tsay = (tolower(cmd[4]) == 't')

read_args(message, 191)
remove_quotes(message)
parse (message, color, 15)

new found, a
new lang[3], langnum = get_langsnum()

for (new i; i < MAX_CLR; ++i)
{
for (new j; j < langnum; j++)
{
get_lang(j, lang)
formatex(color2, 15, "%L", lang, g_Colors[i])

if (equali(color, color2))
{
a = i
found = 1
break
}
}
if (found == 1)
break
}

new translit[2], length

get_user_info (id, "translit", translit, 1)

if (translit[0])
{
for (new i; i < MAX_SIMBOLS; i++)
{
while (contain (message, g_EngSimbol[i]) != -1)
replace (message, 191, g_EngSimbol[i], g_TranslitSimbol[i])
}
length = found ? (strlen(color) + 6) : 0
} else {
length = found ? (strlen(color) + 1) : 0
}

if (++g_msgChannel > 6 || g_msgChannel < 3)
g_msgChannel = 3

new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

if (get_cvar_num("amx_show_activity") == 2)
{
show_hudmessage(0, "%s : %s", name, message[length])
client_print(0, print_notify, "%s : %s", name, message[length])
console_print(id, "%s : %s", name, message[length])
} else {
show_hudmessage(0, "%s", message[length])
client_print(0, print_notify, "%s", message[length])
console_print(id, "%s", message[length])
}

log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

return PLUGIN_HANDLED
}
#endif


Отредактировал: zimkonavt, - 11.1.2013, 11:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fred Perry
сообщение 10.1.2013, 13:49
Сообщение #2


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Спойлер
Спойлер
Спойлер
Спойлер
Спойлер
выложи под спойлер


Гнилой фашистской нечисти
Загоним пулю в лоб,
Отродью человечества
Сколотим крепкий гроб!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zimkonavt
сообщение 11.1.2013, 11:21
Сообщение #3
Стаж: 13 лет

Сообщений: 4
Благодарностей: 1
Полезность: 0

Цитата(Fred Perry @ 10.1.2013, 15:49) *
Спойлер
Спойлер
Спойлер
Спойлер
Спойлер
выложи под спойлер

Все зробив!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя IIe4eHbKa
сообщение 11.1.2013, 11:22
Сообщение #4
Стаж: 14 лет

Сообщений: 480
Благодарностей: 66
Полезность: < 0

Ты имеешь введу , что бы ставить слеш "/" и был транслит ? т.е. /top15 , а не /ещз15 ?


!
Запрет на ответ в темах: навсегда
Аккаунт пользователя заблокирован до: 24.6.2040, 18:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя zimkonavt
сообщение 11.1.2013, 18:31
Сообщение #5
Стаж: 13 лет

Сообщений: 4
Благодарностей: 1
Полезность: 0

Цитата(IIe4eHbKa @ 11.1.2013, 13:22) *
Ты имеешь введу , что бы ставить слеш "/" и был транслит ? т.е. /top15 , а не /ещз15 ?

Просто щоб непереводило слова які починаються з "/".
Тобко коли я всебе в чаті пишу top15 то мені переводить і пише ещз15 , як зробити щоб воно не переводило?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: