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

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

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

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

> Правила форума

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

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер
2 страниц V   1 2

цветной amxx

, как сделать
Статус пользователя cfgwqa
сообщение 18.12.2013, 15:38
Сообщение #1
Стаж: 13 лет

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

привет.
собрался делать свой сервер, решил начать с настройки amxx. подумал, надо бы сделать цветными стандартные плагины, некоторые мне удалось раскрасить, а некоторые частично .
вот собственно и пример тому плагин adminvote (не все сообщения цветные)

Прикрепленное изображение

...\cstrike\addons\amxmodx\scripting\admidvote.sma
Код:

#include <amxmodx>
#include <amxmisc>


new g_Answer[128]
new g_optionName[4][64]
new g_voteCount[4]
new g_validMaps
new g_yesNoVote
new g_coloredMenus
new g_voteCaller
new g_Execute[256]
new g_execLen

new bool:g_execResult
new Float:g_voteRatio

public plugin_init()
{
register_plugin("Admin Votes", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("adminvote.txt")
register_dictionary("common.txt")
register_dictionary("mapsmenu.txt")
register_menucmd(register_menuid("Change map to "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Choose map: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount")
register_menucmd(register_menuid("Kick "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Ban "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Vote: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount")
register_menucmd(register_menuid("The result: "), MENU_KEY_1|MENU_KEY_2, "actionResult")
register_concmd("amx_votemap", "cmdVoteMap", ADMIN_VOTE, "<map> [map] [map] [map]")
register_concmd("amx_votekick", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>")
register_concmd("amx_voteban", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>")
register_concmd("amx_vote", "cmdVote", ADMIN_VOTE, "<question> <answer#1> <answer#2>")
register_concmd("amx_cancelvote", "cmdCancelVote", ADMIN_VOTE, "- cancels last vote")

g_coloredMenus = colored_menus()
}

public cmdCancelVote(id, level, cid)
{
if (!cmd_access(id, level, cid, 0))
return PLUGIN_HANDLED

if (task_exists(99889988, 1))
{
new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" cancel vote session", name, get_user_userid(id), authid)


new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_CANC_VOTE_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_CANC_VOTE_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

console_print(id, "%L", id, "VOTING_CANC")
ChatColor(0,"%L",LANG_PLAYER,"VOTING_CANC")
remove_task(99889988, 1)
set_cvar_float("amx_last_voting", get_gametime())
}
else
console_print(id, "%L", id, "NO_VOTE_CANC")

return PLUGIN_HANDLED
}

public delayedExec(cmd[])
server_cmd("%s", cmd)

public autoRefuse()
{
log_amx("Vote: %L", "en", "RES_REF")
ChatColor(0, "%L", LANG_PLAYER, "RES_REF")
}

public actionResult(id, key)
{
remove_task(4545454)

switch (key)
{
case 0:
{
set_task(2.0, "delayedExec", 0, g_Execute, g_execLen)
log_amx("Vote: %L", "en", "RES_ACCEPTED")
ChatColor(0, "%L", LANG_PLAYER, "RES_ACCEPTED")
}
case 1: autoRefuse()
}

return PLUGIN_HANDLED
}

public checkVotes()
{
new best = 0

if (!g_yesNoVote)
{
for (new a = 0; a < 4; ++a)
if (g_voteCount[a] > g_voteCount[best])

best = a
}

new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3]
new iRatio = votesNum ? floatround(g_voteRatio * float(votesNum), floatround_ceil) : 1
new iResult = g_voteCount[best]
new players[32], pnum, i

get_players(players, pnum, "c")

if (iResult < iRatio)
{
new lVotingFailed[64]

for (i = 0; i < pnum; i++)
{
format(lVotingFailed, 63, "%L", players[i], "VOTING_FAILED")
if (g_yesNoVote)
ChatColor(players[i], "%L", players[i], "VOTING_RES_1", lVotingFailed, g_voteCount[0], g_voteCount[1], iRatio)
else
ChatColor(players[i], "%L", players[i], "VOTING_RES_2", lVotingFailed, iResult, iRatio)
}

format(lVotingFailed, 63, "%L", "en", "VOTING_FAILED")
log_amx("Vote: %s (got ^"%d^") (needed ^"%d^")", lVotingFailed, iResult, iRatio)

return PLUGIN_CONTINUE
}

g_execLen = format(g_Execute, 255, g_Answer, g_optionName[best]) + 1

if (g_execResult)
{
g_execResult = false

if (is_user_connected(g_voteCaller))
{
new menuBody[512], lTheResult[32], lYes[16], lNo[16]

format(lTheResult, 31, "%L", g_voteCaller, "THE_RESULT")
format(lYes, 15, "%L", g_voteCaller, "YES")
format(lNo, 15, "%L", g_voteCaller, "NO")

new len = format(menuBody, 511, g_coloredMenus ? "\y%s: \w%s^n^n" : "%s: %s^n^n", lTheResult, g_Execute)

len += format(menuBody[len], 511 - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", g_voteCaller, "WANT_CONTINUE")
format(menuBody[len], 511 - len, "^n1. %s^n2. %s", lYes, lNo)
show_menu(g_voteCaller, 0x03, menuBody, 10, "The result: ")
set_task(10.0, "autoRefuse", 4545454)
}
else
set_task(2.0, "delayedExec", 0, g_Execute, g_execLen)
}

new lVotingSuccess[32]

for (i = 0; i < pnum; i++)
{
format(lVotingSuccess, 31, "%L", players[i], "VOTING_SUCCESS")
ChatColor(players[i], "%L", players[i], "VOTING_RES_3", lVotingSuccess, iResult, iRatio, g_Execute)
}

format(lVotingSuccess, 31, "%L", "en", "VOTING_SUCCESS")
log_amx("Vote: %s (got ^"%d^") (needed ^"%d^") (result ^"%s^")", lVotingSuccess, iResult, iRatio, g_Execute)

return PLUGIN_CONTINUE
}

public voteCount(id, key)
{
if (get_cvar_num("amx_vote_answers"))
{
new name[32]
get_user_name(id, name, 31)

if (g_yesNoVote)
ChatColor(0, "%L", LANG_PLAYER, key ? "VOTED_AGAINST" : "VOTED_FOR", name)
else
ChatColor(0, "%L", LANG_PLAYER, "VOTED_FOR_OPT", name, key + 1)
}
++g_voteCount[key]

return PLUGIN_HANDLED
}

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

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new argc = read_argc()
if (argc > 5) argc = 5

g_validMaps = 0
g_optionName[0][0] = 0
g_optionName[1][0] = 0
g_optionName[2][0] = 0
g_optionName[3][0] = 0

for (new i = 1; i < argc; ++i)
{
read_argv(i, g_optionName[g_validMaps], 31)

if (is_map_valid(g_optionName[g_validMaps]))
g_validMaps++
}

if (g_validMaps == 0)
{
new lMaps[16]

format(lMaps, 15, "%L", id, (argc == 2) ? "MAP_IS" : "MAPS_ARE")
console_print(id, "%L", id, "GIVEN_NOT_VALID", lMaps)
return PLUGIN_HANDLED
}

new menu_msg[256], len = 0
new keys = 0

if (g_validMaps > 1)
{
keys = MENU_KEY_0
len = format(menu_msg, 255, g_coloredMenus ? "\y%L: \w^n^n" : "%L: ^n^n", LANG_SERVER, "CHOOSE_MAP")
new temp[128]

for (new a = 0; a < g_validMaps; ++a)
{
format(temp, 127, "%d. %s^n", a+1, g_optionName[a])
len += copy(menu_msg[len], 255-len, temp)
keys |= (1<<a)
}

format(menu_msg[len], 255-len, "^n0. %L", LANG_SERVER, "NONE")
g_yesNoVote = 0
} else {
new lChangeMap[32], lYes[16], lNo[16]

format(lChangeMap, 31, "%L", LANG_SERVER, "CHANGE_MAP_TO")
format(lYes, 15, "%L", LANG_SERVER, "YES")
format(lNo, 15, "%L", LANG_SERVER, "NO")
format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lChangeMap, g_optionName[0], lYes, lNo)
keys = MENU_KEY_1|MENU_KEY_2
g_yesNoVote = 1
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)

if (argc == 2)
log_amx("Vote: ^"%s<%d><%s><>^" vote map (map ^"%s^")", name, get_user_userid(id), authid, g_optionName[0])
else
log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", name, get_user_userid(id), authid, g_optionName[0], g_optionName[1], g_optionName[2], g_optionName[3])

new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_VOTE_MAP_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_MAP_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

g_execResult = true
new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float("amx_votemap_ratio")
g_Answer = "changelevel %s"
show_menu(0, keys, menu_msg, floatround(vote_time), (g_validMaps > 1) ? "Choose map: " : "Change map to ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 0}

return PLUGIN_HANDLED
}

public cmdVote(id, level, cid)
{
if (!cmd_access(id, level, cid, 4))
return PLUGIN_HANDLED

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new quest[48]
read_argv(1, quest, 47)

if (contain(quest, "sv_password") != -1 || contain(quest, "rcon_password") != -1)
{
console_print(id, "%L", id, "VOTING_FORBIDDEN")
return PLUGIN_HANDLED
}

new count=read_argc();

for (new i=0;i<4 && (i+2)<count;i++)
{
read_argv(i+2, g_optionName[i], sizeof(g_optionName[])-1);
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" vote custom (question ^"%s^") (option#1 ^"%s^") (option#2 ^"%s^")", name, get_user_userid(id), authid, quest, g_optionName[0], g_optionName[1])

new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_VOTE_CUS_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_CUS_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

new menu_msg[512], lVote[16]

format(lVote, 15, "%L", LANG_SERVER, "VOTE")

count-=2;
if (count>4)
{
count=4;
}
// count now shows how many options were listed
new keys=0;
for (new i=0;i<count;i++)
{
keys |= (1<<i);
}

new len=formatex(menu_msg, sizeof(menu_msg)-1, g_coloredMenus ? "\y%s: %s\w^n^n" : "%s: %s^n^n", lVote, quest);

for (new i=0;i<count;i++)
{
len+=formatex(menu_msg[len], sizeof(menu_msg) - 1 - len ,"%d. %s^n",i+1,g_optionName[i]);
}
g_execResult = false

new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float("amx_vote_ratio")
replace_all(quest,sizeof(quest)-1,"%","");
format(g_Answer, 127, "%s - %%s", quest)
show_menu(0, keys, menu_msg, floatround(vote_time), "Vote: ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 0}
g_yesNoVote = 0

return PLUGIN_HANDLED
}

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

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new cmd[32]

read_argv(0, cmd, 31)

new voteban = equal(cmd, "amx_voteban")
new arg[32]
read_argv(1, arg, 31)

new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)

if (!player)
return PLUGIN_HANDLED

if (voteban && is_user_bot(player))
{
new imname[32]

get_user_name(player, imname, 31)
console_print(id, "%L", id, "ACTION_PERFORMED", imname)
return PLUGIN_HANDLED
}

new keys = MENU_KEY_1|MENU_KEY_2
new menu_msg[256], lYes[16], lNo[16], lKickBan[16]

format(lYes, 15, "%L", LANG_SERVER, "YES")
format(lNo, 15, "%L", LANG_SERVER, "NO")
format(lKickBan, 15, "%L", LANG_SERVER, voteban ? "BAN" : "KICK")
ucfirst(lKickBan)
get_user_name(player, arg, 31)
format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lKickBan, arg, lYes, lNo)
g_yesNoVote = 1

new bool:ipban=false;

if (voteban)
{
get_user_authid(player, g_optionName[0], sizeof(g_optionName[])-1);

// Do the same check that's in plmenu to determine if this should be an IP ban instead
if (equal("4294967295", g_optionName[0])
|| equal("HLTV", g_optionName[0])
|| equal("STEAM_ID_LAN", g_optionName[0])
|| equali("VALVE_ID_LAN", g_optionName[0]))
{
get_user_ip(player, g_optionName[0], sizeof(g_optionName[])-1, 1);

ipban=true;
}

}
else
{
num_to_str(get_user_userid(player), g_optionName[0], 31)
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" vote %s (target ^"%s^")", name, get_user_userid(id), authid, voteban ? "ban" : "kick", arg)

new maxpl=get_maxplayers();
new msg[256];
new right[256];
new dummy[1];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
formatex(lKickBan, charsmax(lKickBan), "%L", i, voteban ? "BAN" : "KICK");

// HACK: ADMIN_VOTE_FOR{1,2} keys are really weird. Tokenize and ignore the text before the :
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_FOR_1", i);
strtok(msg, dummy, 0, right, charsmax(right), ':');
trim(right);
show_activity_id(i, id, name, right, lKickBan, arg);
}
}

g_execResult = true

new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float(voteban ? "amx_voteban_ratio" : "amx_votekick_ratio")

if (voteban)
{
if (ipban==true)
{
g_Answer = "addip 30.0 %s";
}
else
{
g_Answer = "banid 30.0 %s kick";

}
}
else
{
g_Answer = "kick #%s";
}
show_menu(0, keys, menu_msg, floatround(vote_time), voteban ? "Ban " : "Kick ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 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();
}
}
}
}


...cstrike\addons\amxmodx\data\lang\adminvote.txt
adminvote.txt
Код
[ru]
ADMIN_CANC_VOTE_1 = !t[!g Сервер !t] !g%s!t: !yотменил голосование
ADMIN_CANC_VOTE_2 = !t[!g Сервер !t] !g%s %s!t: !yотменил голосование
VOTING_CANC = !t[!g Сервер !t] !yГолосование отменено
NO_VOTE_CANC = Сейчас нет активного голосования, которое можно было бы отменить.
RES_REF = !t[!g Сервер !t] !yРезультат не принят!
RES_ACCEPTED = !t[!g Сервер !t] !yРезультат принят.
VOTING_FAILED = !yНе состоялось!
VOTING_RES_1 = !t[!g Сервер !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!y"!gПРОТИВ!y" "!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)
VOTING_RES_2 = !t[!g Сервер !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)
VOTING_SUCCESS = !yИтог
VOTING_RES_3 = !t[!g Сервер !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)!y.!t: !g%s
THE_RESULT = Результат
WANT_CONTINUE = Вы хотите продолжить?
VOTED_FOR = !t[!g Сервер !t] !g%s !yпроголосовал !t"!gЗА!t"
VOTED_AGAINST = !t[!g Сервер !t] !g%s !yпроголосовал "!gПРОТИВ!y"
VOTED_FOR_OPT = !t[!g Сервер !t] !g%s !yпроголосовал за !g#%d
ALREADY_VOTING = Голосование уже начато!
VOTING_NOT_ALLOW = В данный момент голосование запрещено!
GIVEN_NOT_VALID = %s не верно
MAP_IS = карта
MAPS_ARE = карты
CHOOSE_MAP = Выбирите карту
ADMIN_VOTE_MAP_1 = !t[!g Сервер !t] !g%s!t: !yсоздал голосование за карту
ADMIN_VOTE_MAP_2 = !t[!g Сервер !t] !g%s %s!t: !yсоздал голосование за карту
VOTING_STARTED = Голосование началось!
VOTING_FORBIDDEN = Такое голосование недопустимо!
ADMIN_VOTE_CUS_1 = !t[!g Сервер !t] !g%s !yсоздал голосование
ADMIN_VOTE_CUS_2 = !t[!g Сервер !t] !g%s %s !yсоздал голосование
VOTE = \rГолос\w
ACTION_PERFORMED = Невозможно выполнить эту команду для бота "%s"
ADMIN_VOTE_FOR_1 = !t[!g Сервер !t] !g%s !yсоздал голосование!t: "!g%s %s!t"
ADMIN_VOTE_FOR_2 = !t[!g Сервер !t] !g%s %s !yсоздал голосование !t"!g%s %s!t"

[en]
ADMIN_CANC_VOTE_1 = %s: cancel vote
ADMIN_CANC_VOTE_2 = %s %s: cancel vote
VOTING_CANC = Voting canceled
NO_VOTE_CANC = There is no voting to cancel or the vote session can't be canceled with that command
RES_REF = Result refused
RES_ACCEPTED = Result accepted
VOTING_FAILED = Voting failed
VOTING_RES_1 = %s (yes "%d") (no "%d") (needed "%d")
VOTING_RES_2 = %s (got "%d") (needed "%d")
VOTING_SUCCESS = Voting successful
VOTING_RES_3 = %s (got "%d") (needed "%d"). The result: %s
THE_RESULT = The result
WANT_CONTINUE = Do you want to continue?
VOTED_FOR = %s voted for
VOTED_AGAINST = %s voted against
VOTED_FOR_OPT = %s voted for option #%d
ALREADY_VOTING = There is already one voting...
VOTING_NOT_ALLOW = Voting not allowed at this time
GIVEN_NOT_VALID = Given %s not valid
MAP_IS = map is
MAPS_ARE = maps are
CHOOSE_MAP = Choose map
ADMIN_VOTE_MAP_1 = %s: vote map(s)
ADMIN_VOTE_MAP_2 = %s %s: vote map(s)
VOTING_STARTED = Voting has started...
VOTING_FORBIDDEN = Voting for that has been forbidden
ADMIN_VOTE_CUS_1 = %s: vote custom
ADMIN_VOTE_CUS_2 = %s %s: vote custom
VOTE = Vote
ACTION_PERFORMED = That action can't be performed on bot "%s"
ADMIN_VOTE_FOR_1 = %s: vote %s for %s
ADMIN_VOTE_FOR_2 = %s %s: vote %s for %s


хелп

Отредактировал: cfgwqa, - 6.2.2014, 15:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя cfgwqa
сообщение 18.12.2013, 15:55
Сообщение #2
Стаж: 13 лет

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

Цитата(cfgwqa @ 18.12.2013, 15:38) *
Ребята, есть amxx 1.8.2. стандартный набор плагинов, как сделать цветные сообщения в чат.да в интернете есть цветной амхх, но я хотел бы сам научиться.

некоторые плагины сделал цветными. например adminvote не все сообщения стали цветными(в сма все поменял)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 18.12.2013, 16:05
Сообщение #3


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Цитата(cfgwqa @ 18.12.2013, 20:55) *
некоторые плагины сделал цветными. например adminvote не все сообщения стали цветными(в сма все поменял)

Исходник покажите, поглядим, что там исправили.


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 18.12.2013, 16:10
Сообщение #4
Стаж: 13 лет

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

Цитата(winzh1 @ 18.12.2013, 16:05) *
Исходник покажите, поглядим, что там исправили.

Код:
#include <amxmodx>
#include <amxmisc>


new g_Answer[128]
new g_optionName[4][64]
new g_voteCount[4]
new g_validMaps
new g_yesNoVote
new g_coloredMenus
new g_voteCaller
new g_Execute[256]
new g_execLen

new bool:g_execResult
new Float:g_voteRatio

public plugin_init()
{
register_plugin("Admin Votes", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("adminvote.txt")
register_dictionary("common.txt")
register_dictionary("mapsmenu.txt")
register_menucmd(register_menuid("Change map to "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Choose map: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount")
register_menucmd(register_menuid("Kick "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Ban "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Vote: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount")
register_menucmd(register_menuid("The result: "), MENU_KEY_1|MENU_KEY_2, "actionResult")
register_concmd("amx_votemap", "cmdVoteMap", ADMIN_VOTE, "<map> [map] [map] [map]")
register_concmd("amx_votekick", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>")
register_concmd("amx_voteban", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>")
register_concmd("amx_vote", "cmdVote", ADMIN_VOTE, "<question> <answer#1> <answer#2>")
register_concmd("amx_cancelvote", "cmdCancelVote", ADMIN_VOTE, "- cancels last vote")

g_coloredMenus = colored_menus()
}

public cmdCancelVote(id, level, cid)
{
if (!cmd_access(id, level, cid, 0))
return PLUGIN_HANDLED

if (task_exists(99889988, 1))
{
new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" cancel vote session", name, get_user_userid(id), authid)


new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_CANC_VOTE_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_CANC_VOTE_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

console_print(id, "%L", id, "VOTING_CANC")
ChatColor(0,"%L",LANG_PLAYER,"VOTING_CANC")
remove_task(99889988, 1)
set_cvar_float("amx_last_voting", get_gametime())
}
else
console_print(id, "%L", id, "NO_VOTE_CANC")

return PLUGIN_HANDLED
}

public delayedExec(cmd[])
server_cmd("%s", cmd)

public autoRefuse()
{
log_amx("Vote: %L", "en", "RES_REF")
ChatColor(0, "%L", LANG_PLAYER, "RES_REF")
}

public actionResult(id, key)
{
remove_task(4545454)

switch (key)
{
case 0:
{
set_task(2.0, "delayedExec", 0, g_Execute, g_execLen)
log_amx("Vote: %L", "en", "RES_ACCEPTED")
ChatColor(0, "%L", LANG_PLAYER, "RES_ACCEPTED")
}
case 1: autoRefuse()
}

return PLUGIN_HANDLED
}

public checkVotes()
{
new best = 0

if (!g_yesNoVote)
{
for (new a = 0; a < 4; ++a)
if (g_voteCount[a] > g_voteCount[best])

best = a
}

new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3]
new iRatio = votesNum ? floatround(g_voteRatio * float(votesNum), floatround_ceil) : 1
new iResult = g_voteCount[best]
new players[32], pnum, i

get_players(players, pnum, "c")

if (iResult < iRatio)
{
new lVotingFailed[64]

for (i = 0; i < pnum; i++)
{
format(lVotingFailed, 63, "%L", players[i], "VOTING_FAILED")
if (g_yesNoVote)
ChatColor(players[i], "%L", players[i], "VOTING_RES_1", lVotingFailed, g_voteCount[0], g_voteCount[1], iRatio)
else
ChatColor(players[i], "%L", players[i], "VOTING_RES_2", lVotingFailed, iResult, iRatio)
}

format(lVotingFailed, 63, "%L", "en", "VOTING_FAILED")
log_amx("Vote: %s (got ^"%d^") (needed ^"%d^")", lVotingFailed, iResult, iRatio)

return PLUGIN_CONTINUE
}

g_execLen = format(g_Execute, 255, g_Answer, g_optionName[best]) + 1

if (g_execResult)
{
g_execResult = false

if (is_user_connected(g_voteCaller))
{
new menuBody[512], lTheResult[32], lYes[16], lNo[16]

format(lTheResult, 31, "%L", g_voteCaller, "THE_RESULT")
format(lYes, 15, "%L", g_voteCaller, "YES")
format(lNo, 15, "%L", g_voteCaller, "NO")

new len = format(menuBody, 511, g_coloredMenus ? "\y%s: \w%s^n^n" : "%s: %s^n^n", lTheResult, g_Execute)

len += format(menuBody[len], 511 - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", g_voteCaller, "WANT_CONTINUE")
format(menuBody[len], 511 - len, "^n1. %s^n2. %s", lYes, lNo)
show_menu(g_voteCaller, 0x03, menuBody, 10, "The result: ")
set_task(10.0, "autoRefuse", 4545454)
}
else
set_task(2.0, "delayedExec", 0, g_Execute, g_execLen)
}

new lVotingSuccess[32]

for (i = 0; i < pnum; i++)
{
format(lVotingSuccess, 31, "%L", players[i], "VOTING_SUCCESS")
ChatColor(players[i], "%L", players[i], "VOTING_RES_3", lVotingSuccess, iResult, iRatio, g_Execute)
}

format(lVotingSuccess, 31, "%L", "en", "VOTING_SUCCESS")
log_amx("Vote: %s (got ^"%d^") (needed ^"%d^") (result ^"%s^")", lVotingSuccess, iResult, iRatio, g_Execute)

return PLUGIN_CONTINUE
}

public voteCount(id, key)
{
if (get_cvar_num("amx_vote_answers"))
{
new name[32]
get_user_name(id, name, 31)

if (g_yesNoVote)
ChatColor(0, "%L", LANG_PLAYER, key ? "VOTED_AGAINST" : "VOTED_FOR", name)
else
ChatColor(0, "%L", LANG_PLAYER, "VOTED_FOR_OPT", name, key + 1)
}
++g_voteCount[key]

return PLUGIN_HANDLED
}

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

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new argc = read_argc()
if (argc > 5) argc = 5

g_validMaps = 0
g_optionName[0][0] = 0
g_optionName[1][0] = 0
g_optionName[2][0] = 0
g_optionName[3][0] = 0

for (new i = 1; i < argc; ++i)
{
read_argv(i, g_optionName[g_validMaps], 31)

if (is_map_valid(g_optionName[g_validMaps]))
g_validMaps++
}

if (g_validMaps == 0)
{
new lMaps[16]

format(lMaps, 15, "%L", id, (argc == 2) ? "MAP_IS" : "MAPS_ARE")
console_print(id, "%L", id, "GIVEN_NOT_VALID", lMaps)
return PLUGIN_HANDLED
}

new menu_msg[256], len = 0
new keys = 0

if (g_validMaps > 1)
{
keys = MENU_KEY_0
len = format(menu_msg, 255, g_coloredMenus ? "\y%L: \w^n^n" : "%L: ^n^n", LANG_SERVER, "CHOOSE_MAP")
new temp[128]

for (new a = 0; a < g_validMaps; ++a)
{
format(temp, 127, "%d. %s^n", a+1, g_optionName[a])
len += copy(menu_msg[len], 255-len, temp)
keys |= (1<<a)
}

format(menu_msg[len], 255-len, "^n0. %L", LANG_SERVER, "NONE")
g_yesNoVote = 0
} else {
new lChangeMap[32], lYes[16], lNo[16]

format(lChangeMap, 31, "%L", LANG_SERVER, "CHANGE_MAP_TO")
format(lYes, 15, "%L", LANG_SERVER, "YES")
format(lNo, 15, "%L", LANG_SERVER, "NO")
format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lChangeMap, g_optionName[0], lYes, lNo)
keys = MENU_KEY_1|MENU_KEY_2
g_yesNoVote = 1
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)

if (argc == 2)
log_amx("Vote: ^"%s<%d><%s><>^" vote map (map ^"%s^")", name, get_user_userid(id), authid, g_optionName[0])
else
log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", name, get_user_userid(id), authid, g_optionName[0], g_optionName[1], g_optionName[2], g_optionName[3])

new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_VOTE_MAP_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_MAP_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

g_execResult = true
new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float("amx_votemap_ratio")
g_Answer = "changelevel %s"
show_menu(0, keys, menu_msg, floatround(vote_time), (g_validMaps > 1) ? "Choose map: " : "Change map to ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 0}

return PLUGIN_HANDLED
}

public cmdVote(id, level, cid)
{
if (!cmd_access(id, level, cid, 4))
return PLUGIN_HANDLED

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new quest[48]
read_argv(1, quest, 47)

if (contain(quest, "sv_password") != -1 || contain(quest, "rcon_password") != -1)
{
console_print(id, "%L", id, "VOTING_FORBIDDEN")
return PLUGIN_HANDLED
}

new count=read_argc();

for (new i=0;i<4 && (i+2)<count;i++)
{
read_argv(i+2, g_optionName[i], sizeof(g_optionName[])-1);
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" vote custom (question ^"%s^") (option#1 ^"%s^") (option#2 ^"%s^")", name, get_user_userid(id), authid, quest, g_optionName[0], g_optionName[1])

new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_VOTE_CUS_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_CUS_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

new menu_msg[512], lVote[16]

format(lVote, 15, "%L", LANG_SERVER, "VOTE")

count-=2;
if (count>4)
{
count=4;
}
// count now shows how many options were listed
new keys=0;
for (new i=0;i<count;i++)
{
keys |= (1<<i);
}

new len=formatex(menu_msg, sizeof(menu_msg)-1, g_coloredMenus ? "\y%s: %s\w^n^n" : "%s: %s^n^n", lVote, quest);

for (new i=0;i<count;i++)
{
len+=formatex(menu_msg[len], sizeof(menu_msg) - 1 - len ,"%d. %s^n",i+1,g_optionName[i]);
}
g_execResult = false

new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float("amx_vote_ratio")
replace_all(quest,sizeof(quest)-1,"%","");
format(g_Answer, 127, "%s - %%s", quest)
show_menu(0, keys, menu_msg, floatround(vote_time), "Vote: ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 0}
g_yesNoVote = 0

return PLUGIN_HANDLED
}

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

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new cmd[32]

read_argv(0, cmd, 31)

new voteban = equal(cmd, "amx_voteban")
new arg[32]
read_argv(1, arg, 31)

new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)

if (!player)
return PLUGIN_HANDLED

if (voteban && is_user_bot(player))
{
new imname[32]

get_user_name(player, imname, 31)
console_print(id, "%L", id, "ACTION_PERFORMED", imname)
return PLUGIN_HANDLED
}

new keys = MENU_KEY_1|MENU_KEY_2
new menu_msg[256], lYes[16], lNo[16], lKickBan[16]

format(lYes, 15, "%L", LANG_SERVER, "YES")
format(lNo, 15, "%L", LANG_SERVER, "NO")
format(lKickBan, 15, "%L", LANG_SERVER, voteban ? "BAN" : "KICK")
ucfirst(lKickBan)
get_user_name(player, arg, 31)
format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lKickBan, arg, lYes, lNo)
g_yesNoVote = 1

new bool:ipban=false;

if (voteban)
{
get_user_authid(player, g_optionName[0], sizeof(g_optionName[])-1);

// Do the same check that's in plmenu to determine if this should be an IP ban instead
if (equal("4294967295", g_optionName[0])
|| equal("HLTV", g_optionName[0])
|| equal("STEAM_ID_LAN", g_optionName[0])
|| equali("VALVE_ID_LAN", g_optionName[0]))
{
get_user_ip(player, g_optionName[0], sizeof(g_optionName[])-1, 1);

ipban=true;
}

}
else
{
num_to_str(get_user_userid(player), g_optionName[0], 31)
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" vote %s (target ^"%s^")", name, get_user_userid(id), authid, voteban ? "ban" : "kick", arg)

new maxpl=get_maxplayers();
new msg[256];
new right[256];
new dummy[1];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
formatex(lKickBan, charsmax(lKickBan), "%L", i, voteban ? "BAN" : "KICK");

// HACK: ADMIN_VOTE_FOR{1,2} keys are really weird. Tokenize and ignore the text before the :
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_FOR_1", i);
strtok(msg, dummy, 0, right, charsmax(right), ':');
trim(right);
show_activity_id(i, id, name, right, lKickBan, arg);
}
}

g_execResult = true

new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float(voteban ? "amx_voteban_ratio" : "amx_votekick_ratio")

if (voteban)
{
if (ipban==true)
{
g_Answer = "addip 30.0 %s";
}
else
{
g_Answer = "banid 30.0 %s kick";

}
}
else
{
g_Answer = "kick #%s";
}
show_menu(0, keys, menu_msg, floatround(vote_time), voteban ? "Ban " : "Kick ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 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();
}
}
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 18.12.2013, 16:10
Сообщение #5
Стаж: 12 лет

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

В конце кода добавить сток:
client_printcolor

Код:
stock client_printcolor( const id, const input[], any:... )
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )

replace_all( msg, 190, "!g", "^4" ) // Green Color
replace_all( msg, 190, "!n", "^1" ) // Default Color
replace_all( msg, 190, "!t", "^3" ) // Team Color

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()
}
}
}
}


И юзать client_printcolor вместо client_print

client_printcolor(0, "^4Hello, world!") - Зеленый цвет: Hello, world!

Отредактировал: Esecman, - 18.12.2013, 16:14
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 18.12.2013, 16:20
Сообщение #6
Стаж: 13 лет

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

Цитата(Esecman @ 18.12.2013, 16:10) *
В конце кода добавить сток:
client_printcolor

Код:
stock client_printcolor( const id, const input[], any:... )
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )

replace_all( msg, 190, "!g", "^4" ) // Green Color
replace_all( msg, 190, "!n", "^1" ) // Default Color
replace_all( msg, 190, "!t", "^3" ) // Team Color

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()
}
}
}
}


И юзать client_printcolor вместо client_print

client_printcolor(0, "^4Hello, world!") - Зеленый цвет: Hello, world!

взгляни внимательно в исходник
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 18.12.2013, 16:24
Сообщение #7
Стаж: 12 лет

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

Ну тогда зайти в .txt файл его и добавить перед текстом следующее:
Код:
!g // Green Color
!n // Default Color
!t // Team Color
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 18.12.2013, 16:24
Сообщение #8


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Цитата(cfgwqa @ 18.12.2013, 21:10) *
Скрытый текст
Код:
#include <amxmodx>
#include <amxmisc>


new g_Answer[128]
new g_optionName[4][64]
new g_voteCount[4]
new g_validMaps
new g_yesNoVote
new g_coloredMenus
new g_voteCaller
new g_Execute[256]
new g_execLen

new bool:g_execResult
new Float:g_voteRatio

public plugin_init()
{
register_plugin("Admin Votes", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("adminvote.txt")
register_dictionary("common.txt")
register_dictionary("mapsmenu.txt")
register_menucmd(register_menuid("Change map to "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Choose map: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount")
register_menucmd(register_menuid("Kick "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Ban "), MENU_KEY_1|MENU_KEY_2, "voteCount")
register_menucmd(register_menuid("Vote: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount")
register_menucmd(register_menuid("The result: "), MENU_KEY_1|MENU_KEY_2, "actionResult")
register_concmd("amx_votemap", "cmdVoteMap", ADMIN_VOTE, "<map> [map] [map] [map]")
register_concmd("amx_votekick", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>")
register_concmd("amx_voteban", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>")
register_concmd("amx_vote", "cmdVote", ADMIN_VOTE, "<question> <answer#1> <answer#2>")
register_concmd("amx_cancelvote", "cmdCancelVote", ADMIN_VOTE, "- cancels last vote")

g_coloredMenus = colored_menus()
}

public cmdCancelVote(id, level, cid)
{
if (!cmd_access(id, level, cid, 0))
return PLUGIN_HANDLED

if (task_exists(99889988, 1))
{
new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" cancel vote session", name, get_user_userid(id), authid)


new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_CANC_VOTE_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_CANC_VOTE_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

console_print(id, "%L", id, "VOTING_CANC")
ChatColor(0,"%L",LANG_PLAYER,"VOTING_CANC")
remove_task(99889988, 1)
set_cvar_float("amx_last_voting", get_gametime())
}
else
console_print(id, "%L", id, "NO_VOTE_CANC")

return PLUGIN_HANDLED
}

public delayedExec(cmd[])
server_cmd("%s", cmd)

public autoRefuse()
{
log_amx("Vote: %L", "en", "RES_REF")
ChatColor(0, "%L", LANG_PLAYER, "RES_REF")
}

public actionResult(id, key)
{
remove_task(4545454)

switch (key)
{
case 0:
{
set_task(2.0, "delayedExec", 0, g_Execute, g_execLen)
log_amx("Vote: %L", "en", "RES_ACCEPTED")
ChatColor(0, "%L", LANG_PLAYER, "RES_ACCEPTED")
}
case 1: autoRefuse()
}

return PLUGIN_HANDLED
}

public checkVotes()
{
new best = 0

if (!g_yesNoVote)
{
for (new a = 0; a < 4; ++a)
if (g_voteCount[a] > g_voteCount[best])

best = a
}

new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3]
new iRatio = votesNum ? floatround(g_voteRatio * float(votesNum), floatround_ceil) : 1
new iResult = g_voteCount[best]
new players[32], pnum, i

get_players(players, pnum, "c")

if (iResult < iRatio)
{
new lVotingFailed[64]

for (i = 0; i < pnum; i++)
{
format(lVotingFailed, 63, "%L", players[i], "VOTING_FAILED")
if (g_yesNoVote)
ChatColor(players[i], "%L", players[i], "VOTING_RES_1", lVotingFailed, g_voteCount[0], g_voteCount[1], iRatio)
else
ChatColor(players[i], "%L", players[i], "VOTING_RES_2", lVotingFailed, iResult, iRatio)
}

format(lVotingFailed, 63, "%L", "en", "VOTING_FAILED")
log_amx("Vote: %s (got ^"%d^") (needed ^"%d^")", lVotingFailed, iResult, iRatio)

return PLUGIN_CONTINUE
}

g_execLen = format(g_Execute, 255, g_Answer, g_optionName[best]) + 1

if (g_execResult)
{
g_execResult = false

if (is_user_connected(g_voteCaller))
{
new menuBody[512], lTheResult[32], lYes[16], lNo[16]

format(lTheResult, 31, "%L", g_voteCaller, "THE_RESULT")
format(lYes, 15, "%L", g_voteCaller, "YES")
format(lNo, 15, "%L", g_voteCaller, "NO")

new len = format(menuBody, 511, g_coloredMenus ? "\y%s: \w%s^n^n" : "%s: %s^n^n", lTheResult, g_Execute)

len += format(menuBody[len], 511 - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", g_voteCaller, "WANT_CONTINUE")
format(menuBody[len], 511 - len, "^n1. %s^n2. %s", lYes, lNo)
show_menu(g_voteCaller, 0x03, menuBody, 10, "The result: ")
set_task(10.0, "autoRefuse", 4545454)
}
else
set_task(2.0, "delayedExec", 0, g_Execute, g_execLen)
}

new lVotingSuccess[32]

for (i = 0; i < pnum; i++)
{
format(lVotingSuccess, 31, "%L", players[i], "VOTING_SUCCESS")
ChatColor(players[i], "%L", players[i], "VOTING_RES_3", lVotingSuccess, iResult, iRatio, g_Execute)
}

format(lVotingSuccess, 31, "%L", "en", "VOTING_SUCCESS")
log_amx("Vote: %s (got ^"%d^") (needed ^"%d^") (result ^"%s^")", lVotingSuccess, iResult, iRatio, g_Execute)

return PLUGIN_CONTINUE
}

public voteCount(id, key)
{
if (get_cvar_num("amx_vote_answers"))
{
new name[32]
get_user_name(id, name, 31)

if (g_yesNoVote)
ChatColor(0, "%L", LANG_PLAYER, key ? "VOTED_AGAINST" : "VOTED_FOR", name)
else
ChatColor(0, "%L", LANG_PLAYER, "VOTED_FOR_OPT", name, key + 1)
}
++g_voteCount[key]

return PLUGIN_HANDLED
}

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

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new argc = read_argc()
if (argc > 5) argc = 5

g_validMaps = 0
g_optionName[0][0] = 0
g_optionName[1][0] = 0
g_optionName[2][0] = 0
g_optionName[3][0] = 0

for (new i = 1; i < argc; ++i)
{
read_argv(i, g_optionName[g_validMaps], 31)

if (is_map_valid(g_optionName[g_validMaps]))
g_validMaps++
}

if (g_validMaps == 0)
{
new lMaps[16]

format(lMaps, 15, "%L", id, (argc == 2) ? "MAP_IS" : "MAPS_ARE")
console_print(id, "%L", id, "GIVEN_NOT_VALID", lMaps)
return PLUGIN_HANDLED
}

new menu_msg[256], len = 0
new keys = 0

if (g_validMaps > 1)
{
keys = MENU_KEY_0
len = format(menu_msg, 255, g_coloredMenus ? "\y%L: \w^n^n" : "%L: ^n^n", LANG_SERVER, "CHOOSE_MAP")
new temp[128]

for (new a = 0; a < g_validMaps; ++a)
{
format(temp, 127, "%d. %s^n", a+1, g_optionName[a])
len += copy(menu_msg[len], 255-len, temp)
keys |= (1<<a)
}

format(menu_msg[len], 255-len, "^n0. %L", LANG_SERVER, "NONE")
g_yesNoVote = 0
} else {
new lChangeMap[32], lYes[16], lNo[16]

format(lChangeMap, 31, "%L", LANG_SERVER, "CHANGE_MAP_TO")
format(lYes, 15, "%L", LANG_SERVER, "YES")
format(lNo, 15, "%L", LANG_SERVER, "NO")
format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lChangeMap, g_optionName[0], lYes, lNo)
keys = MENU_KEY_1|MENU_KEY_2
g_yesNoVote = 1
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)

if (argc == 2)
log_amx("Vote: ^"%s<%d><%s><>^" vote map (map ^"%s^")", name, get_user_userid(id), authid, g_optionName[0])
else
log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", name, get_user_userid(id), authid, g_optionName[0], g_optionName[1], g_optionName[2], g_optionName[3])

new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_VOTE_MAP_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_MAP_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

g_execResult = true
new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float("amx_votemap_ratio")
g_Answer = "changelevel %s"
show_menu(0, keys, menu_msg, floatround(vote_time), (g_validMaps > 1) ? "Choose map: " : "Change map to ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 0}

return PLUGIN_HANDLED
}

public cmdVote(id, level, cid)
{
if (!cmd_access(id, level, cid, 4))
return PLUGIN_HANDLED

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new quest[48]
read_argv(1, quest, 47)

if (contain(quest, "sv_password") != -1 || contain(quest, "rcon_password") != -1)
{
console_print(id, "%L", id, "VOTING_FORBIDDEN")
return PLUGIN_HANDLED
}

new count=read_argc();

for (new i=0;i<4 && (i+2)<count;i++)
{
read_argv(i+2, g_optionName[i], sizeof(g_optionName[])-1);
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" vote custom (question ^"%s^") (option#1 ^"%s^") (option#2 ^"%s^")", name, get_user_userid(id), authid, quest, g_optionName[0], g_optionName[1])

new maxpl=get_maxplayers();
new msg[256];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// HACK: ADMIN_VOTE_CUS_{1,2} keys were designed very poorly. Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_CUS_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);
}
}

new menu_msg[512], lVote[16]

format(lVote, 15, "%L", LANG_SERVER, "VOTE")

count-=2;
if (count>4)
{
count=4;
}
// count now shows how many options were listed
new keys=0;
for (new i=0;i<count;i++)
{
keys |= (1<<i);
}

new len=formatex(menu_msg, sizeof(menu_msg)-1, g_coloredMenus ? "\y%s: %s\w^n^n" : "%s: %s^n^n", lVote, quest);

for (new i=0;i<count;i++)
{
len+=formatex(menu_msg[len], sizeof(menu_msg) - 1 - len ,"%d. %s^n",i+1,g_optionName[i]);
}
g_execResult = false

new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float("amx_vote_ratio")
replace_all(quest,sizeof(quest)-1,"%","");
format(g_Answer, 127, "%s - %%s", quest)
show_menu(0, keys, menu_msg, floatround(vote_time), "Vote: ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 0}
g_yesNoVote = 0

return PLUGIN_HANDLED
}

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

new Float:voting = get_cvar_float("amx_last_voting")
if (voting > get_gametime())
{
console_print(id, "%L", id, "ALREADY_VOTING")
return PLUGIN_HANDLED
}

if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime())
{
console_print(id, "%L", id, "VOTING_NOT_ALLOW")
return PLUGIN_HANDLED
}

new cmd[32]

read_argv(0, cmd, 31)

new voteban = equal(cmd, "amx_voteban")
new arg[32]
read_argv(1, arg, 31)

new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)

if (!player)
return PLUGIN_HANDLED

if (voteban && is_user_bot(player))
{
new imname[32]

get_user_name(player, imname, 31)
console_print(id, "%L", id, "ACTION_PERFORMED", imname)
return PLUGIN_HANDLED
}

new keys = MENU_KEY_1|MENU_KEY_2
new menu_msg[256], lYes[16], lNo[16], lKickBan[16]

format(lYes, 15, "%L", LANG_SERVER, "YES")
format(lNo, 15, "%L", LANG_SERVER, "NO")
format(lKickBan, 15, "%L", LANG_SERVER, voteban ? "BAN" : "KICK")
ucfirst(lKickBan)
get_user_name(player, arg, 31)
format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lKickBan, arg, lYes, lNo)
g_yesNoVote = 1

new bool:ipban=false;

if (voteban)
{
get_user_authid(player, g_optionName[0], sizeof(g_optionName[])-1);

// Do the same check that's in plmenu to determine if this should be an IP ban instead
if (equal("4294967295", g_optionName[0])
|| equal("HLTV", g_optionName[0])
|| equal("STEAM_ID_LAN", g_optionName[0])
|| equali("VALVE_ID_LAN", g_optionName[0]))
{
get_user_ip(player, g_optionName[0], sizeof(g_optionName[])-1, 1);

ipban=true;
}

}
else
{
num_to_str(get_user_userid(player), g_optionName[0], 31)
}

new authid[32], name[32]

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
log_amx("Vote: ^"%s<%d><%s><>^" vote %s (target ^"%s^")", name, get_user_userid(id), authid, voteban ? "ban" : "kick", arg)

new maxpl=get_maxplayers();
new msg[256];
new right[256];
new dummy[1];
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
formatex(lKickBan, charsmax(lKickBan), "%L", i, voteban ? "BAN" : "KICK");

// HACK: ADMIN_VOTE_FOR{1,2} keys are really weird. Tokenize and ignore the text before the :
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_FOR_1", i);
strtok(msg, dummy, 0, right, charsmax(right), ':');
trim(right);
show_activity_id(i, id, name, right, lKickBan, arg);
}
}

g_execResult = true

new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0

set_cvar_float("amx_last_voting", get_gametime() + vote_time)
g_voteRatio = get_cvar_float(voteban ? "amx_voteban_ratio" : "amx_votekick_ratio")

if (voteban)
{
if (ipban==true)
{
g_Answer = "addip 30.0 %s";
}
else
{
g_Answer = "banid 30.0 %s kick";

}
}
else
{
g_Answer = "kick #%s";
}
show_menu(0, keys, menu_msg, floatround(vote_time), voteban ? "Ban " : "Kick ")
set_task(vote_time, "checkVotes", 99889988)
g_voteCaller = id
console_print(id, "%L", id, "VOTING_STARTED")
g_voteCount = {0, 0, 0, 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();
}
}
}
}

В ланг файле слова раскрашены?


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 18.12.2013, 16:34
Сообщение #9
Стаж: 13 лет

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

Цитата(winzh1 @ 18.12.2013, 16:24) *
В ланг файле слова раскрашены?

да конечно
Код:
[ru]
ADMIN_CANC_VOTE_1 = %s: отменил голосование
ADMIN_CANC_VOTE_2 = %s %s: отменил голосование
VOTING_CANC = !t[!g 1337 Паблик !t] !yГолосование отменено
NO_VOTE_CANC = Сейчас нет активного голосования, которое можно было бы отменить.
RES_REF = !t[!g 1337 Паблик !t] !yРезультат не принят!
RES_ACCEPTED = !t[!g 1337 Паблик !t] !yРезультат принят.
VOTING_FAILED = !yНе состоялось!
VOTING_RES_1 = !t[!g 1337 Паблик !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!y"!gПРОТИВ!y" "!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)
VOTING_RES_2 = !t[!g 1337 Паблик !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)
VOTING_SUCCESS = !yИтог
VOTING_RES_3 = !t[!g 1337 Паблик !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)!y.!t: !g%s
THE_RESULT = Результат
WANT_CONTINUE = Вы хотите продолжить?
VOTED_FOR = !t[!g 1337 Паблик !t] !g%s !yпроголосовал !t"!gЗА!t"
VOTED_AGAINST = !t[!g 1337 Паблик !t] !g%s !yпроголосовал "!gПРОТИВ!y"
VOTED_FOR_OPT = !t[!g 1337 Паблик !t] !g%s !yпроголосовал за !g#%d
ALREADY_VOTING = Голосование уже начато!
VOTING_NOT_ALLOW = В данный момент голосование запрещено!
GIVEN_NOT_VALID = %s не верно
MAP_IS = карта
MAPS_ARE = карты
CHOOSE_MAP = Выбирите карту
ADMIN_VOTE_MAP_1 = %s: создал голосование за карту
ADMIN_VOTE_MAP_2 = %s %s: создал голосование за карту
VOTING_STARTED = Голосование началось!
VOTING_FORBIDDEN = Такое голосование недопустимо!
ADMIN_VOTE_CUS_1 = %s создал голосование
ADMIN_VOTE_CUS_2 = %s %s создал голосование
VOTE = \rГолос\w
ACTION_PERFORMED = Невозможно выполнить эту команду для бота "%s"
ADMIN_VOTE_FOR_1 = %s создал голосование: "%s %s"
ADMIN_VOTE_FOR_2 = %s %s создал голосование "%s %s"

[en]
ADMIN_CANC_VOTE_1 = %s: cancel vote
ADMIN_CANC_VOTE_2 = %s %s: cancel vote
VOTING_CANC = Voting canceled
NO_VOTE_CANC = There is no voting to cancel or the vote session can't be canceled with that command
RES_REF = Result refused
RES_ACCEPTED = Result accepted
VOTING_FAILED = Voting failed
VOTING_RES_1 = %s (yes "%d") (no "%d") (needed "%d")
VOTING_RES_2 = %s (got "%d") (needed "%d")
VOTING_SUCCESS = Voting successful
VOTING_RES_3 = %s (got "%d") (needed "%d"). The result: %s
THE_RESULT = The result
WANT_CONTINUE = Do you want to continue?
VOTED_FOR = %s voted for
VOTED_AGAINST = %s voted against
VOTED_FOR_OPT = %s voted for option #%d
ALREADY_VOTING = There is already one voting...
VOTING_NOT_ALLOW = Voting not allowed at this time
GIVEN_NOT_VALID = Given %s not valid
MAP_IS = map is
MAPS_ARE = maps are
CHOOSE_MAP = Choose map
ADMIN_VOTE_MAP_1 = %s: vote map(s)
ADMIN_VOTE_MAP_2 = %s %s: vote map(s)
VOTING_STARTED = Voting has started...
VOTING_FORBIDDEN = Voting for that has been forbidden
ADMIN_VOTE_CUS_1 = %s: vote custom
ADMIN_VOTE_CUS_2 = %s %s: vote custom
VOTE = Vote
ACTION_PERFORMED = That action can't be performed on bot "%s"
ADMIN_VOTE_FOR_1 = %s: vote %s for %s
ADMIN_VOTE_FOR_2 = %s %s: vote %s for %s
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 18.12.2013, 16:38
Сообщение #10
Стаж: 12 лет

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

Ну и? Что мешает? Добавьте везде!
!g%s !nBlalblalbvl

Чего трудного?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 18.12.2013, 16:38
Сообщение #11


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Цитата(cfgwqa @ 18.12.2013, 21:34) *
да конечно
Код:
[ru]
ADMIN_CANC_VOTE_1 = %s: отменил голосование
ADMIN_CANC_VOTE_2 = %s %s: отменил голосование
VOTING_CANC = !t[!g 1337 Паблик !t] !yГолосование отменено
NO_VOTE_CANC = Сейчас нет активного голосования, которое можно было бы отменить.
RES_REF = !t[!g 1337 Паблик !t] !yРезультат не принят!
RES_ACCEPTED = !t[!g 1337 Паблик !t] !yРезультат принят.
VOTING_FAILED = !yНе состоялось!
VOTING_RES_1 = !t[!g 1337 Паблик !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!y"!gПРОТИВ!y" "!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)
VOTING_RES_2 = !t[!g 1337 Паблик !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)
VOTING_SUCCESS = !yИтог
VOTING_RES_3 = !t[!g 1337 Паблик !t] !g%s !t(!y"!gЗА!y" !t- !y"!g%d!y"!t) (!gнадо !t- !y"!g%d!y"!t)!y.!t: !g%s
THE_RESULT = Результат
WANT_CONTINUE = Вы хотите продолжить?
VOTED_FOR = !t[!g 1337 Паблик !t] !g%s !yпроголосовал !t"!gЗА!t"
VOTED_AGAINST = !t[!g 1337 Паблик !t] !g%s !yпроголосовал "!gПРОТИВ!y"
VOTED_FOR_OPT = !t[!g 1337 Паблик !t] !g%s !yпроголосовал за !g#%d
ALREADY_VOTING = Голосование уже начато!
VOTING_NOT_ALLOW = В данный момент голосование запрещено!
GIVEN_NOT_VALID = %s не верно
MAP_IS = карта
MAPS_ARE = карты
CHOOSE_MAP = Выбирите карту
ADMIN_VOTE_MAP_1 = %s: создал голосование за карту
ADMIN_VOTE_MAP_2 = %s %s: создал голосование за карту
VOTING_STARTED = Голосование началось!
VOTING_FORBIDDEN = Такое голосование недопустимо!
ADMIN_VOTE_CUS_1 = %s создал голосование
ADMIN_VOTE_CUS_2 = %s %s создал голосование
VOTE = \rГолос\w
ACTION_PERFORMED = Невозможно выполнить эту команду для бота "%s"
ADMIN_VOTE_FOR_1 = %s создал голосование: "%s %s"
ADMIN_VOTE_FOR_2 = %s %s создал голосование "%s %s"

[en]
ADMIN_CANC_VOTE_1 = %s: cancel vote
ADMIN_CANC_VOTE_2 = %s %s: cancel vote
VOTING_CANC = Voting canceled
NO_VOTE_CANC = There is no voting to cancel or the vote session can't be canceled with that command
RES_REF = Result refused
RES_ACCEPTED = Result accepted
VOTING_FAILED = Voting failed
VOTING_RES_1 = %s (yes "%d") (no "%d") (needed "%d")
VOTING_RES_2 = %s (got "%d") (needed "%d")
VOTING_SUCCESS = Voting successful
VOTING_RES_3 = %s (got "%d") (needed "%d"). The result: %s
THE_RESULT = The result
WANT_CONTINUE = Do you want to continue?
VOTED_FOR = %s voted for
VOTED_AGAINST = %s voted against
VOTED_FOR_OPT = %s voted for option #%d
ALREADY_VOTING = There is already one voting...
VOTING_NOT_ALLOW = Voting not allowed at this time
GIVEN_NOT_VALID = Given %s not valid
MAP_IS = map is
MAPS_ARE = maps are
CHOOSE_MAP = Choose map
ADMIN_VOTE_MAP_1 = %s: vote map(s)
ADMIN_VOTE_MAP_2 = %s %s: vote map(s)
VOTING_STARTED = Voting has started...
VOTING_FORBIDDEN = Voting for that has been forbidden
ADMIN_VOTE_CUS_1 = %s: vote custom
ADMIN_VOTE_CUS_2 = %s %s: vote custom
VOTE = Vote
ACTION_PERFORMED = That action can't be performed on bot "%s"
ADMIN_VOTE_FOR_1 = %s: vote %s for %s
ADMIN_VOTE_FOR_2 = %s %s: vote %s for %s

Тогда конкретнее, на этом примере.Какие слова не выводит в нужном цвете?


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 18.12.2013, 16:46
Сообщение #12
Стаж: 13 лет

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

Цитата(winzh1 @ 18.12.2013, 16:38) *
Тогда конкретнее, на этом примере.Какие слова не выводит в нужном цвете?

тык
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 18.12.2013, 16:50
Сообщение #13
Стаж: 12 лет

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

ADMIN_VOTE_CUS_1 = !g%s создал голосование
ADMIN_VOTE_CUS_2 = !g%s %s создал голосование
Все зеленое.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 18.12.2013, 16:53
Сообщение #14


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Цитата(cfgwqa @ 18.12.2013, 21:46) *

Так там и цвета нету в ланг файле.
Код:
ADMIN_VOTE_CUS_2 = %s %s создал голосование


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 18.12.2013, 17:09
Сообщение #15
Стаж: 13 лет

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

Цитата(winzh1 @ 18.12.2013, 16:53) *
Так там и цвета нету в ланг файле.
Код:
ADMIN_VOTE_CUS_2 = %s %s создал голосование

тык
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 18.12.2013, 17:12
Сообщение #16


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Цитата(cfgwqa @ 18.12.2013, 22:09) *

А исходник кто будет править?
Код:
// HACK: ADMIN_VOTE_CUS_{1,2} keys were designed very poorly.  Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_CUS_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);

Прикрепленные файлы:
Прикрепленный файл  adminvote.sma ( 16,36 килобайт ) Кол-во скачиваний: 14


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 18.12.2013, 20:29
Сообщение #17
Стаж: 13 лет

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

Цитата(winzh1 @ 18.12.2013, 17:12) *
А исходник кто будет править?
Код:
// HACK: ADMIN_VOTE_CUS_{1,2} keys were designed very poorly.  Remove all : and %s in it.
LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_CUS_1", i);
replace_all(msg, charsmax(msg), "%s", "");
replace_all(msg, charsmax(msg), ":", "");
trim(msg);
show_activity_id(i, id, name, msg);

а что тут поменять надо?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 19.12.2013, 18:53
Сообщение #18
Стаж: 13 лет

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

ап

Отредактировал: cfgwqa, - 30.12.2013, 11:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cfgwqa
сообщение 30.12.2013, 11:38
Сообщение #19
Стаж: 13 лет

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

ку ку ребят)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sky Cat
сообщение 30.12.2013, 13:37
Сообщение #20
Стаж: 13 лет
Город: Белгород

Сообщений: 1179
Благодарностей: 733
Полезность: 1056

Апание запрещено. Прочитайте правила


я знаю, что я ничего не знаю
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: