2.4.3. addon, shows better gear by slot and stat type
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

66 lignes
1.5KB

  1. #!/usr/bin/ruby
  2. require 'sqlite3'
  3. require 'json'
  4. db = SQLite3::Database.open '/tmp/tbc.db'
  5. db.results_as_hash = true
  6. items = db.execute 'select i.entry, i.class, i.subclass, i.name, i.inventorytype, i.itemlevel, i.requiredlevel, i.dmg_min1, i.dmg_max1, "" as mobs, delay, %s from item_template i;' % [(1..10).to_a.map { |n| "stat_type#{n} as k#{n}, stat_value#{n} as v#{n}" }.join(', ')]
  7. total = items.length
  8. items_w_loot = []
  9. keys = (1..10).map { |n| "k#{n}" }
  10. vals = (1..10).map { |n| "v#{n}" }
  11. skip_keys = keys + ['delay', 'mobs']
  12. def truncate(s, len)
  13. s.length > len ? "#{s[0...len]}..." : s
  14. end
  15. items.each_with_index do |item, idx|
  16. mobs = db.execute 'select c.name as name, cl.ChanceOrQuestChance as chance from creature_loot_template cl left join creature_template c on c.entry=cl.entry where cl.item=%d order by chance desc' % [item['entry']]
  17. new = []
  18. item.each_pair do |k, v|
  19. if skip_keys.include?(k) or vals.include?(k)
  20. next
  21. end
  22. new.push k
  23. new.push v
  24. end
  25. new.push 'mobs'
  26. new.push(truncate ((mobs.map {|m| m['name']}.join ',') or ""), 300)
  27. (0..56).each do |type|
  28. val = 0
  29. keys.each_with_index do |k, kidx|
  30. if item[k] == type
  31. val = item[vals[kidx]]
  32. end
  33. end
  34. new.push val
  35. end
  36. if item['delay']
  37. new.push item['delay']
  38. end
  39. if idx % 100 == 0
  40. print "\r%f%%" % [(idx * 100).to_f / total]
  41. end
  42. if idx > 50
  43. # break
  44. end
  45. File.write(File.join(Dir.home, 'items_w_loot.json'), (new.to_json.concat ",\n"), mode: 'a+')
  46. end