Ir para conteúdo

Posts Recomendados

O City War é um evento exclusivo do Global War em que você entra no teleport, e começa a matar players la dentro, e quem matar mais ao final do evento ganha... Ele anuncia de 5 em 5 minutos o placar dos players!

 

Vou estar disponibilizando o mapa também, que é da versão 8.7.

 

 

 

Crie uma arquivo lua com nome qualquer em data/lib e coloque isso dentro:

configCW = {timetostart = 300,
			telpos = {x=32340, y=32213, z=7}, -- aonde o teleport aparecerá
			stats = 201201201701, -- não mexa
			kill = 201201201702, -- não mexa
			death = 201201201703, -- não mexa
			ostime =  201201201704, -- não mexa
			evttime = 25, -- quantos minutos o evento durará
			topleftPos = {x=32722, y=31336, z=6}, -- canto esquerdo superior
			botrightPos = {x=32791, y=31384, z=6}, -- canto direito inferior
			templepos = {x=32369, y=32241, z=7}, -- posição do templo
			arenapos = {{x=32722, y=31340, z=6}, {x=32786, y=31336, z=6}, {x=32722, y=31380, z=6}, {x=32783, y=31374, z=6}}, -- posições em que os players podem cair aleatoriamente dentro do evento
			times = 8, -- não mexa
			finaltime = 300 -- não mexa
}

function configCW:new()

local newevt = {}

setmetatable(newevt, self)
self.__index = self

doBroadcastMessage("The City War will be open in " .. self.timetostart .. " seconds.")
setGlobalStorageValue(self.stats, 0)
addEvent(function () newevt:start() end, self.timetostart*1000)
end

function configCW:start()

if getGlobalStorageValue(self.stats) == 0 then
	setGlobalStorageValue(self.ostime, os.time())
	local teleport = doCreateItem(1387, self.telpos)
	doItemSetAttribute(teleport, "aid", 5540)
	setGlobalStorageValue(self.stats, 1)
	doBroadcastMessage("The City War is starting...")
	for _, posi in pairs(self.arenapos) do
		local item = getTileItemById(posi, 1387)
		if(item.uid ~= 0) then
			doRemoveItem(item.uid)
		end
	end
	addEvent(function () self:preclose() end, self.evttime*1000*60)
	addEvent(function () self:announce(0) end, (self.evttime/self.times)*1000*60)
end

end

function configCW:announce(times)

if times < self.times then
	if #self:getTopFrags(true) >= 1 then 
		doBroadcastMessage("Top City War fraggers: " .. self:getTopFrags())
	end
	addEvent(function () self:announce(times+1) end, (self.evttime/self.times)*1000*60)
end

end

function configCW:preclose()

if getGlobalStorageValue(self.stats) == 1 then
	setGlobalStorageValue(self.stats, 2)
	doBroadcastMessage("The City War will end in " .. self.finaltime .. " seconds.")
	addEvent(function () self:close() end, self.finaltime*1000)
	local item = getTileItemById(self.telpos, 1387)
	if(item.uid ~= 0) then
		doRemoveItem(item.uid)
	end
end

end

function configCW:close()

if getGlobalStorageValue(self.stats) == 2 then
	if #self:getTopFrags(true) >= 1 then
		doBroadcastMessage("The City War has ended. The winners are: " .. self:getTopFrags())
	else
		doBroadcastMessage("The City War has ended. There were no winners.")
	end
	doRemovePlayersFromArea(self.topleftPos, self.botrightPos, self.templepos)
	for _, posi in pairs(self.arenapos) do
		doCreateTeleport(1387, self.templepos, posi)
	end
	for place, info in ipairs(self:getTopFrags(true)) do
		if place > 5 then
			break
		end
		local cid = getPlayerByName(info)
		doPlayerSendTextMessage(cid, 4, "Congratulations, you were the " .. place .. "º place in the City War.")
		doPlayerAddItem(cid, 6571, 1)
	end
	setGlobalStorageValue(self.stats, -1)
end

end

function configCW:isPlayerInEvent(cid)

if getPlayerStorageValue(cid, self.stats) == -1 or getPlayerStorageValue(cid, self.stats) - os.time() <= -5 or getGlobalStorageValue(self.stats) < 1 then
	return false
end

return true
end

function configCW:getTopFrags(tab)

local frag = {}

for _, pid in pairs(getPlayersOnline()) do
	if (getPlayerStorageValue(pid, self.kill) ~= -1 or getPlayerStorageValue(pid, self.death) ~= -1) and self:isPlayerInEvent(pid) then
		local kill =  getPlayerStorageValue(pid, self.kill)+1
		local death =  getPlayerStorageValue(pid, self.death)+1
		print(getCreatureName(pid), kill-death)
		table.insert(frag, {getCreatureName(pid), kill-death})
	end
end

print(#frag)
local frag, str, n = doOrderTab(frag, 0), nil, 5
print(#frag)

if tab then
	return frag
else
	if #frag < 5 then
		n = #frag
	end
	for i = 1, n do
		local cid = getPlayerByName(frag[i])
		local kill =  getPlayerStorageValue(cid, self.kill)+1
		local death =  getPlayerStorageValue(cid, self.death)+1
		str = str and str .. ", " .. frag[i] .. "[" .. kill .. "/" .. death .. "]" or frag[i] .. "[" .. kill .. "/" .. death .. "]"
	end
end

return str
end

function doOrderTab(tabela, value)

local max, index = {}, nil

for i = 1, #tabela do
	valor = value
	for a, b in ipairs(tabela) do
		if b[2] > valor then
			valor = b[2]
			valor2 = b[1]
			index = a
		end
	end
	table.remove(tabela, index)
	if valor ~= value then
		table.insert(max, valor2)
	end
end

return max
end

Agora em data/movements/scripts coloque:

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition)

if isPlayer(cid) and getGlobalStorageValue(configCW.stats) == 1 then
	doTeleportThing(cid, configCW.arenapos[math.random(1, #configCW.arenapos)])
	doSendMagicEffect(getPlayerPosition(cid), 29)
	if not(configCW:isPlayerInEvent(cid)) then
		setPlayerStorageValue(cid, configCW.stats, getGlobalStorageValue(configCW.ostime) + configCW.evttime*60 + configCW.finaltime)
		setPlayerStorageValue(cid, configCW.kill, -1)
		setPlayerStorageValue(cid, configCW.death, -1)
	end
else
	doTeleportThing(cid, fromPosition)
end

return true
end

e em movements.xml coloque:

 

<!--City War -->
<movevent type="StepIn" actionid="5540" event="script" value="city war.lua"/>

Em creaturescripts/scripts coloque:

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

if isInRange(getCreaturePosition(cid), configCW.topleftPos, configCW.botrightPos) then
	setPlayerStorageValue(cid, configCW.death, getPlayerStorageValue(cid, configCW.death) +1)
	setPlayerStorageValue(lastHitKiller[1], configCW.kill, getPlayerStorageValue(lastHitKiller[1], configCW.kill) +1)
end

return true
end

E em creaturescripts.xml coloque:

	<!-- Citywar -->
	<event type="preparedeath" name="CityWar" event="script" value="city war.lua"/>

Está instalado o seu sistema..

 

Para quem quiser o mapa, está aqui o download:

 

http://www.mediafire.com/download/x2bnrnu7ttopbna/city_war.rar

 

Créditos:

Demonbholder 100%

Eu por estar disponibilizando.

 

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

  • 1 year later...
  • 9 months later...
oi como fasso pra abrir o evento city war 4ja instalei mas ñ sei como abrir alguem pode me ajudar???

 

 


a outra coisa deu erro na hora de abrir o otserver ele da erro de creatures events! como fasso pra arrumar ??

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...