Need Help With This Script
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

Need Help With This Script

Started by tamilzone, 22 December, 2003, 20:27:11

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

tamilzone

BotName="[TZH Hub]"
allowConnSpeed={}
allowConnSpeed["28.8Kbps"]=1
allowConnSpeed["33.6Kbps"]=1
allowConnSpeed["56Kbps"]=1
allowConnSpeed["ISDN"]=1
allowConnSpeed["DSL"]=1
allowConnSpeed["Cable"]=1
allowConnSpeed["LAN(T1)"]=1
allowConnSpeed["LAN(T3)"]=1
allowConnSpeed["Satellite"]=1
SlotspPerConnSpeed={}
SlotspPerConnSpeed["28.8Kbps"]=15
SlotspPerConnSpeed["33.6Kbps"]=15
SlotspPerConnSpeed["56Kbps"]=15
SlotspPerConnSpeed["ISDN"]=15
SlotspPerConnSpeed["DSL"]=15
SlotspPerConnSpeed["Cable"]=15
SlotspPerConnSpeed["LAN(T1)"]=15
SlotspPerConnSpeed["LAN(T3)"]=15
SlotspPerConnSpeed["Satellite"]=15
AllowNeoModus=1
AllowDCPP=1
AllowMLDonkey=1
AllowReplika=1
AllowPePeK=1
trigs={["owner"]="[Admin]?Vinoth",["hubaddress"]="tamilzone.no-ip.com",["hubpage"]="htt?://www.tamilzone.ch.vu",["welcome"]="Welcome to Tamil Zone Hub",["ownerplace"]="Zurich,Switerland"}
awayArray={}
antiadvertisingtrigs={["dns2go"]=1,["ip.com"]=1,["serveftp"]=1,["kickass.net"]=1,["dyndns"]=1,["mine.nu"]=1}
seenArray={}
CommandFlood="flood"
CommandMassMessage="mm"
CommandMassMessageOps="mmops"
ComandAway="away"
ComandBack="back"
CommandAddGBEntry="#addGBEntry"
CommandReadGB="#readGB"
CommandMyIP="myip"
CommandOpenBotDialog="opbot"
CommandHelp="help"
--intern constants
cKB=1024
cMB=1024*cKB
cGB=1024*cMB
--helper functions
function isMCM(data)
if( strsub(data, 1, 1) == "<" ) then
return 1
else
return 0
end
end
function isPM(data)
if( strsub(data, 1, 3) == "$To" ) then
return 1
else
return 0
end
end

function ParsePM(data)
   s,e,whoTo,from,message = strfind(data,"$To:%s+(%S+)%s+From:%s+(%S+)%s+$%b<>%s+(.*)")
   --remove pipe
   message = strsub(message,1,strlen(message)-1)
   return whoTo,from,message
end
function ParseMCM(data)
   s,e,message = strfind(data, "%b<> (.*)")
   --remove pipe
   message = strsub(message,1,strlen(message)-1)
   return message
end

function ParseMyInfoString(data)
s,e,description,speed,email,share = strfind(data, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)")
--remove speed identifier
speed = strsub(speed,1,strlen(speed)-1)
return description,speed,email,share
end

function ParseDCPPDescription(description)
_,b, slots = strfind(description,"S:(%d+)")
_,b, dcver = strfind(description,"V:(%x.%x+)")
_,b, slots = strfind(description,"S:(%d+)")
_,b, hubs = strfind(description,"H:(%d+)")
_,b, bs = strfind(description,"B:(%x+)")
slots=tonumber(slots)
hubs=tonumber(hubs)


return dcver, slots, hubs, bs
end

function GetCommand(message)
s,e,command=strfind(message,"(%S+)")
return command
end

function GetOneParam(message)
s,e,param1=strfind(message,"%S+%s(.+)")
return param1
end

function GetTwoParam(message)
s,e,param1,param2=strfind(message,"%S+%s(%S+)%s(.+)")
return param1,param2
end


function tokenize (inString,token)
_WORDS = {}
local matcher = "([^?"..token.."]+)"
gsub(inString, matcher, function (w) tinsert(_WORDS,w) end)
return _WORDS
end
--checker functions
function MaxSlotsCheck(slots, connectiontype)
if (SlotspPerConnSpeed[connectiontype]>=slots)then
return 1
else
return 0
end
end

function IsDCPPCLient(description)
if strfind(description,"<++") then
return 1
else
return 0
end
end

function IsConnAllowed(speed)
if (allowConnSpeed[speed]==1)then
return 1
else
return 0
end
end

function CheckClientType(description)
local result=1

if (AllowDCPP==0) then
   if (IsDCPPCLient(description)) then
      result=0
   end
end
if (AllowMLDonkey==0) then
   if (strfind(description,"mldonkey")) then
      result=0
   end
end

if (AllowReplika==0) then
   if (strfind(description,"REPLIKA")) then
      result=0
   end
end
if (AllowPePeK==0) then
   if (strfind(description,"Pepek")) then
      result=0
   end
end


return result
end
function DoFlood(victim)
user=GetItemByName(victim)
for a=1,600 do
   user:SendPM(BotName..a,"you are flooded ....")
end
end
function ShowHelp(target)
target:SendPM(BotName,"Hi, I'm the incharge of this hub.I am providing you these commands for you.I will only follow these exact commands.")
if (target.bOperator) then
target:SendPM(BotName,"...........OP-COMMANDS.............")
target:SendPM(BotName,CommandFlood.." username: floods a user with 600 pms")
target:SendPM(BotName,CommandMassMessage.." text: sends a message to all users")
target:SendPM(BotName,CommandMassMessageOps.." text: sends a message to all ops")
target:SendPM(BotName,CommandOpenBotDialog..": Opens a window for the mainbot")
target:SendPM(BotName,"hideme: Hidden mode for you")
target:SendPM(BotName,"unhideme: Visible mode for you")
target:SendPM(BotName,"drop user: Drops a user")
target:SendPM(BotName,"ban user: Bans a user")
target:SendPM(BotName,"unban user: Unbans a user")
target:SendPM(BotName,"addvip name password: Adds a vip")
target:SendPM(BotName,"removevip name: Removes a vip")
end
target:SendPM(BotName,"...........USER-COMMANDS...............")
target:SendPM(BotName,CommandMyIP..": -=[Shows your own ip]=-")
target:SendPM(BotName,CommandHelp..": -=[Shows the current help window]=-")
target:SendPM(BotName,"time : [=-Shows the current date/time]=-")
target:SendPM(BotName,"seen user: -=[When was the user online?]=-")

target:SendPM(BotName,"...........AWAY-BOT..............")
target:SendPM(BotName,"awayreason: -=[announces that you are away]=-")
target:SendPM(BotName,"back : -=[announces that you are back]=-")

target:SendPM(BotName,"...........GUESTBOOK............")
target:SendPM(BotName,"#addGBEntry text: [=-adds a new entry to the guestbook]=-")
target:SendPM(BotName,"#readGB: -=[shows you the entire Guestbook]=-")
end
function HandleComand(curUser,message)
command=GetCommand(message)
if (curUser.bOperator) then
if (command==CommandFlood) then
   victim=GetOneParam(message)
   if (victim~=nil) then
      DoFlood(victim)
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: "..CommandFlood.." username")
   end
end
if (command==CommandMassMessage) then
   masstext=GetOneParam(message)
   if (masstext~=nil) then
      SendPmToAll(BotName,masstext)
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: "..CommandMassMessage.." text")
   end
end
if (command==CommandMassMessageOps) then
   masstext=GetOneParam(message)
   if (masstext~=nil) then
      SendPmToOps(BotName,masstext)
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: "..CommandMassMessageOps.." text")
   end
end
if (command==CommandOpenBotDialog) then
   curUser:SendPM(BotName,"How may i help?")
end
if (command=="hideme") then
   frmHub:UnregBot(curUser.sName)
end
if (command=="unhideme") then
   frmHub:RegBot(curUser.sName)
end
if (command=="drop") then
   victim=GetOneParam(message)
   if (victim~=nil) then
      tempuser=GetItemByName(victim)
      tempuser:Disconnect()
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: drop username")
   end
end
if (command=="ban") then
   victim=GetOneParam(message)
   if (victim~=nil) then
      tempuser=GetItemByName(victim)
      tempuser:NickBan()
      tempuser:Ban()
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: ban username")
   end
end
if (command=="unban") then
   victim=GetOneParam(message)
   if (victim~=nil) then
      Unban(victim)
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: unban username")
   end
end
if (command=="addvip") then
   vipname,vippass=GetTwoParam(message)
   if (vippass~=nil) then
      frmHub:AddRegUser(vipname,vippass,0)
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: addvip username password")
   end
end
if (command=="removevip") then
   vipname=GetOneParam(message)
   if (vipname~=nil) then
      frmHub:DelRegUser(vipname)
   else
      curUser:SendPM(BotName,"Wrong syntax - use that one: removevip username")
   end
end
end
if (command==CommandMyIP) then
   curUser:SendPM(BotName, "Your IP is "..curUser.sIP)
end
if (command==CommandHelp) then
   ShowHelp(curUser)
end
if (command==ComandAway) then
   arg=GetOneParam(message)
SendToAll(BotName,date("User "..curUser.sName.." told us at %T that he is away, because :")..arg.." ")
awayArray[curUser.sName]=arg
end
if (command==ComandBack) then
if (awayArray[curUser.sName]~=nil) then
awayArray[curUser.sName]=nil
SendToAll(BotName,date("User "..curUser.sName.." told us at %T that he is back"))
end
end
if (command=="seen") then
   target=GetOneParam(message)
   if (seenArray[target]~=nil) then
      curUser:SendPM(BotName,seenArray[target])
   else
      curUser:SendPM(BotName,"The user "..target.." wasnt seen here .... ")
   end
end
if (command==CommandAddGBEntry) then
arg= GetOneParam(message)
local handle=openfile("guestbook.dat","a")
write(handle,"("..curUser.sName..") wrote :"..arg.."?")
curUser:SendPM(BotName,"Guestbook entry saved ....")
SendToAll(BotName, "New entry in the guestbook!")
closefile(handle)
end
if (command==CommandReadGB) then
handle2=openfile("guestbook.dat","r")
if (handle2~=nil) then
line = read(handle2,"*a")
line=strsub(line,1,strlen(line)-1)
linearray=tokenize(line,"?")
for i=1,linearray.n do
curUser:SendPM(BotName,linearray)
end
closefile(handle2)
end
end
if (command=="time") then
   SendToAll(BotName, date("Today is %A the %D. Time is %T"))
end
--triggers
for key, value in trigs do
if( strfind( strlower(message), key) ) then
   SendToAll( BotName, value )
   break
   end
end
--antiadvertising
for key, value in antiadvertisingtrigs do
if( strfind( strlower(), key) ) then
   SendToAll( BotName, curUser.sName.." has been kicked for advertising. His IP was: "..curUser.sIP )
   curUser:Disconnect()
   break
   end
end
end


function Main()
frmHub:RegBot(BotName)
end
function OpConnected(curUser)
   SendToAll(BotName,"The OP "..curUser.sName.." has entered the Tamil Zone Hub")
   ShowHelp(curUser)
end
function OpDisconnected(curUser)
   SendToAll(BotName,"Our OP "..curUser.sName.." has left the Tamil Zone hub.")
seenArray[curUser.sName]=date(curUser.sName.." last seen at %d/%m/%Y %T .")
end
function NewUserConnected(curUser)
description,speed,email,share=ParseMyInfoString(curUser.sMyInfoString)
if (IsConnAllowed(speed)~=1) then
   curUser:SendPM(BotName,"Your connection-speed is not allowed in here -> disconnected"..IsConnAllowed(speed))
   curUser:Disconnect()
end
CheckClientType(description)
if (IsDCPPCLient(description)==1)then
dcver, slots, hubs, bs=ParseDCPPDescription(description)
if (MaxSlotsCheck(slots, speed)~=1) then
   curUser:SendPM(BotName,"You just have too much slots per connection. You could have max: "..SlotspPerConnSpeed[speed])
   curUser:Disconnect()
end
if (bs~=nil) then
if (tonumber(bs)<99) then
   curUser:SendPM(BotName,"You have a too less upload limit ....")
   curUser:Disconnect()
end
end
end
end
function UserDisconnected(curUser)
seenArray[curUser.sName]=date(curUser.sName.." last seen at %d/%m/%Y %T .")
end


function DataArrival(curUser,data)
local MessageRecognized = 0
if (isPM(data)==1) then
   whoto,from,message=ParsePM(data)
   MessageRecognized=1
if (awayArray[whoto]~= nil) then
curUser:SendPM(whoto,"I am currently away, because of: "..awayArray[whoTo])
end
end
if (isMCM(data)==1) then
   message=ParseMCM(data)
   from=curUser.sName
   whoto=BotName
   MessageRecognized=1
end
if ((MessageRecognized==1)and(whoto==BotName)) then
   HandleComand(curUser,message)
end
end







whats wrong with this file?




tamilzone.

Snoris

Quotewhats wrong with this file?

Erhm....Nothing??
Don't get any syntax..

But I can tell you this...Next time you post a script do it the right way :]

Use the ['code'] and ['/code']  (Witout the ')
Before and after the script ;)

((UKSN))shad_dow

hello all

yea theres no syntex error when u check but as soon as u run the sripct this syntex error appers

Syntax Error: bad argument #1 to `strlower' (string expected, got no value)

thinks thats what he was on about , but i still learning and i cant find out how to correct maybe phatty,chilla,plop etc can take a look for him

c ya l8z
creator of Therapy-X? bot

c h i l l a

sure, would help you, do you know when the error occurs, then I don't have to search for myself.

((UKSN))shad_dow

yo chilla , any time u put a command in main it does the command and then reports that error
creator of Therapy-X? bot

Event_Horizon

just an idea.. but registred Bots shouldn't have spaces in the name.... or am I wrong ???
Greez ????_H???z??
??????????????????

??/v\\ \'?\' ?@?? ???? is Secured by RoboCop? Created by Optimus?

plop

QuoteOriginally posted by Event_Horizon
just an idea.. but registred Bots shouldn't have spaces in the name.... or am I wrong ???
indeed, thats not allowed but the error comes from the anti advertising part.
strlower() <----- that should have something 2 do.
for example strlower(data)

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

c h i l l a

defently plop, thats a big mistake

I think it should be strlower(message)

and the PM error also will diasspear when you use one word as botname.

plop

QuoteOriginally posted by c h i l l a
defently plop, thats a big mistake

I think it should be strlower(message)

and the PM error also will diasspear when you use one word as botname.
didn't check that far.
just did a search for strlower and found it empty.

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

((UKSN))shad_dow

Quotedefently plop, thats a big mistake

I think it should be strlower(message)

and the PM error also will diasspear when you use one word as botname

well done chilla u were right all than need was to change strlower() to strlower(message) :)

right now going to studdy this script and disect it in to my brain for a few hrs to see how these commands work as a diffent script code-ed a different way

thx to all

l8z

(Need More scripts for more input :) :) :) :)  )
creator of Therapy-X? bot

kepp

QuoteOriginally posted by ((UKSN))shad_dow
Quotedefently plop, thats a big mistake

I think it should be strlower(message)

and the PM error also will diasspear when you use one word as botname

well done chilla u were right all than need was to change strlower() to strlower(message) :)

right now going to studdy this script and disect it in to my brain for a few hrs to see how these commands work as a diffent script code-ed a different way

thx to all

l8z

(Need More scripts for more input :) :) :) :)  )

That's the spirit :D

When you feel ready, You can try to make a small script that sends Different Welcome messages for each profile :)
Guarding    

