Ir para conteúdo
  • Cadastre-se

[MOD] War Castle TFS 0.4


Posts Recomendados

Salve pessoal, estou criando um MOD de castle guild war, ele funciona da seguinte forma:

Ao dar o comando !startcc o evento é iniciado, uma mensagem é enviada no broadcast para todos e um teleport surge que leva ate o castelo, no castelo voce encontra 2 tiles um que é responsavel por anunciar a invasão de algum player, esse tile tambem possui uma limitação de level, o segundo tile é o que domina o castelo, alem disso tambem tem outra talk !endcc que encerra o evento. Abaixo segue o MOD:

 

Citar

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Cyber Castle 48" version="1.0" author="SeuNome" contact="seusite.com" enabled="yes">
    <config name="cybercastle48_config"><![CDATA[
        cybercastle48_config = {
            storages = {1700, 1701, 1702}, -- Armazenamento global para controle do evento
            arena = {{x = 1000, y = 1000, z = 7}, {x = 1100, y = 1100, z = 7}}, -- Área da arena
            teleportAppear = {x = 1025, y = 1026, z = 7}, -- Posição do teleport que aparece
            teleportDestination = {x = 912, y = 1267, z = 7}, -- Posição para onde o jogador é teleportado ao entrar no teleport
            respawnTime = 5, -- Tempo de respawn dos monstros em minutos
            eventDuration = 1, -- Tempo de duração do evento em minutos
            rewards = {items = {{1234, 10}, {5678, 5}}, trophy = 8765}, -- Prêmios para os ganhadores do evento
            minLevelToAccess = 50, -- Nível mínimo para acessar o teleport
            castleOwnerStorage = 1703, -- Armazenamento para controlar a guilda dona do castelo
            castleDominatingGuild = 0, -- Variável para armazenar temporariamente a guilda que está dominando o castelo
        }
    ]]></config>

    <talkaction words="!startcc" access="5" event="buffer"><![CDATA[
        domodlib('cybercastle48_config')
        local teleportItem = doCreateItem(1387, 1, cybercastle48_config.teleportAppear)
        doItemSetAttribute(teleportItem, "aid", 19872) -- Adicione um action id ao teleport para identificação
        doBroadcastMessage("[Cyber Castle 48] O evento começou! Use o teleport para entrar na arena.", MESSAGE_STATUS_WARNING)
        setGlobalStorageValue(cybercastle48_config.storages[3], 1) -- Marca o início do evento
    ]]></talkaction>

    <talkaction words="!endcc" access="5" event="buffer"><![CDATA[
    domodlib('cybercastle48_config')
    local removeTeleport = getTileItemById(cybercastle48_config.teleportAppear, 1387).uid

    if removeTeleport > 0 then
        doRemoveItem(removeTeleport)
        doBroadcastMessage("[Cyber Castle 48] O evento foi encerrado! O teleport foi removido.", MESSAGE_STATUS_WARNING)

        -- Verifique se alguma guilda está disputando o castelo
        if cybercastle48_config.castleDominatingGuild > 0 then
            local dominatingGuild = cybercastle48_config.castleDominatingGuild
            local guildName = getGuildName(dominatingGuild)

            if guildName then
                -- Anuncie a guilda vencedora
                doBroadcastMessage("[Cyber Castle 48] A guilda " .. guildName .. " domina o castelo!", MESSAGE_STATUS_WARNING)
                setGlobalStorageValue(cybercastle48_config.castleOwnerStorage, dominatingGuild)
            end
        else
            -- Nenhuma guilda disputou o castelo
            doBroadcastMessage("[Cyber Castle 48] Nenhuma guilda dominou o castelo durante o evento.", MESSAGE_STATUS_WARNING)
        end

        -- Reseta o estado do evento e a guilda dominante
        setGlobalStorageValue(cybercastle48_config.storages[3], 0)
        cybercastle48_config.castleDominatingGuild = 0
    else
        doPlayerSendCancel(cid, "O evento não está acontecendo.")
        doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
    end
]]></talkaction>

    <movevent type="StepIn" actionid="19872" event="script"><![CDATA[
        domodlib('cybercastle48_config')
        local playerLevel = getPlayerLevel(cid)
        if playerLevel >= cybercastle48_config.minLevelToAccess then
            doTeleportThing(cid, cybercastle48_config.teleportDestination, false)
        else
            doPlayerSendCancel(cid, "Você não tem o nível mínimo necessário para entrar no evento.")
            doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
        end
    ]]></movevent>

    <movevent type="StepIn" actionid="19873" event="script"><![CDATA[
        function onStepIn(cid, item, position, fromPosition)
            local guildId = getPlayerGuildId(cid)

            if guildId > 0 then
                -- O jogador pertence a uma guilda, permita a passagem
                local guildName = getPlayerGuildName(cid) -- Use esta função alternativa
                if guildName then
                    doBroadcastMessage("[Cyber Castle 48] " .. getCreatureName(cid) .. " da guilda " .. guildName .. " está invadindo o Cyber Castle 48!", MESSAGE_STATUS_CONSOLE_ORANGE)
                    return true
                end
            end

            -- O jogador não pertence a uma guilda, bloqueie a passagem e mova-o de volta à posição anterior
            doPlayerSendCancel(cid, "Você não pode passar por aqui sem estar em uma guilda.")
            doTeleportThing(cid, fromPosition, false)
            return false
        end
    ]]></movevent>

    <movevent type="StepIn" actionid="19874" event="script"><![CDATA[
    domodlib('cybercastle48_config')
    local playerGuildId = getPlayerGuildId(cid)

    if playerGuildId > 0 then
        -- O jogador pertence a uma guilda, permita a tentativa de dominar o castelo
        local guildName = getPlayerGuildName(cid)

        if guildName then
            -- Verifique se o castelo já foi dominado por outra guilda
            local currentDominatingGuild = getGlobalStorageValue(cybercastle48_config.castleOwnerStorage)

            if currentDominatingGuild > 0 then
                -- Castelo já dominado, verifique se a guilda atual é diferente
                if currentDominatingGuild ~= playerGuildId then
                    -- Transferir o domínio para a nova guilda
                    setGlobalStorageValue(cybercastle48_config.castleOwnerStorage, playerGuildId)
                    cybercastle48_config.castleDominatingGuild = playerGuildId  -- Atualize a guilda dominante

                    -- Emitir mensagem informando sobre a mudança de domínio
                    doBroadcastMessage("[Cyber Castle 48] O castelo foi dominado pela guilda " .. guildName .. "!", MESSAGE_STATUS_CONSOLE_ORANGE)
                else
                    -- A guilda atual está defendendo seu domínio
                    doBroadcastMessage("[Cyber Castle 48] O jogador " .. getCreatureName(cid) .. " da guild " .. guildName .. " está defendendo o Cyber Castle 48!", MESSAGE_STATUS_CONSOLE_ORANGE)
                end
            else
                -- O castelo ainda não foi dominado, a guilda atual o domina agora
                setGlobalStorageValue(cybercastle48_config.castleOwnerStorage, playerGuildId)
                cybercastle48_config.castleDominatingGuild = playerGuildId  -- Atualize a guilda dominante

                -- Emitir mensagem informando sobre o domínio inicial
                doBroadcastMessage("[Cyber Castle 48] O castelo foi dominado pela guilda " .. guildName .. "!", MESSAGE_STATUS_CONSOLE_ORANGE)
            end

            return true
        end
    end

    -- O jogador não pertence a uma guilda, bloqueie a tentativa de dominar o castelo
    doPlayerSendCancel(cid, "Você não pode tentar dominar o castelo sem estar em uma guilda.")
    return false
]]></movevent>

</mod>

 

O erro é o seguinte: Ao finalizar o evento ele diz que nenhuma guild dominou o castelo mesmo dominando, se alguém puder ajudar nessa parte eu agradeço!

OBS: No config do mod tem algumas coisas que ainda vou adicionar as funções para fazer com que funcione no evento, como arena para enviar todos para o templo ao fim do evento etc.. o importante é a finalização do evento que esta com erro.

Agradeço a atenção de todos!

 

Link para o post
Compartilhar em outros sites
  • 1 month later...
<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Cyber Castle 48" version="1.0" author="SeuNome" contact="seusite.com" enabled="yes">
    <config name="cybercastle48_config"><![CDATA[
        cybercastle48_config = {
            storages = {1700, 1701, 1702}, -- Armazenamento global para controle do evento
            arena = {{x = 1000, y = 1000, z = 7}, {x = 1100, y = 1100, z = 7}}, -- Área da arena
            teleportAppear = {x = 1025, y = 1026, z = 7}, -- Posição do teleport que aparece
            teleportDestination = {x = 912, y = 1267, z = 7}, -- Posição para onde o jogador é teleportado ao entrar no teleport
            respawnTime = 5, -- Tempo de respawn dos monstros em minutos
            eventDuration = 1, -- Tempo de duração do evento em minutos
            rewards = {items = {{1234, 10}, {5678, 5}}, trophy = 8765}, -- Prêmios para os ganhadores do evento
            minLevelToAccess = 50, -- Nível mínimo para acessar o teleport
            castleOwnerStorage = 1703, -- Armazenamento para controlar a guilda dona do castelo
            castleDominatingGuild = 0, -- Variável para armazenar temporariamente a guilda que está dominando o castelo
        }
    ]]></config>

    <talkaction words="!startcc" access="5" event="buffer"><![CDATA[
        domodlib('cybercastle48_config')
        local teleportItem = doCreateItem(1387, 1, cybercastle48_config.teleportAppear)
        doItemSetAttribute(teleportItem, "aid", 19872) -- Adicione um action id ao teleport para identificação
        doBroadcastMessage("[Cyber Castle 48] O evento começou! Use o teleport para entrar na arena.", MESSAGE_STATUS_WARNING)
        setGlobalStorageValue(cybercastle48_config.storages[3], 1) -- Marca o início do evento
    ]]></talkaction>

    <talkaction words="!endcc" access="5" event="buffer"><![CDATA[
        domodlib('cybercastle48_config')
        local removeTeleport = getTileItemById(cybercastle48_config.teleportAppear, 1387).uid

        if removeTeleport and removeTeleport > 0 then
            doRemoveItem(removeTeleport)
            doBroadcastMessage("[Cyber Castle 48] O evento foi encerrado! O teleport foi removido.", MESSAGE_STATUS_WARNING)

            -- Verifique se alguma guilda está disputando o castelo
            if cybercastle48_config.castleDominatingGuild > 0 then
                local dominatingGuild = cybercastle48_config.castleDominatingGuild
                local guildName = getGuildName(dominatingGuild)

                if guildName then
                    -- Anuncie a guilda vencedora
                    doBroadcastMessage("[Cyber Castle 48] A guilda " .. guildName .. " domina o castelo!", MESSAGE_STATUS_WARNING)
                    setGlobalStorageValue(cybercastle48_config.castleOwnerStorage, dominatingGuild)
                end
            else
                -- Nenhuma guilda disputou o castelo
                doBroadcastMessage("[Cyber Castle 48] Nenhuma guilda dominou o castelo durante o evento.", MESSAGE_STATUS_WARNING)
            end

            -- Reseta o estado do evento e a guilda dominante
            setGlobalStorageValue(cybercastle48_config.storages[3], 0)
            cybercastle48_config.castleDominatingGuild = 0
        else
            doPlayerSendCancel(cid, "O evento não está acontecendo.")
            doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
        end
    ]]></talkaction>

    <movevent type="StepIn" actionid="19872" event="script"><![CDATA[
        domodlib('cybercastle48_config')
        local playerLevel = getPlayerLevel(cid)
        if playerLevel >= cybercastle48_config.minLevelToAccess then
            doTeleportThing(cid, cybercastle48_config.teleportDestination, false)
        else
            doPlayerSendCancel(cid, "Você não tem o nível mínimo necessário para entrar no evento.")
            doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
        end
    ]]></movevent>

    <movevent type="StepIn" actionid="19873" event="script"><![CDATA[
        local guildId = getPlayerGuildId(cid)

        if guildId > 0 then
            -- O jogador pertence a uma guilda, permita a passagem
            local guildName = getPlayerGuildName(cid) -- Use esta função alternativa
            if guildName then
                doBroadcastMessage("[Cyber Castle 48] " .. getCreatureName(cid) .. " da guilda " .. guildName .. " está invadindo o Cyber Castle 48!", MESSAGE_STATUS_CONSOLE_ORANGE)
                return true
            end
        end

        -- O jogador não pertence a uma guilda, bloqueie a passagem e mova-o de volta à posição anterior
        doPlayerSendCancel(cid, "Você não pode passar por aqui sem estar em uma guilda.")
        doTeleportThing(cid, fromPosition, false)
        return false
    ]]></movevent>

    <movevent type="StepIn" actionid="19874" event="script"><![CDATA[
        domodlib('cybercastle48_config')
        local playerGuildId = getPlayerGuildId(cid)

        if playerGuildId > 0 then
            -- O jogador pertence a uma guilda, permita a tentativa de dominar o castelo
            local guildName = getPlayerGuildName(cid)

            if guildName then
                -- Verifique se o castelo já foi dominado por outra guilda
                local currentDominatingGuild = getGlobalStorageValue(cybercastle48_config.castleOwnerStorage)

                if currentDominatingGuild > 0 then
                    -- Castelo já dominado, verifique se a guilda atual é diferente
                    if currentDominatingGuild ~= playerGuildId then
                        -- Transferir o domínio para a nova guilda
                        setGlobalStorageValue(cybercastle48_config.castleOwnerStorage, playerGuildId)
                        cybercastle48_config.castleDominatingGuild = playerGuildId  -- Atualize a guilda dominante

                        -- Emitir mensagem informando sobre a mudança de domínio
                        doBroadcastMessage("[Cyber Castle 48] O castelo foi dominado pela guilda " .. guildName .. "!", MESSAGE_STATUS_CONSOLE_ORANGE)
                    else
                        -- A guilda atual está defendendo seu domínio
                        doBroadcastMessage("[Cyber Castle 48] O jogador " .. getCreatureName(cid) .. " da guild " .. guildName .. " está defendendo o Cyber Castle 48!", MESSAGE_STATUS_CONSOLE_ORANGE)
                    end
                else
                    -- O castelo ainda não foi dominado, a guilda atual o domina agora
                    setGlobalStorageValue(cybercastle48_config.castleOwnerStorage, playerGuildId)
                    cybercastle48_config.castleDominatingGuild = playerGuildId  -- Atualize a guilda dominante

                    -- Emitir mensagem informando sobre o domínio inicial
                    doBroadcastMessage("[Cyber Castle 48] O castelo foi dominado pela guilda " .. guildName .. "!", MESSAGE_STATUS_CONSOLE_ORANGE)
                end

                return true
            end
        end

        -- O jogador não pertence a uma guilda, bloqueie a tentativa de dominar o castelo
        doPlayerSendCancel(cid, "Você não pode tentar dominar o castelo sem estar em uma guilda.")
        return false
    ]]></movevent>

</mod>

 

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo