A Graph Bot
 

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

A Graph Bot

Started by Herodes, 27 May, 2004, 19:11:39

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Herodes

hey I was trying to get the code below to show the user count like this ...


  100% (200 users)             
-- 
--
--
--
   50% (100 users)
--                                         79
--                                          ?
--                                          ?
--                                          ?
   no users                             ?
Is there something that I am doing terribly wrong? because it doesn't come up with any feedback or even errors when the command is typed ... ?(
Here is what I can't get to work ....

gBot = "CountGraph"
userCount = frmHub:GetUsersCount()
maxU = frmHub:GetMaxUsers()
midU = maxU/2

function Main()
	frmHub:UnregBot(gBot)
	frmHub:RegBot(gBot)
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 (cmd=="!graph") then
				GiveGraph()
			end
		end
end


function GiveGraph()
	if userCount >= maxU then
		SendFull()
	elseif userCount == (maxU*90/2) then
		Send90Prc()

	elseif userCount == (maxU*80/2) then
		Send80Prc()	

	elseif userCount == (maxU*70/2) then
		Send70Prc()

	elseif userCount == (maxU*60/2) then
		Send60Prc()

	elseif userCount == (maxU*50/2) then
		Send50Prc()

	elseif userCount == (maxU*40/2) then
		Send40Prc()

	elseif userCount == (maxU*30/2) then
		Send30Prc()

	elseif userCount == (maxU*20/2) then
		Send20Prc()

	elseif userCount == (maxU*10/2) then
		Send10Prc()

	elseif userCount == 1 then
		SendToAll(gBot, "Where did everybody go ?")

	end
end

end 

function Send10Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end


function Send20Prc()

	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end

function Send30Prc()

	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end


function Send40Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end

function Send50Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t"..userCount
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end

function Send60Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end

function Send70Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end

function Send80Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end

function Send90Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t?"
	tMsg = tMsg.."\r\n\t"..userCount
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n - \t?"
	tMsg = tMsg.."\r\n   0%(0 users)\t?"
	SendToAll(gBot, tMsg)
end

pls help .. .I am trying to learn how to do this

tezlo

in your script, userCount only gets assigned once at start
if you want the actual value you'll need to frmHub:GetUsersCount() everytime the command is typed

i'm sure you'll find a more elegant way of coding this
for now i came up with a horizontal bar, maybe it could help you on the way

local length = 10
local ratio = frmHub:GetUsersCount()/(frmHub:GetMaxUsers()/length)
SendToAll(">> ["..strrep(" ", ratio).."?"..strrep(" ", length-ratio).."]")

Herodes

#2
Thanks for the Input tezlo .. ;)
I 'll keep it in mind for later .. :D
Quotefor now I managed :getting the user count and producing one graph on full hub ...
and one graph on less than that ... this is a problem since I need it to get it on the appropriate line. Look below  pls ...
ex:

On full Hub it shows:
  
 
 100% (3 users)       3 
 - 		 		 ? 
 - 		 		 ? 
 - 		 		 ? 
 - 		 		 ? 
  50% (1.5 users)      ? 
 - 		 		 ? 
 - 		 		 ? 
 - 		 		 ? 
 - 		 		 ? 
   0%(0 users)	 	 ?

--On 50% currently shows :
  
 
 100% (6 users) 
 - 
 - 
 - 
 - 
  50% (3 users) 
 - 
 - 
 - 
		 	 3 
   0%(0 users)	 ?

This is the code so far ... pls help .. I got lot's of ideas for it but I don't have enough knowledge of Lua ..  
For example I would want to get a !snapcount command and a way to be able to get older usercounts ...
After all, what good is a graph if u have nothing to compare it with ... :D

[*edit*] I was stupid enough to think that 2 is the same with 100 ... edited all the parts that were like (maxU*90/2)  to (maxU*90/100)     :rolleyes:

-- GraphBot
-- by Herodes

gBot = "CountGraph"

function Main()
	frmHub:UnregBot(gBot)
	frmHub:RegBot(gBot)
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 (cmd=="!graph") then
				GiveGraph()
			end
		end
end


function GiveGraph()

	userCount, maxU = ""
	GetNumbers()

	if userCount >= maxU then
		SendFull()
	elseif userCount < maxU then 

		if userCount <= (maxU*90/100) and userCount > (maxU*80/100)  then
			Send90Prc()
		elseif userCount <= (maxU*80/100) and userCount > (maxU*70/100) then
			Send80Prc()	
		elseif userCount <= (maxU*70/100) and userCount > (maxU*60/100) then
			Send70Prc()
		elseif userCount <= (maxU*60/100) and userCount > (maxU*50/100) then
			Send60Prc()
		elseif userCount <= (maxU*50/100) and userCount > (maxU*40/100) then
			Send50Prc()
		elseif userCount <= (maxU*40/100) and userCount > (maxU*30/100) then
			Send40Prc()
		elseif userCount <= (maxU*30/100) and userCount > (maxU*20/100) then
			Send30Prc()
		elseif userCount <= (maxU*20/100) and userCount > (maxU*10/100) then
			Send20Prc()
		elseif userCount <= (maxU*10/100) and userCount > 1then
			Send10Prc()
		elseif userCount <= 1 then
			SendToAll(gBot, "Where did everybody go ?")
		end
	end
end 

function GetNumbers()
	userCount, maxU = ""
	userCount = frmHub:GetUsersCount()
	maxU = frmHub:GetMaxUsers()
	midU = maxU/2
	return userCount, maxU, midU
end

function Send10Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end


function Send20Prc()

	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end

function Send30Prc()

	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end


function Send40Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end

function Send50Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -?"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end

function Send60Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end

function Send70Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end

function Send80Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n -"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end

function Send90Prc()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)"
	tMsg = tMsg.."\r\n\t\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end


function SendFull()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t"..userCount
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n - \t\t ?"
	tMsg = tMsg.."\r\n   0%(0 users)\t ?"
	SendToAll(gBot, tMsg)
end

Herodes

The last posted piece of code is working as expected .. :)
Now I will try to make it remember the previous 2 (+1 the current) and display them all at once ... in the same message ...
I 'll need some help with tables but I wish I can surprise me ... ;)

Herodes

#4
Some more work on tables proved worthy ...

They brought the code amount down.
-- GraphBot
-- by Herodes
-- optimised version ( is/was 120/291 lines)

gBot = "CountGraph"
	
fullcell = "    ?\t"
emptycell = "\t"

tTable = {}

function Main()
	frmHub:UnregBot(gBot)
	frmHub:RegBot(gBot)
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 cmd~=nil then
			if cmd=="!graph" then
			GiveGraph()
			end
		end
end
end

function AddValues()
	tTable = {}
	GetNumbers()
	tTable[11] = Time
	tTable[12] = hubshare
	if userCount >= maxU then
		tTable[1] = userCount
		tTable[2] = fullcell
		tTable[3] = fullcell
		tTable[4] = fullcell
		tTable[5] = fullcell
		tTable[6] = fullcell
		tTable[7] = fullcell
		tTable[8] = fullcell
		tTable[9] = fullcell
		tTable[10] = fullcell
	elseif userCount < maxU then 
		if userCount <= (maxU*90/100) and userCount > (maxU*80/100)  then
			tTable[1] = emptycell
			tTable[2] = userCount
			tTable[3] = fullcell
			tTable[4] = fullcell
			tTable[5] = fullcell
			tTable[6] = fullcell
			tTable[7] = fullcell
			tTable[8] = fullcell
			tTable[9] = fullcell
			tTable[10] = fullcell
		elseif userCount <= (maxU*80/100) and userCount > (maxU*70/100) then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = userCount
			tTable[4] = fullcell
			tTable[5] = fullcell
			tTable[6] = fullcell
			tTable[7] = fullcell
			tTable[8] = fullcell
			tTable[9] = fullcell
			tTable[10] = fullcell
		elseif userCount <= (maxU*70/100) and userCount > (maxU*60/100) then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = emptycell
			tTable[4] = userCount
			tTable[5] = fullcell
			tTable[6] = fullcell
			tTable[7] = fullcell
			tTable[8] = fullcell
			tTable[9] = fullcell
			tTable[10] = fullcell
		elseif userCount <= (maxU*60/100) and userCount > (maxU*50/100) then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = emptycell
			tTable[4] = emptycell
			tTable[5] = userCount
			tTable[6] = fullcell
			tTable[7] = fullcell
			tTable[8] = fullcell
			tTable[9] = fullcell
			tTable[10] = fullcell
		elseif userCount <= (maxU*50/100) and userCount > (maxU*40/100) then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = emptycell
			tTable[4] = emptycell
			tTable[5] = emptycell
			tTable[6] = userCount
			tTable[7] = fullcell
			tTable[8] = fullcell
			tTable[9] = fullcell
			tTable[10] = fullcell
		elseif userCount <= (maxU*40/100) and userCount > (maxU*30/100) then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = emptycell
			tTable[4] = emptycell
			tTable[5] = emptycell
			tTable[6] = emptycell
			tTable[7] = userCount
			tTable[8] = fullcell
			tTable[9] = fullcell
			tTable[10] = fullcell
		elseif userCount <= (maxU*30/100) and userCount > (maxU*20/100) then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = emptycell
			tTable[4] = emptycell
			tTable[5] = emptycell
			tTable[6] = emptycell
			tTable[7] = emptycell
			tTable[8] = userCount
			tTable[9] = fullcell
			tTable[10] = fullcell
		elseif userCount <= (maxU*20/100) and userCount > (maxU*10/100) then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = emptycell
			tTable[4] = emptycell
			tTable[5] = emptycell
			tTable[6] = emptycell
			tTable[7] = emptycell
			tTable[8] = emptycell
			tTable[9] = userCount
			tTable[10] = fullcell
		elseif userCount <= (maxU*10/100) and userCount > 1 then
			tTable[1] = emptycell
			tTable[2] = emptycell
			tTable[3] = emptycell
			tTable[4] = emptycell
			tTable[5] = emptycell
			tTable[6] = emptycell
			tTable[7] = emptycell
			tTable[8] = emptycell
			tTable[9] = emptycell
			tTable[10] = userCount
		elseif userCount == 1 then
			SendToAll(gBot, "Where did everybody go ?")
		end
	end
	return tTable
end


function GiveGraph()
	AddValues()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\nShare\t:\t"..tTable[12].." gb"
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t"..tTable[1]
	tMsg = tMsg.."\r\n -\t\t"..tTable[2]
	tMsg = tMsg.."\r\n -\t\t"..tTable[3]
	tMsg = tMsg.."\r\n -\t\t"..tTable[4]
	tMsg = tMsg.."\r\n -\t\t"..tTable[5]
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t"..tTable[6]
	tMsg = tMsg.."\r\n -\t\t"..tTable[7]
	tMsg = tMsg.."\r\n -\t\t"..tTable[8]
	tMsg = tMsg.."\r\n -\t\t"..tTable[9]
	tMsg = tMsg.."\r\n -\t\t"..tTable[10]
	tMsg = tMsg.."\r\n   0%(0 users)\t    ?"
	tMsg = tMsg.."\r\nTime\t:\t"..tTable[11]
	SendToAll(gBot, tMsg)
end

function GetNumbers()
	h, m, Time, userCount, maxU, hubshare = ""
	h = date("%H")
	m = date("%M")
	Time = h..":"..m
	userCount = frmHub:GetUsersCount()
	maxU = frmHub:GetMaxUsers()
	midU = maxU/2
	hubshare = format("%0.2f", ( frmHub:GetCurrentShareAmount() / (1024*1024*1024)))
	return Time, userCount, maxU, midU, hubshare
end

 I was hoping for a way to get the values in the tTable stored for three different timings ... I don't know how to do it . .
Can someone give me a hint ... ? .. pls?  :D
I want it to display something like ...
 

Share	:		43.35 gb		35.00 gb	...
 100% (10 users)						     ...
 -										 ...
 -										 ...
 -				7						...
 -			    	    ?			6			...
  50% (5 users)	 	   ?			   ?			...
 -				    ?			    ?			 ...
 -				    ?			    ?			 ...
 -				    ?			    ?			 ...
 -				    ?			    ?			 ...
   0%(0 users)		    ?	    		    ?			 ...
Time	:			04:08		03:15		      ...
could make the proper tabbing in this font ..


[*edit*] removed 7 lines of scrap code I had posted with it..

NotRabidWombat

How about:
function AddValues()
   tTable = {}
   GetNumbers()
   tTable[11] = Time
   tTable[12] = hubshare

   local pivot = 11 - floor(userCount / maxU * 10);

   for i , 1, 10 do
      if ( i < pivot ) then
         tTable[i] = emptycell;
      elseif ( i == pivot ) then
         tTable[i] = userCount;
      else
         tTable[i] = fullcell;
      end         
   end

   -- Do anything else you want

   return tTable;
end


I like childish behavior. Maybe this post will be deleted next.

Herodes

Yep, it is true .. it can be further optimised in this way .. although I haven't completely understood this part:
...floor(userCo...

This is the script up to now ... :) it has been updated .. but I still need a way to get the output values in tmpTable into tTime1, tTime2, tTime3 ....
this is something I don't know how to do ..
I want to know which is the best way to go for that , whatever I tried had most of the times made it in to an error in PtokaX ... like       attempt to concat a nil value .. :(
!! Help me !!   :D :D

-- GraphBot
-- by Herodes
-- optimised version ( is/was 120/291 lines)
-- fixed correction of gb&tb display
-- now the user count centers on top of the column...
-- input from NotRambitWombat made it even shorter.. :)

gBot = "CountGraph"
	
fullcell = "    ?\t"
emptycell = "\t"
tTime1 = {}
tTime2 = {}
tTime3 = {}
tmpTable = {}
function Main()
	frmHub:UnregBot(gBot)
	frmHub:RegBot(gBot)
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 cmd~=nil then
			if cmd=="!graph" then
			GiveGraph()
			end
		end
	end
end
function AddValues()
	tmpTable = {}
	GetNumbers()
	tmpTable[11] = Time
	tmpTable[12] = hubshrS
	if usrC > 1 then
		local pivot = 11 - floor(usrC / maxU * 10)
		for i = 1,10 do
			if ( i < pivot ) then
				tmpTable[i] = emptycell
			elseif ( i == pivot ) then
				tmpTable[i] = userCount
			else tmpTable[i] = fullcell end         
		end
	end
	if usrC == 1 then
		SendToAll(gBot, "Where did everybody go ?")
	end
   return tTable
end

function GiveGraph()
	AddValues()
	tMsg = "\r\n\t\t\t"..frmHub:GetHubBotName()
	tMsg = tMsg.."\r\nShare\t:\t"..tmpTable[12]
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t"..tmpTable[1]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[2]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[3]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[4]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[5]
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t"..tmpTable[6]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[7]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[8]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[9]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[10]
	tMsg = tMsg.."\r\n   0%(0 users)\t    ?"
	tMsg = tMsg.."\r\nTime\t:\t"..tmpTable[11]
	SendToAll(gBot, tMsg)
end

function GetNumbers()
	h, m, Time, userCount, maxU, hubshare = ""
	h = date("%H")
	m = date("%M")
	Time = h..":"..m
	usrC = frmHub:GetUsersCount()
	userCount = AddSpacesToKey(usrC)
	maxU = frmHub:GetMaxUsers()
	midU = maxU/2
	hubshare = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024*1024*1024)))
	hubshrS = hubshare.." gb"
		if tonumber(hubshare) >= 1024 then 
			hubshare = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024*1024*1024*1024)))
			hubshrS = hubshare.." tb"
		end
	return Time, userCount, maxU, midU, hubshare, usrC, hubshrS
end

function AddSpacesToKey(data)
	local cell = ""
	if strlen(data) == 2 then 
		cell = "  "..data.."\t"
	elseif strlen(data) == 3 then
		cell = " "..data.."\t"
	elseif strlen(data) == 4 then
		cell = data.."\t"
	elseif strlen(data) == 5 then
		cell = data.."\t"
	elseif strlen(data) == 1 then cell = "   "..data.."\t"
	end
	return cell
end

Herodes

I forgot to say thanks to NotRambitWombat on a previous post ... so here it is :D!
Thanks a million man .. :)

So far I have been trying ALL night to get this script working with tables ...  
I don't have the slightest Idea why is bringing up this error ...
I had a look throught the forum but to no avail ..
All of my efforts end up in a