((UKSN))shad_dow

-- created by ((UKSN))shad_dow 
--  welcome script for master,op,vip,guest,reg and admin 
--  idea for testing my lua so far ,by kepp 





sBot = "-=Welcome-Home=-"


function OpConnected(user) 

if user.iProfile == 0 then
     WelcomeMaster(user)
return 1
end
if user.iProfile == 1 then
     WelcomeOP(user)
return 1
end
end




function NewUserConnected(user)

     if user.iProfile == 2 then
     WelcomeVIP(user)
return 1
end
 if user.iProfile == 3 then
      WelcomeReg(user)
return 1
end
if user.iProfile == 4 then
      WelcomeGuest(user)
return 1
end
if user.iProfile == 5 then
      WelcomeAdmin(user)
return 1
end
  end


function WelcomeVIP(user)
SendToAll(sBot, "VIP "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeReg(user)
SendToAll(sBot, "REG "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeOP(user)
SendToAll(sBot, "OP "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeMaster(user)
SendToAll(sBot, "Hub owner "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeVIP(user)
SendToAll(sBot, "VIP "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeGuest(user)
SendToAll(sBot, "Guest "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeAdmin(user)
SendToAll(sBot, "Admin "..user.sName.." has entered the Hub, Welcome Home.")
end




function OPDisconnected(user)
if user.iProfile == 0 then
SendToAll(sBot, "Master "..user.sName.." has left the Hub, See you soon")
return 1
end
if user.iProfile == 1 then
SendToAll(sBot, "OP "..user.sName.." has left the Hub, See you soon")
return 1
end
end



function UserDisconnected(user)
if user.iProfile == 0 then
SendToAll(sBot, "Master "..user.sName.." has left the Hub, See you soon")
return 1
end
if user.iProfile == 1 then
SendToAll(sBot, "OP "..user.sName.." has left the Hub, See you soon")
return 1
end
if user.iProfile == 2 then
SendToAll(sBot, "VIP "..user.sName.." has left the Hub, See you soon")
return 1
end
if user.iProfile == 3 then
SendToAll(sBot, "REG "..user.sName.." has left the Hub, See you soon")
return 1
end
if user.iProfile == 4 then
SendToAll(sBot, "Guest "..user.sName.." has left the Hub, See you soon")
return 1
end
if user.iProfile == 5 then
SendToAll(sBot, "Admin "..user.sName.." has left the Hub, See you soon")
return 1
end
end

hello again Kepp

right i think idid right , well its works and no syntex errors :D

even added meassges for when profile dissconecst (bad spelling) , oh i used a function for each meassage for 2 reasons 1) easy to find errors , 2) easy to say change welcome messgae for say VIP :)

think i might go and try to use the Elseif command ,might make it look better ???

oh marks out of 10 plz :D :D

cya in bit
creator of Therapy-X? bot

kepp

#12
Very well :)

Yep, 'elseif' is good too use when possible

Yet another test ;)
To get the share amount from a user, using His InfoString.
Have fun

-- created by ((UKSN))shad_dow 
--  welcome script for master,op,vip,guest,reg and admin 
--  idea for testing my lua so far ,by kepp 





sBot = "-=Welcome-Home=-"


function OpConnected(user) 

	if user.iProfile == 0 then
		WelcomeMaster(user)
		return 1

	elseif user.iProfile == 1 then
		WelcomeOP(user)
		return 1
	end
end



function NewUserConnected(user)

	if user.iProfile == 2 then
		WelcomeVIP(user)
		return 1

	elseif user.iProfile == 3 then
		WelcomeReg(user)
		return 1

	elseif user.iProfile == 4 then
		WelcomeGuest(user)
		return 1

	elseif user.iProfile == 5 then
      		WelcomeAdmin(user)
		return 1
	end
end


function WelcomeVIP(user)
	SendToAll(sBot, "VIP "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeReg(user)
	SendToAll(sBot, "REG "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeOP(user)
	SendToAll(sBot, "OP "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeMaster(user)
	SendToAll(sBot, "Hub owner "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeVIP(user)
	SendToAll(sBot, "VIP "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeGuest(user)
	SendToAll(sBot, "Guest "..user.sName.." has entered the Hub, Welcome Home.")
end

function WelcomeAdmin(user)
	SendToAll(sBot, "Admin "..user.sName.." has entered the Hub, Welcome Home.")
end




function OPDisconnected(user)
	if user.iProfile == 0 then
		SendToAll(sBot, "Master "..user.sName.." has left the Hub, See you soon")
		return 1

	elseif user.iProfile == 1 then
		SendToAll(sBot, "OP "..user.sName.." has left the Hub, See you soon")
		return 1
	end
end



function UserDisconnected(user)
	if user.iProfile == 0 then
		SendToAll(sBot, "Master "..user.sName.." has left the Hub, See you soon")
		return 1

	elseif user.iProfile == 1 then
		SendToAll(sBot, "OP "..user.sName.." has left the Hub, See you soon")
		return 1

	elseif user.iProfile == 2 then
		SendToAll(sBot, "VIP "..user.sName.." has left the Hub, See you soon")
		return 1

	elseif user.iProfile == 3 then
		SendToAll(sBot, "REG "..user.sName.." has left the Hub, See you soon")
		return 1

	elseif user.iProfile == 4 then
		SendToAll(sBot, "Guest "..user.sName.." has left the Hub, See you soon")
		return 1

	elseif user.iProfile == 5 then
		SendToAll(sBot, "Admin "..user.sName.." has left the Hub, See you soon")
		return 1
	end
end
Guarding    

plop

QuoteOriginally posted by ((UKSN))shad_dow
hello again Kepp

right i think idid right , well its works and no syntex errors :D

even added meassges for when profile dissconecst (bad spelling) , oh i used a function for each meassage for 2 reasons 1) easy to find errors , 2) easy to say change welcome messgae for say VIP :)

think i might go and try to use the Elseif command ,might make it look better ???

oh marks out of 10 plz :D :D

cya in bit
take a look here for a next step.
but kepp's idea is really good 2.

btw nice 2 see you teaching kepp.

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

((UKSN))shad_dow

-- users share size by ((uksn))shad_dow
-- this test  from Kepp , tst = optaing share size from myinfo string
-- command !sharesize name

botname = "shareinfo"

function MyInfoString(data)
	s,e,share = strfind(data, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)")
	 
	return share
end

function DataArrival(user, data)

if( strsub(data, 1, 1) == "<" ) then 
      data=strsub(data,1,strlen(data)) 
      s,e,cmd,Name = strfind( data, "%b<>%s+(%S+)%s+(%S+)" ) 
      if (user.bOperator) then
         if (cmd=="!sharesize") then
            name = GetItemByName(Name)
            share=MyInfoString(user.sMyInfoString)
            share1 = share / (1024*1024*1024)
            user:SendPM(botname, "user "..Name.." is sharing "..share1.."Gb")
            return 1
         end
      end
   end
end
 




Syntax Error: attempt to perform arithmetic on global `share' (a string value) ????????????????

so tryed this way
        
botname = "shareinfo"
              
function DataArrival(user, data)

if( strsub(data, 1, 1) == "<" ) then 
      data=strsub(data,1,strlen(data)) 
      s,e,cmd,Name,share = strfind(data, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)") 
      return share
       end
        if (user.bOperator) then
         if (cmd=="!checkshare") then
            Name2 = GetItemByName(Name)
            share1 = share / (1024*1024*1024)
            user:SendPM(botname, "user "..Name2.." is sharing "..share1.."Gb")
            return 1
         end
      end
   end

got no syntex errors , and no pm from bot ???????

totaly confused now lol / brb need coffee lol

PS . plop thankx for the link , and Kepp thankx so far for putting up with a newbee scripter :D
creator of Therapy-X? bot

plop

QuoteOriginally posted by ((UKSN))shad_dow
Syntax Error: attempt to perform arithmetic on global `share' (a string value) ????????????????

got no syntex errors , and no pm from bot ???????

totaly confused now lol / brb need coffee lol

PS . plop thankx for the link , and Kepp thankx so far for putting up with a newbee scripter :D
strfind the name says the answer, it returns a string.
share = tonumber(share) solves your problem.

btw beside the thread i gave you there are some handy lessons from phatty and simple howto's from me.

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

((UKSN))shad_dow

cheerrs plop

yea been using phatty how to make a bot and some others too :) .. only thing that gets is how many ways u can make a simple script, as i keep find when exsameing other scripts :)

ok gone to try that bit of help , il post script here with or with out errors :) (then Kepp can give me a nother test to try :) ).. and thx for helping , u , phatyy , nightlinch and Kepp are good to me for putting up with a newbee :D
creator of Therapy-X? bot

((UKSN))shad_dow

#17
ello plop and Kepp

right when i put   share = tonumber(share)  any where in the script i get

Syntax Error: attempt to perform arithmetic on global `share' (a nil value)

so i reckon its got to be some thing to do with

s,e,share = strfind(data, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)")  (i hope)

all the code below

-- users share size by ((uksn))shad_dow
-- this test  from Kepp , tst = optaing share size from myinfo string
-- command !sharesize name
-- with help from plop and Kepp

botname = "shareinfo"



              
function MyInfoString(data)
	s,e,share = strfind(data, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)")
	 share = tonumber(share)
	return share
end

function DataArrival(user, data)

if( strsub(data, 1, 1) == "<" ) then 
      data=strsub(data,1,strlen(data)) 
      s,e,cmd,Name = strfind( data, "%b<>%s+(%S+)%s+(%S+)" ) 
      if (user.bOperator) then
         if (cmd=="!sharesize") then
            name = GetItemByName(Name)
            share=MyInfoString(user.sMyInfoString)
            share1 = share / (1024*1024*1024)
            user:SendPM(botname, "user "..name.." is sharing "..share1.."Gb")
            return 1
         end
      end
   end
end

waiting quitely with out clue as to what i need to to make this work  ?(
creator of Therapy-X? bot

VidFamne

try this line;
s,e,description,speed,email,share = strfind(data, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)")
 instaed of this;
s,e,share = strfind(data, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)")

plop

((UKSN))shad_dow if you look @ what VidFamne posted you see he added a bunch of things between s,e, and share = strfind.
the reason is simple
([^$]+)   <--- the ( ) here means the strfind has 2 extract something from the given string and add that 2 for example share, so if you call share (a local or global vallue)  later in your script you get the vallue you found on this.
the way this works isn't 2 hard.
s,e,1,2,3,4 = strfind(string, "(1)(2)(3)(4)")

now the error you made was like this
s,e,4= strfind(string, "(1)(2)(3)(4)")
which means 4 actualy gets the 1st thing strfind has 2 find on your pattern, which is 1.
if you only want 2 find the share you can do like the next example.
s,e,4= strfind(string, "123(4)")

i hope you get the idea, if not don't fear 2 ask.
i rather explain something then fix a script for some1, even if explaining takes more time.

plop
http://www.plop.nl lua scripts/howto\'s.
http://www.thegoldenangel.net
http://www.vikingshub.com
http://www.lua.org

>>----> he who fights hatred with hatred, drives the spreading of hatred <----<<

kepp

#20
Yep, Or go straight to the (4)

DATA = user.sMyInfoString

local s,e,version = strfind(DATA,"V:(%d.%d+) ")
^^   you see that one

that will take the version Nr after V:
in the InfoString

i can do this too i suppose :D

local s,e,version,mode = strfind(DATA,"V:(%d.%d+)M:(%a)")

So, in your case, you are only suppose to look for digits...

print a user.sMyInfoString and study what's in it, Then you might find a way :)
Guarding    

((UKSN))shad_dow

cheers plop , thats was easy for me to start to digest as it was plain english :) .. (il read it agin tommorw )

right only 1 prob which i just relised is this :-

s,e,cmd,Name = strfind( data, "%b<>%s+(%S+)%s+(%S+)" )

and this :-

name = GetItemByName(Name)

brings up this syntex error :-

Syntax Error: attempt to concat global `name' (a nil value)

which i take means u the strfind is 1) wrong or 2) it should be a arg arry ????

!sharesize <- cmd
<--- should be vuale name that is type in

which i think should have been some like :-

s,e,cmd,name = strfind( data, "%b<>%s+(%S+)(%s+)%S+" ) instaed of  
s,e,cmd,name = strfind( data, "%b<>%s+(%S+)%s+(%S+)" ) i think

 time is 01:08 am UK  so il check back l8z need bed .

PS .. i learn more by understanding the code than having it done for me :)

NN
creator of Therapy-X? bot

((UKSN))shad_dow

Quoteprint a user.sMyInfoString and study what's in it, Then you might find a way :)

please  may i ask how i print that out , Kepp ???  :D


-----------------------------------------------------------------------

cheers plop , thats was easy for me to start to digest as it was plain english :) .. (il read it agin tommorw )

right only 1 prob which i just relised is this :-

s,e,cmd,Name = strfind( data, "%b<>%s+(%S+)%s+(%S+)" )

and this :-

name = GetItemByName(Name)

brings up this syntex error :-

Syntax Error: attempt to concat global `name' (a nil value)

which i take means  that strfind is 1) wrong or 2) it should be a arg arry ????

!sharesize <- cmd
<--- should be vuale name that is type in

which i think should have been some like :-

s,e,cmd,name = strfind( data, "%b<>%s+%S+(%s+)(%S+)" ) instaed of  
s,e,cmd,name = strfind( data, "%b<>%s+(%S+)%s+(%S+)" ) i think (tryed but dident work, nothing happened)



 time is 01:08 am UK  so il check back l8z need bed .

PS .. i learn more by understanding the code than having it done for me , and i learning alot by the help from u  lot :)

NN
creator of Therapy-X? bot

VidFamne

All strings in 'data' ends with an end-pipe '|'.
So I think its best  to remove this in the
DataArrival() function with this line;
data=strsub(data,1,strlen(data)-1)  -- remove endpipe
and than you can use
s,e,cmd,name = strfind( data, "%b<>%s+(%S+)%s+(%S+)" )

((UKSN))shad_dow

cheers VidFamne

thats better , all so need to add a GetArg function :D

working script below :-

-- users share size by ((uksn))shad_dow
-- this test  from Kepp , test = optaing share size from myinfo string
-- command !sharesize name
-- with help from plop , Kepp  and VidFamne
-- had to include a GetArg fuction  

botname = "shareinfo"



              
function MyInfoString(data)
	s,e,share = strfind(data, "$MyINFO $ALL [^$]+$ $[^$]*$[^$]*$([^$]+)")
	 share = tonumber(share)                    
	return share
end

function GetArg(data) 
s,e,cmd,arg = strfind(data, "%b<>%s+(%S+)%s+(%S+)%s*") 
return arg 
end 

function DataArrival(user, data)

if( strsub(data, 1, 1) == "<" ) then 
 
data=strsub(data,1,strlen(data)-1) 
 
s,e,cmd = strfind( data, "%b<>%s+(%S+)" )  
       
      if (user.bOperator) then      
         if (cmd=="!share") then
            name=GetArg(data) 
            local usr = GetItemByName(name) 
            share = MyInfoString(user.sMyInfoString)
            share1 = share / (1024*1024*1024)
            user:SendPM(botname, "user "..name.." is sharing "..share1.." GB")
            
         end
      end
   end
end

Result :-

[02:02] <((UKSN))shad_dow> !share ((UKSN))shad_dow

 PM From Bot :-

[02:02] user ((UKSN))shad_dow is sharing 19.11080632638186 GB

big thx to Kepp and Plop :)

for teaching me alot and yet i still hungery for more :)
creator of Therapy-X? bot

SMF spam blocked by CleanTalk