Xman4ik
Новичок
Добрый день, у меня ошибка, когда даю бан игроку в онлайне - бан работает, игрока кикает, в чат пишет кто дал и за что дал бан, а в БД все на оборот, пишет что игрок забанил админа и, игрок спокойно может заходить-поиграть, а админ после релога не может заходить, там написан что акк забанен, и по причине той по которой он забанил игрока, так же с /offban, в БД пишет что забанил админа.. Также при флуде /offban Ник Дни Причина - банит сперва админа, а потом по ID в БД всех игроков(по очередям)..
Я не шарю в этом, мб знает кто, помогите, буду благодарен, ниже коды
и
---------- Сообщение добавлено в 13:07 ---------- Предыдущее сообщение добавлено в 12:36 ----------
вот до и после релога
ID которого я забанил - 4
Мой ID в БД - 1
Я не шарю в этом, мб знает кто, помогите, буду благодарен, ниже коды
HTML:
if(!strcmp(cmd,"/ban",true))
{
if(pData[playerid][pAdmin] < 4) return 1;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) || !isNumeric(tmp)) return SendClientMessage(playerid,CGRAY,"Используйте: /ban [id игрока] [к-во дней] [причина]");
new id = strval(tmp);
if(!IsPlayerConnected(id) || IsKicked(id)) return SendClientMessage(playerid,CGRAY,"Неверный ID");
if(!strcmp(pData[id][pNickname], DEVELOPER, true)) return true;
if(!pData[id][pMysqlID])
{
KickEx(id);
return SendClientMessage(playerid,CGRAY,"Этот игрок не зарегистрирован, поэтому был кикнут");
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) || !isNumeric(tmp)) return SendClientMessage(playerid,CGRAY,"Используйте: /ban [id игрока] [к-во дней] [причина]");
new time = strval(tmp);
if(time < 1 || time > 30 && pData[playerid][pAdmin] < 5) return SendClientMessage(playerid,CGRAY,"Неверное к-во дней");
if(time < 0 || time > 30 && pData[playerid][pAdmin] >= 5) return SendClientMessage(playerid,CGRAY,"Неверное к-во дней");
tmp = strrest(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"Используйте: /ban [id игрока] [к-во дней] [причина]");
if(IsIpFound(tmp) || CheckString(tmp))
{
pData[playerid][pAdmin] = 0;
UpdatePlayerData(playerid, "admin", pData[playerid][pAdmin]);
PlayerGetsChatBan(playerid, tmp);
return true;
}
new mes[128];
format(mes,sizeof(mes),"Администратор %s забанил игрока %s на %d дней. Причина: %s",pData[playerid][pNickname],pData[id][pNickname],time,tmp);
SendAdminMessage(COLOR_LIGHTRED,mes);
ServerBan(playerid,id,time,tmp);
}
HTML:
if(!strcmp(cmd,"/offban",true))
{
if(pData[playerid][pAdmin] < 4) return 1;
tmp = strtok(cmdtext, idx);
new mes[128];
if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"Используйте: /offban [ник] [к-во дней] [причина]");
new account[24]; format(account, 24, "%s", tmp);
if(!strcmp(account, DEVELOPER, true)) return true;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) || !isNumeric(tmp)) return SendClientMessage(playerid,CGRAY,"Используйте: /offban [ник] [кол-во дней] [причина]");
new time = strval(tmp);
if(time < 1 || time > 30) return SendClientMessage(playerid,CGRAY,"[Ошибка]: Неверное кол-во дней");
tmp = strrest(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"Используйте: /offban [ник] [кол-во дней] [причина]");
if(IsIpFound(tmp) || CheckString(tmp))
{
pData[playerid][pAdmin] = 0;
UpdatePlayerData(playerid, "admin", pData[playerid][pAdmin]);
PlayerGetsChatBan(playerid, tmp);
return true;
}
sql_escape_string(dbserv, account,account, 24);
format(mes,sizeof(mes),"SELECT id FROM `accounts` WHERE `nickname` = '%s'",account);
new Result:r = sql_query(dbserv, mes, QUERY_CACHED);
if(!sql_num_rows(r)) return SendClientMessage(playerid, COLOR_LIGHTRED, "[Ошибка]: Игрок с таким именем не найден в базе.");
new id = sql_get_field_int(r, 0);
ServerBan(playerid,id,time,tmp);
sql_free_result(r);
format(mes,sizeof(mes),"Игрок %s получил оффлайн бан на %i дней от Администратора %s. Причина: %s",account,time,pData[playerid][pNickname],tmp);
SendAdminMessage(COLOR_LIGHTRED,mes);
return true;
}
---------- Сообщение добавлено в 13:07 ---------- Предыдущее сообщение добавлено в 12:36 ----------
вот до и после релога
ID которого я забанил - 4
Мой ID в БД - 1
