Ir para conteúdo
  • Cadastre-se

Action%252FTalkaction [Tutorial] Quest baseado num labirinto


Posts Recomendados

Bom estarei ajudando vocês a criar um quest, que os jogadores perdem a cabeça.

 


 

  • [Primeira Parte] Imagens de como a quest ficaria e explicação, (Iniciação da quest).

 

685dKgg.png

 

 

Nessa parte seria o seguinte existe 2 portão que estão na imagem cada alavanca abre um portão, e cada alavanca puxada nascera 2 bicho apos você puxar a alavanca abrira o portão e você irar pisar no piso e sera teleportado (Tem como trocar o teleport pelo action que só você pisar no piso que você sera teleportado).

 


  • [segunda Parte] Apos você pisar no teleport você irar para a parte do labirinto.

1tawoA9.png

 

Nessa parte seria o seguinte cada alavanca iria abrir uma grade, mais você esta pensando "Se a primeira alavanca acima abre a 1 grade como que abre a segunda?", Então ai que vem que os jogadores terão que descobrir como que abre a segunda parte na sala tem muitos segredos, Para abrir a segunda parte ficaria da seguinte forma acima do lado da luz há uma parede que esta quebrada o jogador teria que clicar nela para abrir a grade depois passar para a próxima parte.

 


 

[ATENÇÃO]

 

[Configuração do script]

 

Primeiro vamos na pasta do servidor (data/action/script/labirinto), Você criara uma pasta chamada labirinto e criara um .lua dentro dela com o nome que você quiser. (Nessa parte você terá que criar bastante .lua dependendo do tamanho da sua quest pois o script só consegue remover paredes na mesma posição Ex: se uma parede esta para sul e outra para leste ela não ira remover apenas se tiver as 2 no sul, então você terá que criar outro .lua para remover a outra parede).

 

 

local config = {
pedra_id = 9485, -- ItemID da pedra
 
posicoes = {
{x = 461, y = 483, z = 7},
{x = 462, y = 483, z = 7},
}
 
}
 
function onUse(cid)
doSummonCreature("Undead Dragon", {x=461, y=488, z=7})
doSummonCreature("Demon", {x=461, y=488, z=7})
               doSendMagicEffect(getCreaturePosition(cid),42)
               doSendMagicEffect(getCreaturePosition(cid),40)
               doSendMagicEffect(getCreaturePosition(cid),54)
for _, pos in pairs(config.posicoes) do
local pedra = getTileItemById(pos, config.pedra_id).uid
 
if pedra > 100 then
doRemoveItem(pedra)
else
doCreateItem(config.pedra_id, 1, pos)
end
end
 
return true
end

 

 

Onde esta em "vermelho" seria o id da grade ou parede que ira remover.

Onde esta em "azul" e a posição da grade ou parede que ira remover.

Onde esta em "amarelo" e os monstro que ira nascer e também a posição que ele ira nascer.

Onde esta em "verde" e o efeitos que ira sair apos o jogador puxar a alavanca.

 


 

[script que também poderá te ajudar]

 

Esse script ele ira teleporta o jogador e avisara no broadcast.

 

-- Start Config --
local topos = {x=464, y=471, z=7} -- Posição para onde o player será teleportado.
-- End Config --
 
function onUse(cid)
   if doTeleportThing(cid, topos) then
doBroadcastMessage("Jogador: ".. getCreatureName(cid)..", Septy Postou um tutorial no tk, Aleluiaaaa.")
 end
end

 
Onde esta em "vermelho" e a posição que o jogador sera teletransportado.
Onde esta em "azul" e a mensagem que ira aparecer para todos jogadores no broadcast.

 

 

 


 

[Tags usada no action.xml]

 

        <action actionid="1995" script="labirinto/nomedoluaquevocêcoloco.lua"/>
 

 


 

Agradecimentos :

 

Baltazar, Por gostar da quest e dar força para mim postar no tibiaking para vocês.

 

 

Creditos :

 

"Tibiaking" pelas base dos script.

Eu  pelo tutorial e por colocar algumas função nos scripts.

 

 

Espero que gostem do tutorial, pois eu resolvi postar por que eu ia participar do primeiro "CMS", Que aconteceu mais eu ainda não estava no fórum mais o meu seria mais ou menos assim, Mais já que eu não participei então parei de meche nela, Com esse tutorial você pode ter varias ideia banacas.

 

Qual quer erro poste abaixo que irei arrumar.

 

 

 

 

 

 

 

 

 

 

 

 

 

Link para o post
Compartilhar em outros sites

Gostei muito da ideia, e também da organização e explicação do tópico.

Tópico aprovado, reputado e movido para a seção correta!

Opa obrigado, Fico feliz por ter gostado.

Link para o post
Compartilhar em outros sites

Muito bom cara, gostei  :D , espero ver mais conteúdos seus como esse, rep+ ...

Opa pode deixar, eu estou postando um tópico a cada 1 semana.

Link para o post
Compartilhar em outros sites

Parabéns cara, achei muito bacana essa sua ideia. :)

Vlw pelo agradecimento.

Opa amigão, fiquei feliz por ter gostado, Eu tornei essa ideia por causa daquelas conversa no skype la.

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Glacial
      Boa tarde galera, tudo bem?
       
      Meu nome é Gustavo/Glacial, gostaria de compartilhar com a comunidade meu projeto solo no RME 3.5 /Client 10.98 do Tibia.
      Glacial City, com houses, hunts, lojas, quests, bosses e depot.

      Os teleportes já estão redirecionados, falta apenas itens nos baús das quests.
       
      Espero que curtam e podem baixar pra colocar no ot de vocês!
       
      Atualização versão 2.0:
      - Houses na cidade
      - Hive Lair (Lady Bug)
      - Silencer & Frazzle/Guzzlemaw Hunt
      - Drakens + Demons Hunt (área maior)
       
      Links MediaFire e VirusTotal:
      Download Mapas: https://www.mediafire.com/folder/hz0q694t9nk86/Mapas_Glacial
      versão 1.0 Virus Total: https://www.virustotal.com/gui/file/b4e94903752e24aba63b291f9929f15f6bd7f4feb44d5a1f42ec3d755ee7977e?nocache=1
      versão 2.0 Virus Total: https://www.virustotal.com/gui/file/d88ae087e966bed6e2f2348f31246c1858831c1fb13d4e8613ba98f6ede37503?nocache=1
       
      Segue fotos em anexo.
       

       

       

       
       
       

       

       

    • Por EddyHavoc
      Open Source MMORPG emulador de Tibia escrito em C++.
      Servidor Oficial do Tibiaking!
       
       
       
       
       
       

       
      [OTG][NPC][Storages][Dawnport] Liberando os acessos das Quests e Missões pelo NPC Captain Dreadnought
      Tutorial explicado de como liberar os acessos, missões e quests para todos os jogadores!
       

      NPC Captain Dreadnought
      Abra o script do npc captain_dreadnought.lua localizado na pasta data/npc/scripts/ e substitua todo o código pelo código abaixo:
       
       

      CRÉDITOS:
      @EddyHavoc
      @Marco Oliveira
    • Por EddyHavoc
      Open Source MMORPG emulador de Tibia escrito em C++.
      Servidor Oficial do Tibiaking!
       
       
       
       
       
       

       
      [OTG][NPC][Storages][Rookgaard] Liberando os acessos das Quests e Missões pelo NPC Oracle
      Tutorial explicado de como liberar as acessos, missões e quests para todos os jogadores!
       

      NPC Oracle
      Abra o script do npc the_oracle.lua localizado na pasta data/npc/scripts/ e substitua todo o código pelo código abaixo:
       
       

      CRÉDITOS:
      @EddyHavoc
      @Marco Oliveira
    • Por sornii
      Olá, tenho alma de compartilhador de conhecimento, assim como peguei algumas coisas daqui, sinto que devo também.
       
      Meu parceiro pediu-me que fizesse com que as quests dele tivessem seu funcionamento no TFS 1.0 assim como em um servidor que baixara a muito tempo. Eu olhei o script e era uma zona total, não entendi nada e resolvi escrever um do jeito que eu entendo por programação.
       
      O que ele gostaria é que tivesse o poder de criar quests, do modo antigo do tibia, apenas você e o baú, pelo próprio editor. Com essa maneira, ele simplesmente coloca qualquer container no mapa, mas pera aí, o que é um container para um código de OT? É qualquer coisa que possa carregar em dentro de si, uma ou mais de uma outra coisa. Corpos mortos, baús, etc.
       
      Note que caso o container, por exemplo um baú, seja para beneficar o jogador com mais de um item, é necessário criar um outro container dentro deste e adicionar os itens dentro desse último container criado. Um exemplo: para uma quest que dê 10 cerejas e 10 pães crie um baú com uma bag dentro, dentro da bag adicione as 10 cerejas e os 10 pães.
       
      Mãos a obra.
       
      Copie o código abaixo para um arquivo com qualquer nome desejável, eu o nomeei de "editor.lua"
      function onUse(cid, item, fromPosition, itemEx, toPosition) local container = Container(item.uid) local player = Player(cid) if player:getStorageValue(item.uid) == -1 then local questReward = container:getItem(0) local questRewardName = questReward:getType():getName() local weight = 0; if questReward:isContainer() then weight = questReward:getWeight() else weight = questReward:getType():getWeight(questReward:getCount()) end local freecap = player:getFreeCapacity() if freecap >= weight then local reward = questReward:clone() local result = player:addItemEx(reward) if result ~= RETURNVALUE_NOERROR then player:sendTextMessage(MESSAGE_INFO_DESCR, 'You have not enough room.') else player:sendTextMessage(MESSAGE_INFO_DESCR, 'You have found a ' .. questRewardName .. '.') player:setStorageValue(item.uid, 1) end else player:sendTextMessage(MESSAGE_INFO_DESCR, 'You have found a ' .. questRewardName .. ' weighing ' .. string.format("%.2f", weight) .. ' oz. It\'s too heavy.') end else player:sendTextMessage(MESSAGE_INFO_DESCR, "It is empty.") end return true end  Neste outro passo tu podes seguir dois caminhos, o primeiro e o mais correto é uma alteração no código fonte do forgottenserver. Então, desta forma, se for a preferia por ti. Faça:
       
      No arquivo luascript.h, logo após a linha de número 744, ou procure algo parecido com:
      static int32_t luaContainerGetSize(lua_State* L); static int32_t luaContainerGetCapacity(lua_State* L); static int32_t luaContainerGetEmptySlots(lua_State* L);  adicione uma nova linha com o seguinte:
      static int32_t luaContainerGetWeight(lua_State* L); No arquivo luascript.cpp, logo após a linha de número 2100, ou procure algo parecido com:
      registerMethod("Container", "getSize", LuaScriptInterface::luaContainerGetSize); registerMethod("Container", "getCapacity", LuaScriptInterface::luaContainerGetCapacity); registerMethod("Container", "getEmptySlots", LuaScriptInterface::luaContainerGetEmptySlots); adicione uma nova linha com o seguinte:
      registerMethod("Container", "getWeight", LuaScriptInterface::luaContainerGetWeight); Ainda em luascript.cpp, logo após a linha de número 6895, ou procure algo parecido com:
      int32_t LuaScriptInterface::luaContainerGetEmptySlots(lua_State* L) Logo após essa função (não a linha), insira o código abaixo:
      int32_t LuaScriptInterface::luaContainerGetWeight(lua_State* L) { // container:getWeight() Container* container = getUserdata<Container>(L, 1); if (!container) { lua_pushnil(L); return 1; } double weight = container->getWeight(); lua_pushnumber(L, weight); return 1; } E qual o motivo de eu preferir ter este código no lado do servidor compilado? Desempenho. O peso do container é guardado em memória e acessado diretamente, não há qualquer conta com inúmeras multiplicações ou funções recursivas.
       
      Mas caso esteja de mal humor e não queira compilar um servidor, terá que construir uma função da qual eu particularmente não gosto:
      function getWeight(item) local totalWeight = 0; if item:isContainer() then local size = item:getSize() for i = 0, size - 1 do totalWeight = totalWeight + getWeight(item:getItem(i)) end else totalWeight = totalWeight + item:getType():getWeight(item:getCount()) end return totalWeight; end Coloque este código, essa função, antes da função onUse dentro de editor.lua
       
      E troque aonde diz 
      questReward:getWeight() por
      getWeight(questReward)  Para terminar e fechar logo, não esqueça de adicionar o action id , eu normalmente uso 2000 pra esta actionId. É importante também lembrar que o UniqueId do baú deve ser ÚNICO em todo seu servidor, apenas dessa forma poderemos saber quais baús o jogador já abriu e conseguiu a recompensa.
       
      Agora, vá aos testes meu querido! Salve todos os scripts, se tiver que compilar o servidor, vá e faça isso. Coloque um baú no seu mapa com um item apenas dentro, se tu colocares mais do que um item, apenas o primeiro será considerado, assim como pode ser visto na linha:
      local questReward = container:getItem(0) Dessa forma, caso seja necessário vários itens, lembre-se, uma bag, backpack, qualquer container com os itens dentro.
       
      Agora seja criativo, crie corpos de dragões, humanos, esqueletos, coloque chaves dentro de caixas, livros importantes na biblioteca, entre várias oportunidades.
       
      E então, o que acharam?
    • Por nickyfull
      ola pessoal tudo bem entao antes de mais nada nao sei si estou no lugar certo si eu nao estiver pf me mova vamos la 
       
      olha tenho um ot sever eu queria saber como fasso aquelas quest que quando vc mata o pokemon aparece um portal 
      dai vc entra nele para recerber o seu premio por concluir 
      se aguem souber com faz pf me falem ou mostre-me um tutorial dou rap+
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo