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;