Ir para conteúdo

Featured Replies

Postado
mtben.png

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.lua
registerCreatureEvent(cid, "TBEventC")
	registerCreatureEvent(cid, "TBEventS")
	registerCreatureEvent(cid, "TBEventO")	
tb.lua
local 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.lua
local 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;

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

  • Respostas 15
  • Visualizações 4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • globalevents.xml:   creaturescripts.xml:    

  • 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 t

  • value="tbevent.lua"/>   globaleventstbevent.lua   acho que não preciso nem responder.  

Postado
Muito obrigado pela contribuição em nossa comunidade, o Tiba King agradece!  :wow:
Seu tópico de conteúdo foi aprovado e será movido para a seção adequada.

Você ganhou 1 REP+

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo