• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Changes

Jump to navigation Jump to search
m
no edit summary
Line 1: Line 1:  +
-- [[Category:Net modules]]
 +
 
local p = {}
 
local p = {}
 +
 +
local bit32 = require( 'bit32' )
    
-- Module for random library functions for lua because lua sucks. Written by
 
-- Module for random library functions for lua because lua sucks. Written by
Line 5: Line 9:  
-- I fucking hate lua.
 
-- I fucking hate lua.
    +
-- Takes a table. Returns a bool of whether it's empty or not.
 +
function table.empty (self)
 +
    for _, _ in pairs(self) do
 +
        return false
 +
    end
 +
    return true
 +
end
 +
 +
function table.getKeys(self)
 +
local keys = {}
 +
for k,_ in pairs(self) do
 +
table.insert(keys,k)
 +
end
 +
return keys
 +
end
 +
 +
function table.getVals(self)
 +
local vals = {}
 +
for _,v in pairs(self) do
 +
table.insert(vals,v)
 +
end
 +
return vals
 +
end
    
-- takes a string and returns string with first letter capitalized
 
-- takes a string and returns string with first letter capitalized
 
function p.capitalize(str)
 
function p.capitalize(str)
 
     return (str:gsub("^%l", string.upper))
 
     return (str:gsub("^%l", string.upper))
 +
end
 +
 +
function p.hashString(str)
 +
local hash = 0
 +
if str == nil or str == "" then
 +
return 0
 +
end
 +
if type(str) == "string" and str ~= "" then
 +
for i = 1, #str do
 +
local letter = str:sub(i,i)
 +
hash = bit32.lshift(hash,3)
 +
hash = hash+str.byte(letter) % (2^31-1)
 +
end
 +
end
 +
return hash
 +
end
 +
 +
 +
-- Hashes a seed if given, if not just returns a hash based on current time.
 +
function p.timeHash(seed)
 +
-- lmfao this function wasn't a hash at all because it would never
 +
-- return the same thing twice.
 +
math.randomseed(p.hashString("Amatsukaze-chan is best"))
 +
 +
local randomizer = 0
 +
 +
if seed == nil then
 +
randomizer = math.random(0,9999999)
 +
elseif type(seed) == "table" then
 +
if table.empty(seed) then
 +
randomizer = math.random(0,9999999)
 +
else
 +
for k,v in pairs(seed) do
 +
if type(k) == "number" then
 +
randomizer = randomizer + k
 +
elseif type(k) == "string" then
 +
randomizer = randomizer + p.hashString(k)
 +
end
 +
if type(v) == "string" then
 +
randomizer = randomizer + p.hashString(v)
 +
elseif type(v) == "number" then
 +
randomizer = randomizer + v
 +
elseif type(v) == "table" then
 +
local tableString = p.dictConcat(v)
 +
randomizer = randomizer + p.hashString(v)
 +
end
 +
end
 +
end
 +
elseif type(seed) == "string" then
 +
randomizer = p.hashString(seed)
 +
elseif type(seed) == "number" then
 +
randomizer = seed
 +
end
 +
local time = os.time()
 +
local rand = math.random()
 +
local rtnHash = (math.floor(time*5501*rand)-math.floor(randomizer*time) + math.floor(math.random()*5501*randomizer)) % 2^32
 +
return rtnHash
 
end
 
end
   Line 61: Line 145:  
end
 
end
   −
p.lowerCase = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}
+
p.lowercase = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}
p.upperCase = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
+
p.uppercase = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
p.letters = p.mergeArrays(p.lowerCase,p.upperCase)
+
p.letters = p.mergeArrays(p.lowercase,p.uppercase)
      Line 79: Line 163:  
         end
 
         end
 
     end
 
     end
 +
end
 +
 +
-- returns number of elements and tables there are.
 +
-- recurse parameter is a boolean on whether to recurse on tables
 +
function p.getTableSize(table, recurse)
 +
    if recurse == nil then recurse = false end
 +
    local size = 0
 +
    for k,v in pairs(table) do
 +
        if type(v) == "table" and recurse then
 +
            size = size+getRowSize(v)
 +
        elseif v ~= "" and k ~= "label" then
 +
            size = size+1
 +
        end
 +
    end
 +
    return size
 
end
 
end
    
return p
 
return p
cssedit, gkautomate
6,928

edits

Navigation menu