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

npc sell items for points

carlinhous1996

New Member
Joined
Apr 14, 2022
Messages
54
Reaction score
3
someone had some npc script that sells item for points ?
i have a npc on my server that does tasks for guilds and it delivers a certain amount of points that gives no sql, I would like to sell some items using (hi,trade)
someone help me please
script guildlib

Lua:
--[[ Queries:
        CREATE TABLE `guild_storages` (
        `guild_id` int NOT NULL default 0,
        `key` int NOT NULL default 0,
        `value` varchar(255) NOT NULL default 0
        );
        
        CREATE TRIGGER `guilds_update`
            AFTER UPDATE OF rank_id ON players
        BEGIN
            UPDATE players
               SET guild_id = IFNULL( (
                       SELECT guild_id
                         FROM guild_ranks
                        WHERE id = rank_id
                   )
                   , 0 );
        END;
        
        ALTER TABLE guilds ADD points INT DEFAULT 0 NOT NULL
        ALTER TABLE guilds ADD balance BIGINT default 0 NOT NULL
        ALTER TABLE players ADD guild_id INT DEFAULT 0 NOT NULL
        UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE id = rank_id), 0)
]]

-- Advanced Guild System maintenance functions

function installAdvancedGuildSystem()
    local func = db.query or db.executeQuery
    local query = db.getResult("SELECT balance FROM guilds")
    if query:getID() == -1 then
        func("ALTER TABLE guilds ADD balance INT default 0 NOT NULL")
    else
        query:free()
    end
    local query2 = db.getResult("SELECT points FROM guilds;")
    if query:getID() == -1 then
        func("ALTER TABLE guilds ADD points INT DEFAULT 0 NOT NULL")
    else
        query2:free()
    end
    if func("ALTER TABLE players ADD guild_id INT DEFAULT 0 NOT NULL") then
        if func("UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE `id` = rank_id), 0)") then
            if func("CREATE TABLE `guild_storages` (`guild_id` INT NOT NULL DEFAULT 0, `key` INT NOT NULL DEFAULT 0, `value` VARCHAR(255) NOT NULL DEFAULT 0);") then
                if func("CREATE TRIGGER [`rank_id update`] AFTER UPDATE OF rank_id ON players BEGIN UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE `id` = rank_id), 0); END;") then
                    setGlobalStorageValue(50050, 1)
                    print("Advanced Guild System installation successful.")
                    return true
                end
            end
        end
    end
    print("Advanced Guild System could NOT be installed.")
    return false
end

function updateGuildColumn()
    print("Updating guild column in players table...")
    local func = db.query or db.executeQuery
    local str = "failure."
    if func("UPDATE players SET guild_id = IFNULL((SELECT guild_id FROM guild_ranks WHERE `id` = rank_id),0)") then
        str = "success!"
    end
    print("Update was a "..str)
end

isAGSInstalled = getGlobalStorageValue(50050) == 1

-- Guild Points functions

function getGuildPoints(guild_id)
    local ret = db.getResult("SELECT points FROM guilds WHERE id = " .. guild_id)
    if ret:getID() == -1 then
        return -1
    end
    return ret:getDataInt("points")
end

function doGuildAddPoints(guild_id, value)
    local func = db.executeQuery or db.query
    return func("UPDATE guilds SET points = ("..value.." + (SELECT points FROM guilds WHERE id = "..guild_id..")) WHERE id = "..guild_id)
end

-- General guild functions

function hasGuild(cid)
    return getPlayerGuildId(cid) > 0
end

function isInGuild(cid, guildId)
    return getPlayerGuildId(cid) == guildId
end

function getGuildName(guild_id)
    local query = db.getResult("SELECT name FROM guilds WHERE id = "..guild_id)
    local ret = query:getID() == -1 and false or query:getDataString("name")
    query:free()
    return ret
end

function getGuildMembersGUID(guild_id)
    if db.getResult("SELECT ownerid FROM guilds WHERE id = "..guild_id):getID() > -1 then
        local members = {}
        local query = db.getResult("SELECT `id` FROM players WHERE guild_id = "..guild_id)
        if query:getID() == -1 then
            return false
        end
        repeat
            local member = query:getDataInt("id")
            table.insert(members, member)
        until not query:next()
        query:free()
        return members
    end
    return false
end

function getPlayerGuildIdByGUID(guid)
    local query = db.getResult("SELECT guild_id FROM players WHERE id = "..guid)
    return query:getDataInt("guild_id")
end

function getOnlineGuildMembersByRank(guildId, rank, selectLowerRanks)
    if not rank then
        rank = 3
        selectLowerRanks = true
    end
    local list = {}
    for _, pid in pairs(getPlayersOnline()) do
        if getPlayerGuildId(pid) == guildId then
            local playerRank = getPlayerGuildLevel(pid)
            if playerRank == rank or (selectLowerRanks and playerRank <= rank) then
                table.insert(list, pid)
            end
        end
    end
    return list
