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

Boosted_Monster.lua

Azerty

Active Member
Joined
Apr 15, 2022
Messages
316
Solutions
4
Reaction score
32
Good night! I'm trying to get this script to send a value (position the monster occupies in the list) to the database, but I'm not succeeding. Can anyone help me?

Something that uses this line
Lua:
db.query("UPDATE `server_config` SET `value` = " .. boostedMonsters .. " WHERE `config` = 'boost_monster_name';")
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"},
    {"troll"},
    {"cyclops"},
    {"demon"},
    {"grim reaper"},
    {"medusa"},
    {"serpent spawn"},
    {"hydra"},
    {"tarantula"},
    {"giant spider"},
    {"kollos"},
    {"manta ray"},
    {"waspoid"},
    {"crawler"},
    {"feral sphinx"},
    {"manticore"},
    {"hellhound"},
    {"lamassu"},
    {"sphinx"},
    {"guzzlemaw"},
    {"silencer"},
    {"frazzlemaw"},
    {"retching horror"},
    {"choking fear"},
    {"demon outcast"},
    {"plaguesmith"},
    {"dark torturer"},
    {"blightwalker"},
    {"lost soul"},
    {"juggernaut"},
    {"energy elemental"},
    {"crazed winter vanguard"},
    {"crazed winter rearguard"},
    {"thanatursus"},
    {"arachnophobica"},
    {"crazed summer rearguard"},
    {"crazed summer vanguard"},
    {"minotaur hunter"},
    {"worm priestess"},
    {"mooh'tah warrior"},
    {"glooth blob"},
    {"hellspawn"},
    {"destroyer"},
    {"glooth anemone"},
    {"glooth golem"},
    {"rot elemental"},
    {"devourer"},
    {"rustheap golem"},
    {"undead dragon"},
    {"behemoth"},
    {"wyrm"},
    {"hellfire fighter"},
    {"lich"},
    {"vampire"},
    {"hero"},
    {"gargoyle"},
    {"vicious squire"},
    {"renegade knight"},
    {"vile grandmaster"},
    {"undead gladiador"},
    {"blood priest"},
    {"fury"},
    {"werebadger"},
    {"wereboar"},
    {"phantasm"},
    {"infernalist"},
    {"frost dragon"},
    {"defiler"},
    {"elder wyrm"},
    {"sparkion"},
    {"instable sparkion"},
    {"instable breach brood"},
    {"drillworm"},
    {"son of verminor"},
    {"green djinn"},
    {"necromancer"},
    {"crystal spider"},
    {"bog raider"},
    {"warlock"},
    {"orewalker"},
    {"flimsy lost soul"},
    {"ghastly dragon"},
    {"mutated bat"},
    {"mutated tiger"},
    {"pirate buccaneer"},
    {"lizard chosen"},
    {"rage squid"},
    {"cyclops smith"},
    {"cyclops drone"},
    {"dark faun"},
    {"twisted pooka"},
    {"enfeebled silencer"},
    {"ogre brute"},
    {"ogre shaman"},
    {"ogre savage"},
    {"clomp"},
    {"priestess of the wild sun"},
    {"gryphon"},
    {"lizard high guard"},
    {"lizard zaogun"},
    {"lizard legionnaire"},
    {"draken warmaster"},
    {"draken spellweaver"},
    {"draken abomination"},
    {"insectoid worker"},
    {"swarmer"},
    {"spitter"},
    {"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())
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, generateBoostedMonstersText())
    return true
end

loginEvent:register()
 
Good night! I'm trying to get this script to send a value (position the monster occupies in the list) to the database, but I'm not succeeding. Can anyone help me?

You can test and use:
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"},
    {"troll"},
    {"cyclops"},
    {"demon"},
    {"grim reaper"},
    {"medusa"},
    {"serpent spawn"},
    {"hydra"},
    {"tarantula"},
    {"giant spider"},
    {"kollos"},
    {"manta ray"},
    {"waspoid"},
    {"crawler"},
    {"feral sphinx"},
    {"manticore"},
    {"hellhound"},
    {"lamassu"},
    {"sphinx"},
    {"guzzlemaw"},
    {"silencer"},
    {"frazzlemaw"},
    {"retching horror"},
    {"choking fear"},
    {"demon outcast"},
    {"plaguesmith"},
    {"dark torturer"},
    {"blightwalker"},
    {"lost soul"},
    {"juggernaut"},
    {"energy elemental"},
    {"crazed winter vanguard"},
    {"crazed winter rearguard"},
    {"thanatursus"},
    {"arachnophobica"},
    {"crazed summer rearguard"},
    {"crazed summer vanguard"},
    {"minotaur hunter"},
    {"worm priestess"},
    {"mooh'tah warrior"},
    {"glooth blob"},
    {"hellspawn"},
    {"destroyer"},
    {"glooth anemone"},
    {"glooth golem"},
    {"rot elemental"},
    {"devourer"},
    {"rustheap golem"},
    {"undead dragon"},
    {"behemoth"},
    {"wyrm"},
    {"hellfire fighter"},
    {"lich"},
    {"vampire"},
    {"hero"},
    {"gargoyle"},
    {"vicious squire"},
    {"renegade knight"},
    {"vile grandmaster"},
    {"undead gladiador"},
    {"blood priest"},
    {"fury"},
    {"werebadger"},
    {"wereboar"},
    {"phantasm"},
    {"infernalist"},
    {"frost dragon"},
    {"defiler"},
    {"elder wyrm"},
    {"sparkion"},
    {"instable sparkion"},
    {"instable breach brood"},
    {"drillworm"},
    {"son of verminor"},
    {"green djinn"},
    {"necromancer"},
    {"crystal spider"},
    {"bog raider"},
    {"warlock"},
    {"orewalker"},
    {"flimsy lost soul"},
    {"ghastly dragon"},
    {"mutated bat"},
    {"mutated tiger"},
    {"pirate buccaneer"},
    {"lizard chosen"},
    {"rage squid"},
    {"cyclops smith"},
    {"cyclops drone"},
    {"dark faun"},
    {"twisted pooka"},
    {"enfeebled silencer"},
    {"ogre brute"},
    {"ogre shaman"},
    {"ogre savage"},
    {"clomp"},
    {"priestess of the wild sun"},
    {"gryphon"},
    {"lizard high guard"},
    {"lizard zaogun"},
    {"lizard legionnaire"},
    {"draken warmaster"},
    {"draken spellweaver"},
    {"draken abomination"},
    {"insectoid worker"},
    {"swarmer"},
    {"spitter"},
    {"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].name
    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
                local monsterName = boostedMonstersList[randomMonster][i]:lower()
                local position = #boostedMonsters + 1 -- Calculate the position
                table.insert(boostedMonsters, {name = monsterName, position = position})
                -- Insert the new monster into the 'boosted_monsters' table
                db.query("INSERT INTO `boosted_monsters` (`name`, `position`) VALUES ('" .. monsterName .. "', " .. position .. ");")
            end
            boostedMonstersCount = boostedMonstersCount + 1
        end
    end

    print(generateBoostedMonstersText())
end

local global = GlobalEvent("globalEvent_boostedMonsters")

function global.onStartup()
    -- Clear the 'boosted_monsters' table on server startup
    db.query("TRUNCATE TABLE `boosted_monsters`")
    addEvent(chooseBoostedMonsters, 0)
    return true
end

global:register()

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

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

loginEvent:register()



Use this on your database:
SQL:
CREATE TABLE boosted_monsters (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    position INT NOT NULL
);

Also remember when you make a support request, try to provide as much information as possible about what database you are using so that we can help appropriately. If it helped you, remember to mark it as a solution so that others can also get it if they look for it.


my Test:

1695678835571.png
 
Back
Top