Доступ к готовым решениям

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

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

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

Список с несколькими страницами

AndreY.eXe

Эксперт
Пользователь
Регистрация
16 Сен 2017
Сообщения
1,327
Лучшие ответы
0
Репутация
241
Привет!

Что ж, вот и пришло время, когда я напишу, хоть одну команду :ce:
Похожие команды у меня заказывали не раз, и вот, я хочу показать всем, как это делать.
Сразу скажу, что эта команда связяна с MySQL. Я использую r41-4.

Не много о команде на примере...:
- Допустим, Вам нужно в окне перечислить всех игроков, которые зарегистрированы на Ваш ник. В одном окне будет по 10 игроков, если их будет больше, то появится новая строка/кнопка "Далее...", перейдя по которой, Вам будет показаны еще игроки, которые зарегистрированы на Ваш ник (так же макс 10) и строка/кнопка "Назад...", чтобы вернуться к предыдущим 10-ти игрокам.​

Что ж, я все объяснил и по-этому, для начала я опишу все переменные, которые Вам не обходимо заменить на свои:
Переменные мода (заменяются в самом моде)
PHP:
mysql // Переменная базы данных
Переменные базы данных (заменяются в базе данных: определенной таблице)
PHP:
accounts // Таблица аккаунтов в базе сервере
Name // Переменная ника аккаунта в таблице аккаунтов
Referal // Переменная реферала аккаунта в таблице аккаунтов

Код всего этого дела:
PHP:
// Начало мода
static
	TotalPlayers[MAX_PLAYERS],
	bool: FirstOpenCMD[MAX_PLAYERS],
	LastPlayers[MAX_PLAYERS],
	TotalPlayersCount[MAX_PLAYERS];
#define dialog_referals 777 // Если у Вас уже есть такой диалог - изменяйте



// OnPlayerConnect
	FirstOpenCMD[playerid] = false;



// Конец мода
cmd:referals(playerid)
{
	if(!FirstOpenCMD[playerid])
	{
		TotalPlayers[playerid] =
		TotalPlayersCount[playerid] = 0;
	}

	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid, name, MAX_PLAYER_NAME);

	static const mysql_str[] = "select Name from accounts where Referal = '%s' limit %i, 10";
	new mysql_string[sizeof(mysql) + MAX_PLAYER_NAME + 3];

	format(mysql_string, sizeof(mysql_string), mysql_str, name, TotalPlayers[playerid]);
	mysql_query(mysql, mysql_string);

	if(!cache_num_rows())return SendClientMessage(playerid, -1, "На Ваш ник никто не регистрировался!");

	new 
		player_name[MAX_PLAYER_NAME],
		players_string[25 + MAX_PLAYER_NAME + 2],
		total_string[(sizeof(players_string) * 10) + 29 + (17*2)];

	strcat(total_string, "{ffffff}Номер\t{ffffff}Имя\n");
	for(new i; i < cache_num_rows(); i ++)
	{
		cache_get_value_index(i, 0, player_name, MAX_PLAYER_NAME);

		format(players_string, sizeof(players_string), "{ffffff}%d\t{24c697}%s\n", TotalPlayersCount[playerid] + 1, player_name);
		strcat(total_string, players_string);

		TotalPlayersCount[playerid] ++;
	}

	TotalPlayers[playerid] += cache_num_rows();
	LastPlayers[playerid] = cache_num_rows();
	if(cache_num_rows() == 10) strcat(total_string, "{24c697}Далее...\n");
	if(FirstOpenCMD[playerid] && TotalPlayers[playerid] > 10) strcat(total_string, "{afafaf}Назад...");

	if(!FirstOpenCMD[playerid]) FirstOpenCMD[playerid] = true;

	return ShowPlayerDialog(playerid, dialog_referals, 5, "Ваши рефералы", total_string, "Выбрать", "Отмена");
}



// OnDialogResponse (Если через switch(dialogid))
		case dialog_referals:
		{
			if(!response)return FirstOpenCMD[playerid] = false;

			if(!strcmp(inputtext, "Далее...", false) || !strcmp(inputtext, "Назад...", false))
			{
				if(!strcmp(inputtext, "Назад...", false)) TotalPlayers[playerid] -= (10 + LastPlayers[playerid]);
				callcmd::referals(playerid);
			}
			else FirstOpenCMD[playerid] = false;
		}


// OnDialogResponse (Если через if(dialogid ==))
	if(dialogid == dialog_referals)
	{
		if(!response)return FirstOpenCMD[playerid] = false;

		if(!strcmp(inputtext, "Далее...", false) || !strcmp(inputtext, "Назад...", false))
		{
			if(!strcmp(inputtext, "Назад...", false)) TotalPlayers[playerid] -= (10 + LastPlayers[playerid]);
			callcmd::referals(playerid);
		}
		else FirstOpenCMD[playerid] = false;
	}

// Анти-сбив диалога (OnDialogResponse)
	if(dialogid != dialog_referals && FirstOpenCMD[playerid]) FirstOpenCMD[playerid] = false;




*Если что-то не так работает, или что-то не понятно - пишите в тему.
*Если Вы не можете сами перевести на свою версию MySQL - сделаю за не большую плату.
*Если Вы не можете переделать команду под себя - сделаю за плату.
 
Последнее редактирование:
Сверху Снизу