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

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

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

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

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

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

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

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

voteban by alka

, русификация
andreiwiz
сообщение 7.7.2014, 5:47
Сообщение #1
Стаж: 11 лет

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

есть ли такой на русском?
вот на англ.
Код:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Vote Ban"
#define VERSION "1.0"
#define AUTHOR "Alka"

#define MAX_PLAYERS 33

#define MENU_KEYS (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9)
#define MENU_SLOTS 8

new g_iMenuPage[MAX_PLAYERS];
new g_iVotedPlayers[MAX_PLAYERS];
new g_iVotes[MAX_PLAYERS];
new g_szVoteReason[MAX_PLAYERS][64];

new g_iPlayers[MAX_PLAYERS - 1];
new g_iNum;

new g_iMsgidSayText;

enum {
CVAR_PERCENT = 0,
CVAR_BANTYPE,
CVAR_BANTIME
};
new g_szCvarName[][] = {
"voteban_percent",
"voteban_type",
"voteban_time"
};
new g_szCvarValue[][] = {
"80",
"1",
"100"
};
new g_iPcvar[3];
new g_szLogFile[64];

public plugin_init() {

register_plugin(PLUGIN, VERSION, AUTHOR);

register_saycmd("voteban", "Cmd_VoteBan", -1, "");
register_clcmd("_voteban_reason", "Cmd_VoteBanReason", -1, "");

register_menucmd(register_menuid("\rVOTEBAN \yMenu:"), MENU_KEYS, "Menu_VoteBan");

for(new i = 0 ; i < 3 ; i++)
{
g_iPcvar[i] = register_cvar(g_szCvarName[i], g_szCvarValue[i]);
}
g_iMsgidSayText = get_user_msgid("SayText");

new szLogInfo[] = "amx_logdir";
get_localinfo(szLogInfo, g_szLogFile, charsmax(g_szLogFile));
add(g_szLogFile, charsmax(g_szLogFile), "/voteban");

if(!dir_exists(g_szLogFile))
mkdir(g_szLogFile);

new szTime[32];
get_time("%d-%m-%Y", szTime, charsmax(szTime));
format(g_szLogFile, charsmax(g_szLogFile), "%s/%s.log", g_szLogFile, szTime);
}

public client_disconnect(id)
{
if(g_iVotedPlayers[id])
{
get_players(g_iPlayers, g_iNum, "h");

for(new i = 0 ; i < g_iNum ; i++)
{
if(g_iVotedPlayers[id] & (1 << g_iPlayers[i]))
{
g_iVotes[g_iPlayers[i]]--;
}
}
g_iVotedPlayers[id] = 0;
}
}

public Cmd_VoteBan(id)
{
get_players(g_iPlayers, g_iNum, "h");

if(g_iNum < 3)
{
client_printc(id, "\g> \dThis command is unavailable! Need at least 3 players.");
return PLUGIN_HANDLED;
}
ShowBanMenu(id, g_iMenuPage[id] = 0);
return PLUGIN_CONTINUE;
}

public ShowBanMenu(id, iPos)
{
static i, iPlayer, szName[32];
static szMenu[256], iCurrPos; iCurrPos = 0;
static iStart, iEnd; iStart = iPos * MENU_SLOTS;
static iKeys;

get_players(g_iPlayers, g_iNum, "h");

if(iStart >= g_iNum)
{
iStart = iPos = g_iMenuPage[id] = 0;
}

static iLen;
iLen = formatex(szMenu, charsmax(szMenu), "\rVOTEBAN \yMenu:^n^n");

iEnd = iStart + MENU_SLOTS;
iKeys = MENU_KEY_0;

if(iEnd > g_iNum)
{
iEnd = g_iNum;
}

for(i = iStart ; i < iEnd ; i++)
{
iPlayer = g_iPlayers[i];
get_user_name(iPlayer, szName, charsmax(szName));

iKeys |= (1 << iCurrPos++);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r%d\w.%s \d(\r%d%%\d)^n", iCurrPos, szName, get_percent(g_iVotes[iPlayer], g_iNum));
}

if(iEnd != g_iNum)
{
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r9\w.Next ^n\r0\w.%s", iPos ? "Back" : "Exit");
iKeys |= MENU_KEY_9;
}
else
{
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0\w.%s", iPos ? "Back" : "Exit");
}
show_menu(id, iKeys, szMenu, -1, "");
return PLUGIN_HANDLED;
}

public Menu_VoteBan(id, key)
{
switch(key)
{
case 8:
{
ShowBanMenu(id, ++g_iMenuPage[id]);
}
case 9:
{
if(!g_iMenuPage[id])
return PLUGIN_HANDLED;

ShowBanMenu(id, --g_iMenuPage[id]);
}
default: {
static iPlayer;
iPlayer = g_iPlayers[g_iMenuPage[id] * MENU_SLOTS + key];

if(!is_user_connected(iPlayer))
{
ShowBanMenu(id, g_iMenuPage[id]);
return PLUGIN_HANDLED;
}
if(iPlayer == id)
{
client_print(id, print_center, "*You cannot voteban yourself!*");
ShowBanMenu(id, g_iMenuPage[id]);

return PLUGIN_HANDLED;
}
if(g_iVotedPlayers[id] & (1 << iPlayer))
{
client_print(id, print_center, "*You already votebanned this player!*");
ShowBanMenu(id, g_iMenuPage[id]);

return PLUGIN_HANDLED;
}
g_iVotes[iPlayer]++;
g_iVotedPlayers[id] |= (1 << iPlayer);

static szName[2][32];
get_user_name(id, szName[0], charsmax(szName[]));
get_user_name(iPlayer, szName[1], charsmax(szName[]));

client_printc(0, "\g> \dPlayer \t%s \dvotebanned \t%s\d!", szName[0], szName[1]);

CheckVotes(iPlayer, id);
client_cmd(id, "messagemode _voteban_reason");

ShowBanMenu(id, g_iMenuPage[id]);
}
}
return PLUGIN_HANDLED;
}

public Cmd_VoteBanReason(id)
{
if(!g_iVotedPlayers[id])
return PLUGIN_HANDLED;

new szArgs[64];
read_argv(1, szArgs, charsmax(szArgs));

if(szArgs[0])
{
formatex(g_szVoteReason[id], charsmax(g_szVoteReason[]), szArgs);
}
return PLUGIN_HANDLED;
}

public CheckVotes(id, voter)
{
get_players(g_iPlayers, g_iNum, "h");
new iPercent = get_percent(g_iVotes[id], g_iNum);

if(iPercent >= get_pcvar_num(g_iPcvar[CVAR_PERCENT]))
{
switch(get_pcvar_num(g_iPcvar[CVAR_BANTYPE]))
{
case 1:
{
new szAuthid[32];
get_user_authid(id, szAuthid, charsmax(szAuthid));
server_cmd("kick #%d;wait;wait;wait;banid %d ^"%s^";wait;wait;wait;writeid", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szAuthid);
}
case 2:
{
new szIp[32];
get_user_ip(id, szIp, charsmax(szIp), 1);
server_cmd("kick #%d;wait;wait;wait;addip %d ^"%s^";wait;wait;wait;writeip", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szIp);
}
}
g_iVotes[id] = 0;

new szName[2][32];
get_user_name(id, szName[0], charsmax(szName[]));
get_user_name(id, szName[1], charsmax(szName[]));
client_printc(0, "\g> \dPlayer \t%s \dhas been banned for \g%d\dmin. due voteban!", szName[0], get_pcvar_num(g_iPcvar[CVAR_BANTIME]));

log_to_file(g_szLogFile, "Player '%s' voted for banning '%s' for: %s", szName[1], szName[0], g_szVoteReason[voter]);
}
}

stock get_percent(value, tvalue)
{
return floatround(floatmul(float(value) / float(tvalue) , 100.0));
}

stock register_saycmd(saycommand[], function[], flags = -1, info[])
{
static szTemp[64];
formatex(szTemp, charsmax(szTemp), "say %s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say_team %s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say /%s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say .%s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say_team /%s", saycommand);
register_clcmd(szTemp, function, flags, info);
formatex(szTemp, charsmax(szTemp), "say_team .%s", saycommand);
register_clcmd(szTemp, function, flags, info);
}

stock client_printc(id, const text[], any:...)
{

new szMsg[191], iPlayers[32], iCount = 1;
vformat(szMsg, charsmax(szMsg), text, 3);

replace_all(szMsg, charsmax(szMsg), "\g","^x04");
replace_all(szMsg, charsmax(szMsg), "\d","^x01");
replace_all(szMsg, charsmax(szMsg), "\t","^x03");

if(id)
iPlayers[0] = id;
else
get_players(iPlayers, iCount, "ch");

for(new i = 0 ; i < iCount ; i++)
{
if(!is_user_connected(iPlayers[i]))
continue;

message_begin(MSG_ONE_UNRELIABLE, g_iMsgidSayText, _, iPlayers[i]);
write_byte(iPlayers[i]);
write_string(szMsg);
message_end();
}
}

Русифицируйте пожалуйста....
а хотя спасибо, не надо) нашёл вот замену "yet_another_voteban"

Отредактировал: andreiwiz, - 7.7.2014, 5:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
TeamPlay
сообщение 7.7.2014, 7:27
Сообщение #2
Стаж: 12 лет

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

andreiwiz,
Что тут сложного русифицировать? Вместо eng впмсать rus. В google переведи)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя IORoK
сообщение 7.7.2014, 8:29
Сообщение #3


Стаж: 14 лет

Сообщений: 274
Благодарностей: 73
Полезность: 199

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