Другое SAMPFUNCS | API C++

2Shae

Известный
149
8
Подскажите, пожалуйста, как создать и вызвать окно диалога? Через команду, к примеру.
Ладно, как создать понял. А как его при вводе команды показать то?
 
Последнее редактирование:

Dimoz

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

2Shae

Известный
149
8
Урок самый первый почитай
Окей, через команду работает. А как сделать через клавишу/клавиши?
Код:
if (SF->getGame()->isKeyPressed('B'))
{
SF->getSAMP()->getDialog()->ShowDialog(1, DIALOG_STYLE_LIST, "Название", "1\n2\n3\n4", "Выбрать", "Закрыть");
}
Его не выводит.:sad_frog2:
 

2Shae

Известный
149
8
Окей, через команду работает. А как сделать через клавишу/клавиши?
Код:
if (SF->getGame()->isKeyPressed('B'))
{
SF->getSAMP()->getDialog()->ShowDialog(1, DIALOG_STYLE_LIST, "Название", "1\n2\n3\n4", "Выбрать", "Закрыть");
}
Его не выводит.:sad_frog2:
К этому всему, как правильно реализировать обработчик локальных диалогов? Что-то по типу OnDialogResponse в Pawn. Чёт сам пытался, и хуй.
 
Последнее редактирование:

Dark_Knight

Me, me and me.
Друг
4,078
2,095
Так выводит у тебя его или нет? И диалоги должны начинаться с ида 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);
}
 

2Shae

Известный
149
8
И диалоги должны начинаться с ида 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");
        }
    }
Так и "должно" быть или я опять затупил с чем то?
 

Woofing Giraffe

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

2Shae

Известный
149
8
логируй каждое действие.
Kak?
Только заметил проблемку...
Код:
SF->getSAMP()->getDialog()->ShowDialog(101, 2, "Название", "1\n2\n3", "Выбрать", "Закрыть");
Код:
switch (dialogId)
    {
        case 101:
        {
            if (buttonId == 1)
            {
                if (listItem == 0) SF->getSAMP()->getChat()->AddChatMessage(-1, "1-1.");
                if (listItem == 1) SF->getSAMP()->getChat()->AddChatMessage(-1, "1-2.");
                if (listItem == 2) SF->getSAMP()->getDialog()->ShowDialog(102, 2, "Пункт 3", "1\n2", "Выбрать", "Закрыть");
            }
            else
            {
                SF->getSAMP()->getChat()->AddChatMessage(-1, "101 закрыт.");
            }
        }
        case 102:
        {
            if (buttonId == 1)
            {
                if (listItem == 0) SF->getSAMP()->getChat()->AddChatMessage(-1, "2-1.");
                if (listItem == 1) SF->getSAMP()->getChat()->AddChatMessage(-1, "2-2.");
            }
            else
            {
                SF->getSAMP()->getChat()->AddChatMessage(-1, "102 закрыт.");
            }
        }
    }
При выборе любого пункта из 101 диалога выводит в чат сообщения из 102 диалога. WTF :D Сообщения при закрытии выводит за оба диалога так же.
 
Последнее редактирование: