Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ HubTopic

Автор: mariner 6.8.2009, 0:45

В общем решил таки сделать версию получше http://mydc.ru/index.html?showtopic=756&view=findpost&p=5612.

CODE
sFile = "HubTopic.dat"
sPath = "HubTopic"
sTrueCommand = "HubTopic"
tOpenProfile = {
[0] = true,
[1] = true,
[2] = true,
[3] = true,
[4] = true,
[5] = true,
[6] = false,
[7] = false,
}
sMenu = "Меню админа"

function OnStartup()
sFileName = Core.GetPtokaXPath().."scripts/"..sPath.."/"..sFile
sHubTopic = Read()
end

function UserConnected(tUser)
Core.SendToUser(tUser,"$HubTopic "..sHubTopic)
if tOpenProfile[tUser.iProfile] ~= nil then
Core.SendToUser(tUser, "$UserCommand 1 3 "..sMenu.."\\Сменить ХабТопик$<%[mynick]> !"..sTrueCommand.." %[line: Введите ХабТопик]||")
end
end
RegConnected = UserConnected
OpConnected = UserConnected

function ChatArrival(tUser, s)
if tOpenProfile[tUser.iProfile] ~= nil then
local _,_,sCmd,sRes = s:find("%b<>%s+[!,+](%S+)%s+(.*)|")
if sCmd == sTrueCommand then
Save(sRes)
sHubTopic = sRes
Core.SendToAll("$HubTopic "..sHubTopic)
return true
end
end
end

function Save(s)
local hFile = io.open(sFileName, "w")
hFile:write(tostring(s))
hFile:flush ()
hFile:close ()
return true
end

function Read()
local hFile = io.open (sFileName, "r")
if not hFile then
Save("Установите HubTopic")
end
return tostring(hFile:read("*a")), hFile:close()
end


пишет вот что:
Код
06.08.2009 00:20:43 - /etc/ptokax/scripts/HubTopic.lua:43: attempt to index local 'hFile' (a nil value)
06.08.2009 00:20:57 - /etc/ptokax/scripts/HubTopic.lua:43: attempt to index local 'hFile' (a nil value)


Что не так :(

не меняетт и не переписывает топик

Автор: alex82 6.8.2009, 4:48

Не новичок вроде, должен знать, что движок форума портит код.

Прикрепи файл скрипта - посмотрим.

Автор: mariner 6.8.2009, 6:48

Как то я такого не замечал.
 HubTopic.lua ( 1.21 килобайт ) : 11

Автор: alex82 6.8.2009, 9:10

Походу, проблема с правами доступа, потому как в скрипте все правильно.

Чтобы убедиться наверняка, сделай так:

Код
function Save(s)
local hFile = assert(io.open(sFileName, "w"))
hFile:write(tostring(s))
hFile:flush ()
hFile:close ()
return true
end

Автор: mariner 6.8.2009, 9:22

хм, странно, ой странно. Хаб от рута пашет, а файл от рута не магет открыть. брр

Автор: Setuper 6.8.2009, 10:52

Кажется кто-то от дел сисадмина перешел к делам программирования)))

Функцией assert конечно можно пользоваться, однако лучше делать проверку открытости хендлера условием, так как тогда скрипт будет защищён и не упадёт big_smile.gif

Автор: mariner 6.8.2009, 11:54

ну что ж поделать, если то, что представлено на форуме не устраивало меня. Вот и точу напильником big_smile.gif