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

Svargrond Arena Quest Bugg msg First kill monster - HELP

demonioz

New Member
Joined
Jun 17, 2013
Messages
1
Reaction score
0
Got a msg when i try to step into the teleport in the area to get to the ( first room ). and the msg is "First kill monster". even having killed the monster.
so I would like to have some or our help

arena.lua

HTML:
local config = {
oldpos = {
{x=947,y=961,z=7}, --pos em que o player 1 tem que estar para a alavanca funcionar
{x=949,y=961,z=7} --pos em que o player 2 tem que estar para a alavanca funcionar
},
newpos = {
{x=944,y=966,z=7}, --pos para aonde o player 1 vai ser teleportado (dentro da arena)
{x=952,y=966,z=7} --pos para aonde o player 2 vai ser teleportado (dentro da arena)
}
}

function onUse(cid, item, pos)
if item.itemid == 1946 then
doTransformItem(item.uid, 1945)
else
doTransformItem(item.uid, 1946)
end
local p = {}
for i,v in ipairs(config.oldpos) do
local pid = getTopCreature(v).uid
if pid == 0 or not isPlayer(pid) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
return true
end
table.insert(p, pid)
end
for i,v in ipairs(p) do
doSendMagicEffect(config.oldpos[i], CONST_ME_POFF)
doTeleportThing(v, config.newpos[i], false)
end
return true
end




data/lib
arena.lua

HTML:
-- arena script by 5mok3
InitArenaScript = 0
arena_room_max_time = 240 -- time in seconds for one arena room
arenaKickPosition = {x=32222, y=31080, 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

arenakill.lua


HTML:
local t = {
	
newPos = {x=33062, y=31029, z=7},
	
msg = "You have won! As new champion take the ancient armor as reward before you leave.",
	
area = {
		
fromX = 33054, toX = 33073,
		
fromY = 31026, toY = 32356,
		
z = 3
	}
}
local 
spheres = {
	
['energy overlord'] = 8568,
	
['fire overlord'] = 8569,
	
['ice overlord'] = 8570,
	
['earth overlord'] = 8578
}



function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers, showSummons)
	
local creaturesList = {}
	
for x = -radiusx, radiusx do
		
for y = -radiusy, radiusy do
			
if not (x == 0 and y == 0) then
				
creature = getTopCreature({x = position.x+x, y = position.y+y, 
z = position.z, stackpos = 253})
				
if (creature.type == 1 and showPlayers == TRUE) or (creature.type == 2 and showMonsters == TRUE and (showSummons == FALSE or (showSummons == TRUE and getCreatureMaster(creature.uid) == (creature.uid)))) then
				
table.insert(creaturesList, creature.uid)
				
end
			
end
		
end
	
end

	
local creature = getTopCreature(position)
	
if(creature.type == 1 and showPlayers == TRUE) or (creature.type == 2 and showMonsters == TRUE and (showSummons == FALSE or (showSummons == TRUE and getCreatureMaster(creature.uid) == (creature.uid)))) then
              
if not(table.find(creaturesList, creature.uid)) then
			
table.insert(creaturesList, creature.uid)
		
end
	
end
	
return creaturesList
end
function onKill(cid, target, damage, flags)
	
if isPlayer(target) or not isInArray({1, 3}, flags) or getCreatureMaster(target) then
		
return true
	
end

	
local name = getCreatureName(target):lower()
	
if name == 'tirecz' then
		
local players = getCreaturesInRange({x=33063, y=31035,z=3}, 10, 9, FALSE, TRUE)
		
for i = 1, #players do
			
doTeleportThing(players[i], t.newPos)
			
doCreatureSay(players[i], t.msg, TALKTYPE_ORANGE_1, false, players[i], getCreaturePosition(players[i]))
	
end
		
return true
	
end

	
if spheres[name] then
		
setGlobalStorageValue(spheres[name], -1)
		
return true
	
end

	
local now = tasks[name]
	if (now) then
		
if isInArray({-1, now.amount}, getPlayerStorageValue(cid, now.storage)) or (not isInArray({14003, 14004, 14005}, now.storage) and getPlayerStorageValue(cid, 14500) ~= now.storage) then
			
return true
		
end

		
local newValue = getPlayerStorageValue(cid, now.storage) + 1
		
setPlayerStorageValue(cid, now.storage, newValue)
	
end

	
local room = getArenaMonsterIdByName(getCreatureName(target))
	if room > 0 then
		
