• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

"real tibia svargrond arena" by Gesior

Gesior.pl

Mega Noob&LOL 2012
Senator
Joined
Sep 18, 2007
Messages
2,967
Solutions
99
Reaction score
3,383
Location
Poland
GitHub
gesior
Many hosters ask me for this script/request in threads.
It work like RL tibia arena, not bugged like other scripts:
- max. 1 player in one room, max. 1 monster (full hp!) in one room
- second player can wait one room before (10 players in 10 rooms in same time!)
- kick after XX seconds in one room
- real tibia rewards from quest, create goblet when walk on tile (with name of player)
- 3 levels of arena, each with 10 monsters, all in 10 rooms
About script:
- use Unique IDs 42300 - 42400
- use PlayerStorage IDs 42300 - 42400
- use Action IDs 42300 - 42400
- use GlobalStorage IDS 42300 - 42500
-------------------------------------------------
1. Download file:
arena scripts and map.rar
Unpack in OTS main folder, it shouldn't overwrite any files.

2. In data/actions/actions.xml under:
PHP:
<actions>
Add:
PHP:
	<action actionid="42366" script="quests/arenadoors.lua"/>
	<action actionid="42376" script="quests/arenadoors.lua"/>
	<action actionid="42386" script="quests/arenadoors.lua"/>
	<action actionid="42357" script="quests/arenadoors.lua"/>
	<action actionid="42361" script="quests/arenareward.lua"/>
	<action actionid="42362" script="quests/arenareward.lua"/>
	<action actionid="42363" script="quests/arenareward.lua"/>
	<action actionid="42364" script="quests/arenareward.lua"/>
	<action actionid="42365" script="quests/arenareward.lua"/>
	<action actionid="42371" script="quests/arenareward.lua"/>
	<action actionid="42372" script="quests/arenareward.lua"/>
	<action actionid="42373" script="quests/arenareward.lua"/>
	<action actionid="42374" script="quests/arenareward.lua"/>
	<action actionid="42375" script="quests/arenareward.lua"/>
	<action actionid="42381" script="quests/arenareward.lua"/>
	<action actionid="42382" script="quests/arenareward.lua"/>
	<action actionid="42383" script="quests/arenareward.lua"/>
	<action actionid="42384" script="quests/arenareward.lua"/>
	<action actionid="42385" script="quests/arenareward.lua"/>

3. In data/movements/movements.xml under:
PHP:
<movements>
Add:
PHP:
	<movevent event="StepIn" actionid="42360" script="arenagoblet.lua"/>
	<movevent event="StepIn" actionid="42370" script="arenagoblet.lua"/>
	<movevent event="StepIn" actionid="42380" script="arenagoblet.lua"/>
	<movevent event="StepOut" actionid="42360" script="arenagoblet.lua"/>
	<movevent event="StepOut" actionid="42370" script="arenagoblet.lua"/>
	<movevent event="StepOut" actionid="42380" script="arenagoblet.lua"/>
	<movevent event="StepIn" actionid="42300" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42301" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42302" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42303" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42304" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42305" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42306" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42307" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42308" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42309" script="arenaroom.lua"/>
	<movevent event="StepIn" actionid="42310" script="didarenalevel.lua"/>
	<movevent event="StepIn" actionid="42321" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42322" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42323" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42324" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42325" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42326" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42327" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42328" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42329" script="leavearena.lua"/>
	<movevent event="StepIn" actionid="42330" script="leavearena.lua"/>

4. In data/global.lua at end add:
PHP:
-- arena script
InitArenaScript = 0
arena_room_max_time = 240
arenaKickPosition = {x=481, y=1088, z=6} -- position where kick from arena when you leave/you did arena level
arena_monsters = {}
arena_monsters[42300] = 'frostfur' -- first monster from 1 arena
arena_monsters[42301] = 'bloodpaw'
arena_monsters[42302] = 'bovinus'
arena_monsters[42303] = 'achad'
arena_monsters[42304] = 'colerian the barbarian'
arena_monsters[42305] = 'the hairy one'
arena_monsters[42306] = 'axeitus headbanger'
arena_monsters[42307] = 'rocky'
arena_monsters[42308] = 'cursed gladiator'
arena_monsters[42309] = 'orcus the cruel'
arena_monsters[42310] = 'avalanche' -- first monster from 2 arena
arena_monsters[42311] = 'kreebosh the exile'
arena_monsters[42312] = 'the dark dancer'
arena_monsters[42313] = 'the hag'
arena_monsters[42314] = 'slim'
arena_monsters[42315] = 'grimgor guteater'
arena_monsters[42316] = 'drasilla'
arena_monsters[42317] = 'spirit of earth'
arena_monsters[42318] = 'spirit of water'
arena_monsters[42319] = 'spirit of fire'
arena_monsters[42320] = 'webster' -- first monster from 3 arena
arena_monsters[42321] = 'darakan the executioner'
arena_monsters[42322] = 'norgle glacierbeard'
arena_monsters[42323] = 'the pit lord'
arena_monsters[42324] = 'svoren the mad'
arena_monsters[42325] = 'the masked marauder'
arena_monsters[42326] = 'gnorre chyllson'
arena_monsters[42327] = "fallen mooh'tah master ghar"
arena_monsters[42328] = 'deathbringer'
arena_monsters[42329] = 'the obliverator'

function getArenaMonsterIdByName(name)
	name = string.lower(tostring(name))
	for i = 42300, 42329 do
		if tostring(arena_monsters[i]) == name then
			return i
		end
	end
	return 0
end

5. In data/creaturescripts/creaturescripts.xml under:
PHP:
	<event type="death" name="PlayerDeath" script="playerdeath.lua"/>
Add:
PHP:
	<event type="kill" name="PlayerKill" script="kill.lua"/>

6. In data/creaturescripts/scripts/login.lua under:
PHP:
function onLogin(cid)
Add:
PHP:
	registerCreatureEvent(cid, "PlayerKill")
	if (InitArenaScript ~= 0) then
	InitArenaScript = 1
	-- make arena rooms free
		for i = 42300, 42309 do
			setGlobalStorageValue(i, 0)
			setGlobalStorageValue(i+100, 0)
		end
	end
	-- if he did not make full arena 1 he must start from zero
	if getPlayerStorageValue(cid, 42309) < 1 then
		for i = 42300, 42309 do
			setPlayerStorageValue(cid, i, 0)
		end
	end
	-- if he did not make full arena 2 he must start from zero
	if getPlayerStorageValue(cid, 42319) < 1 then
		for i = 42310, 42319 do
			setPlayerStorageValue(cid, i, 0)
		end
	end
	-- if he did not make full arena 3 he must start from zero
	if getPlayerStorageValue(cid, 42329) < 1 then
		for i = 42320, 42329 do
			setPlayerStorageValue(cid, i, 0)
		end
	end
	if getPlayerStorageValue(cid, 42355) == -1 then
		setPlayerStorageValue(cid, 42355, 0) -- did not arena level
	end
	setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
	setPlayerStorageValue(cid, 42352, 0) -- is not in arena

7. Open arena map ( data/world/Arena_map.otbm ), copy and paste somewhere on you map. Remember to change in data/global.lua:
PHP:
arenaKickPosition = {x=481, y=1088, z=6}
to your position.
-----------------------------------
Oppss.. messages in scripts are polish, maybe someone translate and post pack with english version? :)
 
Last edited:
I'm wondering why do you add to everything you release a by Gesior note?
I don't want to be rude, but do you have some problems with your ego? You want kids to masturbate on your nickname? Or you want to use popularity of hell-vulnerable (no, no! People are sure its great, because it uses POTS- HELL FAKE. POTS == SECURE when you know how to use it!) with illegal template account maker (that doesn't even properly work in 100%) for all wannabe kids- so they put to their OT everything by Gesior because he is so great? I don't get it, simple.

Account Maker by Gesior
SMS Shop by Gesior
GesiorWar Server
Advanced Train by Gesior
TFS modified (WTF? You didn't do a shit, just copied other work here) by Gesior
Svagrond by Gesior
**** by Gesior
**** by Gesior

Can't you be more CREATIVE?
 
Last edited by a moderator:
@Elf, Yeah! You is HOT! ! ! ! )))))

@Gesior, anyway, thanks. Very good work, thanks for release ;]
 
@Elf
you got point there. and i agree with you on the most you said :p but skip the insults^^

OnT;
thanks for the release:D
 
[06/10/2008 08:21:43] Lua Script Error: [MoveEvents Interface] [06/10/2008 08:21:43] data/movements/scripts/arenaroom.lua:-OnStepIn
[06/10/2008 08:21:43] luaGetThingPos(). Thing not found [06/10/2008 08:21:43] Lua Script Error: [MoveEvents Interface] [06/10/2008 08:21:43] data/movements/scripts/arenaroom.lua:-OnStepIn
[06/10/2008 08:21:43] luaDoSummonCreature(). Can not summon monster: frostfur

error in teleports dont summon monsters

obs: I HAVE ALL MONSTERS IN OT
 
Fixed NPC (data/npc/scripts/arena.lua)
PHP:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

function onCreatureAppear(cid)				npcHandler:onCreatureAppear(cid)			end
function onCreatureDisappear(cid) 			npcHandler:onCreatureDisappear(cid)			end
function onCreatureSay(cid, type, msg) 		npcHandler:onCreatureSay(cid, type, msg)	end
function onThink() 							npcHandler:onThink()						end

function enterArena(cid, message, keywords, parameters, node)
	if(not npcHandler:isFocused(cid)) then
		return false
	end
	local cost = 0
	local levelname = ''
	if getPlayerStorageValue(cid, 42355) < 1 then
		cost = 1000
		levelname = 'greenshore'
		levelneeded = 30
	elseif getPlayerStorageValue(cid, 42355) == 1 then
		cost = 5000
		levelname = 'scrapper'
		levelneeded = 50
	elseif getPlayerStorageValue(cid, 42355) == 2 then
		cost = 10000
		levelname = 'warlord'
		levelneeded = 80
	end
	if string.lower(keywords[1]) == 'yes' and parameters.prepare ~= 1 then
		if(getPlayerLevel(cid) >= levelneeded) then
			if(getPlayerMoney(cid) >= cost) then
				npcHandler:say('Now you can go to test.', cid)
				setPlayerStorageValue(cid, 42351, 1)
			else
				npcHandler:say('You don\'t have ' .. cost .. ' gp! Come back when you will be ready!', cid)
		    end
		else
			npcHandler:say('You don\'t have ' .. levelneeded .. ' level! Come back when you will be ready!', cid)
		end
		npcHandler:resetNpc()
	elseif string.lower(keywords[1]) == 'no' then
		npcHandler:say('Come back later then!', cid)
		npcHandler:resetNpc()
	else
		if getPlayerStorageValue(cid, 42355) < 3 then
			npcHandler:say('You test will be ' .. levelname .. ' level. If you want enter you must pay ' .. cost .. ' gp and have ' .. levelneeded .. ' level. Wanna try?', cid)
		else
			npcHandler:say('You did all arena levels.',cid)
		end
	end
	return true
end

npcHandler:setMessage(MESSAGE_GREET, 'Hello |PLAYERNAME|! Do you want to make arena?')

local yesNode = KeywordNode:new({'yes'}, enterArena, {})
local noNode = KeywordNode:new({'no'}, enterArena, {})

local node1 = keywordHandler:addKeyword({'arena'}, enterArena, {prepare=1})
	node1:addChildKeywordNode(yesNode)
	node1:addChildKeywordNode(noNode)
	
local node1 = keywordHandler:addKeyword({'fight'}, enterArena, {prepare=1})
	node1:addChildKeywordNode(yesNode)
	node1:addChildKeywordNode(noNode)
local node1 = keywordHandler:addKeyword({'yes'}, enterArena, {prepare=1})
	node1:addChildKeywordNode(yesNode)
	node1:addChildKeywordNode(noNode)
npcHandler:addModule(FocusModule:new())
 
Last edited:
Thank you. However after i completed the first level i couldn't open the chests... but i could take the throphy o_O

And to all of you that has missing monsters, all you need to do is add them >.<
//Massen
 
Well, this is far off "real tibia" one, first of we can start with that the TPs are pretty not like real
 
Well, this is far off "real tibia" one, first of we can start with that the TPs are pretty not like real
WTF? Stop complaing, why don't you try to make a working arena script and release it...
 
Back
Top