コード例 #1
0
class JSONDumper(object):
    def __init__(self, filename):
        self.filename = filename
        self.demo = DemoDump()
        self.callback = None
        if self.demo.open(filename):
            for t in _DUMPED_TYPES:
                self.demo.register_on_netmsg(t, self.on_netmsg)
            for i in range(0, 10000):
                self.demo.register_on_gameevent(i, self.on_event)
    
    def on_event(self, data):
        del data.raw
        name = data.descriptor[1]
        id = data.descriptor[0]
        del data.descriptor
        v = {"name": name, "id": id}
        v["params"] = data.__dict__
        dictz = {"type": "GameEvent (%s)" % name, "data": v}
        if self.callback is not None:
            self.callback(dictz)
    
    def on_netmsg(self, id, data):
        inst = eval(_DUMPED_TYPES[id])()
        inst.ParseFromString(data)
        
        name = _DUMPED_TYPES[id].replace("CNETMsg", "net").replace("CSVCMsg", "svc")
        name = "%s (%i)" % (name, id)
        serializer = PbLiteSerializer()
        dict = {"type": name, "data": serializer.serialize(inst)}
        if self.callback is not None:
            self.callback(dict)
コード例 #2
0
    t.ParseFromString(data)

    for desc in t.descriptors:
        events[desc.name] = {
            "ID": desc.eventid,
            "name": desc.name,
            "params": {}
        }
        for key in desc.keys:
            events[desc.name]["params"][key.name] = _GAMEEVENT_TYPES[key.type +
                                                                     1]


if __name__ == '__main__':
    demo = DemoDump()
    filename = sys.argv[1]

    if len(sys.argv) <= 1:
        print "updateeventlist.py demofile.dem"
        sys.exit()

    if demo.open(filename):
        print "Beginning parsing"
        demo.register_on_netmsg(svc_GameEventList, on_list_received)
        demo.dump()
        ordered = collections.OrderedDict(sorted(events.items()))
        json_data = json.dumps(ordered, indent=4)
        print json_data
        f = open("../data/game_events.txt", "w")
        f.write(json_data)
        print "Saved to file data/game_events.txt"
コード例 #3
0
    t = CSVCMsg_GameEventList()
    t.ParseFromString(data)

    for desc in t.descriptors:
        events[desc.name] = {
                             "ID": desc.eventid,
                             "name": desc.name,
                             "params": {}
                            }
        for key in desc.keys:
            events[desc.name]["params"][key.name] = _GAMEEVENT_TYPES[key.type + 1]
    

if __name__ == '__main__':
    demo = DemoDump()
    filename = sys.argv[1]
    
    if len(sys.argv) <= 1:
        print "updateeventlist.py demofile.dem"
        sys.exit()        
        
    if demo.open(filename):
        print "Beginning parsing"
        demo.register_on_netmsg(svc_GameEventList, on_list_received)
        demo.dump()
        ordered = collections.OrderedDict(sorted(events.items()))
        json_data = json.dumps(ordered, indent=4)
        print json_data
        f = open("../data/game_events.txt", "w")
        f.write(json_data)
        print "Saved to file data/game_events.txt"