Joined: November 3rd, 2010, 10:48 am Posts: 1850 Location: Singapore
Title: Best Player
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:
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
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
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
_________________ 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.
Joined: November 3rd, 2010, 10:48 am Posts: 1850 Location: Singapore
Title: Best Player
owner123 wrote:
It wasn't that you're "not clear with your question", stop spreading misinformation.
Quote:
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.
Users browsing this forum: Bing [Bot] and 16 guests
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum