Page 1 of 3 123 LastLast
Results 1 to 10 of 30

Thread: Shiny Moon

  1. #1
    Normal User Raphael's Avatar
    Join Date
    Apr 2012
    Location
    São Paulo, Brazil
    Posts
    297
    Mentioned
    1 Post(s)
    Tagged
    3 Thread(s)
    Quoted
    5 Post(s)
    Reputation
    78
    Rep Power
    5

    Shiny Moon

    Well, after yesterday's announcement of our Focus Group, today I'm back to announce you something else we, as a community, have been wanting for quite a while now.
    Well, I'm done talking, so I'll just let you see it with your own eyes:

    [LUA]...[/LUA]
    --[[
    * Raphael's Library v1.2.0 beta 2
    *
    * Changelog
    *
    * - 'Namespaced' most functions as to eliminate conflicts between libraries.
    * - Completely rewrote num and math.format.
    * - Updated formattime and client.maround.
    * - Added client.itemid, client.foreachtile and client.screencount.
    *
    --]]


    LIBS = LIBS or {}
    LIBS.RAPHAEL = '1.2.0'

    findcreature = getcreature
    tilewalkable = tileiswalkable
    table.unpack = table.unpack or unpack


    -- __ __ __
    -- / / / /__ / /___ ___ __________
    -- / /_/ / _ \/ / __ \/ _ \/ ___/ ___/
    -- / __ / __/ / /_/ / __/ / (__ )
    -- /_/ /_/\___/_/ .___/\___/_/ /____/
    -- /_/


    --[[
    * Groups thousands digits for readability.
    *
    * Receives a number and returns a equivalent string with its thousands digits
    * separated by the chosen decimal mark. Ex: 12,345,678
    *
    * @since 0.1.0
    * @updated 1.2.0
    *
    * @param {number} n - The number to be formatted
    * @param {string} [mark] - The decimal mark to be used; defaults to ','
    *
    * @returns {string} - Formatted number
    --]]
    function num(n, mark)
    mark = (mark or ',')
    n = string.format('%.f', n) -- This allow for bigger numbers
    return n:reverse():gsub('(...)', '%1' .. mark, math.ceil(#n / 3) - 1):reverse()
    end


    --[[
    * Formats a time string for readability.
    *
    * Receives the number of seconds representing the time and parses it into a
    * string according to the pattern passed. Ex: 01:23:45
    *
    * @since 0.1.0
    * @updated 1.2.0
    *
    * @param {number} secs - The number of seconds the time represents
    * @param {string} [pattern] - The pattern it sould be parsed on; defaults to the best
    pattern to display all info
    *
    * @returns {string} - Formatted time string
    --]]
    function formattime(secs, pattern)
    local dt = {
    dd = math.floor(secs / (60 * 60 * 24)), -- Days
    hh = math.floor(secs / (60 * 60)) % 24, -- Hours
    mm = math.floor(secs / 60) % 60, -- Minutes
    ss = secs % 60 -- Seconds
    }

    if not pattern then
    if dt.dd > 0 then
    pattern = 'dd:hh:mm:ss'
    elseif dt.hh > 0 then
    pattern = 'hh:mm:ss'
    else
    pattern = 'mm:ss'
    end
    else
    pattern = pattern:lower()
    end

    return pattern:gsub('%l%l', function(s) return string.format('%02d', dt[s]) end)
    end


    --[[
    * Compares version strings.
    *
    * Receveives two version strings, compares them and return a boolean
    * indicating whether v2 is equal or higher than v1.
    *
    * @since 0.1.0
    *
    * @param {string} v1 - The first version string
    * @param {string} v2 - The second version string
    *
    * @returns {boolean} - Whether v2 is equal or higher than v1
    --]]
    function compversions(v1, v2)
    local v1, v2 = string.explode(tostring(v1), '%.'), string.explode(tostring(v2), '%.')
    for i = 1, math.max(#v1, #v2) do
    v1[i] = tonumber(v1[i]) or 0
    v2[i] = tonumber(v2[i]) or 0
    if v2[i] < v1[i] then
    return false
    elseif v2[i] > v1[i] then
    return true
    end
    end
    return true
    end


    --[[
    * Executes a given string.
    *
    * Executes the code string in protection mode without propagating the errors. Returns any value
    * returned by the executed code and a boolean indicating whether any error was fired.
    *
    * @since 0.2.0
    *
    * @param {string} execstring - The string to be executed
    *
    * @returns {any} - Anything returned by the code ran
    --]]
    function exec(execstring)
    local func = loadstring(execstring)
    local arg = {pcall(func)}
    table.insert(arg, arg[1])
    table.remove(arg, 1)
    return table.unpack(arg)
    end



    local trueValues = {'yes', 'on', 1, true}
    --[[
    * Converts a possible boolean value to its 'yes' or 'no' equivalent.
    *
    * @since 1.0.0
    *
    * @param {any} val - The value to be converted
    *
    * @returns {string} - The equivalent 'yes' or 'no' value
    --]]
    function toyesno(val)
    return (table.find(trueValues, val) and 'yes') or 'no'
    end


    --[[
    * Converts a possible boolean value to its 'on' or 'off' equivalent.
    *
    * @since 1.0.0
    *
    * @param {any} val - The value to be converted
    *
    * @returns {string} - The equivalent 'on' or 'off' value
    --]]
    function toonoff(val)
    return (table.find(trueValues, val) and 'on') or 'off'
    end


    --[[
    * Converts a possible boolean value to its 1 or 0 equivalent.
    *
    * @since 1.1.0
    *
    * @param {any} val - The value to be converted
    *
    * @returns {number} - The equivalent 'on' or 'off' value
    --]]
    function toonezero(val)
    return (table.find(trueValues, val) and 1) or 0
    end


    --[[
    * Converts a possible boolean value to its boolean equivalent.
    *
    * @since 1.0.0
    *
    * @param {any} val - The value to be converted
    *
    * @returns {boolean} - The equivalent boolean value
    --]]
    function tobool(val)
    return table.find(trueValues, val)
    end


    --[[
    * Replaces all '/' with '\\' and prepends 'Settings\\' to the beginning of the setting path.
    *
    * @since 1.0.0
    * @updated 1.1.0
    *
    * @param {string} path - The setting path
    *
    * @returns {string} - The converted path
    --]]
    function getfullpath(path)
    return path:gsub('/', '\\'):begin('Settings\\')
    end


    --[[
    * Simply a helper for setsettings(), which automatically runs the path through getfullpath().
    *
    * @since 1.0.0
    *
    * @param {string} path - The setting path to be set
    * @param {any} val - The value to be set
    --]]
    function set(path, val)
    setsettings(getfullpath(path), val)
    end


    --[[
    * Simply a helper for getsettings(), which automatically runs the path through getfullpath().
    *
    * @since 1.0.0
    *
    * @param {string} path - The setting path to be gotten
    *
    * @returns {any} - The value contained in the setting path
    --]]
    function get(path)
    return getsettings(getfullpath(path))
    end




    -- __ ___ __ __ __ _
    -- / |/ /___ _/ /_/ /_ ___ _ __/ /____ ____ _____(_)___ ____
    -- / /|_/ / __ `/ __/ __ \ / _ \| |/_/ __/ _ \/ __ \/ ___/ / __ \/ __ \
    -- / / / / /_/ / /_/ / / / / __/> -- /_/ /_/\__,_/\__/_/ /_/ \___/_/|_|\__/\___/_/ /_/____/_/\____/_/ /_/
    --


    --[[
    * Formats a number according to a specified pattern.
    *
    * Formats a number according to a specified pattern, in order to keep a specific amount of digits before and after the
    * decimal mark.
    *
    * @since 0.1.0
    * @updated 1.2.0
    *
    * @param {number} self - The number to be formatted
    * @param {string} pattern - The pattern in which the number should be formatted; e.g: '00.00'
    *
    * @returns {string} - The formatted number
    --]]
    function math.format(self, pattern)
    local p = table.each(pattern:explode('%.'), function(v) return #v end)
    local s = tostring(self):explode('%.')
    table.insert(s, 0)

    s[1] = string.format('%0' .. p[1] .. 'd', s[1])
    if p[2] then
    s[2] = '.' .. string.format('%-' .. p[2] .. 'd', s[2]):sub(0, p[2]):gsub(' ', 0)
    else
    s[2] = ''
    end
    return s[1] .. s[2]
    end







    -- _____ __ _ ______ __ _
    -- / ___// /______(_)___ ____ _ / ____/ __/ /____ ____ _____(_)___ ____
    -- \__ \/ __/ ___/ / __ \/ __ `/ / __/ | |/_/ __/ _ \/ __ \/ ___/ / __ \/ __ \
    -- ___/ / /_/ / / / / / / /_/ / / /____> -- /____/\__/_/ /_/_/ /_/\__, / /_____/_/|_|\__/\___/_/ /_/____/_/\____/_/ /_/
    -- /____/


    --[[
    * Splits the string by the specified delimiter.
    *
    * Returns an array of strings, each of which is a substring of self formed by splitting it on boundaries formed by
    * the string delimiter.
    *
    * @since 0.1.0
    *
    * @param {string} self - The string to be split
    * @param {string} delimiter - The string delimiter
    *
    * @returns {array} - An array of strings created by splitting the string.
    --]]
    function string.explode(self, delimiter) -- By Socket, improved by Hardek.
    local result = {}
    self:gsub('[^'.. delimiter ..'*]+', function(s) table.insert(result, (string.gsub(s, '^%s*(.-)%s*$', '%1'))) end)
    return result
    end


    --[[
    * Capitalizes the first character in a given string.
    *
    * @since 0.1.0
    *
    * @param {string} self - The string to be capitalized
    *
    * @returns {string} - The capitalized string
    --]]
    function string.capitalize(self)
    return self:sub(1, 1):upper() .. self:sub(2):lower()
    end


    --[[
    * Capitalizes the first character of every word in a given string.
    *
    * @since 0.1.0
    * @updated 1.1.0
    *
    * @param {string} self - The string to be capitalized
    *
    * @returns {string} - The capitalized string
    --]]
    function string.capitalizeall(self)
    local r = self:explode(' ')
    table.each(r, function(v) return v:capitalize() end)
    return table.concat(r, ' ')
    end


    --[[
    * Returns the nth character in a given string.
    *
    * @since 0.1.0
    *
    * @param {string} self - The target string
    * @param {number} n - The character's position
    *
    * @returns {string} - The nth character
    --]]
    function string.at(self, n)
    return self:sub(n, n)
    end


    --[[
    * Checks whether a given string ends with a given substring.
    *
    * @since 0.1.0
    *
    * @param {string} self - The target string
    * @param {string} substr - The ending substring
    *
    * @returns {boolean} - Whether it ends or not with the given substring
    --]]
    function string.ends(self, substr)
    return self:sub(-#substr) == substr
    end


    --[[
    * Checks whether a given string starts with a given substring.
    *
    * @since 0.1.0
    * @updated 0.3.0
    *
    * @param {string} self - The target string
    * @param {string} substr - The starting substring
    *
    * @returns {boolean} - Whether it starts or not with the given substring
    --]]
    function string.starts(self, substr)
    return self:sub(1, #substr) == substr
    end


    --[[
    * Forces a given string to start with a given substring.
    *
    * @since 1.0.0
    *
    * @param {string} self - The target string
    * @param {string} substr - The starting substring
    *
    * @returns {string} - The string starting with the substring
    --]]
    function string.finish(self, substr)
    if self:ends(substr) then
    return self
    else
    return self .. substr
    end
    end


    --[[
    * Forces a given string to end with a given substring.
    *
    * @since 1.0.0
    *
    * @param {string} self - The target string
    * @param {string} substr - The starting substring
    *
    * @returns {string} - The string ending with the substring
    --]]
    function string.begin(self, substr)
    if self:starts(substr) then
    return self
    else
    return substr .. self
    end
    end





    -- ______ __ __ ______ __ _
    -- /_ __/___ _/ /_ / /__ / ____/ __/ /____ ____ _____(_)___ ____
    -- / / / __ `/ __ \/ / _ \ / __/ | |/_/ __/ _ \/ __ \/ ___/ / __ \/ __ \
    -- / / / /_/ / /_/ / / __/ / /____> -- /_/ \__,_/_.___/_/\___/ /_____/_/|_|\__/\___/_/ /_/____/_/\____/_/ /_/
    --


    --[[
    * Checks wheter given table is empty, that is, has no elements. This may be needed for tables with non-numeric indexes,
    * where the length operator (#) might not work properly.
    *
    * NOTE: May return incorrect values if the given table contains nil values.
    *
    * @malfunction
    * @since 0.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {boolean} - Wheter the target table is empty or not
    --]]
    function table.isempty(self)
    return next(self) == nil
    end


    --[[
    * Returns the amount of elements present in the table. This may be needed for tables with non-numeric indexes, where
    * the length operator (#) might not work properly.
    *
    * @since 0.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {number} - The number of elements inside the target table
    --]]
    function table.size(self)
    local i = 0
    for v in pairs(self) do
    i = i + 1
    end

    return i
    end


    --[[
    * Runs a routine through every item in the given table. The routine to be ran will receive as arguments, for each item,
    * it's value and correspondet index.
    *
    * @since 0.1.0
    * @updated 1.1.0
    *
    * @param {table} self - The target table
    * @param {function} f - Routine to be ran on each element
    *
    * @returns {table} - A table with the returning values for each item
    --]]
    function table.each(self, f)
    local r = {}

    for k, v in pairs(self) do
    r[k] = f(v, k)
    end

    return r
    end


    --[[
    * Runs a routine through every item in the given table and replace the item with the value returned by it. The routine
    * to be ran will receive as arguments, for each item, it's value and correspondet index.
    *
    * @since 1.1.0
    *
    * @param {table} self - The target table
    * @param {function} f - Routine to be ran on each element
    --]]
    function table.map(self, f)
    for k, v in pairs(self) do
    self[k] = f(v, k)
    end
    end


    --[[
    * Transforms all strings in the given table to their lowercase equivalent.
    *
    * @since 0.1.0
    * @updated 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {table} - A table with the equivalent lowercase strings
    --]]
    function table.lower(self)
    return table.each(self, string.lower)
    end


    --[[
    * Transforms all strings in the given table to their uppercase equivalent.
    *
    * @since 0.1.0
    * @updated 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {table} - A table with the equivalent uppercase strings
    --]]
    function table.upper(self)
    return table.each(self, string.upper)
    end


    --[[
    * Transforms all item names in the table to their equivalent item id.
    *
    * @since 0.1.0
    * @updated 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {table} - A table with the equivalent item ids
    --]]
    function table.id(self)
    return table.each(self, client.itemid)
    end


    --[[
    * Filters the items in the given table, running a routine on each of them and removing those which the routines returns
    * false. The routine to be ran will receive as arguments, for each item, it's value and correspondet index.
    *
    * @since 1.0.0
    * @updated 1.1.0
    *
    * @param {table} self - The target table
    * @param {function} f - Routine to be ran on each element
    * @param {boolean} [forceKey] - Whether to assure the filtered items have the same key they had on the original
    * array; defaults to false
    *
    * @returns {table} - A table with the filtered items
    --]]
    function table.filter(self, f, forceKey)
    local r = {}

    if forceKey then
    for k, v in pairs(self) do
    if f(v, k) then
    r[k] = v
    end
    end
    else
    for k, v in pairs(self) do
    if f(v, k) then
    table.insert(r)
    end
    end
    end

    return r
    end


    --[[
    * Merges the items of the given tables to a single table.
    *
    * @since 1.0.0
    * @updated 1.1.0
    *
    * @param {table} [table1], [table2], ... - Tables to be merged
    * @param {boolean} [forceKey] - Whether to assure the filtered items have the same key they had on
    * the original array; defaults to false
    *
    * @returns {table} - A table with all items on the given tables
    --]]
    function table.merge(...)
    local args = {...}
    local r = {}
    local forceKey, f

    if (type(table.last(args)) == 'boolean') then
    forceKey = table.remove(args)
    end

    if forceKey then
    f = function(v, k)
    r[k] = v
    end
    else
    f = function(v)
    local rv = v
    table.insert(r, rv)
    end
    end

    table.each(args,
    function(v)
    table.each(v, f)
    end)

    return r
    end


    --[[
    * Returns the sum of all items in the given table.
    *
    * @since 1.0.0
    * @updated 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {number} - The sum of all items
    --]]
    function table.sum(self)
    local s = 0
    table.each(self, function(v) s = s + v end)
    return s
    end


    --[[
    * Returns the average of all items in the given table.
    *
    * @since 1.0.0
    * @updated 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {number} - The average of all items
    --]]
    function table.average(self)
    return table.sum(self) / #self
    end


    --[[
    * Returns the first item of the given table.
    *
    * @since 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {any} - The first item of the given table
    --]]
    function table.first(self)
    return self[1]
    end


    --[[
    * Returns the last item of the given table.
    *
    * @since 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {any} - The last item of the given table
    --]]
    function table.last(self)
    return self[#self]
    end


    --[[
    * Returns the maximum value of all items in the given table.
    *
    * @since 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {number} - The maximum value of all items
    --]]
    function table.max(self)
    return math.max(table.unpack(self))
    end


    --[[
    * Returns the minimum value of all items in the given table.
    *
    * @since 1.1.0
    *
    * @param {table} self - The target table
    *
    * @returns {number} - The minimum value of all items
    --]]
    function table.min(self)
    return math.min(table.unpack(self))
    end


    So, watcha think? Cool, huh? But, what if I told you it also works with XML?

    [XML]...[/XML]




    no
    no
    no
    no
    null


    yes
    yes
    no
    no
    null





    268
    45
    yes
    no
    no
    no




    no
    no
    no
    no
    null


    no
    no
    no
    no
    no


    no
    no
    no
    no
    All



    0
    no
    no
    no
    no


    180000
    yes
    no
    no
    no


    yes
    no
    no

    yes




    0 to 70 %
    0 to 100 %
    Great Health Potion
    No condition
    no
    no
    200 to 400
    yes


    0 to 100 %
    0 to 70 %
    Mana Potion
    No condition
    yes
    no
    200 to 400
    yes


    0 to 85 %
    40 to all
    Wound Cleansing
    No condition
    yes
    no
    200 to 400
    yes


    85 to 100 %
    40 to all
    Wound Cleansing
    If paralyzed
    yes
    no
    200 to 400
    yes


    85 to 95 %
    75 to all
    Recovery
    If not strengthened
    yes
    no
    2000 to 4000
    yes


    10
    yes



    no




    0 to 100 %
    0 to 95 %
    3052
    0 to 0
    If no ring
    500 to 1000
    yes


    yes



    Client focus required
    no





    800 to 1000
    yes



    800 to 1000
    yes



    800 to 1000
    yes



    4000 to 6000
    yes



    800 to 1000
    yes



    800 to 1000
    no


    -- _____ _ _ _____ _ _
    --| __ (_) | | | __ \ | | | |
    --| |__) | _ __ | | __ | |__) |_ _ _ __ | |_| |__ ___ _ __
    --| ___/ | '_ \| |/ / | ___/ _` | '_ \| __| '_ \ / _ \ '__|
    --| | | | | | | < | | | (_| | | | | |_| | | | __/ |
    --|_| |_|_| |_|_|\_\ |_| \__,_|_| |_|\__|_| |_|\___|_|
    --
    --
    -- _____ _ _
    -- / ____| (_) | |
    --| (___ ___ _ __ _ _ __ | |_ ___
    -- \___ \ / __| '__| | '_ \| __/ __|
    -- ____) | (__| | | | |_) | |_\__ \
    --|_____/ \___|_| |_| .__/ \__|___/
    -- | |
    -- |_|

    -- Backpack Setup

    mainBp = "Backpack of Holding" -- Main Backpack
    lootBp = "Jewelled Backpack" -- Loot Backpack
    supplyBp = "Green Backpack" -- Supplies Backpack
    goldBp = "Golden Backpack" -- Gold Coin Backpack

    stashBp = "Fur Backpack" -- Backpack inside depo containing backpacks to store loot
    stackableBp = "Beach Backpack" -- Stackable Items Backpack
    nonstackableBp = "Brocade Backpack" -- Non-Stackable Items Backpack

    -- Supply Setup

    nameMp = "Mana Potion" -- Mana potion to use
    maxMp = 600 -- Number of Mana potions to buy
    minMp = 175 -- Number of Mana potions to stop hunting
    priceMp = 50 -- Mana potions price

    nameHp = "Great Health Potion" -- Health potion to use
    maxHp = 20 -- Number of Health potions to buy
    minHp = 5 -- Number of Health potions to stop hunting
    priceHp = 190 -- Health potions price

    useSoftboots = true -- Will use and refill softboots if true (True or False)
    otherBoots = "draken boots" -- What to wear instead of Soft Boots (Only matters if useSoftboots is true)
    minMana = 85 -- Minimum mana to equip Soft Boots(Only matters if useSoftboots is true)

    -- General Setup

    dropVials = 30 -- Minimum number of vials to drop if you're cap is less than minCap+50 (Turn off the VialDropper action to disable)
    minCap = 100 -- Minimum Capacity to have to stop hunting
    extraGp = 1000 -- Extra gold to withdraw when resupplying (For travel, ect)
    alertMp = 45 -- Alert on low Mana Potions
    alertCap = 0 -- Alert on low Cap
    healRecovery = "yes" -- Use Recovery? ("yes" or "no")
    useLifering = "yes" -- Use looted life rings? ("yes" or "no",) Life Rings will be equip if you have less than 95% mana. If you want to consider Health, change the reillfer settings.

    pvpServer = false -- Is this a PvP server? (true or false)

    exoriCount = 3 -- Use Exori when there are this many monsters
    creaturesToHit = {"Bog Raider", "Mutated Tiger", "Death Blob", "Nightmare Scion", "Nightmare"} -- List the monsters to cast Exori on

    exoriCount2 = 4 -- Use Exori Gran when there are this many monsters
    creaturesToHit2 = {"Bog Raider", "Mutated Tiger", "Nightmare Scion", "Nightmare"} -- List the monsters to cast Exori Gran on


    Underground1 = true -- Hunt underground room 1? (True or false North most staircase)
    Underground2 = true -- Hunt underground room 2? (True or false 2nd Staircase from the far south)
    Underground3 = true -- Hunt underground room 3? (True or false 3nd Staircase from the far south)
    Nightmares1 = true -- Hunt the underground room containing Nightmares?




    Stackable = {"ultimate health potion", "great health potion", "mana potion", "great spirit potion", "boggy dreads", "strong health potion", "striped fur", "glob of tar", "sabretooth", "Soul Orb", "Essence of a Bad Dream", "Scythe Leg", "Platinum Coin", "Crown Helmet", "Demonic Essence"}

    nonStackable = {"life ring", "belted cape", "guardian shield", "glorious axe", "springsprout rod", "angelic axe", "paladin armor", "Diamond Sceptre", "Focus Cape", "Death Ring", "Shadow Sceptre", "Crystal of Focus", "Ancient Shield", "Knight Legs", "Boots of Haste", "Skeleton Decoration", "Mysterious Voodoo Skull", "War Axe"}

    Standard
    yes



    Action 32824 31249 7
    Node 32830 31249 7
    Stand 32802 31256 6
    Stand 32789 31239 3
    Stand 32790 31239 4
    Stand 32789 31239 5
    Stand 32790 31239 6
    Stand 32803 31256 6
    Node 32803 31257 6
    Stand 32824 31249 7
    Action 32824 31249 7 wait(700,1450);;if not islocation() then gotolabel("GotoBank") else;;closewindows();closewindows();closewindows();closewindows();while windowcount(supplyBp) < 1 do;closewindows();wait(2000,3000);openitem(mainBp,"back",true);wait(700,1450);openitem(supplyBp,mainBp,true);wait(700,1450);resizewindows();wait(700,1450);end;;npcsay("hi");wait(1300,1450);npcsay("deposit all");wait(300,450);npcsay("yes");wait(300,450);;if ((maxHp-itemcount(nameHp))*priceHp) > 0 then;npcsay("withdraw "..((maxHp-itemcount(nameHp))*priceHp));wait(300,450);npcsay("yes");wait(300,450);end;;if ((maxMp-itemcount(nameMp))*priceMp) > 0 then;npcsay("withdraw "..((maxMp-itemcount(nameMp))*priceMp));wait(300,450);npcsay("yes");wait(300,450);end;;if itemcount("Worn Soft Boots") > 0 and useSoftboots then;npcsay("withdraw "..(10000*itemcount("Worn Soft Boots")));wait(300,450);npcsay("yes");wait(300,450);end;;if extraGp > 0 then;npcsay("withdraw "..extraGp);wait(300,450);npcsay("yes");wait(300,450);end;;npcsay("balance");wait(1300,1650);npcsay("bye");wait(200,450);updateworld();;end
    Action 32803 31255 7 if useSoftboots and itemcount("Worn Soft Boots") > 0 then gotolabel("GotoVenore") else gotolabel("EndRefillSoftboots") end
    Node 32803 31254 7
    Stand 32803 31255 7
    Node 32817 31274 6
    Stand 32817 31274 6
    Action 32817 31275 6 local doorx = 32817;local doory = 31275;local doorid = 4912 ;;if toptileitem(doorx, doory, posz) == doorid then;while toptileitem(doorx, doory, posz) == doorid do;useitem(doorid, doorx, doory, posz);wait(300,450);end;end
    Ladder 32815 31277 6
    Action 32815 31279 5 if posz == 5 then;reachcreature("Karith");wait(700,1350);npcsay("hi");wait(300,450);npcsay("venore");wait(300,450);npcsay("yes");wait(1300,1450);else gotolabel("GotoVenore") end;;
    Action 32954 32024 6 if not islocation(7) then gotolabel("GotoVenore") end
    Node 32953 32108 6
    Stand 32953 32108 6
    Action 32953 32108 6 if not islocation() then gotolabel(wpt.id-2) else;while itemcount("Worn Soft Boots") > 0 do;npcsay("Hi");wait(300,450);npcsay("Soft Boots");wait(300,450);npcsay("Yes");wait(300,450);end end
    Node 32955 32026 6
    Stand 32955 32022 6
    Action 32955 32022 6 if not islocation then gotolabel("GotoYalahar") else;reachcreature("Captain Fearless");wait(700,1350);npcsay("hi");wait(300,450);npcsay("Yalahar");wait(300,450);npcsay("yes");wait(1300,1450);end;
    Node 32816 31272 6
    Action 32816 31273 6 if not islocation(5) then gotolabel("GotoYalahar") end
    Node 32803 31257 6
    Stand 32803 31256 6
    Action 32803 31255 7
    Action 32824 31249 7 -- place holder
    Stand 32790 31239 7
    Stand 32789 31239 6
    Stand 32790 31239 4
    Stand 32789 31239 3
    Stand 32789 31238 5
    Action 32789 31238 5 if not islocation() then gotolabel("PotionShop") else;;npcsay("hi");wait(300,450);npcsay("trade");wait(900,1350);;while (itemcount(285)+itemcount(284)+itemcount(283)) > 9 do;npcsay("vials");wait(300,450);npcsay("yes");wait(300,450);end;;buyitemsupto(nameMp,maxMp,itemcount(nameMp));wait(900,1350);buyitemsupto(nameHp,maxHp,itemcount(nameHp));wait(900,1350);;end
    Action 32789 31238 5 if (itemcount(nameMp) < minMp or itemcount(nameHp) < minHp or cap < minCap) then gotolabel("GotoBank") end
    Action 32789 31238 5 if (itemcount(nameMp) < minMp or itemcount(nameHp) < minHp or cap < minCap) then gotolabel("GotoBank") end
    Stand 32790 31239 4
    Stand 32789 31239 5
    Stand 32790 31239 6
    Node 32789 31235 7
    Action 32789 31235 7 if (posz ~= 7) then gotolabel('LeaveShops') end
    Action 32789 31235 7 while windowcount() < 4 do;closewindows();closewindows();closewindows();closewindows();wait(2000,3000);openitem(mainBp,"back",true,0);wait(700,1450);openitem(lootBp,mainBp,true,0);wait(700,1450);openitem(supplyBp,mainBp,true,0);wait(700,1450);openitem(goldBp,mainBp,true,0);wait(700,1450);resizewindows();wait(700,1450);end;;while itemcount(nameMp, mainBp) > 0 do;moveitems(nameMp, mainBp, supplyBp, 100);wait(100,200);end;;while itemcount(nameHp, mainBp) > 0 do;moveitems(nameHp, mainBp, supplyBp, 100);wait(100,200);end
    Node 32750 31172 7
    Stand 32750 31170 7
    Stand 32750 31165 6
    Stand 32744 31164 5
    Use 32743 31164 5
    Stand 32711 31157 7
    Stand 32743 31160 5
    Stand 32741 31160 6
    Node 32712 31176 7
    Stand 32712 31175 7
    Node 32707 31106 6
    Stand 32707 31104 6
    Node 32707 31102 7
    Stand 32707 31102 7
    Action 32707 31102 7 if not islocation() then gotolabel("ReachHunt") end
    Node 32704 31097 7
    Node 32696 31079 7
    Node 32666 31082 7
    Action 32666 31082 7 if not Underground1 then gotolabel("EndUnderground1") end
    Stand 32664 31074 7
    Node 32653 31065 8
    Action 32650 31064 8 local doorx = 32653;local doory = 31064;local doorid = 5732 ;;if toptileitem(doorx, doory, posz) == doorid then;while toptileitem(doorx, doory, posz) == doorid do;useitem(doorid, doorx, doory, posz);wait(300,450);end;end
    Node 32655 31043 8
    Node 32648 31046 8
    Node 32653 31063 8
    Action 32652 31053 8 local doorx = 32653;local doory = 31064;local doorid = 5732 ;;if toptileitem(doorx, doory, posz) == doorid then;while toptileitem(doorx, doory, posz) == doorid do;useitem(doorid, doorx, doory, posz);wait(300,450);end;end
    Node 32652 31077 8
    Action 32653 31074 8 local doorx = 32652;local doory = 31078;local doorid = 5732 ;;if toptileitem(doorx, doory, posz) == doorid then;while toptileitem(doorx, doory, posz) == doorid do;useitem(doorid, doorx, doory, posz);wait(300,450);end;end
    Node 32659 31077 8
    Action 32659 31078 8 local doorx = 32659;local doory = 31078;local doorid = 5732 ;;if toptileitem(doorx, doory, posz) == doorid then;while toptileitem(doorx, doory, posz) == doorid do;useitem(doorid, doorx, doory, posz);wait(300,450);end;end
    Node 32664 31075 8
    Stand 32664 31074 8
    Action 32664 31074 8
    Action 32642 31185 7 if (itemcount(nameMp) < minMp or itemcount(nameHp) < minHp or cap < minCap) then gotolabel("LeaveHunt") end
    Stand 32664 31074 8
    Node 32652 31108 7
    Node 32637 31117 7
    Node 32642 31152 7
    Node 32637 31193 7
    Node 32662 31187 7
    Action 32669 31184 7 if not Nightmares1 then gotolabel("EndNightmares") end;
    Node 32669 31184 7
    Stand 32670 31184 7
    Node 32662 31192 8
    Node 32659 31184 8
    Stand 32659 31183 8
    Node 32663 31175 9
    Node 32669 31187 9
    Node 32660 31189 9
    Node 32659 31184 9
    Stand 32659 31183 9
    Node 32669 31175 8
    Node 32669 31182 8
    Stand 32670 31184 8
    Action 32669 31183 7
    Stand 32659 31183 9
    Stand 32670 31184 8
    Node 32659 31166 7
    Node 32649 31153 7
    Action 32657 31151 7 if not Underground2 then gotolabel("EndUnderground2") end
    Node 32657 31152 7
    Stand 32658 31152 7
    Node 32657 31143 8
    Node 32655 31160 8
    Node 32629 31156 8
    Node 32635 31147 8
    Node 32656 31152 8
    Stand 32658 31152 8
    Action 32658 31152 8
    Action 32642 31185 7 if (itemcount(nameMp) < minMp or itemcount(nameHp) < minHp or cap < minCap) then gotolabel("LeaveHunt") end
    Stand 32658 31152 8
    Node 32648 31121 7
    Action 32648 31121 7 if not Underground3 then gotolabel("EndUnderground3") end
    Node 32649 31121 8
    Node 32656 31124 8
    Stand 32644 31124 9
    Stand 32658 31124 8
    Action 32658 31124 8
    Stand 32644 31124 9
    Stand 32658 31124 8
    Node 32669 31097 7
    Node 32687 31095 7
    Action 32704 31096 7 -- place hodler - tower 2 containing braindeaths - for future version(s)
    Stand 32689 31097 8
    Node 32701 31103 7
    Action 32820 31116 7 if (itemcount(nameMp) < minMp or itemcount(nameHp) < minHp or cap < minCap) then gotolabel("LeaveHunt") else gotolabel("HuntStart") end;
    Action 32411 32976 9 Gotolabel("HuntStart")
    Node 32707 31103 7
    Stand 32689 31097 8
    Stand 32658 31124 8
    Stand 32658 31152 8
    Stand 32664 31074 8
    Action 32752 31226 7
    Stand 32707 31104 7
    Node 32712 31174 6
    Stand 32712 31175 6
    Node 32739 31160 7
    Stand 32741 31160 7
    Stand 32743 31160 6
    Stand 32744 31161 5
    Use 32743 31161 5
    Stand 32750 31165 5
    Stand 32750 31170 6
    Node 32744 31204 7
    Stand 32744 31204 7
    Action 32744 31204 7 if not islocation(3) then gotolabel("LeaveHunt") end
    Walk 32777 31247 7
    Node 32786 31247 7
    Stand 32786 31248 7
    Stand 32786 31247 6
    Action 32786 31247 6 if not islocation() then gotolabel("GotoDepo") end
    Action 32791 31244 6 setsettings("Settings\\CaveBot\\Settings\\OpenNextBp", "no")
    Action 32271 31138 7 closewindows();closewindows();wait(700,1450);while windowcount() < 2 do;closewindows();closewindows();wait(2000,3000);openitem(mainBp,"back",true,0);wait(700,1450);openitem(lootBp,mainBp,true,0);wait(700,1450);resizewindows();wait(700,1450);end
    Action 32792 31247 6 while windowcount("Depot Chest") == 0 do;reachgrounditem("depot");wait(900,1350);openitem("depot");wait(900,1350);openitem("Depot Chest","Locker",false);wait(900,1350);end;openitem(stashBp, "depot chest");;
    Action 32306 32865 7 lastonto = 0;local sitems = {unpack(Stackable)};local _nexti = true;for i,j in pairs(sitems) do; _nexti = true; while itemcount(sitems[i], lootBp) > 0 and _nexti do; _nexti = moveitemsonto(sitems[i], lootBp, stackableBp, 100, lastonto); wait(400,500); end;end;;;;;
    Action 32306 32865 7 lastonto = 0;local sitems = {unpack(nonStackable)};local _nexti = true;for i,j in pairs(sitems) do; _nexti = true; while itemcount(sitems[i], lootBp) > 0 and _nexti do; _nexti = moveitemsonto(sitems[i], lootBp, nonstackableBp, 100, lastonto); wait(400,500); end;end
    Action 32271 31138 7 if itemcount(lootBp, lootBp) > 0 then;openitem(lootBp, lootBp, false,0);wait(900,1350);gotolabel(wpt.id-2);end
    Action 32791 31244 6 setsettings("Settings\\CaveBot\\Settings\\OpenNextBp", "yes")
    Stand 32797 31246 6
    Stand 32808 31118 3
    Stand 32815 31118 4
    Stand 32808 31117 5
    Stand 32812 31115 6
    Stand 32799 31246 7
    Action 32799 31246 7 if not islocation() then gotolabel("LeaveDepo") end
    Action 32799 31246 7 gotolabel("Start")



    no
    Map Clicks
    20 to 50
    140;404;831;832;833;834;883;2118;2119;2120;2121;2122;2123;2124;2125;2126;2127;2131;2132;2133;2134;2135;2314;2315;2316;2319;2346;2347;2348;2349;2350;2351;2352;2353;2354;2355;2356;2357;2358;2359;2360;2361;2362;2363;2364;2365;2366;2367;2368;2369;2370;2371;2372;2373;2374;2375;2376;2377;2378;2379;2380;2381;2382;2383;2384;2385;2418;2419;2420;2421;2422;2423;2424;2425;2426;2431;2432;2433;2434;2441;2442;2443;2444;2469;2471;2472;2473;2478;2480;2481;2482;2483;2484;2485;2486;2519;2523;2775;2776;2777;2778;2779;2780;2781;2782;2783;2784;2785;2786;2787;2788;2789;2790;2791;2792;2793;2794;2795;2796;2797;2798;2799;2800;2801;2802;2803;2804;2805;2806;2807;2808;2809;2810;2811;2812;2981;2983;2982;2984;2985;2987;2988;3503;3504;3514;3807;5086;5087;5088;6114;6115;6355;6356;6357;6358;6359;6360;6361;6362;6371;6372;7864;8455;8763;9061;9062;10207;10209;10216;10286;10287;10288;11009;11800;11801;11802;11803;11804;11805;11806;11807;11808;11809;11810


    3003
    3457
    3456
    3308
    1
    Target and Looting
    no
    no
    no
    yes
    3725;3587;3600;3595;3589;3598;8014;3583;3606;3578;3592;3582;3577;3593;3586;3585;3581;3723;3588;3595;3607;3584
    yes

    yes




    8063
    Jewelled Backpack
    No Alarm


    7436
    Jewelled Backpack
    No Alarm


    8084
    Jewelled Backpack
    No Alarm


    7454
    Jewelled Backpack
    No Alarm


    3415
    Jewelled Backpack
    No Alarm


    10311
    Jewelled Backpack
    No Alarm


    7643
    Jewelled Backpack
    No Alarm


    9667
    Jewelled Backpack
    No Alarm


    7642
    Jewelled Backpack
    No Alarm


    239
    Green Backpack
    No Alarm


    236
    Jewelled Backpack
    No Alarm


    3052
    Jewelled Backpack
    No Alarm


    10293
    Jewelled Backpack
    No Alarm


    9055
    Jewelled Backpack
    No Alarm


    3031
    Golden Backpack
    No Alarm


    3577
    99
    No Alarm


    5944
    Jewelled Backpack
    No Alarm


    10306
    Jewelled Backpack
    No Alarm


    10312
    Jewelled Backpack
    No Alarm


    3035
    Jewelled Backpack
    No Alarm


    6499
    Jewelled Backpack
    No Alarm


    3385
    Jewelled Backpack
    No Alarm


    7387
    Jewelled Backpack
    No Alarm


    8043
    Jewelled Backpack
    No Alarm


    6299
    Jewelled Backpack
    No Alarm


    7451
    Jewelled Backpack
    No Alarm


    9027
    Jewelled Backpack
    No Alarm


    3432
    Jewelled Backpack
    No Alarm


    3371
    Jewelled Backpack
    No Alarm


    3079
    Jewelled Backpack
    No Alarm


    6525
    Jewelled Backpack
    No Alarm


    5668
    Jewelled Backpack
    No Alarm


    3342
    Jewelled Backpack
    No Alarm


    Corpses with listed items

    300
    10
    yes
    yes




    -
    7


    Any
    0 to 100 %
    No movement
    Beam
    0
    Attack

    Brutal Strike
    Whirlwind Throw

    500 to 1000
    Chase/Offensive


    yes
    no
    no


    -
    6


    Any
    0 to 100 %
    No movement
    Beam
    0
    Attack

    Whirlwind Throw
    Brutal Strike

    500 to 1000
    Chase/Offensive


    yes
    no
    no


    -
    3


    Any
    0 to 100 %
    No movement
    None
    0
    Attack

    500 to 1000
    Chase/Offensive


    yes
    no
    no


    -
    7


    Any
    0 to 100 %
    No movement
    Beam
    0
    Attack

    Brutal Strike

    1000 to 2000
    Chase/Offensive


    yes
    no
    no


    -
    5


    Any
    0 to 100 %
    No movement
    Beam
    0
    Attack

    Brutal Strike

    1000 to 2000
    Chase/Offensive


    yes
    no
    no


    -
    0


    Any
    0 to 100 %
    No movement
    None
    0
    Attack

    500 to 1000
    Chase/Offensive


    yes
    no
    yes



    6
    5
    8
    9
    Do nothing
    yes
    yes
    yes
    no

    yes





    1000
    yes



    1000
    yes


    If focused
    yes



    Simulate
    If cavebot on, release after 1 sec
    Keyboard keys
    45 to 65


    Simulate
    Use mouse wheel
    Instantaneous
    30 to 50

    Confirm if cavebotting
    yes



    Oh, wait! What if I told you you can also do this in the middle of your text, for small snippets?

    [ILUA]...[/ILUA] = [ILUA]print('♥')[/ILUA]
    [ILUA]... [/ILUA] = Simulate


    Well, this is all. I hope you guys like it.
    I'd like to thank pink_panther, since I used one of his scripts for the XML demo.
    Also, if you didn't get the title pun, it's because 'Lua' is Moon in portuguese.

  2. #2
    H.B.I.C
    Join Date
    May 2012
    Posts
    43
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Reputation
    33
    Rep Power
    0
    Awww great colors

  3. #3
    Normal User Diabolic's Avatar
    Join Date
    Apr 2012
    Posts
    247
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Reputation
    27
    Rep Power
    5
    Love this *-*
    Att,
    Diabolic

  4. #4
    Normal User Emma's Avatar
    Join Date
    Mar 2012
    Posts
    117
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Reputation
    35
    Rep Power
    5
    You are still gay.

  5. #5
    Normal User Onehit's Avatar
    Join Date
    Mar 2012
    Location
    Cwb
    Posts
    693
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    1 Post(s)
    Reputation
    117
    Rep Power
    7
    [ILUA]print('partiu')[/ILUA]

    NÃO RESPONDO DUVIDAS POR PM
    Brasil, aqui você é o palhaço.

  6. #6
    Normal User Sahar's Avatar
    Join Date
    Sep 2012
    Posts
    1,018
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Reputation
    21
    Rep Power
    7
    I don't understand what it is... can you explain please? (sorry Im noob at this things :P )

  7. #7
    Normal User Raphael's Avatar
    Join Date
    Apr 2012
    Location
    São Paulo, Brazil
    Posts
    297
    Mentioned
    1 Post(s)
    Tagged
    3 Thread(s)
    Quoted
    5 Post(s)
    Reputation
    78
    Rep Power
    5
    Quote Originally Posted by Sahar View Post
    I don't understand what it is... can you explain please? (sorry Im noob at this things :P )
    The colors.

  8. #8
    Banned
    Join Date
    Feb 2013
    Location
    ARARAS-SP
    Posts
    130
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Reputation
    12
    Rep Power
    0
    niiiiiiiiiiiiiiiiiice

  9. #9
    iBot User Noxuos's Avatar
    Join Date
    Mar 2012
    Location
    iBot Forums
    Posts
    852
    Mentioned
    6 Post(s)
    Tagged
    1 Thread(s)
    Quoted
    0 Post(s)
    Reputation
    167
    Rep Power
    7
    i love this!
    123456789123456789

    Script Voc Video Of Script 100% AFK
    [300+]Zao Walls Main Floor And Floor Up Ava SD and Spell Version ED|MS Video On TibiaCast/YouTube
    [200+]Deeplings Stage 1 West Side ED|MS|RP|EK Video On TibiaCast/YouTube
    [150+]Yalahar Bog Raiders Optional Nightmare And Destroyer Elite Knight Video On TibiaCast/YouTube
    •Noxuos Scripts Screen Shot Project Click Here! •Sell 340 RP Open-PVP: Transferable: Pm With Offers Noxuos Scripts Character Shop Click Here

    •New Poll Which voc do you want to see more scripts of? Check out my thread to vote •Sell 264 ED PvP: Transferable: 80 voucher days! •Accepting Tibia Cash On All New Scripts



  10. #10
    zami84's Avatar
    Join Date
    May 2012
    Posts
    316
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    1 Post(s)
    Reputation
    48
    Rep Power
    5
    Great, we have new colors..... Now - where is new version of iBot... ;/

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •