Как убрать из рендера одинаковые ники

caing

Известный
Автор темы
43
6
Версия MoonLoader
.026-beta
Есть скрипт, который при появлении новой машины в зоне стрима добавляет ник и ид водилы в таблицу и после чего рейндерит их на экране. Проблема в том, что если покинуть зону стрима и вернуться обратно, то ник одного и того же игрока зарендерится еще раз.

p.s. Мне не нужно удалять ник игрока, который пропал из зоны стрима из рендера, мне нужно сделать так, чтобы этот ник не рендерился 2 раз, при повторном появлении этого игрока в стриме.

Lua:
script_properties('work-in-pause')

require 'lib.moonLoader'
require 'sampfuncs'
local sampev = require('lib.samp.events')

local Font = renderCreateFont("Arial", 8, 1)

tablica = {}

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

    while true do
        wait(0)
        if not isPauseMenuActive() then
            renderPosY = 500
            for k, v in pairs(tablica) do
                local NickName = tablica[k]['Nick']
                local PlayerID = tablica[k]['Id']
                local inStream, Char = sampGetCharHandleBySampPlayerId(PlayerID)
                renderFontDrawText(Font, NickName.."["..PlayerID.."] ", 800, renderPosY, 0xFFFFFFFF)
                renderPosY = renderPosY + 15
            end
        end
    end
end

function sampev.onVehicleStreamIn(vehid, data) -- при появлении новой машины в зоне стрима
    lua_thread.create(function()
        wait(200) -- задержка
        bool, hand = sampGetCarHandleBySampVehicleId(vehid) -- получаем хендл тачки
        if bool then
            pPed = getDriverOfCar(hand) --получаем пед водилы
            result, pID = sampGetPlayerIdByCharHandle(pPed) --получаем ид водителя
            if result then
                nik = sampGetPlayerNickname(pID)
                table.insert(tablica, {Nick = nik, Id = pID})
            end
        end
    end)
end
 
Решение
Есть скрипт, который при появлении новой машины в зоне стрима добавляет ник и ид водилы в таблицу и после чего рейндерит их на экране. Проблема в том, что если покинуть зону стрима и вернуться обратно, то ник одного и того же игрока зарендерится еще раз.

p.s. Мне не нужно удалять ник игрока, который пропал из зоны стрима из рендера, мне нужно сделать так, чтобы этот ник не рендерился 2 раз, при повторном появлении этого игрока в стриме.

Lua:
script_properties('work-in-pause')

require 'lib.moonLoader'
require 'sampfuncs'
local sampev = require('lib.samp.events')

local Font = renderCreateFont("Arial", 8, 1)

tablica = {}

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

    while true do
        wait(0)...

Kolbasa241

Известный
213
57
Есть скрипт, который при появлении новой машины в зоне стрима добавляет ник и ид водилы в таблицу и после чего рейндерит их на экране. Проблема в том, что если покинуть зону стрима и вернуться обратно, то ник одного и того же игрока зарендерится еще раз.

p.s. Мне не нужно удалять ник игрока, который пропал из зоны стрима из рендера, мне нужно сделать так, чтобы этот ник не рендерился 2 раз, при повторном появлении этого игрока в стриме.

Lua:
script_properties('work-in-pause')

require 'lib.moonLoader'
require 'sampfuncs'
local sampev = require('lib.samp.events')

local Font = renderCreateFont("Arial", 8, 1)

tablica = {}

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

    while true do
        wait(0)
        if not isPauseMenuActive() then
            renderPosY = 500
            for k, v in pairs(tablica) do
                local NickName = tablica[k]['Nick']
                local PlayerID = tablica[k]['Id']
                local inStream, Char = sampGetCharHandleBySampPlayerId(PlayerID)
                renderFontDrawText(Font, NickName.."["..PlayerID.."] ", 800, renderPosY, 0xFFFFFFFF)
                renderPosY = renderPosY + 15
            end
        end
    end
end

function sampev.onVehicleStreamIn(vehid, data) -- при появлении новой машины в зоне стрима
    lua_thread.create(function()
        wait(200) -- задержка
        bool, hand = sampGetCarHandleBySampVehicleId(vehid) -- получаем хендл тачки
        if bool then
            pPed = getDriverOfCar(hand) --получаем пед водилы
            result, pID = sampGetPlayerIdByCharHandle(pPed) --получаем ид водителя
            if result then
                nik = sampGetPlayerNickname(pID)
                table.insert(tablica, {Nick = nik, Id = pID})
            end
        end
    end)
end

Lua:
script_properties('work-in-pause')

local sampev = require('lib.samp.events')

local Font = renderCreateFont("Arial", 8, 1)

tablica = {}

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

    while true do
        wait(0)
        if not isPauseMenuActive() then
            local renderPosY = 500
            for k, v in pairs(tablica) do
                local NickName = tablica[k]['Nick']
                local PlayerID = tablica[k]['Id']
                local inStream, Char = sampGetCharHandleBySampPlayerId(PlayerID)
                renderFontDrawText(Font, NickName.."["..PlayerID.."] ", 800, renderPosY, 0xFFFFFFFF)
                renderPosY = renderPosY + 15
            end
        end
    end
end

function sampev.onVehicleStreamIn(vehid, data) -- при появлении новой машины в зоне стрима
    lua_thread.create(function()
        wait(200) -- задержка
        local bool, hand = sampGetCarHandleBySampVehicleId(vehid) -- получаем хендл тачки
        if bool then
            local pPed = getDriverOfCar(hand) --получаем пед водилы
            local result, pID = sampGetPlayerIdByCharHandle(pPed) --получаем ид водителя
            if result then
                local nik = sampGetPlayerNickname(pID)
                local result = true
                for i = 1, #tablica do -- начинаем перебирать таблицу
                    if tablica[i]['Nick'] == nik then -- если в таблице найден ник - ставим false
                        result = false
                    end
                end
                if result then -- Если result = true тогда добавляем в таблицу ник и id
                    table.insert(tablica, {Nick = nik, Id = pID})
                end
            end
        end
    end)
end