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:
<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:
<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:
registerCreatureEvent(cid, "ShowPokedex") registerCreatureEvent(cid, "PlayerLogout")
E embaixo coloque o seguinte:
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:
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++.



info
Grupo: Visconde
Registrado: 09/05/18
Posts: 267
Reputação: +9
Gênero: Feminino
Char no Tibia: Merascylla
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?