Ir para conteúdo

Featured Replies

  • 4 weeks later...
  • Respostas 8
  • Visualizações 1.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Posted Images

Postado
  Em 01/05/2020 em 02:24, MatteusDeli disse:

Boa noite, não sei se já existe este script aqui no fórum caso não aqui está.

Este script foi testado na versão 8.6 TFS 0.4

 

Bom neste script eu tive como base o script de banner da PXG aonde você coloca ele em uma Hunt e ganha uma porcentagem X a mais de experiencia.

 

Instalando o Script

 

- Vá em data/lib crie um arquivo com o nome bannerExp.lua e cole o código abaixo nele:


-- Configurações --

effect_invoke_banner = 10 -- efeito que saira no banner quando ele for colocado no chao
effect_decay_banner = 2 -- efeito que saira no banner quando o tempo dele acabar
effect_kill_banner = 36 -- efeito que saira no banner quando o player matar um monstro e ganhar o bonus de exp

banner_radius_x = 5 -- distancia maxima em x que ira ocorreu o bonus
banner_radius_y = 5 -- distancia maxima em y que ira ocorreu o bonus

time_in_minutes = 60 -- configurado em minutos (caso queira em horas só colocar 60 * 60)

config_banner = {

    --[ID DO ITEM CRIAR O BANNER] = {banner_id = ID DO BANNER, exp_bonus = % EXP PLAYER IRA GANHAR, time_left = TEMPO PARA SUMIR O BANNER},
	[4865] = {banner_id = 8617, exp_bonus = 20, time_left = 20},
}


-- Não Mexer --
time_banner = 7899987 
player_use_banner = 78999788 
storage_banner_x = 7889911 
storage_banner_y = 7889912 
storage_banner_z = 7889913 
storage_banner_id = 7889914 
storage_exp = 7889915 
rate_level = SKILL__LEVEL

 

- Agora vá em data/actions/scripts e crie um arquivo chamado bannerexp.lua e cole isto dentro:


function onUse(cid, item, frompos, itemEx, topos)

	if (getPlayerStorageValue(cid, player_use_banner) >= 1) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce ja esta usando o banner.")
		return true
	end
	
	if (config_banner[item.itemid]) then
		local banner = config_banner[item.itemid]
		CreateBanner(cid, banner, itemEx)
		TimeBannerCheck(cid, banner, getThingPos(itemEx.uid))
	end

end

function CreateBanner(cid, banner, itemEx)
	doCreateItem(banner.banner_id, getThingPos(itemEx.uid))
	doSendMagicEffect(getThingPos(itemEx.uid), effect_invoke_banner)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce usou o banner de ["..banner.exp_bonus.."% EXP], ele tem duração de "..banner.time_left.." minuto(s).")
	setPlayerStorageValue(cid, storage_banner_x, getThingPos(itemEx.uid).x)
	setPlayerStorageValue(cid, storage_banner_y, getThingPos(itemEx.uid).y)
	setPlayerStorageValue(cid, storage_banner_z, getThingPos(itemEx.uid).z)
	setPlayerStorageValue(cid, storage_banner_id, banner.banner_id)
	setPlayerStorageValue(cid, storage_exp, banner.exp_bonus)
	setPlayerStorageValue(cid, player_use_banner, 1)
	setPlayerStorageValue(cid, time_banner, os.time() + (banner.time_left * time_in_minutes))
end

function TimeBannerCheck(cid, banner, banner_pos)

	if not isCreature(cid) then
		doRemoveItem(getTileItemById(banner_pos, banner.banner_id).uid)
		doSendMagicEffect(banner_pos, effect_decay_banner)
		return true
	end

	if (getPlayerStorageValue(cid, time_banner) == os.time()) then
		doRemoveItem(getTileItemById(banner_pos, banner.banner_id).uid)
		doSendMagicEffect(banner_pos, effect_decay_banner)
		setPlayerStorageValue(cid, player_use_banner, -1)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "O Banner de ["..banner.exp_bonus.."% EXP] terminou.")
		return true
	end

	addEvent(function()
		TimeBannerCheck(cid, banner, banner_pos)
	end, 1000)

end

- Em Actions.XML cole esta tag: 


<action itemid="4865" script="bannerexp.lua"/>

Aonde está 4865 você coloca o(s) ITEM_ID que será usado para summonar o banner no chão.

 

- Agora vá em data/creatureevents/scripts crie um arquivo chamado bannerexp.lua e cole isto dentro dele:



function onKill(cid, target)
	
	if not isMonster(target) then
		return true
	end

	if (getPlayerStorageValue(cid, storage_banner_id) <= -1) then
		return true
	end

	local banner_pos = {x=getPlayerStorageValue(cid, storage_banner_x), y=getPlayerStorageValue(cid, storage_banner_y), z=getPlayerStorageValue(cid, storage_banner_z)}

	if (getTileItemById(banner_pos, getPlayerStorageValue(cid, storage_banner_id)).uid >= 1) then
		CheckPlayerInArea(cid, banner_pos)
	else
		doPlayerSetRate(cid, rate_level,1)
	end

	
	return true
end

function CheckPlayerInArea(cid, banner_pos)
	for x=banner_pos.x-banner_radius_x, banner_pos.x+banner_radius_x do
		for y=banner_pos.y-banner_radius_y, banner_pos.y+banner_radius_y do
			local banner_area = {x=x,y=y,z=banner_pos.z}
			local player = getTopCreature(banner_area).uid
			if (isPlayer(player)) then
				AddBonusExp(cid, banner_pos)
			end
		end
	end
end

function AddBonusExp(cid, banner_pos)
	doPlayerSetExperienceRate(cid, (1+(getPlayerStorageValue(cid, storage_exp)/100))+(getPlayerExtraExpRate(cid)/100))
	doSendMagicEffect(banner_pos, effect_kill_banner)
end

function getPlayerExtraExpRate(cid)
    return (getPlayerRates(cid)[rate_level]-1)*100
end

- Em Creatureevents.XML cole está tag:


<event type="kill" name="BannerExp" event="script" value="bannerexp.lua"/>

- Agora no arquivo login.lua em data/creatureevents/scripts cole este código antes do último return true:


registerCreatureEvent(cid, "BannerExp")
	if (getPlayerStorageValue(cid, 78999788) >= 1) then
		setPlayerStorageValue(cid, 78999788, -1)
	end

 

Explicação: (Configuração fica no arquivo adicionado no data/lib)

 

1° Aqui você configura a área em que o player tem que estar matando o monstro para poder ganhar o bônus 

banner_radius_x = 5 -- distancia maxima em x que ira ocorreu o bonus
banner_radius_y = 5 -- distancia maxima em y que ira ocorreu o bonus

 

2° Aqui você adiciona um novo banner (Lembre-se de adicionar o itemid que você colocar entre colchetes lá na tag em Actions.XML)

-[ID DO ITEM CRIAR O BANNER] = {banner_id = ID DO BANNER, exp_bonus = % EXP PLAYER IRA GANHAR, time_left = TEMPO PARA SUMIR O BANNER},

 

É isso... Script básico mais eu acho que vai ser bastante útil para muitos servidores.

Serve para poketibia

 

Postado

@MatteusDeli muito bom mas poderia colocar para criar um item no caso uma bandeira para sinalizar que esta valendo o bonus e caso o jogador sair da área do bonus receber um aviso mas dessa forma esta muito bom caso sentir vontade de dar uma upgrade talvez esses dois fatores iriam ajudar

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo