Ir para conteúdo

Featured Replies

Postado

TFS 0.4

Bom tenho esse sistema de castle, esta funciona bem, o único defeito é que ele não entrega os 30% de exp a mais

para os membros da guild dominante, vou postar o script se alguém conseguir ajuda a resolver agradeço.

 

action alavanca: 

Spoiler

--[[

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

]]

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 61466 then
        local guild = getGlobalStorageValue(realCastle.guild_storage) > 1 and "a guild "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).." possui o domínio" or "nenhuma guild possui o domínio do castelo"
        local sto = realCastle.dateStorages
        local gsto = getGlobalStorageValue
        local time = gsto(sto[1]).."/"..gsto(sto[2]).."/"..gsto(sto[3])
        local domain = realCastle.isOpen() and "as guilds estão batalhando pelo domínio do castelo" or guild
        local msg = " -----------[CASTLE WAR]---------\n\n\nAtualmente "..domain..".\n\nPróxima batalha: "..time.." às 21:00."
        doShowTextDialog(cid,8977,msg)
        return true
    end
    if not realCastle.isOpen() then 
        doTeleportThing(cid,getTownTemplePosition(1)) 
        return true 
    end
    if not realCastle.isDominating(cid) then
        realCastle.domain(cid)
        doSendMagicEffect(getThingPos(cid), CONST_ME_CRAPS)
    else
        doPlayerSendCancel(cid,"Sua guild já está com o domínio do castelo.")
    end
    return true
end
 

 

creaturescripts login.lua

 

Spoiler

local storage_guild = getGlobalStorageValue(123123) 
    if getPlayerGuildId(cid) == storage_guild then
        rate = rate + 0.1
        doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Sua guild domina o castelo, por isso você vai receber 10% a mais de EXP.")
    end
  
    if realCastle.isDominating(cid) then 
        rate = rate + 0.2
        doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Sua guild domina o PvP Castle, por isso você vai receber 30% a mais de EXP.")
    end

  doPlayerSetExperienceRate(cid, rate)

 

globalevents

 

não achei necessario postar pois só o open e o close do sistema

 

Lib

 

Spoiler

realCastle = {
    
    open_storage = 100005,
    guild_storage = 100006,
    dateStorages = {100007,100008,100009},
    frompos = {x = 2189, y = 522, z = 6},
    topos = {x = 2282, y = 614, z = 6},
    storages = { -- só modifique os storages se necessário
    accessTime = 100010,
    running = 100013
    }


}


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

realCastle.close = function()
    setGlobalStorageValue(realCastle.open_storage,-1)
        local tomorrow = getTomorrowsDate()
        local tomorrowString = tomorrow[1].."/"..tomorrow[2].."/"..tomorrow[3]
        for i = 1, 3 do
            setGlobalStorageValue(realCastle.dateStorages[i], tomorrow[i])
        end
    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 WAR] A batalha terminou e nenhuma guild conseguiu dominar o castelo!")
    else
        doBroadcastMessage("[Castle WAR] A batalha terminou e a guild vencedora foi "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."! Todos os jogadores dessa guild agora tem 30% a + de experiencia!")
    end
    local func = db.query or db.executeQuery
        func("DELETE FROM real_castle WHERE world_id = '"..getWorldId().."'")
        func("INSERT INTO real_castle (guild_name, guild_id, tomorrow, world_id) VALUES ('"..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."', '"..getGlobalStorageValue(realCastle.guild_storage).."', '"..tomorrowString.."', '"..getWorldId().."')")
   setGlobalStorageValue(realCastle.storages.running, -1)
    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)
    doBroadcastMessage("[Castle WAR] O jogador "..getPlayerName(cid).." da guild "..getPlayerGuildName(cid).." dominou o castelo! As outras guilds têm até às 22: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

--- Config by Dwarfer
realCastle.isRunning = function()
    return getGlobalStorageValue(realCastle.storages.running) ~= -1 
end

 

 

 

 

Editado por Apache (veja o histórico de edições)

Resolvido por Ewerton Alves

Ir para solução
Postado

As storages estão corretas? Pq, no login, remete a storage(123123), mas não está citada em outros arquivos.

 

Outra coisa, aparece as 2 mensagens ao logar com um player que esteja na guilda dominante?

Postado
  • Autor
3 horas atrás, Toruk disse:

As storages estão corretas? Pq, no login, remete a storage(123123), mas não está citada em outros arquivos.

 

Outra coisa, aparece as 2 mensagens ao logar com um player que esteja na guilda dominante?

então mano nao aparece nenhuma mensagem ao logar...

a storage 123123 é para o castle 24hrs que nao esta em uso

eu penso que o que esta puxando o dominante é

 

realCastle.isDominating 

 

Spoiler

  if not realCastle.isOpen() then 
        doTeleportThing(cid,getTownTemplePosition(1)) 
        return true 
    end
    if not realCastle.isDominating(cid) then
        realCastle.domain(cid)
        doSendMagicEffect(getThingPos(cid), CONST_ME_CRAPS)
    else
        doPlayerSendCancel(cid,"Sua guild já está com o domínio do castelo.")
    end
    return true
end

 

essa parte da action não esta funcionando também, quando o dominante puxa a alavanca novamente apos o dominio não aparece nenhuma mensagem,

e se for alguem que não tem o dominio puxar a alavanca, só é teleportado ao templo e nao aparece nada.

Postado
  • Solução

Dentro de login.lua na função > function onLogin(cid) < você adiciona, no meu caso são 2 castle o 48 e 24 horas, você so vai substituir para o storage do castle do seu server



    --Castle
        local rate = 1
    local storage_guild = getGlobalStorageValue(123123) 
    if getPlayerGuildId(cid) == storage_guild then
    rate = rate + 0.4
        --doPlayerSetExperienceRate(cid, getPlayerRates(cid)[8] + 0.3)
        doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"[Castle24hrs]:Sua guild dominou, por isso você esta com 30% a mais de EXP.")
    end
  
    if realCastle.isDominating(cid) then 
    rate = rate + 0.3
--doPlayerSetExperienceRate(cid, getPlayerRates(cid)[8] + 0.2)
        doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"[Tribo - Castle]: Sua Guild Dominou o , por isso você vai receber 20% a mais de EXP.")
    end

  doPlayerSetExperienceRate(cid, rate)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo