Ir para conteúdo

Sistema de dominar cidades - Vodkart


warriorfrog

Posts Recomendados

Sistema consiste em guilds que podem dominar cidades através de um único lugar escondido dentro da cidade com um monstro

- Cada cidade dominada +5% de exp para todos os membros da guild que a dominam
- Pra dominar a cidade é só matar o monstro (quem da o ultimo HIT)
- A guild dominante não pode matar o monstro
- Assim que dominar já atualizar os 5% da exp de qm ta dominando e quem perdeu

 

Ele pediu que eu cria-se um tópico organizado com tudo nos mínimos detalhes

Link para o comentário
Compartilhar em outros sites

beleza, obrigado por criar esse tópico com todos os requisitos que pedi.

 

o código é simples e está 90% pronto, assim que eu testar vou postar ok?

 

estou fazendo para servidores 8.6 tfs normal

 

postarei amanha talvez, pois estou de saída e só volto amanha de manha/tarde,

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

um System de castelo por exemplo uma guild domina um castelo e ela passa a ser dono do castelo até a proxima war, cada domingo tem war no castelo, o objectivo e destruir o crystal principal do castelo e então o castelo passa a ser da guild que destruiu o crystal.

 

se o servidor tem 5 cidades então cada cidade possui um castelo

Editado por valakas
Link para o comentário
Compartilhar em outros sites

beleza, obrigado por criar esse tópico com todos os requisitos que pedi.

 

o código é simples e está 90% pronto, assim que eu testar vou postar ok?

 

estou fazendo para servidores 8.6 tfs normal

 

postarei amanha talvez, pois estou de saída e só volto amanha de manha/tarde,

 

Que nada brother, obrigado você, estou no aguardo :D

Link para o comentário
Compartilhar em outros sites

Lib:

cityMonsters = {
    --["monster_name"] = recomendo número anterior + 1,
    ["Monster I"] = 1,
    ["Monster II"] = 2,
    ["Monster III"] = 3,
    --etc
}
DEFAULT_STORAGE = 49198
function setGuildExperience(guildId, exp)
    for _, pid in pairs(getPlayersOnline()) do
        if getPlayerGuildId(pid) == guildId then
            doPlayerSetExperienceRate(cid, exp)
        end
    end
end
function getGuildExpRate(guildId)
    for _, pid in pairs(getPlayersOnline()) do
        local playerRate = getPlayerRates(pid)[8]
        if getPlayerGuildId(pid) == guildId and playerRate > 1 then
            return playerRate
        end
    end
    return 1.0
end
Creaturescript:
function onTarget(cid, target)
    local m, playerGuild = cityMonsters[getCreatureName(target)], getPlayerGuildId(cid)
    if isPlayer(cid) and isMonster(target) and m and playerGuild > 0 then
        return getGlobalStorageValue(DEFAULT_STORAGE + m) ~= playerGuild
    end
    return true
end
function onStatsChange(cid, attacker, type, combat, value) 
    if isPlayer(attacker) and isMonster(cid) and type == STATSCHANGE_HEALTHLOSS then
        local m, playerGuild = cityMonsters[getCreatureName(cid)], getPlayerGuildId(attacker)
        if m and playerGuild > 0 then
            return getGlobalStorageValue(DEFAULT_STORAGE + m) ~= playerGuild
        end
    end
    return true
end
function onLogin(cid)
    local guildId = getPlayerGuildId(cid)
    if guildId > 0 and getGuildExpRate(guildId) > 1 then
        doPlayerSetExperienceRate(cid, getGuildExpRate(guildId))
    end
    registerCreatureEvent(cid, "mTarget")
    registerCreatureEvent(cid, "mStatsChange")
    return true
end   
function onDeath(cid, corpse, deathList)
    local killer, m = deathList[1], cityMonsters[getCreatureName(cid)]
    if killer and isPlayer(killer) and m then
        local atualGuild, playerGuild = getPlayerStorageValue(cid, 98471), getPlayerGuildId(killer)
        if atualGuild > 0 and playerGuild > 0 and atualGuild ~= playerGuild then
            setGuildExperience(atualGuild, getGuildExpRate(atualGuild) - 0.05)
            setGuildExperience(playerGuild, getGuildExpRate(playerGuild) + 0.05)
            setGlobalStorageValue(DEFAULT_STORAGE + m, playerGuild)
        end
    end
    return true
end
Tags:
    <event type="death" name="mDeath" event="script" value="nome_do_arquivo.lua"/>
    <event type="statschange" name="mStatsChange" event="script" value="nome_do_arquivo.lua"/>
    <event type="target" name="mTarget" event="script" value="nome_do_arquivo.lua"/>
    <event type="login" name="mLogin" event="script" value="nome_do_arquivo.lua"/>
No arquivo .XML do monstro:
    <script>
        <event name="mDeath"/>
    </script>
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

 

Lib:

cityMonsters = {
    --["monster_name"] = recomendo número anterior + 1,
    ["Monster I"] = 1,
    ["Monster II"] = 2,
    ["Monster III"] = 3,
    --etc
}
DEFAULT_STORAGE = 49198
function setGuildExperience(guildId, exp)
    for _, pid in pairs(getPlayersOnline()) do
        if getPlayerGuildId(pid) == guildId then
            doPlayerSetExperienceRate(cid, exp)
        end
    end
end
function getGuildExpRate(guildId)
    for _, pid in pairs(getPlayersOnline()) do
        local playerRate = getPlayerRates(pid)[8]
        if getPlayerGuildId(pid) == guildId and playerRate > 1 then
            return playerRate
        end
    end
    return 1.0
end
Creaturescript:
function onTarget(cid, target)
    local m, playerGuild = cityMonsters[getCreatureName(target)], getPlayerGuildId(cid)
    if isPlayer(cid) and isMonster(target) and m and playerGuild > 0 then
        return getGlobalStorageValue(DEFAULT_STORAGE + m) ~= playerGuild
    end
    return true
end
function onStatsChange(cid, attacker, type, combat, value) 
    if isPlayer(attacker) and isMonster(cid) and type == STATSCHANGE_HEALTHLOSS then
        local m, playerGuild = cityMonsters[getCreatureName(cid)], getPlayerGuildId(attacker)
        if m and playerGuild > 0 then
            return getGlobalStorageValue(DEFAULT_STORAGE + m) ~= playerGuild
        end
    end
    return true
end
function onLogin(cid)
    local guildId = getPlayerGuildId(cid)
    if guildId > 0 and getGuildExpRate(guildId) > 1 then
        doPlayerSetExperienceRate(cid, getGuildExpRate(guildId))
    end
    registerCreatureEvent(cid, "mTarget")
    registerCreatureEvent(cid, "mStatsChange")
    return true
end   
function onDeath(cid, corpse, deathList)
    local killer, m = deathList[1], cityMonsters[getCreatureName(cid)]
    if killer and isPlayer(killer) and m then
        local atualGuild, playerGuild = getPlayerStorageValue(cid, 98471), getPlayerGuildId(killer)
        if atualGuild > 0 and playerGuild > 0 and atualGuild ~= playerGuild then
            setGuildExperience(atualGuild, getGuildExpRate(atualGuild) - 0.05)
            setGuildExperience(playerGuild, getGuildExpRate(playerGuild) + 0.05)
            setGlobalStorageValue(DEFAULT_STORAGE + m, playerGuild)
        end
    end
    return true
end
Tags:
    <event type="death" name="mDeath" event="script" value="nome_do_arquivo.lua"/>
    <event type="statschange" name="mStatsChange" event="script" value="nome_do_arquivo.lua"/>
    <event type="target" name="mTarget" event="script" value="nome_do_arquivo.lua"/>
    <event type="login" name="mLogin" event="script" value="nome_do_arquivo.lua"/>
No arquivo .XML do monstro:
    <script>
        <event name="mDeath"/>
    </script>

 

 

 

Me desculpa a demora pra responder, achei que o vodkart tinha desistido e ninguem ia fazer, vou te dar o 10 reps, mas ta bugado ou eu fiz merda, olha esse erro

 

I/O warning : falied to load external entity "data/monster/DominarCitys/chanceler Carlin"
file <data/monster/DominarCitys/chancelercarlin.xml>.
Info: failed to load external entity "data/monster/DominarCitys/chancelercarlin.xml"

 

 

<?xml version="1.0" encoding="UTF-8"?>
<monster name="Chanceler carlin" nameDescription="Chanceler carlin" race="blood" experience="0" speed="0" manacost="0">
    <health now="60000" max="60000"/>
    <look type="140" head="0" body="0" legs="0" feet="0" addons="3" corpse="6080"/>
    <flags>
        <flag summonable="0"/>
        <flag attackable="1"/>
        <flag hostile="1"/>
        <flag illusionable="0"/>
        <flag convinceable="0"/>
        <flag pushable="0"/>
        <flag canpushitems="1"/>
        <flag canpushcreatures="1"/>
        <flag targetdistance="1"/>
    </flags>
    <attacks>
        <attack name="melee" interval="2000" skill="90" attack="99"/>
    </attacks>
    <defenses armor="9" defense="11">
        <defense name="healing" interval="1000" chance="9" min="1500" max="2500">
            <attribute key="areaEffect" value="blueshimmer"/>
        </defense>
        <defense name="healing" interval="1000" chance="17" min="600" max="1000">
            <attribute key="areaEffect" value="blueshimmer"/>
        </defense>
    </defenses>
    <immunities>
        <immunity lifedrain="1"/>
        <immunity paralyze="1"/>
        <immunity invisible="1"/>
    </immunities>
    <voices interval="5000" chance="10">
        <voice sentence="Guards!" yell="1"/>
    </voices>
    <script>
        <event name="mDeath"/>
    </script>
</monster>
 
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...