Меню взаимодействий lua

hurkas

Новичок
Автор темы
15
0
Версия MoonLoader
Другое
как сделать меню взаимодействий, тип наводишься на игрока и нажимаешь "F4" и появляется меню взаимодействий с ним.
И в самом меню взаимодействий команду по типу /pay id кол-во
типа так
 
Решение
Lua:
local imgui = require 'imgui'

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

local sett = imgui.ImBool(false)
local cmds = imgui.ImBuffer(512)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do wait(0)
        imgui.ShowCursor = sett.v
        imgui.Process = sett.v
        if isKeyJustPressed(18) and isKeyJustPressed(2) then
            validtar, pedtar = getCharPlayerIsTargeting(playerHandle)
            if validtar and doesCharExist(pedtar) then
                local result, id = sampGetPlayerIdByCharHandle(pedtar)
                if result then
                    cmds.v = '/hi '..id...

GTA: Prodigy Empire

Известный
622
292
 
  • Нравится
Реакции: hurkas

hurkas

Новичок
Автор темы
15
0
да, тип того, но мне не нужен полный готовый скрипт.
Как сделать так, если нажимаешь ПКМ + альт, то вызывалась это окошко взаимодействий.
И как в этом окошке сделать простую команду, например /pay
 

qdIbp

Автор темы
Проверенный
1,386
1,141
да, тип того, но мне не нужен полный готовый скрипт.
Как сделать так, если нажимаешь ПКМ + альт, то вызывалась это окошко взаимодействий.
И как в этом окошке сделать простую команду, например /pay
Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do wait(0)
        if isKeyJustPressed(18) and isKeyJustPressed(2) then
            validtar, pedtar = getCharPlayerIsTargeting(playerHandle)
            if validtar and doesCharExist(pedtar) then
                local result, id = sampGetPlayerIdByCharHandle(pedtar)
                if result then
                    sampShowDialog(6405, "Сумма", "Введите сумму перевода", "Выбрать", "Отмена", 1) -- сам диалог
                    while sampIsDialogActive(6405) do wait(100) end -- ждёт пока вы ответите на диалог
                    local res, button, list, input = sampHasDialogRespond(6405)
                    if button == 1 then
                        if #input ~= 0 and input:find('%d+')then
                            sampSendChat('/c /pay '..id..' '..input)
                        elseif #input == 0 then
                            sampAddChatMessage('Вы нечего не ввели', 0xFF0000)
                        else
                            sampAddChatMessage('Слава что ты сделал', 0xFF0000)
                        end
                    else
                        sampAddChatMessage('Вы отменили перевод', 0xFF0000)
                    end
                end
            end
        end
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: hurkas

hurkas

Новичок
Автор темы
15
0
Lua:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do wait(0)
        if isKeyJustPressed(18) and isKeyJustPressed(2) then
            validtar, pedtar = getCharPlayerIsTargeting(playerHandle)
            if validtar and doesCharExist(pedtar) then
                local result, id = sampGetPlayerIdByCharHandle(pedtar)
                if result then
                    sampShowDialog(6405, "Сумма", "Введите сумму перевода", "Выбрать", "Отмена", 1) -- сам диалог
                    while sampIsDialogActive(6405) do wait(100) end -- ждёт пока вы ответите на диалог
                    local res, button, list, input = sampHasDialogRespond(6405)
                    if button == 1 then
                        if #input ~= 0 and input:find('%d+')then
                            sampSendChat('/c /pay '..id..' '..input)
                        elseif #input == 0 then
                            sampAddChatMessage('Вы нечего не ввели', 0xFF0000)
                        else
                            sampAddChatMessage('Слава что ты сделал', 0xFF0000)
                        end
                    else
                        sampAddChatMessage('Вы отменили перевод', 0xFF0000)
                    end
                end
            end
        end
    end
end
бл, я тупой /pay плохая команда,
Крч, сорян, что туплю, но как, что бы вместо диалога высвечивалось окошко imgui например с командой /hi
если так можно то ответьте пжпжпжп
 

qdIbp

Автор темы
Проверенный
1,386
1,141
бл, я тупой /pay плохая команда,
Крч, сорян, что туплю, но как, что бы вместо диалога высвечивалось окошко imgui например с командой /hi
если так можно то ответьте пжпжпжп
Lua:
local imgui = require 'imgui'

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

local sett = imgui.ImBool(false)
local cmds = imgui.ImBuffer(512)
cmds.v = '/hi'

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do wait(0)
        imgui.ShowCursor = sett.v
        imgui.Process = sett.v
        if isKeyJustPressed(18) and isKeyJustPressed(2) then
            validtar, pedtar = getCharPlayerIsTargeting(playerHandle)
            if validtar and doesCharExist(pedtar) then
                local result, id = sampGetPlayerIdByCharHandle(pedtar)
                if result then
                    sett.v = true
                end
            end
        end
       
    end
end


function imgui.OnDrawFrame()
    if sett.v then
        imgui.Begin(u8'Окно а хули не окно?',sett, imgui.WindowFlags_AlwaysAutoResize) -- флаг авторазмера окна = imgui.WindowFlags_AlwaysAutoResize
            if imgui.Button(u8'Активация') then
                sampSendChat(u8:decode(cmds.v))
            end imgui.SameLine()
            imgui.InputText(u8'Вводить команду сюда', cmds)
           
        imgui.End()
    end
end
 

hurkas

Новичок
Автор темы
15
0
бл, смотри. альт + пкм и вывожу окно с тем челиком на которого нажал ПКМ + альт, а команда /hi берет id от челика на которого нажал ПКМ + альт.
То есть, когда появилось окошко Imgui, то не надо вводить в строку /hi 30, а прост ПКМ + альт активирует команду /hi уже с id.
надеюсь нормально объяснил.
прастите, что вот это вот
 

qdIbp

Автор темы
Проверенный
1,386
1,141
Lua:
local imgui = require 'imgui'

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

local sett = imgui.ImBool(false)
local cmds = imgui.ImBuffer(512)

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do wait(0)
        imgui.ShowCursor = sett.v
        imgui.Process = sett.v
        if isKeyJustPressed(18) and isKeyJustPressed(2) then
            validtar, pedtar = getCharPlayerIsTargeting(playerHandle)
            if validtar and doesCharExist(pedtar) then
                local result, id = sampGetPlayerIdByCharHandle(pedtar)
                if result then
                    cmds.v = '/hi '..id
                    sett.v = true
                end
            end
        end
      
    end
end


function imgui.OnDrawFrame()
    if sett.v then
        imgui.Begin(u8'Окно а хули не окно?',sett, imgui.WindowFlags_AlwaysAutoResize) -- флаг авторазмера окна = imgui.WindowFlags_AlwaysAutoResize
            if imgui.Button(u8'Активация') then
                sampSendChat(u8:decode(cmds.v))
            end imgui.SameLine()
            imgui.InputText(u8'Вводить команду сюда', cmds)
          
        imgui.End()
    end
end
 
  • Нравится
Реакции: hurkas

Edvard

Известный
216
39
Фак у меня такая же проблема, только другого характера. Есть где нибудь настраиваемый скрипт по работе адвоката? Например наводишь курсор на игрока, зажимаешь ПКМ+Q и автоматом вводится команда /free id игрока, и вам остается например в окно прописать сумму за освобождение и нажать Enter
 
  • Эм
Реакции: qdIbp

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
Фак у меня такая же проблема, только другого характера. Есть где нибудь настраиваемый скрипт по работе адвоката? Например наводишь курсор на игрока, зажимаешь ПКМ+Q и автоматом вводится команда /free id игрока, и вам остается например в окно прописать сумму за освобождение и нажать Enter
Обязательно окно создавать для этого? Просто можно прямо в чате это сделать..
Lua:
-- Беск. цикл
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
if valid and doesCharExist(ped) then
    local result, id = sampGetPlayerIdByCharHandle(ped)
    if result and isKeyJustPressed(VK_Q) then
        sampSetChatInputText("/free "..id.." ")
        sampSetChatInputEnabled(true)
    end
end
 
  • Нравится
Реакции: qdIbp

Edvard

Известный
216
39
Обязательно окно создавать для этого? Просто можно прямо в чате это сделать..
Lua:
-- Беск. цикл
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
if valid and doesCharExist(ped) then
    local result, id = sampGetPlayerIdByCharHandle(ped)
    if result and isKeyJustPressed(VK_Q) then
        sampSetChatInputText("/free "..id.." ")
        sampSetChatInputEnabled(true)
    end
end
а как ? Подбегаю к челу, навожу прицел ПКМ+Q и ничего не происходит. Я просто ваще ни капли не шарю че где настроить надо. готовый скрипт есть? В этих кодах который ты скинул я походу тоже нуб :D
 
  • Эм
Реакции: qdIbp

Dmitriy Makarov

25.05.2021
Проверенный
2,478
1,113
а как ? Подбегаю к челу, навожу прицел ПКМ+Q и ничего не происходит. Я просто ваще ни капли не шарю че где настроить надо. готовый скрипт есть? В этих кодах который ты скинул я походу тоже нуб :D
Lua:
require "moonloader"

function main()
    while not isSampAvailable() do wait(100) end
    while true do wait(0)
        local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
        if valid and doesCharExist(ped) then
            local result, id = sampGetPlayerIdByCharHandle(ped)
            if result and isKeyJustPressed(VK_Q) then
                sampSetChatInputText("/free "..id.." ")
                sampSetChatInputEnabled(true)
            end
        end
    end
end
Создай текстовый файл, открой его и вставь этот код туда. Затем измени расширение файла на .lua