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

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

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

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

Способ заморозки игрока с помощью диалогового окна!

Статус
В этой теме нельзя размещать новые ответы.
Итак создаём массив!
PHP:
new FreezeTime[MAX_PLAYERS];
PHP:
public OnPlayerConnect(playerid)
{
   FreezeTime[playerid] = 0;
   return 1;
}
Теперь нам надо заморозить игрока!

PHP:
FreezeTime[playerid] = 30; 
ShowPlayerDialog(playerid, 777 , DIALOG_STYLE_MSGBOX,"{FF0000}Тут нельзя драться"Это зелёная зона! ","Ок","Закрыть");

Время заморозки установили на 30 и вывели ему диалоговое окно номер 777.


Теперь рассмотрим колбек обработки окошек.

Для начала избавимся от возможного багоюза.

PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{ 

if(FreezeTime[playerid] != 0)
{
    ShowPlayerDialog(playerid, 777 , DIALOG_STYLE_MSGBOX,"{FF0000}Тут нельзя драться"Это зелёная зона ","Ок","Закрыть!");    
    return 1;
}
Теперь игрок не сможет освободиться, вызвав какое-нибудь другое окно. Если игрок заморожен, то любая его попытка вызвать какое-либо окно вызовет наш замораживающий диалог.


Теперь напишем обработчик для собственно нашей таблички.
В том же паблике, в котором мы поставили защиту от багоюза мы делаем следующее.

PHP:
if(dialogid == 777)
    {
       if(FreezeTime[playerid] != 0)
                ShowPlayerDialog(playerid, 777 , DIALOG_STYLE_MSGBOX,"{FF0000}Тут нельзя драться" , "Это зелёная зона! ","Ок","Закрыть!");
          return 1;
    }
Что бы игрок не нажал в табличке, какой бы он клавишей не пытался закрыть ее - диалог среагирует следующим образом: если время заморозки отлично от нуля - он снова выведет табличку.


Осталось написать механизм, который будет убавлять время заморозки. С этой задачей справится самый обычный таймер. Уроки по таймеру я видел в этом разделе, поэтому процесс их создания я описывать не буду.

В код таймера необходимо поместить следующий код. Таймер должен работать с интервалом в 1 секунду (ну или минуту, если скриптер захочет сделать поминутную заморозку)

PHP:
If(FreezeTime[playerid] > 0)
   FreezeTime[playerid]--;

else if (FreezeTime[playerid] < 0)
   FreezeTime[playerid] = 0;

Автор By dimka)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу