Вопросы

Здравствуйте, у лидеров есть в панели 'Игроки оффлайн',  и там можно листать вперед-назад, но проблема в том что листать вперед можно до бесконечности, даже если там нет строк, сам без понятия как сделать проверку, прошу помощи.

 

Спойлер

CMD:lmenu(playerid)
{
	if(!PlayerInfo[playerid][pLeader]) return true;
	switch(PlayerInfo[playerid][pLeader])
	{
		case 12,15,17,18,13: return SPD(playerid, 8383, DIALOG_STYLE_LIST, "{FFCC00}Меню лидера банды","{FFFFFF}1. Оффлайн список игроков\n2. Спавн транспорта организации","Принять","Выход");
		case 23,1,4,7,10,16,19,22,24,21,25: return SPD(playerid, 8383, DIALOG_STYLE_LIST, "{FFCC00}Меню лидера:","{FFFFFF}1. Оффлайн список игроков","Принять","Выход");
		case 5,6,14: return SPD(playerid,5873,DIALOG_STYLE_LIST,"{FFCC00}Меню притона","{FFFFFF}1. Нанять нового работника\n2. Уволить работника\n3. Информация о притоне\n4. Оффлайн список игроков", "Далее","Отмена");
		case 26: return SPD(playerid, 9659, DIALOG_STYLE_LIST,"{FFCC00}Меню правительства:","{FFFFFF}1. Оффлайн список игроков\n2. Управление экономикой","Принять","Выход");
	}
	return true;
}

 

Спойлер

case 8383:
		{
			if(!response) return true;
			switch(listitem)
			{
			case 0:
				{
				    new string[164];
					mysql_format(connects,string, MAX_STR,"SELECT `pLevel`,`pMember`,pRank,`age`,`Name`,pGetonDate,`id` FROM `accounts` WHERE `pMember` = '%d'",PlayerInfo[playerid][pMember]);
					mysql_tquery(connects,string, "offmember", "dd",playerid,0);
				}
			case 1:
				{
					if(GetPVarInt(playerid, #spawn_gettime) > gettime()) return error(playerid, "Спавнить авто можно только с интервалом две минуты!");
					if(PlayerInfo[playerid][pLeader] == 12)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= ballascar[0] && i <= ballascar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 13)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= vagoscar[0] && i <= vagoscar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 15)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= grovecar[0] && i <= grovecar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 17)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= coronoscar[0] && i <= coronoscar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 18)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= rifacar[0] && i <= rifacar[1]) SetVehicleToRespawn(i);
					}
					new string[100];
					format(string, 100, "Лидер организации %s зареспавнил весь незанятый транспорт Вашей организации!", PlayerInfo[playerid][pNames]);
					SendFamilyMessage(PlayerInfo[playerid][pMember], COLOR_BLUE, string);
					SetPVarInt(playerid, #spawn_gettime, gettime()+120);
				}
			}
		}

 

Спойлер

publics: offmember(playerid,page)
{
	new f,d;
	cache_get_data(f,d);
	if(!f) return true;
	new nicks[24],lastvhod[30],name[50],rank,level,fraction,id_acc;
	new string[2048];
	StringName[StringList] = -1, StringList = 0, DeletePVar(playerid, #name_string);
	format(string, sizeof(string),"{FFFFFF}Имя Фамилия\t{FFFFFF}Звание/Ранг\t{FFFFFF}Возраст\t{FFFFFF}Последний вход\n{FFCC00}Перейти на следующую страницу\nПерейти на предыдущую страницу{FFFFFF}\n");
	new	get = page*15;
 	for(new i = get; i < f; i++)
	{
	    if(i > page*15+14) break;
		cache_get_field_content(i, "Name", nicks, connects, sizeof ( nicks ));
		id_acc = cache_get_field_content_int(i, "id", connects);
		fraction = cache_get_field_content_int(i, "pMember", connects);
		rank = cache_get_field_content_int(i, "pRank", connects);
		level = cache_get_field_content_int(i, "age", connects);
		cache_get_field_content(i, "pGetonDate", lastvhod, connects, sizeof ( lastvhod ));
		StringName[StringList] = id_acc, StringList++;
		format(string,sizeof(string), "%s%d. %s\t[{FFCC00}%s(%d){FFFFFF}]\t[{FFCC00}%d {FFFFFF}лет/год(-а)]\t[{FFCC00}%s{FFFFFF}]\n",string,i+1,nicks,PlayerRank[fraction-1][rank-1],rank,level,lastvhod);
	}
	SetPVarInt(playerid, #page_str, page+1);
	format(name, sizeof(name), "{FFCC00}Страница номер: %d", GetPVarInt(playerid, #page_str));
	SPD(playerid, 758, DIALOG_STYLE_TABLIST_HEADERS, name, string, "Принять", "Отмена");
	return true;
}

 

Спойлер

case 758:
		{
			if(!response) return DeletePVar(playerid, #page_str);
			new link = listitem, string[MAX_STR];
			if(link == 0 || link == 1)
			{
				new page;
				if(!link) page = GetPVarInt(playerid, #page_str);
				else if(link == 1) page = GetPVarInt(playerid, #page_str)-2;
				if(link == 1 && page == -1) return error(playerid, "Страниц больше нет!");
				mysql_format(connects,string, MAX_STR,"SELECT `pLevel`,`pMember`,pRank,`age`,`Name`,pGetonDate,`id` FROM `accounts` WHERE `pMember` = '%d'",PlayerInfo[playerid][pMember]);
				mysql_tquery(connects,string, "offmember", "dd",playerid,page);
			}
			if(link >= 2)
			{
				StringList = link-2;
				mysql_format(connects,string, MAX_STR,"SELECT `Name`,`pGetonDate`,`pRank`,`pMember` FROM `accounts` WHERE `id` = '%d'",StringName[StringList]);
				mysql_tquery(connects,string, "offstats", "dd", playerid,StringName[StringList]);
			}
		}

 

 

Отредактировано пользователем Andy

Поделиться сообщением


Ссылка на сообщение

6 ответов на этот вопрос

  • 0

Не забывай про оператор break;
 

case 8383:
		{
			if(!response) return true;
			switch(listitem)
			{
			case 0:
				{
				    new string[164];
					mysql_format(connects,string, MAX_STR,"SELECT `pLevel`,`pMember`,pRank,`age`,`Name`,pGetonDate,`id` FROM `accounts` WHERE `pMember` = '%d'",PlayerInfo[playerid][pMember]);
					mysql_tquery(connects,string, "offmember", "dd",playerid,0);
                    break;
				}
			case 1:
				{
					if(GetPVarInt(playerid, #spawn_gettime) > gettime()) return error(playerid, "Спавнить авто можно только с интервалом две минуты!");
					if(PlayerInfo[playerid][pLeader] == 12)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= ballascar[0] && i <= ballascar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 13)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= vagoscar[0] && i <= vagoscar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 15)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= grovecar[0] && i <= grovecar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 17)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= coronoscar[0] && i <= coronoscar[1]) SetVehicleToRespawn(i);
					}
					if(PlayerInfo[playerid][pLeader] == 18)
					{
						forveh(i) if(!IsVehicleOccupied1(i) && i >= rifacar[0] && i <= rifacar[1]) SetVehicleToRespawn(i);
					}
					new string[100];
					format(string, 100, "Лидер организации %s зареспавнил весь незанятый транспорт Вашей организации!", PlayerInfo[playerid][pNames]);
					SendFamilyMessage(PlayerInfo[playerid][pMember], COLOR_BLUE, string);
					SetPVarInt(playerid, #spawn_gettime, gettime()+120);
                    break;
				}
			}
		}

табуляция сбилась, подправь чуть сам уже

Отредактировано пользователем #byte

Поделиться сообщением


Ссылка на сообщение
  • 0
1 час назад, Andy сказал:

@#byte не помогло ;(

Это и не должно помочь)
Дело у тебя в проверке, скорее не правильно реализована

 

case 758 прокомментируй.
 

Отредактировано пользователем #byte

Поделиться сообщением


Ссылка на сообщение
  • 0
2 часа назад, #byte сказал:

Не забывай про оператор break;

В PAWN он только для циклов

Поделиться сообщением


Ссылка на сообщение
  • 0

@DEST 

29 минут назад, DEST сказал:

В PAWN он только для циклов

В Pawn давно уже не обитаю. Исходил из логики "Си" языка.
По сути выход из области видимости case здесь тоже должен работать (я про break)
Ибо если break не поставить он продолжит исполнять инструкции из других кейсов в области видимости этого switch

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@#byte в Pawn это не так, можете сами проверить. Как только он находит совпадающий case, он заканчивает выполнение switch на нем. 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите 
       
    • nazpol9
      От nazpol9
      Привет всем.

      У меня имеется мод для самп сервера и VPS с Ubuntu, на котором я пытаюсь его запустить.

      В чем суть проблемы: при запуске samp03svr, сервер запускается, но на версии 0.3.DL R-1. Когда я пытаюсь запустить этот же мод локально на Windows, сервер работает на версии 0.3.7 и я могу зайти на него без клиента 0.3.DL.

      Для решения этой проблемы я уже пробовал заменять инклуды и исполнительные файлы теми, что есть в архивах на официальном сайте сампа, перекомпилировал мод, и ничего не изменилось.
       
      #include <a_samp> #include <a_mysql> #include <foreach> #include <Pawn.RakNet> #include <streamer> #include <sscanf2> #include <float2> #include <crashdetect> #include <fmt> #include <a_http> #include <Pawn.CMD> #include <Pawn.Regex> #include <requests> #include <callbacks> #include <MD5> #include <mxdate> #include <TOTP> #include <gvar> #include <md-sort> #include <nex-ac> #include <weapon-config> #include <discord-connector> #include <3DTryg> #include <textdraw-streamer>  
      plugins crashdetect.so streamer.so textdraw-streamer.so sscanf.so pawnraknet.so pawncmd.so mysql.so requests.so profiler.so pawnregex.so TOTP.so gvar.so discord-connector.so

      Если у кого-то будут какие-либо догадки, прошу ими поделиться, если понадобится больше информации - я постараюсь её предоставить.