Ir para conteúdo
Propaganda

Posts Recomendados

Oi! Vou explicar o funcionamento desse sistema como se eu fosse o responsável por ele. Vamos lá!

Apresentação do Sistema de Spawn de Pokémon (Local Pokes)

Esse sistema que você está vendo foi desenvolvido para adicionar um toque especial ao mundo de PokéTibia, trazendo uma experiência única para os jogadores. O principal objetivo é criar momentos inesperados e emocionantes ao fazer com que Pokémon sejam "spawnados" perto do jogador, mas com uma chance variável dependendo do horário do dia!

Quando um jogador se aproxima de uma área específica, o código entra em ação, verificando algumas condições para ver se o Pokémon pode ou não aparecer. As condições incluem verificações se o jogador já tem Pokémon, se está em uma missão ou se não é uma invocação de outro NPC, garantindo que o spawn aconteça em momentos apropriados.

Horário é tudo!

Cada momento do dia traz uma oportunidade diferente de captura. Durante a madrugada (00:00 - 03:00), por exemplo, há uma chance maior de aparecer Ditto, enquanto Zorua e Zoroark são mais difíceis de encontrar, porque a noite traz maior tensão e mistério, certo? Já na noite tardia, entre 19:00 e 19:44, a chance de ver um Pokémon desses aumenta drasticamente, chegando quase a 100%! É o tipo de "surpresa" que um bom treinador de Pokémon adora encontrar.

Como funciona o Spawn?

O sistema usa um sorteio baseado no horário e uma chance aleatória. Caso a sorte esteja ao lado do jogador, um Pokémon é criado instantaneamente e aparece ao seu lado! O Pokémon pode ser Zorua, Zoroark ou Ditto, e o mais interessante é que ele vai assumir a mesma aparência do Pokémon do treinador que o encontrou, o que dá um toque especial à captura.

 

Além disso, o Pokémon spawnado também recebe algumas características do jogador, como o nome, e ele desaparece assim que a ação termina — um processo fluido que mantém o jogo dinâmico e emocionante!

Por fim, se o Pokémon não aparecer, o código mantém tudo em ordem, registrando que o evento ocorreu e configurando a chance para a próxima rodada de possíveis encontros.

E se nada acontecer?

Simplesmente, a chance de spawn será registrada para o jogador, e ele pode tentar novamente em outro momento! O sistema garante que, mesmo quando não há sorte, o ambiente ainda esteja sempre preparado para novos encontros.

A ideia é sempre dar aquele frio na barriga, onde o jogador nunca sabe exatamente o que vai acontecer a seguir. Isso mantém o jogo instigante, desafiador e muito mais envolvente!

Então, basicamente, é um sistema dinâmico, que leva em conta o tempo, as condições do jogador e a diversão imprevisível de encontrar Pokémon diferentes no caminho. Como qualquer bom mistério Pokémon, você nunca sabe o que esperar, mas com certeza vai ser emocionante!

 

OBSERVAÇÃO: TESTADO VARIAS VEZES EM TFS 0.3.6


Em: Creaturescripts/scripts/spawn.lua
Procure por: local function doShiny(cid)
Abaixo dessa função adicione o seguinte:

 

local function doLocalPokesSpaw(cid)
    if isCreature(cid) then
        if isSummon(cid) then return true end
        if getPlayerStorageValue(cid, 74469) >= 1 then return true end
        if getPlayerStorageValue(cid, 22546) >= 1 then return true end 
        if isNpcSummon(cid) then return true end
        if getPlayerStorageValue(cid, 637500) >= 1 then return true end  --alterado v1.9
   
        local chance = 0
        
        -- Manhã, Zorua e Zoroark difíceis, Ditto mais fácil
        if os.date("%X") >= "00:00:00" and os.date("%X") <= "03:00:00" then
            chance = 0.30
        -- Noite, Zorua e Zoroark fáceis, Ditto mais difícil
        elseif os.date("%X") >= "03:01:00" and os.date("%X") <= "05:00:00" then
            chance = 0.25
        -- Manhã, Zorua e Zoroark difíceis, Ditto mais fácil
        elseif os.date("%X") >= "05:01:00" and os.date("%X") <= "07:00:00" then
            chance = 0.20
        -- Tarde, Zorua e Zoroark difíceis, Ditto mais fácil
        elseif os.date("%X") >= "07:00:00" and os.date("%X") <= "09:00:00" then
            chance = 0.15
        -- Tarde, Zorua e Zoroark difíceis, Ditto mais fácil
        elseif os.date("%X") >= "09:01:00" and os.date("%X") <= "12:00:00" then
            chance = 0.10
        -- Tarde, Zorua e Zoroark difíceis, Ditto mais fácil
        elseif os.date("%X") >= "12:01:00" and os.date("%X") <= "14:00:00" then
            chance = 0.05
        -- Final da tarde, Zorua e Zoroark difíceis, Ditto mais fácil
        elseif os.date("%X") >= "14:01:00" and os.date("%X") <= "16:00:00" then
            chance = 0.10
        -- Noite, Zorua e Zoroark fáceis, Ditto mais difícil
        elseif os.date("%X") >= "16:01:00" and os.date("%X") <= "18:00:00" then
            chance = 0.10
        -- Zorua e Zoroark mais fáceis à noite
        elseif os.date("%X") >= "18:01:00" and os.date("%X") <= "19:00:00" then
            chance = 0.75
        -- Zorua e Zoroark mais fáceis, Ditto mais difícil
        elseif os.date("%X") >= "19:01:00" and os.date("%X") <= "20:00:00" then
            chance = 1.5
        -- Zorua e Zoroark mais fáceis, Ditto mais difícil
        elseif os.date("%X") >= "20:01:00" and os.date("%X") <= "22:00:00" then
            chance = 0.25
        -- Zorua e Zoroark mais fáceis à noite
        elseif os.date("%X") >= "22:01:00" and os.date("%X") <= "23:59:59" then
            chance = 0.80
        else
            chance = 0
        end

        local test = math.random(1, 20000)
        
        if test <= chance * 5 then  
            doSendMagicEffect(getThingPos(cid), 18)   
            local lvl = math.random(10, 30) 
            local pos = getThingPos(cid)
            local possibleSpawns = {"Zorua", "Zoroark", "Ditto"}  
            local name = possibleSpawns[math.random(1, #possibleSpawns)] 
            local shi = doCreateMonster(name, pos , false)
            doSetCreatureOutfit(shi, getCreatureOutfit(cid), -1)
            doCreatureSetNick(shi, getCreatureName(cid))
            doRemoveCreature(cid)
            setPlayerStorageValue(shi, 74469, 1) 
            print("Um " .. name .. " foi spawnado em X=" .. pos.x .. " Y=" .. pos.y .. " Z=" .. pos.z)  
        else
            setPlayerStorageValue(cid, 74469, 1)
        end                                         

    else                                                             
        return true
    end
end


Logo em seguida procure por:
 

if isSummon(cid) then
        registerCreatureEvent(cid, "SummonDeath")
	    return true
    end


E abaixo dele coloque:
 

addEvent(doLocalPokesSpaw, 10, cid)



Feito isso, sempre que for iniciar o servidor irá aparecer um print nas posições de spawn dos pokémons da função, sendo eles: Zorua, Zoroark, Ditto, ajuste os horarios como quiserem e as % a seus gostos.

Sistema de Zorua feito por Marshmello, eu apenas fiz alterações pra mais de um pokémon.

  • Like 5
  • Thanks 1
  • Confused 2
Link para o comentário
https://tibiadevs.com/forums/topic/982-spawn-de-pok%C3%A9mon-din%C3%A2mico-encontros-inesperados-baseados-no-hor%C3%A1rio/
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...