Я не могу понять, почему 2 редактора дают разные синтаксические ошибки для одного и того же сценария
Я получаю сообщение об ошибке при компиляции этого скрипта lua. Редактор LUA и ptokaX Server, похоже, так думают. Я не могу понять ошибку. Редактор LUA говорит, что ошибка в dofile(путь.."files/mcunsubs.txt"). Редактор PtokaX говорит, что ошибка в этой части кода:
data = data:gsub( "[\|]", "" )
data = data:gsub( "\&\#124\;", "\|" )
data = data:gsub( "\&\#036\;", "\$" )
Вот код
--[[
This file is part of HiT Hi FiT Hai's PtokaX scripts
Copyright: © 2014 HiT Hi FiT Hai group
Licence: GNU General Public Licence v3 https://www.gnu.org/licenses/gpl-3.0.html
--]]
unsubbed={}
subbed={}
dofile( path.."files/mcunsubs.txt" )
tabUsers = Core.GetOnlineUsers()
for k,v in ipairs(tabUsers) do
if not isthere_key(v.sNick,unsubbed) then
table.insert(subbed,v.sNick)
end
end
ircout = function(data)
data = data:gsub( "[\|]", "" ) -- Removing the terminating '|' character only.
data = data:gsub( "\&\#124\;", "\|" )
data = data:gsub( "\&\#036\;", "\$" )
local file= io.open("/root/DCout.txt","a+")
file:write(data.."\n")
file:flush()
file:close()
end
dcmcout = function(data)
for k,v in ipairs(subbed) do
Core.SendToNick(v,data)
end
end
UserConnected= function (tUser)
if not isthere_key(tUser.sNick,unsubbed) then
if not isthere_key(tUser.sNick,subbed) then
table.insert(subbed,tUser.sNick)
end
end
end
RegConnected = UserConnected
OpConnected = UserConnected
UserDisConnected= function (tUser)
key = isthere_key(tUser.sNick,subbed)
while key do
table.remove( subbed, key)
key = isthere_key(user.sNick,subbed)
end
end
RegDisConnected = UserDisConnected
OpDisConnected = UserDisConnected
1 ответ
Редактор Lua (я полагаю, это SciTE) выдает ошибку в строке № 12, потому что SciTE не распознает Core
таблица в следующей строке:
tabUsers = Core.GetOnlineUsers()
Когда вы выполняете тот же скрипт в PtokaX, Core
Таблица определена, и там нет ошибок. Поскольку вы используете более новую версию Lua, чем та, в которой этот файл был изначально написан (написано для Lua 5.1, у вас Lua 5.2), вы получаете ошибку. Lua 5.1 был более разрешительным с неправильными шаблонами для сопоставления строк, тогда как последний - нет.
Для решения вы можете использовать следующее:
data = data:gsub( "|", "" ):gsub( "|", "|" ):gsub( "$", "$" )