Застревает на проверках gmod lua

Скрипт должен вносить или телепортировать игрока на записанную в таблице точку при соответвии условии, но вместо этого оно просто ничего не возвращает.

if SERVER then
    local homedb = homedb or {} 
    homedb.count = 1
    
    function getChat ( ply, txt ) 
        if(string.lower(txt) == "/sethome") then 
            for i = 1, homedb.count do 
                if homedb[i] != nil or homedb[i].ply == ply:Nick() then 
                    homedb[i].pos = ply:GetPos()
                    ply:ChatPrint('Точка дома обновлена!')
                else if homedb[i] == nil then
                    homedb[i].ply = ply:Nick()
                    homedb[i].pos = ply:GetPos()
                    homedb.count = i + 1
                    ply:ChatPrint('Точка дома установлена!')
                end
                end
            end

        end

        if(string.lower(txt) == "/home") then 
            for i = 1, homedb.count do 
                if homedb[i] != nil or homedb[i].ply == ply:Nick() then 
                    ply:ChatPrint('Возвращаемся домой.')
                    ply:SetPos(homedb[i].pos)
                else 
                    ply:ChatPrint('Ты не установил точку дома!')
                end
            end
        end

        
        return 
    end

    hook.Add("PlayerSay", "homecmd", getChat)
end

Ответы (1 шт):

Автор решения: Tokon

Извини если я немного неправильно понял твою тему на счет count, но я переписал твой код и сделал нечто подобное:

if SERVER then
    local homedb = homedb or {} 
    
    function getChat ( ply, txt ) 
        if(string.lower(txt) == "/sethome") then 
            if !IsValid(homedb[ply:SteamID()]) and homedb[ply:SteamID()] == nil then 
                ply:ChatPrint('Точка дома установлена!')
            else
                ply:ChatPrint('Точка дома обновлена!')
            end
            homedb[ply:SteamID()] = {['pos'] = ply:GetPos(), ['angle'] = ply:GetAngles()}
        end

        if(string.lower(txt) == "/home") then 
            if !IsValid(homedb[ply:SteamID()]) and homedb[ply:SteamID()] == nil then 
                ply:ChatPrint('Ты не установил точку дома!')
            else 
                --Лично фишка от меня (можешь выпилить)
                ply:ChatPrint('Подожди 3 секунды, мы отправим тебя домой.')
                timer.Simple(3, function()
                    ply:SetPos(homedb[ply:SteamID()]['pos'])
                    ply:SetEyeAngles(homedb[ply:SteamID()]['angle'])
                end )
            end
        end

        
        return 
    end

    hook.Add("PlayerSay", "homecmd", getChat)
end
→ Ссылка