def make_skills_list t = Time.now file = File.open("Attaques.txt", "w") tab_skills = [] tab_skills_name = [] for id in 1...$data_skills.size skill = $data_skills[id] tab_skills[id] = [] tab_skills_name[id] = skill.name.remove_accents.upcase # Nom de l'attaque tab_skills[id][0] = skill.name.remove_accents.upcase # Nom de l'attaque tab_skills[id][1] = skill.power.to_s # ID effet tab_skills[id][2] = skill.description.remove_accents # Description tab_skills[id][3] = skill.pdef_f.to_s + " %" # % chance effet tab_skills[id][4] = type_name(skill.element_set[0]) # Type phy_spe_sta = case skill.str_f when 0 then "PHYSIQUE" when 1 then "SPECIALE" when 2 then "STATUT" end tab_skills[id][5] = phy_spe_sta # Phy / Spé / Sta tab_skills[id][6] = skill.sp_cost.to_s # PP max tab_skills[id][7] = skill.hit.to_s + " %" # Précision tab_skills[id][8] = (skill.atk_f + skill.eva_f).to_s # Dégâts end temp_skills_name = tab_skills_name.clone temp_skills_name.shift atk = 0 desc = 0 types = 0 for i in tab_skills next if i == nil atk = i[0].size if atk < i[0].size desc = i[2].size if desc < i[2].size types = i[4].size if types < i[4].size end Graphics.update n = 0 file.write("-" * (104 + atk + desc + types) + "\n") file.write("|..ID..|" + "ATTAQUE".center(atk + 4, ".") + "|..ID EFFET..|" + "DESCRIPTION".center(desc + 4, ".") + "|..% EFFET..|" + "TYPE".center(types + 4, ".") + "|..PHY / SPE / STA..|..PP MAX..|..PRECISION..|..DEGATS..|" + "\n") file.write("-" * (104 + atk + desc + types) + "\n") # "| ID | ATTAQUE | ID EFFET | DESCRIPTION | % EFFET | TYPE | PHY / SPE / STA | PP MAX | PRECISION | DEGATS |" until(temp_skills_name.empty?) n += 1 Graphics.update if n % 50 == 0 temp = temp_skills_name[0] for i in 1...temp_skills_name.size temp = temp_skills_name[i] if temp != nil and temp_skills_name[i].before(temp) end id = tab_skills_name.index(temp) next if tab_skills[id].nil? string = "|" + ("." * (5 - (id.to_s.size))) + id.to_s + ".|" # "| ID |" string += ".." + tab_skills[id][0].left(0, atk, ".") + "..|" # " ATTAQUE |" string += ".." + tab_skills[id][1].center(8, ".") + "..|" # " ID EFFET |" string += ".." + tab_skills[id][2].left(0, desc, ".") + "..|" # " DESCRIPTION |" string += ".." + tab_skills[id][3].center(7, ".") + "..|" # " % EFFET |" string += ".." + tab_skills[id][4].left(0, types, ".") + "..|" # " TYPE |" string += ".." + tab_skills[id][5].left(0, 15, ".") + "..|" # " PHY / SPE / STA |" string += ".." + tab_skills[id][6].center(6, ".") + "..|" # " PP MAX |" string += ".." + tab_skills[id][7].center(9, ".") + "..|" # " PRECISION |" string += ".." + tab_skills[id][8].center(6, ".") + "..|" # " DEGATS |" file.write(string + "\n") temp_skills_name.delete(temp) end file.write("-" * (92 + atk + desc + types)) file.close print "Liste des attaques générée en #{(Time.now - t)} secondes." end
class String def before(oth_str) return if oth_str == nil dec_self = 0 dec_oth_str = 0 tab_lettres = ["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"] for i in 0...[self.size, oth_str.size].min dec_self += 1 until tab_lettres.include?(self.upcase[i + dec_self..i + dec_self]) dec_oth_str += 1 until tab_lettres.include?(oth_str.upcase[i + dec_oth_str..i + dec_oth_str]) if self.upcase[i + dec_self..i + dec_self] != oth_str.upcase[i + dec_oth_str..i + dec_oth_str] print self.upcase[i + dec_self..i + dec_self] + " : " + tab_lettres.index(self.upcase[i + dec_self..i + dec_self]).to_s + " - " + oth_str.upcase[i + dec_oth_str..i + dec_oth_str] + " : " + tab_lettres.index(oth_str.upcase[i + dec_oth_str..i + dec_oth_str]).to_s if [tab_lettres.index(self.upcase[i + dec_self..i + dec_self]), tab_lettres.index(oth_str.upcase[i + dec_oth_str..i + dec_oth_str])].include?(nil) return tab_lettres.index(self.upcase[i + dec_self..i + dec_self]) < tab_lettres.index(oth_str.upcase[i + dec_oth_str..i + dec_oth_str]) end end return false end def left(left, total, car = " ") return self if self.size > total return (car * left) + self + (car * (total - self.size - left)) end def remove_accents txt = self tab = [[["à", "â", "ä", "ã", "@"], "a"], [["é", "ê", "è", "ë", "€"], "e"], [["î", "ì", "ï"], "i"], [["ô", "ò", "ö", "õ"], "o"], [["û", "ù", "ü"], "u"], [["ç"], "c"], [["$"], "s"], [["£"], "l"] ] txt = self for i in tab for j in i[0] txt = txt.gsub(j, i[1]) end end return txt end end
def type_name(nb) return "AUCUN" if nb.nil? or nb <= 0 or nb > 25 return $data_system.elements[nb].remove_accents.upcase end |