setPlayerStorageValue(cid, room, 1)
		
doPlayerSendTextMessage(cid,MESSAGE_EVENT_DEFAULT,'You can enter next room!')
	
end
	
return true

end



arenaroom.lua

function onStepIn(cid, item, position, fromPosition)
	if InitArenaScript == 0 then
		InitArenaScript = 1
		-- make arena rooms free
		for i = 0,9 do
			setGlobalStorageValue(42300+i, 0)
			setGlobalStorageValue(42400+i, 0)
		end
		checkArenaRooms({})
	end
	local arena_room = item.actionid
	local player_arena = getPlayerStorageValue(cid, 42355)
	if getPlayerStorageValue(cid, arena_room+getPlayerStorageValue(cid, 42355)*10-1) == 1 or arena_room+getPlayerStorageValue(cid, 42355)*10-1 == 42299 then
		if getGlobalStorageValue(cid, arena_room) == 0 then
			local monster_uid = type(getStorage(arena_room+100)) == 'string' and 0 or getStorage(arena_room+100)

			if monster_uid > 0 then
				if isCreature(monster_uid) == TRUE then
					doRemoveCreature(monster_uid)
				end
			end
			local spawn_pos = getThingPos(arena_room)
			local monster = doCreateMonster(arena_monsters[arena_room+getPlayerStorageValue(cid, 42355)*10], {x=spawn_pos.x-1,y=spawn_pos.y-1,z=spawn_pos.z})
			setGlobalStorageValue(arena_room+100, monster)
			doTeleportThing(cid, spawn_pos, TRUE)
			setGlobalStorageValue(arena_room, cid)
			setGlobalStorageValue(arena_room-1, 0)
			setPlayerStorageValue(cid, 42350, os.time()+arena_room_max_time)
		else
			doTeleportThing(cid, fromPosition, TRUE)
			doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(getGlobalStorageValue(cid, arena_room))..' is now in next room. Wait a moment and try again.')
		end
	else
		doTeleportThing(cid, fromPosition, TRUE)
		doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE,'First kill monster!')
	end
	if arena_room == 42300 then
		setPlayerStorageValue(cid, 42351, 0)
		setPlayerStorageValue(cid, 42352, 1)
	end
	return TRUE
end

function checkArenaRooms(param)
	addEvent(checkArenaRooms, 1000, {})
	for i = 42300, 42309 do
		local player = getGlobalStorageValue(i)
		if isPlayer(player) == TRUE then
			local player_storage = getPlayerStorageValue(player, 42350)
			if player_storage <= os.time() then
				doTeleportThing(player, arenaKickPosition, TRUE)
				setPlayerStorageValue(player, 42350, 0)
				setGlobalStorageValue(i, 0)
				doPlayerSendTextMessage(player,MESSAGE_STATUS_CONSOLE_ORANGE,'You have been kicked from arena! You have only ' .. arena_room_max_time .. ' seconds for one room.')
			elseif player_storage - 10 <= os.time() then
				doPlayerSendTextMessage(player,MESSAGE_EVENT_DEFAULT,'You have ' .. player_storage - os.time() .. ' seconds to go to the next room!')
			end
		else
			setGlobalStorageValue(i, 0)
		end
	end
end

creaturescript.xml


HTML:
<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
	<event type="preparedeath" name="Arena" event="script" value="arena.lua"/>
	<event type="login" name="PlayerLogin" event="script" value="login.lua"/>
	<event type="joinchannel" name="GuildMotd" event="script" value="guildmotd.lua"/>
	<event type="receivemail" name="Mail" event="script" value="mail.lua"/>
	<event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>
	<event type="advance" name="AdvanceSave" event="script" value="advancesave.lua"/>
	<event type="logout" name="demonOakLogout" event="script" value="demonOakLogout.lua"/>
	<event type="death" name="demonOakDeath" event="script" value="demonOakDeath.lua"/>
	<event type="death" name="PythiusTheRotten" event="script" value="PythiusTheRotten.lua"/>
        <event type="login" name="FirstItems" event="script" value="firstitems.lua"/>
        <event type="kill" name="PlayerKill" event="script" value="arenakill.lua"/>


	<!-- Inquisition Full Quest -->
	<event type="kill" name="inquisitionPortals" script="Inquisition.lua"/>

	<event type="think" name="Idle" event="script" value="idle.lua"/>
	<event type="think" name="SkullCheck" event="script" value="skullcheck.lua"/>

</creaturescripts>
 
Back
Top