How to use library in a map?

General talk about editing, cheating, and deprotecting maps.

Moderator: Cheaters

Apple
Forum Staff
Posts: 1470
Joined: November 3rd, 2010, 10:48 am
Title: Best Player
Location: Singapore

How to use library in a map?

Post by Apple »

Oh god I got a warning for this from Vegas, I guess I'm not clear with my question.
Here's a library I want to put inside a map.
I don't know how to put it.
This is what I'm asking.
Spoiler:

Code: Select all

library BigInt /* v2.3.1.0
*************************************************************************************
*
*   Used for creating very large unsigned integers in any base. Stored in linked list.
*
*************************************************************************************
*
*   */uses/*
*
*       */ Base /*         hiveworkshop.com/forums/submissions-414/snippet-base-188814/
*
*************************************************************************************
*
*   struct BigInt extends array
*
*       - All Operations Require That Bases Between Two BigInts
*       - Be The Same Size
*
*       - No Methods Will Ever Crash. If A Method Is Op Limit Safe, It Means
*       - That It Runs Inside Of Its Own Thread, Allowing You To Call It Many Times
*       - Safely.
*
*       ---------------------------------------
*       -
*       -   Key
*       -
*       -       Op Limit Safe: +
*       -       Not Op Limit Safe: ~
*       -
*       ---------------------------------------
*
*       -   Fields
*
*           +readonly boolean packed
*               -   Is the value in a compressed state? (unreadable, but good for base conversions)
*           +readonly integer size
*           +readonly thistype next
*           +readonly thistype prev
*               -   Used For Iterating Over Digits
*           +integer digit
*               -   The Value Of The Specific Digit
*           +readonly boolean head
*               -   A Value Of 0 Will Only Have The Head
*               -   The Head Can Only Be 0, So Do Not Change Value
*               -   Of The Head Or You Will Break Division.
*
*       -   Methods
*
*           ~method lt takes BigInt i returns boolean
*               -   this < i
*           ~method gt takes BigInt i returns boolean
*               - this > i
*           ~method eq takes BigInt i returns boolean
*               -   this == i
*           ~method neq takes BigInt i returns boolean
*               -   this != i
*           ~method ltoe takes BigInt i returns boolean
*               -   this <= i
*           ~method gtoe takes BigInt i returns boolean
*               -   this >= i
*
*           ~method add takes integer i returns nothing
*               -   this + i
*           ~method addBig takes BigInt i returns nothing
*               -   this + i
*           ~method addString takes string s returns nothing
*               -   this + s
*
*           ~method subtract takes integer i returns nothing
*               -   this - i
*           ~method subtractBig takes BigInt i returns nothing
*               -   this - i
*
*           ~method multiply takes integer i returns nothing
*               -   this * i
*           ~method multiplyBig takes BigInt i returns nothing
*               -   this * i
*
*           ~method divide takes integer d returns integer
*               -   this / d
*           ~method divideBig takes BigInt d returns BigInt
*               -   this/d
*
*           ~method operator base takes nothing returns Base
*           ~method operator base= takes Base base returns nothing
*               -   Converts BigInt to target base
*               -   Base 0 is default base, which is 46340
*               -   Only perform operations on BigInts when they are in Base 0 As
*               -   The Operations Will Be Much Faster
*
*           ~method mod takes integer i returns integer
*               -   this % i
*           ~method modBig takes BigInt i returns BigInt
*               -   this % i
*
*           +static method create takes nothing returns BigInt
*               -   Creates 0 BigInt In Default Base
*               -   Do Not Change Default Base Unless Displaying
*           +static method convertString takes string s, Base base returns BigInt
*               -   Converts Target String In Base To BigInt
*               -   Be Sure To Change Base Of BigInt To 0 Afterwards
*           +method destroy takes nothing returns nothing
*
*           +method clear takes nothing returns nothing
*               -   Resets BigInt To 0, Does Not Reset Base
*           +method copy takes nothing returns BigInt
*               -   Copies BigInt
*           +method remake takes nothing returns BigInt
*               -   Moves All Digits On BigInt To A New BigInt And
*               -   Returns It
*
*                   local BigInt i = convertString("22829", base10)
*                   local BigInt i2 = i.remake()
*                       ->  i = 0
*                       ->  i2 = 22829
*
*           +method enq takes integer i returns nothing
*               -   Adds A New Digit To Front Of BigInt
*
*                   local BigInt i = convertString("22829", base10)
*                   call i.enq(7)
*                       ->  i = 722829
*           +method deq takes nothing returns nothing
*               -   Removes Digit From Front Of BigInt
*
*                   local BigInt i = convertString("22829", base10)
*                   call i.deq()
*                       ->  i = 2829
*
*           +method deto takes thistype target returns nothing
*               -   Similar to deq except pushes onto target BigInt
*
*           +method popto takes thistype target returns nothing
*               -   Similar to pop except enques onto target BigInt
*
*           +method push takes integer i returns nothing
*               -   Pushes A New Digit To Back Of BigInt
*
*                   local BigInt i = convertString("22829", base10)
*                   call i.push(7)
*                       ->  i = 228297
*           +method pop takes nothing returns nothing
*               -   Removes Digit From Back Of BigInt
*
*                   local BigInt i = convertString("22829", base10)
*                   call i.pop()
*                       ->  i = 2282
*
*           +method toInt takes nothing returns integer
*               -   Converts BigInt To An Integer
*               -   This Will Overflow If The BigInt Can't Fit Into An Integer
*
*                   local BigInt i = convertString("22829", base10)
*                   local integer int = i.toInt()
*                       -> int = 22829
*           +method toString takes nothing returns string
*               -   Converts BigInt To A String
*               -   If The Base Is The Default Base, The Digits Will Be Listed In That Base
*
*                   local BigInt i = convertString("22829", base10)
*                   local string str = i.toString()
*                       -> str = "22829"
*
*           ~method pack takes nothing returns nothing
*               -   Commpresses the BigInt as much as possible (useful for base conversion)
*           ~method unpack takes nothing returns nothing
*               -   Decompresses the BigInt
*
*************************************************************************************/
    globals
        private constant integer BASE = 46340
        private constant boolean DEBUG_MSGS = true
        private constant boolean DOUBLE_FREE_CHECK = false
    endglobals
    
    private module Init
        private static method onInit takes nothing returns nothing
            local integer base
        
            set evalBase = CreateTrigger()
            call TriggerAddCondition(evalBase, Condition(function thistype.ebase))
            
            set evalMultBig = CreateTrigger()
            call TriggerAddCondition(evalMultBig, Condition(function thistype.eMultiplyBig))
            
            set evalDivideBig = CreateTrigger()
            call TriggerAddCondition(evalDivideBig, Condition(function thistype.eDivideBig))
            
            set evalSetBase = CreateTrigger()
            call TriggerAddCondition(evalSetBase, Condition(function thistype.setBase))
            
            set evalConvertString = CreateTrigger()
            call TriggerAddCondition(evalConvertString, Condition(function thistype.eConvertString))
            
            set evalCopy = CreateTrigger()
            call TriggerAddCondition(evalCopy, Condition(function thistype.eCopy))
            
            set evalToString = CreateTrigger()
            call TriggerAddCondition(evalToString, Condition(function thistype.eToString))
            
            set packedBase[0] = 46340
            set packedPower[0] = 1
            set packedBase[2] = 32768
            set packedPower[2] = 15
            set packedBase[3] = 19683
            set packedPower[3] = 9
            set packedBase[4] = 16384
            set packedPower[4] = 8
            set packedBase[5] = 15625
            set packedPower[5] = 6
            set packedBase[6] = 7776
            set packedPower[6] = 5
            set packedBase[7] = 16807
            set packedPower[7] = 5
            set packedBase[8] = 32768
            set packedPower[8] = 5
            set packedBase[9] = 6561
            set packedPower[9] = 4
            set packedBase[10] = 10000
            set packedPower[10] = 4
            set packedBase[11] = 14641
            set packedPower[11] = 4
            set packedBase[12] = 20736
            set packedPower[12] = 4
            set packedBase[13] = 28561
            set packedPower[13] = 4
            set packedBase[14] = 38416
            set packedPower[14] = 4
            set packedBase[15] = 3375
            set packedPower[15] = 3
            set packedBase[16] = 4096
            set packedPower[16] = 3
            set packedBase[17] = 4913
            set packedPower[17] = 3
            set packedBase[18] = 5832
            set packedPower[18] = 3
            set packedBase[19] = 6859
            set packedPower[19] = 3
            set packedBase[20] = 8000
            set packedPower[20] = 3
            set packedBase[21] = 9261
            set packedPower[21] = 3
            set packedBase[22] = 10648
            set packedPower[22] = 3
            set packedBase[23] = 12167
            set packedPower[23] = 3
            set packedBase[24] = 13824
            set packedPower[24] = 3
            set packedBase[25] = 15625
            set packedPower[25] = 3
            set packedBase[26] = 17576
            set packedPower[26] = 3
            set packedBase[27] = 19683
            set packedPower[27] = 3
            set packedBase[28] = 21952
            set packedPower[28] = 3
            set packedBase[29] = 24389
            set packedPower[29] = 3
            set packedBase[30] = 27000
            set packedPower[30] = 3
            set packedBase[31] = 29791
            set packedPower[31] = 3
            set packedBase[32] = 32768
            set packedPower[32] = 3
            set packedBase[33] = 35937
            set packedPower[33] = 3
            set packedBase[34] = 39304
            set packedPower[34] = 3
            set packedBase[35] = 42875
            set packedPower[35] = 3
            
            set base = 128
            loop
                exitwhen 35 == base
                set packedBase[base] = base*base
                set packedPower[base] = 2
                set base = base - 1
            endloop
        endmethod
    endmodule
    
    struct BigInt extends array
        private Base bm
        readonly thistype next
        readonly thistype prev
        integer digit
        readonly boolean head
        readonly integer size
        readonly boolean packed
        
        private static trigger evalBase
        private static trigger evalMultBig
        private static trigger evalDivideBig
        private static trigger evalSetBase
        private static trigger evalConvertString
        private static trigger evalCopy
        private static trigger evalToString
        
        private static integer array packedBase
        private static integer array packedPower
        
        private static integer count = 0
        
        debug private static boolean rn
        
        static if DOUBLE_FREE_CHECK then
            private boolean allocated
        endif
        private static method allocate takes nothing returns thistype
            local thistype this = thistype(0).next
            if (0 == this) then
                set this = count + 1
                set count = this
            else
                set thistype(0).next = next
            endif
            
            static if DOUBLE_FREE_CHECK then
                if (allocated) then
                    call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"DOUBLE ALLOC")
                    set this = 1/0
                endif
                set allocated = true
            endif
            
            set digit = 0
            
            return this
        endmethod
        
        static if DOUBLE_FREE_CHECK then
            private method deallocate takes nothing returns nothing
                if (not allocated) then
                    call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"DOUBLE FREE")
                    set this = 1/0
                endif
                set allocated = false
                
                set next = thistype(0).next
                set thistype(0).next = this
            endmethod
        endif
        
        static if DOUBLE_FREE_CHECK then
            private static method deallocateRange takes thistype min, thistype max returns nothing
                set max.next = thistype(0).next
                set thistype(0).next = min
                
                loop
                    if (not max.allocated) then
                        call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"DOUBLE FREE")
                        set max = 1/0
                    endif
                    set max.allocated = false
                    exitwhen max == min
                    set max = max.prev
                endloop
            endmethod
        endif
        
        private method ad takes thistype n returns nothing
            set n.next = this
            set n.prev = prev
            set prev.next = n
            set prev = n
            set size = size + 1
        endmethod
        private method adp takes thistype n returns nothing
            set n.next = next
            set n.prev = this
            set next.prev = n
            set next = n
            set size = size + 1
        endmethod
        method deto takes thistype tar returns nothing
            debug if not (head and tar.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Pop Null BigInt")
                debug set this = 1/0
                debug return
            debug endif
            debug if (0 == size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Pop 0 BigInt")
                debug set this = 1/0
                debug return
            debug endif
            
            set size = size - 1
            set this = prev
            set prev.next = next
            set next.prev = prev
            
            if (not tar.prev.head or 0 != digit) then
                call tar.adp(this)
            else
                static if DOUBLE_FREE_CHECK then
                    call deallocate()
                else
                    set next = thistype(0).next
                    set thistype(0).next = this
                endif
            endif
        endmethod
        method popto takes thistype tar returns nothing
            debug if not (head and tar.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Pop Null BigInt")
                debug set this = 1/0
                debug return
            debug endif
            debug if (0 == size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Pop 0 BigInt")
                debug set this = 1/0
                debug return
            debug endif
            
            set size = size - 1
            set this = next
            set prev.next = next
            set next.prev = prev
            
            if (not tar.prev.head or 0 != digit) then
                call tar.ad(this)
            else
                static if DOUBLE_FREE_CHECK then
                    call deallocate()
                else
                    set next = thistype(0).next
                    set thistype(0).next = this
                endif
            endif
        endmethod
        method lt takes thistype i returns boolean
            local boolean b = false
            debug if (not head or not i.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To < Compare Null BigInt")
                debug set i = 1/0
                debug return false
            debug endif
            debug if (bm.size != i.bm.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To < Compare BigInts With Different Bases")
                debug set i = 1/0
                debug return false
            debug endif
            
            if (size == i.size) then
                loop
                    set this = prev
                    set i = i.prev
                    exitwhen head or digit != i.digit
                endloop
                return digit < i.digit
            endif
            
            return size < i.size
        endmethod
        method gt takes thistype i returns boolean
            local boolean b = false
            debug if (not head or not i.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To > Compare Null BigInt")
                debug set i = 1/0
                debug return false
            debug endif
            debug if (bm.size != i.bm.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To > Compare BigInts With Different Bases")
                debug set i = 1/0
                debug return false
            debug endif
            
            if (size == i.size) then
                loop
                    set this = prev
                    set i = i.prev
                    exitwhen head or digit != i.digit
                endloop
                return digit > i.digit
            endif
            
            return size > i.size
        endmethod
        method eq takes thistype i returns boolean
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To == Compare Null BigInt")
                debug set i = 1/0
                debug return false
            debug endif
            
            if (0 == i) then
                loop
                    set this = next
                    exitwhen head or 0 != digit
                endloop
                return head
            endif
        
            debug if (not i.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To == Compare Null BigInt")
                debug set i = 1/0
                debug return false
            debug endif
            debug if (bm.size != i.bm.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To == Compare BigInts With Different Bases")
                debug set i = 1/0
                debug return false
            debug endif
            
            if (size == i.size) then
                loop
                    set this = next
                    set i = i.next
                    exitwhen head or digit != i.digit
                endloop
                return head
            endif
            
            return false
        endmethod
        method neq takes thistype i returns boolean
            debug if (not head or not i.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To != Compare Null BigInt")
                debug set i = 1/0
                debug return false
            debug endif
            debug if (bm.size != i.bm.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To != Compare BigInts With Different Bases")
                debug set i = 1/0
                debug return false
            debug endif
            return not eq(i)
        endmethod
        method ltoe takes thistype i returns boolean
            local boolean b = false
            debug if (not head or not i.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To <= Compare Null BigInt")
                debug set i = 1/0
                debug return false
            debug endif
            debug if (bm.size != i.bm.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To <= Compare BigInts With Different Bases")
                debug set i = 1/0
                debug return false
            debug endif
            
            if (size == i.size) then
                loop
                    set this = prev
                    set i = i.prev
                    exitwhen head or digit != i.digit
                endloop
                return digit <= i.digit
            endif
            
            return size < i.size
        endmethod
        method gtoe takes thistype i returns boolean
            local boolean b = false
            debug if (not head or not i.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To >= Compare Null BigInt")
                debug set i = 1/0
                debug return false
            debug endif
            debug if (bm.size != i.bm.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To >= Compare BigInts With Different Bases")
                debug set i = 1/0
                debug return false
            debug endif
            
            if (size == i.size) then
                loop
                    set this = prev
                    set i = i.prev
                    exitwhen head or digit != i.digit
                endloop
                return digit >= i.digit
            endif
            
            return size > i.size
        endmethod
        
        method add takes integer i returns nothing
            local integer carry = 0
            local thistype root = this
            local integer base
            
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To Add Null BigInt")
                debug set i = 1/0
                debug return
            debug endif
            
            if (packed or 0 == bm) then
                set base = packedBase[bm.size]
            else
                set base = bm.size
            endif
            
            loop
                exitwhen 0 == i
                set this = next
                if (head) then
                    set this = allocate()
                    call root.ad(this)
                endif
                set digit = digit + i - i/base*base + carry
                set i = i/base
                set carry = digit/base
                set digit = digit - digit/base*base
            endloop
            loop
                exitwhen 0 == carry
                set this = next
                if (head) then
                    set this = allocate()
                    call root.ad(this)
                endif
                set digit = digit + carry
                set carry = digit/base
                set digit = digit - digit/base*base
            endloop
        endmethod
        method addBig takes BigInt i returns nothing
            local integer carry = 0
            local thistype root = this
            local integer count = 0
            local integer base
            
            debug if (not head or not i.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To Add Null BigInt")
                debug set i = 1/0
                debug return
            debug endif
            debug if (bm.size != i.bm.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To Add BigInts With Different Bases")
                debug set i = 1/0
                debug return
            debug endif
            
            if (packed or 0 == bm) then
                set base = packedBase[bm.size]
            else
                set base = bm.size
            endif
            
            loop
                set i = i.next
                exitwhen i.head
                set this = next
                if (head) then
                    set this = allocate()
                    call root.ad(this)
                endif
                set digit = digit + i.digit + carry
                set carry = digit/base
                set digit = digit - digit/base*base
            endloop
            loop
                exitwhen 0 == carry
                set this = next
                if (head) then
                    set this = allocate()
                    call root.ad(this)
                endif
                set digit = digit + carry
                set carry = digit/base
                set digit = digit - digit/base*base
            endloop
        endmethod
        method addString takes string s returns nothing
            local integer carry = 0
            local thistype root = this
            local integer i = StringLength(s)
            local Base b = bm
            local integer base = b.size
            
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempting To Add Null BigInt")
                debug set i = 1/0
                debug return
            debug endif
            
            loop
                exitwhen 0 == i
                set this = next
                if (head) then
                    set this = allocate()
                    call root.ad(this)
                endif
                set digit = digit + b.ord(SubString(s, i - 1, i)) + carry
                set carry = digit/base
                set digit = digit - digit/base*base
                set i = i - 1
            endloop
            
            loop
                exitwhen 0 == carry
                set this = next
                if (head) then
                    set this = allocate()
                    call root.ad(this)
                endif
                set digit = digit + carry
                set carry = digit/base
                set digit = digit - digit/base*base
            endloop
        endmethod
            
        static method create takes nothing returns thistype
            local thistype this = allocate()
            
            set size = 0
            set next = this
            set prev = this
            set head = true
            set bm = 0
            
            set packed = false
            
            return this
        endmethod
        
        private static string eStringToConvert
        private static Base eConvertingBase
        private static BigInt eConvertingBigInt
        private static integer eConvertingIndex
        private static method eConvertString takes nothing returns boolean
            local thistype this = eConvertingBigInt
            local string s = eStringToConvert
            local Base base = eConvertingBase
            local thistype digit
            local integer index = eConvertingIndex
            local integer ops = 1260
            
            debug set rn = false
            loop
                exitwhen 0 == index or 0 == ops
                set ops = ops - 1
                set index = index - 1
                set digit = allocate()
                call ad(digit)
                set digit.digit = base.ord(SubString(s, index, index+1))
            endloop
            debug set rn = true
            
            set eConvertingIndex = index
            
            return 0 == index
        endmethod
        
        static method convertString takes string s, Base base returns thistype
            local thistype this = allocate()
            
            debug if (0 != base and 0 == base.size) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Convert Bad Base")
                debug return 0
            debug endif
            debug if (0 == StringLength(s)) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Convert Bad String")
                debug return 0
            debug endif
            
            set size = 0
            set next = this
            set prev = this
            set head = true
            set bm = base
            set packed = false
            
            set eStringToConvert = s
            set eConvertingBase = base
            set eConvertingBigInt = this
            set eConvertingIndex = StringLength(s)
            
            loop
                exitwhen TriggerEvaluate(evalConvertString)
                debug if not rn then
                    static if DEBUG_MSGS then
                        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"CONVERT STRING THREAD CRASH")
                    endif
                    debug set this = 1/0
                debug endif
            endloop
            
            return this
        endmethod
        method clear takes nothing returns nothing
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Clear Null BigInt")
                debug return
            debug endif
            if (not next.head) then
                static if DOUBLE_FREE_CHECK then
                    call deallocateRange(next, prev)
                else
                    set prev.next = thistype(0).next
                    set thistype(0).next = next
                endif
                set next = this
                set prev = this
                set size = 0
            endif
            set digit = 0
        endmethod
        method destroy takes nothing returns nothing
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Destroy Null BigInt")
                debug return
            debug endif
            
            static if DOUBLE_FREE_CHECK then
                call deallocateRange(this, prev)
            else
                set prev.next = thistype(0).next
                set thistype(0).next = this
            endif
            
            set head = false
            set size = 0
        endmethod
        
        private static BigInt eToCopy
        private static BigInt eCloneCopy
        private static method eCopy takes nothing returns boolean
            local thistype this = eToCopy
            local thistype n = eCloneCopy
            local thistype clone = eCloneCopy
            local integer ops = 3092
            
            debug set rn = false
            loop
                set this = next
                exitwhen head or 0 == ops
                set ops = ops - 1
                set n = allocate()
                call clone.ad(n)
                set n.digit = digit
            endloop
            debug set rn = true
            
            set eToCopy = this
        
            return head
        endmethod
        method copy takes nothing returns thistype
            local thistype clone
            
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Copy Null BigInt")
                debug return 0
            debug endif
            
            set clone = allocate()
            
            set clone.next = clone
            set clone.prev = clone
            set clone.head = true
            set clone.bm = bm
            set clone.packed = packed
            
            set eToCopy = this
            set eCloneCopy = clone
            loop
                exitwhen TriggerEvaluate(evalCopy)
                debug if (not rn) then
                    static if DEBUG_MSGS then
                        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"COPY THREAD CRASH")
                    endif
                    debug set this = 1/0
                debug endif
            endloop
            
            return clone
        endmethod
        method remake takes nothing returns thistype
            local thistype clone
            
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Remake Null BigInt")
                debug return 0
            debug endif
            
            set clone = allocate()
            set clone.head = true
            set clone.bm = bm
            set clone.size = size
            set clone.packed = packed
            if (clone == this) then
                call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Allocation Error In Remake")
                set size = 1/0
            endif
            set size = 0
            if (not next.head) then
                set clone.next = next
                set clone.prev = prev
                set clone.next.prev = clone
                set clone.prev.next = clone
                set next = this
                set prev = this
            else
                set clone.next = clone
                set clone.prev = clone
            endif
            
            return clone
        endmethod
        method enq takes integer i returns nothing
            local thistype n
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Enqueue Null BigInt")
                debug return
            debug endif
            set n = allocate()
            call ad(n)
            set n.digit = i
        endmethod
        method push takes integer i returns nothing
            local thistype n
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Push Null BigInt")
                debug return
            debug endif
            set n = allocate()
            call adp(n)
            set n.digit = i
        endmethod
        method pop takes nothing returns nothing
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Pop Null BigInt")
                debug return
            debug endif
            debug if (next.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Pop 0 BigInt")
                debug return
            debug endif
            set size = size - 1
            set this = next
            set prev.next = next
            set next.prev = prev
            static if DOUBLE_FREE_CHECK then
                call deallocate()
            else
                set next = thistype(0).next
                set thistype(0).next = this
            endif
        endmethod
        method deq takes nothing returns nothing
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Deq Null BigInt")
                debug return
            debug endif
            debug if (next.head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Deq 0 BigInt")
                debug return
            debug endif
            set size = size - 1
            set this = prev
            set prev.next = next
            set next.prev = prev
            static if DOUBLE_FREE_CHECK then
                call deallocate()
            else
                set next = thistype(0).next
                set thistype(0).next = this
            endif
        endmethod
        method toInt takes nothing returns integer
            local integer i = 0
            local integer base
            debug if (not head) then
                debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Attempted To Convert Null BigInt To Int")
                debug set i = 1/0
            debug endif
            if (packed or 0 == bm) then
                set base = packedBase[bm.size]
            else
                set base = bm.size
            endif
            loop
                set this = prev
                exitwhen head
                set i = i*base+digit
            endloop
            return i
        endmethod
        private static string eBigIntString
        private static BigInt eBigInt2String
        private static method eToString takes nothing returns boolean
            local thistype this = eBigInt2String
            local string s = ""
            local string array chars
            local integer stringLength = 0
            local Base b = bm
            
            debug local integer c = 0
            debug local thistype root = this
            
            if (packed or 0 == bm) then
                if (next.head) then
                    set eBigIntString = "0"
                    return true
                endif
                loop
                    set this = next
                    exitwhen head
                    set chars[stringLength] = I2S(digit)
                    set chars[stringLength + 1] = ", "
                    set stringLength = stringLength + 2
                    debug set c = c + 1
                    debug if (c > root.size) then
                        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Malformed BigInt: "+s)
                        debug set b = 1/0
                    debug endif
                endloop
                set stringLength = stringLength - 1
            else
                if (next.head) then
                    set eBigIntString = b.char(0)
                    return true
                endif
                loop
                    set this = next
                    exitwhen head
                    set chars[stringLength] = b.char(digit)
                    set stringLength = stringLength + 1
                    debug set c = c + 1
                    debug if (c > root.size) then
                        debug call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,10,"Malformed BigInt: "+s)
                        debug set b = 1/0
                    debug endif
                endloop
            endif
            set s = chars[4095] + chars[4094] + chars[4093] + chars[4092] + chars[4091] + chars[4090] + chars[4089] + chars[4088] + chars[4087] + chars[4086] + chars[4085] + chars[4084] + chars[4083] + chars[4082] + chars[4081] + chars[4080] + chars[4079] + chars[4078] + chars[4077] + chars[4076] + chars[4075] + chars[4074] + chars[4073] + chars[4072] + chars[4071] + chars[4070] + chars[4069] + chars[4068] + chars[4067] + chars[4066] + chars[4065] + chars[4064] + chars[4063] + chars[4062] + chars[4061] + chars[4060] + chars[4059] + chars[4058] + chars[4057] + chars[4056] + chars[4055] + chars[4054] + chars[4053] + chars[4052] + chars[4051] + chars[4050] + chars[4049] + chars[4048] + chars[4047] + chars[4046] + chars[4045] + chars[4044] + chars[4043] + chars[4042] + chars[4041] + chars[4040] + chars[4039] + chars[4038] + chars[4037] + chars[4036] + chars[4035] + chars[4034] + chars[4033] + chars[4032] + chars[4031] + chars[4030] + chars[4029] + chars[4028] + chars[4027] + chars[4026] + chars[4025] + chars[4024] + chars[4023] + chars[4022] + chars[4021] + chars[4020] + chars[4019] + chars[4018] + chars[4017] + chars[4016] + chars[4015] + chars[4014] + chars[4013] + chars[4012] + chars[4011] + chars[4010] + chars[4009] + chars[4008] + chars[4007] + chars[4006] + chars[4005] + chars[4004] + chars[4003] + chars[4002] + chars[4001] + chars[4000] + /*
            */chars[3999] + chars[3998] + chars[3997] + chars[3996] + chars[3995] + chars[3994] + chars[3993] + chars[3992] + chars[3991] + chars[3990] + chars[3989] + chars[3988] + chars[3987] + chars[3986] + chars[3985] + chars[3984] + chars[3983] + chars[3982] + chars[3981] + chars[3980] + chars[3979] + chars[3978] + chars[3977] + chars[3976] + chars[3975] + chars[3974] + chars[3973] + chars[3972] + chars[3971] + chars[3970] + chars[3969] + chars[3968] + chars[3967] + chars[3966] + chars[3965] + chars[3964] + chars[3963] + chars[3962] + chars[3961] + chars[3960] + chars[3959] + chars[3958] + chars[3957] + chars[3956] + chars[3955] + chars[3954] + chars[3953] + chars[3952] + chars[3951] + chars[3950] + chars[3949] + chars[3948] + chars[3947] + chars[3946] + chars[3945] + chars[3944] + chars[3943] + chars[3942] + chars[3941] + chars[3940] + chars[3939] + chars[3938] + chars[3937] + chars[3936] + chars[3935] + chars[3934] + chars[3933] + chars[3932] + chars[3931] + chars[3930] + chars[3929] + chars[3928] + chars[3927] + chars[3926] + chars[3925] + chars[3924] + chars[3923] + chars[3922] + chars[3921] + chars[3920] + chars[3919] + chars[3918] + chars[3917] + chars[3916] + chars[3915] + chars[3914] + chars[3913] + chars[3912] + chars[3911] + chars[3910] + chars[3909] + chars[3908] + chars[3907] + chars[3906] + chars[3905] + chars[3904] + chars[3903] + chars[3902] + chars[3901] + chars[3900] + /*
            */chars[3899] + chars[3898] + chars[3897] + chars[3896] + chars[3895] + chars[3894] + chars[3893] + chars[3892] + chars[3891] + chars[3890] + chars[3889] + chars[3888] + chars[3887] + chars[3886] + chars[3885] + chars[3884] + chars[3883] + chars[3882] + chars[3881] + chars[3880] + chars[3879] + chars[3878] + chars[3877] + chars[3876] + chars[3875] + chars[3874] + chars[3873] + chars[3872] + chars[3871] + chars[3870] + chars[3869] + chars[3868] + chars[3867] + chars[3866] + chars[3865] + chars[3864] + chars[3863] + chars[3862] + chars[3861] + chars[3860] + chars[3859] + chars[3858] + chars[3857] + chars[3856] + chars[3855] + chars[3854] + chars[3853] + chars[3852] + chars[3851] + chars[3850] + chars[3849] + chars[3848] + chars[3847] + chars[3846] + chars[3845] + chars[3844] + chars[3843] + chars[3842] + chars[3841] + chars[3840] + chars[3839] + chars[3838] + chars[3837] + chars[3836] + chars[3835] + chars[3834] + chars[3833] + chars[3832] + chars[3831] + chars[3830] + chars[3829] + chars[3828] + chars[3827] + chars[3826] + chars[3825] + chars[3824] + chars[3823] + chars[3822] + chars[3821] + chars[3820] + chars[3819] + chars[3818] + chars[3817] + chars[3816] + chars[3815] + chars[3814] + chars[3813] + chars[3812] + chars[3811] + chars[3810] + chars[3809] + chars[3808] + chars[3807] + chars[3806] + chars[3805] + chars[3804] + chars[3803] + chars[3802] + chars[3801] + chars[3800] + /*
            */chars[3799] + chars[3798] + chars[3797] + chars[3796] + chars[3795] + chars[3794] + chars[3793] + chars[3792] + chars[3791] + chars[3790] + chars[3789] + chars[3788] + chars[3787] + chars[3786] + chars[3785] + chars[3784] + chars[3783] + chars[3782] + chars[3781] + chars[3780] + chars[3779] + chars[3778] + chars[3777] + chars[3776] + chars[3775] + chars[3774] + chars[3773] + chars[3772] + chars[3771] + chars[3770] + chars[3769] + chars[3768] + chars[3767] + chars[3766] + chars[3765] + chars[3764] + chars[3763] + chars[3762] + chars[3761] + chars[3760] + chars[3759] + chars[3758] + chars[3757] + chars[3756] + chars[3755] + chars[3754] + chars[3753] + chars[3752] + chars[3751] + chars[3750] + chars[3749] + chars[3748] + chars[3747] + chars[3746] + chars[3745] + chars[3744] + chars[3743] + chars[3742] + chars[3741] + chars[3740] + chars[3739] + chars[3738] + chars[3737] + chars[3736] + chars[3735] + chars[3734] + chars[3733] + chars[3732] + chars[3731] + chars[3730] + chars[3729] + chars[3728] + chars[3727] + chars[3726] + chars[3725] + chars[3724] + chars[3723] + chars[3722] + chars[3721] + chars[3720] + chars[3719] + chars[3718] + chars[3717] + chars[3716] + chars[3715] + chars[3714] + chars[3713] + chars[3712] + chars[3711] + chars[3710] + chars[3709] + chars[3708] + chars[3707] + chars[3706] + chars[3705] + chars[3704] + chars[3703] + chars[3702] + chars[3701] + chars[3700] + /*
            */chars[3699] + chars[3698] + chars[3697] + chars[3696] + chars[3695] + chars[3694] + chars[3693] + chars[3692] + chars[3691] + chars[3690] + chars[3689] + chars[3688] + chars[3687] + chars[3686] + chars[3685] + chars[3684] + chars[3683] + chars[3682] + chars[3681] + chars[3680] + chars[3679] + chars[3678] + chars[3677] + chars[3676] + chars[3675] + chars[3674] + chars[3673] + chars[3672] + chars[3671] + chars[3670] + chars[3669] + chars[3668] + chars[3667] + chars[3666] + chars[3665] + chars[3664] + chars[3663] + chars[3662] + chars[3661] + chars[3660] + chars[3659] + chars[3658] + chars[3657] + chars[3656] + chars[3655] + chars[3654] + chars[3653] + chars[3652] + chars[3651] + chars[3650] + chars[3649] + chars[3648] + chars[3647] + chars[3646] + chars[3645] + chars[3644] + chars[3643] + chars[3642] + chars[3641] + chars[3640] + chars[3639] + chars[3638] + chars[3637] + chars[3636] + chars[3635] + chars[3634] + chars[3633] + chars[3632] + chars[3631] + chars[3630] + chars[3629] + chars[3628] + chars[3627] + chars[3626] + chars[3625] + chars[3624] + chars[3623] + chars[3622] + chars[3621] + chars[3620] + chars[3619] + chars[3618] + chars[3617] + chars[3616] + chars[3615] + chars[3614] + chars[3613] + chars[3612] + chars[3611] + chars[3610] + chars[3609] + chars[3608] + chars[3607] + chars[3606] + chars[3605] + chars[3604] + chars[3603] + chars[3602] + chars[3601] + chars[3600] + /*
            */chars[3599] + chars[3598] + chars[3597] + chars[3596] + chars[3595] + chars[3594] + chars[3593] + chars[3592] + chars[3591] + chars[3590] + chars[3589] + chars[3588] + chars[3587] + chars[3586] + chars[3585] + chars[3584] + chars[3583] + chars[3582] + chars[3581] + chars[3580] + chars[3579] + chars[3578] + chars[3577] + chars[3576] + chars[3575] + chars[3574] + chars[3573] + chars[3572] + chars[3571] + chars[3570] + chars[3569] + chars[3568] + chars[3567] + chars[3566] + chars[3565] + chars[3564] + chars[3563] + chars[3562] + chars[3561] + chars[3560] + chars[3559] + chars[3558] + chars[3557] + chars[3556] + chars[3555] + chars[3554] + chars[3553] + chars[3552] + chars[3551] + chars[3550] + chars[3549] + chars[3548] + chars[3547] + chars[3546] + chars[3545] + chars[3544] + chars[3543] + chars[3542] + chars[3541] + chars[3540] + chars[3539] + chars[3538] + chars[3537] + chars[3536] + chars[3535] + chars[3534] + chars[3533] + chars[3532] + chars[3531] + chars[3530] + chars[3529] + chars[3528] + chars[3527] + chars[3526] + chars[3525] + chars[3524] + chars[3523] + chars[3522] + chars[3521] + chars[3520] + chars[3519] + chars[3518] + chars[3517] + chars[3516] + chars[3515] + chars[3514] + chars[3513] + chars[3512] + chars[3511] + chars[3510] + chars[3509] + chars[3508] + chars[3507] + chars[3506] + chars[3505] + chars[3504] + chars[3503] + chars[3502] + chars[3501] + chars[3500] + /*
            */chars[3499] + chars[3498] + chars[3497] + chars[3496] + chars[3495] + chars[3494] + chars[3493] + chars[3492] + chars[3491] + chars[3490] + chars[3489] + chars[3488] + chars[3487] + chars[3486] + chars[3485] + chars[3484] + chars[3483] + chars[3482] + chars[3481] + chars[3480] + chars[3479] + chars[3478] + chars[3477] + chars[3476] + chars[3475] + chars[3474] + chars[3473] + chars[3472] + chars[3471] + chars[3470] + chars[3469] + chars[3468] + chars[3467] + chars[3466] + chars[3465] + chars[3464] + chars[3463] + chars[3462] + chars[3461] + chars[3460] + chars[3459] + chars[3458] + chars[3457] + chars[3456] + chars[3455] + chars[3454] + chars[3453] + chars[3452] + chars[3451] + chars[3450] + chars[3449] + chars[3448] + chars[3447] + chars[3446] + chars[3445] + chars[3444] + chars[3443] + chars[3442] + chars[3441] + chars[3440] + chars[3439] + chars[3438] + chars[3437] + chars[3436] + chars[3435] + chars[3434] + chars[3433] + chars[3432] + chars[3431] + chars[3430] + chars[3429] + chars[3428] + chars[3427] + chars[3426] + chars[3425] + chars[3424] + chars[3423] + chars[3422] + chars[3421] + chars[3420] + chars[3419] + chars[3418] + chars[3417] + chars[3416] + chars[3415] + chars[3414] + chars[3413] + chars[3412] + chars[3411] + chars[3410] + chars[3409] + chars[3408] + chars[3407] + chars[3406] + chars[3405] + chars[3404] + chars[3403] + chars[3402] + chars[3401] + chars[3400] + /*
            */chars[3399] + chars[3398] + chars[3397] + chars[3396] + chars[3395] + chars[3394] + chars[3393] + chars[3392] + chars[3391] + chars[3390] + chars[3389] + chars[3388] + chars[3387] + chars[3386] + chars[3385] + chars[3384] + chars[3383] + chars[3382] + chars[3381] + chars[3380] + chars[3379] + chars[3378] + chars[3377] + chars[3376] + chars[3375] + chars[3374] + chars[3373] + chars[3372] + chars[3371] + chars[3370] + chars[3369] + chars[3368] + chars[3367] + chars[3366] + chars[3365] + chars[3364] + chars[3363] + chars[3362] + chars[3361] + chars[3360] + chars[3359] + chars[3358] + chars[3357] + chars[3356] + chars[3355] + chars[3354] + chars[3353] + chars[3352] + chars[3351] + chars[3350] + chars[3349] + chars[3348] + chars[3347] + chars[3346] + chars[3345] + chars[3344] + chars[3343] + chars[3342] + chars[3341] + chars[3340] + chars[3339] + chars[3338] + chars[3337] + chars[3336] + chars[3335] + chars[3334] + chars[3333] + chars[3332] + chars[3331] + chars[3330] + chars[3329] + chars[3328] + chars[3327] + chars[3326] + chars[3325] + chars[3324] + chars[3323] + chars[3322] + chars[3321] + chars[3320] + chars[3319] + chars[3318] + chars[3317] + chars[3316] + chars[3315] + chars[3314] + chars[3313] + chars[3312] + chars[3311] + chars[3310] + chars[3309] + chars[3308] + chars[3307] + chars[3306] + chars[3305] + chars[3304] + chars[3303] + chars[3302] + chars[3301] + chars[3300] + /*
            */chars[3299] + chars[3298] + chars[3297] + chars[3296] + chars[3295] + chars[3294] + chars[3293] + chars[3292] + chars[3291] + chars[3290] + chars[3289] + chars[3288] + chars[3287] + chars[3286] + chars[3285] + chars[3284] + chars[3283] + chars[3282] + chars[3281] + chars[3280] + chars[3279] + chars[3278] + chars[3277] + chars[3276] + chars[3275] + chars[3274] + chars[3273] + chars[3272] + chars[3271] + chars[3270] + chars[3269] + chars[3268] + chars[3267] + chars[3266] + chars[3265] + chars[3264] + chars[3263] + chars[3262] + chars[3261] + chars[3260] + chars[3259] + chars[3258] + chars[3257] + chars[3256] + chars[3255] + chars[3254] + chars[3253] + chars[3252] + chars[3251] + chars[3250] + chars[3249] + chars[3248] + chars[3247] + chars[3246] + chars[3245] + chars[3244] + chars[3243] + chars[3242] + chars[3241] + chars[3240] + chars[3239] + chars[3238] + chars[3237] + chars[3236] + chars[3235] + chars[3234] + chars[3233] + chars[3232] + chars[3231] + chars[3230] + chars[3229] + chars[3228] + chars[3227] + chars[3226] + chars[3225] + chars[3224] + chars[3223] + chars[3222] + chars[3221] + chars[3220] + chars[3219] + chars[3218] + chars[3217] + chars[3216] + chars[3215] + chars[3214] + chars[3213] + chars[3212] + chars[3211] + chars[3210] + chars[3209] + chars[3208] + chars[3207] + chars[3206] + chars[3205] + chars[3204] + chars[3203] + chars[3202] + chars[3201] + chars[3200] + /*
            */chars[3199] + chars[3198] + chars[3197] + chars[3196] + chars[3195] + chars[3194] + chars[3193] + chars[3192] + chars[3191] + chars[3190] + chars[3189] + chars[3188] + chars[3187] + chars[3186] + chars[3185] + chars[3184] + chars[3183] + chars[3182] + chars[3181] + chars[3180] + chars[3179] + chars[3178] + chars[3177] + chars[3176] + chars[3175] + chars[3174] + chars[3173] + chars[3172] + chars[3171] + chars[3170] + chars[3169] + chars[3168] + chars[3167] + chars[3166] + chars[3165] + chars[3164] + chars[3163] + chars[3162] + chars[3161] + chars[3160] + chars[3159] + chars[3158] + chars[3157] + chars[3156] + chars[3155] + chars[3154] + chars[3153] + chars[3152] + chars[3151] + chars[3150] + chars[3149] + chars[3148] + chars[3147] + chars[3146] + chars[3145] + chars[3144] + chars[3143] + chars[3142] + chars[3141] + chars[3140] + chars[3139] + chars[3138] + chars[3137] + chars[3136] + chars[3135] + chars[3134] + chars[3133] + chars[3132] + chars[3131] + chars[3130] + chars[3129] + chars[3128] + chars[3127] + chars[3126] + chars[3125] + chars[3124] + chars[3123] + chars[3122] + chars[3121] + chars[3120] + chars[3119] + chars[3118] + chars[3117] + chars[3116] + chars[3115] + chars[3114] + chars[3113] + chars[3112] + chars[3111] + chars[3110] + chars[3109] + chars[3108] + chars[3107] + chars[3106] + chars[3105] + chars[3104] + chars[3103] + chars[3102] + chars[3101] + chars[3100] + /*
            */chars[3099] + chars[3098] + chars[3097] + chars[3096] + chars[3095] + chars[3094] + chars[3093] + chars[3092] + chars[3091] + chars[3090] + chars[3089] + chars[3088] + chars[3087] + chars[3086] + chars[3085] + chars[3084] + chars[3083] + chars[3082] + chars[3081] + chars[3080] + chars[3079] + chars[3078] + chars[3077] + chars[3076] + chars[3075] + chars[3074] + chars[3073] + chars[3072] + chars[3071] + chars[3070] + chars[3069] + chars[3068] + chars[3067] + chars[3066] + chars[3065] + chars[3064] + chars[3063] + chars[3062] + chars[3061] + chars[3060] + chars[3059] + chars[3058] + chars[3057] + chars[3056] + chars[3055] + chars[3054] + chars[3053] + chars[3052] + chars[3051] + chars[3050] + chars[3049] + chars[3048] + chars[3047] + chars[3046] + chars[3045] + chars[3044] + chars[3043] + chars[3042] + chars[3041] + chars[3040] + chars[3039] + chars[3038] + chars[3037] + chars[3036] + chars[3035] + chars[3034] + chars[3033] + chars[3032] + chars[3031] + chars[3030] + chars[3029] + chars[3028] + chars[3027] + chars[3026] + chars[3025] + chars[3024] + chars[3023] + chars[3022] + chars[3021] + chars[3020] + chars[3019] + chars[3018] + chars[3017] + chars[3016] + chars[3015] + chars[3014] + chars[3013] + chars[3012] + chars[3011] + chars[3010] + chars[3009] + chars[3008] + chars[3007] + chars[3006] + chars[3005] + chars[3004] + chars[3003] + chars[3002] + chars[3001] + chars[3000] + /*
            */chars[2999] + chars[2998] + chars[2997] + chars[2996] + chars[2995] + chars[2994] + chars[2993] + chars[2992] + chars[2991] + chars[2990] + chars[2989] + chars[2988] + chars[2987] + chars[2986] + chars[2985] + chars[2984] + chars[2983] + chars[2982] + chars[2981] + chars[2980] + chars[2979] + chars[2978] + chars[2977] + chars[2976] + chars[2975] + chars[2974] + chars[2973] + chars[2972] + chars[2971] + chars[2970] + chars[2969] + chars[2968] + chars[2967] + chars[2966] + chars[2965] + chars[2964] + chars[2963] + chars[2962] + chars[2961] + chars[2960] + chars[2959] + chars[2958] + chars[2957] + chars[2956] + chars[2955] + chars[2954] + chars[2953] + chars[2952] + chars[2951] + chars[2950] + chars[2949] + chars[2948] + chars[2947] + chars[2946] + chars[2945] + chars[2944] + chars[2943] + chars[2942] + chars[2941] + chars[2940] + chars[2939] + chars[2938] + chars[2937] + chars[2936] + chars[2935] + chars[2934] + chars[2933] + chars[2932] + chars[2931] + chars[2930] + chars[2929] + chars[2928] + chars[2927] + chars[2926] + chars[2925] + chars[2924] + chars[2923] + chars[2922] + chars[2921] + chars[2920] + chars[2919] + chars[2918] + chars[2917] + chars[2916] + chars[2915] + chars[2914] + chars[2913] + chars[2912] + chars[2911] + chars[2910] + chars[2909] + chars[2908] + chars[2907] + chars[2906] + chars[2905] + chars[2904] + chars[2903] + chars[2902] + chars[2901] + chars[2900] + /*
            */chars[2899] + chars[2898] + chars[2897] + chars[2896] + chars[2895] + chars[2894] + chars[2893] + chars[2892] + chars[2891] + chars[2890] + chars[2889] + chars[2888] + chars[2887] + chars[2886] + chars[2885] + chars[2884] + chars[2883] + chars[2882] + chars[2881] + chars[2880] + chars[2879] + chars[2878] + chars[2877] + chars[2876] + chars[2875] + chars[2874] + chars[2873] + chars[2872] + chars[2871] + chars[2870] + chars[2869] + chars[2868] + chars[2867] + chars[2866] + chars[2865] + chars[2864] + chars[2863] + chars[2862] + chars[2861] + chars[2860] + chars[2859] + chars[2858] + chars[2857] + chars[2856] + chars[2855] + chars[2854] + chars[2853] + chars[2852] + chars[2851] + chars[2850] + chars[2849] + chars[2848] + chars[2847] + chars[2846] + chars[2845] + chars[2844] + chars[2843] + chars[2842] + chars[2841] + chars[2840] + chars[2839] + chars[2838] + chars[2837] + chars[2836] + chars[2835] + chars[2834] + chars[2833] + chars[2832] + chars[2831] + chars[2830] + chars[2829] + chars[2828] + chars[2827] + chars[2826] + chars[2825] + chars[2824] + chars[2823] + chars[2822] + chars[2821] + chars[2820] + chars[2819] + chars[2818] + chars[2817] + chars[2816] + chars[2815] + chars[2814] + chars[2813] + chars[2812] + chars[2811] + chars[2810] + chars[2809] + chars[2808] + chars[2807] + chars[2806] + chars[2805] + chars[2804] + chars[2803] + chars[2802] + chars[2801] + chars[2800] + /*
            */chars[2799] + chars[2798] + chars[2797] + chars[2796] + chars[2795] + chars[2794] + chars[2793] + chars[2792] + chars[2791] + chars[2790] + chars[2789] + chars[2788] + chars[2787] + chars[2786] + chars[2785] + chars[2784] + chars[2783] + chars[2782] + chars[2781] + chars[2780] + chars[2779] + chars[2778] + chars[2777] + chars[2776] + chars[2775] + chars[2774] + chars[2773] + chars[2772] + chars[2771] + chars[2770] + chars[2769] + chars[2768] + chars[2767] + chars[2766] + chars[2765] + chars[2764] + chars[2763] + chars[2762] + chars[2761] + chars[2760] + chars[2759] + chars[2758] + chars[2757] + chars[2756] + chars[2755] + chars[2754] + chars[2753] + chars[2752] + chars[2751] + chars[2750] + chars[2749] + chars[2748] + chars[2747] + chars[2746] + chars[2745] + chars[2744] + chars[2743] + chars[2742] + chars[2741] + chars[2740] + chars[2739] + chars[2738] + chars[2737] + chars[2736] + chars[2735] + chars[2734] + chars[2733] + chars[2732] + chars[2731] + chars[2730] + chars[2729] + chars[2728] + chars[2727] + chars[2726] + chars[2725] + chars[2724] + chars[2723] + chars[2722] + chars[2721] + chars[2720] + chars[2719] + chars[2718] + chars[2717] + chars[2716] + chars[2715] + chars[2714] + chars[2713] + chars[2712] + chars[2711] + chars[2710] + chars[2709] + chars[2708] + chars[2707] + chars[2706] + chars[2705] + chars[2704] + chars[2703] + chars[2702] + chars[2701] + chars[2700] + /*
            */chars[2699] + chars[2698] + chars[2697] + chars[2696] + chars[2695] + chars[2694] + chars[2693] + chars[2692] + chars[2691] + chars[2690] + chars[2689] + chars[2688] + chars[2687] + chars[2686] + chars[2685] + chars[2684] + chars[2683] + chars[2682] + chars[2681] + chars[2680] + chars[2679] + chars[2678] + chars[2677] + chars[2676] + chars[2675] + chars[2674] + chars[2673] + chars[2672] + chars[2671] + chars[2670] + chars[2669] + chars[2668] + chars[2667] + chars[2666] + chars[2665] + chars[2664] + chars[2663] + chars[2662] + chars[2661] + chars[2660] + chars[2659] + chars[2658] + chars[2657] + chars[2656] + chars[2655] + chars[2654] + chars[2653] + chars[2652] + chars[2651] + chars[2650] + chars[2649] + chars[2648] + chars[2647] + chars[2646] + chars[2645] + chars[2644] + chars[2643] + chars[2642] + chars[2641] + chars[2640] + chars[2639] + chars[2638] + chars[2637] + chars[2636] + chars[2635] + chars[2634] + chars[2633] + chars[2632] + chars[2631] + chars[2630] + chars[2629] + chars[2628] + chars[2627] + chars[2626] + chars[2625] + chars[2624] + chars[2623] + chars[2622] + chars[2621] + chars[2620] + chars[2619] + chars[2618] + chars[2617] + chars[2616] + chars[2615] + chars[2614] + chars[2613] + chars[2612] + chars[2611] + chars[2610] + chars[2609] + chars[2608] + chars[2607] + chars[2606] + chars[2605] + chars[2604] + chars[2603] + chars[2602] + chars[2601] + chars[2600] + /*
            */chars[2599] + chars[2598] + chars[2597] + chars[2596] + chars[2595] + chars[2594] + chars[2593] + chars[2592] + chars[2591] + chars[2590] + chars[2589] + chars[2588] + chars[2587] + chars[2586] + chars[2585] + chars[2584] + chars[2583] + chars[2582] + chars[2581] + chars[2580] + chars[2579] + chars[2578] + chars[2577] + chars[2576] + chars[2575] + chars[2574] + chars[2573] + chars[2572] + chars[2571] + chars[2570] + chars[2569] + chars[2568] + chars[2567] + chars[2566] + chars[2565] + chars[2564] + chars[2563] + chars[2562] + chars[2561] + chars[2560] + chars[2559] + chars[2558] + chars[2557] + chars[2556] + chars[2555] + chars[2554] + chars[2553] + chars[2552] + chars[2551] + chars[2550] + chars[2549] + chars[2548] + chars[2547] + chars[2546] + chars[2545] + chars[2544] + chars[2543] + chars[2542] + chars[2541] + chars[2540] + chars[2539] + chars[2538] + chars[2537] + chars[2536] + chars[2535] + chars[2534] + chars[2533] + chars[2532] + chars[2531] + chars[2530] + chars[2529] + chars[2528] + chars[2527] + chars[2526] + chars[2525] + chars[2524] + chars[2523] + chars[2522] + chars[2521] + chars[2520] + chars[2519] + chars[2518] + chars[2517] + chars[2516] + chars[2515] + chars[2514] + chars[2513] + chars[2512] + chars[2511] + chars[2510] + chars[2509] + chars[2508] + chars[2507] + chars[2506] + chars[2505] + chars[2504] + chars[2503] + chars[2502] + chars[2501] + chars[2500] + /*
            */chars[2499] + chars[2498] + chars[2497] + chars[2496] + chars[2495] + chars[2494] + chars[2493] + chars[2492] + chars[2491] + chars[2490] + chars[2489] + chars[2488] + chars[2487] + chars[2486] + chars[2485] + chars[2484] + chars[2483] + chars[2482] + chars[2481] + chars[2480] + chars[2479] + chars[2478] + chars[2477] + chars[2476] + chars[2475] + chars[2474] + chars[2473] + chars[2472] + chars[2471] + chars[2470] + chars[2469] + chars[2468] + chars[2467] + chars[2466] + chars[2465] + chars[2464] + chars[2463] + chars[2462] + chars[2461] + chars[2460] + chars[2459] + chars[2458] + chars[2457] + chars[2456] + chars[2455] + chars[2454] + chars[2453] + chars[2452] + chars[2451] + chars[2450] + chars[2449] + chars[2448] + chars[2447] + chars[2446] + chars[2445] + chars[2444] + chars[2443] + chars[2442] + chars[2441] + chars[2440] + chars[2439] + chars[2438] + chars[2437] + chars[2436] + chars[2435] + chars[2434] + chars[2433] + chars[2432] + chars[2431] + chars[2430] + chars[2429] + chars[2428] + chars[2427] + chars[2426] + chars[2425] + chars[2424] + chars[2423] + chars[2422] + chars[2421] + chars[2420] + chars[2419] + chars[2418] + chars[2417] + chars[2416] + chars[2415] + chars[2414] + chars[2413] + chars[2412] + chars[2411] + chars[2410] + chars[2409] + chars[2408] + chars[2407] + chars[2406] + chars[2405] + chars[2404] + chars[2403] + chars[2402] + chars[2401] + chars[2400] + /*
Request a map? Follow the rulesHERE
Request templateHERE
Please, do not PM me.
On the side note, I'm still playing vampirism speed on malaysia room, occasionally in Garena. Bcuz too lazy to find out where else I can play them.
owner123
Super Moderator
Posts: 1943
Joined: February 3rd, 2009, 11:28 pm
Been thanked: 1 time

Re: How to use library in a map?

Post by owner123 »

It wasn't that you're "not clear with your question", stop spreading misinformation.
The following warning was issued to this user
» Don't PM me with requests.
(edit) The real irony is that Vegas doesn't know JASS (i believe), so you were wasting your time either way.
Apple
Forum Staff
Posts: 1470
Joined: November 3rd, 2010, 10:48 am
Title: Best Player
Location: Singapore

Re: How to use library in a map?

Post by Apple »

owner123 wrote:It wasn't that you're "not clear with your question", stop spreading misinformation.
The following warning was issued to this user
» Don't PM me with requests.
(edit) The real irony is that Vegas doesn't know JASS (i believe), so you were wasting your time either way.
Because actually I posted a very short question, i edited it and put in the library code after I had the warning, I thought I wasn't clear enough and that's why I had the warning.
I wasn't asking him to help me in the PM either, I quoted the BigInt Lib just to say I'm not just spamming posts and asking him what was the reason of the warning.
awhile later I got another warning about don't pm with request, but that doesn't matter.

Additional details of this post's question.
It's written in vjass.
As I was informed, this BigInt lib can help to scramble codes, however I don't know how to use it.
I think just insert it like JJCP, but I have seen more than 1 globals.
Request a map? Follow the rulesHERE
Request templateHERE
Please, do not PM me.
On the side note, I'm still playing vampirism speed on malaysia room, occasionally in Garena. Bcuz too lazy to find out where else I can play them.
User avatar
Nuuby
Forum Staff
Posts: 519
Joined: October 18th, 2010, 8:43 am

Re: How to use library in a map?

Post by Nuuby »

Put it into a test map in WE, save and open it up in jasscraft. Haven't tried it but that would probably work.