Script lua | При использовании команде чтобы отыгравалось рп | При использовании команде появлялось диалоговое окно с выбором отыгровки.

protolet

Новичок
Автор темы
28
5
Здравствуйте, прошу помощи в написании скрипт при котором когда ты пишешь команду отыгравалось рп.
Пример:
/me text
/me text
/frisk id
2. И то же скрипт при использовании туже команду отыгравалось рп и появлялось диалоговое окно с выбором действия
Пример: /frisk id
/me text
/me text
/frisk
[Появляется окно]
Выбор
[Изъятие наркотиков]
[Изъятие патрон]
Выбрал наркотики
Идёт отыгровка изъятия наркотиков
(С открытым кодом для дальнейшего изменения отыгровки,пункта в скрипте)
Кому не сложно и знает как написать данный скрипт просьба помочь
Заранее спасибо
 
Решение
Lua:
require 'lib.moonloader'
require 'lib.sampfuncs'
require 'lib.samp.events'

encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    while not isSampAvailable() do wait(100) end

    sampAddChatMessage('rp actions: loaded', -1)

    sampRegisterChatCommand('fr', function(arg) -- frisk
        playerid = tonumber(arg)
        if type(playerid) == 'number' then
            if sampIsPlayerConnected(playerid) then
                lua_thread.create(function()
                    sampSendChat(u8:decode('/me достал из внутреннего кармана перчатки, затем обыскал человека напротив'))
                    wait(1000)
                    sampShowDialog(6405, u8:decode('Меню обыска'), u8:decode('Найдены...

asprt

Известный
167
41
Lua:
require 'lib.moonloader'
require 'lib.sampfuncs'
require 'lib.samp.events'

encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    while not isSampAvailable() do wait(100) end

    sampAddChatMessage('rp actions: loaded', -1)

    sampRegisterChatCommand('fr', function(arg) -- frisk
        playerid = tonumber(arg)
        if type(playerid) == 'number' then
            if sampIsPlayerConnected(playerid) then
                lua_thread.create(function()
                    sampSendChat(u8:decode('/me достал из внутреннего кармана перчатки, затем обыскал человека напротив'))
                    wait(1000)
                    sampShowDialog(6405, u8:decode('Меню обыска'), u8:decode('Найдены патроны\nНайдены наркотики'), u8:decode('Выбрать'), u8:decode('Отмена'), DIALOG_STYLE_LIST)
                end)
            else
                sampAddChatMessage('rp actions: player is not online', -1)
            end
        else
            sampAddChatMessage('rp actions: /fr id', -1)
        end
    end)
    while true do
        wait(0)
        local result, button, list = sampHasDialogRespond(6405)
        if result and button == 1 then
            if list == 0 then
                sampSendChat(u8:decode('/me нашел патроны'))
            elseif list == 1 then
                sampSendChat(u8:decode('/me нашел наркотики'))
            end
        end
    end
end
 
  • Нравится
Реакции: protolet

protolet

Новичок
Автор темы
28
5
Lua:
require 'lib.moonloader'
require 'lib.sampfuncs'
require 'lib.samp.events'

encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

function main()
    while not isSampAvailable() do wait(100) end

    sampAddChatMessage('rp actions: loaded', -1)

    sampRegisterChatCommand('fr', function(arg) -- frisk
        playerid = tonumber(arg)
        if type(playerid) == 'number' then
            if sampIsPlayerConnected(playerid) then
                lua_thread.create(function()
                    sampSendChat(u8:decode('/me достал из внутреннего кармана перчатки, затем обыскал человека напротив'))
                    wait(1000)
                    sampShowDialog(6405, u8:decode('Меню обыска'), u8:decode('Найдены патроны\nНайдены наркотики'), u8:decode('Выбрать'), u8:decode('Отмена'), DIALOG_STYLE_LIST)
                end)
            else
                sampAddChatMessage('rp actions: player is not online', -1)
            end
        else
            sampAddChatMessage('rp actions: /fr id', -1)
        end
    end)
    while true do
        wait(0)
        local result, button, list = sampHasDialogRespond(6405)
        if result and button == 1 then
            if list == 0 then
                sampSendChat(u8:decode('/me нашел патроны'))
            elseif list == 1 then
                sampSendChat(u8:decode('/me нашел наркотики'))
            end
        end
    end
end
Что надо изменить в скрипте чтобы добавить больше строк для рп отыгровок и пунктов в меню обыска?
 
Последнее редактирование:

asprt

Известный
167
41
1637585895257.png

Что надо изменить в скрипте чтобы добавить больше строк для рп отыгровок и пунктов в меню обыска?
 
  • Нравится
Реакции: protolet

protolet

Новичок
Автор темы
28
5
Я не сильно понимаю но допустим мне надо чтобы была не одна отыгровка а не сколько как написать?:
/me text
/me text
/me text
тут:
Screenshot_3.png

и ещё как активировать рп отыгровку для следующих пунктов:
Screenshot_4.png

то есть после того как добавил пункт как ещё добавить к нему отыгровку

За ранее большое спасибо за то что ты помогаешь мне)
 

asprt

Известный
167
41
Я не сильно понимаю но допустим мне надо чтобы была не одна отыгровка а не сколько как написать?:
/me text
/me text
/me text
тут:
Посмотреть вложение 123505
и ещё как активировать рп отыгровку для следующих пунктов:
Посмотреть вложение 123506
то есть после того как добавил пункт как ещё добавить к нему отыгровку

За ранее большое спасибо за то что ты помогаешь мне)
Переходишь к while true do, ищешь elseif list == 2 потом ищешь окончание "end"(именно энд который отвечает за elseif list, а не другую функцию) заменяешь end на elseif list == 3, потом заканчиваешь функцию строчкой end. Чтоб добавить несколько отыгровок, нужно создать луа тред(для использования задержек) и просто ктрл+с ктрл+в пример:
Lua:
elseif list == 3 then --если в диалоге выбран третий пункт тогда; начало elseif list == 3
   lua_thread.create(function()
      sampSendChat(u8:decode('/me нашел фальшивые документы'))
   wait(1000) --задержка в миллисекундах
   sampSendChat(u8:decode('/me резким движением руки достал фальшивые документы'))
   wait(1000)
   sampSendChat(u8:decode('/do Фальшивые документы в руке'))
   end)
end--оканчиваем elseif list == 3

Чтоб добавить новый пункт в диалог нужно добавить \n(перенос строки) после второго без пробелов, и задать ему действие в цикле true (описано выше)
 
  • Нравится
Реакции: protolet