помогите

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

Qulic

Новичок
Автор темы
15
0
Код:
local imgui = require 'mimgui' -- подключаем библиотеку мимгуи
local sampev = require "lib.samp.events"
local encoding = require 'encoding' -- подключаем библиотеку для работы с разными кодировками
encoding.default = 'CP1251' -- задаём кодировку по умолчанию
local u8 = encoding.UTF8 -- это позволит нам писать задавать названия/текст на кириллице
local new = imgui.new -- создаём короткий псевдоним для удобства
local WinState = new.bool() -- создаём буффер для открытия окна
local inputField = new.int() -- создаём буффер для инпута
local keys = require "vkeys"


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

    sampRegisterChatCommand('doki', function() WinState[0] = not WinState[0] end) -- команда по которой будет вызываться наше окно
    sampRegisterChatCommand("pass", getClosestPlayerId)
    wait(-1)

while true do
wait(0)
    if isKeyJustPressed(VK_CONTROL) then
    sampAddChatMessage("zhopa", -1)
end
    
    
end
end

function getClosestPlayerId()
    local minDist = 9999
    local closestId = -1
    local x, y, z = getCharCoordinates(PLAYER_PED)
    for i = 0, 999 do
        local streamed, pedID = sampGetCharHandleBySampPlayerId(i)
        if streamed then
            local xi, yi, zi = getCharCoordinates(pedID)
            local dist = math.sqrt( (xi - x) ^ 2 + (yi - y) ^ 2 + (zi - z) ^ 2 )
            if dist < minDist then
                minDist = dist
                closestId = i
            end
        end
    end
    sampSendChat("/showpass " .. closestId)
end

imgui.OnFrame(function() return WinState[0] end,
   function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- отвечает за положение окна на экране
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always) -- отвечает за размер окна
        imgui.Begin(u8'РП Документы', WinState, imgui.WindowFlags.NoResize) -- отвечает за отображение окна, его заголовок и флаги
        if imgui.Button(u8"РП Пасспорт") then
        sampSendChat("/me достал пасспорт из кармана и передал человеку напротив")
        end
        if imgui.Button(u8"Предьявить") then
        sampSendChat("/pass")
        end
        imgui.Text("/pl" .. u8"            РП Лицензии")
        imgui.Text("/medc" .. u8"      РП Мед. Карта")
        imgui.End()
    end
)


помогите пж, кнопка предьявить должна пускать команду пасс, пишет что команды нету, хотя когда пишу ее в чат сам, она работает
 
Решение
Опробуй это
вот так получилось:

Grand Theft Auto  San Andreas 2023.08.02 - 22.45.52.01.gif

Код:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local new = imgui.new
local WinState = new.bool()

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

    sampRegisterChatCommand('doki', function() WinState[0] = not WinState[0] end)
    wait(-1)
end

function sendPassCommand()
    -- Получаем ближайший ID игрока
    local closestId = getClosestPlayerId()

    -- Проверяем, что получили корректный ID
    if closestId ~= -1 then
        sampSendChat("/showpass " .. closestId)
    else
        sampAddChatMessage("Игроки не обнаружены."...

chromiusj

Kommando-Leiteinheit Bioresonanztechnik-Replika
Модератор
5,510
3,840
команда Пасс запускает эту функцию, но кнопка ее не видит
Lua:
local imgui = require 'mimgui' -- подключаем библиотеку мимгуи
local sampev = require "lib.samp.events"
local encoding = require 'encoding' -- подключаем библиотеку для работы с разными кодировками
encoding.default = 'CP1251' -- задаём кодировку по умолчанию
local u8 = encoding.UTF8 -- это позволит нам писать задавать названия/текст на кириллице
local new = imgui.new -- создаём короткий псевдоним для удобства
local WinState = new.bool() -- создаём буффер для открытия окна
local inputField = new.int() -- создаём буффер для инпута
local keys = require "vkeys"


function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('doki', function() WinState[0] = not WinState[0] end) -- команда по которой будет вызываться наше окно
    sampRegisterChatCommand("pass", getClosestPlayerId)
    while true do
        wait(0)
        if isKeyJustPressed(VK_CONTROL) then
            sampAddChatMessage("zhopa", -1)
        end
    end
end

function getClosestPlayerId()
    local minDist = 9999
    local closestId = -1
    local x, y, z = getCharCoordinates(PLAYER_PED)
    for i = 0, 999 do
        local streamed, pedID = sampGetCharHandleBySampPlayerId(i)
        if streamed and pedID ~= 0 then
            local xi, yi, zi = getCharCoordinates(pedID)
            if xi and yi and zi then
                local dist = math.sqrt((xi - x) ^ 2 + (yi - y) ^ 2 + (zi - z) ^ 2)
                if dist < minDist then
                    minDist = dist
                    closestId = i
                end
            end
        end
    end
    return closestId
end

imgui.OnFrame(function() return WinState[0] end,
   function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- отвечает за положение окна на экране
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always) -- отвечает за размер окна
        imgui.Begin(u8'РП Документы', WinState, imgui.WindowFlags.NoResize) -- отвечает за отображение окна, его заголовок и флаги
        if imgui.Button(u8"РП Пасспорт") then
            sampAddChatMessage("/me достал пасспорт из кармана и передал человеку напротив",-1)
        end
        if imgui.Button(u8"Предьявить") then
            local closestPlayerId = getClosestPlayerId()
            if closestPlayerId >= 0 then
                sampAddChatMessage("/showpass " .. closestPlayerId,-1)
            end
        end
        imgui.Text("/pl" .. u8"            РП Лицензии")
        imgui.Text("/medc" .. u8"      РП Мед. Карта")
        imgui.End()
    end
)
держи
 

chromiusj

Kommando-Leiteinheit Bioresonanztechnik-Replika
Модератор
5,510
3,840
видео снял что не робит
попробуй так:

Lua:
local imgui = require 'mimgui' -- подключаем библиотеку мимгуи
local sampev = require "lib.samp.events"
local encoding = require 'encoding' -- подключаем библиотеку для работы с разными кодировками
encoding.default = 'CP1251' -- задаём кодировку по умолчанию
local u8 = encoding.UTF8 -- это позволит нам писать задавать названия/текст на кириллице
local new = imgui.new -- создаём короткий псевдоним для удобства
local WinState = new.bool() -- создаём буффер для открытия окна
local inputField = new.int() -- создаём буффер для инпута
local keys = require "vkeys"


function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('doki', function() WinState[0] = not WinState[0] end) -- команда по которой будет вызываться наше окно
    while true do
        wait(0)
        if isKeyJustPressed(VK_CONTROL) then
            sampAddChatMessage("zhopa", -1)
        end
    end
end

function getClosestPlayerId()
    local minDist = 9999
    local closestId = -1
    local x, y, z = getCharCoordinates(PLAYER_PED)
    for i = 0, 999 do
        local streamed, pedID = sampGetCharHandleBySampPlayerId(i)
        if streamed and getCharHealth(pedID) > 0 and not sampIsPlayerPaused(pedID) then
            local xi, yi, zi = getCharCoordinates(pedID)
            local dist = math.sqrt((xi - x) ^ 2 + (yi - y) ^ 2 + (zi - z) ^ 2)
            if dist < minDist then
                minDist = dist
                closestId = i
            end
        end
    end
    return closestId
end

imgui.OnFrame(function() return WinState[0] end,
   function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always)
        imgui.Begin(u8'РП Документы', WinState, imgui.WindowFlags.NoResize)
        if imgui.Button(u8"РП Пасспорт") then
            sampSendChat("/me достал пасспорт из кармана и передал человеку напротив")
        end
        if imgui.Button(u8"Предьявить") then
            local closestId = getClosestPlayerId()
            if closestId ~= -1 then
                sampSendChat("/pass " .. closestId)
            else
                sampAddChatMessage("нет", -1)
            end
        end
        imgui.Text("/pl" .. u8"            РП Лицензии")
        imgui.Text("/medc" .. u8"      РП Мед. Карта")
        imgui.End()
    end
)
я конечно подозреваю,что возможно проблема в том что команда и число слипаются но такого быть не должно
 
Последнее редактирование:

Qulic

Новичок
Автор темы
15
0
попробуй так:

Lua:
local imgui = require 'mimgui' -- подключаем библиотеку мимгуи
local sampev = require "lib.samp.events"
local encoding = require 'encoding' -- подключаем библиотеку для работы с разными кодировками
encoding.default = 'CP1251' -- задаём кодировку по умолчанию
local u8 = encoding.UTF8 -- это позволит нам писать задавать названия/текст на кириллице
local new = imgui.new -- создаём короткий псевдоним для удобства
local WinState = new.bool() -- создаём буффер для открытия окна
local inputField = new.int() -- создаём буффер для инпута
local keys = require "vkeys"


function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('doki', function() WinState[0] = not WinState[0] end) -- команда по которой будет вызываться наше окно
    while true do
        wait(0)
        if isKeyJustPressed(VK_CONTROL) then
            sampAddChatMessage("zhopa", -1)
        end
    end
end

function getClosestPlayerId()
    local minDist = 9999
    local closestId = -1
    local x, y, z = getCharCoordinates(PLAYER_PED)
    for i = 0, 999 do
        local streamed, pedID = sampGetCharHandleBySampPlayerId(i)
        if streamed and getCharHealth(pedID) > 0 and not sampIsPlayerPaused(pedID) then
            local xi, yi, zi = getCharCoordinates(pedID)
            local dist = math.sqrt((xi - x) ^ 2 + (yi - y) ^ 2 + (zi - z) ^ 2)
            if dist < minDist then
                minDist = dist
                closestId = i
            end
        end
    end
    return closestId
end

imgui.OnFrame(function() return WinState[0] end,
   function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always)
        imgui.Begin(u8'РП Документы', WinState, imgui.WindowFlags.NoResize)
        if imgui.Button(u8"РП Пасспорт") then
            sampSendChat("/me достал пасспорт из кармана и передал человеку напротив")
        end
        if imgui.Button(u8"Предьявить") then
            local closestId = getClosestPlayerId()
            if closestId ~= -1 then
                sampSendChat("/pass " .. closestId)
            else
                sampAddChatMessage("нет", -1)
            end
        end
        imgui.Text("/pl" .. u8"            РП Лицензии")
        imgui.Text("/medc" .. u8"      РП Мед. Карта")
        imgui.End()
    end
)
я конечно подозреваю,что возможно проблема в том что команда и число слипаются но такого быть не должно
я когда запустил была таже ошибка писало команда не извесна
 
42
8
Опробуй это
вот так получилось:

Grand Theft Auto  San Andreas 2023.08.02 - 22.45.52.01.gif

Код:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local new = imgui.new
local WinState = new.bool()

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

    sampRegisterChatCommand('doki', function() WinState[0] = not WinState[0] end)
    wait(-1)
end

function sendPassCommand()
    -- Получаем ближайший ID игрока
    local closestId = getClosestPlayerId()

    -- Проверяем, что получили корректный ID
    if closestId ~= -1 then
        sampSendChat("/showpass " .. closestId)
    else
        sampAddChatMessage("Игроки не обнаружены.", -1)
    end
end

function getClosestPlayerId()
    local minDist = 9999
    local closestId = -1
    local x, y, z = getCharCoordinates(PLAYER_PED)
    for i = 0, 999 do
        local streamed, pedID = sampGetCharHandleBySampPlayerId(i)
        if streamed and i ~= PLAYER_PED then
            local xi, yi, zi = getCharCoordinates(pedID)
            local dist = math.sqrt((xi - x) ^ 2 + (yi - y) ^ 2 + (zi - z) ^ 2)
            if dist < minDist then
                minDist = dist
                closestId = i
            end
        end
    end
    return closestId
end

imgui.OnFrame(function() return WinState[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.Always)
        imgui.Begin(u8'РП Документы', WinState, imgui.WindowFlags.NoResize)
        if imgui.Button(u8"РП Пасспорт") then
            sampSendChat("/me достал пасспорт из кармана и передал человеку напротив")
        end
        if imgui.Button(u8"Предьявить") then
            sendPassCommand() -- Вызываем функцию отправки команды /pass
        end
        imgui.Text("/pl" .. u8"            РП Лицензии")
        imgui.Text("/medc" .. u8"      РП Мед. Карта")
        imgui.End()
    end
)
 
  • Нравится
Реакции: Qulic и chromiusj
Статус
В этой теме нельзя размещать новые ответы.