Застревает на проверках 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