Kyle@3: --[[ Kyle@3: Title: Suicide Kings Kyle@3: Author: Brom Kyle@3: Version: 0.1 Kyle@3: ]] Kyle@3: Kyle@3: local function RandomCharacter() Kyle@3: Kyle@3: -- 0-9, A-Z, a-z = 10 + 26 + 16 Kyle@3: local i = math.random(0,61) Kyle@3: Kyle@3: -- strip offset and ascii jump Kyle@3: if ( i >= 36 ) then Kyle@3: -- a:z Kyle@3: i = ( i - 36 ) + 97 Kyle@3: elseif ( i >= 10 ) then Kyle@3: -- A:Z Kyle@3: i = ( i - 10 ) + 65 Kyle@3: else Kyle@3: -- 0:9 Kyle@3: i = ( i + 48 ) Kyle@3: end Kyle@3: Kyle@3: return string.char( i ) Kyle@3: Kyle@3: end Kyle@3: Kyle@3: function SuicideKings:UID( reserved ) Kyle@3: Kyle@3: -- uid length Kyle@3: -- unique values = 62^4 = 14776336 Kyle@3: local length = 4 Kyle@3: Kyle@3: -- generate a random string Kyle@3: local s = RandomCharacter() Kyle@3: for i = 1, length-1 do Kyle@3: local c = RandomCharacter() Kyle@3: s = s .. c Kyle@3: end Kyle@3: Kyle@3: -- if taken, try again Kyle@3: while ( reserved[s] ~= nil ) do Kyle@3: s = SuicideKings:UID( reserved ) Kyle@3: end Kyle@3: Kyle@3: return s Kyle@3: Kyle@3: end