artemis/titles/sao/handlers/base.py

4226 lines
150 KiB
Python
Raw Normal View History

import struct
from datetime import datetime
2024-06-25 18:02:53 +00:00
from typing import List, Union
2023-11-09 23:11:58 +00:00
from .helpers import *
2024-06-25 18:02:53 +00:00
from ..const import GameconnectCmd
2023-11-09 18:16:32 +00:00
class SaoRequestHeader:
def __init__(self, data: bytes) -> None:
2023-11-10 20:52:55 +00:00
collection = struct.unpack_from("!HHIIII16sI", data)
2023-11-09 18:16:32 +00:00
self.cmd: int = collection[0]
2023-11-10 20:52:55 +00:00
self.err_status = collection[1]
self.error_type = collection[2]
self.vendor_id: int = collection[3]
self.game_id: int = collection[4]
self.version_id: int = collection[5]
self.hash: str = collection[6]
2024-01-22 21:30:32 +00:00
self.data_len: str = collection[7]
2023-11-09 18:16:32 +00:00
class SaoBaseRequest:
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
self.header = header
2023-11-10 03:36:33 +00:00
class SaoResponseHeader:
2024-06-25 18:02:53 +00:00
def __init__(self, cmd_id: GameconnectCmd) -> None:
self.cmd = cmd_id
self.err_status = 0
self.error_type = 0
self.vendor_id = 5
self.game_id = 1
self.version_id = 1
self.length = 1
def make(self) -> bytes:
return struct.pack("!HHIIIII", self.cmd, self.err_status, self.error_type, self.vendor_id, self.game_id, self.version_id, self.length)
2023-11-10 03:36:33 +00:00
class SaoBaseResponse:
2024-06-25 18:02:53 +00:00
def __init__(self, cmd_id: Union[GameconnectCmd, int]) -> None:
if type(cmd_id) == int:
cmd = GameconnectCmd(cmd_id)
else:
cmd = cmd_id
self.header = SaoResponseHeader(cmd)
2023-11-10 03:36:33 +00:00
def make(self) -> bytes:
return self.header.make()
2024-06-25 18:02:53 +00:00
class SaoGenericUserTicketRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
ticket_id = decode_str(data, off)
self.ticket_id = ticket_id[0]
off += ticket_id[1]
user_id = decode_str(data, off)
self.user_id = user_id[0]
off += user_id[1]
class SaoGenericUserRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
class SaoNoopRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
self.dummy = decode_byte(data, 0)
class SaoNoopResponse(SaoBaseResponse):
def __init__(self, cmd: int) -> None:
super().__init__(cmd)
self.result = 1
self.length = 5
def make(self) -> bytes:
return super().make() + struct.pack("!bI", self.result, 0)
2024-06-25 18:02:53 +00:00
class SaoTicketRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
class SaoTicketResponse(SaoBaseResponse):
def __init__(self, ticket_id: str = "9") -> None:
super().__init__(GameconnectCmd.TICKET_RESPONSE)
self.result = "1"
self.ticket_id = ticket_id
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_str(self.result) \
+ encode_str(self.ticket_id)
2024-06-25 18:02:53 +00:00
class SaoGetMaintenanceInfoResponse(SaoBaseResponse):
def __init__(self, maint_start: datetime = datetime.fromtimestamp(0), maint_end: datetime = datetime.fromtimestamp(0)) -> None:
super().__init__(GameconnectCmd.GET_MAINTENANCE_INFO_RESPONSE)
self.result = 1
self.maint_begin = maint_start
self.maint_end = maint_end
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_date_str(self.maint_begin) \
+ encode_date_str(self.maint_end)
class SaoCommonAcCabinetBootNotificationRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.net_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.place_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.store_id, new_off = decode_str(data, off)
off += new_off
self.store_name, new_off = decode_str(data, off)
off += new_off
self.serial_no, new_off = decode_str(data, off)
off += new_off
self.current_version_app_id = decode_int(data, off)
off += INT_OFF
self.current_master_data_version = decode_int(data, off)
off += INT_OFF
class SaoMasterDataVersionCheckRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
self.current_data_version = decode_int(data, 0)
class SaoMasterDataVersionCheckResponse(SaoBaseResponse):
2024-06-25 18:02:53 +00:00
def __init__(self, current_ver: int, game_ver: int) -> None:
super().__init__(GameconnectCmd.MASTER_DATA_VERSION_CHECK_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.update_flag = 1 if game_ver != current_ver else 0
self.data_version = current_ver
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
resp_data = encode_byte(self.result)
resp_data += encode_byte(self.update_flag)
resp_data += encode_int(self.data_version)
return super().make() + resp_data
2024-06-25 18:02:53 +00:00
class SaoGetAppVersionsResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_APP_VERSIONS_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.data_list: List[AppVersionData] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
ret = encode_byte(self.result)
ret += encode_arr_cls(self.data_list)
return super().make() + ret
2024-06-25 18:02:53 +00:00
class SaoPayingPlayStartRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.paying_user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.game_sub_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.net_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.place_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.store_id, new_off = decode_str(data, off)
off += new_off
self.store_name, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
class SaoPayingPlayStartResponse(SaoBaseResponse):
def __init__(self, session_id: str = "1") -> None:
super().__init__(GameconnectCmd.PAYING_PLAY_START_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.paying_session_id = session_id
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.paying_session_id)
class SaoPayingPlayEndRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.paying_session_id, new_off = decode_str(data, off)
off += new_off
self.paying_user_id, new_off = decode_str(data, off)
off += new_off
self.net_id, new_off = decode_str(data, off)
off += new_off
self.place_id, new_off = decode_str(data, off)
off += new_off
self.played_date, new_off = decode_str(data, off)
off += new_off
self.played_type = decode_short(data, off)
off += SHORT_OFF
self.played_amount = decode_short(data, off)
off += SHORT_OFF
self.store_id, new_off = decode_str(data, off)
off += new_off
self.store_name, new_off = decode_str(data, off)
off += new_off
self.serial_no, new_off = decode_str(data, off)
off += new_off
class SaoGetAuthCardDataRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.auth_type = AuthType(decode_byte(data, off)) # 0 is unknown, 1 is card (banapass, aime, AICC), 2 is moble
off += BYTE_OFF
store_id = decode_str(data, off)
self.store_id = store_id[0]
off += store_id[1]
serial_no = decode_str(data, off)
self.serial_no = serial_no[0]
off += serial_no[1]
access_code = decode_str(data, off)
self.access_code = access_code[0]
off += access_code[1]
chip_id = decode_str(data, off)
self.chip_id = chip_id[0]
off += chip_id[1]
2024-06-25 18:02:53 +00:00
class SaoGetAuthCardDataResponse(SaoBaseResponse):
def __init__(self, nicknname: str, user_id: int) -> None:
super().__init__(GameconnectCmd.GET_AUTH_CARD_DATA_RESPONSE)
self.result = 1
self.unused_card_flag = ""
self.first_play_flag = 0
self.tutorial_complete_flag = 1
2024-06-25 18:02:53 +00:00
self.nick_name = nicknname
self.personal_id = str(user_id)
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.unused_card_flag) \
+ encode_byte(self.first_play_flag) \
+ encode_byte(self.tutorial_complete_flag) \
+ encode_str(self.nick_name) \
+ encode_str(self.personal_id)
class SaoGetAccessCodeByKeitaiRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.auth_type = AuthType(decode_byte(data, off)) # 0 is unknown, 1 is card (banapass, aime, AICC), 2 is moble
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.chip_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
class SaoGetAccessCodeByKeitaiResponse(SaoBaseResponse):
def __init__(self, access_code: str) -> None:
super().__init__(GameconnectCmd.GET_ACCESS_CODE_BY_KEITAI_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.access_code = access_code
self.ba_id_flag = 1
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.access_code) \
+ encode_byte(self.ba_id_flag)
class SaoCheckAcLoginBonusResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.CHECK_AC_LOGIN_BONUS_RESPONSE)
self.result = 1
self.reward_get_flag = 1
2024-06-25 18:02:53 +00:00
self.get_ac_login_bonus_id_list: List[int] = [] # "2020年7月9日アニメリコリス記念"
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_byte(self.reward_get_flag) \
+ encode_arr_num(self.get_ac_login_bonus_id_list, INT_OFF) \
2024-06-25 18:02:53 +00:00
class SaoGetQuestSceneMultiPlayPhotonServerResponse(SaoBaseResponse):
def __init__(self, app_id: str = "7df3a2f6-d69d-4073-aafe-810ee61e1cea") -> None:
super().__init__(GameconnectCmd.GET_QUEST_SCENE_MULTI_PLAY_PHOTON_SERVER_RESPONSE)
self.result = 1
self.application_id = app_id
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.application_id)
2024-06-25 18:02:53 +00:00
class SaoLoginRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.auth_type = AuthType(decode_byte(data, off)) # 0 is unknown, 1 is card (banapass, aime, AICC), 2 is moble
off += BYTE_OFF
store_id = decode_str(data, off)
self.store_id = store_id[0]
off += store_id[1]
store_name = decode_str(data, off)
self.store_name = store_name[0]
off += store_name[1]
serial_no = decode_str(data, off)
self.serial_no = serial_no[0]
off += serial_no[1]
access_code = decode_str(data, off)
self.access_code = access_code[0]
off += access_code[1]
chip_id = decode_str(data, off)
self.chip_id = chip_id[0]
off += chip_id[1]
self.free_ticket_distribution_target_flag = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
class SaoLoginResponse(SaoBaseResponse):
def __init__(self, user_id: int, first_play: bool = False, logged_in_today: bool = True) -> None:
super().__init__(GameconnectCmd.LOGIN_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.user_id = str(user_id)
self.first_play_flag = first_play
self.grantable_free_ticket_flag = not logged_in_today
self.login_reward_vp = 0 if logged_in_today else 100
self.today_paying_flag = logged_in_today
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.user_id) \
+ encode_byte(self.first_play_flag) \
+ encode_byte(self.grantable_free_ticket_flag) \
+ encode_short(self.login_reward_vp) \
+ encode_byte(self.today_paying_flag)
class SaoLogoutRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off) # 0 satalite, 1 terminal
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.remaining_ticket_num = decode_short(data, off)
off += SHORT_OFF
2024-06-25 18:02:53 +00:00
class SaoPurchaseTicketRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.discount_type = decode_byte(data, off)
off += BYTE_OFF
self.purchase_num = decode_byte(data, off)
off += BYTE_OFF
class SaoConsumeTicketRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.discount_type = decode_byte(data, off)
off += BYTE_OFF
self.act_type = ActTypeConsumeTicket(decode_byte(data, off))
off += BYTE_OFF
self.consume_num = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
class SaoAddCreditRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
self.add_num = decode_byte(data, off)
off += BYTE_OFF
class SaoConsumeCreditRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
self.act_type = ActTypeConsumeCredit(decode_byte(data, off))
off += BYTE_OFF
self.consume_num = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
class SaoPurchaseTicketGuestRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
self.discount_type = decode_byte(data, off)
off += BYTE_OFF
self.purchase_num = decode_byte(data, off)
off += BYTE_OFF
class SaoConsumeTicketGuestRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
self.discount_type = decode_byte(data, off)
off += BYTE_OFF
self.act_type = ActTypeConsumeTicket(decode_byte(data, off))
off += BYTE_OFF
self.consume_num = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
class SaoAddCreditGuestRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
self.add_num = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
class SaoConsumeCreditGuestRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
self.act_type = ActTypeConsumeCredit(decode_byte(data, off))
off += BYTE_OFF
self.consume_num = decode_byte(data, off)
off += BYTE_OFF
class SaoCheckComebackEventResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.CHECK_COMEBACK_EVENT_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.get_flag = 1
self.get_comeback_event_id_list: List[int] = [] # Array of events apparently
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_byte(self.get_flag) \
+ encode_arr_num(self.get_comeback_event_id_list, INT_OFF)
class SaoChangeMyStoreRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
class SaoCheckTitleGetDecisionRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_offset = decode_str(data, off)
off += new_offset
2024-06-25 18:02:53 +00:00
self.user_id, new_offset = decode_str(data, off)
off += new_offset
class SaoCheckTitleGetDecisionResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.CHECK_TITLE_GET_DECISION_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.get_title_id_list: List[int] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_num(self.get_title_id_list, INT_OFF)
2024-06-25 18:02:53 +00:00
class SaoGetUserBasicDataRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2023-11-11 06:11:41 +00:00
off = 0
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetUserBasicDataResponse(SaoBaseResponse):
def __init__(self, profile_data) -> None:
super().__init__(GameconnectCmd.GET_USER_BASIC_DATA_RESPONSE)
self.result = 1
self.user_basic_data: List[UserBasicData] = [UserBasicData.from_args(profile_data)]
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.user_basic_data)
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetVpGashaTicketDataListRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetVpGashaTicketDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_VP_GASHA_TICKET_DATA_LIST_RESPONSE)
self.result = 1
self.vp_gasha_ticket_data_list: List[VpGashaTicketData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.vp_gasha_ticket_data_list)
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoChangeTitleRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.user_title_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
class SaoGetPresentBoxNumResponse(SaoBaseResponse):
def __init__(self, num_box: int = 0, max_num: int = 0) -> None:
super().__init__(GameconnectCmd.GET_PRESENT_BOX_NUM_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.num = num_box
self.max_num = max_num
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_short(self.num) \
+ encode_short(self.max_num)
2024-06-25 18:02:53 +00:00
class SaoGetHeroLogUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_HERO_LOG_USER_DATA_LIST_RESPONSE)
self.result = 1
self.hero_log_user_data_list: List[HeroLogUserData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.hero_log_user_data_list)
2024-06-25 18:02:53 +00:00
class SaoGetEquipmentUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_EQUIPMENT_USER_DATA_LIST_RESPONSE)
self.result = 1
self.equipment_user_data_list: List[EquipmentUserData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.equipment_user_data_list)
2024-06-25 18:02:53 +00:00
class SaoGetItemUserDataListResponse(SaoBaseResponse):
def __init__(self, item_data: List[Dict] = []) -> None:
super().__init__(GameconnectCmd.GET_ITEM_USER_DATA_LIST_RESPONSE)
self.result = 1
self.item_user_data_list: List[ItemUserData] = []
2024-06-25 18:02:53 +00:00
if item_data:
for item in item_data:
self.item_user_data_list.append(ItemUserData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.item_user_data_list)
2024-06-25 18:02:53 +00:00
class SaoGetSupportLogUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_SUPPORT_LOG_USER_DATA_LIST_RESPONSE)
self.result = 1
self.support_log_user_data_list: List[SupportLogUserData] = []
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.support_log_user_data_list)
2024-06-25 18:02:53 +00:00
class SaoGetTitleUserDataListResponse(SaoBaseResponse):
def __init__(self, user_id: str, titles: List[int]) -> None:
super().__init__(GameconnectCmd.GET_TITLE_USER_DATA_LIST_RESPONSE)
self.result = 1
self.title_user_data_list: List[TitleUserData] = []
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
if titles:
for x in titles:
self.title_user_data_list.append(TitleUserData.from_args(user_id + str(x), x))
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.title_user_data_list)
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetEpisodeAppendDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_EPISODE_APPEND_DATA_LIST_RESPONSE)
self.result = 1
self.episode_append_data_list: List[EpisodeAppendUserData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.episode_append_data_list)
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetEventItemDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_EVENT_ITEM_DATA_LIST_RESPONSE)
self.result = 1
self.event_item_data_list: List[EventItemUserData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.event_item_data_list)
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetGashaMedalUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_GASHA_MEDAL_USER_DATA_LIST_RESPONSE)
self.result = 1
self.data_list: List[GashaMedalUserData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
2024-06-25 18:02:53 +00:00
class SaoGetPartyDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_PARTY_DATA_LIST_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.party_data_list: List[PartyData] = []
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.party_data_list)
2024-06-25 18:02:53 +00:00
class SaoGetSupportLogPartyDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_SUPPORT_LOG_PARTY_DATA_LIST_RESPONSE)
self.result = 1
self.support_log_party_data_list: List[SupportLogPartyData] = []
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.support_log_party_data_list)
2024-06-25 18:02:53 +00:00
class SaoGetQuestScenePrevScanProfileCardResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_QUEST_SCENE_PREV_SCAN_PROFILE_CARD_RESPONSE)
self.result = 1
self.profile_card_data: List[ReadProfileCardData] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.profile_card_data)
2024-06-25 18:02:53 +00:00
class SaoGetResourcePathInfoResponse(SaoBaseResponse):
def __init__(self, base_url: str) -> None:
super().__init__(GameconnectCmd.GET_RESOURCE_PATH_INFO_RESPONSE)
self.result = 1
self.resource_base_url = base_url
self.gasha_base_dir = "gasha"
self.ad_base_dir = "ad"
self.event_base_dir = "event"
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.resource_base_url) \
+ encode_str(self.gasha_base_dir) \
+ encode_str(self.ad_base_dir) \
+ encode_str(self.event_base_dir)
class SaoValidationErrorNotificationRequest(SaoBaseRequest):
2023-11-12 23:46:38 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.net_id, new_off = decode_str(data, off)
off += new_off
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.place_id, new_off = decode_str(data, off)
off += new_off
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.store_id, new_off = decode_str(data, off)
off += new_off
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.store_name, new_off = decode_str(data, off)
off += new_off
2023-11-12 23:46:38 +00:00
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
2023-11-13 01:02:08 +00:00
2024-06-25 18:02:53 +00:00
self.send_protocol_name, new_off = decode_str(data, off)
off += new_off
2023-11-13 01:02:08 +00:00
2024-06-25 18:02:53 +00:00
self.send_data_to_fraud_value, new_off = decode_str(data, off)
off += new_off
2023-11-13 01:02:08 +00:00
2024-06-25 18:02:53 +00:00
self.send_data_to_modification_value, new_off = decode_str(data, off)
off += new_off
2023-11-13 01:02:08 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetBeginnerMissionUserDataRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-13 01:02:08 +00:00
2024-06-25 18:02:53 +00:00
self.beginner_mission_id = decode_int(data, off)
2023-11-13 01:02:08 +00:00
off += INT_OFF
2023-06-02 17:53:49 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetBeginnerMissionUserDataResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_BEGINNER_MISSION_USER_DATA_RESPONSE)
2023-06-02 17:53:49 +00:00
self.result = 1
2024-06-25 18:02:53 +00:00
self.data: List[BeginnerMissionUserData] = [BeginnerMissionUserData.from_args(datetime.now())]
2023-06-02 17:53:49 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data)
2023-06-02 17:53:49 +00:00
2024-06-25 18:02:53 +00:00
class SaoMatchingErrorNotificationRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.net_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.place_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.store_name, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.matching_error_data_list: List[MatchingErrorData]
self.matching_error_data_list, new_off = decode_arr_cls(data, off, MatchingErrorData)
2024-06-25 18:02:53 +00:00
class SaoPowerCuttingReturnNotification(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.net_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.place_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.store_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.store_name, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.serial_no, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.last_act_type = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.remaining_ticket_num = decode_short(data, off)
off += SHORT_OFF
2024-06-25 18:02:53 +00:00
self.remaining_credit_num = decode_short(data, off)
off += SHORT_OFF
class SaoEpisodePlayStartRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.episode_id = decode_int(data, off)
off += INT_OFF
2024-06-25 18:02:53 +00:00
self.play_mode = decode_byte(data, off)
off += BYTE_OFF
self.play_start_request_data: List[QuestScenePlayStartRequestData] = []
self.play_start_request_data, new_off = decode_arr_cls(data, off, QuestScenePlayStartRequestData)
off += new_off
self.multi_play_start_request_data: List[QuestSceneMultiPlayStartRequestData] = []
self.multi_play_start_request_data, new_off = decode_arr_cls(data, off, QuestSceneMultiPlayStartRequestData)
off += new_off
class SaoEpisodePlayStartResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.EPISODE_PLAY_START_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.play_start_response_data: List[QuestScenePlayStartResponseData] = []
self.multi_play_start_response_data: List[QuestSceneMultiPlayStartResponseData] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.play_start_response_data) \
+ encode_arr_cls(self.multi_play_start_response_data)
2024-06-25 18:02:53 +00:00
class SaoEpisodePlayEndRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
self.episode_id = decode_int(data, off)
off += INT_OFF
self.play_end_request_data: List[QuestScenePlayEndRequestData] = []
self.play_end_request_data, new_off = decode_arr_cls(data, off, QuestScenePlayEndRequestData)
off += new_off
self.multi_play_end_request_data: List[QuestSceneMultiPlayEndRequestData] = []
self.multi_play_end_request_data, new_off = decode_arr_cls(data, off, QuestSceneMultiPlayEndRequestData)
off += new_off
class SaoEpisodePlayEndResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.EPISODE_PLAY_END_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.play_end_response_data: List[QuestScenePlayEndResponseData] = [QuestScenePlayEndResponseData.from_args()]
self.multi_play_end_response_data: List[QuestSceneMultiPlayEndResponseData] = [QuestSceneMultiPlayEndResponseData.from_args()]
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.play_end_response_data) \
+ encode_arr_cls(self.multi_play_end_response_data)
2024-06-25 18:02:53 +00:00
class SaoTrialTowerPlayStartRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2023-11-11 06:11:41 +00:00
ticket_id = decode_str(data, off)
self.ticket_id = ticket_id[0]
off += ticket_id[1]
2023-11-11 06:11:41 +00:00
user_id = decode_str(data, off)
self.user_id = user_id[0]
off += user_id[1]
2024-06-25 18:02:53 +00:00
self.trial_tower_id = decode_int(data, off)
off += INT_OFF
self.play_mode = decode_byte(data, off)
off += BYTE_OFF
self.play_start_request_data_count = decode_int(data, off)
off += INT_OFF
2024-06-25 18:02:53 +00:00
self.play_start_request_data: List[PlayStartRequestData] = []
for _ in range(self.play_start_request_data_count):
tmp = PlayStartRequestData(data, off)
self.play_start_request_data.append(tmp)
off += tmp.get_size()
2024-06-25 18:02:53 +00:00
self.multi_play_start_request_data_count = decode_int(data, off)
off += INT_OFF
2024-06-25 18:02:53 +00:00
self.multi_play_start_request_data: List[MultiPlayStartRequestData] = []
for _ in range(self.multi_play_start_request_data_count):
tmp = MultiPlayStartRequestData(data, off)
off += tmp.get_size()
self.multi_play_start_request_data.append(tmp)
2024-06-25 18:02:53 +00:00
class SaoTrialTowerPlayStartResponse(SaoBaseResponse):
def __init__(self, sesh_id: int, nickname: str) -> None:
super().__init__(GameconnectCmd.TRIAL_TOWER_PLAY_START_RESPONSE)
self.result = 1
self.play_start_response_data: List[QuestScenePlayStartResponseData] = [QuestScenePlayStartResponseData.from_args(sesh_id, nickname)]
self.multi_play_start_response_data: List[QuestSceneMultiPlayStartResponseData] = [QuestSceneMultiPlayStartResponseData.from_args()]
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.play_start_response_data) \
+ encode_arr_cls(self.multi_play_start_response_data)
2024-06-25 18:02:53 +00:00
class SaoTrialTowerPlayEndRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.trial_tower_id = decode_int(data, off)
off += INT_OFF
2024-06-25 18:02:53 +00:00
self.play_end_request_data: List[QuestScenePlayEndRequestData] = []
self.play_end_request_data, new_off = decode_arr_cls(data, off, QuestScenePlayEndRequestData)
off += new_off
2024-06-25 18:02:53 +00:00
self.multi_play_end_request_data: List[QuestSceneMultiPlayEndRequestData]
self.multi_play_end_request_data, new_off = decode_arr_cls(data, off, QuestSceneMultiPlayEndRequestData)
off += new_off
class SaoTrialTowerPlayEndResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.TRIAL_TOWER_PLAY_END_RESPONSE)
self.result = 1
self.play_end_response_data: List[QuestScenePlayEndResponseData] = [QuestScenePlayEndResponseData.from_args()]
self.multi_play_end_response_data: List[QuestSceneMultiPlayEndResponseData] = [QuestSceneMultiPlayEndResponseData.from_args()]
self.trial_tower_play_end_updated_notification_data: List[QuestTrialTowerPlayEndUpdatedNotificationData] = [QuestTrialTowerPlayEndUpdatedNotificationData.from_args()]
self.treasure_hunt_play_end_response_data: List[QuestTreasureHuntPlayEndResponseData] = [QuestTreasureHuntPlayEndResponseData.from_args()]
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.play_end_response_data) \
+ encode_arr_cls(self.multi_play_end_response_data) \
+ encode_arr_cls(self.trial_tower_play_end_updated_notification_data) \
+ encode_arr_cls(self.treasure_hunt_play_end_response_data)
class SaoEpisodePlayEndUnanalyzedLogFixedRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2023-11-11 06:11:41 +00:00
ticket_id = decode_str(data, off)
self.ticket_id = ticket_id[0]
off += ticket_id[1]
2023-11-11 06:11:41 +00:00
user_id = decode_str(data, off)
self.user_id = user_id[0]
off += user_id[1]
2024-06-25 18:02:53 +00:00
self.episode_id = decode_int(data, off)
off += INT_OFF
2024-06-25 18:02:53 +00:00
self.rarity_up_exec_flag = decode_byte(data, off)
off += BYTE_OFF
class SaoEpisodePlayEndUnanalyzedLogFixedResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.EPISODE_PLAY_END_UNANALYZED_LOG_FIXED_RESPONSE)
self.result = 1
self.play_end_unanalyzed_log_reward_data_list: List[QuestScenePlayEndUnanalyzedLogRewardData] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.play_end_unanalyzed_log_reward_data_list)
2024-06-25 18:02:53 +00:00
class SaoGetQuestSceneUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_QUEST_SCENE_USER_DATA_LIST_RESPONSE)
self.result = 1
self.quest_scene_user_data_list: List[QuestSceneUserData] = []
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.quest_scene_user_data_list)
2023-06-28 01:32:46 +00:00
2024-06-25 18:02:53 +00:00
class SaoCheckYuiMedalGetConditionRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-06-28 01:32:46 +00:00
2024-06-25 18:02:53 +00:00
class SaoCheckYuiMedalGetConditionResponse(SaoBaseResponse):
def __init__(self, elapsed_days: int = 0, get_num: int = 0) -> None:
super().__init__(GameconnectCmd.CHECK_YUI_MEDAL_GET_CONDITION_RESPONSE)
2023-06-28 01:32:46 +00:00
self.result = 1
2024-06-25 18:02:53 +00:00
self.get_flag = int(get_num > 0)
self.elapsed_days = elapsed_days
self.get_yui_medal_num = get_num
2023-06-28 01:32:46 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_byte(self.get_flag) \
+ encode_short(self.elapsed_days) \
+ encode_short(self.get_yui_medal_num) \
2023-06-28 01:32:46 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetYuiMedalBonusUserDataRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-06-28 01:32:46 +00:00
2024-06-25 18:02:53 +00:00
self.yui_medal_bonus_id = decode_int(data, off)
off += INT_OFF
class SaoGetYuiMedalBonusUserDataResponse(SaoBaseResponse):
def __init__(self, elapsed_days: int = 0, loop_num: int = 0) -> None:
super().__init__(GameconnectCmd.GET_YUI_MEDAL_BONUS_USER_DATA_RESPONSE)
self.result = 1
self.data: List[YuiMedalBonusUserData] = [YuiMedalBonusUserData.from_args(elapsed_days, loop_num)]
2023-06-28 01:32:46 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data)
2023-06-28 01:32:46 +00:00
2024-06-25 18:02:53 +00:00
class SaoCheckProfileCardUsedRewardRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-06-28 01:32:46 +00:00
2024-06-25 18:02:53 +00:00
class SaoCheckProfileCardUsedRewardResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.CHECK_PROFILE_CARD_USED_REWARD_RESPONSE)
self.result = 1
self.get_flag = 0
self.used_num = 0
self.get_vp = 0
2023-06-28 01:32:46 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_byte(self.get_flag) \
+ encode_int(self.used_num) \
+ encode_int(self.get_vp)
2023-06-28 01:32:46 +00:00
2024-06-25 18:02:53 +00:00
class SaoDisposalResourceRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.disposal_common_reward_user_data_list: List[CommonRewardUserData] = []
self.disposal_common_reward_user_data_list, new_off = decode_arr_cls(data, off, CommonRewardUserData)
off += new_off
class SaoDisposalResourceResponse(SaoBaseResponse):
def __init__(self, get_col: int = 0) -> None:
super().__init__(GameconnectCmd.DISPOSAL_RESOURCE_RESPONSE)
self.result = 1
self.get_col = get_col
2023-06-28 01:32:46 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_int(self.get_col)
2024-06-25 18:02:53 +00:00
class SaoSynthesizeEnhancementHeroLogRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
self.origin_user_hero_log_id, new_off = decode_str(data, off)
off += new_off
self.material_common_reward_user_data_list: List[CommonRewardUserData] = []
self.material_common_reward_user_data_list, new_off = decode_arr_cls(data, off, CommonRewardUserData)
off += new_off
2024-06-25 18:02:53 +00:00
class SaoSynthesizeEnhancementHeroLogResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.SYNTHESIZE_ENHANCEMENT_HERO_LOG_RESPONSE)
self.result = 1
2024-06-25 18:02:53 +00:00
self.after_hero_log_user_data: List[HeroLogUserData] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.after_hero_log_user_data)
2024-06-25 18:02:53 +00:00
class SaoSynthesizeEnhancementEquipmentRequest(SaoBaseRequest):
2023-11-09 18:16:32 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.origin_user_equipment_id, new_off = decode_str(data, off)
off += new_off
self.material_common_reward_user_data_list: List[CommonRewardUserData] = []
self.material_common_reward_user_data_list, new_off = decode_arr_cls(data, off, CommonRewardUserData)
off += new_off
class SaoSynthesizeEnhancementEquipmentResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.SYNTHESIZE_ENHANCEMENT_EQUIPMENT_RESPONSE)
self.result = 1
self.after_equipment_user_data: List[EquipmentUserData] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.after_equipment_user_data)
2024-06-25 18:02:53 +00:00
class SaoGetAdventureExecUserDataResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_ADVENTURE_EXEC_USER_DATA_RESPONSE)
self.result = 1
self.adventure_exec_user_data: List[AdventureExecUserData] = []
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.adventure_exec_user_data)
2024-06-25 18:02:53 +00:00
class SaoGetChatSideStoryUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_CHAT_SIDE_STORY_USER_DATA_LIST_RESPONSE)
self.result = 1
self.chat_side_story_user_data_list: List[ChatSideStoryUserData] = []
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.chat_side_story_user_data_list)
class SaoBeginnerMissionAdConfirmNotificationRequest(SaoBaseRequest):
2023-11-09 23:11:58 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
self.beginner_mission_id = decode_int(data, off)
off += INT_OFF
class SaoGetDefragMatchBasicDataRequest(SaoBaseRequest):
2023-11-11 06:11:41 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
self.defrag_match_id = decode_int(data, off)
off += INT_OFF
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetDefragMatchBasicDataResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_BASIC_DATA_RESPONSE)
self.result = 1
self.defrag_match_basic_user_data: List[DefragMatchBasicUserData] = []
def make(self) -> bytes:
ret = encode_byte(self.result)
ret += encode_arr_cls(self.defrag_match_basic_user_data)
return super().make() + ret
class SaoGetDefragMatchRankingUserDataRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
self.defrag_match_id = decode_int(data, off)
2023-11-11 06:11:41 +00:00
off += INT_OFF
2024-06-25 18:02:53 +00:00
class SaoGetDefragMatchRankingUserDataResponse(SaoBaseResponse):
def __init__(self, profile: Dict) -> None:
super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_RANKING_USER_DATA_RESPONSE)
self.result = 1
self.ranking_user_data: List[DefragMatchRankingUserData] = [DefragMatchRankingUserData.from_args(profile)]
2023-11-11 06:11:41 +00:00
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.ranking_user_data)
2024-06-25 18:02:53 +00:00
class SaoGetDefragMatchLeaguePointRankingListRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.defrag_match_id = decode_int(data, off)
off += INT_OFF
2024-06-25 18:02:53 +00:00
self.get_rank_start_num = decode_short(data, off)
off += SHORT_OFF
2024-06-25 18:02:53 +00:00
self.get_rank_end_num = decode_short(data, off)
off += SHORT_OFF
2024-06-25 18:02:53 +00:00
class SaoGetDefragMatchLeaguePointRankingListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_LEAGUE_POINT_RANKING_LIST_RESPONSE)
self.result = 1
self.ranking_data_list: List[DefragMatchLeaguePointRankingData] = []
2024-06-25 18:02:53 +00:00
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.ranking_data_list)
class SaoGetDefragMatchLeagueScoreRankingListRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.defrag_match_id = decode_int(data, off)
off += INT_OFF
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
self.get_rank_start_num = decode_short(data, off)
off += SHORT_OFF
self.get_rank_end_num = decode_short(data, off)
off += SHORT_OFF
2024-06-25 18:02:53 +00:00
class SaoGetDefragMatchLeagueScoreRankingListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_LEAGUE_SCORE_RANKING_LIST_RESPONSE)
self.result = 1
self.ranking_user_data: List[DefragMatchLeagueScoreRankingList] = []
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
# create a resp struct
resp_data = encode_byte(self.result)
resp_data += encode_arr_cls(self.ranking_user_data)
return super().make() + resp_data
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetBeginnerMissionProgressesUserDataListRequest(SaoBaseRequest):
2023-11-13 22:17:27 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
self.beginner_mission_id = decode_int(data, off)
off += INT_OFF
class SaoGetBeginnerMissionProgressesUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_BEGINNER_MISSION_PROGRESSES_USER_DATA_LIST_RESPONSE)
self.result = 1
self.data_list: List[BeginnerMissionProgressesUserData] = []
2023-11-13 22:17:27 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetBeginnerMissionSeatProgressesUserDataListRequest(SaoBaseRequest):
2023-11-13 22:17:27 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
self.beginner_mission_id = decode_int(data, off)
off += INT_OFF
class SaoGetBeginnerMissionSeatProgressesUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_BEGINNER_MISSION_SEAT_PROGRESSES_USER_DATA_LIST_RESPONSE)
self.result = 1
self.data_list: List[BeginnerMissionSeatProgressesUserData] = []
2023-11-13 22:17:27 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
class SaoGetLinkedSiteRegCampaignUserDataRequest(SaoBaseRequest):
2023-11-13 22:17:27 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
self.linked_site_reg_campaign_id = decode_int(data, off)
off += INT_OFF
class SaoGetLinkedSiteRegCampaignUserDataResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_LINKED_SITE_REG_CAMPAIGN_USER_DATA_RESPONSE)
self.result = 1
self.data: List[LinkedSiteRegCampaignUserData] = []
2023-11-13 22:17:27 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data)
class SaoGetHeroLogUnitUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_HERO_LOG_UNIT_USER_DATA_LIST_RESPONSE)
self.result = 1
self.hero_log_unit_user_data_list: List[HeroLogUnitUserData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.hero_log_unit_user_data_list)
class SaoGetCharaUnitUserDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_CHARA_UNIT_USER_DATA_LIST_RESPONSE)
self.result = 1
self.chara_unit_user_data_list: List[CharaUnitUserData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.chara_unit_user_data_list)
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
class SaoBeginnerMissionAdConfirmNotificationRequest(SaoBaseRequest):
2023-11-13 22:17:27 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-13 22:17:27 +00:00
2024-06-25 18:02:53 +00:00
self.beginner_mission_id = decode_int(data, off)
off += INT_OFF
2023-11-14 18:20:05 +00:00
2024-06-25 18:02:53 +00:00
class SaoBnidSerialCodeCheckRequest(SaoBaseRequest):
2023-11-14 18:20:05 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.user_id, new_off = decode_str(data, off)
off += new_off
2023-11-14 18:20:05 +00:00
2024-06-25 18:02:53 +00:00
self.bnid_serial_code, new_off = decode_str(data, off)
off += new_off
class SaoBnidSerialCodeCheckResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.BNID_SERIAL_CODE_CHECK_RESPONSE)
self.result = 1
self.bnid_item_id = ""
self.use_status = 0
2023-11-14 18:20:05 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.bnid_item_id) \
+ encode_byte(self.use_status)
2023-11-15 02:07:58 +00:00
2024-06-25 18:02:53 +00:00
class SaoBnidSerialCodeEntryByAppendixCardRequest(SaoBaseRequest):
2023-11-15 02:07:58 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
2024-06-25 18:02:53 +00:00
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2023-11-15 02:07:58 +00:00
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
self.bnid_serial_code, new_off = decode_str(data, off)
off += new_off
class SaoBnidSerialCodeEntryByAppendixCardResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.BNID_SERIAL_CODE_ENTRY_BY_APPENDIX_CARD_RESPONSE)
self.result = 1
self.get_bnid_item_id = ""
2023-11-15 02:07:58 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.get_bnid_item_id)
2024-01-10 17:51:40 +00:00
2024-06-25 18:02:53 +00:00
class SaoDischargeProfileCardRequest(SaoBaseRequest):
2024-01-10 17:51:40 +00:00
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
2024-01-10 17:51:40 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.hero_log_user_hero_log_id, new_off = decode_str(data, off)
off += new_off
self.main_weapon_user_equipment_id, new_off = decode_str(data, off)
off += new_off
self.sub_equipment_user_equipment_id, new_off = decode_str(data, off)
off += new_off
self.skill_id = decode_int(data, off)
off += INT_OFF
self.text_chara_message_id = decode_int(data, off)
off += INT_OFF
self.holographic_flag = decode_byte(data, off)
off += BYTE_OFF
self.execute_print_type = PrintType(decode_byte(data, off))
2024-01-10 17:51:40 +00:00
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
class SaoDischargeProfileCardResponse(SaoBaseResponse):
def __init__(self, serial: str) -> None:
super().__init__(GameconnectCmd.DISCHARGE_PROFILE_CARD_RESPONSE)
self.result = 1
self.profile_card_code = serial
2024-01-10 17:51:40 +00:00
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.profile_card_code)
2024-06-25 18:02:53 +00:00
class SaoDischargeResourceCardRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.user_id, new_off = decode_str(data, off)
off += new_off
2024-06-25 18:02:53 +00:00
self.holographic_flag = decode_byte(data, off)
off += BYTE_OFF
2024-06-25 18:02:53 +00:00
self.execute_print_type = PrintType(decode_byte(data, off))
off += BYTE_OFF
self.common_reward_user_data: List[MaterialCommonRewardUserData] = [] # typing lol
self.common_reward_user_data, new_off = decode_arr_cls(data, off, MaterialCommonRewardUserData)
off += new_off
class SaoDischargeResourceCardResponse(SaoBaseResponse):
def __init__(self, serial: str) -> None:
super().__init__(GameconnectCmd.DISCHARGE_RESOURCE_CARD_RESPONSE)
self.result = 1
self.profile_card_code = serial
def make(self) -> bytes:
2024-06-25 18:02:53 +00:00
return super().make() \
+ encode_byte(self.result) \
+ encode_str(self.profile_card_code)
2024-06-25 18:02:53 +00:00
class SaoDischargeResourceCardCompleteRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.resource_card_code, new_off = decode_str(data, off)
off += new_off
class SaoScanQrQuestProfileCardRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.profile_card_code, new_off = decode_str(data, off)
off += new_off
class SaoScanQrQuestProfileCardResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.SCAN_QR_QUEST_PROFILE_CARD_RESPONSE)
self.result = 1
self.profile_card_data: List[ReadProfileCard] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.profile_card_data)
class SaoScanQrShopResourceCardRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.resource_card_code, new_off = decode_str(data, off)
off += new_off
class SaoScanQrQuestResourceCardRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.resource_card_code, new_off = decode_str(data, off)
off += new_off
class SaoScanQrQuestResourceCardResponse(SaoBaseResponse):
def __init__(self, reward_type: int = 0, reward_id: int = 0, is_holo: bool = False) -> None:
super().__init__(GameconnectCmd.SCAN_QR_QUEST_RESOURCE_CARD_RESPONSE)
self.result = 1
self.common_reward_type = reward_type
self.common_reward_id = reward_id
self.holographic_flag = is_holo
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_short(self.common_reward_type) \
+ encode_int(self.common_reward_id) \
+ encode_bool(self.holographic_flag)
class SaoConsumeCreditGuestRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
shop_id = decode_str(data, off)
self.shop_id = shop_id[0]
off += shop_id[1]
serial_num = decode_str(data, off)
self.serial_num = serial_num[0]
off += serial_num[1]
self.cab_type = decode_byte(data, off)
off += BYTE_OFF
self.act_type = ActTypeConsumeCredit(decode_byte(data, off))
off += BYTE_OFF
self.consume_num = decode_byte(data, off)
off += BYTE_OFF
class SaoChangePartyRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
ticket_id = decode_str(data, off)
self.ticket_id = ticket_id[0]
off += ticket_id[1]
user_id = decode_str(data, off)
self.user_id = user_id[0]
off += user_id[1]
self.act_type = ActTypeChangeParty(decode_byte(data, off))
off += BYTE_OFF
self.party_data_list: List[PartyData] = []
self.party_data_list, new_off = decode_arr_cls(data, off, PartyData)
off += new_off
class SaoTrialTowerPlayEndUnanalyzedLogFixedRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
ticket_id = decode_str(data, off)
self.ticket_id = ticket_id[0]
off += ticket_id[1]
user_id = decode_str(data, off)
self.user_id = user_id[0]
off += user_id[1]
self.trial_tower_id = decode_int(data, off)
off += INT_OFF
self.rarity_up_exec_flag = decode_byte(data, off)
off += BYTE_OFF
class SaoTrialTowerPlayEndUnanalyzedLogFixedResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.TRIAL_TOWER_PLAY_END_UNANALYZED_LOG_FIXED_RESPONSE)
self.result = 1
self.play_end_unanalyzed_log_reward_data_list: List[QuestScenePlayEndUnanalyzedLogRewardData] = []
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.play_end_unanalyzed_log_reward_data_list)
class SaoGetShopResourceSalesDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_SHOP_RESOURCE_SALES_DATA_LIST_RESPONSE)
self.result = 1 # byte
self.shop_resource_sales_data: List[ShopResourceSalesData] = []
def make(self) -> bytes:
ret = encode_byte(self.result)
ret += encode_arr_cls(self.shop_resource_sales_data)
self.header.length = len(ret)
return super().make() + ret
class SaoPurchaseShopResourceRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.user_shop_resource_id, new_off = decode_str(data, off)
off += new_off
class GetYuiMedalShopUserDataListRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
user_id = decode_str(data, off)
self.user_id = user_id[0]
off += user_id[1]
class GetYuiMedalShopUserDataListResponse(SaoBaseResponse):
def __init__(self, cmd_id: int) -> None:
super().__init__(cmd_id)
self.result = 1 # byte
self.user_data_list: List[YuiMedalShopUserData] = []
def make(self) -> bytes:
ret = encode_byte(self.result)
ret += encode_arr_cls(self.user_data_list)
self.header.length = len(ret)
return super().make() + ret
class GetGashaMedalShopUserDataListRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
user_id = decode_str(data, off)
self.user_id = user_id[0]
off += user_id[1]
class GetGashaMedalShopUserDataListResponse(SaoBaseResponse):
def __init__(self, cmd_id: int) -> None:
super().__init__(cmd_id)
self.result = 1 # byte
self.data_list: List[GashaMedalShopUserData] = []
def make(self) -> bytes:
ret = encode_byte(self.result)
ret += encode_arr_cls(self.data_list)
self.header.length = len(ret)
return super().make() + ret
class SaoGiveFreeTicketRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.give_num = decode_byte(data, off)
off += BYTE_OFF
class SaoLogoutTicketUnpurchasedRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.cabinet_type = decode_byte(data, off)
off += BYTE_OFF
class SaoGetQuestHierarchyProgressDegreesRankingListRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.store_id, new_off = decode_str(data, off)
off += new_off
self.get_rank_start_num = decode_short(data, off)
off += SHORT_OFF
self.get_rank_end_num = decode_short(data, off)
off += SHORT_OFF
class SaoGetQuestHierarchyProgressDegreesRankingListResponse(SaoBaseResponse):
def __init__(self, cmd_id: int) -> None:
super().__init__(cmd_id)
self.result = 1 # byte
self.quest_hierarchy_progress_degrees_ranking_data_list: List[QuestHierarchyProgressDegreesRankingData] = []
def make(self) -> bytes:
ret = encode_byte(self.result)
ret += encode_arr_cls(self.quest_hierarchy_progress_degrees_ranking_data_list)
return super().make() + ret
class SaoGetQuestPopularHeroLogRankingListRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.store_id, new_off = decode_str(data, off)
off += new_off
self.get_rank_start_num = decode_short(data, off)
off += SHORT_OFF
self.get_rank_end_num = decode_short(data, off)
off += SHORT_OFF
class SaoGetQuestPopularHeroLogRankingListResponse(SaoBaseResponse):
def __init__(self, cmd_id: int) -> None:
super().__init__(cmd_id)
self.result = 1 # byte
self.quest_popular_hero_log_ranking_data_list: List[PopularHeroLogRankingData] = []
def make(self) -> bytes:
ret = encode_byte(self.result)
ret += encode_arr_cls(self.quest_popular_hero_log_ranking_data_list)
return super().make() + ret
2024-06-25 18:02:53 +00:00
class SaoGetVariousTutorialDataListResponse(SaoBaseResponse):
def __init__(self) -> None:
super().__init__(GameconnectCmd.GET_VARIOUS_TUTORIAL_DATA_LIST_RESPONSE)
self.result = 1
self.end_tutorial_type_list: List[int] = []
def make(self) -> bytes:
ret = encode_byte(self.result)
ret += encode_arr_num(self.end_tutorial_type_list, BYTE_OFF)
return super().make() + ret
class SaoVariousTutorialEndRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ticket_id, new_off = decode_str(data, off)
off += new_off
self.user_id, new_off = decode_str(data, off)
off += new_off
self.tutorial_type = decode_byte(data, off)
off += BYTE_OFF
class SaoGetMExTowersRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ex_tower_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMExTowerQuestsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.ex_tower_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMChatEventStoriesRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.event_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMTreasureHuntsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMTreasureHuntWholeTasksRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMTreasureHuntIndividualTasksRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMTreasureHuntSpecialEffectsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMTreasureHuntEventPointRewardCommonRewardsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMTreasureHuntEventPointRewardTitlesRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMDefragMatchesRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMDefragMatchSeedRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMDefragMatchSpecialEffectsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMDefragMatchGradesRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMDefragMatchPeriodBonusesRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMDefragMatchRandomBonusTablesRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMDefragMatchRareDropsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMEventScenesRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.event_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMBeginnerMissionConditionsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMBeginnerMissionRewardsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMBeginnerMissionSeatConditionsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMBeginnerMissionSeatRewardsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMEventMonstersRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.event_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMGashaMedalSettingsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.gasha_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMGashaMedalShopItemsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.gasha_medal_shop_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMResEarnCampaignApplicationProductsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.res_earn_campaign_application_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMResEarnCampaignShopItemsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.res_earn_campaign_shop_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMPlayCampaignRewardsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.play_campaign_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMLinkedSiteRegCampaignRewardsRequest(SaoBaseRequest):
def __init__(self, header: SaoRequestHeader, data: bytes) -> None:
super().__init__(header, data)
off = 0
self.linked_site_reg_campaign_id_list, new_off = decode_arr_num(data, off, INT_OFF)
off += new_off
class SaoGetMPlayerRanksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_PLAYER_RANKS_RESPONSE)
self.result = 1
self.data_list: List[PlayerRankData] = []
if data_list:
for item in data_list:
self.data_list.append(PlayerRankData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTitlesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TITLES_RESPONSE)
self.result = 1
self.data_list: List[TitleData] = []
if data_list:
for item in data_list:
self.data_list.append(TitleData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMFragmentsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_FRAGMENTS_RESPONSE)
self.result = 1
self.data_list: List[FragmentData] = []
if data_list:
for item in data_list:
self.data_list.append(FragmentData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMRewardTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_REWARD_TABLES_RESPONSE)
self.result = 1
self.data_list: List[RewardTableData] = []
if data_list:
for item in data_list:
self.data_list.append(RewardTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMRewardSetsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_REWARD_SETS_RESPONSE)
self.result = 1
self.data_list: List[RewardSetData] = []
if data_list:
for item in data_list:
self.data_list.append(RewardSetData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMUnanalyzedLogGradesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_UNANALYZED_LOG_GRADES_RESPONSE)
self.result = 1
self.data_list: List[UnanalyzedLogGradeData] = []
if data_list:
for item in data_list:
self.data_list.append(UnanalyzedLogGradeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMAppointLeaderParamsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_APPOINT_LEADER_PARAMS_RESPONSE)
self.result = 1
self.data_list: List[AppointLeaderParamData] = []
if data_list:
for item in data_list:
self.data_list.append(AppointLeaderParamData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMAppointLeaderEffectsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_APPOINT_LEADER_EFFECTS_RESPONSE)
self.result = 1
self.data_list: List[AppointLeaderEffectData] = []
if data_list:
for item in data_list:
self.data_list.append(AppointLeaderEffectData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMAppointLeaderEffectTypesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_APPOINT_LEADER_EFFECT_TYPES_RESPONSE)
self.result = 1
self.data_list: List[AppointLeaderEffectTypeData] = []
if data_list:
for item in data_list:
self.data_list.append(AppointLeaderEffectTypeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMRaritiesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_RARITIES_RESPONSE)
self.result = 1
self.data_list: List[RarityData] = []
if data_list:
for item in data_list:
self.data_list.append(RarityData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMCompositionEventsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_COMPOSITION_EVENTS_RESPONSE)
self.result = 1
self.data_list: List[CompositionEventData] = []
if data_list:
for item in data_list:
self.data_list.append(CompositionEventData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMCompositionParamsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_COMPOSITION_PARAMS_RESPONSE)
self.result = 1
self.data_list: List[CompositionParamData] = []
if data_list:
for item in data_list:
self.data_list.append(CompositionParamData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGamePlayPricesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GAME_PLAY_PRICES_RESPONSE)
self.result = 1
self.data_list: List[GamePlayPriceData] = []
if data_list:
for item in data_list:
self.data_list.append(GamePlayPriceData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBuyTicketsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BUY_TICKETS_RESPONSE)
self.result = 1
self.data_list: List[BuyTicketData] = []
if data_list:
for item in data_list:
self.data_list.append(BuyTicketData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTipsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TIPS_RESPONSE)
self.result = 1
self.data_list: List[TipsData] = []
if data_list:
for item in data_list:
self.data_list.append(TipsData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMCapsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_CAPS_RESPONSE)
self.result = 1
self.data_list: List[CapData] = []
if data_list:
for item in data_list:
self.data_list.append(CapData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMHeroLogResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_HERO_LOG_RESPONSE)
self.result = 1
self.data_list: List[HeroLogData] = []
if data_list:
for item in data_list:
self.data_list.append(HeroLogData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMHeroLogLevelsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_HERO_LOG_LEVELS_RESPONSE)
self.result = 1
self.data_list: List[HeroLogLevelData] = []
if data_list:
for item in data_list:
self.data_list.append(HeroLogLevelData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMHeroLogRolesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_HERO_LOG_ROLES_RESPONSE)
self.result = 1
self.data_list: List[HeroLogRoleData] = []
if data_list:
for item in data_list:
self.data_list.append(HeroLogRoleData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMHeroLogTrustRanksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_HERO_LOG_TRUST_RANKS_RESPONSE)
self.result = 1
self.data_list: List[HeroLogTrustRankData] = []
if data_list:
for item in data_list:
self.data_list.append(HeroLogTrustRankData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMCharasResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_CHARAS_RESPONSE)
self.result = 1
self.data_list: List[CharaData] = []
if data_list:
for item in data_list:
self.data_list.append(CharaData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMCharaFriendlyRanksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_CHARA_FRIENDLY_RANKS_RESPONSE)
self.result = 1
self.data_list: List[CharaFriendlyRankData] = []
if data_list:
for item in data_list:
self.data_list.append(CharaFriendlyRankData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEquipmentsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EQUIPMENTS_RESPONSE)
self.result = 1
self.data_list: List[EquipmentData] = []
if data_list:
for item in data_list:
self.data_list.append(EquipmentData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEquipmentLevelsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EQUIPMENT_LEVELS_RESPONSE)
self.result = 1
self.data_list: List[EquipmentLevelData] = []
if data_list:
for item in data_list:
self.data_list.append(EquipmentLevelData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMWeaponTypesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_WEAPON_TYPES_RESPONSE)
self.result = 1
self.data_list: List[WeaponTypeData] = []
if data_list:
for item in data_list:
self.data_list.append(WeaponTypeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMItemsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_ITEMS_RESPONSE)
self.result = 1
self.data_list: List[ItemData] = []
if data_list:
for item in data_list:
self.data_list.append(ItemData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMItemTypesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_ITEM_TYPES_RESPONSE)
self.result = 1
self.data_list: List[ItemTypeData] = []
if data_list:
for item in data_list:
self.data_list.append(ItemTypeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBuffItemsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BUFF_ITEMS_RESPONSE)
self.result = 1
self.data_list: List[BuffItemData] = []
if data_list:
for item in data_list:
self.data_list.append(BuffItemData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEnemiesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_ENEMIES_RESPONSE)
self.result = 1
self.data_list: List[EnemyData] = []
if data_list:
for item in data_list:
self.data_list.append(EnemyData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEnemySetsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_ENEMY_SETS_RESPONSE)
self.result = 1
self.data_list: List[EnemySetData] = []
if data_list:
for item in data_list:
self.data_list.append(EnemySetData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEnemyKindsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_ENEMY_KINDS_RESPONSE)
self.result = 1
self.data_list: List[EnemyKindData] = []
if data_list:
for item in data_list:
self.data_list.append(EnemyKindData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEnemyCategoriesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_ENEMY_CATEGORIES_RESPONSE)
self.result = 1
self.data_list: List[EnemyCategoryData] = []
if data_list:
for item in data_list:
self.data_list.append(EnemyCategoryData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMUnitsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_UNITS_RESPONSE)
self.result = 1
self.data_list: List[UnitData] = []
if data_list:
for item in data_list:
self.data_list.append(UnitData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMUnitGimmicksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_UNIT_GIMMICKS_RESPONSE)
self.result = 1
self.data_list: List[UnitGimmickData] = []
if data_list:
for item in data_list:
self.data_list.append(UnitGimmickData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMUnitCollisionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_UNIT_COLLISIONS_RESPONSE)
self.result = 1
self.data_list: List[UnitCollisionData] = []
if data_list:
for item in data_list:
self.data_list.append(UnitCollisionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMUnitPowersResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_UNIT_POWERS_RESPONSE)
self.result = 1
self.data_list: List[UnitPowerData] = []
if data_list:
for item in data_list:
self.data_list.append(UnitPowerData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGimmickAttacksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GIMMICK_ATTACKS_RESPONSE)
self.result = 1
self.data_list: List[GimmickAttackData] = []
if data_list:
for item in data_list:
self.data_list.append(GimmickAttackData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMCharaAttacksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_CHARA_ATTACKS_RESPONSE)
self.result = 1
self.data_list: List[CharaAttackData] = []
if data_list:
for item in data_list:
self.data_list.append(CharaAttackData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBossAttacksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BOSS_ATTACKS_RESPONSE)
self.result = 1
self.data_list: List[BossAttackData] = []
if data_list:
for item in data_list:
self.data_list.append(BossAttackData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMMonsterAttacksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_MONSTER_ATTACKS_RESPONSE)
self.result = 1
self.data_list: List[MonsterAttackData] = []
if data_list:
for item in data_list:
self.data_list.append(MonsterAttackData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMMonsterActionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_MONSTER_ACTIONS_RESPONSE)
self.result = 1
self.data_list: List[MonsterActionData] = []
if data_list:
for item in data_list:
self.data_list.append(MonsterActionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMPropertiesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_PROPERTIES_RESPONSE)
self.result = 1
self.data_list: List[PropertyData] = []
if data_list:
for item in data_list:
self.data_list.append(PropertyData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMPropertyTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_PROPERTY_TABLES_RESPONSE)
self.result = 1
self.data_list: List[PropertyTableData] = []
if data_list:
for item in data_list:
self.data_list.append(PropertyTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMPropertyTypesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_PROPERTY_TYPES_RESPONSE)
self.result = 1
self.data_list: List[PropertyTypeData] = []
if data_list:
for item in data_list:
self.data_list.append(PropertyTypeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSkillsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SKILLS_RESPONSE)
self.result = 1
self.data_list: List[SkillData] = []
if data_list:
for item in data_list:
self.data_list.append(SkillData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSkillTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SKILL_TABLES_RESPONSE)
self.result = 1
self.data_list: List[SkillTableData] = []
if data_list:
for item in data_list:
self.data_list.append(SkillTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSkillLevelsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SKILL_LEVELS_RESPONSE)
self.result = 1
self.data_list: List[SkillLevelData] = []
if data_list:
for item in data_list:
self.data_list.append(SkillLevelData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMAwakeningsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_AWAKENINGS_RESPONSE)
self.result = 1
self.data_list: List[AwakeningData] = []
if data_list:
for item in data_list:
self.data_list.append(AwakeningData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSynchroSkillsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SYNCHRO_SKILLS_RESPONSE)
self.result = 1
self.data_list: List[SynchroSkillData] = []
if data_list:
for item in data_list:
self.data_list.append(SynchroSkillData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSoundSkillCutInVoicesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SOUND_SKILL_CUT_IN_VOICES_RESPONSE)
self.result = 1
self.data_list: List[SoundSkillCutInVoiceData] = []
if data_list:
for item in data_list:
self.data_list.append(SoundSkillCutInVoiceData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestScenesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_SCENES_RESPONSE)
self.result = 1
self.data_list: List[QuestSceneData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestSceneData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestExistUnitsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_EXIST_UNITS_RESPONSE)
self.result = 1
self.data_list: List[QuestExistUnitData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestExistUnitData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestEpisodeAppendRewardsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_EPISODE_APPEND_REWARDS_RESPONSE)
self.result = 1
self.data_list: List[QuestEpisodeAppendRewardData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestEpisodeAppendRewardData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSideQuestsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SIDE_QUESTS_RESPONSE)
self.result = 1
self.data_list: List[SideQuestData] = []
if data_list:
for item in data_list:
self.data_list.append(SideQuestData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEpisodesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EPISODES_RESPONSE)
self.result = 1
self.data_list: List[EpisodeData] = []
if data_list:
for item in data_list:
self.data_list.append(EpisodeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEpisodeChaptersResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EPISODE_CHAPTERS_RESPONSE)
self.result = 1
self.data_list: List[EpisodeChapterData] = []
if data_list:
for item in data_list:
self.data_list.append(EpisodeChapterData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEpisodePartsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EPISODE_PARTS_RESPONSE)
self.result = 1
self.data_list: List[EpisodePartData] = []
if data_list:
for item in data_list:
self.data_list.append(EpisodePartData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTrialTowersResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TRIAL_TOWERS_RESPONSE)
self.result = 1
self.data_list: List[TrialTowerData] = []
if data_list:
for item in data_list:
self.data_list.append(TrialTowerData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMExTowersResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EX_TOWERS_RESPONSE)
self.result = 1
self.data_list: List[ExTowerData] = []
if data_list:
for item in data_list:
self.data_list.append(ExTowerData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMExTowerQuestsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EX_TOWER_QUESTS_RESPONSE)
self.result = 1
self.data_list: List[ExTowerQuestData] = []
if data_list:
for item in data_list:
self.data_list.append(ExTowerQuestData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMMenuDisplayEnemiesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_MENU_DISPLAY_ENEMIES_RESPONSE)
self.result = 1
self.data_list: List[MenuDisplayEnemyData] = []
if data_list:
for item in data_list:
self.data_list.append(MenuDisplayEnemyData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMMissionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_MISSIONS_RESPONSE)
self.result = 1
self.data_list: List[MissionData] = []
if data_list:
for item in data_list:
self.data_list.append(MissionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMMissionTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_MISSION_TABLES_RESPONSE)
self.result = 1
self.data_list: List[MissionTableData] = []
if data_list:
for item in data_list:
self.data_list.append(MissionTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMMissionDifficultiesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_MISSION_DIFFICULTIES_RESPONSE)
self.result = 1
self.data_list: List[MissionDifficultyData] = []
if data_list:
for item in data_list:
self.data_list.append(MissionDifficultyData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBattleCamerasResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BATTLE_CAMERAS_RESPONSE)
self.result = 1
self.data_list: List[BattleCameraData] = []
if data_list:
for item in data_list:
self.data_list.append(BattleCameraData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMChatMainStoriesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_CHAT_MAIN_STORIES_RESPONSE)
self.result = 1
self.data_list: List[ChatMainStoryData] = []
if data_list:
for item in data_list:
self.data_list.append(ChatMainStoryData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMChatSideStoriesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_CHAT_SIDE_STORIES_RESPONSE)
self.result = 1
self.data_list: List[ChatSideStoryData] = []
if data_list:
for item in data_list:
self.data_list.append(ChatSideStoryData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMChatEventStoriesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_CHAT_EVENT_STORIES_RESPONSE)
self.result = 1
self.data_list: List[ChatEventStoryData] = []
if data_list:
for item in data_list:
self.data_list.append(ChatEventStoryData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMNavigatorCharasResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_NAVIGATOR_CHARAS_RESPONSE)
self.result = 1
self.data_list: List[NavigatorCharaData] = []
if data_list:
for item in data_list:
self.data_list.append(NavigatorCharaData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMNavigatorCommentsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_NAVIGATOR_COMMENTS_RESPONSE)
self.result = 1
self.data_list: List[NavigatorCommentData] = []
if data_list:
for item in data_list:
self.data_list.append(NavigatorCommentData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMExBonusTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EX_BONUS_TABLES_RESPONSE)
self.result = 1
self.data_list: List[ExBonusTableData] = []
if data_list:
for item in data_list:
self.data_list.append(ExBonusTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMExBonusConditionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EX_BONUS_CONDITIONS_RESPONSE)
self.result = 1
self.data_list: List[ExBonusConditionData] = []
if data_list:
for item in data_list:
self.data_list.append(ExBonusConditionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestRareDropsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_RARE_DROPS_RESPONSE)
self.result = 1
self.data_list: List[QuestRareDropData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestRareDropData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestSpecialRareDropSettingsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_SPECIAL_RARE_DROP_SETTINGS_RESPONSE)
self.result = 1
self.data_list: List[QuestSpecialRareDropSettingData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestSpecialRareDropSettingData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestSpecialRareDropsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_SPECIAL_RARE_DROPS_RESPONSE)
self.result = 1
self.data_list: List[QuestSpecialRareDropData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestSpecialRareDropData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestTutorialsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_TUTORIALS_RESPONSE)
self.result = 1
self.data_list: List[QuestTutorialData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestTutorialData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestPlayerTraceTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_PLAYER_TRACE_TABLES_RESPONSE)
self.result = 1
self.data_list: List[QuestPlayerTraceTableData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestPlayerTraceTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestStillsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_STILLS_RESPONSE)
self.result = 1
self.data_list: List[QuestStillData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestStillData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashasResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHAS_RESPONSE)
self.result = 1
self.data_list: List[GashaData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaHeadersResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_HEADERS_RESPONSE)
self.result = 1
self.data_list: List[GashaHeaderData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaHeaderData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaLotteryRaritiesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_LOTTERY_RARITIES_RESPONSE)
self.result = 1
self.data_list: List[GashaLotteryRarityData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaLotteryRarityData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaPrizesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_PRIZES_RESPONSE)
self.result = 1
self.data_list: List[GashaPrizeData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaPrizeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMComebackEventsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_COMEBACK_EVENTS_RESPONSE)
self.result = 1
self.data_list: List[ComebackEventData] = []
if data_list:
for item in data_list:
self.data_list.append(ComebackEventData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMAdBannersResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_AD_BANNERS_RESPONSE)
self.result = 1
self.data_list: List[AdBannerData] = []
if data_list:
for item in data_list:
self.data_list.append(AdBannerData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEventsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EVENTS_RESPONSE)
self.result = 1
self.data_list: List[EventsData] = []
if data_list:
for item in data_list:
self.data_list.append(EventsData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTreasureHuntsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TREASURE_HUNTS_RESPONSE)
self.result = 1
self.data_list: List[TreasureHuntsData] = []
if data_list:
for item in data_list:
self.data_list.append(TreasureHuntsData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTreasureHuntWholeTasksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_WHOLE_TASKS_RESPONSE)
self.result = 1
self.data_list: List[TreasureHuntWholeTasksData] = []
if data_list:
for item in data_list:
self.data_list.append(TreasureHuntWholeTasksData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTreasureHuntIndividualTasksResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_INDIVIDUAL_TASKS_RESPONSE)
self.result = 1
self.data_list: List[TreasureHuntIndividualTasksData] = []
if data_list:
for item in data_list:
self.data_list.append(TreasureHuntIndividualTasksData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTreasureHuntSpecialEffectsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_SPECIAL_EFFECTS_RESPONSE)
self.result = 1
self.data_list: List[TreasureHuntSpecialEffectsData] = []
if data_list:
for item in data_list:
self.data_list.append(TreasureHuntSpecialEffectsData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTreasureHuntEventPointRewardCommonRewardsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_EVENT_POINT_REWARD_COMMON_REWARDS_RESPONSE)
self.result = 1
self.data_list: List[TreasureHuntEventPointRewardCommonRewardsData] = []
if data_list:
for item in data_list:
self.data_list.append(TreasureHuntEventPointRewardCommonRewardsData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTreasureHuntEventPointRewardTitlesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_EVENT_POINT_REWARD_TITLES_RESPONSE)
self.result = 1
self.data_list: List[TreasureHuntEventPointRewardTitlesData] = []
if data_list:
for item in data_list:
self.data_list.append(TreasureHuntEventPointRewardTitlesData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMTreasureHuntTaskTextsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_TASK_TEXTS_RESPONSE)
self.result = 1
self.data_list: List[TreasureHuntTaskTextData] = []
if data_list:
for item in data_list:
self.data_list.append(TreasureHuntTaskTextData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBnidSerialCodesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BNID_SERIAL_CODES_RESPONSE)
self.result = 1
self.data_list: List[BnidSerialCodeData] = []
if data_list:
for item in data_list:
self.data_list.append(BnidSerialCodeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBnidSerialCodeRewardsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BNID_SERIAL_CODE_REWARDS_RESPONSE)
self.result = 1
self.data_list: List[BnidSerialCodeRewardData] = []
if data_list:
for item in data_list:
self.data_list.append(BnidSerialCodeRewardData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSupportLogResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SUPPORT_LOG_RESPONSE)
self.result = 1
self.data_list: List[SupportLogData] = []
if data_list:
for item in data_list:
self.data_list.append(SupportLogData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMSupportLogTypesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_SUPPORT_LOG_TYPES_RESPONSE)
self.result = 1
self.data_list: List[SupportLogTypeData] = []
if data_list:
for item in data_list:
self.data_list.append(SupportLogTypeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEpisodeAppendsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EPISODE_APPENDS_RESPONSE)
self.result = 1
self.data_list: List[EpisodeAppendData] = []
if data_list:
for item in data_list:
self.data_list.append(EpisodeAppendData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestDefragMatchQuestsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_DEFRAG_MATCH_QUESTS_RESPONSE)
self.result = 1
self.data_list: List[QuestDefragMatchQuestData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestDefragMatchQuestData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestDefragMatchQuestBossTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_DEFRAG_MATCH_QUEST_BOSS_TABLES_RESPONSE)
self.result = 1
self.data_list: List[QuestDefragMatchQuestBossTableData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestDefragMatchQuestBossTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCHES_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchSeedResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_SEED_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchSeedData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchSeedData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchSpecialEffectsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_SPECIAL_EFFECTS_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchSpecialEffectData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchSpecialEffectData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchGradesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_GRADES_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchGradeData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchGradeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchCpuUnitsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_CPU_UNITS_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchCpuUnitData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchCpuUnitData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchCpuSupportLogsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_CPU_SUPPORT_LOGS_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchCpuSupportLogData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchCpuSupportLogData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchPeriodBonusesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_PERIOD_BONUSES_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchPeriodBonusData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchPeriodBonusData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchRandomBonusTablesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_RANDOM_BONUS_TABLES_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchRandomBonusTableData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchRandomBonusTableData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchRandomBonusConditionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_RANDOM_BONUS_CONDITIONS_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchRandomBonusConditionData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchRandomBonusConditionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMDefragMatchRareDropsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_RARE_DROPS_RESPONSE)
self.result = 1
self.data_list: List[DefragMatchRareDropData] = []
if data_list:
for item in data_list:
self.data_list.append(DefragMatchRareDropData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMYuiMedalShopsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_SHOPS_RESPONSE)
self.result = 1
self.data_list: List[YuiMedalShopData] = []
if data_list:
for item in data_list:
self.data_list.append(YuiMedalShopData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMYuiMedalShopItemsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_SHOP_ITEMS_RESPONSE)
self.result = 1
self.data_list: List[YuiMedalShopItemData] = []
if data_list:
for item in data_list:
self.data_list.append(YuiMedalShopItemData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEventScenesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EVENT_SCENES_RESPONSE)
self.result = 1
self.data_list: List[EventSceneData] = []
if data_list:
for item in data_list:
self.data_list.append(EventSceneData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGenericCampaignPeriodsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GENERIC_CAMPAIGN_PERIODS_RESPONSE)
self.result = 1
self.data_list: List[GenericCampaignPeriodData] = []
if data_list:
for item in data_list:
self.data_list.append(GenericCampaignPeriodData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBeginnerMissionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSIONS_RESPONSE)
self.result = 1
self.data_list: List[BeginnerMissionData] = []
if data_list:
for item in data_list:
self.data_list.append(BeginnerMissionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBeginnerMissionConditionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_CONDITIONS_RESPONSE)
self.result = 1
self.data_list: List[BeginnerMissionConditionData] = []
if data_list:
for item in data_list:
self.data_list.append(BeginnerMissionConditionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBeginnerMissionRewardsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_REWARDS_RESPONSE)
self.result = 1
self.data_list: List[BeginnerMissionRewardData] = []
if data_list:
for item in data_list:
self.data_list.append(BeginnerMissionRewardData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBeginnerMissionSeatConditionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_SEAT_CONDITIONS_RESPONSE)
self.result = 1
self.data_list: List[BeginnerMissionSeatConditionData] = []
if data_list:
for item in data_list:
self.data_list.append(BeginnerMissionSeatConditionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMBeginnerMissionSeatRewardsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_SEAT_REWARDS_RESPONSE)
self.result = 1
self.data_list: List[BeginnerMissionSeatRewardData] = []
if data_list:
for item in data_list:
self.data_list.append(BeginnerMissionSeatRewardData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEventItemsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EVENT_ITEMS_RESPONSE)
self.result = 1
self.data_list: List[EventItemData] = []
if data_list:
for item in data_list:
self.data_list.append(EventItemData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMEventMonstersResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_EVENT_MONSTERS_RESPONSE)
self.result = 1
self.data_list: List[EventMonsterData] = []
if data_list:
for item in data_list:
self.data_list.append(EventMonsterData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMYuiMedalBonusesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_BONUSES_RESPONSE)
self.result = 1
self.data_list: List[YuiMedalBonusData] = []
if data_list:
for item in data_list:
self.data_list.append(YuiMedalBonusData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMYuiMedalBonusConditionsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_BONUS_CONDITIONS_RESPONSE)
self.result = 1
self.data_list: List[YuiMedalBonusConditionData] = []
if data_list:
for item in data_list:
self.data_list.append(YuiMedalBonusConditionData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaMedalsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_MEDALS_RESPONSE)
self.result = 1
self.data_list: List[GashaMedalData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaMedalData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaMedalTypesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_TYPES_RESPONSE)
self.result = 1
self.data_list: List[GashaMedalTypeData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaMedalTypeData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaMedalSettingsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_SETTINGS_RESPONSE)
self.result = 1
self.data_list: List[GashaMedalSettingData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaMedalSettingData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaMedalBonusesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_BONUSES_RESPONSE)
self.result = 1
self.data_list: List[GashaMedalBonusData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaMedalBonusData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaMedalShopsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_SHOPS_RESPONSE)
self.result = 1
self.data_list: List[GashaMedalShopData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaMedalShopData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaMedalShopItemsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_SHOP_ITEMS_RESPONSE)
self.result = 1
self.data_list: List[GashaMedalShopItemData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaMedalShopItemData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMResEarnCampaignApplicationsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_APPLICATIONS_RESPONSE)
self.result = 1
self.data_list: List[ResEarnCampaignApplicationData] = []
if data_list:
for item in data_list:
self.data_list.append(ResEarnCampaignApplicationData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMResEarnCampaignApplicationProductsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_APPLICATION_PRODUCTS_RESPONSE)
self.result = 1
self.data_list: List[ResEarnCampaignApplicationProductData] = []
if data_list:
for item in data_list:
self.data_list.append(ResEarnCampaignApplicationProductData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMResEarnCampaignShopsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_SHOPS_RESPONSE)
self.result = 1
self.data_list: List[ResEarnCampaignShopData] = []
if data_list:
for item in data_list:
self.data_list.append(ResEarnCampaignShopData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMResEarnCampaignShopItemsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_SHOP_ITEMS_RESPONSE)
self.result = 1
self.data_list: List[ResEarnCampaignShopItemData] = []
if data_list:
for item in data_list:
self.data_list.append(ResEarnCampaignShopItemData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMPayingYuiMedalBonusesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_PAYING_YUI_MEDAL_BONUSES_RESPONSE)
self.result = 1
self.data_list: List[PayingYuiMedalBonusData] = []
if data_list:
for item in data_list:
self.data_list.append(PayingYuiMedalBonusData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMAcLoginBonusesResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_AC_LOGIN_BONUSES_RESPONSE)
self.result = 1
self.data_list: List[AcLoginBonusData] = []
if data_list:
for item in data_list:
self.data_list.append(AcLoginBonusData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMPlayCampaignsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_PLAY_CAMPAIGNS_RESPONSE)
self.result = 1
self.data_list: List[PlayCampaignData] = []
if data_list:
for item in data_list:
self.data_list.append(PlayCampaignData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMPlayCampaignRewardsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_PLAY_CAMPAIGN_REWARDS_RESPONSE)
self.result = 1
self.data_list: List[PlayCampaignRewardData] = []
if data_list:
for item in data_list:
self.data_list.append(PlayCampaignRewardData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMGashaFreeCampaignsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_GASHA_FREE_CAMPAIGNS_RESPONSE)
self.result = 1
self.data_list: List[GashaFreeCampaignData] = []
if data_list:
for item in data_list:
self.data_list.append(GashaFreeCampaignData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMQuestDropBoostCampaignsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_QUEST_DROP_BOOST_CAMPAIGNS_RESPONSE)
self.result = 1
self.data_list: List[QuestDropBoostCampaignData] = []
if data_list:
for item in data_list:
self.data_list.append(QuestDropBoostCampaignData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMFirstTicketPurchaseCampaignsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_FIRST_TICKET_PURCHASE_CAMPAIGNS_RESPONSE)
self.result = 1
self.data_list: List[FirstTicketPurchaseCampaignData] = []
if data_list:
for item in data_list:
self.data_list.append(FirstTicketPurchaseCampaignData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMLinkedSiteRegCampaignsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_LINKED_SITE_REG_CAMPAIGNS_RESPONSE)
self.result = 1
self.data_list: List[LinkedSiteRegCampaignsData] = []
if data_list:
for item in data_list:
self.data_list.append(LinkedSiteRegCampaignsData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)
class SaoGetMLinkedSiteRegCampaignRewardsResponse(SaoBaseResponse):
def __init__(self, data_list: List[Dict]) -> None:
super().__init__(GameconnectCmd.GET_M_LINKED_SITE_REG_CAMPAIGN_REWARDS_RESPONSE)
self.result = 1
self.data_list: List[LinkedSiteRegCampaignRewardData] = []
if data_list:
for item in data_list:
self.data_list.append(LinkedSiteRegCampaignRewardData.from_args(item))
def make(self) -> bytes:
return super().make() \
+ encode_byte(self.result) \
+ encode_arr_cls(self.data_list)