Magentix
if (OP.statement == false) postCount++;
- Reaction score
- 107
I've just created the mother of all RawID converting systems
Check this out, it will come in very handy for Project Nethershard, so perhaps it might serve you any good as well...
P.S.: If you combine this with Cohadar's Extended Arrays system, you can have 65k abilities in your map and still be able to assign them data through their RawIDs
Check this out, it will come in very handy for Project Nethershard, so perhaps it might serve you any good as well...
P.S.: If you combine this with Cohadar's Extended Arrays system, you can have 65k abilities in your map and still be able to assign them data through their RawIDs
JASS:
//==================================================================//
// //
// MAGENTIX' ID MANIPULATOR v1.00 //
// //
//==================================================================//
// **************************************************************** //
// //
// INSTRUCTIONS: //
// ============= //
// //
// This system converts Ability, Item, Research, Buff, etc. //
// RawIDs into subsequent integers (starting from zero) or even //
// a string containing the RawID's name! //
// //
// The most logical use would be using ID2I to convert a RawID //
// into an integer inside array index limits, allowing you to //
// assign data to a RawID by simply using: //
// //
// set SOMEABILITYDATA[ID2I('A1X3')] = "Taco!" //
// //
// //
// HOW TO USE: //
// =========== //
// Copy this trigger into your map. //
// - Call ID2I(SomeID) to convert it into a simple integer //
// - Call ID2S(SomeID) to convert it into the ID string //
// //
// REQUIREMENTS: //
// ============= //
// - vJASS //
// //
// LIMITATIONS: //
// ============ //
// - None! //
// //
// //
// TIP: 'A6BJ' will return 8191 (max normal array index) //
// //
// **************************************************************** //
// //
// -- Credit is not required, but would be appreciated -- //
// //
// **************************************************************** //
library IDM initializer Init
globals
private constant integer FactorX = 256
private constant integer FactorXX = 65536
private constant integer FactorXXX = 16777216
private string array SEMI_ASCII
endglobals
function ID2I takes integer ID returns integer
local integer array Int
local integer array Sub
local integer i = 1
set Int[0] = (ID - (ID - (ID / FactorXXX) * FactorXXX)) / FactorXXX
set Sub[0] = FactorXXX * Int[0] + FactorXX * 48 + FactorX * 48 + 48
set Int[1] = ((ID - Sub[0]) - ((ID - Sub[0]) - ((ID - Sub[0]) / FactorXX) * FactorXX)) / FactorXX
set Sub[1] = FactorXX * Int[1]
set Int[2] = ((ID - Sub[0] - Sub[1]) - ((ID - Sub[0] - Sub[1]) - ((ID - Sub[0] - Sub[1]) / FactorX) * FactorX)) / FactorX
set Sub[2] = FactorX * Int[2]
set Int[3] = ID - (Int[0] * FactorXXX + (Int[1] + 48) * FactorXX + (Int[2] + 48) * FactorX + 48)
loop
exitwhen i > 3
if Int<i> > 9 then
set Int<i> = Int<i> - 7
endif
set i = i + 1
endloop
return Int[3] + Int[2] * 36 + Int[1] * 36 * 36
endfunction
function ID2S takes integer ID returns string
local integer array Int
local integer array Sub
local integer i = 1
set Int[0] = (ID - (ID - (ID / FactorXXX) * FactorXXX)) / FactorXXX
set Sub[0] = FactorXXX * Int[0] + FactorXX * 48 + FactorX * 48 + 48
set Int[1] = ((ID - Sub[0]) - ((ID - Sub[0]) - ((ID - Sub[0]) / FactorXX) * FactorXX)) / FactorXX
set Sub[1] = FactorXX * Int[1]
set Int[2] = ((ID - Sub[0] - Sub[1]) - ((ID - Sub[0] - Sub[1]) - ((ID - Sub[0] - Sub[1]) / FactorX) * FactorX)) / FactorX
set Sub[2] = FactorX * Int[2]
set Int[3] = ID - (Int[0] * FactorXXX + (Int[1] + 48) * FactorXX + (Int[2] + 48) * FactorX + 48)
loop
exitwhen i > 3
if Int<i> > 9 then
set Int<i> = Int<i> + 48
endif
set i = i + 1
endloop
return (SEMI_ASCII[Int[0]] + SEMI_ASCII[Int[1]] + SEMI_ASCII[Int[2]] + SEMI_ASCII[Int[3]])
endfunction
private function Init takes nothing returns nothing
set SEMI_ASCII[0] = "0"
set SEMI_ASCII[1] = "1"
set SEMI_ASCII[2] = "2"
set SEMI_ASCII[3] = "3"
set SEMI_ASCII[4] = "4"
set SEMI_ASCII[5] = "5"
set SEMI_ASCII[6] = "6"
set SEMI_ASCII[7] = "7"
set SEMI_ASCII[8] = "8"
set SEMI_ASCII[9] = "9"
set SEMI_ASCII[65] = "A"
set SEMI_ASCII[66] = "B"
set SEMI_ASCII[67] = "C"
set SEMI_ASCII[68] = "D"
set SEMI_ASCII[69] = "E"
set SEMI_ASCII[70] = "F"
set SEMI_ASCII[71] = "G"
set SEMI_ASCII[72] = "H"
set SEMI_ASCII[73] = "I"
set SEMI_ASCII[74] = "J"
set SEMI_ASCII[75] = "K"
set SEMI_ASCII[76] = "L"
set SEMI_ASCII[77] = "M"
set SEMI_ASCII[78] = "N"
set SEMI_ASCII[79] = "O"
set SEMI_ASCII[80] = "P"
set SEMI_ASCII[81] = "Q"
set SEMI_ASCII[82] = "R"
set SEMI_ASCII[83] = "S"
set SEMI_ASCII[84] = "T"
set SEMI_ASCII[85] = "U"
set SEMI_ASCII[86] = "V"
set SEMI_ASCII[87] = "W"
set SEMI_ASCII[88] = "X"
set SEMI_ASCII[89] = "Y"
set SEMI_ASCII[90] = "Z"
set SEMI_ASCII[101] = "e"
set SEMI_ASCII[104] = "h"
set SEMI_ASCII[110] = "n"
set SEMI_ASCII[111] = "o"
set SEMI_ASCII[117] = "u"
endfunction
endlibrary</i></i></i></i></i></i>