Update GaCy-GO
This commit is contained in:
1 parent
da8a32f60d
commit
0cbe460e49
345 files changed
+98202
-77559
No files matched your search
@@ -0,0 +1,37 @@
|
||||
"""Export completed, identity-checked native SpecialAvatar rows for CW."""
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def main():
|
||||
p = argparse.ArgumentParser(description=__doc__)
|
||||
p.add_argument('--capture', type=Path, required=True)
|
||||
p.add_argument('--catalog', type=Path, required=True)
|
||||
p.add_argument('--output', type=Path, required=True)
|
||||
a = p.parse_args()
|
||||
raw = a.capture.read_bytes()
|
||||
lines = raw.decode('utf-8-sig').splitlines()
|
||||
if '[GAC_CW_TRIAL_ROW] END' not in lines or any('[GAC_CW_TRIAL_ROW] ERROR' in l for l in lines):
|
||||
raise ValueError('native trial capture did not complete')
|
||||
rows = [json.loads(l.split(' ROW ', 1)[1]) for l in lines if '[GAC_CW_TRIAL_ROW] ROW ' in l]
|
||||
c = json.loads(a.catalog.read_text(encoding='utf-8-sig'))
|
||||
roles = {r['Config']['SpecialAvatarID']: r['Config']['AvatarID'] for r in c['active_handbook_default_roles']}
|
||||
seen = set()
|
||||
for r in rows:
|
||||
key = r['SpecialAvatarID'], r['WorldLevel']
|
||||
if key in seen or roles.get(key[0]) != r['AvatarID'] or not r['Level']:
|
||||
raise ValueError('native trial identity invalid/duplicate')
|
||||
seen.add(key)
|
||||
if not rows:
|
||||
raise ValueError('trial capture empty')
|
||||
result = dict(format_version=1, target_client_version=c['client_version'], target_assembly_sha256=c['provenance']['game_assembly_sha256'],
|
||||
source_capture_sha256=hashlib.sha256(raw).hexdigest(),
|
||||
scope='Current catalog fake-avatar trials at captured world levels. SpecialAvatarExcelTable.GetData, bounded flat-row access; no scene loader. Other trial profiles remain uncaptured.', entries=rows)
|
||||
a.output.write_text(json.dumps(result, ensure_ascii=False, indent=2) + '\n', encoding='utf-8')
|
||||
print(f'Exported {len(rows)} current trial rows')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in new issue
Block a user