fa6d14c4a0
Signalement Discord : les instances haut niveau ne lachent aucun equipement. Sur ce core, le butin d equipement des boss modernes ne vient pas de creature_loot_template mais de Unit::Kill, qui lit creature_template_journal (entree -> JournalEncounterID) puis tire 2 objets dans JournalEncounterItem.db2 avec le bon masque de difficulte et le bon contexte d objet. Cette table ne contenait que 45 lignes, toutes Burning Crusade : aucun boss de Draenor ni de Legion, et ces boss ont lootid = 0. Ils ne lachaient donc rigoureusement rien. 44 correspondances ajoutees, etablies depuis les DB2 officiels du client (JournalInstance -> JournalEncounter -> JournalEncounterCreature -> CreatureDisplayInfoID -> creature_template.modelid), une seule creature par rencontre et uniquement celles sans table de butin, pour ne rien doubler. Couvre entre autres la Fonderie des Rochenoire (10 boss), les Docks de fer, Haut-perchoir, le Pic Rochenoire, la Floraison eternelle, le Siege du Triumvirat (4 boss), le Tombeau de Sargeras (6), Gul dan et Elisande. Les scripts de generation et de verification sont dans chantiers/butin-journal.
26 lines
1.2 KiB
Python
26 lines
1.2 KiB
Python
import sys, subprocess, collections
|
|
sys.path.insert(0, '/home/ubuntu')
|
|
from db2read import DB2
|
|
D = '/home/ubuntu/server/data/dbc/enUS/'
|
|
ji = DB2(D+'JournalInstance.db2', "ssiiiihhbbi", [1]*11, 10, -1)
|
|
je = DB2(D+'JournalEncounter.db2', "ssfhhhhbbii", [1,1,2,1,1,1,1,1,1,1,1], -1, -1)
|
|
jei = DB2(D+'JournalEncounterItem.db2', "ihbbbi", [1]*6, 5, 1)
|
|
instMap = {ji.getId(i): ji.getRaw(i,6,0,"h") for i in range(ji.recCount)}
|
|
enc = {}
|
|
for i in range(je.recCount):
|
|
enc[je.getId(i)] = (instMap.get(je.getRaw(i,6,0,"h"),0), je.getRaw(i,9,0,"i"))
|
|
rows = subprocess.run(['mysql','-N','-B','dc_world','-e',
|
|
"SELECT j.entry, j.JournalEncounterID, ct.name FROM creature_template_journal j "
|
|
"JOIN creature_template ct ON ct.entry=j.entry WHERE j.entry>70000"],
|
|
capture_output=True, text=True).stdout
|
|
print("entry\tenc\tcarte\tordre\tnbObjets\tnom")
|
|
bad=0
|
|
for line in rows.splitlines():
|
|
e, eid, name = line.split('\t'); eid=int(eid)
|
|
mid, oi = enc.get(eid, (0,0))
|
|
n = len(jei.parentMap.get(eid, []))
|
|
flag = "" if (mid and n) else " <<< PROBLEME"
|
|
if flag: bad+=1
|
|
print("%s\t%d\t%d\t%d\t%d\t%s%s" % (e, eid, mid, oi, n, name, flag))
|
|
print("problemes:", bad)
|