Ir para conteúdo

Featured Replies

Postado

ArenaUp System

 

Ola pessoal venho por meio deste topico disponibilizar um sistema de arenaup que eu desenvolvi para meu server!

 

O sistema funciona da seguinte maneira:

"!arenaup enter,<monster>" -> Player entra na arena, apartir disto será sumonado 9 monstros a cada 5 segundos

 

Condições:

Necessario item e level minimo para entrar.

O player fica dentro da arena no maximo 1h configuravel.

Caso morrer a arena é limpa e setada como livre.

Player so pode entrar na arena com algum montro preselecionado configuravel.

 

"!arenaup leave" -> Player sai da arena.

 

Instalação do Script

Explicações das variaveis na lib, configurações do script tb na lib

Em data/lib crie um arquivo chamado ArenaLib.lua e coloque isso dentro:

-- posini = sqm superior esquerdo da arena
-- posfim = sqm inferior direito da arena
-- center = posição central da arena
arenasLib = { 
  {posini = {x=235,y=46,z=15},posfim = {x=241,y=52,z=15}, center = {x=238,y=49,z=15}, ocupado = 0},
  {posini = {x=243,y=46,z=15},posfim = {x=249,y=52,z=15}, center = {x=246,y=49,z=15}, ocupado = 0},
  {posini = {x=251,y=46,z=15},posfim = {x=257,y=52,z=15}, center = {x=254,y=49,z=15}, ocupado = 0},
  {posini = {x=259,y=46,z=15},posfim = {x=265,y=52,z=15}, center = {x=262,y=49,z=15}, ocupado = 0},
  {posini = {x=267,y=46,z=15},posfim = {x=273,y=52,z=15}, center = {x=270,y=49,z=15}, ocupado = 0},
  {posini = {x=275,y=46,z=15},posfim = {x=281,y=52,z=15}, center = {x=278,y=49,z=15}, ocupado = 0},
  {posini = {x=283,y=46,z=15},posfim = {x=289,y=52,z=15}, center = {x=286,y=49,z=15}, ocupado = 0},
  {posini = {x=291,y=46,z=15},posfim = {x=297,y=52,z=15}, center = {x=294,y=49,z=15}, ocupado = 0},
  {posini = {x=299,y=46,z=15},posfim = {x=305,y=52,z=15}, center = {x=302,y=49,z=15}, ocupado = 0},
  {posini = {x=307,y=46,z=15},posfim = {x=313,y=52,z=15}, center = {x=310,y=49,z=15}, ocupado = 0},
  {posini = {x=235,y=54,z=15},posfim = {x=241,y=60,z=15}, center = {x=238,y=57,z=15}, ocupado = 0},
  {posini = {x=243,y=54,z=15},posfim = {x=249,y=60,z=15}, center = {x=246,y=57,z=15}, ocupado = 0},
  {posini = {x=251,y=54,z=15},posfim = {x=257,y=60,z=15}, center = {x=254,y=57,z=15}, ocupado = 0},
  {posini = {x=259,y=54,z=15},posfim = {x=265,y=60,z=15}, center = {x=262,y=57,z=15}, ocupado = 0},
  {posini = {x=267,y=54,z=15},posfim = {x=273,y=60,z=15}, center = {x=270,y=57,z=15}, ocupado = 0},
  {posini = {x=275,y=54,z=15},posfim = {x=281,y=60,z=15}, center = {x=278,y=57,z=15}, ocupado = 0},
  {posini = {x=283,y=54,z=15},posfim = {x=289,y=60,z=15}, center = {x=286,y=57,z=15}, ocupado = 0},
  {posini = {x=291,y=54,z=15},posfim = {x=297,y=60,z=15}, center = {x=294,y=57,z=15}, ocupado = 0},
  {posini = {x=299,y=54,z=15},posfim = {x=305,y=60,z=15}, center = {x=302,y=57,z=15}, ocupado = 0},
  {posini = {x=307,y=54,z=15},posfim = {x=313,y=60,z=15}, center = {x=310,y=57,z=15}, ocupado = 0}
}

-- monstros disponiveis para a arena, serão mostrados quando usar !arenaup monsters
arenaMonsters = {
  "Demon",
  "Dragon Lord",
  "Frost Dragon",
  "Dark Torturer",
  "Fury",
  "Behemoth",
  "Destroyer",
  "Draken Warmaster",
  "Draken Elite",
  "Draken Abomination",
  "Draken Spellweaver",
  "Warlock",
  "Wyrm",
  "Hydra",
  "Medusa",
  "Serpent Spawn",
  "Giant Spider",
  "Hellfire Fighter",
  "Infernalist",
  "Lizard Chosen",
  "Grim Reaper",
  "Nightmare",
  "Hellhound",
  "Undead Dragon",
  "Sea Serpent",
  "Defiler",
  "Ghastly Dragon",
  "Juggernaut"
}
-- configurações
arenaConfig = {
  lvlmin = 200, -- level minimo para entrar na arena
  item_id = 6536, -- item q o player precisa ter para poder entrar na arena
  tempo = 60, -- tempo em minutos que o player pode ficar upando na arena
  temple = {x=161,y=53,z=7} -- posição do templo da ciadade principal do server
}


