HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1321  
Старый 01.04.2016, 20:53
2Shae
Участник форума
Регистрация: 14.05.2014
Сообщений: 149
С нами: 6314183

Репутация: 68
По умолчанию

Подскажите, пожалуйста, как создать и вызвать окно диалога? Через команду, к примеру.

Ладно, как создать понял. А как его при вводе команды показать то?
 
Ответить с цитированием

  #1322  
Старый 01.04.2016, 21:10
Woofing Giraffe
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами: 5744580

Репутация: 28
По умолчанию

Цитата:
Сообщение от 2Shae  

Подскажите, пожалуйста, как создать и вызвать окно диалога? Через команду, к примеру.
Ладно, как создать понял. А как его при вводе команды показать то?
Урок самый первый почитай
 
Ответить с цитированием

  #1323  
Старый 01.04.2016, 22:18
dimoz
Новичок
Регистрация: 13.12.2020
Сообщений: 0
С нами: 2851002

Репутация: 0
По умолчанию

Народ, есть ли способ как-либо заблокировать возможность движения мышки при прицеливании, используя SF API?

Я пробовал с помощью SetMouseSensitivity выставить сенс на 0.0, но это дало лишь замедление мыши.

Также пробовал с помощью registerWndProcCallback возращать false, когда шло сообщение WM_MOUSEMOVE - не помогло.

Помогите, пожалуйста.
 
Ответить с цитированием

  #1324  
Старый 01.04.2016, 22:37
2Shae
Участник форума
Регистрация: 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:
 
Ответить с цитированием

  #1325  
Старый 01.04.2016, 22:54
AWRage
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами: 5706781

Репутация: 43


По умолчанию

Цитата:
Сообщение от MISTER_GONWIK  

посмотри как работает меню собейта (dumb_menu.cpp)
Хорошо.
 
Ответить с цитированием

  #1326  
Старый 02.04.2016, 00:39
2Shae
Участник форума
Регистрация: 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. Чёт сам пытался, и ***.
 
Ответить с цитированием

  #1327  
Старый 02.04.2016, 10:56
Dark_Knight
Флудер
Регистрация: 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);

}
 
Ответить с цитированием

  #1328  
Старый 02.04.2016, 14:19
2Shae
Участник форума
Регистрация: 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");
        }
    }


Так и "должно" быть или я опять затупил с чем то?
 
Ответить с цитированием

  #1329  
Старый 02.04.2016, 14:36
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Юзай switch case конструкцию и логируй каждое действие.
 
Ответить с цитированием

  #1330  
Старый 02.04.2016, 20:06
Woofing Giraffe
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами: 5744580

Репутация: 28
По умолчанию

Не знаю, мб ебанутый способ, но я объявляю глобальную int, например DialogShow. Когда нужно открыть новый диалог присваиваю ей значение например 2, в мэйнлуп проверяю if(int DialogShow == 2), обнуляю её и вывожу новый диалог
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...