BR

Highscores No Jogo

Por Bruno, 09 de ago. de 2008 em Actions e Talkactions

tibia
script
otserv
36
8.2k
BrunoB
09 de agosto de 2008 às 16:19

SÓ EM SERVERS COM LuaSQL e doPlayerPopupFYI![/b]

Exemplo:

!ranks "level

 

Essa é uma talkaction que mostra uma janela com Nome, Level, Exp....

capture1qo8zm7.jpg

Um pouco útil até. Lembrando que só funciona em TFS.

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

 

Crie um arquivo chamado highscores.lua na pasta data/talkactions/scripts e insira:

function onSay(cid, words, param)
dofile("./config.lua")
local players = 20 -- The amount of players that is shown in the list
local maxgroupid = 1 -- Players in groups above this is not shown in the list

if sqlType == "mysql" then
	env = assert(luasql.mysql())
	con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))
else -- sqlite
	env = assert(luasql.sqlite3())
	con = assert(env:connect(sqliteDatabase))
end

local str = ""
if param == "level" or param == "exp" or param == "lvl" or param == "" then
	cur = assert(con:execute("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= "..maxgroupid.." ORDER BY `experience` DESC LIMIT 0,"..players..";"))
	row = cur:fetch({}, "a")
	str = "# [Level] - Name - (Experience)\n"
	local i = 0
	while row do
		str = str.."\n#"..(i+1).." ["..row.level.."] - "..row.name.." - ("..row.experience..")"
		row = cur:fetch (row, "a")
		i = i+1
	end
elseif param == "maglevel" or param == "magic" or param == "ml" then
	cur = assert(con:execute("SELECT `name`, `maglevel` FROM `players` WHERE `group_id` <= "..maxgroupid.." ORDER BY `maglevel` DESC LIMIT 0,"..players..";"))
	row = cur:fetch({}, "a")
	str = "# [Magic Level] - Name\n"
	local i = 0
	while row do
		str = str.."\n#"..(i+1).." ["..row.maglevel.."] - "..row.name..""
		row = cur:fetch (row, "a")
		i = i+1
	end
elseif param == "fist" then
	cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 0 ORDER BY `value` DESC;"))
	row = cur:fetch({}, "a")
	str = "# [Fist Fighting] - Name\n"
	local i = 0
	while row do
		if i == players then
			break
		end
		query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
		sql = query:fetch({}, "a")
		if sql ~= nil then
			str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
			i = i+1
		end
		row = cur:fetch (row, "a")
	end
elseif param == "club" then
	cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 1 ORDER BY `value` DESC;"))
	row = cur:fetch({}, "a")
	str = "# [Club Fighting] - Name\n"
	local i = 0
	while row do
		if i == players then
			break
		end
		query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
		sql = query:fetch({}, "a")
		if sql ~= nil then
			str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
			i = i+1
		end
		row = cur:fetch (row, "a")
	end
elseif param == "sword" then
	cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 2 ORDER BY `value` DESC;"))
	row = cur:fetch({}, "a")
	str = "# [Sword Fighting] - Name\n"
	local i = 0
	while row do
		if i == players then
			break
		end
		query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
		sql = query:fetch({}, "a")
		if sql ~= nil then
			str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
			i = i+1
		end
		row = cur:fetch (row, "a")
	end
elseif param == "axe" then
	cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 3 ORDER BY `value` DESC;"))
	row = cur:fetch({}, "a")
	str = "# [Axe Fighting] - Name\n"
	local i = 0
	while row do
		if i == players then
			break
		end
		query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
		sql = query:fetch({}, "a")
		if sql ~= nil then
			str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
			i = i+1
		end
		row = cur:fetch (row, "a")
	end
elseif param == "dist" or param == "distance" then
	cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 4 ORDER BY `value` DESC;"))
	row = cur:fetch({}, "a")
	str = "# [Distance Fighting] - Name\n"
	local i = 0
	while row do
		if i == players then
			break
		end
		query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
		sql = query:fetch({}, "a")
		if sql ~= nil then
			str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
			i = i+1
		end
		row = cur:fetch (row, "a")
	end
elseif param == "shield" or param == "shielding" then
	cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 5 ORDER BY `value` DESC;"))
	row = cur:fetch({}, "a")
	str = "# [Shielding] - Name\n"
	local i = 0
	while row do
		if i == players then
			break
		end
		query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
		sql = query:fetch({}, "a")
		if sql ~= nil then
			str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
			i = i+1
		end
		row = cur:fetch (row, "a")
	end
elseif param == "fish" or param == "fishing" then
	cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 6 ORDER BY `value` DESC;"))
	row = cur:fetch({}, "a")
	str = "# [Fishing] - Name\n"
	local i = 0
	while row do
		if i == players then
			break
		end
		query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
		sql = query:fetch({}, "a")
		if sql ~= nil then
			str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
			i = i+1
		end
		row = cur:fetch (row, "a")
	end
end
if str ~= "" then
	doPlayerPopupFYI(cid, str)
end
con:close()
env:close()
end

E na pasta data/talkactions adicione ao arquivo talkactions.xml:

<talkaction words="!ranks" script="highscores.lua"/>

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

 

Basta entrar no tibia e usar o comando !ranks!

 

Créditos:

80% Pro cara do outro forum, pois eu peguei dele!

20% Pra mim por trazer pra cá e arrumar o erro do comando!

 

Comentem!

Editado Agosto 9 por Xtr3m3

gustavocordeiroG
09 de agosto de 2008 às 17:10

Útil. Bom tutorial

Vou testar :smile_positivo:

BrunoB
09 de agosto de 2008 às 17:37

Blz....

Vlw cara...aki funcionou perfeitamente...se aí funcionar fala ew xD!

RajasR
09 de agosto de 2008 às 18:29

aff q paia intao nao funcuona em servidor XML e 8.1?

FireSoulF
09 de agosto de 2008 às 19:41
SÓ EM SERVERS COM LuaSQL e doPlayerPopupFYI!

 

 

Como ele disse só em server SQL.

 

 

Atts

FireSoul

BrunoB
10 de agosto de 2008 às 19:28

Testei uma vez em XML e não deu certo...

Tenta aí...

Se der certo posta aki que eu modifico o tópico!

Abacate123A
10 de agosto de 2008 às 19:38

puts, se o cara tem um servidor sql, é mais facil por logo um site -.-

 

otra, testei esse script aew ne um ot, ele so amostrou o accmanager e nada mais...

BrunoB
10 de agosto de 2008 às 19:48

Cara, como eu disse no tópico!

Não foi uma criação minha....

Resolvi trazer pra cá pq irá ajudar muita gente que não sabe mexer com site, e outra....

Testado aki no meu servidor 100% funcionando!

Refaz tudo aí que tenho certeza que irá dar certo!

Vlw

macedinhoM
10 de agosto de 2008 às 20:33

Aew testei aki e deu certo!

Vlw Xtr3m3, cada vez estou te conheçendo melhor...Ja sou seu fãn....gostei bastante de seus trabalhos!

BrunoB
10 de agosto de 2008 às 20:39

Vlw,

É bom saber que tem alguem que goste doq eu faço!

vlw mesmo!

djludioD
11 de agosto de 2008 às 14:33

Parece ser bom vou testar aqui ;)

 

 

 

Lúdio...

BrunoB
11 de agosto de 2008 às 14:58

Blz....se funcionar posta!

francklinF
13 de agosto de 2008 às 12:24

Puts muito bom, porem era bom se funcionasse em versões XML, pois a maioria dos "ots" em sql tem site, e isso é mais útil pra servers que não tem site ;x

3 semanas depois...
zimbitubaZ
28 de agosto de 2008 às 12:52

so :D

obrigado mesmo cara

mais só uma coisinha

 

 

if sqlType == "mysql" then

 

Isso aqui seria o tipo de sql que estou usando no server né?

 

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

edite

aqui deu um erro cara :(

data/talkactions/scripts/highscores.lua:7: in function <data/talkactions/scripts/highscores.lua:1>

 

Olha ai v se arruma preciso urgente :D

Editado Agosto 28 por Shynzo

Corvo69C
28 de agosto de 2008 às 13:05

bah...

seria mais ultil para otserver xml. =\

Editado Agosto 28 por Onlythecrow