Ir para conteúdo
Entre para seguir isso  
arthur1408

Arena - Svargrond

Recommended Posts

arthur1408    0
arthur1408

Olá esse é meu primeiro tópico e espero ajudar todas as pessoas que queiram fazer uma arena identica ao do Global (Aquela de Svargrond)

Como todos sabem você tem que pagar uma taxa de entrada para Halvar antes de poder lutar.

 

  • Greenhorn
  • Nivel: Facil

  • Taxa: 1000 gp

  • Scrapper
  • Nivel: Medio
  • Taxa: 5000 gp

  • Warlord
  • Nivel: Dificil
  • Taxa: 10000 gp

Começando com o Script vá até:

data\movements\scripts\Svargrond.lua

 

-- Svargrond Arena by Arthur1408

 

-- masterpos É A LOCAção do primeiro lugar que o player será teletransportado. It is TWO squares south of the MIDDLE of the FIRST room (see screen shot)

local masterpos ={x=325, y=98, z=7, stackpos=1} -- this must match the position in the NPC script

local timeLimit = 600 -- this is the time limit in seconds (600 = 10 minutes) this has to match the timeLimit in the arenaNPC.lua script aswell.

-- you shouldnt need to edit any more of the script.

 

local stone1pos = {x = masterpos.x-5, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone2pos = {x = masterpos.x-19, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone3pos = {x = masterpos.x-33, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone4pos = {x = masterpos.x-47, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone5pos = {x = masterpos.x-41, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone6pos = {x = masterpos.x-27, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone7pos = {x = masterpos.x-13, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone8pos = {x = masterpos.x-21, y = masterpos.y-28, z = masterpos.z, stackpos = 1}

local stone9pos = {x = masterpos.x-35, y = masterpos.y-28, z = masterpos.z, stackpos = 1}

local stone10pos = {x = masterpos.x-29, y = masterpos.y-41, z = masterpos.z, stackpos = 1}

 

local function doCheckStoneId(stonepos)

local stone = getThingfromPos(stonepos)

if stone.itemid ~= 1354 then

doCreateItem(1354,1,stonepos)

end

if stone.actionid == 6000 then

doSetItemActionId(stone.uid,5999)

end

end

local function doChange(cid, pos, creature, tpos)

local stone = getThingfromPos(pos)

doSetItemActionId(stone.uid,6000)

local pos = getThingPos(stone.uid)

monster = doSummonCreature(creature, pos)

doTeleportThing(cid,tpos)

doSendAnimatedText(tpos,"Fight!",198)

doSendMagicEffect(pos,10)

end

function onStepIn(cid, item, pos)

playerID = getGlobalStorageValue(9000)

 

local function arenaOver(cid) -- if the player leaves, dies, logs out, wins, or is teleported out:

setGlobalStorageValue(3000,-1) -- if the arena is in use or not

setPlayerStorageValue(cid,5029,-1) -- reset the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,-1) -- if the player is still in the arena or not

setPlayerStorageValue(cid,2999,-1) -- dont mind this (addEvent)

end

local function doCheckLvl(cid, storage)

if getPlayerStorageValue(cid, storage) == 1 then -- easy

monsters = {"Frostfur", "Bloodpaw", "Bovinus", "Achad", "Colerian the Barbarian", "The Hairy One", "Axeitus Headbanger", "Rocky", "Cursed Gladiator", "Orcus the Cruel"}

elseif getPlayerStorageValue(cid, storage) == 2 then -- medium

monsters = {"Avalanche", "Kreebosh the Exile", "The Dark Dancer", "The Hag", "Slim", "Grimgor Guteater", "Drasilla", "Spirit of Earth", "Spirit of Water", "Spirit of Fire"}

elseif getPlayerStorageValue(cid, storage) == 3 then -- hard

monsters = {"Webster", "Darakan the Executioner", "Norgle Glacierbeard", "The Pit Lord", "Svoren The Mad", "The Masked Marauder", "Gnorre Chyllson", "Fallen Mooh'Tah Master Ghar", "Deathbringer", "The Obliverator"}

end

end

local function doCheckStone(stonepos)

local stone = getThingfromPos(stonepos)

if stone.actionid ~= 6000 and stone.itemid == 1354 then

return 0

elseif stone.actionid == 6000 or stone.itemid ~= 1354 then

return 1

end

end

local function roomBusy(cid, pos)

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doSendMagicEffect(pos,10)

doPlayerSendTextMessage(cid, 22, "The arena is in use right now, wait your turn!")

end

 

doCheckLvl(cid, 5029)

 

if item.actionid == 2002 then

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doCheckStoneId(stone1pos)

doCheckStoneId(stone2pos)

doCheckStoneId(stone3pos)

doCheckStoneId(stone4pos)

doCheckStoneId(stone5pos)

doCheckStoneId(stone6pos)

doCheckStoneId(stone7pos)

doCheckStoneId(stone8pos)

doCheckStoneId(stone9pos)

doCheckStoneId(stone10pos)

arenaOver(cid)

doCreatureAddHealth(monster,-10000) -- might give an error if someone leaves after the monster is dead

elseif item.actionid == 2003 then -- tp leading from the reward room to the NPC area

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

elseif item.actionid == 2004 and doCheckStone(stone1pos) == 0 then -- from the npc room, teleports you to room one

if (getGlobalStorageValue(3000) == 1 and hasAddedEvent ~= 1) then

local passArgs = {cid=cid, npos=npos}

setPlayerStorageValue(cid,5030,1)

setGlobalStorageValue(3001,1)

local npos = masterpos

if getPlayerStorageValue(cid,2999) == -1 then

addEvent(after1second,1000,passArgs)

setPlayerStorageValue(cid,2999,1)

end

else -- player was tped past the exp doors or logged in there or something

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doPlayerSendTextMessage(cid, 22, "Please talk to the NPC before entering the arena.")

setPlayerStorageValue(cid,5029,-1) -- reset the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,-1) -- if the player is still in the arena or not

end

elseif item.actionid == 2005 and doCheckStone(stone2pos) == 0 then -- this takes you to room 2

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-14, y = masterpos.y, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[2], npos)

if getThingfromPos(stone1pos) ~= 1354 then

doCreateItem(1354,1,stone1pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2006 and doCheckStone(stone3pos) == 0 then

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-28, y = masterpos.y, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[3], npos)

if getThingfromPos(stone2pos) ~= 1354 then

doCreateItem(1354,1,stone2pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2007 and doCheckStone(stone4pos) == 0 then

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-42, y = masterpos.y, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[4], npos)

if getThingfromPos(stone3pos) ~= 1354 then

doCreateItem(1354,1,stone3pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2008 and doCheckStone(stone5pos) == 0 then

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-36, y = masterpos.y-13, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[5], npos)

if getThingfromPos(stone4pos) ~= 1354 then

doCreateItem(1354,1,stone4pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2009 and doCheckStone(stone6pos) == 0 then

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-22, y = masterpos.y-13, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[6], npos)

if getThingfromPos(stone5pos) ~= 1354 then

doCreateItem(1354,1,stone5pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2010 and doCheckStone(stone7pos) == 0 then

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-8, y = masterpos.y-13, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[7], npos)

if getThingfromPos(stone6pos) ~= 1354 then

doCreateItem(1354,1,stone6pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2011 and doCheckStone(stone8pos) == 0 then

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-16, y = masterpos.y-26, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[8], npos)

if getThingfromPos(stone7pos) ~= 1354 then

doCreateItem(1354,1,stone7pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2012 and doCheckStone(stone9pos) == 0 then

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-30, y = masterpos.y-26, z = masterpos.z}

local mpos = {x=npos.x, y=npos.y-4, z=npos.z}

doChange(cid, mpos, monsters[9], npos)

if getThingfromPos(stone8pos) ~= 1354 then

doCreateItem(1354,1,stone8pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2013 and doCheckStone(stone10pos) == 0 then -- leads to room ten

if getPlayerStorageValue(cid,9000) == playerID then

local npos = {x = masterpos.x-24, y = masterpos.y-39, z = masterpos.z}

local mpos = {x = npos.x, y = npos.y-4, z = npos.z}

doChange(cid, mpos, monsters[10], npos)

if getThingfromPos(stone9pos) ~= 1354 then

doCreateItem(1354,1,stone9pos)

end

else

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

setPlayerStorageValue(cid,5029,-1)

setPlayerStorageValue(cid,3002,-1)

setPlayerStorageValue(cid,2999,-1)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

end

elseif item.actionid == 2014 then

local npos = {x = masterpos.x+12, y = masterpos.y-20, z = masterpos.z-1} -- exit

if getThingfromPos(stone10pos) ~= 1354 then

doCreateItem(1354,1,stone10pos)

end

if getPlayerStorageValue(cid,5029) == 1 then -- easy mode

setPlayerStorageValue(cid,3001,2)

elseif getPlayerStorageValue(cid,5029) == 2 then -- medium mode

setPlayerStorageValue(cid,3001,3)

elseif getPlayerStorageValue(cid,5029) == 3 then -- hard mode

setPlayerStorageValue(cid,3001,4)

end

doTeleportThing(cid, npos)

doPlayerSay(cid, "Respect and honor to you, champion!", 16)

doSendMagicEffect(npos,10)

arenaOver(cid)

elseif item.actionid == 3011 then -- room to the right of the NPC this will start the time limit

if isPlayer(cid) == TRUE then --make more efficient with (and) later

if getPlayerAccess(cid) < 3 then -- makes sure the player is not a monster/GM

if getPlayerStorageValue(cid, 3002) ~= 1 or getGlobalStorageValue(3000) ~= 1 then

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

arenaOver(cid)

elseif getPlayerStorageValue(cid, 2998) ~= 1 then

uniqueID = getGlobalStorageValue(9000)

local passArgs = {cid = cid, monster = monster, uniqueID = uniqueID}

addEvent(afterTimeLimit,timeLimit,passArgs)

setPlayerStorageValue(cid,2998,1)

end

end

end

 

elseif doCheckStone(stone10pos) == 1 then -- confused yet?

roomBusy(cid, pos)

elseif doCheckStone(stone9pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone8pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone7pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone6pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone5pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone4pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone3pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone2pos) == 1 then

roomBusy(cid, pos)

elseif doCheckStone(stone1pos) == 1 then

roomBusy(cid, pos)

end

end

function onAddItem(moveitem, tileitem, pos)

 

local function doRemoveStone(stonepos)

repeat

local stone1 = getThingfromPos(stonepos)

if stone1.itemid == 1354 then

doRemoveItem(stone1.uid,1)

end

until stone1.itemid ~= 1354

end

 

local function doCheckBody(moveitem, stonepos, monster)

local stone = getThingfromPos(stonepos)

if (moveitem.itemid == 6324 and stone.itemid == 1354) then

doRemoveStone(stonepos)

doRemoveItem(moveitem.uid,1)

doSendMagicEffect(stonepos,2)

if getGlobalStorageValue(3000) == 1 then

doSendAnimatedText(pos,"Victory!",198)

else

doCheckStoneId(stone1pos)

doCheckStoneId(stone2pos)

doCheckStoneId(stone3pos)

doCheckStoneId(stone4pos)

doCheckStoneId(stone5pos)

doCheckStoneId(stone6pos)

doCheckStoneId(stone7pos)

doCheckStoneId(stone8pos)

doCheckStoneId(stone9pos)

doCheckStoneId(stone10pos)

end

elseif moveitem.itemid == 3058 or moveitem.itemid == 3065 then

--doRemoveItem(moveitem.uid,1) -- server needs time to add the bp and shit (i guess) to the body so we use addEvent to do it 1 second later otherwise - crash

local dPos = getThingPos(moveitem.uid)

local passArgs = {dPos = dPos}

addEvent(removeCorpse,1000,passArgs)

doCreatureAddHealth(monster,-10000)

--local pos = getThingPos(monster)

doCheckStoneId(stone1pos)

doCheckStoneId(stone2pos)

doCheckStoneId(stone3pos)

doCheckStoneId(stone4pos)

doCheckStoneId(stone5pos)

doCheckStoneId(stone6pos)

doCheckStoneId(stone7pos)

doCheckStoneId(stone8pos)

doCheckStoneId(stone9pos)

doCheckStoneId(stone10pos)

setGlobalStorageValue(3000,-1) -- if the arena is in use or not

doSetItemActionId(stone.uid,5999)

end

end

if tileitem.actionid == 3001 then

doCheckBody(moveitem, stone1pos, monster)

elseif tileitem.actionid == 3002 then

doCheckBody(moveitem, stone2pos, monster)

elseif tileitem.actionid == 3003 then

doCheckBody(moveitem, stone3pos, monster)

elseif tileitem.actionid == 3004 then

doCheckBody(moveitem, stone4pos, monster)

elseif tileitem.actionid == 3005 then

doCheckBody(moveitem, stone5pos, monster)

elseif tileitem.actionid == 3006 then

doCheckBody(moveitem, stone6pos, monster)

elseif tileitem.actionid == 3007 then

doCheckBody(moveitem, stone7pos, monster)

elseif tileitem.actionid == 3008 then

doCheckBody(moveitem, stone8pos, monster)

elseif tileitem.actionid == 3009 then

doCheckBody(moveitem, stone9pos, monster)

elseif tileitem.actionid == 3010 then

doCheckBody(moveitem, stone10pos, monster)

end

end

 

function after1second(passArgs) -- this will check the players position after the NPC has checked its storages and decided to tp it or not (i know its inefficient but it works and is flawless)

local Ppos = getPlayerPosition(passArgs.cid)

if (Ppos.x > masterpos.x+22) then -- player was not teleported by the NPC and doesnt need to be in that area.

doTeleportThing(passArgs.cid,{x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doPlayerSendTextMessage(passArgs.cid, 22, "Please talk to the NPC before entering the arena.")

else

local stone = getThingfromPos(stone1pos)

doSetItemActionId(stone.uid,6000)

local pos = getThingPos(stone.uid)

monster = doSummonCreature(monsters[1], {x=pos.x+5, y=pos.y-2, z=pos.z})

doSendAnimatedText(npos,"Fight!",198)

doSendMagicEffect({x=pos.x+5, y=pos.y-2, z=pos.z},10)

end

end

 

function removeCorpse(passArgs)

local dPos = passArgs.dPos

local body = getThingfromPos({x=dPos.x, y=dPos.y, z=dPos.z, stackpos=255}) -- FINALLY

doRemoveItem(body.uid,1)

end

 

function afterTimeLimit(passArgs)

doCreatureAddHealth(passArgs.monster,-10000)

end

Em vermelho coloque a primeira posição que o "Player" será teletransportado.

 

Agora em

data\movements\scripts\Svargrond login.lua

coloque:

 

-- Umby

 

-- masterpos is the location that the player will first be teleported to. It is TWO squares south of the MIDDLE of the FIRST room (see screen shot)

local masterpos = {x=325, y=98, z=7, stackpos=1} -- this must match the position in the NPC script

-- you shouldnt need to edit any more of the script.

 

local stone1pos = {x = masterpos.x-5, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone2pos = {x = masterpos.x-19, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone3pos = {x = masterpos.x-33, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone4pos = {x = masterpos.x-47, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone5pos = {x = masterpos.x-41, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone6pos = {x = masterpos.x-27, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone7pos = {x = masterpos.x-13, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone8pos = {x = masterpos.x-21, y = masterpos.y-28, z = masterpos.z, stackpos = 1}

local stone9pos = {x = masterpos.x-35, y = masterpos.y-28, z = masterpos.z, stackpos = 1}

local stone10pos = {x = masterpos.x-29, y = masterpos.y-41, z = masterpos.z, stackpos = 1}

 

function onStepIn(cid, item, pos)

playerID = getGlobalStorageValue(9000)

local function doCheckStoneId(stonepos)

local stone = getThingfromPos(stonepos)

if stone.itemid ~= 1354 then

doCreateItem(1354,1,stonepos)

end

if stone.actionid == 6000 then

doSetItemActionId(stone.uid,5999)

end

end

 

local function arenaOver(cid) -- if the player leaves, dies, logs out, wins, or is teleported out:

setPlayerStorageValue(cid,5029,-1) -- reset the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,-1) -- player should be in the arena or not

setPlayerStorageValue(cid,2999,-1) -- dont mind this (addEvent)

end

if (item.actionid >= 3001 and item.actionid <= 3010) then

if isPlayer(cid) == TRUE then --make more efficient with (and) later

if getPlayerAccess(cid) < 3 then -- makes sure the player is not a monster/GM

if (getPlayerStorageValue(cid, 3002) ~= 1 or getGlobalStorageValue(3000) ~= 1) then -- player is not supposed to be in arena and must have logged in

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doPlayerSendTextMessage(cid, 22, "You may not log into the arena.")

arenaOver(cid)

elseif (getPlayerStorageValue(cid, 9000) ~= playerID) then -- this means the player probably logged off and waited for someone else to start the arena, then logged in. (its gotta be flawless!)

doTeleportThing(cid, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doPlayerSendTextMessage(cid, 22, "You are not supposed to be in the arena at the moment.")

arenaOver(cid)

end

end

elseif (isCreature(cid) == TRUE and getGlobalStorageValue(3000) ~= 1) then -- if the timer runs out this will remove the creature

doCreatureAddHealth(cid,-10000)

doCheckStoneId(stone1pos)

doCheckStoneId(stone2pos)

doCheckStoneId(stone3pos)

doCheckStoneId(stone4pos)

doCheckStoneId(stone5pos)

doCheckStoneId(stone6pos)

doCheckStoneId(stone7pos)

doCheckStoneId(stone8pos)

doCheckStoneId(stone9pos)

doCheckStoneId(stone10pos)

end

end

end

 

Em vermelho coloque a primeira posição que o "Player" será teletransportado.

Agora pra terminar coloque em movements:

data\movements\movements.xml

!-- Arena Svargrond -->

<movevent event="AddItem" tileitem="1" actionid="3001" script="Svargrond.lua" /> -- room one

<movevent event="AddItem" tileitem="1" actionid="3002" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3003" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3004" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3005" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3006" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3007" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3008" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3009" script="Svargrond.lua" />

<movevent event="AddItem" tileitem="1" actionid="3010" script="Svargrond.lua" /> -- room ten

<movevent event="StepIn" actionid="2002" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2003" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2004" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2005" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2006" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2004" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2007" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2008" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2009" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2010" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2011" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2012" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2013" script="Svargrond.lua" />

<movevent event="StepIn" actionid="2014" script="Svargrond.lua" />

<movevent event="StepIn" actionid="3011" script="Svargrond.lua" />

<movevent event="StepIn" actionid="3001" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3002" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3003" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3004" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3005" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3006" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3007" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3008" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3009" script="Svargrond login.lua" />

<movevent event="StepIn" actionid="3010" script="Svargrond login.lua" />

<!-- Svargrond storages

 

player storages

 

5029 = this tells the arena which monsters to use - which "level" the player has choosen to attempt.

5030 = if this value is 1, and you are supposed to be in the arnea, it will teleport you into the first room. (it is set to 1 by the begining teleport - causing the half second delay)

3002 = this says if the player should be in the arena or not, might be unnecessary.

2998 = this will make sure that addEvent will only happen once

2999 = this will make sure that the player wont end up with 2 monsters in the first room.

9000 = since we cant store names as values we use a random number between 1-15000 to make each player unique to the arena. (this will match the global 9000)

3001 = this tells the NPC which arena difficulties the player has completed. if the player completes level 1, the storage is 2. if the player completes level 3, the storage is 4. also tells the reward room what room to let the player in.

 

global storages

 

3000 = if the arena is in use or not - if this is not == 1, monsters and players will be removed from the arena (excluding GM's)

3001 = this is basically the same as player 5030 it makes the NPC teleport you into the arnea rather the tile (that way no one gets in without the NPC's focus).

9000 = playerID - this tells the script which player is supposed to be in the arena (if someone were to logout in the arena, and wait until someone else started the arena to login, they would be identified by this value)

 

tile action IDs

 

3001 - 3010 = these are the 10 arena rooms. every tile in the room should have the according action ID. (first = 3001, last = 3010) it is what tells the arena to remove the stone when the monster's corpse touches the ground.

2005 - 2014 = these tiles are the teleports behind the stones in each 10 rooms. the last one takes you into the reward room and the first one takes you to the second room.

3011 = the room to the right of the NPC should have this action ID on every walkable tile.

2002 = this is the action ID of the tile UNDER the teleports that allow you to leave the arena by will. (teleports to the south)

2003 = this is the action ID of the tile UNDER the teleport which takes the player from the reward room back into the NPC area when they have finished the arena and taken their reward(this is so that you dont have to set any co ords to match your map).

2004 = this is the action ID of the tile UNDER the teleports which teleport you into the arena (which should be set to 0,0,0 co ords.)

 

-->

 

Agora vamos ao Npc:

data\npc\Arena NPC.xml

 

<npc name="Halvar" script="data/npc/scripts/arena NPC.lua" autowalk="25" floorchange="0" access="3" level="1" maglevel="1">

<health now="150" max="150"/>

<look type="143" head="3" body="77" legs="97" feet="116" addons="1" corpse="2212"/>

<parameters>

</parameters>

</npc>

data/npc/scripts/arena NPC.lua

 

-- Umby

 

local focus = 0

local talk_start = 0

local target = 0

local following = false

local attacking = false

 

-- masterpos is the location that the player will first be teleported to. It is TWO squares south of the MIDDLE of the FIRST room (see screen shot)

local masterpos = {x=325, y=98, z=7, stackpos=1} -- this must match the position in the movement script

local timeLimit = 600 -- this is the time limit in seconds (600 = 10 minutes) this has to match the timeLimit in the Svargrond.lua script aswell.

local arenaCost = {1000, 5000, 10000} -- this is the ammount of gp it costs to start the arena (first, second, third.)

-- you shouldnt need to edit any more of the script.

 

 

local stone1pos = {x = masterpos.x-5, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone2pos = {x = masterpos.x-19, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone3pos = {x = masterpos.x-33, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone4pos = {x = masterpos.x-47, y = masterpos.y-2, z = masterpos.z, stackpos = 1}

local stone5pos = {x = masterpos.x-41, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone6pos = {x = masterpos.x-27, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone7pos = {x = masterpos.x-13, y = masterpos.y-15, z = masterpos.z, stackpos = 1}

local stone8pos = {x = masterpos.x-21, y = masterpos.y-28, z = masterpos.z, stackpos = 1}

local stone9pos = {x = masterpos.x-35, y = masterpos.y-28, z = masterpos.z, stackpos = 1}

local stone10pos = {x = masterpos.x-29, y = masterpos.y-41, z = masterpos.z, stackpos = 1}

local npcpos = {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z}

local playerID = getGlobalStorageValue(9000)

 

function msgcontains(txt, str)

return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end

function onThingMove(creature, thing, oldpos, oldstackpos)

end

function onCreatureAppear(creature)

end

function onCreatureTurn(creature)

end

local function arenaOver(cid) -- if the player leaves, dies, logs out, wins, or is teleported out:

setGlobalStorageValue(3000,-1) -- if the arena is in use or not

setGlobalStorageValue(9000,-1) -- if the arena is in use or not

arenaStatus = 0

arenaStatus1 = 0

setPlayerStorageValue(cid,5029,-1) -- reset the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,-1) -- if the player is still in the arena or not

setPlayerStorageValue(cid,9000,-1) -- reset the player ID

focus = 0

talk_start = 0

end

local function arenaStartFirstLvl(cid)

setGlobalStorageValue(3000,1) -- if the arena is in use or not

setPlayerStorageValue(cid,5029,1) -- set the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,1) -- if the player is still in the arena or not

doTeleportThing(cid, {x=masterpos.x+24,y=masterpos.y-1,z=masterpos.z})

arenaStatus = arenaStatus1

end

local function arenaStartSecondLvl(cid)

setGlobalStorageValue(3000,1) -- if the arena is in use or not

setPlayerStorageValue(cid,5029,2) -- set the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,1) -- if the player is still in the arena or not

doTeleportThing(cid, {x = masterpos.x+24, y = masterpos.y-1, z = masterpos.z})

arenaStatus = arenaStatus1

end

local function arenaStartThirdLvl(cid)

setGlobalStorageValue(3000,1) -- if the arena is in use or not

setPlayerStorageValue(cid,5029,3) -- set the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,1) -- if the player is still in the arena or not

doTeleportThing(cid, {x = masterpos.x+24, y = masterpos.y-1, z = masterpos.z})

arenaStatus = arenaStatus1

end

local function doCheckStone(stonepos)

local stone = getThingfromPos(stonepos)

if stone.itemid ~= 1354 then

doCreateItem(1354,1,stonepos)

end

if stone.actionid == 6000 then

doSetItemActionId(stone.uid,5999)

end

end

function onCreatureDisappear(cid, pos)

if getGlobalStorageValue(3000) ~= 1 then

arenaStatus = 0

arenaStatus1 = 0

setPlayerStorageValue(cid,5029,-1) -- reset the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,-1) -- if the player is still in the arena or not

focus = 0

end

end

function onCreatureSay(cid, type, msg)

 

msg = string.lower(msg)

cname = creatureGetName(cid)

 

if (msgcontains(msg, 'hi') and (focus == 0) and getDistanceToCreature(cid) < 4 and getGlobalStorageValue(3000) ~= 1) then

selfSay('Hello competitor! Do you want to fight in the arena or shall I explain the rules first?')

talk_state = 0

arenaStatus = 0

focus = cid

talk_start = os.clock()

setGlobalStorageValue(3000,-1)

setPlayerStorageValue(cid,5030,-1)

setPlayerStorageValue(cid,5029,-1) -- reset the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,-1) -- if the player is still in the arena or not

setPlayerStorageValue(cid,2998,-1) -- resets so that the time limit will start

setPlayerStorageValue(cid,9000,-1) -- playerID reset so no one has the same one when they start (unless you win the lottery often)

setPlayerStorageValue(cid,2999,-1) -- this makes sure the player isnt tped into the arena twice by being an idiot and stepping on the start teleport more then once in 0.5 seconds (might sound confusing)

elseif (msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 and getGlobalStorageValue(3000) == 1 and getPlayerStorageValue(cid,5029) == 1 and getPlayerStorageValue(cid,3002) > 0) then

setPlayerStorageValue(cid,5029,-1) -- reset the player arena status (hard med easy)

setPlayerStorageValue(cid,3002,-1) -- if the player is still in the arena or not

selfSay('Someone is currently participating in the arena. Please wait your turn.')

elseif (msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 and getGlobalStorageValue(3000) == 1) then

selfSay('Someone is currently participating in the arena. Please wait your turn.')

elseif (focus == cid and getPlayerStorageValue(cid,3002) < 0) then

talk_start = os.clock()

if msgcontains(msg, 'rules') or msgcontains(msg, 'rule') or msgcontains(msg, 'first') then

selfSay('What do you want to know? Something about the three different difficulties, the general rules or the prices? Maybe you also want to know what happens when you die?')

elseif msgcontains(msg, 'die') or msgcontains(msg, 'death') then

selfSay('It would be better not to die! In every pit there is an emergency exit to the south. If you die in a pit... well... your corpse and backpack are gone, so enter at your own risk.')

elseif msgcontains(msg, 'different') or msgcontains(msg, 'difficulties') or msgcontains(msg, 'level') or msgcontains(msg, 'lvl') then

selfSay('There are three difficulties: Greenhorn, Scrapper and Warlord. On each challenge you will be confronted with ten monsters increasing in strength.')

elseif talk_state == 0 and (msgcontains(msg, 'greenhorn') or msgcontains(msg, 'green') or msgcontains(msg, 'horn')) then

selfSay('That is the easiest way in our arena. The fee is 1000 gold. We were setting this up for of our children to challenge some easy monsters and train them for the future.')

elseif talk_state == 0 and (msgcontains(msg, 'scrapper') or msgcontains(msg, 'scrap')) then

selfSay('The most common difficulty for us. The fee is 5000 gold. So if you are experienced in fighting middle class monsters this is your challenge!')

elseif talk_state == 0 and (msgcontains(msg, 'warlord') or msgcontains(msg, 'war') or msgcontains(msg, 'lord')) then

selfSay('Only the strongest among us will take this challenge. The fee is 10000 gold. If you pass that I promise you the respect of all citizens here. You will be a hero!')

elseif msgcontains(msg, 'price') or msgcontains(msg, 'prices') or msgcontains(msg, 'cost') or msgcontains(msg, 'offer') then

selfSay('The fee is 1,000/5,000/10,000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack.')

elseif msgcontains(msg, 'general') then

selfSay('Basically you pay me a fee, and you are sent into an arena with 10 different stages. If you succeed you will be rewarded accordingly.')

elseif talk_state == 1 and (msgcontains(msg, 'greenhorn') or msgcontains(msg, 'green') or msgcontains(msg, 'horn')) then

if getPlayerStorageValue(cid,3001) < 2 then

selfSay('The fee is 1,000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the low difficulty?')

arenaStatus1 = 1

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

elseif getPlayerStorageValue(cid,3001) == 2 or getPlayerStorageValue(cid,3001) == 3 then

selfSay('You have already completed the arena on this difficulty.')

elseif getPlayerStorageValue(cid,3001) == 4 then

selfSay('You may not enter the arena after finishing it.')

end

elseif talk_state == 1 and (msgcontains(msg, 'scrapper') or msgcontains(msg, 'scrap')) then

if getPlayerStorageValue(cid,3001) == -1 then

selfSay('You have to complete the \'Greenhorn\' difficulty before you may attempt the \'Scrapper\' difficulty.')

elseif getPlayerStorageValue(cid,3001) == 3 then

selfSay('You have already completed the arena on this difficulty.')

elseif getPlayerStorageValue(cid,3001) == 4 then

selfSay('You may not enter the arena after finishing it.')

elseif getPlayerStorageValue(cid,3001) == 2 then

selfSay('The fee is 5,000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the medium difficulty?')

arenaStatus1 = 2

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

end

elseif talk_state == 1 and (msgcontains(msg, 'warlord') or msgcontains(msg, 'war') or msgcontains(msg, 'lord')) then

if getPlayerStorageValue(cid,3001) == -1 then

selfSay('You have to complete the \'Greenhorn\' difficulty before you may attempt the \'Warlord\' difficulty.')

elseif getPlayerStorageValue(cid,3001) == 2 then

selfSay('You have to complete the \'Scrapper\' difficulty before you may attempt the \'Warlord\' difficulty.')

elseif getPlayerStorageValue(cid,3001) == 4 then

selfSay('You may not enter the arena after finishing it.')

elseif getPlayerStorageValue(cid,3001) == 3 then

selfSay('The fee is 10,000 gold for one try. Remember that if you die, it is YOUR problem and you won\'t be able to get back to your corpse and your backpack. Do you really want to participate in the arena in the high difficulty?')

arenaStatus1 = 3

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

end

elseif msgcontains(msg, 'fight') or msgcontains(msg, 'start') or msgcontains(msg, 'begin') then

selfSay('So you agree to the rules and want to participate in the challenge? Which difficulty do you choose, Greenhorn, Scrapper or Warlord?')

talk_state = 1

elseif msgcontains(msg, 'no') then

selfSay('Well get back to me when you\'d like to attempt the arena.')

talk_state = 0

elseif msgcontains(msg, 'bye') then

selfSay('See ya next time.')

focus = 0

talk_state = 0

talk_start = 0

elseif talk_state == 1 and msgcontains(msg, 'yes') then

if arenaStatus1 == 1 then --first

if (doPlayerRemoveMoney(focus, arenaCost[1]) == TRUE) then

selfSay('As you wish!')

talk_state = 0

arenaStartFirstLvl(focus)

setGlobalStorageValue(3001,-1) -- this will turn to 1 and make the NPC tp the player in when they step on the entrance TP

local rand = math.random(1, 15000) -- this will make the player unique hopefully

setGlobalStorageValue(9000,rand)

setPlayerStorageValue(cid,9000,(getGlobalStorageVa lue(9000))) -- i cant believe it was so easy and i wasted 3 days

else

selfSay('You dont have enough gold to attempt this difficulty.')

talk_state = 0

end

elseif arenaStatus1 == 2 then --second

if (doPlayerRemoveMoney(focus, arenaCost[2]) == TRUE) then

selfSay('As you wish!')

talk_state = 0

arenaStartSecondLvl(focus)

setGlobalStorageValue(3001,-1) -- this will turn to 1 and make the NPC tp the player in when they step on the entrance TP

local rand = math.random(1, 15000) -- this will make the player unique hopefully

setGlobalStorageValue(9000,rand)

setPlayerStorageValue(cid,9000,(getGlobalStorageVa lue(9000))) -- i cant believe it was so easy and i wasted 3 days

else

selfSay('You dont have enough gold to attempt this difficulty.')

talk_state = 0

end

elseif arenaStatus1 == 3 then --third

if (doPlayerRemoveMoney(focus, arenaCost[3]) == TRUE) then

selfSay('As you wish!')

talk_state = 0

arenaStartThirdLvl(focus)

setGlobalStorageValue(3001,-1) -- this will turn to 1 and make the NPC tp the player in when they step on the entrance TP

local rand = math.random(1, 15000) -- this will make the player unique hopefully

setGlobalStorageValue(9000,rand)

setPlayerStorageValue(cid,9000,(getGlobalStorageVa lue(9000))) -- i cant believe it was so easy and i wasted 3 days

else

selfSay('You dont have enough gold to attempt this difficulty.')

talk_state = 0

end

end

end

end

end

function onThink()

doNpcSetCreatureFocus(focus)

if focus > 0 then

if (getGlobalStorageValue(3001) == 1 and getPlayerStorageValue(focus,5030) == 1) then -- this is going to be what teleports the player into the arena to make sure that no one gets in without the NPC's focus also makes sure the player stepped on the teleport and not someone else

doTeleportThing(focus, {x = masterpos.x, y = masterpos.y, z = masterpos.z})

doSendMagicEffect({x = masterpos.x, y = masterpos.y, z = masterpos.z},10)

setGlobalStorageValue(3001,-1)

setPlayerStorageValue(focus,5030,-1)

 

elseif (getPlayerStorageValue(focus,3002) == 1 and (os.clock() - talk_start) > timeLimit) then -- player ran out of time while in the arena

doTeleportThing(focus, {x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z})

doSendMagicEffect({x = masterpos.x+21, y = masterpos.y-2, z = masterpos.z},10)

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

doPlayerSendTextMessage(focus, 22, "Time is up! Sorry, you took too long. Thanks and Good luck next time!")

arenaOver(focus)

elseif (getGlobalStorageValue(3000) ~= 1 and arenaStatus ~= nil and arenaStatus > 0) then -- this is a backup and will make sure to set the focus to 0 after the player completes the arena.

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

arenaOver(focus)

elseif (getGlobalStorageValue(3000) == 1 and getPlayerByName(getPlayerName(focus)) == 0) then -- player must have logged out while in the arena

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

setGlobalStorageValue(3000,-1) -- if the arena is in use or not

arenaStatus = 0

arenaStatus1 = 0

focus = 0

elseif (arenaStatus > 0 and getPlayerStorageValue(focus, 3002) == -1) then -- this is a backup

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

arenaOver(focus)

elseif (getGlobalStorageValue(3000) == 1 and (((npcpos.x-getPlayerPosition(focus).x) > 85) or ((npcpos.x-getPlayerPosition(focus).x) < -30) or ((npcpos.y-getPlayerPosition(focus).y) > 50) or ((npcpos.y-getPlayerPosition(focus).y) < -13) or (getPlayerPosition(focus).z ~= npcpos.z))) then -- player must have been teleported out ( will not remove the monster if u tp the player out so dont)

doCheckStone(stone1pos)

doCheckStone(stone2pos)

doCheckStone(stone3pos)

doCheckStone(stone4pos)

doCheckStone(stone5pos)

doCheckStone(stone6pos)

doCheckStone(stone7pos)

doCheckStone(stone8pos)

doCheckStone(stone9pos)

doCheckStone(stone10pos)

end

end

end

 

-Monstros Arena-

-Todos em um (Monstros, Mapa, Scripts)-

 

Depois de colar a arena no seu mapa, você terá que editar "masterpos".

Masterpos é a primeiro lugar que o "Player" será teletransportado.

 

certifique-se de adicionar em seu map editor:

MapEditorFolder\creatures.xml

 

<creature looktype="127" name="Arena NPC" type="npc"/>

Testado em Evolutions, porém pode pegar em outras versões.

 

Créditos:-Arthur1408 (Tutum)

-Umby

 

Obrigado, e me sinto muito honrrado de poder trazer esse conteudo para o OtNet e sempre tentarei ajudar porquê na maioria do meu dia sempre pego Tutoriais aqui.

Compartilhar este post


Link para o post
Pedroddcunha    3
Pedroddcunha

Isto está mais para um download do que tutorial

 

Em todo caso, obrigado pela contribuição

 

 

- Aprovado -

Compartilhar este post


Link para o post
Legends665    0
Legends665

Woooooooooooow

 

Vlwww kra

Eu sonhava com isso

aUShUSAHuas

 

Bom trabalhoo

=D

 

 

Flww

~Legends

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

No ot que eu trabalho pretendo fazer diferente, pois é muita action se fosse fazer do tipo... A não ser que meu team-lider coloque a função 'onMonsterDeath', dai se resolve, mas se ele não colocar vou fazer diferente mesmo :)

Compartilhar este post


Link para o post
arthur1408    0
arthur1408

Obrigado ;D

Compartilhar este post


Link para o post
arthur1408    0
arthur1408

Realmente o Script é muito dificil e longo, porisso coloquei para fazerem o download dos monstros, actions e o mapa.

Compartilhar este post


Link para o post
Dark Chronos    0
Dark Chronos

adorei o script e sem pensar 2 vezes botei no meu ot.

so tenho 1 pergunta,quando vc termina a arena

como que fica o sistema de premiação ?

Pois assim qualquer um pode fazer a mais facil e abrir a porta da mais dificil

 

eu finalizei com 1 player do meu otserver e so não sei como consiliar cada dificuldade da arena com seu bau e premio...

Compartilhar este post


Link para o post
shadowdark1    0
shadowdark1

kra gostei mais como q eu faço pra colokar no meu mapa pois quando eu vou colokar ele da um erro e corta metado do meu mapa q eu uso no meu ot

qria saber se n da pra colokar essa arena numa localização +/- x: 1000 y: 1000??

Compartilhar este post


Link para o post
rafaelmarcocio    0
rafaelmarcocio

nossa vvllwww

vo bota no meu otserv

e se funciona eu vo doa uns Ot$ pra vc

pois vc merece ... deve te demorado muito

 

PARABENS !!!!

Compartilhar este post


Link para o post
Felipevm    0
Felipevm

caramba eu naum sei comu c fez issu mas tah bem loku...

vo testa pra ve c deu certu ok?

Compartilhar este post


Link para o post
shadowdark1    0
shadowdark1

olha eu dinovo XD

eu qria saber se alguem pod pegar esse mapa e manda pro z:-8??

pq a localização q essa arena ta ele ta bem no meio da minha cidade e eu n sei como q faiz pra eu poder importar esse mapa fazendo q ele passe para o floor -8

sou meio noob em mapper

se alguem puder ajudar da um tok ai mandando um email pra min ou até deixando a resposta nesse topico

vlw ae pela atenção

Compartilhar este post


Link para o post
HeberPcL    3
HeberPcL

muito bom, irei testar.

parabens.

 

=p

Compartilhar este post


Link para o post
kennyzoia    0
kennyzoia

Mtu bom ae, mas tpw, soh fiko faltando os premio e um negocio, msm fazendo a arena eu n consigo abri a porta, e qndo eu paso nakele sqm sobressalente, aparece um erro ake no exe do ot

Compartilhar este post


Link para o post
Ilios    0
Ilios

Cara

MTO BOM MESMO mtoo bem feito mas...

deu um erro ake >.<

tipo eu fiz tudo direitim etc... ai na hora q eu abro o ot qdo vai abri aparece um exatamente isso e fica repetino:

 

Lua Script error: [Npc interface]

data/npc/script/arena Npc.lua:onThink.

 

luaSetNpcFocus<>. Creature not found.

 

ai c eu entro nu ot e falo com o npc ele so responde Hi o resto ele n fala nd tipo c eu fala fight kalke cxoisa nd acontece

sabe o q qui eh?

c pude ajuda vai c mto baum vlw ae =] (Y)

Compartilhar este post


Link para o post
crock-linux    0
crock-linux

ola amigos

 

 

ta dando erro nesta função

 

onStepIn

 

alguem sabe oque pode ser, uso evol. 0.7.8

Compartilhar este post


Link para o post
crock-linux    0
crock-linux

alguem sabe como corrigir estes erros

 

Lua Script Error: [MoveEvents Interface]

in a timer event called from:

data/movements/scripts/Svargrond.lua:onStepIn

luaDoPlayerAddHealth(). Player not found

Lua Script Error: [MoveEvents Interface]

in a timer event called from:

data/movements/scripts/Svargrond.lua:onStepIn

attempt to index a nil value

Lua Script Error: [Npc interface]

data/npc/scripts/arena NPC.lua:onThink

luaGetPlayerStorageValue(). Player not found

Lua Script Error: [Npc interface]

data/npc/scripts/arena NPC.lua:onThink

luaSetPlayerStorageValue(). Player not found

Lua Script Error: [Npc interface]

data/npc/scripts/arena NPC.lua:onThink

luaSetPlayerStorageValue(). Player not found

Lua Script Error: [Npc interface]

data/npc/scripts/arena NPC.lua:onThink

luaSetPlayerStorageValue(). Player not found

:: server save.. [done]

Compartilhar este post


Link para o post
luscassss    0
luscassss

nossa cara, esse negocio aí deve ter demorado muito tempo para o tumtum fazer heim?

muito rox, tá quase igual à do tibia global, mas a do tibia global tem de fazer uma quest antes, estou certo?

Compartilhar este post


Link para o post
Chapado    0
Chapado

Muito Bom msm =]

exelente tutorial...Meus parabens

movido concerteza

Compartilhar este post


Link para o post
Chapado    0
Chapado

Muito Bom msm =]

exelente tutorial...Meus parabens

movido concerteza

(Y)

Compartilhar este post


Link para o post
Luim Ravor    0
Luim Ravor

era pra ter fotos

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×