Jump to content

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 comment
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 comment
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 comment
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 comment
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 comment
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 comment
Share on other sites

  • 2 weeks later...
  • 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 comment
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 comment
Share on other sites

×
×
  • Create New...