Помогите с получением айдишникa.

cort

Активный
Автор темы
277
79
Версия MoonLoader
.026-beta
всем привет, решил сделать меню взаемодействий, а скрипт крашит.


Lua:
function main()
    while not isSampAvailable() do wait(200) end
    wait(1000)
    sampAddChatMessage("{00FF00}[Leader Tools]{ffffff} - Успешно загружен! ", -1)
    sampAddChatMessage("{00FF00}[Leader Tools]{ffffff} - Автор: Cort_Quwin", -1)

    sampRegisterChatCommand("lt", cmd_start)

    handle, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    nick = sampGetPlayerNickname(id)

    imgui.Process = false

    while true do
        wait(0)

        local result, id = sampGetPlayerIdOnTargetKey(VK_MENU)
        if result then
            sampAddChatMessage('{00FF00}[Leader Tools]{ffffff} - Выбран игрок: {AEBD38}'..sampGetPlayerNickname(id)..' {598234}['..id..']', -1)
            target.v = not target.v
            imgui.Process = target.v
        end

    end
end

function sampGetPlayerIdOnTargetKey(key)
    local result, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
    if result then
        if isKeyJustPressed(key) then
            return sampGetPlayerIdByCharHandle(ped)
        end
    end
    return false
end

Вот маин и после него нужная функция.


Lua:
    if target.v then
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 235 -- WINDOW SIZE (37)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2 - sizeX / 2, resY / 2 - sizeY / 2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8"Меню взаемодействий", nil, imgui.WindowFlags.NoResize)
        imgui.Separator()
        if imgui.Button(u8'Повысить', imgui.ImVec2(65, 30)) then
            sampSetChatInputText('/setrank '.. ped)       
        end
        imgui.End()
    end

ВОт в ondrawe frame. Как только жму ПОвысить то скрипт крашит, раньше оно писало мой айди, но мне нужно айди чела.
 

Dmitriy Makarov

25.05.2021
Проверенный
2,481
1,113
Если вариант выше не сработает, попробуй как тут сделать.
 
  • Нравится
Реакции: cort

Sergey_Turner

Участник
102
7
На сколько я понял, тебе нужно вставить получение id`шника таргета непосредственно туда, где он и будет использоваться.
OnDrawFrame:
   if target.v then
        local _, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- Это
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 235 -- WINDOW SIZE (37)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2 - sizeX / 2, resY / 2 - sizeY / 2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8"Меню взаемодействий", nil, imgui.WindowFlags.NoResize)
        imgui.Separator()
        if imgui.Button(u8'Повысить', imgui.ImVec2(65, 30)) then
            sampSetChatInputText('/setrank '.. ped)    
        end
        imgui.End()
    end
 
  • Нравится
Реакции: cort

хуега)

РП игрок
Модератор
2,569
2,271
всем привет, решил сделать меню взаемодействий, а скрипт крашит.


Lua:
function main()
    while not isSampAvailable() do wait(200) end
    wait(1000)
    sampAddChatMessage("{00FF00}[Leader Tools]{ffffff} - Успешно загружен! ", -1)
    sampAddChatMessage("{00FF00}[Leader Tools]{ffffff} - Автор: Cort_Quwin", -1)

    sampRegisterChatCommand("lt", cmd_start)

    handle, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    nick = sampGetPlayerNickname(id)

    imgui.Process = false

    while true do
        wait(0)

        local result, id = sampGetPlayerIdOnTargetKey(VK_MENU)
        if result then
            sampAddChatMessage('{00FF00}[Leader Tools]{ffffff} - Выбран игрок: {AEBD38}'..sampGetPlayerNickname(id)..' {598234}['..id..']', -1)
            target.v = not target.v
            imgui.Process = target.v
        end

    end
end

function sampGetPlayerIdOnTargetKey(key)
    local result, ped = getCharPlayerIsTargeting(PLAYER_HANDLE)
    if result then
        if isKeyJustPressed(key) then
            return sampGetPlayerIdByCharHandle(ped)
        end
    end
    return false
end

Вот маин и после него нужная функция.


Lua:
    if target.v then
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 235 -- WINDOW SIZE (37)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2 - sizeX / 2, resY / 2 - sizeY / 2), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8"Меню взаемодействий", nil, imgui.WindowFlags.NoResize)
        imgui.Separator()
        if imgui.Button(u8'Повысить', imgui.ImVec2(65, 30)) then
            sampSetChatInputText('/setrank '.. ped)      
        end
        imgui.End()
    end

ВОт в ondrawe frame. Как только жму ПОвысить то скрипт крашит, раньше оно писало мой айди, но мне нужно айди чела.
id:
-- в function main()
sampRegisterChatCommand("chekid", function(id) -- регистрация команды, в которой аргумент это id плеера

    local playerID = id -- записываешь аргумент в переменную.

end)