Ir para conteúdo
  • Cadastre-se

(Resolvido)Não perder o Castle quando o Servidor Reiniciar ou cair


Posts Recomendados

  • Moderador

@WooX

Pessoal, estou com uma dúvida aqui, e gostaria que alguém me respondesse. É possível fazer com que quando o Servidor caia ou reinicie a Guild que tá com o Domínio do Castle não o perca quando o Servidor voltar? Se sim, alguém poderia me ajudar? Por favor.

 

Castle 24H <Actions>

Spoiler

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

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

local premio_por_vezes = 0 -- Premio por vezes de conquista de castelo. (1) = Ativo  (0) = Desativa. 
local premio_vezes = 1500 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 7443 -- 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 sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)
local teleport = {x=1349, y=1504, z=7}


   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("[Castle 24H] O(a) jogador(a) "..getCreatureName(cid).." acabou de conquistar o "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez. Premio: 20% a mais de exp.", 22)
               doCreatureSay(cid, "[Castle 24H] Sua guild ganhou 20% a mais de experiencia, relogue para ativar!", TALKTYPE_ORANGE_1)
               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("[Castle 24H] O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
                          doPlayerAddItem(cid, premio,premio_cont)
                          doPlayerSendTextMessage(cid, 18, "[Castle 24H] Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")

                            if premio_reset == 1 then
                               setPlayerStorageValue(cid,storages[1],0)
                            end                                          --

                        
                       else
                       doPlayerSendTextMessage(cid, 18, "[Castle 24H] 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,"[Castle 24H] Este castelo ja foi conquistado pela sua guild!")
              doSendMagicEffect(position, 2)
            end
      else
      doPlayerSendCancel(cid,"[Castle 24H] O sistema está desativado")
      end      
   else
   doPlayerSendCancel(cid,"[Castle 24H] É 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, "[Castle 24H] 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, "[Castle 24H] 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

Castle 48H <Lib>

Spoiler

--[[

                Real Castle Event
    Desenvolvido por Vítor Bertolucci (Killua)

]]

realCastle = {
    
    open_storage = 100005,
    guild_storage = 100006,
    date_storages = {100007,100008,100009},
    frompos = {x = 3166, y = 260, z = 7},
    topos = {x = 3293, y = 337, z = 7}

}

realCastle.removePlayers = function()
    local first_cave = getPlayersInArea({x = 2829, y = 7, z = 7},{x = 3118, y = 467, z = 7})
    local second_cave = getPlayersInArea({x = 2902, y = 340, z = 7},{x = 3445, y = 585, z = 7})
    local fifith_cave = getPlayersInArea({x = 3304, y = 192, z = 7},{x = 3687, y = 340, z = 7})
    local sixth_cave = getPlayersInArea({x = 3595, y = 260, z = 8},{x = 3689, y = 338, z = 8})
    local seventh_cave = getPlayersInArea({x = 3616, y = 270, z = 9},{x = 3680, y = 341, z = 9})
    local eight_cave = getPlayersInArea({x = 3445, y = 175, z = 6},{x = 3515, y = 241, z = 6})
    local ninth_cave = getPlayersInArea({x = 3445, y = 175, z = 5},{x = 3515, y = 241, z = 5})
    local tenth_cave = getPlayersInArea({x = 3445, y = 175, z = 4},{x = 3515, y = 241, z = 4})
    local eleventh_cave = getPlayersInArea({x = 3143, y = 342, z = 8},{x = 3246, y = 423, z = 8})
    local castle_area = getPlayersInArea(realCastle.frompos,realCastle.topos)
    if first_cave then
        for _, pid in pairs(first_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if second_cave then
        for _, pid in pairs(second_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    for _, tid in pairs(getPlayersOnline()) do
        local pos = getThingPos(tid)
        if pos.x >= 2829 and pos.x <= 3118 and pos.y >= 7 and pos.y <= 467 then
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(tid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    for _, tid in pairs(getPlayersOnline()) do
        local pos = getThingPos(tid)
        if pos.x >= 2902 and pos.x <= 3445 and pos.y >= 340 and pos.y <= 585 then
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(tid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    for _, tid in pairs(getPlayersOnline()) do
        local pos = getThingPos(tid)
        if pos.x >= 3304 and pos.x <= 3687 and pos.y >= 192 and pos.y <= 340 then
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(tid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if fifith_cave then
        for _, pid in pairs(fifith_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if sixth_cave then
        for _, pid in pairs(sixth_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if seventh_cave then
        for _, pid in pairs(seventh_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if eight_cave then
        for _, pid in pairs(eight_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if ninth_cave then
        for _, pid in pairs(ninth_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if tenth_cave then
        for _, pid in pairs(tenth_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if eleventh_cave then
        for _, pid in pairs(eleventh_cave) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
    if castle_area then
        for _, pid in pairs(castle_area) do
            doTeleportThing(pid,getTownTemplePosition(1))
            doPlayerPopupFYI(pid,"O Castle 48H estar em modo de batalha. Todos os jogadores que estavam dentro do castle foram levados ao templo.")
        end
    end
end

realCastle.open = function()
    setGlobalStorageValue(realCastle.open_storage,1)
    setGlobalStorageValue(realCastle.guild_storage,-1)
    realCastle.removePlayers()
end

realCastle.close = function()
    setGlobalStorageValue(realCastle.open_storage,-1)
    local players = getPlayersInArea(realCastle.frompos, realCastle.topos)
    if players then
        for _, pid in pairs(players) do
            doTeleportThing(pid,getTownTemplePosition(1))
        end
    end
    if getGlobalStorageValue(realCastle.guild_storage) == -1 then
        doBroadcastMessage("[Castle 48H] A batalha terminou e nenhuma guild conseguiu dominar o castelo! Amanhã às 20:00 vocês podem tentar novamente!")
    else
        doBroadcastMessage("[Castle 48H] A batalha terminou e a guild vencedora foi "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."! Todos os jogadores dessa guild agora podem aproveitar o castelo até amanhâ às 20:00!")
    end
    doSaveServer()
end

realCastle.broadcast = function(message)
    local players = getPlayersInArea(realCastle.frompos, realCastle.topos)
    if players then
        for _, pid in pairs(players) do
            doPlayerSendTextMessage(pid,MESSAGE_STATUS_WARNING,message)
        end
    end
end

realCastle.domain = function(cid)
    local guild_id = getPlayerGuildId(cid)
    setGlobalStorageValue(realCastle.guild_storage,guild_id)
    setGuildRealCastle(cid)
    realCastle.broadcast("[Castle 48H] O jogador "..getPlayerName(cid).." da guild "..getPlayerGuildName(cid).." dominou o castelo! As outras guilds têm até às 21:00 para conseguir tirar o domínio deles, não desistam!")
end

realCastle.isDominating = function(cid)
    local guild_id = getPlayerGuildId(cid)
    return guild_id == getGlobalStorageValue(realCastle.guild_storage)
end

realCastle.isOpen = function()
    return getGlobalStorageValue(realCastle.open_storage) == 1
end

function setGuildRealCastle(cid)
db.executeQuery("UPDATE `guilds` SET  `real_castle` = REPLACE(`real_castle`, 1, 0);")
db.executeQuery("UPDATE `guilds` SET `real_castle` = 1 WHERE `id` = '" .. getPlayerGuildId(cid) .."';")
end

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

O sistema possui algum script em globalevents?

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
  • Moderador

@WooX Não

@victor4312 Funcionou, valeu.

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

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

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo