Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Серъёзный баг с /warn and /ban

Статус
В этой теме нельзя размещать новые ответы.

Mike_Casto

Умник
Здравствуйте уважаемые пользователи pawno-info.
У меня есть мод , за основу которого послужил РЛС.
И я обнаружил там очень не приятный баг с командой /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;
	}
А вот код команды /warn:
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;
	}
Всем + кто поможет
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу