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

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

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

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

Мануал Создание очереди (для любых целей)

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

Aimfake

Ученик
Всем привет! Сегодня я хочу вам продемонстрировать урок очереди для каких любо целей.

В начало ставим ко всем new, enum и так далее:

PHP:
enum Ochered
{
	OcheredID,
	OcheredName[MAX_PLAYER_NAME]
};
new OcheredInfo[10][OcheredInfo];
new TOTALOchered = 0;
new TimerOn;
new TimerOchered;
new pickup[2]
в
PHP:
public OnGameModeInit
вставляем:

PHP:
	for(new i; i < 10; i++)
	{
		OchredInfo[i][OchredID] = -1;
		strmid (OchredInfo[i][OchredName],"None", 0, strlen("None"), 5);
	}
Далее в
PHP:
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
PHP:
	else if(pickupid == pickup[0])
	{
	    if(OcheredInfo[TOTALOchered ][OcheredID] == playerid) return scm(playerid,-1,"Ошибка: Вы уже стали в очередь");
		if(TOTALOchered >= 5) return SendClientMessage(playerid,0xA020F0FF,"Очередь полна");
		TOTALOchered ++;
		OcheredInfo[TOTALOchered ][OcheredID] = playerid;
		strmid(OcheredInfo[TOTALOchered ][OcheredName],p_info[playerid][p_name],0,strlen(p_info[playerid][p_name]), 32);
		SendClientMessage(playerid,0xA020F0FF,"Вы стали в очередь, ожидайте пока она дойдет до вас.");
		if(TOTALOchered == 1)
		{
				SendClientMessage(playerid,0xA020F0FF,"Вы являетесь первым в списке а дальше свой текст.");
				TimerOchered= SetTimer("OcheredAdd", 200000, 0); // через 200000 секунд первый в списке очереди удалится
				SetPVarInt(playerid, "Test", 1); // свой PVar
				TimerOn = 1;
		}
		return true;
	}
	else if(pickupid == pickup[1])
	{
		if(TOTALOchered == 0) return SendClientMessage(playerid,0xA020F0FF,"Очередь пуста");
		new string2[1550];
		format(string2,sizeof(string2), "1. %s\t\tID: %d\n2. %s\t\tID: %d\n3. %s\t\tID: %d\n4. %s\t\tID: %d\n5. %s\t\tID: %d",
		OcheredInfo[1][OcheredName],OcheredInfo[1][OcheredID],OcheredInfo[2][OcheredName],OcheredInfo[2][OcheredID],OcheredInfo[3][OcheredName],OcheredInfo[3][OcheredID],OcheredInfo[4][OcheredName],OcheredInfo[4][OcheredID],
		OcheredInfo[5][OcheredName],OcheredInfo[5][OcheredID]);
		ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX, "Очередь",string2, "Готово", "");
	}
далее в конец мода или ко всем Publicam

PHP:
forward OcheredAdd();
public OcheredAdd()
{
	if(!strcmp(p_info[OcheredInfo[1][OcheredID]][p_name],OcheredInfo[1][OcheredName],true)) DisablePlayerCheckpoint(OcheredInfo[1][OcheredID]);
	if(TimerOn == 1) KillTimer(TimerOchered), TimerOn = 0;
	for(new i = 1; i <= TOTALOchered -1; i++)
	{
	    OcheredInfo[i][OcheredID] = OcheredInfo[i+1][OcheredID];
 		strmid(OcheredInfo[i][OcheredName],OcheredInfo[i+1][OcheredName],0,strlen(OcheredInfo[i+1][OcheredName]), 50);
 		OcheredInfo[i+1][OcheredID] = -1;
		strmid (OcheredInfo[i+1][OcheredName],"None", 0, strlen("None"), 32);
	}
	TOTALOchered --;
	if(TOTALOchered  > 0)
	{
		if(strcmp(p_info[OcheredInfo[1][OcheredID]][p_name],OcheredInfo[1][OcheredName],true) != 0) return TuneAdd();
		else
		{
			SendClientMessage(OcheredInfo[1][OcheredID],0xA020F0FF,"Ваша очередь настала. Делайте то или то");
			TimerOchered= SetTimer("OcheredAdd", 200000, 0);  // через 200000 секунд первый в списке очереди удалится
			TimerOn = 1;
			SetPVarInt(OcheredInfo[1][OcheredID], "Test", 1); // тут замените на свой PVar
		}
	}
	return true;
}
Если вы хотите сократить 200000 секунд до следующего удаления. Тогда в нужной функции поставьте OcheredAdd(); и список выкинет первого и передвнет всех на верх


услуги http://pawno-info.ru/showthread.php?t=251611
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу