Взаимодействие с диалогом.

Статус
В этой теме нельзя размещать новые ответы.

_-Sasha-_

Новичок
Автор темы
24
1
Задумка такая что бы при выборе определённого пункта выводился какой-то текст.
Сам диалог:
7u8CgPh.png

idthK

Допустим если я выбрал "Текст 1" то пусть выводится "Hello", если "Текст 2", то "World"

Код:
:?:/dialog::
{
    showDialog("2", "Заголовок", "Текст 1`nТекст 2", "Отмена")
    return
}
 

deStrange

умер
409
159
Ты просто сказать не можешь?) И почему или lua или с ++, а не все вместе?
там больше возможностей, огромный диапазон. а вот почему не всё вместе, на сколько головы хватит, так сказать
 

Skelerll

Известный
154
8
там больше возможностей, огромный диапазон. а вот почему не всё вместе, на сколько головы хватит, так сказать
С чего лучше начинать? Ты эти языки программирования знаешь?
 

deStrange

умер
409
159
С чего лучше начинать? Ты эти языки программирования знаешь?
я вообще начал был с клео, вроде. то-ли с ахк или клео, не суть. далее после этого я перешел на луа. я как бы прыгал от одного языка на другой. луа так и не доучил, и меня заинтересовал другой язык, под названием С++. нашел литературу, уроки и готов был изучать, но подумал, зачем мне это всё сейчас, и на данный момент бросил полностью это всё, ничего не учу. вот так вот. учи луа, оно легко дается, а потом переходи на спп.
 

Skelerll

Известный
154
8
я вообще начал был с клео, вроде. то-ли с ахк или клео, не суть. далее после этого я перешел на луа. я как бы прыгал от одного языка на другой. луа так и не доучил, и меня заинтересовал другой язык, под названием С++. нашел литературу, уроки и готов был изучать, но подумал, зачем мне это всё сейчас, и на данный момент бросил полностью это всё, ничего не учу. вот так вот. учи луа, оно легко дается, а потом переходи на спп.
Спасибо чувак)

Спасибо чувак)
Где же мне всему эточу обучаться? На YouTube?
 
Последнее редактирование модератором:
  • Нравится
Реакции: deStrange

#kerosin

🔥
Проверенный
241
152
Учи lua там легко диалог создать, просто использовать submenus от FYP'а
Вот если нужно:
Lua:
function submenus_show(menu, caption, select_button, close_button, back_button)
    select_button, close_button, back_button = select_button or 'Select', close_button or 'Close', back_button or 'Back'
    prev_menus = {}
    function display(menu, id, caption)
        local string_list = {}
        for i, v in ipairs(menu) do
            table.insert(string_list, type(v.submenu) == 'table' and v.title .. '  >>' or v.title)
        end
        sampShowDialog(id, caption, table.concat(string_list, '\n'), select_button, (#prev_menus > 0) and back_button or close_button, sf.DIALOG_STYLE_LIST)
        repeat
            wait(0)
            local result, button, list = sampHasDialogRespond(id)
            if result then
                if button == 1 and list ~= -1 then
                    local item = menu[list + 1]
                    if type(item.submenu) == 'table' then -- submenu
                        table.insert(prev_menus, {menu = menu, caption = caption})
                        if type(item.onclick) == 'function' then
                            item.onclick(menu, list + 1, item.submenu)
                        end
                        return display(item.submenu, id + 1, item.submenu.title and item.submenu.title or item.title)
                    elseif type(item.onclick) == 'function' then
                        local result = item.onclick(menu, list + 1)
                        if not result then return result end
                        return display(menu, id, caption)
                    end
                else -- if button == 0
                    if #prev_menus > 0 then
                        local prev_menu = prev_menus[#prev_menus]
                        prev_menus[#prev_menus] = nil
                        return display(prev_menu.menu, id - 1, prev_menu.caption)
                    end
                    return false
                end
            end
        until result
    end
    return display(menu, 31337, caption or menu.title)
end
Lua:
local my_dialog = {
    title = 'Заголовок основного диалога', -- необязательно
    -- пункты диалога. каждый пункт должен быть заключен в фигурные скобки
    {
        title = 'Пункт 1', -- текст пункта, обязателен
        onclick = function(menu, row) -- функция-обработчик при выборе пункта
            -- параметр menu - это (под)меню, в котором находится этот пункт
            -- row - номер пункта, начиная с единицы
        end
    },
    -- ещё один пункт, но с предотвращением автоматического закрытия диалога при его выборе
    {
        title = 'Пункт 2',
        onclick = function(menu, row)
            return true -- возвращение значения true из функции-обработчика предотвратит закрытие диалога после выбора пункта
        end
    },
    -- третий пункт, но уже с подменю
    {
        title = 'Пункт с подменю',
        -- подменю. имеет точно такую же структуру, как и основной диалог
        submenu = {
            title = 'Заголовок подменю', -- однако заголовок тут не обязателен. если он не задан будет использоваться текст пункта, открывающего это подменю
            -- каждый пункт подменю точно так же должен быть заключен в фигурные скобки
            {
                title = 'Пункт подменю 1'
                -- onclick не обязателен
            },
            {
                title = 'Пункт подменю 2',
                -- подменю в подменю. так можно до бесконечности
                submenu = {
                    title = 'Под-подменю',
                    onclick = function(menu, row, submenu) -- обработчик можно вешать и на открытие подменю, он выполнится перед показом
                        -- menu и row такие же, а submenu - это подменю, которое будет открыто
                        -- здесь бесполезно использовать return true
                    end,
                    -- наличие onclick для подменю не означает, что предопределенных пунктов в нём быть не может
                    {
                        title = 'Пункт #6141235'
                    }
                }
            },
            {
                title = 'Пункт подменю 3'
            }
        }
    }
}
Lua:
local sf = require 'sampfuncs'

local my_dialog = {
    {
        title = 'Вылечить игрока',
        onclick = function()
            -- действия
        end
    },
    {
        title = 'Выдать броню',
        onclick = function()
            -- ...
        end
    },
    {
        title = 'Выдать миниган',
        onclick = function()
            -- ...
        end
    },
    {
        title = 'Ещё-что нибудь',
        onclick = function()
            -- ...
        end
    },
    {
        title = 'Телепорт в рандомную точку',
        onclick = function()
            -- ...
        end
    }
}

function main()
    while true do
        wait(0)
        if wasKeyPressed(0x31) then
            submenus_show(my_dialog, 'Бесполезное меню')
        end
    end
end
Lua:
local sf = require 'sampfuncs'

local mod_submenus_sa = {
    {
        title = '{AAAAAA}GTA'
    },
    {
        title = 'Читы',
        submenu = {
            {
                title = 'Восстановить здоровье',
                onclick = function()
                    -- setCharHealth blabla
                end
            },
            {
                title = 'Восстановить броню',
                onclick = function()
                    -- ...
                end
            },
            {
                title = 'Починить транспорт',
                onclick = function()
                    -- ...
                end
            },
            {
                title = 'Деньги',
                submenu = {
                    {
                        title = '$500',
                        onclick = function()
                            -- ...
                        end
                    },
                    {
                        title = '$1 000',
                        onclick = function()
                            -- ...
                        end
                    },
                    {
                        title = '$100 000',
                        onclick = function()
                            -- ...
                        end
                    }
                }
            },
            {
                title = 'Бессмертие: выкл',
                onclick = function(menu, row)
                    godmode_active = not godmode_active
                    menu[row].title = godmode_active and 'Бессмертие: вкл' or 'Бессмертие: выкл'
                    -- ...
                    return true
                end
            }
        }
    },
    {
        title = 'Оружие',
        submenu = {
            {
                title = 'Выдать патроны',
                onclick = function()
                    -- ...
                end
            }
        }
    },
    {
        title = 'Транспорт',
        submenu = {
            -- ..
        }
    },
    {
        title = 'Телепорты',
        submenu = {
            -- ..
        }
    },
    {
        title = ' '
    },
    {
        title = '{AAAAAA}SA-MP'
    },
    {
        title = 'Игроки',
        submenu = {},
        onclick = function(menu, row, submenu)
            table.insert(submenu,{title='heuehue'})
            -- тут можно заполнить submenu списком игроков. например, сделать для каждого игрока подменю с какими-то действиями над ним
        end
    },
    {
        title = 'Патчи',
        submenu = {
            -- ...
        }
    }
}

function main()
    -- инициализация меню
    -- создание списка оружий
    local weaps = require 'game.weapons'
    for id = weaps.FIST, weaps.PARACHUTE do
        if weaps.names[id] then
            table.insert(mod_submenus_sa[3].submenu, {title = weaps.names[id], onclick = mod_menu_give_weapon})
        end
    end
    while true do
        wait(0)
        if testCheat('MSS') then
            submenus_show(mod_submenus_sa, 'mod_submenus_sa v1.3.3.7 by TurboRofl team', 'Выбрать', 'Закрыть', 'Назад')
        end
    end
end

Скрин простого примера:
sa-mp-008.png

Скрин "сложного" примера:
sa-mp-009.png
 
Последнее редактирование:
  • Нравится
Реакции: Harryss

deStrange

умер
409
159

Skelerll

Известный
154
8
Вопрос - Подскажите хорошую литературу(https://blast.hk/threads/19420/) и ютуб в помощь (спп)
а чтобы луа выучить - так же основы смотреть на ютубе и функции с их описанием на вики бх
Блин, спасибо друг. Можешь вк свой кинуть?) А, и да, ты язык какой-нибудь из этих знаешь?
 
Статус
В этой теме нельзя размещать новые ответы.