Строка из диалога, выполнение заданного действия

турбодизельный унитаз2012

Участник
Автор темы
140
9
Версия MoonLoader
.026-beta
Всем привет.
Не могу разобраться с диалогом, а именно выполнением в нём функции при нажатии на строку.
Вот код:

tpcor:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'


function main()
    while not isSampAvailable() do wait(100) end
    sampAddChatMessage('{ffcc00}Используйте /gomp', 0xffcc00)
    sampRegisterChatCommand('gomp', gomp)
   
end



sampRegisterChatCommand('tpmp1', function(tpj) --- tp k tpmp1
        setCharCoordinates(PLAYER_PED, -794.1675,2414.9585,156.8947,19.5840)
        sampAddChatMessage('{66ccff}Вы успешно телепортировались к лестнице', 0x66ccff)
    end)  
   
sampRegisterChatCommand('tpmp2', function(tpj) --- tp k tpmp2
        setCharCoordinates(PLAYER_PED, -662.0143,2321.7932,138.7793,173.4975)
        sampAddChatMessage('{66ccff}Вы успешно телепортировались к месту установки лестницы', 0x66ccff)
    end)  
   
sampRegisterChatCommand('klad1', function(tpj) --- tp k klad1
        setCharCoordinates(PLAYER_PED, 894.0339,-1092.3477,24.1687,86.0008)
        sampAddChatMessage('{66ccff}Вы успешно телепортировались к кладбищу ЛС', 0x66ccff)
    end)  
   
sampRegisterChatCommand('klad2', function(tpj) --- tp k klad2
        setCharCoordinates(PLAYER_PED, -336.1837,2219.5564,42.4870,303.6753)
        sampAddChatMessage('{66ccff}Вы успешно телепортировались к кладбищу ЛВ (заброшенная деревня)', 0x66ccff)
    end)  
   
sampRegisterChatCommand('hellen', function(tpj) --- tp k hellen
        setCharCoordinates(PLAYER_PED, 1495.8691,-1748.0410,15.4453,263.6044)
        sampAddChatMessage('{66ccff}Вы успешно телепортировались к NPC Хэллен', 0x66ccff)
    end)  
   
   
   
function gomp(arg)
    sampShowDialog(3048, '{3399FF}Список телепорта 2.0', '{FFFFFF}/tpmp1 - ТП к лестнице\n/tpmp2 - тп к месту установки лестницы\n/hellen - тп к Хэллен\n/tpklad1 - тп к кладбищу ЛС\n/tpklad2 - тп к кладбищу ЛВ (заброшенное)', 'Выбрать', 'Закрыть', 2)
end

Когда я введу /gomp > выберу любой пункт, то меня туда телепортирует.
Пока что написал команды для телепорта вручную.
Помогите пожалуйста, буду очень благодарен.
 
Решение
Lua:
local coords = {
    {-794.1675,2414.9585,156.8947,'лестнице'},
    {-662.0143,2321.7932,138.7793,'месту установки лестницы'},
    {1495.8691,-1748.0410,15.4453,'NPC Хэллен'},
    {894.0339,-1092.3477,24.1687,'кладбищу ЛС'},
    {-336.1837,2219.5564,42.4870,'кладбищу ЛВ (заброшенная деревня)'},
} -- создаем таблицу с координатами и названием места для удобства
function main()
    sampRegisterChatCommand("gomp", function() -- регаем команду
        sampShowDialog(3048, '{3399FF}Список телепорта 2.0', 'ТП к лестнице\nТП к месту установки лестницы\nТП к Хэллен\nТП к кладбищу ЛС\nТП к кладбищу ЛВ (заброшенное)', 'Выбрать', 'Закрыть', 2)
    end) -- которая показывает наш диалог
    while true do wait(0)
        local result, button...

MLycoris

Режим чтения
Проверенный
1,863
1,963
Lua:
local coords = {
    {-794.1675,2414.9585,156.8947,'лестнице'},
    {-662.0143,2321.7932,138.7793,'месту установки лестницы'},
    {1495.8691,-1748.0410,15.4453,'NPC Хэллен'},
    {894.0339,-1092.3477,24.1687,'кладбищу ЛС'},
    {-336.1837,2219.5564,42.4870,'кладбищу ЛВ (заброшенная деревня)'},
} -- создаем таблицу с координатами и названием места для удобства
function main()
    sampRegisterChatCommand("gomp", function() -- регаем команду
        sampShowDialog(3048, '{3399FF}Список телепорта 2.0', 'ТП к лестнице\nТП к месту установки лестницы\nТП к Хэллен\nТП к кладбищу ЛС\nТП к кладбищу ЛВ (заброшенное)', 'Выбрать', 'Закрыть', 2)
    end) -- которая показывает наш диалог
    while true do wait(0)
        local result, button, list, input = sampHasDialogRespond(3048) -- эта хуйня реагирует на взаимодействие и диалогом
        if result then -- если какое то действие было то
            if button == 1 then -- и нажата левая кнопка
                setCharCoordinates(1, coords[list+1][1],coords[list+1][2],coords[list+1][3]) -- то тепаем нашего персонажа на координаты из таблицы
                -- 1 в самом начале это хендл нашего педа PLAYER_PEd
                -- list+1 потому что значения в таблице начинаются с 1, а в диалоге с 0, чтоб всё совпадало, прибавляем к значению list в диалоге единичку
                sampAddChatMessage('{66ccff}Вы успешно телепортировались к '..coords[list+1][4], -1) -- то же самое
            end
        end
    end            
end
 
Последнее редактирование:
  • Нравится
Реакции: xcdco

турбодизельный унитаз2012

Участник
Автор темы
140
9
Огромное спасибо тебе
Решение)

Lua:
local coords = {
    {-794.1675,2414.9585,156.8947,'лестнице'},
    {-662.0143,2321.7932,138.7793,'месту установки лестницы'},
    {1495.8691,-1748.0410,15.4453,'NPC Хэллен'},
    {894.0339,-1092.3477,24.1687,'кладбищу ЛС'},
    {-336.1837,2219.5564,42.4870,'кладбищу ЛВ (заброшенная деревня)'},
} -- создаем таблицу с координатами и названием места для удобства
function main()
    sampRegisterChatCommand("gomp", function() -- регаем команду
        sampShowDialog(3048, '{3399FF}Список телепорта 2.0', 'ТП к лестнице\nТП к месту установки лестницы\nТП к Хэллен\nТП к кладбищу ЛС\nТП к кладбищу ЛВ (заброшенное)', 'Выбрать', 'Закрыть', 2)
    end) -- которая показывает наш диалог
    while true do wait(0)
        local result, button, list, input = sampHasDialogRespond(3048) -- эта хуйня реагирует на взаимодействие и диалогом
        if result then -- если какое то действие было то
            if button == 1 then -- и нажата левая кнопка
                setCharCoordinates(1, coords[list+1][1],coords[list+1][2],coords[list+1][3]) -- то тепаем нашего персонажа на координаты из таблицы
                -- 1 в самом начале это хендл нашего педа PLAYER_PEd
                -- list+1 потому что значения в таблице начинаются с 1, а в диалоге с 0, чтоб всё совпадало, прибавляем к значению list в диалоге единичку
                sampAddChatMessage('{66ccff}Вы успешно телепортировались к '..coords[list+1][4], -1) -- то же самое
            end
        end
    end          
end
 
  • Нравится
Реакции: MLycoris