Команда /ban и /warn - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: [CM]OlegEhtler, Getbackthere, Phoenixxx_Czar  
Команда /ban и /warn
Accardo Дата: Понедельник, 11.04.2016, 18:04 | Сообщение # 1
Новичок
Сообщений: 22
Статус: Offline
Всем привет, столкнулся с такой проблемой, команда /ban не банит игрока, а тупо его кикает.Вот сам код:
Код

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(!pData[id][pMysqlID])
  {
   NewKick(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 игрока] [Кол-во дней] [Причина]");
  new mes[128];
  ServerBan(playerid,id,time,tmp);
  format(mes,sizeof(mes),"Администратор %s забанил игрока %s на %d дней. Причина: %s",pData[playerid][pNickname],pData[id][pNickname],time,tmp);
  SendClientMessageToAll(COLOR_LIGHTRED,mes);
  NewKick(id);
    }


А теперь /warn, он как бы варнит игрока, но при 3\3 не банит.
Код

if(!strcmp(cmd,"/warn",true))
    {
  if(pData[playerid][pAdmin] < 4) return 1;
  tmp = strtok(cmdtext, idx);
  if(!strlen(tmp) || !isNumeric(tmp)) return SendClientMessage(playerid,CGRAY,"/warn [ID игрока] [Причина]");
  new id = strval(tmp);
  if(!IsPlayerConnected(id) || IsKicked(id)) return SendClientMessage(playerid,CGRAY,"Неверный  ID");
  if(!pData[id][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Данный игрок не авторизирован");
  tmp = strrest(cmdtext, idx);
  if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"/warn [ID игрока] [Причина]");
  new mes[128];
  format(mes,sizeof(mes),"/aunfjihaosj %d",id);
  OnPlayerCommandText(playerid,mes);
  new kol = pData[id][pWarnc]+1;
  if(kol < 3) format(mes,sizeof(mes),"Администратор %s выдал предупреждение игроку %s [%d/3]. Причина: %s",pData[playerid][pNickname],pData[id][pNickname],kol,tmp);
   if(kol-1 > 0) pData[id][pWarn] += WARN_TIME;
  else pData[id][pWarn] = gCurDay + WARN_TIME;
  pData[id][pWarnc] = kol;
  UpdatePlayerData(id,"warn",pData[id][pWarn]);
  UpdatePlayerData(id,"warnc",pData[id][pWarnc]);
  if(kol == 3)
  {
   pData[id][pWarn] = 0;
   pData[id][pWarnc] = 0;
   UpdatePlayerData(id,"warn",pData[id][pWarn]);
   UpdatePlayerData(id,"warnc",pData[id][pWarnc]);
   format(mes,sizeof(mes),"Администратор %s забанил игрока %s (3 Предупреждения). Причина: %s",pData[playerid][pNickname],pData[id][pNickname],tmp);
   ServerBan(playerid,id,5,tmp);
  }
  SendClientMessageToAll(COLOR_LIGHTRED,mes);
  NewKick(id);
    }


Stock CheckPlayerBan
Код

stock CheckPlayerBan(playerid)
{
    new query[128], time_unban, time_ban, reason[100], result[64];
    format(query, 128, "SELECT `time`, `reason` FROM `ban` WHERE `takeid` = '%d'",playerid);
    new Result:ban_data = sql_query(dbserv, query, QUERY_CACHED);
    if(sql_num_rows(ban_data))
    {
     sql_fetch_row(ban_data,"|",result);
        sscanf(result,"p<|>is[100]",time_ban,reason);
  time_unban = time_ban - gCurDay;
  if(time_ban <= 0) {
      format(query,sizeof(query),"DELETE FROM `ban` WHERE `takeid` = '%d'",playerid);
      sql_query(dbserv,query);
  }
  else {
      new string[300];
   if(time_ban == -1) format(string,sizeof(string),"{"#cW"}Причина блокировки: %s\n\nВведите {"#cBRIGHTRED"}/q (/quit) {"#cW"}чтобы выйти.",reason);
   else format(string,sizeof(string),"{"#cW"}: %s\nПричина блокировки: %d äíåé\n\nВведите {"#cBRIGHTRED"}/q (/quit) {"#cW"}чтобы выйти.",reason,time_unban);
   ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"{"#cRE"}Этот аккаунт заблокирован",string,"Закрыть","");
   sql_free_result(ban_data);
   NewKick(playerid);
   return true;
  }
    }
    return false;
}


Сообщение отредактировал Accardo - Понедельник, 11.04.2016, 18:18
=) Дата: Понедельник, 11.04.2016, 18:19 | Сообщение # 2
Боец
Сообщений: 271
Статус: Offline
Цитата Accardo ()
ServerBan(playerid,id,time,tmp);
блокировку производит этот сток, а не чекбан.

проверку по варну делай так:
Код

if(kol > 2)
{
    ban
    return 1;
}
else
{
    warn
    return 1;
}


Скорее всего в обоих вариантах просто не сохраняются параметры в MySQL. Проверяй папку с сервером, уверен там должен быть файл mysql_log.txt подтверждающий мои слова.
Accardo Дата: Понедельник, 11.04.2016, 18:31 | Сообщение # 3
Новичок
Сообщений: 22
Статус: Offline
Цитата =) ()
проверку по варну делай так:

Можешь скинуть /warn с такой проверкой, просто времени мало сейчас + я в PAWNO начинающий и легко могу накосячить...
=) Дата: Понедельник, 11.04.2016, 18:38 | Сообщение # 4
Боец
Сообщений: 271
Статус: Offline
Accardo, примерно так:
Код

if(!strcmp(cmd,"/warn",true))
{
    if(pData[playerid][pAdmin] < 4) return 1;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp) || !isNumeric(tmp)) return SendClientMessage(playerid,CGRAY,"/warn [ID игрока] [Причина]");
    new id = strval(tmp);
    if(!IsPlayerConnected(id) || IsKicked(id)) return SendClientMessage(playerid,CGRAY,"Неверный  ID");
    if(!pData[id][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Данный игрок не авторизирован");
    tmp = strrest(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,CGRAY,"/warn [ID игрока] [Причина]");
    new mes[128];
    format(mes,sizeof(mes),"/aunfjihaosj %d",id);
    OnPlayerCommandText(playerid,mes);
    new kol = pData[id][pWarnc]+1;
    if(kol < 3) format(mes,sizeof(mes),"Администратор %s выдал предупреждение игроку %s [%d/3]. Причина: %s",pData[playerid][pNickname],pData[id][pNickname],kol,tmp);
    if(kol-1 > 0) pData[id][pWarn] += WARN_TIME;
    else pData[id][pWarn] = gCurDay + WARN_TIME;
    pData[id][pWarnc] = kol;
    if(kol > 2)
    {
        pData[id][pWarn] = 0;
        pData[id][pWarnc] = 0;
        UpdatePlayerData(id,"warn",pData[id][pWarn]);
        UpdatePlayerData(id,"warnc",pData[id][pWarnc]);
        format(mes,sizeof(mes),"Администратор %s забанил игрока %s (3 Предупреждения). Причина: %s",pData[playerid][pNickname],pData[id][pNickname],tmp);
        ServerBan(playerid,id,5,tmp);
    }
    else
    {
        UpdatePlayerData(id,"warn",pData[id][pWarn]);
        UpdatePlayerData(id,"warnc",pData[id][pWarnc]);
    }
    SendClientMessageToAll(COLOR_LIGHTRED,mes);
    NewKick(id);
    return 1;
}


П.С. Команда просто ужас. Даже страшно подумать, что у тебя за мод. И да, если ошибка с MySQL, как я и писал раньше - то это не поможет, ведь проблема в сохранении.
Accardo Дата: Понедельник, 11.04.2016, 18:44 | Сообщение # 5
Новичок
Сообщений: 22
Статус: Offline
Цитата =) ()
П.С. Команда просто ужас. Даже страшно подумать, что у тебя за мод. И да, если ошибка с MySQL, как я и писал раньше - то это не поможет, ведь проблема в сохранении.

А есть какой-то выход из данной ситуации? Вроде все в базе сохраняется, как баню, сразу в таблице появляется строчка.


Сообщение отредактировал Accardo - Понедельник, 11.04.2016, 18:46
=) Дата: Понедельник, 11.04.2016, 18:55 | Сообщение # 6
Боец
Сообщений: 271
Статус: Offline
Accardo, Естественно есть. Файл о котором я писал появляется?
Кстати, при варне появляется надпись "забанил" когда должен банить по причине 3/3 варнов или вообще ничего не происходит?


Сообщение отредактировал =) - Понедельник, 11.04.2016, 19:04
Accardo Дата: Понедельник, 11.04.2016, 20:47 | Сообщение # 7
Новичок
Сообщений: 22
Статус: Offline
Цитата =) ()
Accardo, Естественно есть. Файл о котором я писал появляется?
Кстати, при варне появляется надпись "забанил" когда должен банить по причине 3/3 варнов или вообще ничего не происходит?

Все оно пишет, только не банит.
  • Страница 1 из 1
  • 1
Поиск: