Ir para conteúdo

Featured Replies

Postado

Todos os scripts foram testados em um ot 8.6

Bem o script é auto-explicativo, e ainda tem um video do sistema, acho que nao preciso explicar o que faz ne?

AGORA EM MOD, MUITO MAIS PRATICO DE INSTALAR. SE FOR USAR O MOD VA ATE O FINAL DO POST, É EXATAMENTE IGUAL A VERSAO NORMAL, SO QUE MAIS PRATICO. FUNCIONA DO MESMO JEITO.

Video:

obs: Veja em fullscreen para ver melhor as msgs que retornam.

Vá em data/lib e adicione esse script.lua com o nome de WarArenaLib:

 
 -- [[ Area and Positions Infos ]] --

areaplayersteam = {

{1,1,1,1},

{1,1,1,1},

{1,1,1,1},

{1,1,1,1},

{1,1,1,1}

}

areateam1ext = {x=80, y=305, z=7} -- Ponta superior esquerda da area do time um

areateam2ext = {x=87, y=305, z=7} -- Ponta superior esquerda da area do time dois

leaderteam1pos = {x=83, y=307, z=7, stackpos=255} -- Posição do lider do time um (que puxara a alavanca)

leaderteam2pos = {x=87, y=307, z=7, stackpos=255} -- Posição do lider do time dois (que puxara a alavanca)

newplayersposteam1 = {x=67, y=300, z=7} -- Posição para onde os players do time um serao teleportados

newplayersposteam2 = {x=67, y=330, z=7} -- Posição para onde os players do time dois serao teleportados

team1leverpos = {x=84, y=307, z=7, stackpos=1} -- Posição da alavanca que o lider do time um puxara

team2leverpos = {x=86, y=307, z=7, stackpos=1} -- Posição da alavanca que o lider do time dois puxara

leverafter, leverbefore = 9825, 9826 -- Ids das alavancas antes de puxadas e depois, consecutivamente (9825 = antes; 9826 = depois)

posbenterteam1 = {x=78, y=307, z=7} -- Posiçao do sqm antes de entrar na arena do time 1

posbenterteam2 = {x=92, y=307, z=7} -- Posiçao do sqm antes de entrar na arena do time 2

backteampos = {x=77, y=307, z=7}


-- [[ Storage Infos ]] --

team1leverstorage = 123497 -- Storage que sera usado quando puxarem a alavanca do time 1

team2leverstorage = 123498 -- Storage que sera usado quando puxarem a alavanca do time 2

haveteaminarena = 123499 -- Storage que sera usado para ve se tem algum time lutando na arena

storageteam1death = 123500 -- Storage usado para ver quantos morreram do time 1

storageteam2death = 123501 -- Storage usado para ver quantos morreram do time 2

storageteam1 = 123502 -- Storage usado para ver quantas pessoas entraram na arena no time 1

storageteam2 = 123503 -- Storage usado para ver quantas pessoas entraram na arena no time 2

storageleader1 = 123504 -- Storage onde ficara guardado o uid do lider do time 1

storageleader2 = 123505 -- Storage onde ficara guardado o uid do lider do time 2

storageplayersteam1 = 123506 -- Storage que todos os players do team 1 iram ter.

storageplatersteam2 = 123507 -- Storage que todos os players do team 2 iram ter.


-- [[ Player Infos ]] --

needlevelarena = 20 -- Level que os outros jogadores sem ser o lider teram que ter.

leaderlevel = 4000 -- Level que o lider tera que ter.

onlyguildwars = true -- Se os membros de um time tem que ser da mesma guild do lider. (Nesse caso somente o lider da guild podera puxar a alavanca.)

needplayers = 2 -- Quantidade de players que cada time tem que ter.


-- [[ Functions ]] --


function getUidsFromArea(firstpos, area)

    local result = {}

    for i,x in pairs(area) do

        for s,z in pairs(x) do

            if isPlayer(getThingFromPos({x=firstpos.x+s-1, y=firstpos.y+i-1, z=firstpos.z, stackpos=255}).uid) then

                table.insert(result, getThingFromPos({x=firstpos.x+s-1, y=firstpos.y+i-1, z=firstpos.z, stackpos=255}).uid)

            end

        end

    end

    return result

end


function teleportUidsToPos(uids, pos)

    for i,x in pairs(uids) do

        doTeleportThing(x, pos)

    end

end


function isAllUidsSameGuild(uids, guildid)

    for i,x in pairs(uids) do

        if not (getPlayerGuildId(x) == guildid) then

            return false

        end

    end

    return true

end


function isAllUidsLevel(uids, level)

    for i,x in pairs(uids) do

        if not (getPlayerLevel(x) >= level) then

            return false

        end

    end

    return true

end


function haveQuantPlayersInArea(firstpos, area, quant)

    local result = 0

    for i,x in pairs(area) do

        for s,z in pairs(x) do

            if isPlayer(getThingFromPos({x=firstpos.x+s-1, y=firstpos.y+i-1, z=firstpos.z, stackpos=255}).uid) then

                result = result+1

            end

        end

    end

    return result >= quant

end  


function addStorageToUids(uids, storage, value)

    for i,x in pairs(uids) do

        setPlayerStorageValue(x, storage, value)

    end

end


function checkPoses(pos1, pos2)

    if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then

        return true

    end

    return false

end


function startArena()

    setGlobalStorageValue(storageleader1, getThingFromPos(leaderteam1pos).uid)

    setGlobalStorageValue(storageleader2, getThingFromPos(leaderteam2pos).uid)

    addStorageToUids(team1uids, storageplayersteam1, 1)

    addStorageToUids(team2uids, storageplayersteam2, 1)

    teleportUidsToPos(team1uids, newplayersposteam1)

    teleportUidsToPos(team2uids, newplayersposteam2)

    setGlobalStorageValue(storageteam1, #team1uids)

    registerCreatureEventUids(team1uids, "DeathTeam1")

    registerCreatureEventUids(team2uids, "DeathTeam2")

    setGlobalStorageValue(storageteam2, #team2uids)

    setGlobalStorageValue(haveteaminarena, 1)

    setGlobalStorageValue(team1leverstorage, 0)

    setGlobalStorageValue(team2leverstorage, 0)

    doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

    doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

end


function haveTeamInArena()

    return getGlobalStorageValue(haveteaminarena) == 1 and true or false

end


function isSqmFromArea(firstpos, area, sqmpos)

    for i,x in pairs(area) do

        for s,z in pairs(x) do

            if sqmpos.x == firstpos.x+s-1 and sqmpos.y == firstpos.y+i-1 and sqmpos.z == firstpos.z then

                return true

            end

        end

    end

return false

end


function registerCreatureEventUids(uids, event)

    for i,x in pairs(uids) do

        registerCreatureEvent(x, event)

    end

end

Agora vá em data/actions/scripts e adicione um script.lua com o nome de WarArenaLever:

 
function onUse(cid, item, fromPosition, itemEx, toPosition)

    team1uids = getUidsFromArea(areateam1ext, areaplayersteam)

    team2uids = getUidsFromArea(areateam2ext, areaplayersteam)

    if haveTeamInArena() then

        return doPlayerSendCancel(cid, "Already have a team in arena.")

    end

    if checkPoses(toPosition, team1leverpos) then

        if checkPoses(getCreaturePosition(cid), leaderteam1pos) then

            if getGlobalStorageValue(team1leverstorage) == 1 then

                setGlobalStorageValue(team1leverstorage, 0)

                return doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

            end

            if onlyguildwars and getPlayerGuildLevel(cid) < 3 then

                return doPlayerSendCancel(cid, "You need to be the leader of your guild.")

            end

            if onlyguildwars and not isAllUidsSameGuild(team1uids, getPlayerGuildId(cid)) then

                return doPlayerSendCancel(cid, "All of your team need to be in your guild.")

            end             

            if not isAllUidsLevel(team1uids, needlevelarena) then

                return doPlayerSendCancel(cid, "All of your team need to be level " .. needlevelarena .. " or more.")

            end

            if getPlayerLevel(cid) < leaderlevel then

                return doPlayerSendCancel(cid, "You, the leader of the team, need to be level " .. leaderlevel .. " or more.")

            end

            if not haveQuantPlayersInArea(areateam1ext, areaplayersteam, needplayers) then

                return doPlayerSendCancel(cid, "Your team need " .. tostring(needplayers) .. " players.")

            end


            setGlobalStorageValue(team1leverstorage, 1)

            doTransformItem(getThingFromPos(team1leverpos).uid, leverbefore)

            if getGlobalStorageValue(team2leverstorage) >= 1 then

                startArena()

            end

        else

            doPlayerSendCancel(cid, "You must be the leader of the team to pull the lever.")

        end

    elseif checkPoses(toPosition, team2leverpos) then

        if checkPoses(getCreaturePosition(cid), leaderteam2pos) then

            if getGlobalStorageValue(team2leverstorage) == 1 then

                setGlobalStorageValue(team2leverstorage, 0)

                return doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

            end

            if onlyguildwars and getPlayerGuildLevel(cid) < 3 then

                return doPlayerSendCancel(cid, "You need to be the leader of your guild.")

            end

            if onlyguildwars and not isAllUidsSameGuild(team2uids, getPlayerGuildId(cid)) then

                return doPlayerSendCancel(cid, "All of your team need to be in your guild.")

            end              

            if not isAllUidsLevel(team2uids, needlevelarena) then

                return doPlayerSendCancel(cid, "All of your team need to be level " .. needlevelarena .. " or more.")

            end

            if getPlayerLevel(cid) < leaderlevel then

                return doPlayerSendCancel(cid, "You, the leader of the team, need to be level " .. leaderlevel .. " or more.")

            end

            if not haveQuantPlayersInArea(areateam2ext, areaplayersteam, needplayers) then

                return doPlayerSendCancel(cid, "Your team need " .. tostring(needplayers) .. " players.")

            end


            setGlobalStorageValue(team2leverstorage, 1)

            doTransformItem(getThingFromPos(team2leverpos).uid, leverbefore) 

            if getGlobalStorageValue(team1leverstorage) >= 1 then

                startArena()

            end

        else

            doPlayerSendCancel(cid, "You must be the leader of the team to pull the lever.")

        end

    end

return TRUE

end

E em actions.xml bote essa linha:

 
<action actionid="12349" event="script" value="WarArenaLever.lua"/>

Agora vá em data/creaturescripts/scripts e adicione dois scripts.lua com esses nomes: WarArenaDeathTeam1:

 
function onDeath(cid)

    setPlayerStorageValue(cid, storageplayersteam1, 0)   

    setGlobalStorageValue(storageteam1death, getGlobalStorageValue(storageteam1death) >= 0 and getGlobalStorageValue(storageteam1death)+1 or 1)

    if getGlobalStorageValue(storageteam1death) >= getGlobalStorageValue(storageteam1) then

        if onlyguildwars then

            doBroadcastMessage("The Team 2 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader2)) .. ".")

        else

            doBroadcastMessage("The Team 2 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader2)) .. ".")

        end

        setGlobalStorageValue(storageteam1death, 0)

        setGlobalStorageValue(storageteam2death, 0)

        setGlobalStorageValue(haveteaminarena, 0)

    end 

    return TRUE 

end

WarArenaDeathTeam2:

 
function onDeath(cid)    

    setPlayerStorageValue(cid, storageplayersteam2, 0)  

    setGlobalStorageValue(storageteam2death, getGlobalStorageValue(storageteam2death) >= 0 and getGlobalStorageValue(storageteam2death)+1 or 1)

    if getGlobalStorageValue(storageteam2death) >= getGlobalStorageValue(storageteam2) then

        if onlyguildwars then

            doBroadcastMessage("The Team 1 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader1)) .. ".")

        else

            doBroadcastMessage("The Team 1 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader1)) .. ".")

        end

        setGlobalStorageValue(storageteam1death, 0)

        setGlobalStorageValue(storageteam2death, 0)

        setGlobalStorageValue(haveteaminarena, 0)

    end

    return TRUE 

end

Agora abra o creaturescripts.xml e adicione essas linhas:

 
<event type="death" name="DeathTeam1" event="script" value="WarArenaDeathTeam1.lua"/> 

<event type="death" name="DeathTeam2" event="script" value="WarArenaDeathTeam2.lua"/> 

Agora vá em data/movements/scripts e adicione tres scripts.lua com esses nomes: WarArenaMovement1:

 
function onStepOut(cid, item, position, fromPosition)

    local team = (fromPosition.x == leaderteam1pos.x and fromPosition.y == leaderteam1pos.y and fromPosition.z == leaderteam1pos.z) and "team1" or (fromPosition.x == leaderteam2pos.x and fromPosition.y == leaderteam2pos.y and fromPosition.z == leaderteam2pos.z) and "team2"

    if team == "team1" then

        if getGlobalStorageValue(team1leverstorage) == 1 then

            setGlobalStorageValue(team1leverstorage, 0)

            doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

        end

    elseif team == "team2" then

        if getGlobalStorageValue(team2leverstorage) == 1 then

            setGlobalStorageValue(team2leverstorage, 0)

            doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

        end 

    end

end

WarArenaMovement2:

 
function onStepIn(cid, item, position, fromPosition)

    local team = isSqmFromArea(areateam1ext, areaplayersteam, fromPosition) and "team1" or isSqmFromArea(areateam2ext, areaplayersteam, fromPosition) and "team2"

    if team == "team1" then

        if getGlobalStorageValue(team1leverstorage) == 1 then

            if not haveQuantPlayersInArea(areateam1ext, areaplayersteam, needplayers) then

                setGlobalStorageValue(team1leverstorage, 0)

                doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

            end

        end

    elseif team == "team2" then

        if getGlobalStorageValue(team2leverstorage) == 1 then

            if not haveQuantPlayersInArea(areateam2ext, areaplayersteam, needplayers) then

                setGlobalStorageValue(team2leverstorage, 0)

                doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

            end

        end

    end

    if getGlobalStorageValue(team1leverstorage) == 1 then

        if checkPoses(fromPosition, posbenterteam1) then

            doTeleportThing(cid, fromPosition)

            return doPlayerSendCancel(cid, "You can't enter now.")

        end

    elseif getGlobalStorageValue(team2leverstorage) == 1 then

        if checkPoses(fromPosition, posbenterteam2) then

            doTeleportThing(cid, fromPosition)

            return doPlayerSendCancel(cid, "You can't enter now.")

        end

    end            

end

WarArenaMovement3:

 
function onStepIn(cid, item, position, fromPosition)

    if getPlayerStorageValue(cid, storageplayersteam1) >= 1 then

        setPlayerStorageValue(cid, storageplayersteam1, 0)  

        doTeleportThing(cid, posbenterteam1)  

        setGlobalStorageValue(storageteam1death, getGlobalStorageValue(storageteam1death) >= 0 and getGlobalStorageValue(storageteam1death)+1 or 1)

        if getGlobalStorageValue(haveteaminarena) >=  1 then

            if getGlobalStorageValue(storageteam1death) >= getGlobalStorageValue(storageteam1) then

                if onlyguildwars then

                    doBroadcastMessage("The Team 2 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader2)) .. ".")

                else

                    doBroadcastMessage("The Team 2 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader2)) .. ".")

                end

                setGlobalStorageValue(storageteam1death, 0)

                setGlobalStorageValue(storageteam2death, 0)

                setGlobalStorageValue(haveteaminarena, 0)

            end 

        end

    elseif getPlayerStorageValue(cid, storageplayersteam2) >= 1 then

    setPlayerStorageValue(cid, storageplayersteam2, 0)  

        doTeleportThing(cid, posbenterteam2)

        setGlobalStorageValue(storageteam2death, getGlobalStorageValue(storageteam2death) >= 0 and getGlobalStorageValue(storageteam2death)+1 or 1)

        if getGlobalStorageValue(haveteaminarena) >=  1 then

            if getGlobalStorageValue(storageteam2death) >= getGlobalStorageValue(storageteam2) then

                if onlyguildwars then

                    doBroadcastMessage("The Team 1 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader1)) .. ".")

                else

                    doBroadcastMessage("The Team 1 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader1)) .. ".")

                end

                setGlobalStorageValue(storageteam1death, 0)

                setGlobalStorageValue(storageteam2death, 0)

                setGlobalStorageValue(haveteaminarena, 0)

            end

        end

    end

    return TRUE             

end

E adicione essas linhas em movements.xml:

 
    <movevent type="StepOut" actionid="12350" event="script" value="WarArenaMovement1.lua"/>

    <movevent type="StepIn" actionid="12351" event="script" value="WarArenaMovement2.lua"/>

    <movevent type="StepIn" actionid="12352" event="script" value="WarArenaMovement3.lua"/>

Pronto acabou rairiaria. Adicionando os Actions IDS: Nas 2 alavancas, adicione o actionid 12349. Nos 2 sqms que os players vao estar antes de entrar na arena adicione o actionid 12351. Nos 2 quadrados aonde os lideres irao ficar (na frente da alavanca) bote o actionid 12350. No sqm de sair da arena bote o actionid 12352. NA AREA DOS TIMES E NA ARENA, BOTE PELO MAP EDITOR PARA NAO PODER LOGAR. (Se voce nao fizer isso pode haver bugs.) Bem, se voce souber ler o script da lib, vai saber configura-lo para seu otserver. Versão MOD: (Abra o spoiler)

O modo de configurar é exatamente igual ao normal. Flws.

By MatheusMkalo

Spoiler

Vá na pasta mods e adicione um arquivo.xml com o nome de WarArenaSystem.xml e adicione isso:

 

<?xml version="1.0" encoding="UTF-8"?>

<mod name="WarArenaSystem" enabled="yes" author="MatheusMkalo" forum="Tibiaking.com">


<!-- WarArenaLib.lua -->

<config name="WarLib"><![CDATA[

 -- [[ Area and Positions Infos ]] --

areaplayersteam = {

{1,1,1,1},

{1,1,1,1},

{1,1,1,1},

{1,1,1,1},

{1,1,1,1}

}

areateam1ext = {x=80, y=305, z=7} -- Ponta superior esquerda da area do time um

areateam2ext = {x=87, y=305, z=7} -- Ponta superior esquerda da area do time dois

leaderteam1pos = {x=83, y=307, z=7, stackpos=255} -- Posicao do lider do time um (que puxara a alavanca)

leaderteam2pos = {x=87, y=307, z=7, stackpos=255} -- Posicao do lider do time dois (que puxara a alavanca)

newplayersposteam1 = {x=67, y=300, z=7} -- Posicao para onde os players do time um serao teleportados

newplayersposteam2 = {x=67, y=330, z=7} -- Posicao para onde os players do time dois serao teleportados

team1leverpos = {x=84, y=307, z=7, stackpos=1} -- Posicao da alavanca que o lider do time um puxara

team2leverpos = {x=86, y=307, z=7, stackpos=1} -- Posicao da alavanca que o lider do time dois puxara

leverafter, leverbefore = 9825, 9826 -- Ids das alavancas antes de puxadas e depois, consecutivamente (9825 = antes; 9826 = depois)

posbenterteam1 = {x=78, y=307, z=7} -- Posicao do sqm antes de entrar na arena do time 1

posbenterteam2 = {x=92, y=307, z=7} -- Posicao do sqm antes de entrar na arena do time 2

backteampos = {x=77, y=307, z=7}


-- [[ Storage Infos ]] --

team1leverstorage = 123497 -- Storage que sera usado quando puxarem a alavanca do time 1

team2leverstorage = 123498 -- Storage que sera usado quando puxarem a alavanca do time 2

haveteaminarena = 123499 -- Storage que sera usado para ve se tem algum time lutando na arena

storageteam1death = 123500 -- Storage usado para ver quantos morreram do time 1

storageteam2death = 123501 -- Storage usado para ver quantos morreram do time 2

storageteam1 = 123502 -- Storage usado para ver quantas pessoas entraram na arena no time 1

storageteam2 = 123503 -- Storage usado para ver quantas pessoas entraram na arena no time 2

storageleader1 = 123504 -- Storage onde ficara guardado o uid do lider do time 1

storageleader2 = 123505 -- Storage onde ficara guardado o uid do lider do time 2

storageplayersteam1 = 123506 -- Storage que todos os players do team 1 iram ter.

storageplatersteam2 = 123507 -- Storage que todos os players do team 2 iram ter.


-- [[ Player Infos ]] --

needlevelarena = 20 -- Level que os outros jogadores sem ser o lider teram que ter.

leaderlevel = 4000 -- Level que o lider tera que ter.

onlyguildwars = true -- Se os membros de um time tem que ser da mesma guild do lider. (Nesse caso somente o lider da guild podera puxar a alavanca.)

needplayers = 2 -- Quantidade de players que cada time tem que ter.


-- [[ Functions ]] --


function getUidsFromArea(firstpos, area)

    local result = {}

    for i,x in pairs(area) do

        for s,z in pairs(x) do

            if isPlayer(getThingFromPos({x=firstpos.x+s-1, y=firstpos.y+i-1, z=firstpos.z, stackpos=255}).uid) then

                table.insert(result, getThingFromPos({x=firstpos.x+s-1, y=firstpos.y+i-1, z=firstpos.z, stackpos=255}).uid)

            end

        end

    end

    return result

end


function teleportUidsToPos(uids, pos)

    for i,x in pairs(uids) do

        doTeleportThing(x, pos)

    end

end


function isAllUidsSameGuild(uids, guildid)

    for i,x in pairs(uids) do

        if not (getPlayerGuildId(x) == guildid) then

            return false

        end

    end

    return true

end


function isAllUidsLevel(uids, level)

    for i,x in pairs(uids) do

        if not (getPlayerLevel(x) >= level) then

            return false

        end

    end

    return true

end


function haveQuantPlayersInArea(firstpos, area, quant)

    local result = 0

    for i,x in pairs(area) do

        for s,z in pairs(x) do

            if isPlayer(getThingFromPos({x=firstpos.x+s-1, y=firstpos.y+i-1, z=firstpos.z, stackpos=255}).uid) then

                result = result+1

            end

        end

    end

    return result >= quant

end  


function addStorageToUids(uids, storage, value)

    for i,x in pairs(uids) do

        setPlayerStorageValue(x, storage, value)

    end

end


function checkPoses(pos1, pos2)

    if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then

        return true

    end

    return false

end


function startArena()

    setGlobalStorageValue(storageleader1, getThingFromPos(leaderteam1pos).uid)

    setGlobalStorageValue(storageleader2, getThingFromPos(leaderteam2pos).uid)

    addStorageToUids(team1uids, storageplayersteam1, 1)

    addStorageToUids(team2uids, storageplayersteam2, 1)

    teleportUidsToPos(team1uids, newplayersposteam1)

    teleportUidsToPos(team2uids, newplayersposteam2)

    setGlobalStorageValue(storageteam1, #team1uids)

    registerCreatureEventUids(team1uids, "DeathTeam1")

    registerCreatureEventUids(team2uids, "DeathTeam2")

    setGlobalStorageValue(storageteam2, #team2uids)

    setGlobalStorageValue(haveteaminarena, 1)

    setGlobalStorageValue(team1leverstorage, 0)

    setGlobalStorageValue(team2leverstorage, 0)

    doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

    doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

end


function haveTeamInArena()

    return getGlobalStorageValue(haveteaminarena) == 1 and true or false

end


function isSqmFromArea(firstpos, area, sqmpos)

    for i,x in pairs(area) do

        for s,z in pairs(x) do

            if sqmpos.x == firstpos.x+s-1 and sqmpos.y == firstpos.y+i-1 and sqmpos.z == firstpos.z then

                return true

            end

        end

    end

return false

end


function registerCreatureEventUids(uids, event)

    for i,x in pairs(uids) do

        registerCreatureEvent(x, event)

    end

end

]]></config>


<!-- WarArenaLever.lua -->

<action actionid="12349" event="script"><![CDATA[

domodlib('WarLib')

    team1uids = getUidsFromArea(areateam1ext, areaplayersteam)

    team2uids = getUidsFromArea(areateam2ext, areaplayersteam)

    if haveTeamInArena() then

        return doPlayerSendCancel(cid, "Already have a team in arena.")

    end

    if checkPoses(toPosition, team1leverpos) then

        if checkPoses(getCreaturePosition(cid), leaderteam1pos) then

            if getGlobalStorageValue(team1leverstorage) == 1 then

                setGlobalStorageValue(team1leverstorage, 0)

                return doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

            end

            if onlyguildwars and getPlayerGuildLevel(cid) < 3 then

                return doPlayerSendCancel(cid, "You need to be the leader of your guild.")

            end

            if onlyguildwars and not isAllUidsSameGuild(team1uids, getPlayerGuildId(cid)) then

                return doPlayerSendCancel(cid, "All of your team need to be in your guild.")

            end             

            if not isAllUidsLevel(team1uids, needlevelarena) then

                return doPlayerSendCancel(cid, "All of your team need to be level " .. needlevelarena .. " or more.")

            end

            if getPlayerLevel(cid) < leaderlevel then

                return doPlayerSendCancel(cid, "You, the leader of the team, need to be level " .. leaderlevel .. " or more.")

            end

            if not haveQuantPlayersInArea(areateam1ext, areaplayersteam, needplayers) then

                return doPlayerSendCancel(cid, "Your team need " .. tostring(needplayers) .. " players.")

            end


            setGlobalStorageValue(team1leverstorage, 1)

            doTransformItem(getThingFromPos(team1leverpos).uid, leverbefore)

            if getGlobalStorageValue(team2leverstorage) >= 1 then

                startArena()

            end

        else

            doPlayerSendCancel(cid, "You must be the leader of the team to pull the lever.")

        end

    elseif checkPoses(toPosition, team2leverpos) then

        if checkPoses(getCreaturePosition(cid), leaderteam2pos) then

            if getGlobalStorageValue(team2leverstorage) == 1 then

                setGlobalStorageValue(team2leverstorage, 0)

                return doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

            end

            if onlyguildwars and getPlayerGuildLevel(cid) < 3 then

                return doPlayerSendCancel(cid, "You need to be the leader of your guild.")

            end

            if onlyguildwars and not isAllUidsSameGuild(team2uids, getPlayerGuildId(cid)) then

                return doPlayerSendCancel(cid, "All of your team need to be in your guild.")

            end              

            if not isAllUidsLevel(team2uids, needlevelarena) then

                return doPlayerSendCancel(cid, "All of your team need to be level " .. needlevelarena .. " or more.")

            end

            if getPlayerLevel(cid) < leaderlevel then

                return doPlayerSendCancel(cid, "You, the leader of the team, need to be level " .. leaderlevel .. " or more.")

            end

            if not haveQuantPlayersInArea(areateam2ext, areaplayersteam, needplayers) then

                return doPlayerSendCancel(cid, "Your team need " .. tostring(needplayers) .. " players.")

            end


            setGlobalStorageValue(team2leverstorage, 1)

            doTransformItem(getThingFromPos(team2leverpos).uid, leverbefore) 

            if getGlobalStorageValue(team1leverstorage) >= 1 then

                startArena()

            end

        else

            doPlayerSendCancel(cid, "You must be the leader of the team to pull the lever.")

        end

    end

return TRUE

]]></action>


<!-- WarArenaDeathTeam1.lua -->

<creaturescript type="death" name="DeathTeam1" event="script"><![CDATA[

domodlib('WarLib')

    setPlayerStorageValue(cid, storageplayersteam1, 0)   

    setGlobalStorageValue(storageteam1death, getGlobalStorageValue(storageteam1death) >= 0 and getGlobalStorageValue(storageteam1death)+1 or 1)

    if getGlobalStorageValue(storageteam1death) >= getGlobalStorageValue(storageteam1) then

        if onlyguildwars then

            doBroadcastMessage("The Team 2 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader2)) .. ".")

        else

            doBroadcastMessage("The Team 2 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader2)) .. ".")

        end

        setGlobalStorageValue(storageteam1death, 0)

        setGlobalStorageValue(storageteam2death, 0)

        setGlobalStorageValue(haveteaminarena, 0)

    end 

    return TRUE

]]></creaturescript>


<!-- WarArenaDeathTeam2.lua -->

<creaturescript type="death" name="DeathTeam2" event="script"><![CDATA[

domodlib('WarLib')

    setPlayerStorageValue(cid, storageplayersteam2, 0)  

    setGlobalStorageValue(storageteam2death, getGlobalStorageValue(storageteam2death) >= 0 and getGlobalStorageValue(storageteam2death)+1 or 1)

    if getGlobalStorageValue(storageteam2death) >= getGlobalStorageValue(storageteam2) then

        if onlyguildwars then

            doBroadcastMessage("The Team 1 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader1)) .. ".")

        else

            doBroadcastMessage("The Team 1 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader1)) .. ".")

        end

        setGlobalStorageValue(storageteam1death, 0)

        setGlobalStorageValue(storageteam2death, 0)

        setGlobalStorageValue(haveteaminarena, 0)

    end

    return TRUE

]]></creaturescript>


<!-- WarArenaMovement1.lua -->

<movevent type="StepOut" actionid="12350" event="script"><![CDATA[

domodlib('WarLib')

    local team = (fromPosition.x == leaderteam1pos.x and fromPosition.y == leaderteam1pos.y and fromPosition.z == leaderteam1pos.z) and "team1" or (fromPosition.x == leaderteam2pos.x and fromPosition.y == leaderteam2pos.y and fromPosition.z == leaderteam2pos.z) and "team2"

    if team == "team1" then

        if getGlobalStorageValue(team1leverstorage) == 1 then

            setGlobalStorageValue(team1leverstorage, 0)

            doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

        end

    elseif team == "team2" then

        if getGlobalStorageValue(team2leverstorage) == 1 then

            setGlobalStorageValue(team2leverstorage, 0)

            doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

        end 

    end

]]></movevent>


<!-- WarArenaMovement2.lua -->

<movevent type="StepIn" actionid="12351" event="script"><![CDATA[

domodlib('WarLib')

    local team = isSqmFromArea(areateam1ext, areaplayersteam, fromPosition) and "team1" or isSqmFromArea(areateam2ext, areaplayersteam, fromPosition) and "team2"

    if team == "team1" then

        if getGlobalStorageValue(team1leverstorage) == 1 then

            if not haveQuantPlayersInArea(areateam1ext, areaplayersteam, needplayers) then

                setGlobalStorageValue(team1leverstorage, 0)

                doTransformItem(getThingFromPos(team1leverpos).uid, leverafter)

            end

        end

    elseif team == "team2" then

        if getGlobalStorageValue(team2leverstorage) == 1 then

            if not haveQuantPlayersInArea(areateam2ext, areaplayersteam, needplayers) then

                setGlobalStorageValue(team2leverstorage, 0)

                doTransformItem(getThingFromPos(team2leverpos).uid, leverafter)

            end

        end

    end

    if getGlobalStorageValue(team1leverstorage) == 1 then

        if checkPoses(fromPosition, posbenterteam1) then

            doTeleportThing(cid, fromPosition)

            return doPlayerSendCancel(cid, "You can't enter now.")

        end

    elseif getGlobalStorageValue(team2leverstorage) == 1 then

        if checkPoses(fromPosition, posbenterteam2) then

            doTeleportThing(cid, fromPosition)

            return doPlayerSendCancel(cid, "You can't enter now.")

        end

    end

]]></movevent>


<!-- WarArenaMovement3.lua -->

<movevent type="StepIn" actionid="12352" event="script"><![CDATA[

domodlib('WarLib')

    if getPlayerStorageValue(cid, storageplayersteam1) >= 1 then

        setPlayerStorageValue(cid, storageplayersteam1, 0)  

        doTeleportThing(cid, posbenterteam1)  

        setGlobalStorageValue(storageteam1death, getGlobalStorageValue(storageteam1death) >= 0 and getGlobalStorageValue(storageteam1death)+1 or 1)

        if getGlobalStorageValue(haveteaminarena) >=  1 then

            if getGlobalStorageValue(storageteam1death) >= getGlobalStorageValue(storageteam1) then

                if onlyguildwars then

                    doBroadcastMessage("The Team 2 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader2)) .. ".")

                else

                    doBroadcastMessage("The Team 2 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader2)) .. ".")

                end

                setGlobalStorageValue(storageteam1death, 0)

                setGlobalStorageValue(storageteam2death, 0)

                setGlobalStorageValue(haveteaminarena, 0)

            end 

        end

    elseif getPlayerStorageValue(cid, storageplayersteam2) >= 1 then

    setPlayerStorageValue(cid, storageplayersteam2, 0)  

        doTeleportThing(cid, posbenterteam2)

        setGlobalStorageValue(storageteam2death, getGlobalStorageValue(storageteam2death) >= 0 and getGlobalStorageValue(storageteam2death)+1 or 1)

        if getGlobalStorageValue(haveteaminarena) >=  1 then

            if getGlobalStorageValue(storageteam2death) >= getGlobalStorageValue(storageteam2) then

                if onlyguildwars then

                    doBroadcastMessage("The Team 1 won the war, guild " .. getPlayerGuildName(getGlobalStorageValue(storageleader1)) .. ".")

                else

                    doBroadcastMessage("The Team 1 won the war, team leader name is " .. getCreatureName(getGlobalStorageValue(storageleader1)) .. ".")

                end

                setGlobalStorageValue(storageteam1death, 0)

                setGlobalStorageValue(storageteam2death, 0)

                setGlobalStorageValue(haveteaminarena, 0)

            end

        end

    end

    return TRUE

]]></movevent>

</mod> 

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.6k

Informação Importante

Confirmação de Termo