Userinfo with tables....
 

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

Userinfo with tables....

Started by nErBoS, 27 February, 2004, 02:27:48

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

nErBoS

Hi all,

Help me out here..

Recently i have changed my userinfo to work with tables but sometimes i get this error....

Syntax Error: attempt to concat a nil value

I have been working on it but can find anything wrong
Here is the function..

function UserInfo(user, data)
	GetArgML(data)
	local msg = ""
	local log = "Base-Dados/UserInfo/"..arg..".info"
	local file = readfrom(log)
	local user = GetItemByName(arg)
	if (user == nil) then
		if (file == nil) then
			msg = msg.."N?o existe informa??o sobre "..arg.." na Base de Dados do Hub !"
		else
			msg = ShowInfo(user, data)
		end
	else
	LoadFromFile(log)
	in = info["in"]
	out = info["out"]
	ban = info["ban"]
	cban = info["cban"]
	kick = info["kick"]
	ckick = info["ckick"]
	msg = msg.."Informa??o sobre o utilizador: "..user.sName.." em "..GetTime().."\r\n\r\n"
	CONECTADO[user.sName] = "Sim"
	msg = msg.."Conectado:\t"..CONECTADO[user.sName]
	if (user.bOperator) then
	OP[user.sName] = "Sim"
	msg = msg.."\r\nOperador:\t\t"..OP[user.sName]
	else
	OP[user.sName] = "N?o"
	msg = msg.."\r\nOperador:\t\t"..OP[user.sName]
	end
	if (GetProfileName(user.iProfile) == "VIP") then
	VIP[user.sName] = "Sim"
	msg = msg.."\r\nVip:\t\t"..VIP[user.sName]
	else
	VIP[user.sName] = "N?o"
	msg = msg.."\r\nVip:\t\t"..VIP[user.sName]
	end
	IP[user.sName] = user.sIP 
	msg = msg.."\r\nIP:\t\t"..IP[user.sName]
	if (IN[user.sName] == nil) then
		if (file == nil or in == nil) then
		IN[user.sName] = "Nenhuma"
		msg = msg.."\r\nUltima Entrada:\t"..IN[user.sName]
		else
		IN[user.sName] =  in
		msg = msg.."\r\nUltimo Entrada:\t"..IN[user.sName]
		end
	else
	msg = msg.."\r\nUltimo Entrada:\t"..IN[user.sName]
	end
	if (OUT[user.sName] == nil) then
		if (file == nil or out == nil) then
		OUT[user.sName] = "Nenhuma"
		msg = msg.."\r\nUltima Saida:\t"..OUT[user.sName]
		else
		OUT[user.sName] = out
		msg = msg.."\r\nUltimo Saida:\t"..OUT[user.sName]
		end
	else
	msg = msg.."\r\nUltimo Entrada:\t"..OUT[user.sName]
	end
	_,b, ver = strfind(user.sMyInfoString,"V:(.*),M:") 
	if (strfind(user.sMyInfoString,"PTDC++")) then 
	_,b, ptdc = strfind(user.sMyInfoString,"PT:(%x+.%x+)")
	CLIENTE[user.sName]= "ptDC"
	VERSAO[user.sName] = ptdc
	msg = msg.."\r\nCliente:\t\t"..CLIENTE[user.sName]
	msg = msg.."\r\nVers?o:\t\t"..VERSAO[user.sName]
	elseif strfind(user.sMyInfoString,"<++")) then 
	local _,b, ptdc2 = strfind(user.sMyInfoString,"<++")
	CLIENTE[user.sName]= "ptDC"
	VERSAO[user.sName] = ptdc2
	msg = msg.."\r\nCliente:\t\t"..CLIENTE[user.sName]
	msg = msg.."\r\nVers?o:\t\t"..VERSAO[user.sName]
	else
	CLIENTE[user.sName]= "BCDC++"
	VERSAO[user.sName] = ver
	msg = msg.."\r\nCliente:\t\t"..CLIENTE[user.sName]
	msg = msg.."\r\nVers?o:\t\t"..VERSAO[user.sName]
	end
	elseif (strfind(user.sMyInfoString,"<++")) then 
	local _,b, ptdc2 = strfind(user.sMyInfoString,"<++")
	CLIENTE[user.sName]= "ptDC"
	VERSAO[user.sName] = ptdc2
	msg = msg.."\r\nCliente:\t\t"..CLIENTE[user.sName]
	msg = msg.."\r\nVers?o:\t\t"..VERSAO[user.sName]
	elseif (strfind(user.sMyInfoString," 4 then 
	limiter = limiter / 1024 
	end 
	LIMITADOR[user.sName] = limiter.." Kb/s"
	msg = msg.."\r\nLimitador:\t\t"..LIMITADOR[user.sName]
	end
	else
	LIMITADOR[user.sName] = "Sem Limitador"
	msg = msg.."\r\nLimitador:\t\t"..LIMITADOR[user.sName]
	end 
	if strfind(user.sMyInfoString,"D:(%x+)") then 
	local _,b, dlimiter = strfind(user.sMyInfoString,"D:(%x+)") 
	if dlimiter ~= nil then 
	LIMITADOR[user.sName] = dlimiter.." Kb/s" 
	msg = msg.."\r\nLimitador:\t\t"..LIMITADOR[user.sName]
	else
	LIMITADOR[user.sName] = "Sem Limitador" 
	msg = msg.."\r\nLimitador:\t\t"..LIMITADOR[user.sName]
	end
	end 
	local s,e,description,speed,email,share = strfind(user.sMyInfoString, "$MyINFO $ALL ([^$]+)$ $([^$]*)$([^$]*)$([^$]+)")
	if email == "" or email == nil then
	MAIL[user.sName] = "Sem Mail"
	msg = msg.."\r\nMail:\t\t"..MAIL[user.sName]
	else
	MAIL[user.sName] = email
	msg = msg.."\r\nMail:\t\t"..MAIL[user.sName]
	end
	if description == "" or description == nil then
	DESCRICAO[user.sName] = "Sem Descri??o"
	msg = msg.."\r\nDescri??o:\t"..DESCRICAO[user.sName]
	else
	description = strsub(description, strlen(user.sName) + 1, strlen(description))
	DESCRICAO[user.sName] = description
	msg = msg.."\r\nDescri??o:\t"..DESCRICAO[user.sName]
	end
	if share == "" or share == nil then
	SHARE[user.sName] = "Sem Partilha"
	msg = msg.."\r\nPartilha:\t\t"..SHARE[user.sName]
	else
	share = share / (1024*1024*1024)
	SHARE[user.sName] = share.." GB"
	msg = msg.."\r\nPartilha:\t\t"..SHARE[user.sName]
	end
	if speed == "" or speed == nil then
	LIGACAO[user.sName] = "Sem Liga??o"
	msg = msg.."\r\nLiga??o:\t\t"..LIGACAO[user.sName]
	else
	speed = strsub(speed,1,strlen(speed)-1)
	LIGACAO[user.sName] = speed
	msg = msg.."\r\nLiga??o:\t\t"..LIGACAO[user.sName]
	end
	if (BAN[user.sName] == nil) then
		if (file == nil or ban == nil) then		
		BAN[user.sName] = "Nenhum"
		msg = msg.."\r\nUltimo Ban:\t"..BAN[user.sName] 
		else
		BAN[user.sName] = ban
		msg = msg.."\r\nUltimo Ban:\t"..BAN[user.sName] 
		end
	else
	msg = msg.."\r\nUltimo Ban:\t"..BAN[user.sName] 
	end
	if (CBAN[user.sName] == nil) then
		if(file == nil or cban == nil) then
			CBAN[user.sName] = 0
			msg = msg.."\r\nVezes Banido:\t"..CBAN[user.sName] 
		else
			CBAN[user.sName] = cban
			msg = msg.."\r\nVezes Banido:\t"..CBAN[user.sName]
		end
	else
	cban = tonumber(cban)
	CBAN[user.sName] = CBAN[user.sName] + cban
	msg = msg.."\r\nVezes Banido:\t"..CBAN[user.sName]
	end
	if (KICK[user.sName] == nil) then
		if (file == nil or kick == nil) then		
		KICK[user.sName] = "Nenhum" 
		msg = msg.."\r\nUltimo Kick:\t"..KICK[user.sName]
		else
		KICK[user.sName] = kick
		msg = msg.."\r\nUltimo Kick:\t"..KICK[user.sName]
		end
	else
	msg = msg.."\r\nUltimo Kick:\t"..KICK[user.sName]
	end
	if (CKICK[user.sName] == nil) then
		if(file == nil or ckick == nil) then
			CKICK[user.sName] = 0
			msg = msg.."\r\nVezes Kickado:\t"..CKICK[user.sName]
		else
			CKICK[user.sName] = ckick
			msg = msg.."\r\nVezes Kickado:\t"..CKICK[user.sName]
		end
	else
	ckick = tonumber(ckick)
	CKICK[user.sName] = CKICK[user.sName] + ckick
	msg = msg.."\r\nVezes Kickado:\t"..CBAN[user.sName]
	end
	msg = msg.."\r\n"
info = {
	cnt = CONECTADO[user.sName],
	op = OP[user.sName],
	vip = VIP[user.sName],
	in = IN[user.sName],
	out = OUT[user.sName],
	clt = CLIENTE[user.sName],
	vrs = VERSAO[user.sName],
	modo = MODO[user.sName],
	hb = HUBS[user.sName],
	slt = SLOTS[user.sName],
	lim = LIMITADOR[user.sName],
	mail = MAIL[user.sName],
	desc = DESCRICAO[user.sName],
	shr = SHARE[user.sName],
	lig = LIGACAO[user.sName],
	kick = KICK[user.sName],
	ckick = CKICK[user.sName],
	ban = BAN[user.sName],
	cban = CBAN[user.sName]
}	
	WriteTable(info,"info",log)
	end
return msg
end

Its a little messy :P

Best regards, nErBoS
--## nErBoS Spot ##--

nErBoS

Hi,

This function works when called to all users, is failing in passive users using DC++ 0.305.

Don't know why :(
--## nErBoS Spot ##--

nErBoS

#2
Hi,

Never mind doing this with no sleep doesn?t work :)
found the problem..

elseif strfind(user.sMyInfoString,"M:P") then
	msg = msg.."\r\nModo:\t\t"..MODO[user.sName] 
	MODO[user.sName] = "Passivo" 
	end

should be like this..
elseif strfind(user.sMyInfoString,"M:P") then
	MODO[user.sName] = "Passivo" 
	msg = msg.."\r\nModo:\t\t"..MODO[user.sName] 
	end

Best regards, nErBoS
--## nErBoS Spot ##--

SMF spam blocked by CleanTalk