--Syntax error: table index is nil
--stack traceback:
--   1:  main of file -- `...kaX-0.330.b15.25.dbg\scripts\TabletryRAmbit.lua' at line 29

The following code is the last in-big-need-of-help script ...

-- GraphBot by Herodes
-- Not Working Version (syntax Errors "table index is nil")
-- Correct gb&tb display + the user count centers on top of the column...
-- Input from NotRambitWombat made it even shorter.. :)
-- Tried to get the extra tables working but I couldn't .. :(

gBot = "CountGraph"
fullcell = "    ?\t"
emptycell = "\t"

tmpTable = {}
tHold = {
tLine10 = { [1] = "", [2] = "", [3] = "" },
tLine9 = { [1] = "", [2] = "", [3] = "" },
tLine8 = { [1] = "", [2] = "", [3] = "" },
tLine7 = { [1] = " ", [2] = "", [3] = "" },
tLine6 = { [1] = " ", [2] = "", [3] = "" },
tLine5 = { [1] = " ", [2] = "", [3] = "" },
tLine4 = { [1] = " ", [2] = "", [3] = "" },
tLine3 = { [1] = " ", [2] = "", [3] = "" },
tLine2 = { [1] = " ", [2] = "", [3] = "" },
tLine1 = { [1] = " ", [2] = "", [3] = "" },
tTime = { [1] = " ", [2] = "", [3] = "" },
tShare = { [1] = " ", [2] = "", [1] = "" },
tCheck = { "n", "n", "n" }
	};

tmpMain1 = { 	[1] = tHold[tLine1][1],
		[2] = tHold[tLine2][1],
		[3] = tHold[tLine3][1],
		[4] = tHold[tLine4][1],
		[5] = tHold[tLine5][1],
		[6] = tHold[tLine6][1],
		[7] = tHold[tLine7][1],
		[8] = tHold[tLine8][1],
		[9] = tHold[tLine9][1],
		[10] = tHold[tLine10][1],
		[11] = tHold[tTime][1],
		[12] = tHold[tShare][1] };

tmpMain2 = {  	[1] = tHold[tLine1][2],
		[2] = tHold[tLine2][2],
		[3] = tHold[tLine3][2],
		[4] = tHold[tLine4][2],
		[5] = tHold[tLine5][2],
		[6] = tHold[tLine6][2],
		[7] = tHold[tLine7][2],
		[8] = tHold[tLine8][2],
		[9] = tHold[tLine9][2],
		[10] = tHold[tLine10][2],
		[11] = tHold[tTime][2],
		[12] = tHold[tShare][2] };

tmpMain3 = { 	[1] = tHold[tLine1][3],
		[2] = tHold[tLine2][3],
		[3] = tHold[tLine3][3],
		[4] = tHold[tLine4][3],
		[5] = tHold[tLine5][3],
		[6] = tHold[tLine6][3],
		[7] = tHold[tLine7][3],
		[8] = tHold[tLine8][3],
		[9] = tHold[tLine9][3],
		[10] = tHold[tLine10][3],
		[11] = tHold[tTime][3],
		[12] = tHold[tShare][3] };


function Main()
	frmHub:UnregBot(gBot)
	frmHub:RegBot(gBot)
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 cmd~=nil then
			if cmd=="!agraph" then
				GiveAGraph()
			elseif cmd=="!graph" then
				GiveGraph()
			end
		end
	end
end

function AddValues()
	tmpTable = {}
	GetNumbers()
	tmpTable[11] = Time
	tmpTable[12] = hubshrS
	if usrC > 1 then
		local pivot = 11 - floor(usrC / maxU * 10)
		for i = 1,10 do
			if ( i < pivot ) then
				tmpTable[i] = emptycell
			elseif ( i == pivot ) then
				tmpTable[i] = userCount
			else tmpTable[i] = fullcell end
		end
	elseif usrC == 1 then
		SendToAll(gBot, "Where did everybody go ?")
	end
	return tmpTable
end

function GiveAGraph()
	tMsg = "\r\n\t\t\t"..frmHub:GetHubName().. " History Info"
	tMsg = tMsg.."\r\nShare\t:\t"..tmpTable[12]
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)\t"..tmpTable[1]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[2]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[3]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[4]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[5]
	tMsg = tMsg.."\r\n  50% ("..midU.." users)\t"..tmpTable[6]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[7]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[8]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[9]
	tMsg = tMsg.."\r\n -\t\t"..tmpTable[10]
	tMsg = tMsg.."\r\n   0%(0 users)\t    ?\t"
	tMsg = tMsg.."\r\nTime\t:\t"..tmpTable[11]
	SendToAll(gBot, tMsg)
	WriteTables()
end

function GiveGraph()
	tMsg = "\r\n"
	tMsg = tMsg.."\r\nShare	:	"..tmpMain1[11].."	"..tmpMain2[11].."	"..tmpMain3[11]
	tMsg = tMsg.."\r\n 100% ("..maxU.." users)	"..tmpMain1[10].."	"..tmpMain2[10].."	"..tmpMain3[10]
	tMsg = tMsg.."\r\n -			"..tmpMain1[9].."	"..tmpMain2[9].."	"..tmpMain3[9]
	tMsg = tMsg.."\r\n -			"..tmpMain1[8].."	"..tmpMain2[8].."	"..tmpMain3[8]
	tMsg = tMsg.."\r\n -			"..tmpMain1[7].."	"..tmpMain2[7].."	"..tmpMain3[7]
	tMsg = tMsg.."\r\n -			"..tmpMain1[6].."	"..tmpMain2[6].."	"..tmpMain3[6]
	tMsg = tMsg.."\r\n  50% ("..midU.." users)	"..tmpMain1[5].."	"..tmpMain2[5].."	"..tmpMain3[5]
	tMsg = tMsg.."\r\n -			"..tmpMain1[4].."	"..tmpMain2[4].."	"..tmpMain3[4]
	tMsg = tMsg.."\r\n -			"..tmpMain1[3].."	"..tmpMain2[3].."	"..tmpMain3[3]
	tMsg = tMsg.."\r\n -			"..tmpMain1[2].."	"..tmpMain2[2].."	"..tmpMain3[2]
	tMsg = tMsg.."\r\n -			"..tmpMain1[1].."	"..tmpMain2[1].."	"..tmpMain3[1]
	tMsg = tMsg.."\r\n   0%(0 users)	    ?	    ?	    ?"
	tMsg = tMsg.."\r\nTime	:	"..tmpMain1[12].."	"..tmpMain2[12].."	"..tmpMain3[12]
	SendToAll(gBot, tMsg)
	WriteTables()
end


function GetNumbers()
	h, m, Time, userCount, maxU, hubshare = ""
	h = date("%H")
	m = date("%M")
	Time = h..":"..m
	usrC = frmHub:GetUsersCount()
	userCount = AddSpacesToKey(usrC)
	maxU = frmHub:GetMaxUsers()
	midU = maxU/2
	hubshare = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024*1024*1024)))
	hubshrS = hubshare.." gb"
		if tonumber(hubshare) >= 1024 then 
			hubshare = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024*1024*1024*1024)))
			hubshrS = hubshare.." tb"
		end
	return Time, userCount, maxU, midU, hubshare, usrC, hubshrS
end

function WriteTables()
	AddValues()
	if tHold[tCheck][1] == "d" then
		if tHold[tCheck][2] == "d" then 
			if tHold[tCheck][3] == "d" then
				tmpMain1 = {}
				tmpTable = tmpMain1
				tHold[tCheck][1] = 1
			elseif tHold[tCheck][3] == "n" then
				tmpMain3 = {}
				tmpTable = tmpMain3
				tHold[tCheck][3] = 1
			end
		elseif tHold[tCheck][2] == "n" then
			tmpMain2 = {}
			tmpTable = tmpMain2
			tHold[tCheck][2] = 1
		end
	elseif tHold[tCheck][1] == "n" then
		tmpMain1 = {}
		tmpTable = tmpMain1
		tHold[tCheck][1] = 1
	end
end

function AddSpacesToKey(data)
	local cell = ""
	if strlen(data) == 2 then 
		cell = "  "..data.."\t"
	elseif strlen(data) == 3 then
		cell = " "..data.."\t"
	elseif strlen(data) == 4 then
		cell = data.."\t"
	elseif strlen(data) == 5 then
		cell = data.."\t"
	elseif strlen(data) == 1 then cell = "   "..data.."\t"
	end
	return cell
end

C'mon someone give me a hint pls ... ! :)

NotRabidWombat

As there states, the error is on line 29:

tmpMain1 = { [1] = tHold[tLine1][1],

The problem here is you have indexed improperly. If you put table[foo], foo is interpreted as a variable and will evaluate the value of foo. In your case, tLine1 is nil. You could say table["foo"], which will look for the index with key "foo". This is the _same_ as table.foo.

So to solve your problem change to:

tmpMain1 = { [1] = tHold.tLine1[1],

OR

tmpMain1 = { [1] = tHold["tLine1"][1],

Same goes for all other instances.

-NotRabidWombat


I like childish behavior. Maybe this post will be deleted next.

Herodes

I won't make the same mistake again ....
cheers for the help once again ...  :D
I have this part completely clear now ...
One more trivial question !
Is there any particular difference between the following two ?
 
tmpMain1 = { [1] = tHold.tLine1[1],
tmpMain1 = { [1] = tHold["tLine1"][1],

...or are they working in the same manner in every case ?

I am able to get the Full Table (in GiveGraph) displayed after this... :)

NotRabidWombat

#10
"Is there any particular difference between the following two ?

tmpMain1 = { [1] = tHold.tLine1[1],
tmpMain1 = { [1] = tHold["tLine1"][1],"

Nope. table.foo is just syntactical sugar for table["foo"] so you can treat a table like you would an object.

-NotRabidWombat


I like childish behavior. Maybe this post will be deleted next.

Herodes

-- GraphBot by Herodes
-- -- ! Not Working Version (  no syntax Errors :(   ) !
-- Correct gb&tb display + the user count centers on top of the column...
-- Input from NotRambitWombat made it even shorter.. :)
-- -- Tried to get the extra tables working but I couldn't .. :(
-- Retry (after a lot of them) to get a smaller version of the script to work ...
--again with 1 only column but this time I am looking how to be able to read&write the table values

gBot = "CountGraph"

fullcell = "    ?\t"
emptycell = "\t"
tTable = {}
tLine10 = { [1] = "", [2] = "", [3] = "", }
tLine9 = { [1] = "", [2] = "", [3] = "", }
tLine8 = { [1] = "", [2] = "", [3] = "", }
tLine7 = { [1] = "", [2] = "", [3] = "", }
tLine6 = { [1] = "", [2] = "", [3] = "", }
tLine5 = { [1] = "", [2] = "", [3] = "", }
tLine4 = { [1] = "", [2] = "", [3] = "", }
tLine3 = { [1] = "", [2] = "", [3] = "", }
tLine2 = { [1] = "", [2] = "", [3] = "", }
tLine1 = { [1] = "", [2] = "", [3] = "", }
tTime = { [1] = "", [2] = "", [3] = "", }
tShare = { [1] = "", [2] = "", [1] = "", }

outMain1 = { 	[1] = tLine1[1], [2] = tLine2[1], [3] = tLine3[1], [4] = tLine4[1], [5] = tLine5[1],
		[6] = tLine6[1], [7] = tLine7[1], [8] = tLine8[1], [9] = tLine9[1], [10] = tLine10[1],
		[11] = tTime[1], [12] = tShare[1] };

function Main()
	frmHub:UnregBot(gBot)
	frmHub:RegBot(gBot)
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 cmd~=nil then
			if cmd=="!graph" then
				AddValues()
				GiveGraph()
			end
		end
	end
end


function AddValues()
outMain1 = {}
GetNumbers()
tTime[1] = Time
tShare[1] = hubshrS
	if usrC > 1 then
	local pivot = 11 - floor(usrC / maxU * 10);
	for i = 1,10 do
		if ( i < pivot ) then
			outMain1[i] = emptycell
		elseif ( i == pivot ) then
			outMain1[i] = userCount
			else outMain1[i] = fullcell end
		end
	end
	if usrC == 1 then
		SendToAll(gBot, "Where did everybody go ?")
	end
return outMain1
end

function GetValues1()
for i = 1, getn(outMain1) do
	tTable[i] = v
end
end

function GiveGraph()
GetValues()
local tMsg = "\r\n\t\t\t"..frmHub:GetHubName().. " History Info"
	tMsg = tMsg.."\r\nShare\t:\t"..tShare[1]
	tMsg = tMsg.."\r\n 100% ("..frmHub:GetMaxUsers().." users)\t"..tLine1[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine2[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine3[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine4[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine5[1]
	tMsg = tMsg.."\r\n  50% ("..(frmHub:GetMaxUsers()/2).." users)\t"..tLine6[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine7[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine8[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine9[1]
	tMsg = tMsg.."\r\n\t -\t"..tLine10[1]
	tMsg = tMsg.."\r\n   0%(0 users)\t"..fullcell
	tMsg = tMsg.."\r\nTime\t:\t"..tTime[1]
	SendToAll(gBot, tMsg)
	SendToAll(gBot, "thats us!")
end

function GetNumbers()
	Time, usrC, maxU, hubshare = ""
	h = date("%H")
	m = date("%M")
	Time = h..":"..m
	usrC = frmHub:GetUsersCount()
	userCount = AddSpacesToKey(usrC)
	maxU = frmHub:GetMaxUsers()
	hubshare = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024*1024*1024)))
	hubshrS = hubshare.." gb"
		if tonumber(hubshare) >= 1024 then 
			hubshare = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024*1024*1024*1024)))
			hubshrS = hubshare.." tb"
		end
	return Time, usrC, userCount, maxU, hubshare, hubshrS
end


function AddSpacesToKey(data)
	local cell = ""
	if strlen(data) == 2 then 
		cell = "  "..data.."\t"
	elseif strlen(data) == 3 then
		cell = " "..data.."\t"
	elseif strlen(data) == 4 then
		cell = data.."\t"
	elseif strlen(data) == 5 then
		cell = data.."\t"
	elseif strlen(data) == 1 then cell = "   "..data.."\t"
	end
	return cell
end
help me finish this please ...
I can't understand why it is not coming up with the correct values in the graph ..
I think it has to do with the Add/GetValues  functions ...

Herodes

Question :  Are the values in the tables below "linked" to each other ?
tLine5 = { [1] = "-", [2] = "", }
tLine4 = { [1] = "-", [2] = "", }
tLine3 = { [1] = "-", [2] = "", }
tLine2 = { [1] = "-", [2] = "", }
tLine1 = { [1] = "-", [2] = "", }
tTime = { [1] = "-", [2] = "", }
tShare = { [1] = "-", [2] = "", }

outMain1 = { [1] = tLine1[1], 
	[2] = tLine2[1], 
	[3] = tLine3[1], 
	[4] = tLine4[1], 
	[5] = tLine5[1],
	[6] = tTime[1], 
	[7] = tShare[1] };

outMain2 = { [1] = tLine1[2], 
	[2] = tLine2[2], 
	[3] = tLine3[2], 
	[4] = tLine4[2], 
	[5] = tLine5[2],
	[6] = tTime[2], 
	[7] = tShare[2] };
Meaning if I outMain2[5] = "whatever"  then will tLine5[2] == "whatever" be true or not ??
--Please someone help me with this ... I am trying to find hair (on my head) to pull by now ... --

Herodes

Sorry for possible spamming of the thread .. but I need help with this
I see progress every time and the thing is that I always feel stupid after when I solve my problems and in the code I have posted ...
I hope someone understands and tries to help me ..
Guess what !
I have some new probs ...
-- GraphBot by Herodes
-- Working Version (but after repeating the cmd x 5 times u don't get any refresh on the tables ...)
-- fixed correction of kb, mb, gb, tb display
-- now the user count centers on top of the column...
-- input from NotRambitWombat made it even shorter.. :)
-- Tried to get the extra tables working but I couldn't .. :(
-- Making progress on this ... Added tables tried to get them to work again .. 
-- It gets the values to the tables but it has an error (indicated in script)  [ 8:20 pm 30-5-2004 ]

gBot = "CountGraph"
fullcell = "     ?\t"
emptycell = "\t"
tTab = {	[1] = "", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "", [9] = "", [10] = "", [11] = "", [12] = "", };
tTable = {	[1] = "", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "", [9] = "", [10] = "", [11] = "", [12] = "", };
tCol1= { 	[1] = "", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "", [9] = "", [10] = "", [11] = "", [12] = "", };
tCol2= { 	[1] = "", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "", [9] = "", [10] = "", [11] = "", [12] = "", };
tCol3= { 	[1] = "", [2] = "", [3] = "", [4] = "", [5] = "", [6] = "", [7] = "", [8] = "", [9] = "", [10] = "", [11] = "", [12] = "", };
----------------------------------------------------------------------- the command 
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 cmd~=nil then
			if cmd=="!graph" then
			GiveGraph()
			end
		end
	end
end
----------------------------------------------------------------------- place the values in table and return table 
function AddValues()
tTable = {}
GetNumbers()
if usrC > 1 then
	local pivot = 11 - floor(usrC / maxU * 10)
	for i = 1,10 do
		if ( i < pivot ) then
			tTable[i] = emptycell
		elseif ( i == pivot ) then
			tTable[i] = userCount
		else tTable[i] = fullcell end         
	end
end
if usrC == 1 then
	SendToAll(gBot, "Where did everybody go ?")
end
tTable[11] = Time
tTable[12] = hubshrS
return tTable
end
----------------------------------------------------------------------- push the values in a > b > c
function FixTable(table1, table2)
for i, v in table1 do
	tinsert ( table2, i, v )
end
end

----------------------------------------------------------------------- push the tables ..  (this is the part that the problem is ... :S)
function DoTranferTab()
if tTable[11] ~= "" then
	if tCol1[11] == "" then 				--- tCol1 has no values
		FixTable(tTable, tCol1)			---      then from tmp > 1
	elseif tCol1[11] ~= "" and tCol2[11] == "" then		--- tCol1 has values
		FixTable(tCol1, tCol2)			---       then Move 1 > 2                <---there is a problem in this line .. 
		FixTable(tTable, tCol1)			---           and from tmp > 1
		if tCol2[11] ~= "" and tCol3[11] == ""then	--- --- tCol2 has values
			FixTable(tCol2, tCol3)		--- ---      then Move 2 >3
			FixTable(tCol1, tCol2)		--- ---          and from 1 > 2
			FixTable(tTable, tCol1)		--- ---                and from  tmp > 1
		end
	else 
	tCol1 = {}
	end
	tTable = {}
end
end
----------------------------------------------------------------------- the graph showing the values of previous table
function GiveGraph()
DoTranferTab()
AddValues()
	tMsg = "\r\n\t\t\t- "..frmHub:GetHubName().." User Count Graph -"
	tMsg = tMsg.."\r\nShare\t:\t"..tTable[12].."\t\t"..tCol1[12].."\t\t"..tCol2[12].."\t\t"..tCol3[12]
	tMsg = tMsg.."\r\n 100% ("..maxU..")\t"..tTable[1].."\t"..tCol1[1].."\t"..tCol2[1].."\t"..tCol3[1]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[2].."\t"..tCol1[2].."\t"..tCol2[2].."\t"..tCol3[2]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[3].."\t"..tCol1[3].."\t"..tCol2[3].."\t"..tCol3[3]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[4].."\t"..tCol1[4].."\t"..tCol2[4].."\t"..tCol3[4]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[5].."\t"..tCol1[5].."\t"..tCol2[5].."\t"..tCol3[5]
	tMsg = tMsg.."\r\n  50% ("..midU..")\t\t"..tTable[6].."\t"..tCol1[6].."\t"..tCol2[6].."\t"..tCol3[6]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[7].."\t"..tCol1[7].."\t"..tCol2[7].."\t"..tCol3[7]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[8].."\t"..tCol1[8].."\t"..tCol2[8].."\t"..tCol3[8]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[9].."\t"..tCol1[9].."\t"..tCol2[9].."\t"..tCol3[9]
	tMsg = tMsg.."\r\n     -\t\t"..tTable[10].."\t"..tCol1[10].."\t"..tCol2[10].."\t"..tCol3[10]
	tMsg = tMsg.."\r\n   0% (0)\t\t"..fullcell.."\t"..fullcell.."\t"..fullcell.."\t"..fullcell
	tMsg = tMsg.."\r\nTime\t:\t"..tTable[11].."\t\t"..tCol1[11].."\t\t"..tCol2[11].."\t\t"..tCol3[11]
	SendToAll(gBot, tMsg)
end
----------------------------------------------------------------------- get the data (numbers) needed, format and return them 
function GetNumbers()
	Time, userCount, maxU, hubshare = ""
	Time = date("%H")..":"..date("%M")
	usrC = frmHub:GetUsersCount()
	userCount = AddSpacesToKey(usrC)
	maxU = frmHub:GetMaxUsers()
	midU = maxU/2
	thubshare = format("%0.1f", ( frmHub:GetCurrentShareAmount() / 1024))
	hubshrS = thubshare.." kb"
	if tonumber(thubshare) >= 1024 and tonumber(thubshare) < (1024^2) then
		hubshrS = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024^2))).." mb"
	elseif tonumber(thubshare) >= (1024^2) and tonumber(thubshare) < (1024^3) then 
		hubshrS = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024^3))).." gb"
	elseif tonumber(thubshare) >= (1024^3) then 
		hubshrS = format("%0.1f", ( frmHub:GetCurrentShareAmount() / (1024^4))).." tb"
	end
	return Time, userCount, maxU, midU, hubshare, usrC, hubshrS
end
----------------------------------------------------------------------- adding appropriate number of spaces to userCount string
function AddSpacesToKey(data)
local ratio = (5 - strlen(data))
local tcell  = strrep(" ", ratio)..data.."\t"
return tcell
end
Up to now with this one I am geting another error :

Syntax error: bad argument #2 to `tinsert' (number expected, got string)
stack traceback:
   1:  function `tinsert' [C]
   2:  function `FixTable' at line 83 [file `...Graph.lua']
   3:  function `DoTranferTab' at line 93 [file `...Graph.lua']
   4:  function `GiveGraph' at line 108 [file `...Graph.lua']
   5:  function `DataArrival' at line 54 [file `...Graph.lua']

SMF spam blocked by CleanTalk