Hi,
I was wondering if someon1 can make a script like this:
when u type !helpdesk it opens a new PM wherer the user can chat to evrey OP
When the user has joined the helpdesk in the helpdesk will show a message that user <name> has joined the helpdesk.
and when he wants to leave the helpdesk he typs !hstop and then a message will shown that the user has left the helpdesk.
Greedz Newbie , i really apreciate this! ;D
I think it is a chatrooms scirpts you need for that...
try using the search function on the board for 'Chatroom' ...
Quote from: Herodes on 01 March, 2006, 17:51:25
I think it is a chatrooms scirpts you need for that...
try using the search function on the board for 'Chatroom' ...
Yes it is an chatroom but a little modified i can edit lua5 but dont know how to do this, maybe someon1 can mod or make me that script as i request.. maybe mod the pm2ops from robocop
EDIT://
This script is never made before i believe, or is not given public. so i think more people will apreciate this script if someon1 makes it!
Quote from: [HE]Newbie on 01 March, 2006, 17:53:19
Yes it is an chatroom but a little modified i can edit lua5 but dont know how to do this, maybe someon1 can mod or make me that script as i request.. maybe mod the pm2ops from robocop
hmm..
Robocop from what I know can't be compiled.. so forget about that..
give the chatroom script a try and report back ..
( you can set many many permissions and configuration options in the script i know of )
i want a little modding script of Pm2OPS see above my request.. its just same but a little bit text more:P maybe u can mod it like that.
(sorry for my bad English, if u dont understand it i will try to explain it on a other way
Quote from: Herodes on 01 March, 2006, 17:56:03
Quote from: [HE]Newbie on 01 March, 2006, 17:53:19
Yes it is an chatroom but a little modified i can edit lua5 but dont know how to do this, maybe someon1 can mod or make me that script as i request.. maybe mod the pm2ops from robocop
hmm..
Robocop from what I know can't be compiled.. so forget about that..
give the chatroom script a try and report back ..
( you can set many many permissions and configuration options in the script i know of )
Just like Herodes says, first try something with the chatroom script and then report back.
Little adjustments can also be made by users themselves in the configuration for instance!
i lookt at a extra chat, but i dont know where to put the cmnds
Quote from: [HE]Newbie on 01 March, 2006, 18:18:36
i lookt at a extra chat, but i dont know where to put the cmnds
If you're using Chatrooms, type the commands in PM to the created/desired chatroom.
jiten your script looks pretty same but needs a little mod. for my req.
Quote from: [HE]Newbie on 01 March, 2006, 18:30:02
jiten your script looks pretty same but needs a little mod. for my req.
Tell me about it ;)
i have someon1 who gots the script i request but he wodnt give it:( take look at: diganet9.no-ip.info:4221) thats what i request:P, but the maker dosnt gives it public:(
[20:27:41] <Herodes> hello
[20:27:42] <[_HeLPDeSK_]> Type help!
[20:27:45] <Herodes> !help
[20:27:46] <[_HeLPDeSK_]> Type help!
[20:27:48] <Herodes> help
[20:27:49] <[_HeLPDeSK_]> Type help!
[20:27:52] <Herodes> help
[20:27:52] <[_HeLPDeSK_]> Type help!
[20:28:04] <Herodes> +help
[20:28:04] <[_HeLPDeSK_]> Type help!
[20:28:09] <Herodes> help!
[20:28:10] <[_HeLPDeSK_]> Type help!
that sould be easy as
function ToArrival( user, data )
...
if to == bot then
user:SendPM( bot, "Type help!" )
end
...
end
;D
lol , its a begin indeed ;D
Come on guys, i know more guys wants it.. and please can someon1 make me this request :o
Quote from: [HE]Newbie on 02 March, 2006, 00:59:16
Come on guys, i know more guys wants it.. and please can someon1 make me this request :o
HEY~! did you try the Chatrooms script by jiten ? if not don't continue posting pls !...
Do I really need to make a 'How to ask' announcement?
i have tryed to add things in the script and stuff and asked much guys for helping and shit.. much of them are also saying its not the easyest script and i am also not a fanatic scripter but i sometimes edit scripts..
Greedz newbie
EDIT:\\
Sorry for the style how i asked it :-[
there is nothing to edit...
you find me in a dizzy mood ... so there you go I'll spell it out for you..
- Step 1: get this (http://ptxscriptdb.psycho-chihuahua.net/request.php?144) script in the scripts forlder of your ptokax...
- Step 2: startup Ptx or reload the scripts if it is running already...
- Step 3: logon with the nick of the owner and type '!mkchat -HelpDesk-'
- Step 4: go in the pm mode with the -HelpDesk-
- Step 5: type in the pm '!lock on'
- Step 6: type in the pm '!autologin on'
- Step 7: type in the pm '!invite <nick_name of any Op you want to be able to provide help advice>'
now the Helpdesk chatroom is ready..add users by pm to the -HelpDesk- typing '!invite <nick of the user that needs help>'
and remove them with '!remove <nick to remove>'
if you want to see which users are there are on the chatroom type in pm to the HelpDesk : '!members'
if you want the chatroom to be hidden from users type in the pm '!hide'
if you want to delete the Chatroom type in the mainchat '!delchat <name of the chatroom>'
....... pls don't tell me that you don't understand .. goodnight
Quote from: [HE]Newbie on 02 March, 2006, 01:09:37
i have tryed to add things in the script and stuff and asked much guys for helping and shit.. much of them are also saying its not the easyest script and i am also not a fanatic scripter but i sometimes edit scripts..
Greedz newbie
EDIT:\\
Sorry for the style how i asked it :-[
If I get some free time today, I'll make it. If not, probably tomorrow.
Cheers
@ herodes
Ok Herodes its a good script but not probably what i am looking for: i am looking for this:
here is what it does-
You type !helpdesk and you are logged into a private chatroom with all Ops, you recieve this message -
[17:40:10] <[_HeLPDeSK_]>
If you have any questions or problems write it here, maybe we can help you. If nobody answers then try again later.
Type !stop: To leave the helpdesk
But thnx so far m8, i really apreciate !!
[17:40:11] <[_HeLPDeSK_]> Toobster?? has joined the helpdesk!
@jiten
Thnx jiten that would be cool.. if u need more help for how it needs to be then just pm me!
Haven't tested much, but, here it goes a quick mod. Feel free to report problems.
--[[
HelpDesk by jiten (3/2/2006)
]]--
tSettings = {
sBot = "[_HeLPDeSK_]",
fHelp = "tHelpDesk.tbl",
}
tMembers = {}
Main = function()
frmHub:RegBot(tSettings.sBot)
for a,b in pairs(frmHub:GetOperators()) do
tMembers[b.sNick] = tMembers[b.sNick] or 1
SaveToFile(tSettings.fHelp,tMembers,"tHelpDesk")
end
end
ToArrival = function(user,data)
local s,e,to,msg = string.find(data, "^$To:%s+(%S+)%s+From:%s+%S+%s+$%b<>%s+(.*)|$")
if to == tSettings.sBot then
local s,e,cmd = string.find(msg, "^%!(%a+)")
if not user.bOperator and cmd and tCmds[cmd] then
return tCmds[cmd](user),1
end
if tMembers[user.sName] or user.bOperator then
tMembers[user.sName] = tMembers[user.sName] or 1
PM(msg, user.sName)
else
user:SendPM(tSettings.sBot, "*** Type !helpdesk to login.")
end
return 1
end
end
tCmds = {
["leave"] = function(user)
if tMembers[user.sName] then
tMembers[user.sName] = nil
user:SendPM(tSettings.sBot,"*** You have left the HelpDesk!")
PM(user.sName.." left!",user.sName)
SaveToFile(tSettings.fHelp,tMembers,"tHelpDesk")
end
end,
["helpdesk"] = function(user)
if not tMembers[user.sName] then
tMembers[user.sName] = 1
user:SendPM(tSettings.sBot,"*** You have joined the HelpDesk!")
PM(user.sName.." joined!",user.sName)
SaveToFile(tSettings.fHelp,tMembers,"tHelpDesk")
end
end,
}
PM = function(msg, from)
for nick, id in pairs(tMembers) do
if nick ~= from then
SendToNick(nick, "$To: "..nick.." From: "..tSettings.sBot.." $<"..from.."> "..msg)
end
end
end
Serialize = function(tTable,sTableName,hFile,sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n");
for key,value in tTable do
if (type(value) ~= "function") then
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key);
if(type(value) == "table") then
Serialize(value,sKey,hFile,sTab.."\t");
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
hFile:write(sTab.."\t"..sKey.." = "..sValue);
end
hFile:write(",\n");
end
end
hFile:write(sTab.."}");
end
SaveToFile = function(file,table,tablename)
local hFile = io.open(file,"w+") Serialize(table,tablename,hFile); hFile:close()
end
Ok jiten i am gonna test it now..! will report ! looks on first look very sweet man
Bug 01
when u type !helpdesk nothing happens at me:S
Quote from: [HE]Newbie on 02 March, 2006, 22:04:40
Ok jiten i am gonna test it now..! will report ! looks on first look very sweet man
Bug 01
when u type !helpdesk nothing happens at me:S
Only works in PM.
Also tested it to. Working only in pm to helpdesk. Have tryed all profiles. Profiles ops, masters, mod and netfounder don't see pm from Helpdesk (*** You have joined the HelpDesk!)
Quote from: DJ Bert on 03 March, 2006, 00:20:30
Working only in pm to helpdesk
Yep, there's no ChatArrival... :P
i see jiten and mutor are both busy scripting one, so i guess i do not have to come up with yet another try script!
keep it up fellows mates. ;D
lol
Quote from: [HE]Newbie on 02 March, 2006, 22:04:40
when u type !helpdesk nothing happens at me:S
True. I only allowed commands in PM but, will change that for main too.
Quote from: DJ Bert on 03 March, 2006, 00:20:30
Also tested it to. Working only in pm to helpdesk. Have tryed all profiles. Profiles ops, masters, mod and netfounder don't see pm from Helpdesk (*** You have joined the HelpDesk!)
All the operators are automatically added to the member list on script re/start and as it's a HelpDesk (thought that they should always remain there). Anyway, I'll change it so that they can optionally leave and join.
Hey guys, thnx for scripting.. Respect! gonna test it out now
Both scripts are very close to my request some little fixxes could make it perfecter then it is now!! if u guys would pm me or something then i try to explain what the little fixxes are but if u cant this scripts OWNED!!!!! i really can tip it for the other guys!
Ok I ran this script in my hub and got an unexpected error so I made some revisements. All credits to Mutor. Revised by me.
--[[
HelpDesk 1.0 LUA 5
By Mutor
Modified By Mikey
Creates a support chat, open to all that wish to join
- Auto-invites all online operators
- Listens for commands in main and helpdesk pm
- Ops and users may ignore the chat window by command
- Includes context menu [right click]
- Users joining chat are shown a list of participants
- Saves chat user's status to file
]]--
DeskCfg = {
Bot = "[HelpDesk]", -- Bot name
Desc = "Support Chat Room", -- Bot description
Mail = "http://mdnetwork.no-ip.org/forums", -- Bot email address
Users = {}, -- Chat users table
Exclude = {}, -- Exclusion table
File = "Helpdesk.dat", -- File to save user data
Menu = "Put Hub Name Here", -- Menu name pulled from hub, uses hub name for menu
SubMenu ="Helpdesk", -- Custom submenu
}
Main = function()
frmHub:RegBot(DeskCfg.Bot, 1, DeskCfg.Desc, DeskCfg.Mail)
local Login = os.date()
local Ops = table.getn(frmHub:GetOnlineOperators())-1
local Msg1 = "You have been enabled for the Helpdesk. "..
"Aside from yourself there are "..Ops.." other online Op(s) in the Helpdesk."
for i,v in pairs(frmHub:GetOnlineOperators()) do
DeskCfg.Users[v.sName]={v.iProfile,Login}
end
if loadfile(DeskCfg.File) then
dofile(DeskCfg.File)
else
Save_File(DeskCfg.File,DeskCfg,"DeskCfg")
end
end
OnExit = function()
Save_File(DeskCfg.File,DeskCfg,"DeskCfg")
end
NewUserConnected = function(user)
local bot = DeskCfg.Bot
local Login = os.date()
local Msg1 = "You have been enabled for the Helpdesk Chat. Right click hub tab or user list for commands."
local Msg2 = "Opening chat window to the Helpdesk"
local Msg3 = user.sName.." has entered the Helpdesk"
if user.bOperator then
DeskCfg.Users[user.sName]={user.iProfile,Login}
for i,v in pairs(DeskCfg.Users) do
if i ~= user.sName then
SendToNick(i, "$To: "..i.." From: "..bot.." $"..bot.." "..Msg3.."|")
end
end
user:SendData(bot,Msg1.."\r\n"..Msg2)
user:SendPM(bot,Msg2)
end
DeskCmds(user)
Save_File(DeskCfg.File,DeskCfg,"DeskCfg")
end
OpConnected = NewUserConnected
UserDisconnected = function(user)
if DeskCfg.Users[user.sName] then
local Msg1 = user.sName.." has left the Helpdesk"
for i,v in pairs(DeskCfg.Users) do
if i ~= user.sName then
SendPmToNick(i, DeskCfg.Bot, Msg1)
end
end
DeskCfg.Users[user.sName] = nil
Save_File(DeskCfg.File,DeskCfg,"DeskCfg")
end
end
OpDisconnected = UserDisconnected
ChatArrival = function(user,data)
local s,e,cmd = string.find(data,"^%b<>%s%p(%w+)")
local s,e,msg = string.find(data,"^%b<>%s%p%w+%s(.+)|$")
if cmd then
local Login = os.date()
local Cmds = {
["Helpdesk"] = function(user,data)
Join(user,data,nil,msg)
end,
["exitdesk"] = function(user,data)
Part(user,data,nil)
end,
["afk"] = function(user,data)
Away(user,data,nil)
end
}
if Cmds[cmd] then
return 1, Cmds[cmd](user,data)
end
end
end
ToArrival = function(user,data)
local s,e,to = string.find(data,"^$To:%s(%S+)%s+From:")
local s,e,cmd = string.find(data,"$%b<>%s%p(%w+)")
local s,e,msg = string.find(data,"$%b<>%s(.+)|$")
if to and to == DeskCfg.Bot then
if cmd then
local Cmds = {
["Helpdesk"] = function(user,data)
Join(user,data,1,msg)
end,
["exitdesk"] = function(user,data)
Part(user,data,1)
end,
["afk"] = function(user,data)
Away(user,data,1)
end
}
if Cmds[cmd] then
return 1, Cmds[cmd](user,data)
end
else
if msg and DeskCfg.Users[user.sName] then
for i,v in pairs(DeskCfg.Users) do
if i ~= user.sName and not DeskCfg.Exclude[i] then
SendToNick(i, "$To: "..i.." From: "..DeskCfg.Bot..
" $<"..user.sName.."> "..msg.."|")
end
end
end
end
end
end
Join = function(user,data,pm,msg)
local bot = DeskCfg.Bot
if not DeskCfg.Users[user.sName] then
local query = ""
if msg then
query = " and has asked for help with: "..msg
end
local Login = os.date()
DeskCfg.Users[user.sName] = {user.iProfile,Login}
local Msg0 = "Connected to Helpdesk"
local Msg1 = Msg0.."\r\n\r\n\t"..string.format("%-35s", "Current User(s)")..
"\t"..string.format("%-16s","User Profile").."\t"..
"Logged Into Chat Since:\r\n\t"..string.rep("?",16)..
"\t"..string.rep("?",10).."\t"..string.rep("?",20).."\r\n"
local Msg2 = user.sName.." has entered the Helpdesk,"..query.."."
for i,v in pairs(DeskCfg.Users) do
local Profile = GetProfileName(v[1]) or "Unregistered"
Msg1 = Msg1.."\t"..string.format("%-35s", i).."\t"..
string.format("%-16s",Profile).."\t"..v[2].."\r\n"
if i ~= user.sName then
SendPmToNick(i, bot, Msg2)
end
end
user:SendData(bot,Msg0)
user:SendPM(bot,Msg1.."\r\n")
Save_File(DeskCfg.File,DeskCfg,"DeskCfg")
else
local Msg3 = user.sName.." you're already connected to the Helpdesk."
if pm then
user:SendPM(bot,Msg3)
else
user:SendData(bot,Msg3)
end
end
end
Part = function(user,data,pm)
local bot = DeskCfg.Bot
if DeskCfg.Users[user.sName] then
local Msg1 = user.sName.." has left the Helpdesk"
local Msg2 = user.sName..", you have been removed from chat"
for i,v in pairs(DeskCfg.Users) do
if i ~= user.sName then
SendPmToNick(i, bot, Msg1)
end
end
DeskCfg.Users[user.sName] = nil
if pm then
user:SendPM(bot,Msg2)
else
user:SendData(bot,Msg2)
end
Save_File(DeskCfg.File,DeskCfg,"DeskCfg")
else
local Msg3 = user.sName.." you're not connected to the Helpdesk."
if pm then
user:SendPM(bot,Msg3)
else
user:SendData(bot,Msg3)
end
end
end
Away = function(user,data,pm)
local bot = DeskCfg.Bot
if DeskCfg.Users[user.sName] then
if not DeskCfg.Exclude[user.sName]then
DeskCfg.Exclude[user.sName] = 1
local Msg1 = "You're now ignoring messages from the Helpdesk"
if pm then
user:SendPM(bot,Msg1)
else
user:SendData(bot,Msg1)
end
else
DeskCfg.Exclude[user.sName] = nil
local Msg2 = user.sName.." you're no longer ignoring the Helpdesk."
if pm then
user:SendPM(bot,Msg2)
else
user:SendData(bot,Msg2)
end
end
Save_File(DeskCfg.File,DeskCfg,"DeskCfg")
else
local Msg3 = user.sName.." you're not connected to the Helpdesk."
if pm then
user:SendPM(bot,Msg3)
else
user:SendData(bot,Msg3)
end
end
end
DeskCmds = function(user)
local Menu,SubMenu = DeskCfg.Menu,DeskCfg.SubMenu
user:SendData("$UserCommand 1 3 "..Menu.."\\"..SubMenu.."\\Join Help Chat$<%[mynick]> "..
"+Helpdesk %[line:Question or problem <optional>]|")
user:SendData("$UserCommand 1 3 "..Menu.."\\"..SubMenu.."\\Part Help Chat$<%[mynick]> +exitdesk|")
user:SendData("$UserCommand 1 3 "..Menu.."\\"..SubMenu.."\\Toggle Ignore Help Chat$<%[mynick]> +afk|")
end
Save_Serialize = function(tTable, sTableName, hFile, sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n" )
for key, value in tTable do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if(type(value) == "table") then
Save_Serialize(value, sKey, hFile, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
hFile:write( sTab.."\t"..sKey.." = "..sValue)
end
hFile:write( ",\n")
end
hFile:write( sTab.."}")
end
Save_File = function(file,table, tablename )
local hFile = io.open (file , "w")
Save_Serialize(table, tablename, hFile)
hFile:close()
end
The mail domain is a goof on my part thats not what caused the error i got. It wouldnt grab the hub name from the hub so i changed it to where u put the name in yourself. Then i got and unexpected = error. I will rerun your version and paste the exact error I got then u can go from there. Was just trying to help, guess it was a bust. sorry
--[[
HelpDesk 1.1 by jiten (3/2/2006)
Changelog:
- Added: Commands work in Mainchat;
- Changed: Operators are able to leave and join HelpDesk;
- Added: Members command;
- Changed: Operator autologin switch (3/4/2006)
]]--
tDesk = {
-- Bot Name
sBot = "[_HeLPDeSK_]",
-- HelpDesk database
fHelp = "tHelpDesk.tbl",
-- Autologin every operator on script re/start
bAutoLogin = true
}
tMembers = {}
Main = function()
frmHub:RegBot(tDesk.sBot)
if loadfile(tDesk.fHelp) then dofile(tDesk.fHelp) end
if tDesk.bAutoLogin then
for a,b in pairs(frmHub:GetOperators()) do
tMembers[b.sNick] = 1
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end
end
ChatArrival = function(user,data)
local s,e,cmd = string.find(data, "^%b<>%s+%!(%a+)")
if cmd and tCmds[string.lower(cmd)] then
return tCmds[cmd](user, data), 1
end
end
ToArrival = function(user,data)
local s,e,to,msg = string.find(data, "^$To:%s+(%S+)%s+From:%s+%S+%s+$%b<>%s+(.*)|$")
if to == tDesk.sBot then
local s,e,cmd = string.find(msg, "^%!(%a+)")
if cmd and tCmds[string.lower(cmd)] then
return tCmds[cmd](user, data), 1
end
if tMembers[user.sName] or user.bOperator then
tMembers[user.sName] = tMembers[user.sName] or 1
PM(msg, user.sName)
else
user:SendPM(tDesk.sBot, "*** You're not a member here. Type !helpdesk to login.")
end
return 1
end
end
tCmds = {
["leave"] = function(user)
if tMembers[user.sName] then
tMembers[user.sName] = nil
user:SendPM(tDesk.sBot,"*** You have left the HelpDesk!")
PM(user.sName.." left!",tDesk.sBot)
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end,
["helpdesk"] = function(user)
if not tMembers[user.sName] then
PM(user.sName.." joined!",tDesk.sBot)
tMembers[user.sName] = 1
user:SendPM(tDesk.sBot,"*** You have joined the HelpDesk!")
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end,
["members"] = function(user)
if tMembers[user.sName] then
local tMsg = "\r\n\r\n\t"..string.rep("-",40).."\r\n\t? ? Member List:\r\n\t"..string.rep("-",40).."\r\n"
table.foreach(tMembers, function(v,i)
tMsg = tMsg.."\t ? "..v.."\r\n"
end)
user:SendPM(tDesk.sBot,tMsg)
end
end
}
PM = function(msg, from)
for nick, id in pairs(tMembers) do
if nick ~= from then
SendToNick(nick, "$To: "..nick.." From: "..tDesk.sBot.." $<"..from.."> "..msg)
end
end
end
Serialize = function(tTable,sTableName,hFile,sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n");
for key,value in tTable do
if (type(value) ~= "function") then
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key);
if(type(value) == "table") then
Serialize(value,sKey,hFile,sTab.."\t");
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
hFile:write(sTab.."\t"..sKey.." = "..sValue);
end
hFile:write(",\n");
end
end
hFile:write(sTab.."}");
end
SaveToFile = function(file,table,tablename)
local hFile = io.open(file,"w+") Serialize(table,tablename,hFile); hFile:close()
end
Woooow This is what i want if u put this Message for the user when he joined as first, then its PERFECT:
If you have any questions or problems write it here, maybe we can help you. If nobody answers then try again later.
!stop: Leave the helpdesk
This script is reall the request i requested:P, i am using it now if i see any bugs, or problems or other things i want or see then i reply!!!!!
Very thnx all scripters!!!!!!!
Please don't quote complete codeblocks! -- // bastya_elvtars
Here you go...
--[[
HelpDesk 1.1b by jiten (3/2/2006)
Changelog:
- Added: Commands work in Mainchat;
- Changed: Operators are able to leave and join HelpDesk;
- Added: Members command;
- Changed: Operator autologin switch (3/4/2006)
- Changed: Commands can be changed in tDesk
- Changed: Message on login (3/5/2006)
- Added: RightClick Commands (3/7/2006)
]]--
tDesk = {
-- Bot Name
sBot = "[_HeLPDeSK_]",
-- HelpDesk database
fHelp = "tHelpDesk.tbl",
-- Autologin every operator on script re/start
bAutoLogin = true,
-- Commands
sLeave = "leave", sJoin = "helpdesk", sMembers = "members"
}
tMembers = {}
Main = function()
frmHub:RegBot(tDesk.sBot)
if loadfile(tDesk.fHelp) then dofile(tDesk.fHelp) end
if tDesk.bAutoLogin then
for a,b in pairs(frmHub:GetOperators()) do
tMembers[b.sNick] = 1
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end
end
ChatArrival = function(user,data)
local s,e,cmd = string.find(data, "^%b<>%s+%!(%a+)")
if cmd and tCmds[string.lower(cmd)] then
return tCmds[cmd](user, data), 1
end
end
ToArrival = function(user,data)
local s,e,to,msg = string.find(data, "^$To:%s+(%S+)%s+From:%s+%S+%s+$%b<>%s+(.*)|$")
if to == tDesk.sBot then
local s,e,cmd = string.find(msg, "^%!(%a+)")
if cmd and tCmds[string.lower(cmd)] then
return tCmds[cmd](user, data), 1
end
if tMembers[user.sName] or user.bOperator then
tMembers[user.sName] = tMembers[user.sName] or 1
PM(msg, user.sName)
else
user:SendPM(tDesk.sBot, "*** You're not a member here. Type !helpdesk to login.")
end
return 1
end
end
NewUserConnected = function(user)
if user.bUserCommand then
user:SendData("$UserCommand 1 3 HelpDesk\\Join$<%[mynick]> !"..tDesk.sJoin.."|")
user:SendData("$UserCommand 1 3 HelpDesk\\Leave$<%[mynick]> !"..tDesk.sLeave.."|")
user:SendData("$UserCommand 1 3 HelpDesk\\Member List$<%[mynick]> !"..tDesk.sMembers.."|")
end
end
OpConnected = NewUserConnected
tCmds = {
[tDesk.sLeave] = function(user)
if tMembers[user.sName] then
tMembers[user.sName] = nil
user:SendPM(tDesk.sBot,"*** You have left the HelpDesk!")
PM(user.sName.." left!",tDesk.sBot)
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end,
[tDesk.sJoin] = function(user)
if not tMembers[user.sName] then
PM(user.sName.." joined!",tDesk.sBot)
tMembers[user.sName] = 1
user:SendPM(tDesk.sBot,"*** You have joined the HelpDesk!\r\n\tIf you have any questions or problems "..
"write them here, maybe we can help you. If nobody answers then try again later.\r\n\t"..
"!"..tDesk.sLeave..": Leave the HelpDesk.")
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end,
[tDesk.sMembers] = function(user)
if tMembers[user.sName] then
local tMsg = "\r\n\r\n\t"..string.rep("-",40).."\r\n\t Member List:\r\n\t"..string.rep("-",40).."\r\n"
table.foreach(tMembers, function(v,i)
tMsg = tMsg.."\t ? "..v.."\r\n"
end)
user:SendPM(tDesk.sBot,tMsg)
end
end
}
PM = function(msg, from)
for nick, id in pairs(tMembers) do
if nick ~= from then
SendToNick(nick, "$To: "..nick.." From: "..tDesk.sBot.." $<"..from.."> "..msg)
end
end
end
Serialize = function(tTable,sTableName,hFile,sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n");
for key,value in tTable do
if (type(value) ~= "function") then
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key);
if(type(value) == "table") then
Serialize(value,sKey,hFile,sTab.."\t");
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
hFile:write(sTab.."\t"..sKey.." = "..sValue);
end
hFile:write(",\n");
end
end
hFile:write(sTab.."}");
end
SaveToFile = function(file,table,tablename)
local hFile = io.open(file,"w+") Serialize(table,tablename,hFile); hFile:close()
end
Woow thanx jiten really thanx, it works perfect, i will report bugs/questions later if i see problems but i think thats unpossible haha nice work both of ya btw!!
Ok Help me out please. Remember I am still trying to learn LUA 5. I tried to add right click commands to the latest release. I show no errors but the commands don't show up. Help please.
--[[
HelpDesk 1.1a by jiten (3/2/2006)
Modified By Mikey (3/6/2006)
Changelog:
- Added RC Menu
Changelog:
- Added: Commands work in Mainchat;
- Changed: Operators are able to leave and join HelpDesk;
- Added: Members command;
- Changed: Operator autologin switch (3/4/2006)
- Changed: Commands can be changed in tDesk
- Changed: Message on login (3/5/2006)
]]--
tDesk = {
-- Bot Name
sBot = "[_HeLpDeSk_]",
-- HelpDesk database
fHelp = "tHelpDesk.tbl",
-- Autologin every operator on script re/start
bAutoLogin = true,
-- Commands
sLeave = "leave", sJoin = "helpdesk", sMembers = "members"
}
tMembers = {}
Main = function()
frmHub:RegBot(tDesk.sBot)
if loadfile(tDesk.fHelp) then dofile(tDesk.fHelp) end
if tDesk.bAutoLogin then
for a,b in pairs(frmHub:GetOperators()) do
tMembers[b.sNick] = 1
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end
end
ChatArrival = function(user,data)
local s,e,cmd = string.find(data, "^%b<>%s+%!(%a+)")
if cmd and tCmds[string.lower(cmd)] then
return tCmds[cmd](user, data), 1
end
end
ToArrival = function(user,data)
local s,e,to,msg = string.find(data, "^$To:%s+(%S+)%s+From:%s+%S+%s+$%b<>%s+(.*)|$")
if to == tDesk.sBot then
local s,e,cmd = string.find(msg, "^%!(%a+)")
if cmd and tCmds[string.lower(cmd)] then
return tCmds[cmd](user, data), 1
end
if tMembers[user.sName] or user.bOperator then
tMembers[user.sName] = tMembers[user.sName] or 1
PM(msg, user.sName)
else
user:SendPM(tDesk.sBot, "*** You're not a member here. Type !helpdesk to login.")
end
return 1
end
end
tCmds = {
[tDesk.sLeave] = function(user)
if tMembers[user.sName] then
tMembers[user.sName] = nil
user:SendPM(tDesk.sBot,"*** You have left the HelpDesk!")
PM(user.sName.." left!",tDesk.sBot)
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end,
[tDesk.sJoin] = function(user)
if not tMembers[user.sName] then
PM(user.sName.." joined!",tDesk.sBot)
tMembers[user.sName] = 1
user:SendPM(tDesk.sBot,"*** You have joined the HelpDesk!\r\n\tIf you have any questions or problems "..
"write them here, maybe we can help you. If nobody answers then try again later.\r\n\t"..
"!"..tDesk.sLeave..": Leave the HelpDesk.")
SaveToFile(tDesk.fHelp,tMembers,"tMembers")
end
end,
[tDesk.sMembers] = function(user)
if tMembers[user.sName] then
local tMsg = "\r\n\r\n\t"..string.rep("-",40).."\r\n\t Member List:\r\n\t"..string.rep("-",40).."\r\n"
table.foreach(tMembers, function(v,i)
tMsg = tMsg.."\t ? "..v.."\r\n"
end)
user:SendPM(tDesk.sBot,tMsg)
end
end
}
PM = function(msg, from)
for nick, id in pairs(tMembers) do
if nick ~= from then
SendToNick(nick, "$To: "..nick.." From: "..tDesk.sBot.." $<"..from.."> "..msg)
end
end
end
SendCommands = function(user)
if UserCommands == 1 then
if user.bUserCommand then
user:SendData("$UserCommand 0 3")
user:SendData("UserCommand 1 0 HelpDesk\Join$%[mynick]!helpdesk|")
user:SendData("UserCommand 1 0 HelpDesk\Leave$%[mynick]!leave|")
user:SendData("UserCommand 1 0 HelpDesk\Member List$%[mynick]!members|")
end
end
end
Serialize = function(tTable,sTableName,hFile,sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n");
for key,value in tTable do
if (type(value) ~= "function") then
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key);
if(type(value) == "table") then
Serialize(value,sKey,hFile,sTab.."\t");
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
hFile:write(sTab.."\t"..sKey.." = "..sValue);
end
hFile:write(",\n");
end
end
hFile:write(sTab.."}");
end
SaveToFile = function(file,table,tablename)
local hFile = io.open(file,"w+") Serialize(table,tablename,hFile); hFile:close()
end
LOL....sounds like I messed up bad could u debug it so I can see exactly what I did wrong. I learn by seeing the fix. Thanks
Quote from: Mikey on 07 March, 2006, 02:34:49
LOL....sounds like I messed up bad could u debug it so I can see exactly what I did wrong. I learn by seeing the fix. Thanks
Last script updated with your request.
Regards