end

function doFunctionOnGuildMembers(guildId, func)
    local players = getPlayersOnline()
    local count = 0
    for _, pid in pairs(players) do
        if getPlayerGuildId(pid) == guildId then
            func(pid)
            count = count + 1
        end
    end
    return count
end

-- Guild Storage functions

function setGuildStorageValue(guild_id, key, value)
    local func = db.executeQuery or db.query
    local query = db.getResult("SELECT `value` FROM guild_storages WHERE `key` = "..key.." AND guild_id = "..guild_id)
    if query:getID() == -1 then
        return func("INSERT INTO guild_storages (guild_id, `key`, `value`) VALUES ("..guild_id..", "..key..", "..value..")")
    end
    return func("UPDATE guild_storages SET `value` = "..value.." WHERE `key` = "..key.." AND guild_id = "..guild_id)
end

function getGuildStorageValue(guild_id, key)
    local ret = db.getResult("SELECT `value` FROM guild_storages WHERE guild_id = "..guild_id.." AND `key` = "..key)
    if ret:getID() == -1 then
        return -1
    end
    return ret:getDataInt("value") or ret:getDataString("value")
end

-- Guild Balance functions

function getGuildBalance(guild_id)
    local balance = db.getResult("SELECT balance FROM guilds WHERE `id` = "..guild_id)
    local ret = balance:getID() >= 0 and balance:getDataInt("balance") or false
    balance:free()
    return ret
end

function setGuildBalance(guild_id, value)
    local func = db.executeQuery or db.query
    func("UPDATE guilds SET balance = "..value.." WHERE `id` = "..guild_id)
    return true
end

function doGuildAddBalance(guild_id, value)
    local func = db.executeQuery or db.query
    func("UPDATE guilds SET balance = (SELECT balance FROM guilds WHERE `id` = "..guild_id..") + "..value.." WHERE `id` = "..guild_id)
    return true
end

script tasks

Lua:
-- Storages
GT = {
    kills = 51,
    totalKills = 52,
    task = 53,
    time = 54,


-- Customization starts here

-- Monsters

    monsters = {
        {names = {"dragon hunter task", "dragon lord iii", "dragon iii", "wyrm", "ghastly dragon", "undead dragon", "dragon essence"}, totalKills = 5, money = 150000, points = 5, minPoints = 10},
        {names = {"largatos hunter task", "draken warmaster", "draken elite", "lizard high guard", "master serpent spawn", "lizard zaogun", "draken spellweaver", "lizard chosen", "lizard legionnaire", "lizard dragon priest"}, totalKills = 500, money = 150000, points = 5, minPoints = 10},
        {names = {"lord of demon"}, totalKills = 6, money = 5000, points = 3, minPoints = 0},
        {names = {"dragon lord"}, totalKills = 5, money = 15000, points = 5, minPoints = 0},
        {names = {"crypt warrior"}, totalKills = 5, money = 5000, points = 3, minPoints = 0},
        {names = {"draken elite"}, totalKills = 4, money = 5000, points = 3, minPoints = 0},
        {names = {"apofis"}, totalKills = 6, money = 5000, points = 3, minPoints = 0},
        {names = {"Ethershreck"}, totalKills = 4, money = 5000, points = 3, minPoints = 0},
        {names = {"master hellfire fighter"}, totalKills = 5, money = 5000, points = 3, minPoints = 0},
        {names = {"infernal demon"}, totalKills = 3, money = 5000, points = 3, minPoints = 0},
    },

-- Other variables

    waitTime = 1440, -- Tempo de espera para começar outra task após entregar uma
}

-- Customization ends here

function doResetGuildTask(guild_id, resetTime)
    for _, stgkey in ipairs({GT.kills, GT.totalKills, GT.task, GT.time}) do
        setGuildStorageValue(guild_id, stgkey, 0)
    end
    if resetTime then
        setGuildStorageValue(guild_id, GT.time, os.time() + GT.waitTime * 60)
    end
    return true
end

function doStartGuildTask(guild_id, task)
    local taskInfo = GT.monsters[task]
    setGuildStorageValue(guild_id, GT.totalKills, taskInfo.totalKills)
    setGuildStorageValue(guild_id, GT.task, task)
    setGuildStorageValue(guild_id, GT.kills, 0)
    return true
end

function getGuildTaskWaitTime(guild)
    local nextTime = getGuildStorageValue(guild, GT.time)
    if nextTime > os.time() then
        return nextTime - os.time()
    else
        return 0
    end
end

function doCompleteGuildTask(guild_id)
    local taskInfo = GT.monsters[getGuildStorageValue(guild_id, GT.task)]
    doGuildAddPoints(guild_id, taskInfo.points)
    doGuildAddBalance(guild_id, taskInfo.money)
    doResetGuildTask(guild_id, true)
    return true
end
 
Back
Top