помогите почему getCamMode nil если нифига не nil

игрок сампа

Участник
Автор темы
86
11
Версия MoonLoader
.027.0-preview
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
while sampGetCurrentServerName() == 'SA-MP' do wait(1000) end
wait(-1)
end


function sampev.onAimSync(id, data)
playerCamModes[id] = tonumber(data.camMode)
end

function sampev.onSendAimSync(data)
local myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
playerCamModes[myId] = tonumber(data.camMode)
end

function getCamModeById(id)
return playerCamModes[id]
end

function sampGetPlayerIdByNickname(nick)
nick = tostring(nick)
local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
if nick == sampGetPlayerNickname(myid) then return myid end
for i = 0, 1003 do
if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
return i
end
end
end

function sampev.onServerMessage(color, message)
if message:match("себе оружие из материалов") and color == -1029514497 then
local nick = message:match("%a+_%a+")
local id = sampGetPlayerIdByNickname(nick)
local camMode = getCamModeById(id)
print(camMode)
end
end
 

verdis

Участник
32
3
в коде таблица playerCamModes не инициализирована перед использованием

Код:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while sampGetCurrentServerName() == 'SA-MP' do wait(1000) end
    
    playerCamModes = {}
    
    wait(-1)
end

function sampev.onAimSync(id, data)
    playerCamModes[id] = tonumber(data.camMode)
end

function sampev.onSendAimSync(data)
    local myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
    playerCamModes[myId] = tonumber(data.camMode)
end

function getCamModeById(id)
    return playerCamModes[id]
end

function sampGetPlayerIdByNickname(nick)
    nick = tostring(nick)
    local _, myid = sampGetPlayerIdByCharHandle(PLAYER_PED)
    if nick == sampGetPlayerNickname(myid) then return myid end
    for i = 0, 1003 do
        if sampIsPlayerConnected(i) and sampGetPlayerNickname(i) == nick then
            return i
        end
    end
end

function sampev.onServerMessage(color, message)
    if message:match("себе оружие из материалов") and color == -1029514497 then
        local nick = message:match("%a+_%a+")
        local id = sampGetPlayerIdByNickname(nick)
        local camMode = getCamModeById(id)
        print(camMode)
    end
end

Добавил инициализацию таблицы playerCamModes = {} в функции main()