PtokaX forum

Archive => Archived 5.1 boards => Help with scripts => Topic started by: frogger on 28 February, 2007, 18:59:11

Title: i have a little bug :(
Post by: frogger on 28 February, 2007, 18:59:11
hi@all
i have a little problem with a script based on GetPasswort script by Mutor,
the script registered users and posts a account info to hubbot,
the problem is when i register a nick like "blabla bla" or with passord like "blabla bla" the script brings the following error:
.lua:121: attempt to concatenate local `p3' (a nil value)
can someone modify the script that it brings no errors again?

(sry 4 the terrible english^^)

here the code:


-- based on GetPassword 2.0c LUA 5 by Mutor 3/14/05


PassCfg = {
--//-- Botname pulled from the hub or use "Custom" name
["BotName"] = frmHub:GetHubBotName(),
--//-- Register PassCfg["BotName"] name?, 0=no/1=yes
["RegBot"] = 1,
--//-- PassCfg["BotName"] Description, "" = none
["BotDesc"] = "",
--//-- PassCfg["BotName"] has a key?, 0=no/1=yes
["BotIsOp"] = 1,
--//-- Bots email address, "" = none
["BotMail"] = "",
--//-- Menu name, pulled from the hub or use "Custom" name
["PassMenu"] = "Befehle?",
--//-- Custom submenu name
["PassSubMenu"] ="User registrieren",
--//-- Reg Command
["ChgPassCmd"] = "!reguserwithaccinfo",
--Set your profiles here. >=1 can reg guest, >=2 can reg user, >=3 can reg all
["PassProfiles"] = {
[0] = 3,
[1] = 2,
[2] = 1,
[3] = 0,
[4] = 0,
[5] = 0,
[6] = 0,
[9] = 0,
},
}

Main = function()
if PassCfg["BotName"] ~= frmHub:GetHubBotName() and PassCfg["RegBot"] == 1 then
frmHub:RegBot(PassCfg["BotName"], PassCfg["BotIsOp"], PassCfg["BotDesc"], PassCfg["BotMail"])
end
end

NewUserConnected = function(user, data)
PassCmds(user)
end

OpConnected = NewUserConnected

ChatArrival = function(user, data)
data=string.sub(data,1,string.len(data)-1)
local s,e,cmd = string.find(data,"^%b<>%s+(%p%w+)")
local s,e,usr = string.find(data,"^%b<>%s+%p%w+%s+(%S+)")
local s,e,pwd = string.find(data,"^%b<>%s+%p%w+%s+%S+%s+(%S+)")
local s,e,pm = string.find(data,"^%b<>%s+%p%w+%s+%S+%s+%S+%s(%S+)")
if cmd == PassCfg["ChgPassCmd"] then
if  usr == nil  or pwd == nil or pm == nil then   
user:SendData(PassCfg["BotName"],"Sorry "..user.sName..", falsche Eingabe.")
return 1
else
if PassCfg["PassProfiles"][user.iProfile] >= 1  then
if PassCfg["PassProfiles"][user.iProfile] == 1 and pm == "8" then
ChangePass(user, usr, pwd, pm)
return 1
elseif PassCfg["PassProfiles"][user.iProfile] == 2  and pm == "7" then
ChangePass(user, usr, pwd, pm)
return 1
elseif PassCfg["PassProfiles"][user.iProfile] == 2  and pm == "8" then
ChangePass(user, usr, pwd, pm)
return 1
elseif PassCfg["PassProfiles"][user.iProfile] == 3 then
ChangePass(user, usr, pwd, pm)
return 1
else
user:SendData(PassCfg["BotName"],"Sorry "..user.sName..", du bist nicht befugt das Profil "..pm.." zu reggen!")
return 1
end
else
user:SendData(PassCfg["BotName"],"Sorry "..user.sName..", du bist nicht befugt zu reggen!")
return 1
end
end
end
end

GetPass = function(user, name)
local pass = frmHub:GetUserPassword(name)
local p1 = GetProfileName(user.iProfile)
if pass then
local p2 = GetProfileName(GetUserProfile(name))
PassMsg = "ACCINFO angefordert von:    [-->]  "..p1.."  "..user.sName.." .\r\n\r\n"..
"\r\n\t\t"..
"_______________________________________________\r\n\t\t"..
"???????????????????????????????????????????????\r\n\t\t\t"..
"______________________________ \r\n\t\t\t"..
"Hubname:    "..frmHub:GetHubName().." \r\n\t\t\t"..
"Hubaddy:     "..frmHub:GetHubAddress()..":"..
""..frmHub:GetHubPort().." \r\n\t\t\t"..
"Nickname:   "..name.." \r\n\t\t\t"..
"Passwort:     "..pass.." \r\n\t\t\t"..
"Profil:            "..p2.."\r\n\t\t\t"..
"?????????????????????????????? \r\n\t\t"..
"_______________________________________________\r\n\t\t"..
"???????????????????????????????????????????????\r\n\r\n"
user:SendPM(PassCfg["BotName"],PassMsg)
else
ErrMsg = "Anfrage f?r:    "..p1.." "..user.sName.."\r\n\r\n"..
"\t\tSorry, "..name.." wurde nicht gefunden in der Userliste.\r\n"..
"\t\t?berpr?fe deine Eingabe und versuchs nochmal.\r\n\r\n"
user:SendPM(PassCfg["BotName"],ErrMsg)
end
end

ChangePass = function(user, nick, pass, pm)
if frmHub:isNickRegged(nick)  then
user:SendData(PassCfg["BotName"],"Sorry "..user.sName..", Nick schon vergeben.")
return 1
else
AddRegUser(nick, pass, pm)
GetPass(user, nick)
local p3 = GetProfileName(GetUserProfile(nick))
local p4 = GetProfileName(user.iProfile)
local info = frmHub:GetHubBotName()
SendPmToOps(info,p4.." "..user.sName.." hat "..nick.." mit dem Profil "..p3.." gereggt.")
return 1
end

user,nick,pass,pm = nil,nil,nil,nil
end

function PassCmds(user)
if PassCfg["PassProfiles"][user.iProfile] then
if PassCfg["PassProfiles"][user.iProfile] == 1 then
        user:SendData("$UserCommand 1 1 |")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\Anw?rter$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 8&#124;|") -- guest
end
if PassCfg["PassProfiles"][user.iProfile] == 2 then
        user:SendData("$UserCommand 1 1 |")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\User$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 7&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\Anw?rter$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 8&#124;|") -- user
end
if PassCfg["PassProfiles"][user.iProfile] >= 3 then
user:SendData("$UserCommand 1 1 |")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\AD$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 0&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\AS$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 1&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\OP$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 2&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\VT$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 3&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\SVIP$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 4&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\VIP$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 5&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\REG$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 6&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\User$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 7&#124;|")         
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\Anw?rter$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 8&#124;|")
user:SendData("$UserCommand 1 1 "..PassCfg["PassMenu"].."\\Reg/Upgrade\\"..PassCfg["PassSubMenu"]..
"\\Server$<%[mynick]> "..PassCfg["ChgPassCmd"].." %[line:Welcher User?] %[line:Neues Passwort] 9&#124;|")
end
end
end



greez frogger (the jumper:)
sorry i have forgotten to say:
the hubsoft is lua5.0x
greez frogger (the jumper:)
Title: Re: i have a little bug :(
Post by: bastya_elvtars on 28 February, 2007, 18:59:27
I don't know if registered nicks may contain spaces. It is not recommended, though.
Title: Re: i have a little bug :(
Post by: frogger on 28 February, 2007, 19:35:49
yes but this is the problem when mistake an brings a space in it then comes a error :(
i only will that the script brings a warning like "sorry no spaces in nick or pw" but no errors :(
its possible to block spaces, stop the error an gives a message like "sry no spaces in nick or pw" ?
ready  ;D problem terminated hehe

greez frogger (the jumper:)
Title: Re: i have a little bug :(
Post by: bastya_elvtars on 01 March, 2007, 00:45:30
Isn't this supposed to catch spaceless nicks anyway?
Title: Re: i have a little bug :(
Post by: bastya_elvtars on 01 March, 2007, 01:24:21
local cmd,usr,pwd,pm = data:match("^%b<>%s+(%p%w+)%s+(%S+)%s+(%S+)%s(%d+)")

How about this?