Взятие ID игрока находящегося в машине через слежку

fredotid

Участник
Автор темы
3
0
Версия MoonLoader
.026-beta
Доброго времени суток.
Измучился, получил ид пешего игрока - использую, радуюсь. Никак не могу забрать ид людей в машине.
Использую imgui, в конечном итоге имею это, при попадании игрока на авто ID не меняется, после возврата к пешему присваивается его ид
Вынужден попросить о помощи

Снимок экрана 2023-01-15 140201.png


lua:
function samp.onSpectatePlayer(playerid, camtype) -- при слежке за игроком    
    pID = playerid -- pID использую в дальнейшем для вычислений он представлен в заголовке
end

function samp.onTogglePlayerSpectating(state)
    window.v = state
end
 
Последнее редактирование:
Решение
Забрал через текстдрав, спасибо.

upd.
Забрать забрался, но обновлялся не сразу. Решение - добавить поток и вызывать функцию спека машины 2-3 раза

pInfo.pIDcarTimer = pInfo.pIDcarTimer+5 - в спеке машин
pInfo.pIDcarTimer = -1 - в обычном спеке

if window.v == true and pInfo.pIDcar ~= -1 and pInfo.pIDcarTimer <= 4 then lua_thread.create(samp.onSpectateVehicle) wait(100) end в беск цикл

Dmitriy Makarov

25.05.2021
Проверенный
2,505
1,134
INCOMING_RPCS[RPC.PLAYERSPECTATEVEHICLE] = {'onSpectateVehicle', {vehicleId = 'uint16'}, {camType = 'uint8'}}
Посмотри как тут реализовано:
 

fredotid

Участник
Автор темы
3
0
Да, это работает на основе прошлого рекона, видимо система шла там по команде /re id.
Она работает так, я ввожу /re id и этот ид преследует меня на всех игроках находящихся в авто
У меня же такого нет, имеются кнопки в текст драве NEXT BACK. Я попробывал посредством imgui прописать свои кнопки с прибавлением и убавлением 1, всё остановилось на сообщении "наблюдать за администрацией запрещено"

моя проба /re:
            if imgui.Button("NEXT >",imgui.ImVec2(-1, 30)) then
                nName = sampGetPlayerNickname(pID)
                sampSendChat("/re "..pID + 1)
            end
           
            if imgui.Button("< BACK",imgui.ImVec2(-1, 30)) then
                nName = sampGetPlayerNickname(pID)
                sampSendChat("/re "..pID -1)
            end
lua:
function samp.onSendCommand(cmd)
    local reId = string.match(cmd, "^%/re (%d+)")
    if reId then
        rInfo.lastCmdRe = tonumber(reId)
    end

end

lua:
function samp.onSpectatePlayer(playerid, camtype) -- при слежке за игроком
    
    if rInfo.id ~= playerid then
        rInfo.sMenuOpen = 0
        rInfo.sItemMenu = 1
        refreshMenu = true
        
    end
    
    rInfo.lastId = playerid
    rInfo.id = playerid
    rInfo.lastCar = -1

end
function samp.onSpectateVehicle(carid, camtype)

    if rInfo.id ~= rInfo.lastCmdRe and rInfo.lastCmdRe >= 0 then
    
    ped = sampGetCharHandleBySampPlayerId(rInfo.lastId+1)
    

        rInfo.id = rInfo.lastCmdRe
        if rInfo.lastCar ~= carid then
            rInfo.sMenuOpen = 0
            rInfo.sItemMenu = 1
            refreshMenu = true
        end
        end

    rInfo.lastCar = carid

end


function samp.onTogglePlayerSpectating(state)
    window.v = state
    rInfo.state = state
    if not state then
        if rInfo.sMenuOpen > 0 then
            rInfo.sMenuOpen = 0
            rInfo.sItemMenu = 1
        end
        rInfo.lastCar = -1
        rInfo.id = -1
        refreshMenu = true
    elseif state and rInfo.refresh then
        rInfo.refresh = false
    end
end

function samp.onSendCommand(cmd)
    local reId = string.match(cmd, "^%/re (%d+)")
    if reId then
        rInfo.lastCmdRe = tonumber(reId)
    end
    -- sampAddChatMessage(cmd, 0xAAAAAAAA)
    -- return false
end
 
Последнее редактирование:

fredotid

Участник
Автор темы
3
0
Забрал через текстдрав, спасибо.

upd.
Забрать забрался, но обновлялся не сразу. Решение - добавить поток и вызывать функцию спека машины 2-3 раза

pInfo.pIDcarTimer = pInfo.pIDcarTimer+5 - в спеке машин
pInfo.pIDcarTimer = -1 - в обычном спеке

if window.v == true and pInfo.pIDcar ~= -1 and pInfo.pIDcarTimer <= 4 then lua_thread.create(samp.onSpectateVehicle) wait(100) end в беск цикл
 
Последнее редактирование: