Ferjkee
Компетентный
Добрый вечер.
Решил я написать свою систему чёрного списка и хочу поделиться с вами ей.
Система совсем простенькая. Что ж, начнём!
Для начала, как всегда, создаём саму систему.
Даём системе название какое хотим, я допустим прозвал её pBlacklist.
Неохото мне расписывать по отдельности как именно вставлять системы, так как множество способов для mxINI, dini и mysql, у всех по разному, тем более это все можно сделать по подобным системам в моде, да и за все это время думаю вы научились, это не так уж и сложно.
Но для новичков, думаю пояснение требуется.
Для начала добавляем в enum pInfo нашу систему:
Затем нам нужно присвоить значение к нулю при присоединении к серверу, а именно:
Ну, а далее уже как обычно, в OnPlayerLogin, OnPlayerRegister, а так же и в сохранение, то есть SavePlayer.
Если не знаете как, сделайте это по примеру других систем.
Итак, теперь в моде сама система присутствует, приступим к основному.
В начало мода для упрощения вставляем название рангов администрирования:
Обосную первую строку:
[6] - кол-во строк. То есть у меня 6 уровней админки, значит названий каждого ранга будет и строк будет 6, так и есть, если посчитать. Если в вашем моде больше/меньше кол-во уровней админки, меняйте на свой и указывайте название, через запятую (p.s. запятая в последней строке не нужна).
Теперь создаём команду (ZCMD+SSCANF):
Если кто-то ещё пользуется обычным пабликом OnPlayerCommand, то переводите сами, сложного в этом ничего нет, а лучше переводите все команды на ZCMD + sscanf.
Поясню команду..
Если администратор более 3 уровня ввел команду /blacklist и указал ID игрока который находится НЕ в ЧС, то игрок будет занесён в ЧС. Если у игрока уже был установлен ЧС, то при вводе команды, ЧС будет присвоен нулю, то есть игрок больше не в ЧС.
Думаю понятно.
Для чего это нужно? Во первых интересно, во вторых удобно.
Допустим, игрок нарушил правила сервера и при подаче жалобы на игрока, ему можно установить ЧС и сделать какие угодно запреты для него.
Например, игрок с ЧС не сможет написать в общий чат, вступить в фракцию, стать лидером и другое. Для того чтобы это сделать, достаточно поставить проверку в нужные команды, а именно:
Допустим для общего чата, вставляем в самый верх команды:
Или допустим для назначения на пост лидера. Вставляем где нибудь в верху команды:
Расписал не очень, так как хочу спать, да и больной, голова болит.
Автор: Я (Ferjkee).
Удачи!
Решил я написать свою систему чёрного списка и хочу поделиться с вами ей.
Система совсем простенькая. Что ж, начнём!
Для начала, как всегда, создаём саму систему.
Даём системе название какое хотим, я допустим прозвал её pBlacklist.
Неохото мне расписывать по отдельности как именно вставлять системы, так как множество способов для mxINI, dini и mysql, у всех по разному, тем более это все можно сделать по подобным системам в моде, да и за все это время думаю вы научились, это не так уж и сложно.
Но для новичков, думаю пояснение требуется.
Для начала добавляем в enum pInfo нашу систему:
PHP:
pBlacklist
PHP:
PlayerInfo[playerid][pBalcklist] = false;
Если не знаете как, сделайте это по примеру других систем.
Итак, теперь в моде сама система присутствует, приступим к основному.
В начало мода для упрощения вставляем название рангов администрирования:
PHP:
new AdminRanks[6][0] = {
{"Модератор"},
{"Модератор"},
{"Модератор"},
{"Модератор"},
{"Гл.Модератор"},
{"Гл.Администратор"}
};
[6] - кол-во строк. То есть у меня 6 уровней админки, значит названий каждого ранга будет и строк будет 6, так и есть, если посчитать. Если в вашем моде больше/меньше кол-во уровней админки, меняйте на свой и указывайте название, через запятую (p.s. запятая в последней строке не нужна).
Теперь создаём команду (ZCMD+SSCANF):
PHP:
CMD:blacklist(playerid, params[])
{
new string[128+MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
new name[MAX_PLAYER_NAME];
GetPlayerName(params[0],sendername,sizeof(sendername));
GetPlayerName(playerid,name,sizeof(name));
if(PlayerInfo[playerid][pAdmin] < 3) return send(playerid, -1, "Ты не можешь использовать эту команду.");
if(sscanf(params,"i", params[0])) return send(playerid, -1, "Используй: /blacklist [ID игрока]");
if(!IsPlayerConnected(params[0]) || params[0] == INVALID_PLAYER_ID) return send(playerid, -1, "Неверный ID игрока.");
switch(PlayerInfo[params[0]][pBlacklist])
{
case 0:
{
f(string, "Ты был(а) добавлен(а) в общий черный список. Добавил(а): %s %s.", AdminRanks[PlayerInfo[playerid][pAdmin]], name), send(params[0], -1, string);
f(string, "Ты добавил(а) игрока %s в общий черный список.", sendername), send(playerid, LBLUE, string);
PlayerInfo[params[0]][pBlacklist] = 1;
}
case 1:
{
f(string, "Ты был(а) удален(а) из общего черного списка. Удалил(а): %s %s.", AdminRanks[PlayerInfo[playerid][pAdmin]], name), send(params[0], -1, string);
f(string, "Ты удалил(а) игрока %s из общего черного списка.", sendername), send(playerid, LBLUE, string);
PlayerInfo[params[0]][pBlacklist] = 0;
}
}
return 1;
}
Поясню команду..
Если администратор более 3 уровня ввел команду /blacklist и указал ID игрока который находится НЕ в ЧС, то игрок будет занесён в ЧС. Если у игрока уже был установлен ЧС, то при вводе команды, ЧС будет присвоен нулю, то есть игрок больше не в ЧС.
Думаю понятно.
Для чего это нужно? Во первых интересно, во вторых удобно.
Допустим, игрок нарушил правила сервера и при подаче жалобы на игрока, ему можно установить ЧС и сделать какие угодно запреты для него.
Например, игрок с ЧС не сможет написать в общий чат, вступить в фракцию, стать лидером и другое. Для того чтобы это сделать, достаточно поставить проверку в нужные команды, а именно:
Допустим для общего чата, вставляем в самый верх команды:
PHP:
if(PlayerInfo[playerid][pBlacklist] > 1) return send(playerid,-1,"Ты находишься в ЧС.");
PHP:
if(PlayerInfo[params[0]][pBlacklist] > 1) return send(playerid,-1,"Игрок находится в ЧС.");
PHP:
params[0] - ID игрока.
Расписал не очень, так как хочу спать, да и больной, голова болит.
Автор: Я (Ferjkee).
Удачи!
Последнее редактирование:
