KL
pedido scripts

Pokemon morre ao passar pelo teleport

Por klbkevinklb, 27 de out. de 2018 em Scripts

26
6.3k
klbkevinklbK
28 de outubro de 2018 às 20:09
1 minuto atrás, Marshmello disse:
  Ocultar conteúdo

function onStepIn(cid, item, position, fromPosition)
    if #getCreatureSummons(cid) >= 1 then
        local pokeball = getPlayerSlotItem(cid, 8).uid
        local poke = getCreatureSummons(cid)[1]
            effect = doSendMagicEffect(getCreaturePosition(cid), 188)
        
        local cd = getCD(pokeball.uid, "blink", 30)
        if cd > 0 then
           setCD(item.uid, "blink", 0)
        end
        doReturnPokemon(cid, poke, pokeball, effect)
        doPlayerSendCancel(cid, '12//,hide')
        doPlayerSendTextMessage(cid, 22, "Seu pokémon retornou para a pokebola.")
   end
   return true
end

 

[28/10/2018 16:11:38] [Error - MoveEvents Interface] 
[28/10/2018 16:11:38] data/movements/scripts/teleportAction.lua:onStepIn
[28/10/2018 16:11:38] Description: 
[28/10/2018 16:11:38] data/movements/scripts/teleportAction.lua:7: attempt to index local 'pokeball' (a number value)
[28/10/2018 16:11:38] stack traceback:
[28/10/2018 16:11:38]     data/movements/scripts/teleportAction.lua:7: in function <data/movements/scripts/teleportAction.lua:1>

up

CrypterC
28 de outubro de 2018 às 21:11

@klbkevinklb

 

Preste atenção, quando você pegar algum código do fórum converta ele pra ANSII, as vezes alguns caracteres que não existem na formatção UTF-8 ficam invisivel e bugam o código.

 

no notepadd++ abra o arquivo e converta para ANSII

image.png.d44df6a1fa6eae5500d3766dfb5a4dd3.png

 

Ao converter olha como ficou o código , você deve apagar esses '"?"' para então funcionar.

 

image.thumb.png.568c020b4a4dc4f114e64b434502c24c.png

 

 

O Código atualizado

Spoiler
function onStepIn(cid, item, position, fromPosition)
    if #getCreatureSummons(cid) >= 1 then
        local pokeball = getPlayerSlotItem(cid, 8)
        local poke = getCreatureSummons(cid)[1]
        local btype = getPokeballType(pokeball.itemid)
        local effect = pokeballs[btype].effect
        if not effect then
            effect = 21
        end
        local cd = getCD(pokeball.uid, "blink", 30)
        if cd > 0 then
           setCD(item.uid, "blink", 0)
        end
        doReturnPokemon(cid, poke, pokeball, effect)
        doPlayerSendCancel(cid, '12//,hide')
        doPlayerSendTextMessage(cid, 22, "Seu pokémon retornou para a pokebola.")
   end
   return true
end

 

 

 

Editado Outubro 28 por Crypter

nociamN
29 de outubro de 2018 às 00:05

Nossa que confuso acho que ele nao quer um script e sim quanto ele ta com o pokemon e passa pelo teleporta o pokemon morre, kkkkk sei lá interpretei isso, ai seria um ajuste do script que ele ja tem.

Editado Outubro 29 por nociam

klbkevinklbK
29 de outubro de 2018 às 09:26
12 horas atrás, Crypter disse:

@klbkevinklb

 

Preste atenção, quando você pegar algum código do fórum converta ele pra ANSII, as vezes alguns caracteres que não existem na formatção UTF-8 ficam invisivel e bugam o código.

 

no notepadd++ abra o arquivo e converta para ANSII

image.png.d44df6a1fa6eae5500d3766dfb5a4dd3.png

 

Ao converter olha como ficou o código , você deve apagar esses '"?"' para então funcionar.

 

image.thumb.png.568c020b4a4dc4f114e64b434502c24c.png

 

 

O Código atualizado

  Ocultar conteúdo

function onStepIn(cid, item, position, fromPosition)
    if #getCreatureSummons(cid) >= 1 then
        local pokeball = getPlayerSlotItem(cid, 8)
        local poke = getCreatureSummons(cid)[1]
        local btype = getPokeballType(pokeball.itemid)
        local effect = pokeballs[btype].effect
        if not effect then
            effect = 21
        end
        local cd = getCD(pokeball.uid, "blink", 30)
        if cd > 0 then
           setCD(item.uid, "blink", 0)
        end
        doReturnPokemon(cid, poke, pokeball, effect)
        doPlayerSendCancel(cid, '12//,hide')
        doPlayerSendTextMessage(cid, 22, "Seu pokémon retornou para a pokebola.")
   end
   return true
end

 

 

 

ta beleza, ele funcionou, mas eu quero que ele fique pra fora da ball, pq imagina se o player entra em uma quest? e o pokemon voltar pra ball? tem como isso?

CrypterC
29 de outubro de 2018 às 10:43
function onStepIn(cid, item, position, fromPosition)
   if isSummon(cid) then
      doTeleportThing(cid, fromPosition, true)
      return false
   end
   return true
end

 

klbkevinklbK
29 de outubro de 2018 às 10:45
2 minutos atrás, Crypter disse:
function onStepIn(cid, item, position, fromPosition)
   if isSummon(cid) then
      doTeleportThing(cid, fromPosition, true)
      return false
   end
   return true
end

 

coloquei esse codigo que vc mando, no lugar do outro codigo citado acima, mas nao funciono

CrypterC
29 de outubro de 2018 às 12:06

Oque acontece quando o pokemon passa por cima do tp?

klbkevinklbK
29 de outubro de 2018 às 12:08
1 minuto atrás, Crypter disse:

Oque acontece quando o pokemon passa por cima do tp?

morre

up

up

L3K0T IVL
29 de outubro de 2018 às 22:19
11 horas atrás, klbkevinklb disse:

coloquei esse codigo que vc mando, no lugar do outro codigo citado acima, mas nao funciono

só isso n vai funcionar, precisa de alterações na source.

 

 

 

 

Sobre o Sistema:

 

Esse sistema tem a função de teleportar seu pokemon a certos sqm, tipo assim, você tem um pokemon e a distancia dele é 7 sqm, ao passar os 7 sqm ele teleporta para você, seja em qualquer lugar até de baixo da terra ou lugares super longe (Não se preocupe o problema do pokemon Morrer com source novas será removido e assim ele não vai morrer)

 

Tutorial que foi postado por mim no outro forum em Maio 29, 2016:

 

Vá em sua source procure por creature.cpp e abra com algum editor de texto e ache:

 

  Citar
		if(!summons.empty())
		{
			std::list<Creature*>::iterator cit;
			std::list<Creature*> despawnList;
			for(cit = summons.begin(); cit != summons.end(); ++cit)
			{
				const Position pos = (*cit)->getPosition();
				if((std::abs(pos.z - newPos.z) > 2) || (std::max(std::abs((
					newPos.x) - pos.x), std::abs((newPos.y - 1) - pos.y)) > 30))
					despawnList.push_back((*cit));
			}

			for(cit = despawnList.begin(); cit != despawnList.end(); ++cit)
				g_game.removeCreature((*cit), true);
		}

Mude para:

 

  Citar
  Citar
		/*if(!summons.empty())
		{
			std::list<Creature*>::iterator cit;
			std::list<Creature*> despawnList;
			for(cit = summons.begin(); cit != summons.end(); ++cit)
			{
				const Position pos = (*cit)->getPosition();
				if((std::abs(pos.z - newPos.z) > 2) || (std::max(std::abs((
					newPos.x) - pos.x), std::abs((newPos.y - 1) - pos.y)) > 30))
					despawnList.push_back((*cit));
			}

			for(cit = despawnList.begin(); cit != despawnList.end(); ++cit)
				g_game.removeCreature((*cit), true);
		}*/

 agora salve ctrl+s e feche.

 

 

Agora procure por Monster.cpp e ache:

 

  Citar
void Monster::onThink(uint32_t interval)

 

abaixo de:

 

  Citar
	if(teleportToMaster && doTeleportToMaster())
		teleportToMaster = false;

 

coloque:

 

  Citar
        if(getMaster()){
    	if(!Position::areInRange<6,6,0>(getPosition(), getMaster()->getPosition()))
                        doTeleportToMaster();           
         } 

 

salve ctrl+s e compila... não esqueça de abilitar as opções em config.lua

 

    -- Summons
    maxPlayerSummons = 1
    teleportAllSummons = true
    teleportPlayerSummons = true

 

lembre se de remover qualquer scripts que teleporta seu pokemon a distancia.

isso ae vlwsss, créditos a mim bjssss

 

 

 

 

Editado Outubro 29 por L3K0T IV

klbkevinklbK
30 de outubro de 2018 às 00:03

Carai, o cara apenas me ajudo e o outro deu advertencia, mano a treta de vcs é passado, o cara apenas me ajudo pqp.

unknown.png

MarshmelloM
30 de outubro de 2018 às 00:24
20 minutos atrás, klbkevinklb disse:

Carai, o cara apenas me ajudo e o outro deu advertencia, mano a treta de vcs é passado, o cara apenas me ajudo pqp.

 

Esse membro N e mais bem vindo aqui.

esse assunto esta fujindo do topico , então encerrado esse assunto