Jump to content
×
×
  • Create New...

Recommended Posts

Introdução

Ele simplesmente manda um efeito para o Top Level caso ele estiver online, além disso, ele checa quando o top é ultrapassado e o efeito passa automaticamente ao novo top.

 

Instalação:

 

Em data/creaturescripts/creaturescripts.xml adicione:

 

<event type="login" name="TopEffect" event="script" value="topeffect.lua"/>
<event type="advance" name="CheckTop" event="script" value="topeffect.lua"/>
Agora crie um arquivo em data/creaturescripts/scripts com o nome topeffect.lua e adicione:

--[[
	Script by Bruno Minervino para o Tibia King
	Caso for postar, colocar os créditos
]]

local config = {
	tempo = 10, --tempo em segundos
	mensagem = {
		texto = "[TOP]", --não use mais de 9 caracteres
		efeito = TEXTCOLOR_LIGHTBLUE --efeito para a função doSendAnimatedText
	},
	efeito = 30, --efeito da função doSendMagicEffect
	globalstr = 5687 -- uma global storage qualquer q esteje vazia
}

--[[ Não mexa em nada abaixo ]]
local topPlayer = getGlobalStorageValue(config.globalstr) > 0 and getGlobalStorageValue(config.globalstr) or 0

function onLogin(cid)
	local query = db.getResult("SELECT `id`, `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1")
	if (query:getID() ~= -1) then
		local pid = query:getDataString("id")
		local name = query:getDataString("name")
		if getPlayerName(cid) == name then
			if topPlayer ~= getPlayerID(cid) then topPlayer = getPlayerID(cid) end
			setGlobalStorageValue(config.globalstr, pid)
			TopEffect(cid)
		end
	end
	registerCreatureEvent(cid, "CheckTop")
	return true
end

function onAdvance(cid, skill, oldlevel, newlevel)
	if skill == 8 then
		local query = db.getResult("SELECT `id`, `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 1")
		if (query:getID() ~= -1) then
			local level = tonumber(query:getDataString("level"))
			if level < newlevel and topPlayer ~= getPlayerID(cid) then
				doBroadcastMessage("O jogador " .. getPlayerName(cid) .. " tornou-se o novo Top Level. Parabens!", 22)
				topPlayer = getPlayerID(cid)
				doSaveServer()
				setGlobalStorageValue(config.globalstr, getPlayerID(cid))
				TopEffect(cid)
			end			
		end
	end
	return true
end

function TopEffect(cid)
	if not isPlayer(cid) then return true end
	if topPlayer == getPlayerID(cid) then
		doSendAnimatedText(getCreaturePosition(cid), config.mensagem.texto, config.mensagem.efeito)
		doSendMagicEffect(getCreaturePosition(cid), config.efeito)
		addEvent(TopEffect, config.tempo * 1000, cid)
	end
end

function getPlayerNameById(id)
	local query = db.getResult("SELECT `name` FROM `players` WHERE `id` = " .. db.escapeString(id))
	if query:getID() ~= -1 then
		return query:getDataString("name")
	end
	return 0
end

function getPlayerIdByName(name)
	local query = db.getResult("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(name))
	if query:getID() ~= -1 then
		return tonumber(query:getDataString("id"))
	end
	return 0
end

function getPlayerID(cid)
	return getPlayerIdByName(getPlayerName(cid))
end

Espero que gostem :)

Link to post
Share on other sites

  • 1 month later...

Teria alguma print de como fica in-game?

Ele fica subindo um efeito de texto, de x em x tempos, com a mensagem: [TOP]

É algo um tanto quanto simples...

Link to post
Share on other sites

  • 2 weeks later...

Poderia dizer como coloco uma storage com valor tipo (5212,4), pq no msm Server tem graduação:

 

(5212,1) genin

(5212,2) chunin

(5212,3) jounin

(5212,4) hokage

 

aí quem fosse o top vira a graduação hokage.

Link to post
Share on other sites

Poderia dizer como coloco uma storage com valor tipo (5212,4), pq no msm Server tem graduação:

 

(5212,1) genin

(5212,2) chunin

(5212,3) jounin

(5212,4) hokage

 

aí quem fosse o top vira a graduação hokage.

setPlayerStorageValue(cid, 5212, 1) -- genin

setPlayerStorageValue(cid, 5212, 2) -- chunin

setPlayerStorageValue(cid, 5212, 3) -- jounin

setPlayerStorageValue(cid, 5212, 4) -- hokage

Link to post
Share on other sites

hola, fiz o test com o script e fica lindao demais porem nao e ativado so com o top, o script e ativado qndo qualquer um upa 1 lvl ele "vira o top" msm sendo lvl 3 e tendo lvls 500 no server

Link to post
Share on other sites

hola, fiz o test com o script e fica lindao demais porem nao e ativado so com o top, o script e ativado qndo qualquer um upa 1 lvl ele "vira o top" msm sendo lvl 3 e tendo lvls 500 no server

Vou verificar e para encontrar o bug e arrumar.

Link to post
Share on other sites

  • 2 weeks later...

Refiz o código de outro jeito, as TAGS são as MESMAS.

 

Créditos ao Bruno: http://pastebin.com/raw.php?i=pr8G8DQH

HAahhaa, depois vou testar e atualizo no principal.

Esse foi um dos meus primeiros scripts quando comecei mexer com lua, nunca mais alterei ele.

 

Vlw vod.

Link to post
Share on other sites

  • 4 weeks later...

ñao entendi XD

 

function onLogin(player)
player:loadVipData()
player:updateVipTime()
local loginStr = "Welcome to " .. configManager.getString(configKeys.SERVER_NAME) .. "!"
if player:getLastLoginSaved() <= 0 then
loginStr = loginStr .. " Please choose your outfit."
player:sendOutfitWindow()
else
if loginStr ~= "" then
player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
end
loginStr = string.format("Your last visit was on %s.", os.date("%a %b %d %X %Y", player:getLastLoginSaved()))
end
player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr)
??
Edited by adoration
Link to post
Share on other sites

Cara, me refiro à função do script que eu postei aqui...

Se você prestar atenção ele trata essas duas funções...

Então nelas você poderia usar para atribuir uma storage ao top level.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share