----------------------------- Não mexa abaixo a menos que saiba o que esta fazendo ------------------------------
arenaStorages = {
  arena = 96353,
  tempo = 96354
}


function limparArena(posInicial,posFinal)
  for i = posInicial.x, posFinal.x do
    for j = posInicial.y, posFinal.y do
      creature = getThingFromPos({x=i,y=j,z=15,stackpos=253})
      if isMonster(creature.uid) then
        doRemoveCreature(creature.uid)
      end
      doCleanTile({x=i,y=j,z=15})
    end
  end
end

function arenaSummon(cid, monster, arena)
  if getPlayerStorageValue(cid, arenaStorages.tempo) < os.time() then
    doTeleportThing(cid,arenaConfig.temple)
    doSendMagicEffect(getThingFromPos(cid),10)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu tempo se esgotou!")
    setPlayerStorageValue(cid,arenaStorages.arena,0)
  end
  cont = 0
  for i = arenasLib[arena].posini.x, arenasLib[arena].posfim.x do
    for j = arenasLib[arena].posini.y, arenasLib[arena].posfim.y do
      creature = getThingFromPos({x=i,y=j,z=15,stackpos=253})
      if isPlayer(creature.uid) then
        cont = cont +1
      end
    end
  end
  if cont ~= 0 then
    for i = 0 , 8 do
      px = math.random(arenasLib[arena].posini.x,arenasLib[arena].posfim.x)
      py = math.random(arenasLib[arena].posini.y,arenasLib[arena].posfim.y)
      pz = 15
      if getTopCreature({x=px,y=py,z=pz,stackpos=253}).uid > 0 then
      else
        doCreateMonster(monster, {x=px,y=py,z=pz})
      end
    end
    addEvent(arenaSummon,5000,cid,monster,arena)
  else
    arenasLib[arena].ocupado = 0
    limparArena(arenasLib[arena].posini,arenasLib[arena].posfim)
  end
end

 

Em creaturescripts.xml:

<event type="PrepareDeath" name="arenaup" script="arenaup.lua"/>

Em creaturescripts/script/login.lua abaixo de function onLogin(cid) coloque:

registerCreatureEvent(cid, "arenaup")

Na mesma pasta cria um arquivo chamado arenaup.lua e coloque:

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)
	if getPlayerStorageValue(cid,arenaStorages.arena) ~= 0 then
		setPlayerStorageValue(cid,arenaStorages.arena,0)
	end
return true
end

 

Em talkactions.xml coloque:

<talkaction words="!arenaup" event="script" value="arenaup.lua"/>

em talkactions/scripts crie um arquivo arenaup.lua e coloque dentro:

function onSay(cid, words, param, channel)
	if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "*** Arena Up Configuracoes ***.")
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Para saber os possiveis monstros para se cacar na arena up diga !arenaup monsters.")
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Para entrar na arena diga !arenaup enter,<monster> eh preciso 1 jalapeno pepper para poder entrar.")
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Para sair da arena diga !arenaup leave ou entao vc sera kikado apos uma hora de hunt dentro da arena")
		return true
	end

	if(param == "monsters") then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Monstros disponiveis:")
		msg = ""
		for a,b in ipairs(arenaMonsters) do
			if a == 1 then
				msg = b
			else
				msg = msg .. ", " .. b
			end
		end
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg)
	end

	local t = string.explode(param, ",")

	if (t[1] == 'enter') then
		if getPlayerLevel(cid) > arenaConfig.lvlmin then
			if getTilePzInfo(getCreaturePosition(cid)) == true then
				for a,b in ipairs(arenaMonsters) do
					if string.lower(t[2]) == string.lower(b) then
						pass = true
						break
					else
						pass = false
					end
				end
				if pass == true then
					if doPlayerRemoveItem(cid, arenaConfig.item_id, 1) then
						for a,b in ipairs(arenasLib) do
							if b.ocupado == 0 then
								setPlayerStorageValue(cid,arenaStorages.arena,a)
								doTeleportThing(cid, b.center)
								doSendMagicEffect(getThingPos(cid),10)
								setPlayerStorageValue(cid,arenaStorages.tempo,(os.time() + (arenaConfig.tempo * 60)))
								b.ocupado = 1
								arenaSummon(cid,t[2],a)
								doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Bem vindo a arena up bom up!")
								break
							else
								doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Todas as arenas estao cheias!")
							end
						end
					else
						doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa de um countess sorrow's frozen tear para poder entrar na arena.")
					end
				else
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Monstro invalido.")
				end
			else
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Eh necessario estar em uma area PZ.")	
			end
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Necessario level 200 para upar na arena.")
		end
	end

	if (t[1] == 'leave') then
		if getPlayerStorageValue(cid,arenaStorages.arena) ~= 0 then
			doTeleportThing(cid,arenaConfig.temple)
			doSendMagicEffect(getThingPos(cid),10)
			sto = getPlayerStorageValue(cid,arenaStorages.arena)
			arenasLib[sto].ocupado = 0
			limparArena(arenasLib[sto].posini,arenasLib[sto].posfim)
			setPlayerStorageValue(cid,arenaStorages.arena,0)
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa estar na arenaup para usar este comando.")
		end
	end
end

 

Após feito isso o script esta instalado!

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

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

Informação Importante

Confirmação de Termo