Ir para conteúdo
  • Cadastre-se

(Resolvido)Actions teleport


Ir para solução Resolvido por hiquezerah,

Posts Recomendados

  • Solução

.Qual servidor ou website você utiliza como base? Otx

 

Qual o motivo deste tópico?  Olá rapazeada do Tibiaking, Boa noite!! <3 
Fiz esse script simples para o meu servidor com o intuinto de colocar um pouco mais de rpg em clicar em alguns lugares diferentes no cenário.
Existe varios lugares que eu precisarei utilizar esse script, e seria muito melhor utilizar apenas um script para todos os locais ao envés de criar vários scripts, sabe?
Alguém poderia me ajudar a colocar uma actionid para cada teleport dentro do mesmo script?
ex: poder repetir o script dentro dele mesmo e mudar os locais e a actionid

 

local teleport1 = {x=283, y=984, z=6}

local teleport2 = {x=284, y=985, z=6}

 

        if isPlayer(cid) then -- actionid 222
        doTeleportThing(cid, teleport1)
        doSendMagicEffect(getPlayerPosition(cid), 12)
        end

else

        if isPlayer(cid) then -- actionid 111
        doTeleportThing(cid, teleport2)
        doSendMagicEffect(getPlayerPosition(cid), 12)
        end

end 

 

Você tem o código disponível? Se tiver publique-o aqui: 

function onUse(cid, item, fromPosition, item2, toPosition)

local teleport = {x=283, y=984, z=6}

		if isPlayer(cid) then
        doTeleportThing(cid, teleport)
        doSendMagicEffect(getPlayerPosition(cid), 12)
        end
end 

 

Olá rapazeada, desculpe-me a minha preguiça e não ter tentado ir um pouco mais no script, acabei fazendo alguns teste e consegui resolver, postarei o resultado embaixo caso alguém precise.

 

function onUse(cid, item, fromPosition, item2, toPosition)

local teleport1 = {x=283, y=984, z=6}
local teleport2 = {x=291, y=976, z=7} -- Pos que irá teleportar, repita um desses caso queira adicionar mais algum teleport --

		if isPlayer(cid) and item.uid == 12222 then      -- mude o "12222" para cada teleport e adicione ao item no remeres
        doTeleportThing(cid, teleport1)
		doPlayerSendTextMessage(cid,25,"Passagem Secreta")
        doSendMagicEffect(getPlayerPosition(cid), 12)
        end
		
		-- Se quiser adicionar mais teleportes repita apenas até o end 
		if isPlayer(cid) and item.uid == 12223 then      -- mude o "12223" para cada teleport e adicione ao item no remeres
        doTeleportThing(cid, teleport2)  -- mude de acordo com o local criado la encima
		doPlayerSendTextMessage(cid,25,"Succes")
        doSendMagicEffect(getPlayerPosition(cid), 12)
		end --  este aqui
		
		
end

Em action.xml adicione as tags
    <action uniqueid = "12222" event = "script" value = "teleportes/goa1.lua" />
    <action uniqueid = "12223" event = "script" value = "teleportes/goa1.lua" />

Editado por hiquezerah
Consegui solucionar o desejado e postarei o resultado para ajudar se algúem precisar (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Vi que o tópico já está resolvido, mas criei uma solução mais otimizada e de fácil manutenção para que facilite futuramente pra ti:

 

Spoiler


local config = {
  [7010] = {
    position = {x = 1053, y = 1055, z = 7}
  },

  [7011] = {
    position = {x = 1051, y = 1058, z = 7}
  },

  [7012] = {
    position = {x = 1056, y = 1058, z = 7}
  },

  [7013] = {
    position = {x = 1048, y = 1058, z = 7}
  },

  [7014] = {
    position = {x = 1049, y = 1053, z = 7}
  },
  
  effect = 21,
  message = "Passagem Secreta" 
}

function onUse(cid, item, frompos, item2, topos)
local aidTable = config[item.actionid]

    if doTeleportThing(cid, aidTable.position) then
      doPlayerSendTextMessage(cid, 25, config.message)
      doSendMagicEffect(getCreaturePosition(cid), config.effect)
    end
  return true
end

 

 

No arquivo actions.xml coloque a tag deste modo, irá evitar o spam de várias tags:

<action actionid="7010;7011;7012;7013;7014" event="script" value="teleports.lua"/>

 

Esse script que tu apresentou iria ficar bem mais pesado futuramente, por ter que criar várias linhas de código toda vez que quisesse adicionar um novo lugar. Utiliza esse que mandei porque aí tu só precisa alterar a tabela para colocar novos lugares (basta seguir o modelo dela), não vai precisar mexer no código.

Editado por Pisces (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
5 horas atrás, Pisces disse:

Vi que o tópico já está resolvido, mas criei uma solução mais otimizada e de fácil manutenção para que facilite futuramente pra ti:

 

  Mostrar conteúdo oculto


local config = {
  [7010] = {
    position = {x = 1053, y = 1055, z = 7}
  },

  [7011] = {
    position = {x = 1051, y = 1058, z = 7}
  },

  [7012] = {
    position = {x = 1056, y = 1058, z = 7}
  },

  [7013] = {
    position = {x = 1048, y = 1058, z = 7}
  },

  [7014] = {
    position = {x = 1049, y = 1053, z = 7}
  },
  
  effect = 21,
  message = "Passagem Secreta" 
}

function onUse(cid, item, frompos, item2, topos)
local aidTable = config[item.actionid]

    if doTeleportThing(cid, aidTable.position) then
      doPlayerSendTextMessage(cid, 25, config.message)
      doSendMagicEffect(getCreaturePosition(cid), config.effect)
    end
  return true
end

 

 

No arquivo actions.xml coloque a tag deste modo, irá evitar o spam de várias tags:


<action actionid="7010;7011;7012;7013;7014" event="script" value="teleports.lua"/>

 

Esse script que tu apresentou iria ficar bem mais pesado futuramente, por ter que criar várias linhas de código toda vez que quisesse adicionar um novo lugar. Utiliza esse que mandei porque aí tu só precisa alterar a tabela para colocar novos lugares (basta seguir o modelo dela), não vai precisar mexer no código.

@Pisces Muito obrigado mano, estou começando a conseguir fazer algumas coisas do zero agora, então ta um pouco dificil ainda, mas com certeza irei utilizar o seu codigo e estudar ele um pouco, estou tendo uma grande dificuldade para criar tabelas :/  mas muito obrigado <3 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo