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

TFS 1.X+ Create monsters on positions.

OTcreator

Active Member
Joined
Feb 14, 2022
Messages
425
Solutions
1
Reaction score
44
Hello.
I used this scripts with monster table.
How add createmonsters on positions?

If bosted creaures = 2 (etc. troll and smuler)
create monster - troll on pos1 , smugler on pos2.

If bosted creatures = 1 (etc. troll)
create monster - torll on pos1.

If bosted creatures = 3 (etc. troll, smugler, dragon)
create monster - troll on pos 1, smugler on pos 2, dragon on pos 3.

Maxiumum bosted = 3 monsters, minimum 1.

Lua:
boostedMonsters = {}
boostedMonstersExperienceMultiplier = 2 -- 1 = default, 2 = 200% (aka, double experience)
boostedMonstersLootChanceMultiplier = 2 -- 1 = default, 2 = 200% (aka, double chance of loot.) (1.36% -> 2.72%)(88% -> 100%)

local boostedMonstersAmount = 2 -- how many arrays from boostedMonstersList will be chosen
-- NOTE: Ensure that this amount does not exceed the amount of arrays in boostedMonstersList.. or your server will crash.

local boostedMonstersList = {
    {"rat", "cave rat"}, -- setup like this, so an entire monster race can become boosted
    {"troll"},
    {"cyclops"}, -- don't put the same monster twice.. or bad things might happen. xP
    {"demon"},
    {"fire elemental"}
}

local function generateBoostedMonstersText()
    local text = ""
    for i = 1, #boostedMonsters do
        if text ~= "" then
            if i == #boostedMonsters then
                text = text .. " and "
            else
                text = text .. ", "
            end
        end
        text = text .. boostedMonsters[i]
    end
    text = "Today's boosted monsters are " .. text .. "."
    return text
end

local function chooseBoostedMonsters()
    local boostedMonstersCount = 0
    while boostedMonstersCount < boostedMonstersAmount do
        local randomMonster = math.random(#boostedMonstersList)
        if not table.contains(boostedMonsters, boostedMonstersList[randomMonster][1]:lower()) then
            for i = 1, #boostedMonstersList[randomMonster] do
                table.insert(boostedMonsters, boostedMonstersList[randomMonster][i]:lower())
            end
            boostedMonstersCount = boostedMonstersCount + 1
        end
    end
    print(generateBoostedMonstersText())
end

local global = GlobalEvent("globalEvent_boostedMonsters")

function global.onStartup()
    addEvent(chooseBoostedMonsters, 0)
    return true
end

global:register()


local loginEvent = CreatureEvent("onLogin_boostedMonsters")
loginEvent:type("login")

function loginEvent.onLogin(player)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, generateBoostedMonstersText())
    return true
end

loginEvent:register()
 
Game.createMonster(monster, position, false, false, 0, 0)
These function is I know , only what to do to create mobs on the given positions, the ones selected by the bost of the day.
And randomly depending on how many monsters are bost.
 
These function is I know , only what to do to create mobs on the given positions, the ones selected by the bost of the day.
And randomly depending on how many monsters are bost.
Untested...
Lua:
boostedMonsters = {}
boostedMonstersExperienceMultiplier = 2
boostedMonstersLootChanceMultiplier = 2

local boostedMonstersAmount = 2

local boostedMonstersList = {
    {"rat", "cave rat"},
    {"troll"},
    {"cyclops"},
    {"demon"},
    {"fire elemental"}
}

local boostedMonstersPositions = {
    Position(500, 500, 7),
    Position(501, 500, 7),
    Position(502, 500, 7),
}

local boostedMonstersText = "Today's boosted monsters are "

local globalEvent_boostedMonsters = GlobalEvent("globalEvent_boostedMonsters")
function globalEvent_boostedMonsters.onStartup()
    local boostedMonstersCount = 0
    while boostedMonstersCount < boostedMonstersAmount do
        local randomMonster = math.random(#boostedMonstersList)
        if not table.contains(boostedMonsters, boostedMonstersList[randomMonster][1]:lower()) then
            for i = 1, #boostedMonstersList[randomMonster] do
                local monsterName = boostedMonstersList[randomMonster][i]:lower()
                table.insert(boostedMonsters, monsterName))
                           
                local boostedMonsterIndex = boostedMonstersCount + 1
                if i == 1 and boostedMonstersPositions[boostedMonsterIndex] then
                    Game.createMonster(monsterName, boostedMonstersPositions[boostedMonsterIndex], false, true)
                end
             
                if boostedMonstersCount > 0 then
                    boostedMonstersText = boostedMonstersText .. (boostedMonstersCount == boostedMonstersAmount and " and " or ", ")
                end
                boostedMonstersText = boostedMonstersText .. boostedMonsters[i]
            end
            boostedMonstersCount = boostedMonstersCount + 1
        end
    end
 
    boostedMonstersText = boostedMonstersText .. "."
    return true
end
globalEvent_boostedMonsters:register()

local loginEvent = CreatureEvent("onLogin_boostedMonsters")
function loginEvent.onLogin(player)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, boostedMonstersText)
    return true
end
loginEvent:type("login")
loginEvent:register()
 
Last edited:
Untested...
Lua:
boostedMonsters = {}
boostedMonstersExperienceMultiplier = 2
boostedMonstersLootChanceMultiplier = 2

local boostedMonstersAmount = 2

local boostedMonstersList = {
    {"rat", "cave rat"},
    {"troll"},
    {"cyclops"},
    {"demon"},
    {"fire elemental"}
}

local boostedMonstersPositions = {
    Position(500, 500, 7),
    Position(501, 500, 7),
    Position(502, 500, 7),
}

local boostedMonstersText = "Today's boosted monsters are "

local globalEvent_boostedMonsters = GlobalEvent("globalEvent_boostedMonsters")
function globalEvent_boostedMonsters.onStartup()
    local boostedMonstersCount = 0
    while boostedMonstersCount < boostedMonstersAmount do
        local randomMonster = math.random(#boostedMonstersList)
        if not table.contains(boostedMonsters, boostedMonstersList[randomMonster][1]:lower()) then
            for i = 1, #boostedMonstersList[randomMonster] do
                local monsterName = boostedMonstersList[randomMonster][i]:lower()
                table.insert(boostedMonsters, monsterName))
                          
                local boostedMonsterIndex = boostedMonstersCount + 1
                if i == 1 and boostedMonstersPositions[boostedMonsterIndex] then
                    Game.createMonster(monsterName, boostedMonstersPositions[boostedMonsterIndex], false, true)
                end
            
                if boostedMonstersCount > 0 then
                    boostedMonstersText = boostedMonstersText .. (boostedMonstersCount == boostedMonstersAmount and " and " or ", ")
                end
                boostedMonstersText = boostedMonstersText .. boostedMonsters[i]
            end
            boostedMonstersCount = boostedMonstersCount + 1
        end
    end
 
    boostedMonstersText = boostedMonstersText .. "."
    return true
end
globalEvent_boostedMonsters:register()

local loginEvent = CreatureEvent("onLogin_boostedMonsters")
function loginEvent.onLogin(player)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, boostedMonstersText)
    return true
end
loginEvent:type("login")
loginEvent:register()

Ok, but when i dont use start up, but interval need remove all monsters and create new.
 
Ok, but when i dont use start up, but interval need remove all monsters and create new.
Firstly, before you demand additional things...
Can you confirm that the previous script works?

Also, I would recommend to implement a restart/server save every 24 hours or so, many strange things can happens over time in memory, so nice to have a clean slate...
Then you wont need to implement any intervals for this script.
 
bro start learning instead of perma demands, you have nickname OTCreator but all what are you doing its just copy paste someone work, idk warn me for ottopic but eyes bleeding

someone spend time for your demands and in 90% result is
"ok that work but can u fix this, can u change this, i want this" holly fuck, grow up
 
Back
Top