Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ola boa tarde, eu fiz um evento para meu servidor, é tipo um castelo para guilds, puxa alavanca e ganha acesso a uma area de teleports exclusivos, ate aqui tud a funcionar correcto, só estou com um problema, tipo quando outra guild conquista o castelo os que estavam a upar na área do castelo não são teleportados para o templo, alguém me pode ajudar nisso?

 

Tipo outra guild conquista o castelo, quem estava la a upar sera teleportado de imediato para o templo. alguém me pode ajudar?

5399.gif

----------:::::::::::::::::Hunted Server the best Server off Tibia::::::::::::::::::::------------

Link para o post
Compartilhar em outros sites

vc tem que criar uma função que pegue todas as áreas que participam e são exclusivas do castelo e caçar se existem players nessas áreas que não sejam da guild atual vencedora pra removê-los... é importante fazer um onLogin verificando se o player q logou não está nessas áreas, se estiver tem q teleportá-los para o templo.

Eu posso fazer isso pra você mas vou precisar saber qual o evento de castle vc está usando, se puder postar os scripts ou mandar o link de onde conseguiu eu consigo estudar o código e te passar as modificações que vc deve fazer, sem isso fica meio dificil te ajudar além de dar as dicas que dei acima.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
Citar

function onUse(cid, item, frompos, item2, topos) 

------------------ Inicio das Config ------------

local castle_one_name = "Castle24h"                  -- Nome do castelo 1
local storages = {154154,54321,123123}               -- Storages ( se vc eh iniciante, deixe como está...)

-------PREMIOs  I N D I V I D U A L ---------

local premio_por_vezes = 1         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 15            -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 5468                -- ID do Premio
local premio_cont = 1              -- Quantidade do Premio
local premio_reset = 0             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
 
-------FIM PREMIOs I N D I V I D U A L ---------

 
----------------- FIM DAS CONFIG -----------------

local sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)


   if isPlayerGuild(cid) == TRUE then
      if sto_ativ == 1 or sto_ativ == -1 then

         guildname = getPlayerGuildName(cid)     
         guild = getPlayerGuildId(cid)               
         guild_sto = getGlobalStorageValue(storages[3])
                  
            if guild ~= guild_sto then            
               setPlayerStorageValue(cid,guild_sto,guild)                      
               if getPlayerStorageValue(cid,storages[1]) == -1 then
                  setPlayerStorageValue(cid,storages[1],0)
               end
               
               sto_vezes = getPlayerStorageValue(cid,storages[1])                   
               
               setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
               setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
               
               sto_vezes_total = getPlayerStorageValue(cid,storages[1])
                        
               doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
               doSendMagicEffect(position, 39)  
                 
                 if premio_por_vezes == 1 then
                    if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
                       if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
                          doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                          doPlayerAddItem(cid, premio,premio_cont)
                          doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
                        -----------------------------------------------  --  
                            if premio_reset == 1 then                    --
                               setPlayerStorageValue(cid,storages[1],0)  --  Resetar a contagem
                            end                                          --
                        -----------------------------------------------  --
                        
                       else
                       doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
                       addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
                       end
                    end                                        
                 end               
            else
              doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
              doSendMagicEffect(position, 2)
            end
      else
      doPlayerSendCancel(cid,"O sistema está desativado")
      end      
   else
   doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
   doSendMagicEffect(position, 2)
   end
end

------------------------- por pc98

function additem(cid,premio,premio_cont,premio_reset)

 if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
    doPlayerAddItem(cid, premio,premio_cont)
    doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
     if premio_reset == 1 then
        setPlayerStorageValue(cid,storages[1],0)
     end
    stopEvent(additem)
  else
  doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
  addEvent(additem,10000,cid)
  end
end

-------------------------  por pc98
function isPlayerGuild(cid)
if getPlayerGuildName(cid) ~= "" then
return TRUE
else
return FALSE
end
end

isto foi a action da alavanca, agora vou passar a da passagem para area dos teleports do castelo

Spoiler

function onUse(cid, item, frompos, item2, topos)
 
        local config =
        {
                STORAGE_GUILD = 123123, -- A 3ª storage configurada em Castle.lua
                MSG_WELCOME = "Seja bem vindo a vosso castelo!",
                MSG_FAIL = "Este castelo nao pertence a sua guild"
        }
 
        if getPlayerGuildId(cid) == getGlobalStorageValue(config.STORAGE_GUILD) then
                doTeleportThing(cid,getThingPos(item.uid))
                doTransformItem(item.uid, 1230)
                doPlayerSendTextMessage(cid, 22, config.MSG_WELCOME)  
        else
                doPlayerSendTextMessage(cid, 22, config.MSG_FAIL)
    end
 
        return true
end

 

5399.gif

----------:::::::::::::::::Hunted Server the best Server off Tibia::::::::::::::::::::------------

Link para o post
Compartilhar em outros sites

Tenta ai no primeiro script:

Spoiler

function onUse(cid, item, frompos, item2, topos) 

local castle_one_name = "Castle24h"                  -- Nome do castelo 1
local storages = {154154,54321,123123}               -- Storages ( se vc eh iniciante, deixe como está...)

local premio_por_vezes = 1         -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 15            -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 5468                -- ID do Premio
local premio_cont = 1              -- Quantidade do Premio
local premio_reset = 1             -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM  (0) = NAO
local pos = {
-- molde inicial
[1] = {
	fromPos = {x= 9940, y= 9873, z= 7}, -- Top Left Corner
	toPos = {x= 9993, y= 9920, z= 7} -- Bottom Right Corner
	},
-- se houverem outras areas que vc quer checar, adicione sempre nesse molde acima apenas editando o numero [x] para um acima e mudando as posicoes	
--[[ EXEMPLO:
[2] = {
	fromPos = {x= 9541, y= 9371, z= 4}, -- Top Left Corner
	toPos = {x= 9618, y= 9407, z= 4} -- Bottom Right Corner
	},
]]
}

local sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)

   if isPlayerGuild(cid) then
      if sto_ativ == 1 or sto_ativ == -1 then
         guildname = getPlayerGuildName(cid)     
         guild = getPlayerGuildId(cid)               
         guild_sto = getGlobalStorageValue(storages[3])
                  
            if guild ~= guild_sto then            
               setPlayerStorageValue(cid,guild_sto,guild)                      
               if getPlayerStorageValue(cid,storages[1]) == -1 then
                  setPlayerStorageValue(cid,storages[1],0)
               end
               sto_vezes = getPlayerStorageValue(cid,storages[1])
               setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
               setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
               sto_vezes_total = getPlayerStorageValue(cid,storages[1])
               doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
			   --- remove os players do castelo ---
				for i, pid in pairs (getPlayersOnline()) do
					for i = 1, #pos do 
						if isInArea(getCreaturePosition(pid), pos[i].fromPos, pos[i].toPos) and getPlayerGuildId(pid) ~= getGlobalStorageValue(storages[3]) then
							doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))						
						end
					end
				end
			   ---------------------------------
               doSendMagicEffect(position, 39)  
                 if premio_por_vezes == 1 then
                    if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
                       if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
                          doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                          doPlayerAddItem(cid, premio,premio_cont)
                          doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
                        -----------------------------------------------  --  
                            if premio_reset == 1 then                    --
                               setPlayerStorageValue(cid,storages[1],0)  --  Resetar a contagem
                            end                                          --
                        -----------------------------------------------  --                        
                       else
                       doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
                       addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
                       end
                    end                                        
                 end               
            else
              doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
              doSendMagicEffect(position, 2)
            end
      else
      doPlayerSendCancel(cid,"O sistema está desativado")
      end      
   else
   doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
   doSendMagicEffect(position, 2)
   end
end

function additem(cid,premio,premio_cont,premio_reset)

 if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
    doPlayerAddItem(cid, premio,premio_cont)
    doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
     if premio_reset == 1 then
        setPlayerStorageValue(cid,storages[1],0)
     end
    stopEvent(additem)
  else
  doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
  addEvent(additem,10000,cid)
  end
end

function isPlayerGuild(cid)
if getPlayerGuildName(cid) ~= "" then
return true
else
return false
end
end

 

 

Você vai precisar reconfigurar as posições no script.

Link para o post
Compartilhar em outros sites

Uma pergunta, nao tem uma action que ao player entrar na hunt tivesse de tisar e quando outra guild conkista-se seria expulso?

 

[1] = {
	fromPos = {x= 9940, y= 9873, z= 7}, -- Top Left Corner
	toPos = {x= 9993, y= 9920, z= 7} -- Bottom Right Corner

imaginamos que as hunts estaria num quadrado isso seriam as cordenadas dos cantos? certo?

 

ou posso fazer isso para cada cordenada?

5399.gif

----------:::::::::::::::::Hunted Server the best Server off Tibia::::::::::::::::::::------------

Link para o post
Compartilhar em outros sites
  • 4 weeks later...

do castelo ou das hunts do castelo?

5399.gif

----------:::::::::::::::::Hunted Server the best Server off Tibia::::::::::::::::::::------------

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 LeoTK
      Salve galera neste tópico irei postar algumas prints do mapa do servidor para quem queira acompanhar e quem sabe até utilizar de inspiração para mapear o seu NTO.
       
      #Att 11/08/2022

       
       
       
       
      Konoha (Em Desenvolvimento)
       
       
       
       
    • Por OmegaZero
      Olá gostaria que alguém me ajudasse com uma "scripting" não sei se é pela mesma, seria o seguinte uma determinada arma teria a chance de dar double hit e não sei oque fazer alguem poderia ajudar?

      OBS:não sei se é o local correto se não for mova, desculpe
    • Por DiigooMix
      Como o título já diz, será que alguém possui sprite do hitto e se possível as transformações dele?
    • Por Madarasenju
      Olá galera do Tibia King, queria por uns npc's no meu server que não tem função de trade nem nada do tipo, queria que eles só andassem como enfeite, Rep+ Pra quem me ajudar... grato desde já.
    • Por SilenceRoot
      A magia é assim o você usa a a magia e ela ficará ativado por 10 segundos, até que o inimigo lance a primeira magia ou todos de uma vez, quando ele lançar a primeira magia, ele não lhe acertará ou seja esquivando dela, e logo em seguida será teletransportado aleatoriamente ao redor do inimigo que usou.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo