Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Ae galera do tk, estou usando esse script do team batle mais estou com uns problemas nele e estou querendo modificar uma parte.

 

1° O Time vencedor não é teleportado para o templo quando ganha o evento.

2° Definir tempo no evento

3° Quando alguem morre no evento ele é teletransportado pro templo mais continua participando do evento, ou seja, não conta frag para a equipe quem o matou (O MAPA ESTA PVP-TOOL, POR SER TRATAR DE UM EVENTO), O player só sai do evento quando morre pra bicho ou pra qualquer outra coisa, e eu gostaria que fosse ao contrario, quando ele morrese ele voltase para o evento e continuar lá até o evento acabar.

4° Queria que ouvese um vencedor por equipe que mais matar o time oposto. ( que no caso este script é por eliminação do time oposto)

 

 

aqui está o script do evento.

data/mods/TeamBattle.xml

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Team Event" version="2.0" author="Damadgerz" contact="[email protected]" enabled="yes">
 <description>
 
Full auto Team BattleEvent(v2.0) for 0.4 :
 
        1- I currently rescripted this event from scratch again.
 
        2- This version is much more better than the one before, it is more cleaner, clearer and with more options.
 
        3- This version was tested on 0.4 latest one 4626, should work on lower rev too.
 
        4- Removed the npc part it is now based on tp creation.
 
        5- More silent boradcasting for in event progress and no spam, I hope!
 
        6- you now get the options to show event stats on cancel msg area and (to / not to) show left players with names each x interval.
 
        8- Team balancer have been added to only balance count in both teams.
 
        9- Added a countdown option before fight starts.
 
        10- Now starts on a defined time every day
 
   </description>
 
<config name="teamSetting"><![CDATA[
--[[Local Config]]--
 
--//storages
 
inBlue = 9900
inRed = 9901
joiner = 9907
 
blueKills = 9902
redKills = 9903
 
eventRecruiting = 9904
eventStarted = 9905
eventTime = 9906
 
itemToGet = 9908
countItemToGet = 9909
 
nextExecute = 9910
 
blueCount = 9911
redCount = 9912
 
--// Positions
 
teleporterPosition = {x = 1915, y = 1008, z = 7} 
 
waitRoomPlace = {x = 1608, y = 1307, z = 7} 
 
waitRoomDimensions = { 
                            startPos = {x = 1600, y = 1300, z = 7}, 
                            endPos = {x = 1618, y = 1316, z = 7}
                            }
 
 
eventPlaceDimensions = { 
                            startPos = {x = 1799, y = 1478, z = 7}, 
                            endPos = {x = 1856, y = 1514, z = 6}
                            }
blueTeamPos = {x = 1807, y = 1487, z = 7}
redTeamPos = {x = 1843, y = 1486, z = 7}
 
 
--// General settings
 
recruitTime = 1 
 
minimumPlayersJoins = 2 
 
balanceTeams = true 
 
 
removeTeleportOnEventEnd = true 
 
eventMaxTime = 5 
 
showEventSats = true  
 
sendLeftPlayers = true             
intervalToSendLeftPlayers = 11 
 
 
countDownOnStart = true 
 
countDownFrom = 10             
 
minJoinLevel = 50 
 
rewards = { 
 
                    [65] = { {2476,1} , {"gold coin",500} },
                    [25] = { {"golden armor",1} , {2152,90} },
                    [10] = { {"dragon scale mail",1} , {"crystal coin",10} }
                } 
 ]]></config>
 <lib name="teamFunctions"><![CDATA[
domodlib('teamSetting')
 
--[[Conditions don't touch]]--
local bmale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(bmale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(bmale, {lookType = math.random(128,134), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})
 
local bfemale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(bfemale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(bfemale, {lookType = math.random(136,142), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})
 
local rmale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(rmale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(rmale, {lookType = math.random(128,134), lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
 
local rfemale = createConditionObject(CONDITION_OUTFIT)
setConditionParam(rfemale, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(rfemale, {lookType = math.random(136,142),lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
 
local infight = createConditionObject(CONDITION_INFIGHT,-1)
--[[Local Config]]--
 
--[[Functions]]--
 
-- General info
function isFightOn()
    return getStorage(eventStarted) > 0
end
function isRecruitOn()
    return getStorage(eventRecruiting) > 0
end
function getMinJoinLevel()
    return minJoinLevel
end
function getJoiners()
    joiners = {}
    for _,cid in ipairs(getPlayersOnline()) do
        if isJoiner(cid) then
            if isInRecruitArea(cid) or isInFightArea(cid) then 
                table.insert(joiners,cid)
            end
        end
    end
    return joiners
end
 
function getLeftMembersNames(team)
    str = "Oponents left("..#team..") :"
    left = ""
    for k,cid in ipairs(team) do left  = (left ..""..(k == 1 and "" or ", ")..""..getCreatureName(cid).."["..getPlayerLevel(cid).."]" ) end
    str = str .." " .. (left == "" and "none" or left).. "."
    return str
end
function disPlayEventStats()
    if not showEventSats then return false end
    if getStorage(eventTime) - os.time() <= 0 then return false end
 
    left = os.date("%M:%S",(getStorage(eventTime) - os.time()))
    for _,cid in ipairs(getJoiners()) do 
        oponentsLeft = isBlue(cid) and #getRedMembers() or #getBlueMembers()
        teamMatesLeft = isBlue(cid) and math.max(0,#getBlueMembers()-1) or math.max(0,#getRedMembers()-1)
        doPlayerSendCancel(cid,"Time left: ".. left.."   ||   Oponents left: "..oponentsLeft.."/"..oponentCount(cid).."   ||   Team-mates left: "..teamMatesLeft.."/".. math.max(0,matesCount(cid)-1))
    end
 
end
 
function doSendLeftPlayers()
    if not sendLeftPlayers then return false end
    if intervalToSendLeftPlayers <= 10 then return false end
    for _,cid in ipairs(getJoiners()) do
        doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],getLeftMembersNames(isRed(cid) and getBlueMembers() or getRedMembers()))
    end
end
 
function getBlueMembers()
    members = {}
    for _,cid in ipairs(getPlayersOnline()) do 
        if isBlue(cid) then
            table.insert(members,cid)
        end
    end
    return members
end
function getRedMembers()
    members = {}
    for _,cid in ipairs(getPlayersOnline()) do 
        if isRed(cid) then
            table.insert(members,cid)
        end
    end
    return members
end
 
 
-- starting fight
 
function startRecruiting()
    doSetStorage(eventRecruiting,1)
end
function startEvent()
    doSetStorage(eventRecruiting,-1)
 
    if removeTeleportOnEventEnd then
        tp = getTileItemById(teleporterPosition,1387).uid
        if tp > 0 then doRemoveItem(tp) end
    end
 
    if not balanceTeams() then
        resetEvent()
        return false
    end
    for _,cid in ipairs(getBlueMembers()) do
        doTeleportThing(cid,blueTeamPos,false)
        doSendMagicEffect(getThingPos(cid),10)
    end
    setBlueCount(#getBlueMembers())
    for _,cid in ipairs(getRedMembers()) do
        doTeleportThing(cid,redTeamPos,false)
        doSendMagicEffect(getThingPos(cid),10)
    end
    setRedCount(#getRedMembers())
    startCountDown()
    return true
end
 
function setBlueCount(count)
    doSetStorage(blueCount,-1)
    doSetStorage(blueCount,count)
end
function oponentCount(cid)
    return isBlue(cid) and getStorage(redCount) or getStorage(blueCount)
end
function matesCount(cid)
    return isBlue(cid) and getStorage(blueCount) or getStorage(redCount)
end
 
function setRedCount(count)
    doSetStorage(redCount,-1)
    doSetStorage(redCount,count)
end
function balanceTeams()
    members = getJoiners()
    if #members < minimumPlayersJoins then
        doBroadcastMessage("Team-Battle event was cancelled as only ".. #members .. " players joined.")
        return false
    end
    if (math.mod(#members,2) ~= 0) then
        kicked = members[#members]
        clearTeamEventStorages(kicked)
        doPlayerSendTextMessage(kicked,MESSAGE_TYPES["info"],"Sorry, you have been kicked out of event for balancing both teams.")
    end
    count = 1
    for _,cid in ipairs(getJoiners()) do
        if (math.mod(count,2) ~= 0) then
            addToBlue(cid)
        else
            addToRed(cid)
        end
        count = count + 1
    end
    return true
end
function startCountDown()
    if(countDownOnStart) then
        for _,cid in ipairs(getJoiners()) do
            doCreatureSetNoMove(cid,true)
            for i = 0,countDownFrom do
                addEvent(doPlayerSendTextMessage,i*1000, cid, MESSAGE_TYPES["info"], (i == 0 and countDownFrom or countDownFrom-i) )
            end
        end
        addEvent(startFight,(countDownFrom+1)*1000)
    else
        startFight()
    end
end
function startFight()
    doSetStorage(eventStarted,1)
    for _,cid in ipairs(getJoiners()) do
        doCreatureSetNoMove(cid,false)
        doPlayerSendTextMessage(cid,MESSAGE_TYPES["warning"],"Fight Starts!")
    end
    addEvent(endTeamEvent,eventMaxTime*60*1000,"maxTime")
    doSetStorage(eventTime,os.time()+eventMaxTime*60)
end
 
function teleportToWaitRoom(cid)
    doTeleportThing(cid,waitRoomPlace)
    doSendMagicEffect(waitRoomPlace,10)
    if getPlayerGroupId(cid) < 4 then
        addToJoiners(cid)
    end
    doPlayerSendTextMessage(cid,MESSAGE_TYPES["blue"],"Please be patient till the event starts and don't logout.")
    return true
end
 
 
 
-- Modifing teams & checking member states
function isBlue(cid)
    return (getPlayerStorageValue(cid,inBlue) > 0)
end
function isRed(cid)
    return (getPlayerStorageValue(cid,inRed) > 0)
end
function isJoiner(cid)
    return (getPlayerStorageValue(cid,joiner) > 0)
end
function addToBlue(cid)
    setPlayerStorageValue(cid,inBlue,1)
    doAddCondition(cid, (getPlayerSex(cid) == 1) and bmale or bfemale)
    doAddCondition(cid,infight)
end
function addToRed(cid)
    setPlayerStorageValue(cid,inRed,1)
    doAddCondition(cid, (getPlayerSex(cid) == 1) and rmale or rfemale)
    doAddCondition(cid,infight)
end
function addToJoiners(cid)
    setPlayerStorageValue(cid,joiner,1)
end
function removeFromBlue(cid)
    setPlayerStorageValue(cid,inBlue,-1)
end
function removeFromRed(cid)
    setPlayerStorageValue(cid,inRed,-1)
end
function removeFromjoiners(cid)
    setPlayerStorageValue(cid,joiner,-1)
end
function isInRecruitArea(cid)
    return isInRange(getThingPos(cid),waitRoomDimensions.startPos,waitRoomDimensions.endPos)
end
function isInFightArea(cid)
    return isInRange(getThingPos(cid),eventPlaceDimensions.startPos,eventPlaceDimensions.endPos)
end
function clearTeamEventStorages(cid)
    if isInRecruitArea(cid) or isInFightArea(cid) then
        doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)))
        doSendMagicEffect(getThingPos(cid),10)
    end
 
    if isFightOn() then
        if isJoiner(cid) then
            if isBlue(cid) then
                addRedKills()
            elseif isRed(cid) then
                addBlueKills()
            end
            doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"You have died in Team-Battle Event.")
        end
    end
 
    removeFromjoiners(cid)
    removeFromBlue(cid)
    removeFromRed(cid)
    doRemoveConditions(cid, false)
 
end
function haveUnrecivedReward(cid)
    return getPlayerStorageValue(cid,itemToGet) > 0 and getPlayerStorageValue(cid,countItemToGet) > 0 
end
function recieveLateReward(cid)
    if haveUnrecivedReward(cid) then
        if not doPlayerAddItem(cid,getPlayerStorageValue(cid,itemToGet),getPlayerStorageValue(cid,countItemToGet),false) then
            msg = "You need to free some space then relog to take your reward."
            doPlayerSendTextMessage(cid,MESSAGE_TYPES["warning"],msg)
        else
            setPlayerStorageValue(cid,itemToGet,-1) 
            setPlayerStorageValue(cid,countItemToGet,-1)
            doPlayerSendTextMessage(cid,MESSAGE_TYPES["info"],"You have recieved your reward.")
        end
    end
end
 
-- Win or lose
function thereIsAWinner()
    if redWon() or blueWon() then
        return true
    end
    return false
end
function blueWon()
    return( (#getBlueMembers() > 0 ) and ( #getRedMembers() == 0) )
end
function redWon()
    return( (#getRedMembers() > 0) and (#getBlueMembers() == 0) )
end
function isDraw()
    return #getBlueMembers() == #getRedMembers()
end
function getWinner()
    if #getBlueMembers() > #getRedMembers() then
        return {getBlueMembers(),getRedMembers(),"Blue team won."}
    elseif #getRedMembers() > #getBlueMembers() then
        return {getRedMembers(),getBlueMembers(),"Red team won."}
    else
        return { {},{},"it was a draw."}
    end
end
 
 
-- Adding kills
function addBlueKills()
    doSetStorage(blueKills, math.max(1,getStorage(blueKills)+1))
end
function addRedKills()
    doSetStorage(redKills, math.max(1,getStorage(redKills)+1))
end
 
-- Ending event
 
function endTeamEvent(type)
    if isFightOn() then
        doSetStorage(eventStarted,-1)
        doBroadcastMessage("Team-Battle event ended and "..getWinner()[3])
        if not isDraw() then
            win(getWinner()[1],type)
            lose(getWinner()[2],type)
        else
            draw()
        end
    end
    addEvent(resetEvent,2 * 1000) --- tp player to home remove all storages and reset event global storages
end
 
function getPercent()
    rand= math.random(1,100)
    prev = 0
    chosenItem = 0
    for k, v in pairs(rewards) do 
        if rand > prev and rand <= k+prev then
            chosenItem = k
            break
        else
            prev =  k+prev
        end
    end
    return chosenItem
end
 
function generateReward(cid)
    percent = getPercent()
    if percent == 0 then
        print("Error in the reward item. Please inform Doggynub.")
        return true
    end
 
    randomizer = rewards[percent][math.random(1,#rewards[percent])]
    item = not tonumber(randomizer[1]) and getItemIdByName(randomizer[1]) or randomizer[1]
    count = isItemStackable(item) and math.min(randomizer[2],100) or 1
    if item == nil or item == 0 then
        print("Error in the  item format. Please inform Doggynub.")
        return true
    end
 
    msg = "You have won ".. (count == 1 and "a" or count) .." " .. getItemNameById(item) .. "" .. (count == 1 and "" or "s").."."
 
    if not doPlayerAddItem(cid,item,count,false) then
        msg = msg.. "You need to free some space then relog to take your reward."
        setPlayerStorageValue(cid,itemToGet,item)
        setPlayerStorageValue(cid,countItemToGet,count)
    end
 
    doPlayerSendTextMessage(cid,MESSAGE_TYPES["white"],msg)
 
end
 
 
 
function generateStatsMessage(cid, type, stats)
    msg = {
                    ["KO"] = { ["win"] = "Event ended. Your team have won by killing all oponent's team members. You will recieve your reward shortly, check incoming messages.",
                                ["lose"] = "Event ended. Your team have lost as the Oponent team killed all your team's members."
                            },
                    ["maxTime"] = {
                                    ["win"] = "Event max-time finished and your team have won. You will recieve your reward shortly, check incoming messages.",
                                    ["lose"] = "Event max-time finished and your team have lost.",
                                    ["draw"] = "Event max-time finished and it is a draw.(no team won)"
                                }
                }
    doPlayerSendTextMessage(cid,MESSAGE_TYPES["info"],msg[type][stats])
 
end
function win(winners,type)
    for _,cid in ipairs(winners) do
        generateStatsMessage(cid, type, "win")
        generateReward(cid)
    end
end
function lose(losers,type)
    for _,cid in ipairs(losers) do
        generateStatsMessage(cid, type, "lose")
    end
end
function draw()
    for _,cid in ipairs(getJoiners()) do
        generateStatsMessage(cid, "maxTime", "draw")
    end
end
 
function resetEvent()
    doSetStorage(eventRecruiting,-1)
    doSetStorage(nextExecute,-1)
    doSetStorage(eventStarted,-1)
    doSetStorage(eventTime,-1)
    doSetStorage(blueKills,-1)
    doSetStorage(redKills,-1)
    for _,cid in ipairs(getPlayersOnline()) do 
        if isBlue(cid) or isRed(cid) or isJoiner(cid) then
            clearTeamEventStorages(cid)
        end
    end
end
 
 
]]></lib>
 <event type="login" name="teambattleLogin" event="script"><![CDATA[
domodlib('teamFunctions')
 
function onLogin(cid)
    clearTeamEventStorages(cid)
    recieveLateReward(cid)
 
    registerCreatureEvent(cid, "teamEventStats")
    registerCreatureEvent(cid, "teambattleLogout")
    registerCreatureEvent(cid, "teambattleCombat")
    return true
end
]]></event>
<event type="combat" name="teambattleCombat" event="script"><![CDATA[
domodlib('teamFunctions')
 
function onCombat(cid, target)
    if isFightOn() then
        if isBlue(cid) and isBlue(target) then
            return false
        end
        if isRed(cid) and isRed(target) then
            return false
        end
    end
    return true
end
 
]]></event>
 <event type="logout" name="teambattleLogout" event="script"><![CDATA[
domodlib('teamFunctions')
 
function onLogout(cid)
    clearTeamEventStorages(cid)
    if thereIsAWinner() then
        endTeamEvent("KO")
    end
    return true
end
 
]]></event>
<event type="statschange" name="teamEventStats" event="script"><![CDATA[
domodlib('teamFunctions')
 
corpse_ids = {
        [0] = 3065, -- female
        [1] = 3058 -- male
}
function onStatsChange(cid, attacker, type, combat, value)
    if combat == COMBAT_HEALING then
        return true
    end
    if getCreatureHealth(cid) > value then
        return true
    end
 
    if isInFightArea(cid) and isFightOn() then
        if isBlue(cid) or isRed(cid) then
            corpse = doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid))
            doCreateItem(2016, 2, getThingPos(cid))
            clearTeamEventStorages(cid)
            doItemSetAttribute(corpse, "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".\n[Team-Event kill]") 
            doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
            if thereIsAWinner() then
                endTeamEvent("KO")
            end
 
            return false
 
        end
 
    end
 
    return true
end 
]]></event>
 
<globalevent name = "teamBattleStart" time="11:28:00" event="script"><![CDATA[
domodlib('teamFunctions')
 
function onTime()
    resetEvent()
    if getTileItemById(teleporterPosition,1387).uid < 1 then
        tp = doCreateItem(1387,1,teleporterPosition)
        doItemSetAttribute(tp, "aid", 9990)
    end
 
    startRecruiting()
    for i = 0, recruitTime-1 do
        addEvent(doBroadcastMessage, i * 60* 1000,"Team-Battle event is recruting players by entering event tp. Fight begins in "..(i == 0 and recruitTime or recruitTime-i).." minutes.",MESSAGE_TYPES["warning"])
    end
 
    addEvent(startEvent, recruitTime * 60 * 1000)
 
    return true
end
 
 
 ]]></globalevent>
 
<globalevent name = "teamBattletime" interval="1" event="script"><![CDATA[
domodlib('teamFunctions')
 
function onThink()
    if isFightOn() then
        disPlayEventStats()
 
        if getStorage(nextExecute) == -1 or getStorage(nextExecute) <= os.time() then
            doSendLeftPlayers()
            doSetStorage(nextExecute,os.time()+intervalToSendLeftPlayers)
        end
    end
    return true
end
 
 ]]></globalevent>
<movevent type="StepIn" actionid="9990" event="script"><![CDATA[
domodlib('teamFunctions')
 
function onStepIn(cid, item, position, fromPosition)
    if not isRecruitOn() then
        doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"Event isn't currently opened.")
        doTeleportThing(cid,fromPosition)
        doSendMagicEffect(fromPosition,2)
        return true
    end
    if getPlayerLevel(cid) < getMinJoinLevel() then
        doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"Only players of level ".. getMinJoinLevel().. "+ can join this event.")
        doTeleportThing(cid,fromPosition)
        return true
    end
    teleportToWaitRoom(cid)
    return true
end
 
 
 
 
]]> </movevent>
</mod>

 

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

                                                       “Enquanto nos derem ao menos 1% de chance, seguiremos lutando.

                                                     E venceremos! Esse é o verdadeiro e único Clube da Fé! Vai São Paulo!”

                                                                                       spfc.png

Link para o post
Compartilhar em outros sites

UPP

                                                       “Enquanto nos derem ao menos 1% de chance, seguiremos lutando.

                                                     E venceremos! Esse é o verdadeiro e único Clube da Fé! Vai São Paulo!”

                                                                                       spfc.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.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Kill of sumoners
      Boa noite, estou com um erro ao atacar um player em meu sv eu nao pego pk, nem sai magia, aparece a mensagem "voce so pode usar isso em criaturas"
      obs: magia em area acerta e pega pk, apenas as targets ou hits de arma nao vao 
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por vankk
      Eu tinha esse evento muito tempo aqui no meu Pen Drive (para ser mais específico 4 anos), eu vou mudar ele para 1.2 amanha, entao nao me interessa a versao 0.4 mais. Nao sei se esta funcionando, nao tenho mapa. E nao vou explicar configuracoes, se voce nao souber configurar esse evento, voce nao merece te-lo em seu servidor!! Entao esta ai o code:

      login.luaregisterCreatureEvent(cid, "TBEventC") registerCreatureEvent(cid, "TBEventS") registerCreatureEvent(cid, "TBEventO") tb.lualocal config = { base = {{x=121,y=126,z=7}, {x=142,y=149,z=7}}, -- team1 base, team2 base teamStorage = 49595, fragStorage = {49596, 49597} } function addFrag(id) return setGlobalStorageValue(config.fragStorage[id], math.max(1, (getGlobalStorageValue(config.fragStorage[id])+1))) end function getFragsTB(id) return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id]) end function getTeam(cid) return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage) end function onCombat(cid, target, lastHit, flags) if not(isPlayer(cid)) or not(isPlayer(target)) then return true end if getTeam(cid) ~= 0 and getTeam(cid) == getTeam(target) then return doPlayerSendCancel(cid, "You may not attack teammates.") and false end return true end function onStatsChange(cid, attacker, type, combat, value) if combat == COMBAT_HEALING then return true end if not(isPlayer(cid)) or not(isPlayer(attacker)) then return true end if isMonster(attacker) and getTeam(cid) ~= 0 then return false end if isMonster(attacker) then return true end if getTeam(cid) ~= 0 and getTeam(cid) == getTeam(attacker) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You may not attack teammates.") and false elseif getTeam(cid) == 0 then return true end if type ~= STATSCHANGE_HEALTHLOSS then return true end if value >= getCreatureHealth(cid) then doTeleportThing(cid, config.base[getTeam(cid)]) doSendMagicEffect(getThingPos(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) addFrag(getTeam(attacker)) doPlayerSendTextMessage(attacker, MESSAGE_INFO_DESCR, "You killed ".. getPlayerName(cid) .." and earned a frag for your team. Your team now has ".. getFragsTB(getTeam(attacker)) .. " frags.") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You were owned by ".. getPlayerName(attacker) ..".") return false end return true end function onOutfit(cid, old, current) if getTeam(cid) ~= 0 then return doPlayerSendCancel(cid, "You cannot change your outfit here.") and false end return true end globalevents
      tbevent.lualocal config = { tpPos = {x=92,y=118,z=7}, -- where tp happends tpToPos = {x=130,y=130,z=7}, -- tp p onde minutes = 1, -- minute area = {{x=121,y=126,z=7},{x=142,y=149,z=7}}, -- top left and bottom right corner of fight area waiting = {{x=121,y=126,z=7},{x=142,y=149,z=7}}, -- top left and bottom right corner of waiting arena needed = 2, -- minimum players timeToEnd = 30*1000, -- time to end base = {{x=121,y=126,z=7}, {x=142,y=149,z=7}}, -- team1 base, team2 base names = {"Alliance", "Horde"}, -- team names outfit = {{132, 136, 40},{132, 136, 160}}, -- outfits teamStorage = 49595, fragStorage = {49596, 49597}, fragsToWin = 3, -- frags to win outfitStorage = 49598 } function getFragsTB(id) return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id]) end function getTeam(cid) return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage) end function setTeam(cid, team) local o = getCreatureOutfit(cid) setPlayerStorageValue(cid, config.outfitStorage, "{lookType=" .. o.lookType .. ", lookHead=" .. o.lookHead .. ", lookAddons=" .. o.lookAddons .. ", lookLegs=" .. o.lookLegs .. ", lookBody="..o.lookBody .. ", lookFeet=".. o.lookFeet.."}") doCreatureChangeOutfit(cid, {lookType = config.outfit[team][getPlayerSex(cid)+1], lookHead = config.outfit[team][3], lookAddons = 3, lookLegs = config.outfit[team][3], lookBody = config.outfit[team][3], lookFeet = config.outfit[team][3]}) return setPlayerStorageValue(cid, config.teamStorage, team) end function winner(id) if isInArray({1,2}, id) then doBroadcastMessage(config.names[id] .. " has won the Team Battle event.") for _, cid in pairs(getPlayersOnline()) do if getTeam(cid) == id then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has won the Team Battle event.") local rand = math.random(1,3) if rand == 1 then doPlayerAddItem(cid, SOFTBOOTS_ID, 1) elseif rand == 2 then doPlayerAddItem(cid, 2160, 10) else doAddPoints(cid, 5) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has lost the Team Battle event.") end end else doBroadcastMessage("No one won the Team Battle event. DRAW") end for _, cid in pairs(getPlayersOnline()) do if getTeam(cid) ~= 0 then doTeleportThing(cid, getTownTemplePosition(1)) doSendMagicEffect(getThingPos(cid), 10) setPlayerStorageValue(cid, config.teamStorage, -1) setGlobalStorageValue(5474578, -1) doCreatureChangeOutfit(cid, loadstring("return " .. getPlayerStorageValue(cid, config.outfitStorage))()) end end end function areaPlayers(c) local t = {} for x = c[1].x, c[2].x do for y = c[1].y, c[2].y do for z = c[1].z, c[2].z do local tmp = getThingFromPos({x=x,y=y,z=z,stackpos=253}) if tmp.uid > 0 and (isPlayer(tmp.uid)) then table.insert(t, tmp.uid) end end end end return t end function endTB(z) if z >= config.timeToEnd then local w = getFragsTB(1) == getFragsTB(2) and 3 or getFragsTB(1) > getFragsTB(2) and 1 or 2 return winner(w) elseif getFragsTB(1) ~= getFragsTB(2) then if getFragsTB(1) >= config.fragsToWin then return winner(1) elseif getFragsTB(2) >= config.fragsToWin then return winner(2) end end addEvent(endTB, 25, z+25) end function setTeams(cid, team) local pos = config.base[team] if not(isPlayer(cid)) then return true end doTeleportThing(cid, pos) doSendMagicEffect(pos, 10) setTeam(cid, team) end function startTB() doRemoveItem(getTileItemById(config.tpPos, 1387).uid) local ppl = areaPlayers(config.waiting) for i = 1, #ppl do local level = getPlayerLevel(ppl[i]) if not(level >= 150) then -- LEVEL HERE doTeleportThing(ppl[i], getTownTemplePosition(1)) doSendMagicEffect(getThingPos(ppl[i]), 10) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "To fight here must be level 150.") end end ppl = areaPlayers(config.waiting) if #ppl%2 == 1 then local r = ppl[math.random(#ppl)] doTeleportThing(r, getTownTemplePosition(1)) doSendMagicEffect(getThingPos(r), 10) doPlayerSendTextMessage(r, MESSAGE_INFO_DESCR, "Sorry, but you were kicked from the event for balancement.") end ppl = areaPlayers(config.waiting) if #ppl >= config.needed then for p = 1, #ppl/2 do addEvent(setTeams, 10*1000, ppl[p], 1) for i = 10, 1, -1 do addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.") end end for p = #ppl/2+1, #ppl do addEvent(setTeams, 10*1000, ppl[p], 2) for i = 10, 1, -1 do addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.") end end addEvent(endTB, 10*1000, 0) return doBroadcastMessage("Team Battle event started.") end for i = 1, #ppl do doTeleportThing(ppl[i], getTownTemplePosition(1)) doSendMagicEffect(getTownTemplePosition(1), 10) doPlayerSendTextMessage(ppl[i], MESSAGE_INFO_DESCR, "There were not enough players") end doBroadcastMessage("Team Battle failed to start, because there were not enough players.") setGlobalStorageValue(5474578, -1) end function onTime() setGlobalStorageValue(config.fragStorage[1], -1) setGlobalStorageValue(5474578, 1) setGlobalStorageValue(config.fragStorage[2], -1) doBroadcastMessage("Team Battle event will start in " .. config.minutes .. " minutes. The teleporter is open now. ") doCreateTeleport(1387, config.tpToPos, config.tpPos) for m = config.minutes-1, 0, -1 do if m == 0 then addEvent(startTB, config.minutes*60*1000) else addEvent(doBroadcastMessage, (config.minutes-m)*60*1000, "Team Battle event will start in " .. m .. " minutes.") end end return true end Créditos: Desconhecido.


      Yours VANKK;
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo