 |
|

01.04.2016, 20:53
|
|
Участник форума
Регистрация: 14.05.2014
Сообщений: 149
С нами:
6314183
Репутация:
68
|
|
Подскажите, пожалуйста, как создать и вызвать окно диалога? Через команду, к примеру.
Ладно, как создать понял. А как его при вводе команды показать то?
|
|
|

01.04.2016, 21:10
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от 2Shae
Подскажите, пожалуйста, как создать и вызвать окно диалога? Через команду, к примеру.
Ладно, как создать понял. А как его при вводе команды показать то?
Урок самый первый почитай
|
|
|

01.04.2016, 22:18
|
|
Новичок
Регистрация: 13.12.2020
Сообщений: 0
С нами:
2851002
Репутация:
0
|
|
Народ, есть ли способ как-либо заблокировать возможность движения мышки при прицеливании, используя SF API?
Я пробовал с помощью SetMouseSensitivity выставить сенс на 0.0, но это дало лишь замедление мыши.
Также пробовал с помощью registerWndProcCallback возращать false, когда шло сообщение WM_MOUSEMOVE - не помогло.
Помогите, пожалуйста.
|
|
|

01.04.2016, 22:37
|
|
Участник форума
Регистрация: 14.05.2014
Сообщений: 149
С нами:
6314183
Репутация:
68
|
|
Сообщение от Woofing Giraffe
Урок самый первый почитай
Окей, через команду работает. А как сделать через клавишу/клавиши?
Код:
Код:
if (SF->getGame()->isKeyPressed('B'))
{
SF->getSAMP()->getDialog()->ShowDialog(1, DIALOG_STYLE_LIST, "Название", "1\n2\n3\n4", "Выбрать", "Закрыть");
}
Его не выводит.:sad_frog2:
|
|
|

01.04.2016, 22:54
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Сообщение от MISTER_GONWIK
посмотри как работает меню собейта (dumb_menu.cpp)
Хорошо.
|
|
|

02.04.2016, 00:39
|
|
Участник форума
Регистрация: 14.05.2014
Сообщений: 149
С нами:
6314183
Репутация:
68
|
|
Сообщение от 2Shae
Окей, через команду работает. А как сделать через клавишу/клавиши?
Код:
Код:
if (SF->getGame()->isKeyPressed('B'))
{
SF->getSAMP()->getDialog()->ShowDialog(1, DIALOG_STYLE_LIST, "Название", "1\n2\n3\n4", "Выбрать", "Закрыть");
}
Его не выводит.:sad_frog2:
К этому всему, как правильно реализировать обработчик локальных диалогов? Что-то по типу OnDialogResponse в Pawn. Чёт сам пытался, и ***.
|
|
|

02.04.2016, 10:56
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Так выводит у тебя его или нет? И диалоги должны начинаться с ида 2. Первый ид - это справка на ф1.
Регистрация происходит таким образом.
void CALLBACK OnDialogRespond(int dialogId, int buttonId, int listItem, const char *input){ //Создаешь обработчик диалога
//some code
}
void mainloop(){
if(init)
//some code
SF->getSAMP()->registerDialogCallback(OnDialogRespond);
}
|
|
|

02.04.2016, 14:19
|
|
Участник форума
Регистрация: 14.05.2014
Сообщений: 149
С нами:
6314183
Репутация:
68
|
|
Сообщение от Dark_Knight
И диалоги должны начинаться с ида 2. Первый ид - это справка на ф1.
Бля, я начинал с 1... Теперь работает, но только первый диалог
Код:
Код:
SF->getSAMP()->getDialog()->ShowDialog(2, 2, "Название", "1\n2\n3", "Выбрать", "Закрыть");
Код:
Код:
if (dialogId == 2)
{
if (buttonId == 1)
{
if (listItem == 0) SF->getSAMP()->getChat()->AddChatMessage(-1, "1");
if (listItem == 1) SF->getSAMP()->getChat()->AddChatMessage(-1, "2");
if (listItem == 2) SF->getSAMP()->getChat()->AddChatMessage(-1, "3");
}
}
Но, если сделать при выборе какого-то пункта переход на другой диалог, то новый не выводит.
Код:
Код:
if (dialogId == 2)
{
if (buttonId == 1)
{
if (listItem == 0) SF->getSAMP()->getDialog()->ShowDialog(3, 2, "1 пункт", "1-1\n1-2\n1-3", "Выбрать", "Закрыть");
if (listItem == 1) SF->getSAMP()->getChat()->AddChatMessage(-1, "2");
if (listItem == 2) SF->getSAMP()->getChat()->AddChatMessage(-1, "3");
}
}
Так и "должно" быть или я опять затупил с чем то?
|
|
|

02.04.2016, 14:36
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Юзай switch case конструкцию и логируй каждое действие.
|
|
|

02.04.2016, 20:06
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Не знаю, мб ебанутый способ, но я объявляю глобальную int, например DialogShow. Когда нужно открыть новый диалог присваиваю ей значение например 2, в мэйнлуп проверяю if(int DialogShow == 2), обнуляю её и вывожу новый диалог
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|