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

Action Advanced Monster Arena TFS 1.2

It's Wave({}) not wave({}).
Yes, it is. Wave.

5Cv5qn6.png

5Cv5qn6.png
 
Hey, players are stuck there, I dont know reproduce, but 4 players was stucked.
The monsters dont appears
 
Man, Im dumb, I know I don't put the files, now I fixed it but still got this:

gENveNW.png
You did not install the lib in the post. Its the first link in the post, you would see it if you read it.
 
data\creaturescripts\lib\Lib (lua) there is lib code from first post :
Code:
http://pastebin.com/R4s96bwZ


in \data\creaturescripts\lib\creaturescripts (lua) I put:
Code:
local waves = {
    [1] = Wave({
            ["Rat"] = 1,
        }),
    [2] = Wave({
            ["Cave Rat"] = 2,
        }),
}
local config = {
    levers = {1945, 1946},
}
function rewardPlayers(player, arena)
    player:addItem(2160, 100)
    player:setStorageValue(2101, 1)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations, you finished the arena " .. arena.name .. ".")
    return true
end
function checkPlayer(player)
    if player:getStorageValue(2101) <= 0 then
        return true
    else
        return false
    end
end
function spawnBroadcast(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Spawning wave " .. waveid .. ".")
    return true
end
function waveClear(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You cleared wave " .. waveid .. ".")
    if player:getMaxHealth()-player:getHealth() > 0 then
        player:addHealth(player:getMaxHealth()-player:getHealth())
    end
    return true
end
function jokerDeath(player, waveid, arena)
    player:say("MUAHAHAHA", TALKTYPE_MONSTER_SAY, false, player, arena.position)
end
function arenaStart(player, arena)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have entered the arena " .. arena.name .. ".")
end
function arenaThink(arena, interval)
    local players = arena:getPlayersInside()
    if #players == 0 then
        arena:reset()
    else
        for i, player in ipairs(players) do
            player:addHealth(-50)
        end
    end
end
local arena = Arena("Hell", Position(146, 432, 7), Position(149, 432, 7), 1, Position(146, 427, 7))
arena:addPlayerPosition(Position(150, 438, 7))
arena:addWaves(unpack(waves))
arena:setJokerCreature("Bug")
arena:setDelayWaves(5000)
arena:setRewardCallback(rewardPlayers)
arena:setCheckCallback(checkPlayer)
arena:setSpawnCallback(spawnBroadcast)
arena:setWaveclearCallback(waveClear)
arena:setJokerdeathCallback(jokerDeath)
arena:setStartCallback(arenaStart)
arena:setThinkCallback(arenaThink)
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item:getId() == config.levers[1] then
        local ret = arena:useLever(player)
        if ret then
            item:transform(config.levers[2])
        else
            item:getPosition():sendMagicEffect(CONST_ME_POFF)
        end
    elseif item:getId() == config.levers[2] then
        item:transform(config.levers[1])
    end
    return true
end

In \data\creaturescripts\scripts I have jokerdeath (lua) and arenaevent (lua)

I added lines in \data\creaturescripts\creaturescripts (xml)

Code:
   <event type="death" name="ArenaEvent" script="arenaevent.lua"/>
   <event type="death" name="JokerDeath" script="jokerdeath.lua"/>
 
Hello guys! i've had a problem when installing this.

So i've added the lib data/creaturescripts/lib/arena.lua
i've added Arenaevent.lua and Jokerdeath.lua to creaturescripts/script aswell as XML file.

i've added the code in second post to action/scripts/arenaone.lua
aswell as actions.xml
Code:
    <action uniqueid="????" script="monsterarena/arenaone.lua" />

here is action script ( just changed the positions really for now )
Code:
local waves = {
    [1] = Wave({
            ["Rat"] = 1,
        }),
    [2] = Wave({
            ["Cave Rat"] = 2,
        }),
}
local config = {
    levers = {1945, 1946},
}
function rewardPlayers(player, arena)
    player:addItem(2160, 100)
    player:setStorageValue(2101, 1)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations, you finished the arena " .. arena.name .. ".")
    return true
end
function checkPlayer(player)
    if player:getStorageValue(2101) <= 0 then
        return true
    else
        return false
    end
end
function spawnBroadcast(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Spawning wave " .. waveid .. ".")
    return true
end
function waveClear(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You cleared wave " .. waveid .. ".")
    if player:getMaxHealth()-player:getHealth() > 0 then
        player:addHealth(player:getMaxHealth()-player:getHealth())
    end
    return true
end
function jokerDeath(player, waveid, arena)
    player:say("MUAHAHAHA", TALKTYPE_MONSTER_SAY, false, player, arena.position)
end
function arenaStart(player, arena)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have entered the arena " .. arena.name .. ".")
end
function arenaThink(arena, interval)
    local players = arena:getPlayersInside()
    if #players == 0 then
        arena:reset()
    else
        for i, player in ipairs(players) do
            player:addHealth(-50)
        end
    end
end
local arena = Arena("whatever", Position(898, 958, 7), Position(898, 964, 6), 3, Position(898, 965, 6))
arena:addPlayerPosition(Position(150, 438, 7))
arena:addWaves(unpack(waves))
arena:setJokerCreature("Bug")
arena:setDelayWaves(5000)
arena:setRewardCallback(rewardPlayers)
arena:setCheckCallback(checkPlayer)
arena:setSpawnCallback(spawnBroadcast)
arena:setWaveclearCallback(waveClear)
arena:setJokerdeathCallback(jokerDeath)
arena:setStartCallback(arenaStart)
arena:setThinkCallback(arenaThink)
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item:getId() == config.levers[1] then
        local ret = arena:useLever(player)
        if ret then
            item:transform(config.levers[2])
        else
            item:getPosition():sendMagicEffect(CONST_ME_POFF)
        end
    elseif item:getId() == config.levers[2] then
        item:transform(config.levers[1])
    end
    return true
end

and here is error i get in console when i start up the server
Code:
Lua Script Error: [Test Interface]
data/actions/scripts/monsterarena/arenaone.lua
data/actions/scripts/monsterarena/arenaone.lua:2: attempt to call global 'Wave' (a nil value)
stack traceback:
        [C]: in function 'Wave'
        data/actions/scripts/monsterarena/arenaone.lua:2: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/monsterarena/arenaone.lua

Would be awesome if you could help a lost soul out @Mkalo :)
 
Hello guys! i've had a problem when installing this.

So i've added the lib data/creaturescripts/lib/arena.lua
i've added Arenaevent.lua and Jokerdeath.lua to creaturescripts/script aswell as XML file.

i've added the code in second post to action/scripts/arenaone.lua
aswell as actions.xml
Code:
    <action uniqueid="????" script="monsterarena/arenaone.lua" />

here is action script ( just changed the positions really for now )
Code:
local waves = {
    [1] = Wave({
            ["Rat"] = 1,
        }),
    [2] = Wave({
            ["Cave Rat"] = 2,
        }),
}
local config = {
    levers = {1945, 1946},
}
function rewardPlayers(player, arena)
    player:addItem(2160, 100)
    player:setStorageValue(2101, 1)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations, you finished the arena " .. arena.name .. ".")
    return true
end
function checkPlayer(player)
    if player:getStorageValue(2101) <= 0 then
        return true
    else
        return false
    end
end
function spawnBroadcast(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Spawning wave " .. waveid .. ".")
    return true
end
function waveClear(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You cleared wave " .. waveid .. ".")
    if player:getMaxHealth()-player:getHealth() > 0 then
        player:addHealth(player:getMaxHealth()-player:getHealth())
    end
    return true
end
function jokerDeath(player, waveid, arena)
    player:say("MUAHAHAHA", TALKTYPE_MONSTER_SAY, false, player, arena.position)
end
function arenaStart(player, arena)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have entered the arena " .. arena.name .. ".")
end
function arenaThink(arena, interval)
    local players = arena:getPlayersInside()
    if #players == 0 then
        arena:reset()
    else
        for i, player in ipairs(players) do
            player:addHealth(-50)
        end
    end
end
local arena = Arena("whatever", Position(898, 958, 7), Position(898, 964, 6), 3, Position(898, 965, 6))
arena:addPlayerPosition(Position(150, 438, 7))
arena:addWaves(unpack(waves))
arena:setJokerCreature("Bug")
arena:setDelayWaves(5000)
arena:setRewardCallback(rewardPlayers)
arena:setCheckCallback(checkPlayer)
arena:setSpawnCallback(spawnBroadcast)
arena:setWaveclearCallback(waveClear)
arena:setJokerdeathCallback(jokerDeath)
arena:setStartCallback(arenaStart)
arena:setThinkCallback(arenaThink)
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item:getId() == config.levers[1] then
        local ret = arena:useLever(player)
        if ret then
            item:transform(config.levers[2])
        else
            item:getPosition():sendMagicEffect(CONST_ME_POFF)
        end
    elseif item:getId() == config.levers[2] then
        item:transform(config.levers[1])
    end
    return true
end

and here is error i get in console when i start up the server
Code:
Lua Script Error: [Test Interface]
data/actions/scripts/monsterarena/arenaone.lua
data/actions/scripts/monsterarena/arenaone.lua:2: attempt to call global 'Wave' (a nil value)
stack traceback:
        [C]: in function 'Wave'
        data/actions/scripts/monsterarena/arenaone.lua:2: in main chunk
[Warning - Event::checkScript] Can not load script: scripts/monsterarena/arenaone.lua

Would be awesome if you could help a lost soul out @Mkalo :)
The lib should be installed here:
forgottenserver/data/lib/core at master · otland/forgottenserver · GitHub

And you should add a dofile here:
forgottenserver/core.lua at master · otland/forgottenserver · GitHub
 
Hey, players are stuck there, I dont know reproduce, but 4 players was stucked.
The monsters dont appears
Yes, its true issue, if player run in the area the monsters dont appers

BUMP

Yes, its true issue, if player run in the area the monsters dont appers
BUMP
 
Last edited by a moderator:
Im testing it in TFS 1.1 and it works for now, sometimes the arena doesn't get finished, i explain, you just kill the enemies and you should be kicked and rewarded no? that doesn't happens sometimes, but it works fine!

Thx man Works it too in 1.1
 
Buddy could you help me? i have tfs 1.3 and i get an error i cant solve
Code:
Lua Script Error: [Test Interface]
data/actions/scripts/levers/arenalever1.lua
data/actions/scripts/levers/arenalever1.lua:24: attempt to index global 'player' (a nil value)
stack traceback:
        [C]: in function '__index'
        data/actions/scripts/levers/arenalever1.lua:24: in main chunk
        [C]: in function 'reload'
        data/talkactions/scripts/reload.lua:73: in function <data/talkactions/scripts/reload.lua:56>
[Warning - Event::checkScript] Can not load script: scripts/levers/arenalever1.lua
data/actions/scripts/levers/arenalever1.lua:29: 'end' expected (to close 'if' at line 24) near 'function'

and this is the action i have:

Lua:
local waves = {
    [1] = Wave({
            ["demon skeleton"] = 3,
        }),
    [2] = Wave({
            ["Dragon"] = 1,
        }),
    [3] = Wave({
            ["Dragon lord"] = 1,
        }),
}
local config = {
    levers = {10029, 10030},
}
function rewardPlayers(player, arena)
    player:addItem(2160, 1)
    player:setStorageValue(2000, 1)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Felicidades! Terminaste la arena " .. arena.name .. ".")
    return true
end

if player:getStorageValue(2000) <= 0 then
return true
else
return false
end
function checkPlayer(player)
    if player:getStorageValue(2000) <= 0 then
        return true
    else
        return true
    end
end

function spawnBroadcast(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Sumoneada ola " .. waveid .. ".")
    return true
end
function waveClear(player, waveid, arena)
    player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Has pasado la ola " .. waveid .. ".")
    if player:getMaxHealth()-player:getHealth() > 0 then
        player:addHealth(player:getMaxHealth()-player:getHealth())
    end
    if player:getMaxMana()-player:getMana() > 0 then
        player:addMana(player:getMaxMana()-player:getMana())
    end
    return true
end
function jokerDeath(player, waveid, arena)
    player:say("MUAHAHAHA", TALKTYPE_MONSTER_SAY, false, player, arena.position)
end
function arenaStart(player, arena)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Has entrado a la arena " .. arena.name .. ".")
end
function arenaThink(arena, interval)
    local players = arena:getPlayersInside()
    if #players == 0 then
        arena:reset()
    else
        for i, player in ipairs(players) do
            player:addHealth(-50)
        end
    end
end
local arena = Arena("Hell", Position(60, 188, 6), Position(1000, 1000, 7), 1, Position(60, 192, 6))
arena:addPlayerPosition(Position(60, 192, 6), 50)
arena:addWaves(unpack(waves))
--arena:setJokerCreature("bug")
arena:setDelayWaves(5000)
arena:setDelayEnd(5000)
arena:setRewardCallback(rewardPlayers)
arena:setCheckCallback(checkPlayer)
arena:setSpawnCallback(spawnBroadcast)
arena:setWaveclearCallback(waveClear)
--arena:setJokerdeathCallback(jokerDeath)
--Arena:setCheckCallback(player)
arena:setStartCallback(arenaStart)
arena:setThinkCallback(arenaThink)
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item:getId() == config.levers[1] then
        local ret = arena:useLever(player)
        if ret then
            item:transform(config.levers[2])
        else
            item:getPosition():sendMagicEffect(CONST_ME_POFF)
        end
    elseif item:getId() == config.levers[2] then
        item:transform(config.levers[1])
    end
    return true
end

;(
 
Back
Top