Mike_Casto
Умник
Здравствуйте уважаемые пользователи pawno-info.
У меня есть мод , за основу которого послужил РЛС.
И я обнаружил там очень не приятный баг с командой /warn и /ban.
Сначало объясню про команду /warn хотя суть бага у обеих команд одинакова.
Все вы знаете если у игрока будет 3 варны то его автоматически забанят.Но у меня не так...
Я выдаю 3 варна , пишет сообщение что игрок забанен, и кикает его.А он просто перезаходит и бана нет.
Аккаунты не слетают , хз в чём может быть дело.И если давать последующие варны то будет 4/3 , 5/3 , 6/3 и так далее...
Варнов всего может быть 3.Игрок тупо перезаходит и всё нормально, играет не кому не мешая.
Также и с командой /ban , банишь игрока , он вылетает в чат пишет , что типо игрок забанен , а он просто перезайдёт и опять же спокойно играет.
Этот баг мне мешает делать мод дальше , я всё что мог делал , ничего не получалось.
Вот код команды /ban:
А вот код команды /warn:
Всем + кто поможет
У меня есть мод , за основу которого послужил РЛС.
И я обнаружил там очень не приятный баг с командой /warn и /ban.
Сначало объясню про команду /warn хотя суть бага у обеих команд одинакова.
Все вы знаете если у игрока будет 3 варны то его автоматически забанят.Но у меня не так...
Я выдаю 3 варна , пишет сообщение что игрок забанен, и кикает его.А он просто перезаходит и бана нет.
Аккаунты не слетают , хз в чём может быть дело.И если давать последующие варны то будет 4/3 , 5/3 , 6/3 и так далее...
Варнов всего может быть 3.Игрок тупо перезаходит и всё нормально, играет не кому не мешая.
Также и с командой /ban , банишь игрока , он вылетает в чат пишет , что типо игрок забанен , а он просто перезайдёт и опять же спокойно играет.
Этот баг мне мешает делать мод дальше , я всё что мог делал , ничего не получалось.
Вот код команды /ban:
PHP:
else if(strcmp(cmd, "/ban", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 2)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /ban [id] [причина]");
if (dostup[playerid] != 1) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Админ панель","Введите ключ от админки'","Ок","Отмена");
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(PlayerInfo[giveplayerid][pAdmin] > 0) return SendClientMessage(playerid, COLOR_GRAD2, "Нельзя забанить администратора!");
new ip[15];
GetPlayerIp(giveplayerid,ip,15);
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
new year1, month1, day1, hour1, minute1, second1;
getdate(year1, month1, day1);
gettime(hour1, minute1, second1);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /ban [id] [причина]");
new year, month,day;
new hour, minute, second;
getdate(year, month, day);
gettime(hour, minute, second);
PlayerInfo[giveplayerid][pLocked] = 1;
format(string, sizeof(string), "Vinzero Quest: %s был забанен администратором %s , причина: %s.",giveplayer,sendername (result));
SendClientMessageToAll(COLOR_LIGHTRED,string);
SendClientMessage(giveplayerid, COLOR_LIGHTRED,"Ваш аккаунт заблокирован. Подайте заявку на разбан на сайте: www.***********.ru");
SendClientMessage(giveplayerid, COLOR_WHITE, "Введите /q , для выхода!");
GetPlayerIp(giveplayerid,ip,sizeof(ip));
format(string, sizeof(string), "user/%s.ini",giveplayer);
new file = ini_openFile(string);
if(file < 0) print("нет файла");
else
{
ini_getString(file,"pIp",string);
ini_getString(file,"pIpReg",string);
printf("Найдено: %s, началось чтение файла с этим именем",string);
ini_closeFile(file);
format(string, sizeof(string), " Ник: [%s] | IP: [%s] | R: [IP: %s] | L: [IP: %s]",giveplayer,ip,string,string);
ABroadCast(COLOR_LIGHTRED,string,1);
PlayerInfo[giveplayerid][pLocked] = 1;
Kick(giveplayerid);
}
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Vinzero Quest : Игрок не найден!");
}
}
return 1;
}
PHP:
else if(strcmp(cmd, "/warn", true) == 0)
{
if (PlayerInfo[playerid][pAdmin] >= 2)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /warn [id] [причина]");
if (dostup[playerid] != 1) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Доступ администратора","Введите пароль от административной панели","Ок","Отмена");
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 2)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /warn [id] [причина]");
PlayerInfo[giveplayerid][pWarns] += 1;
if(PlayerInfo[giveplayerid][pWarns] >= 3)
{
new ip[256];
new year, month,day;
getdate(year, month, day);
format(string, sizeof(string), "Администратор %s забанил %s (3 WARN), причина: %s ", sendername,giveplayer, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
GetPlayerIp(giveplayerid,ip,sizeof(ip));
format(string, sizeof(string), "- Ник: [%s] IP: [%s]",giveplayer,ip);
ABroadCast(COLOR_LIGHTRED,string,1);
PlayerInfo[giveplayerid][pLocked] = 1;
PlayerInfo[giveplayerid][pMember] = 0;
PlayerInfo[giveplayerid][pLeader] = 0;
PlayerInfo[giveplayerid][pJob] = 0;
Kick(giveplayerid);
return 1;
}
format(string, sizeof(string), "Администратор %s выдал WARN %s. Причина: %s", sendername, giveplayer, (result));
SendClientMessageToAll(COLOR_LIGHTRED,string);
format(string, sizeof(string), "- Для снятия Warna подайте заявку в личном меню /mm - [8] Доступ к игре");
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
PlayerInfo[giveplayerid][pMember] = 0;
PlayerInfo[giveplayerid][pLeader] = 0;
PlayerInfo[giveplayerid][pJob] = 0;
OnPlayerUpdateRL(giveplayerid);
Kick(giveplayerid);
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Vinzero Quest: Игрок не найден!");
}
}
return 1;
}
