Ir para conteúdo
  • 0

[Resolvido] Egg Pokemon


M i s s

Pergunta

Oin Alguem pode cria pra mim Um script que faça um "ovo pokemon" chocar (virando uma pokeball com um poke dentro) ? para o Ovo chocar o player vai precisar dar "x" passos ou ficar "x" tempo com ele na bag é possovel?

 

egg.png.b37b8c0cdd8bebbc55e1c5e6bacddd6b.png

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 1

Vamos la!

 

OBS: Usei a base Cyan.

 

Primeiramente abra o items.xml que se encontra em data/items/

 

Procure o id do item que vai ser o OVO.

Você terá que fazer essa parte para cada ovo que adicionar no jogo.

e adicione os seguintes atributos nele:

 

Spoiler

<item id="5080" article="a" name="Ovo Pokemon Inicial">
  <attribute key="showattributes" value="1" />
  <attribute key="passos" value="25"/>
  <attribute key="description" value="[Passos restantes para chocar: numero_de_passos]"/>
</item>

 

 

Em numero_de_passos coloque a quantidade de passos para chocar.

 

 

Após isso vá em data/creaturescripts/ e abra o arquivo creaturescript.xml e adicione o seguinte:

 

Spoiler

<event type="move" name="MoveOvoChocar" event="script" value="chocarOvo.lua"/>

 

 

Logo em seguida vá em data/creaturescript/scripts/ e abra o arquivo login.lua e procure por algo assim:

 

Spoiler

registerCreatureEvent(cid, "ShowPokedex")
registerCreatureEvent(cid, "PlayerLogout")

 

 

E embaixo coloque o seguinte:

 

Spoiler

registerCreatureEvent(cid, "MoveOvoChocar")

 

 

Finalmente ainda em data/creaturescripts/scripts/ crie um arquivo com o nome de chocarOvo.lua e coloque o seguinte código dentro:

 

Spoiler

OVOS = {
	--[id do ovo] = {POKEMONS={"possivel pokemon 1", "possivel pokemon 2", ...}, PASSOS=quantidade de passos para chocar},
	[5080] = {POKEMONS={"Magikarp","Caterpie","Weedle"},PASSOS=25},
	[6568] = {POKEMONS={"Abra","Drowzee"},PASSOS=50},
}


STORAGE_TIMER = 90001 -- chave para guardar se o timer estiver ativo.
TEMPO_MENSAGEM = 10 -- intervalo que a mensagem sera mostrada na tela entre a primeira vez, exemplo: o cara anda e mostra a mensagem, daqui o tempo configurado a mensagem aparecera novamente.

SOMENTE_UM_OVO = true -- se for para chocar somente um ovo de cada vez deixe: true, caso contrario deixei: false.
MOSTRAR_MENSAGEM = false -- mostrar mensagem que não é possivel chocar dois ovos do mesmo tipo caso a pessoa tiver 2 ovos do mesmo tipo.

MENSAGENS = {
	SOMENTE_UM_TIPO = "Voce so pode chocar um ovo do mesmo tipo de cada vez!",
	PASSOS = "[Passos restantes para chocar: %s]",
	CHOCOU = "O Ovo chocou e nasceu um(a) %s",
}

local function atributosOvo(ovo, passos)
	if not ovo then return end
	if not passos then return end
	doSetItemAttribute(ovo.uid, "passos", passos)
	doSetItemAttribute(ovo.uid, "description", string.format(MENSAGENS.PASSOS, passos))
end

local function mostrarMensagem(cid, message)
	if getPlayerStorageValue(cid, STORAGE_TIMER) == -1 then
		setPlayerStorageValue(cid, STORAGE_TIMER, 1)
		doPlayerSendTextMessage(cid, 22, mensagem)
		addEvent(
		function(cid)
			setPlayerStorageValue(cid, STORAGE_TIMER, -1)
		end, TEMPO_MENSAGEM*1000, cid)
	end
end

local function fChocar(cid, ovo, tabela)
	passos = getItemAttribute(ovo.uid, "passos")
	if not passos or passos < 1 then
		atributosOvo(ovo, tabela.PASSOS)
	elseif passos > 1 then
		atributosOvo(ovo, passos-1)
	elseif passos == 1 then
		atributosOvo(ovo, -1)
		pokemon = tabela.POKEMONS[math.random(#tabela.POKEMONS)]
		addPokeToPlayer(cid, pokemon, 0, nil, btype)
		doPlayerSendTextMessage(cid, 22, string.format(MENSAGENS.CHOCOU, pokemon))
		doRemoveItem(ovo.uid)
	end
end

function onMove(cid, fromPosition, toPosition)
	if not isPlayer(cid) then return true end
	for id, conteudo in pairs(OVOS) do
		quantidade = getPlayerItemCount(cid, id)
		if quantidade >= 1 then
			ovo = getPlayerItemById(cid, true, id)
			if quantidade == 1 then			
				fChocar(cid, ovo, conteudo)
				if SOMENTE_UM_OVO then return true end
			else
				if not MOSTRAR_MENSAGEM then return true end
				mostrarMensagem(cid, MENSAGENS.SOMENTE_UM_TIPO)
			end
		end
	end
	return true
end

 

 

Faça bom uso, e qualquer dúvida só me avisar.

Se gostou REP++.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...