Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Запрет на команды, когда открыт диалог - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Запрет на команды, когда открыт диалог
Оценка: -----

#1
Пользователь офлайн   Free 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Добрый день!
Вот нашел на другом сайте этот урок и решил выложить нам!

Ко всем enum pTemp добавляем.
bool:pDialog

Далее.
Создаем stock
stock ShowPlayerDialogEx(playerid,dialogid,style,caption[],info[],button1[
],button2[])
{ 
       pTemp[playerid][pDialog] = true; 
       return ShowPlayerDialog(playerid,dialogid,style,caption,info,button1,button2); 
}

После в
В public OnPlayerCommandText(playerid, cmdtext[]) добавляем
if(pTemp[playerid][pDialog]) return SendClientMessage(playerid,CGRAY,"Нельзя использовать команды, пока открыт диалог");

Далее в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
pTemp[playerid][pDialog] = false;

Все, теперь при открытом диалоговом окне игрок не введет какую либо команду, и не откроет какое либо диалоговое окно.Всем удачи!

Сообщение отредактировал Free: 16 Май 2014 - 17:11

3

#2
Пользователь офлайн   Free 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Comments :D
0

#3
Пользователь офлайн   Free 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
mxINI, за что -?
0

#4
Пользователь офлайн   iRusel 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Вообще полезная тема.

Только можно использовать чуть по другому.

Добавим:
stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
	ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
	SetPVarInt(playerid,"Dialogid", dialogid);
	return true;
}


В public OnDialogResponse:

if(GetPVarInt(playerid,"Dialogid") != dialogid) return 1;
DeletePVar(playerid, "Dialogid");


Для стандартных команд:
public OnPlayerCommandText(playerid, cmdtext[])

В самый верх
if(GetPVarInt(playerid, "Dialogid")) return 1;


Для команд ZCMD и подобных код выше в паблик:
public OnPlayerCommandReceived(playerid, cmdtext[])


Таким образом мы получаем защиту от подмены диалогов + запрет на команду когда открыто диалоговое окно.
Может быть полезно когда игроку показывается важный диалог в котором нужно сделать выбор без подобной защиты открыл ту же /stats и все.
2

#5
Пользователь офлайн   SwipoStyle 

  • Благодетель
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияiRusel (17 Май 2014 - 18:13) писал:

Таким образом мы получаем защиту от подмены диалогов


Не забудь античит на собейт поставить.
Фальсификация диалогов уже решена и никого не пугает.
1

#6
Пользователь офлайн   Free 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Спасибо Большое :D
0

#7
Пользователь офлайн   iRusel 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSwipoStyle сказал:

Фальсификация диалогов уже решена и никого не пугает.

На 0.3z самом первом релизе что-то не заметно было.
0

#8
Пользователь офлайн   Volcker 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Не работает
0

#9
Пользователь офлайн   111111111 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияFree (16 Май 2014 - 17:06) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

А если допустим человек захочет открыть инвентарь на кнопку клавы, он сможет открыть?
0

#10
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения111111111 (16 Июнь 2019 - 22:35) писал:

А если допустим человек захочет открыть инвентарь на кнопку клавы, он сможет открыть?


Пока открыт диалог, никакие клавиши, кроме Esc, F1-F12, Enter и ещё, возможно, парочки, не работают, так что нет.

Хотя в предложенном коде не учитывется, например, смерть, при которой диалог закрывается, но OnDialogResponse не вызывается.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика