structs: make sure *all* fields are exported

This commit is contained in:
CPunch 2023-03-07 14:23:53 -06:00
parent bdd7b5ba86
commit 468e426a82
4 changed files with 160 additions and 161 deletions

View File

@ -3,8 +3,8 @@ package protocol
type SPCStyle struct { type SPCStyle struct {
IPC_UID int64 IPC_UID int64
INameCheck int8 `pad:"1"` INameCheck int8 `pad:"1"`
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
IGender int8 IGender int8
IFaceStyle int8 IFaceStyle int8
IHairStyle int8 IHairStyle int8
@ -73,13 +73,13 @@ type SItemTrade struct {
type SItemVendor struct { type SItemVendor struct {
IVendorID int32 IVendorID int32
FBuyCost float32 FBuyCost float32
item SItemBase Item SItemBase
ISortNum int32 ISortNum int32
// SIZE: 24 // SIZE: 24
} }
type SItemReward struct { type SItemReward struct {
sItem SItemBase SItem SItemBase
EIL int32 EIL int32
ISlotNum int32 ISlotNum int32
// SIZE: 20 // SIZE: 20
@ -104,10 +104,10 @@ type SEmailItemInfoFromCL struct {
} }
type SEPRecord struct { type SEPRecord struct {
UIScore int16 UiScore int16
UIRank int8 UiRank int8
UIRing int8 UiRing int8
UITime int16 UiTime int16
// SIZE: 6 // SIZE: 6
} }
@ -117,16 +117,16 @@ type SBuddyBaseInfo struct {
BBlocked int8 BBlocked int8
BFreeChat int8 BFreeChat int8
IPCState int8 `pad:"1"` IPCState int8 `pad:"1"`
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
IGender int8 IGender int8
INameCheckFlag int8 `pad:"2"` INameCheckFlag int8 `pad:"2"`
// SIZE: 72 // SIZE: 72
} }
type SBuddyStyleInfo struct { type SBuddyStyleInfo struct {
sBuddyStyle SPCStyle SBuddyStyle SPCStyle
aEquip [9]SItemBase AEquip [9]SItemBase
// SIZE: 184 // SIZE: 184
} }
@ -145,9 +145,9 @@ type SSYSTEMTIME struct {
type SEmailInfo struct { type SEmailInfo struct {
IEmailIndex int64 IEmailIndex int64
IFromPCUID int64 IFromPCUID int64
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
SZSubject string `size:"32"` SzSubject string `size:"32"`
IReadFlag int32 IReadFlag int32
SendTime SSYSTEMTIME SendTime SSYSTEMTIME
DeleteTime SSYSTEMTIME DeleteTime SSYSTEMTIME
@ -205,10 +205,10 @@ type SPCLoadData2CL struct {
IY int32 IY int32
IZ int32 IZ int32
IAngle int32 IAngle int32
aEquip [9]SItemBase AEquip [9]SItemBase
aInven [50]SItemBase AInven [50]SItemBase
aQInven [50]SItemBase AQInven [50]SItemBase
aNanoBank [37]SNano ANanoBank [37]SNano
ANanoSlots [3]int16 ANanoSlots [3]int16
IActiveNanoSlotNum int16 `pad:"2"` IActiveNanoSlotNum int16 `pad:"2"`
IConditionBitFlag int32 IConditionBitFlag int32
@ -216,7 +216,7 @@ type SPCLoadData2CL struct {
TimeBuff STimeBuff TimeBuff STimeBuff
AQuestFlag [32]int64 AQuestFlag [32]int64
ARepeatQuestFlag [8]int64 ARepeatQuestFlag [8]int64
aRunningQuest [9]SRunningQuest ARunningQuest [9]SRunningQuest
ICurrentMissionID int32 ICurrentMissionID int32
IWarpLocationFlag int32 IWarpLocationFlag int32
AWyvernLocationFlag [2]int64 AWyvernLocationFlag [2]int64
@ -226,7 +226,7 @@ type SPCLoadData2CL struct {
IFatigueRate int32 IFatigueRate int32
IFirstUseFlag1 int64 IFirstUseFlag1 int64
IFirstUseFlag2 int64 IFirstUseFlag2 int64
AIPCSkill [33]int32 AiPCSkill [33]int32
// SIZE: 2688 // SIZE: 2688
} }
@ -531,8 +531,8 @@ type SPCGroupMemberInfo struct {
IPC_ID int32 IPC_ID int32
IPCUID uint64 IPCUID uint64
INameCheck int8 `pad:"1"` INameCheck int8 `pad:"1"`
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
ISpecialState int8 `pad:"1"` ISpecialState int8 `pad:"1"`
ILv int16 `pad:"2"` ILv int16 `pad:"2"`
IHP int32 IHP int32
@ -586,7 +586,7 @@ type SQuickSlot struct {
} }
type SP_CL2FE_REQ_PC_ENTER struct { type SP_CL2FE_REQ_PC_ENTER struct {
SZID string `size:"33" pad:"2"` SzID string `size:"33" pad:"2"`
ITempValue int32 ITempValue int32
IEnterSerialKey int64 IEnterSerialKey int64
// SIZE: 80 // SIZE: 80
@ -639,13 +639,13 @@ type SP_CL2FE_REQ_PC_ATTACK_NPCs struct {
} }
type SP_CL2FE_REQ_SEND_FREECHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_FREECHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 260 // SIZE: 260
} }
type SP_CL2FE_REQ_SEND_MENUCHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_MENUCHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 260 // SIZE: 260
} }
@ -700,7 +700,7 @@ type SP_CL2FE_REQ_NANO_ACTIVE struct {
type SP_CL2FE_REQ_NANO_TUNE struct { type SP_CL2FE_REQ_NANO_TUNE struct {
INanoID int16 INanoID int16
ITuneID int16 ITuneID int16
AINeedItemSlotNum [10]int32 AiNeedItemSlotNum [10]int32
// SIZE: 44 // SIZE: 44
} }
@ -907,7 +907,7 @@ type SP_CL2FE_REQ_PC_TRADE_EMOTES_CHAT struct {
IID_Request int32 IID_Request int32
IID_From int32 IID_From int32
IID_To int32 IID_To int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IFreeChatUse int8 `pad:"3"` IFreeChatUse int8 `pad:"3"`
// SIZE: 276 // SIZE: 276
@ -968,7 +968,7 @@ type SP_CL2FE_REQ_ACCEPT_MAKE_BUDDY struct {
} }
type SP_CL2FE_REQ_SEND_BUDDY_FREECHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_BUDDY_FREECHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IBuddyPCUID int64 IBuddyPCUID int64
IBuddySlot int8 `pad:"3"` IBuddySlot int8 `pad:"3"`
@ -976,7 +976,7 @@ type SP_CL2FE_REQ_SEND_BUDDY_FREECHAT_MESSAGE struct {
} }
type SP_CL2FE_REQ_SEND_BUDDY_MENUCHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_BUDDY_MENUCHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IBuddyPCUID int64 IBuddyPCUID int64
IBuddySlot int8 `pad:"3"` IBuddySlot int8 `pad:"3"`
@ -1212,8 +1212,8 @@ type SP_CL2FE_REQ_EP_RANK_GET_DETAIL struct {
type SP_CL2FE_REQ_EP_RANK_GET_PC_INFO struct { type SP_CL2FE_REQ_EP_RANK_GET_PC_INFO struct {
IEP_ID int32 IEP_ID int32
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 56 // SIZE: 56
} }
@ -1277,13 +1277,13 @@ type SP_CL2FE_REQ_PC_MOVETRANSPORTATION struct {
} }
type SP_CL2FE_REQ_SEND_ALL_GROUP_FREECHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_ALL_GROUP_FREECHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 260 // SIZE: 260
} }
type SP_CL2FE_REQ_SEND_ANY_GROUP_FREECHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_ANY_GROUP_FREECHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IGroupPC_ID int32 IGroupPC_ID int32
// SIZE: 264 // SIZE: 264
@ -1296,13 +1296,13 @@ type SP_CL2FE_REQ_BARKER struct {
} }
type SP_CL2FE_REQ_SEND_ALL_GROUP_MENUCHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_ALL_GROUP_MENUCHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 260 // SIZE: 260
} }
type SP_CL2FE_REQ_SEND_ANY_GROUP_MENUCHAT_MESSAGE struct { type SP_CL2FE_REQ_SEND_ANY_GROUP_MENUCHAT_MESSAGE struct {
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IGroupPC_ID int32 IGroupPC_ID int32
// SIZE: 264 // SIZE: 264
@ -1340,8 +1340,8 @@ type SP_CL2FE_GM_REQ_KICK_PLAYER struct {
IPC_ID int32 IPC_ID int32
ETargetSearchBy int32 ETargetSearchBy int32
ITargetPC_ID int32 ITargetPC_ID int32
SZTargetPC_FirstName string `size:"10"` SzTargetPC_FirstName string `size:"10"`
SZTargetPC_LastName string `size:"18"` SzTargetPC_LastName string `size:"18"`
ITargetPC_UID int64 ITargetPC_UID int64
// SIZE: 76 // SIZE: 76
} }
@ -1350,8 +1350,8 @@ type SP_CL2FE_GM_REQ_TARGET_PC_TELEPORT struct {
IPC_ID int32 IPC_ID int32
ETargetPCSearchBy int32 ETargetPCSearchBy int32
ITargetPC_ID int32 ITargetPC_ID int32
SZTargetPC_FirstName string `size:"10"` SzTargetPC_FirstName string `size:"10"`
SZTargetPC_LastName string `size:"18"` SzTargetPC_LastName string `size:"18"`
ITargetPC_UID int64 ITargetPC_UID int64
ETeleportType int32 ETeleportType int32
IToMapType int32 IToMapType int32
@ -1361,8 +1361,8 @@ type SP_CL2FE_GM_REQ_TARGET_PC_TELEPORT struct {
IToZ int32 IToZ int32
EGoalPCSearchBy int32 EGoalPCSearchBy int32
IGoalPC_ID int32 IGoalPC_ID int32
SZGoalPC_FirstName string `size:"10"` SzGoalPC_FirstName string `size:"10"`
SZGoalPC_LastName string `size:"18"` SzGoalPC_LastName string `size:"18"`
IGoalPC_UID int64 IGoalPC_UID int64
// SIZE: 172 // SIZE: 172
} }
@ -1370,8 +1370,8 @@ type SP_CL2FE_GM_REQ_TARGET_PC_TELEPORT struct {
type SP_CL2FE_GM_REQ_PC_LOCATION struct { type SP_CL2FE_GM_REQ_PC_LOCATION struct {
ETargetSearchBy int32 ETargetSearchBy int32
ITargetPC_ID int32 ITargetPC_ID int32
SZTargetPC_FirstName string `size:"10"` SzTargetPC_FirstName string `size:"10"`
SZTargetPC_LastName string `size:"18"` SzTargetPC_LastName string `size:"18"`
ITargetPC_UID int64 ITargetPC_UID int64
// SIZE: 72 // SIZE: 72
} }
@ -1380,7 +1380,7 @@ type SP_CL2FE_GM_REQ_PC_ANNOUNCE struct {
IAreaType int8 IAreaType int8
IAnnounceType int8 `pad:"2"` IAnnounceType int8 `pad:"2"`
IDuringTime int32 IDuringTime int32
SZAnnounceMsg string `size:"512"` SzAnnounceMsg string `size:"512"`
// SIZE: 1032 // SIZE: 1032
} }
@ -1397,7 +1397,7 @@ type SP_CL2FE_REQ_REGIST_RXCOM struct {
type SP_CL2FE_GM_REQ_PC_MOTD_REGISTER struct { type SP_CL2FE_GM_REQ_PC_MOTD_REGISTER struct {
IType int8 `pad:"1"` IType int8 `pad:"1"`
SZSystemMsg string `size:"512"` SzSystemMsg string `size:"512"`
// SIZE: 1026 // SIZE: 1026
} }
@ -1462,9 +1462,9 @@ type SP_CL2FE_REQ_PC_DELETE_EMAIL struct {
type SP_CL2FE_REQ_PC_SEND_EMAIL struct { type SP_CL2FE_REQ_PC_SEND_EMAIL struct {
ITo_PCUID int64 ITo_PCUID int64
SZSubject string `size:"32"` SzSubject string `size:"32"`
SZContent string `size:"512"` SzContent string `size:"512"`
aItem [4]SEmailItemInfoFromCL AItem [4]SEmailItemInfoFromCL
ICash int32 ICash int32
// SIZE: 1164 // SIZE: 1164
} }
@ -1484,8 +1484,8 @@ type SP_CL2FE_REQ_PC_RECV_EMAIL_CANDY struct {
type SP_CL2FE_GM_REQ_TARGET_PC_SPECIAL_STATE_ONOFF struct { type SP_CL2FE_GM_REQ_TARGET_PC_SPECIAL_STATE_ONOFF struct {
ETargetSearchBy int32 ETargetSearchBy int32
ITargetPC_ID int32 ITargetPC_ID int32
SZTargetPC_FirstName string `size:"10"` SzTargetPC_FirstName string `size:"10"`
SZTargetPC_LastName string `size:"18"` SzTargetPC_LastName string `size:"18"`
ITargetPC_UID int64 ITargetPC_UID int64
IONOFF int32 IONOFF int32
ISpecialStateFlag int8 `pad:"3"` ISpecialStateFlag int8 `pad:"3"`
@ -1549,16 +1549,16 @@ type SP_CL2FE_REQ_PC_LOADING_COMPLETE struct {
} }
type SP_CL2FE_REQ_PC_FIND_NAME_MAKE_BUDDY struct { type SP_CL2FE_REQ_PC_FIND_NAME_MAKE_BUDDY struct {
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 52 // SIZE: 52
} }
type SP_CL2FE_REQ_PC_FIND_NAME_ACCEPT_BUDDY struct { type SP_CL2FE_REQ_PC_FIND_NAME_ACCEPT_BUDDY struct {
IAcceptFlag int32 IAcceptFlag int32
IBuddyPCUID int64 IBuddyPCUID int64
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 64 // SIZE: 64
} }
@ -1719,14 +1719,14 @@ type SP_CL2FE_REQ_PC_ITEM_ENCHANT struct {
} }
type SP_CL2LS_REQ_LOGIN struct { type SP_CL2LS_REQ_LOGIN struct {
SZID string `size:"33"` SzID string `size:"33"`
SZPassword string `size:"33"` SzPassword string `size:"33"`
IClientVerA int32 IClientVerA int32
IClientVerB int32 IClientVerB int32
IClientVerC int32 IClientVerC int32
ILoginType int32 ILoginType int32
SZCookie_TEGid [64]byte SzCookie_TEGid [64]byte
SZCookie_authid [255]byte `pad:"1"` SzCookie_authid [255]byte `pad:"1"`
// SIZE: 468 // SIZE: 468
} }
@ -1734,8 +1734,8 @@ type SP_CL2LS_REQ_CHECK_CHAR_NAME struct {
IFNCode int32 IFNCode int32
ILNCode int32 ILNCode int32
IMNCode int32 IMNCode int32
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 64 // SIZE: 64
} }
@ -1745,15 +1745,15 @@ type SP_CL2LS_REQ_SAVE_CHAR_NAME struct {
IFNCode int32 IFNCode int32
ILNCode int32 ILNCode int32
IMNCode int32 IMNCode int32
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 68 // SIZE: 68
} }
type SP_CL2LS_REQ_CHAR_CREATE struct { type SP_CL2LS_REQ_CHAR_CREATE struct {
PCStyle SPCStyle PCStyle SPCStyle
sOn_Item SOnItem SOn_Item SOnItem
sOn_Item_Index SOnItem_Index SOn_Item_Index SOnItem_Index
// SIZE: 100 // SIZE: 100
} }
@ -1768,7 +1768,7 @@ type SP_CL2LS_REQ_CHAR_DELETE struct {
} }
type SP_CL2LS_REQ_SHARD_SELECT struct { type SP_CL2LS_REQ_SHARD_SELECT struct {
SHardNum int8 ShardNum int8
// SIZE: 1 // SIZE: 1
} }
@ -1786,8 +1786,8 @@ type SP_CL2LS_REQ_SAVE_CHAR_TUTOR struct {
} }
type SP_CL2LS_REQ_PC_EXIT_DUPLICATE struct { type SP_CL2LS_REQ_PC_EXIT_DUPLICATE struct {
SZID string `size:"33"` SzID string `size:"33"`
SZPassword string `size:"33"` SzPassword string `size:"33"`
// SIZE: 132 // SIZE: 132
} }
@ -1803,39 +1803,39 @@ type SP_CL2LS_REQ_CHANGE_CHAR_NAME struct {
IFNCode int32 IFNCode int32
ILNCode int32 ILNCode int32
IMNCode int32 IMNCode int32
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 76 // SIZE: 76
} }
type SP_CL2LS_REQ_SERVER_SELECT struct { type SP_CL2LS_REQ_SERVER_SELECT struct {
SErverNum int8 ServerNum int8
// SIZE: 1 // SIZE: 1
} }
type SPacket struct { type SPacket struct {
DWType uint32 DwType uint32
SZData [4096]byte SzData [4096]byte
// SIZE: 4100 // SIZE: 4100
} }
type SPacket_Full struct { type SPacket_Full struct {
DWSize uint32 DwSize uint32
DWType uint32 DwType uint32
SZData [4096]byte SzData [4096]byte
// SIZE: 4104 // SIZE: 4104
} }
type SPacket2x struct { type SPacket2x struct {
DWType uint32 DwType uint32
SZData [8192]byte SzData [8192]byte
// SIZE: 8196 // SIZE: 8196
} }
type SPacket2x_Full struct { type SPacket2x_Full struct {
DWSize uint32 DwSize uint32
DWType uint32 DwType uint32
SZData [8192]byte SzData [8192]byte
// SIZE: 8200 // SIZE: 8200
} }
@ -1852,7 +1852,7 @@ type SP_FE2CL_REP_PC_ENTER_FAIL struct {
type SP_FE2CL_REP_PC_ENTER_SUCC struct { type SP_FE2CL_REP_PC_ENTER_SUCC struct {
IID int32 IID int32
PCLoadData2CL SPCLoadData2CL PCLoadData2CL SPCLoadData2CL
UISvrTime uint64 UiSvrTime uint64
// SIZE: 2700 // SIZE: 2700
} }
@ -1968,14 +1968,14 @@ type SP_FE2CL_AROUND_DEL_NPC struct {
type SP_FE2CL_REP_SEND_FREECHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_FREECHAT_MESSAGE_SUCC struct {
IPC_ID int32 IPC_ID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 264 // SIZE: 264
} }
type SP_FE2CL_REP_SEND_FREECHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_FREECHAT_MESSAGE_FAIL struct {
IErrorCode int32 IErrorCode int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 264 // SIZE: 264
} }
@ -2007,14 +2007,14 @@ type SP_FE2CL_REP_PC_REGEN_SUCC struct {
type SP_FE2CL_REP_SEND_MENUCHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_MENUCHAT_MESSAGE_SUCC struct {
IPC_ID int32 IPC_ID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 264 // SIZE: 264
} }
type SP_FE2CL_REP_SEND_MENUCHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_MENUCHAT_MESSAGE_FAIL struct {
IErrorCode int32 IErrorCode int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 264 // SIZE: 264
} }
@ -2137,8 +2137,8 @@ type SP_FE2CL_REP_NANO_TUNE_SUCC struct {
INanoID int16 INanoID int16
ISkillID int16 ISkillID int16
IPC_FusionMatter int32 IPC_FusionMatter int32
AIItemSlotNum [10]int32 AiItemSlotNum [10]int32
aItem [10]SItemBase AItem [10]SItemBase
// SIZE: 168 // SIZE: 168
} }
@ -2216,7 +2216,7 @@ type SP_FE2CL_REP_CHARGE_NANO_STAMINA struct {
type SP_FE2CL_REP_PC_TICK struct { type SP_FE2CL_REP_PC_TICK struct {
IHP int32 IHP int32
aNano [3]SNano `pad:"2"` ANano [3]SNano `pad:"2"`
IBatteryN int32 IBatteryN int32
BResetMissionFlag int32 BResetMissionFlag int32
// SIZE: 32 // SIZE: 32
@ -2471,7 +2471,7 @@ type SP_FE2CL_REP_PC_TRADE_EMOTES_CHAT struct {
IID_Request int32 IID_Request int32
IID_From int32 IID_From int32
IID_To int32 IID_To int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 272 // SIZE: 272
} }
@ -2498,7 +2498,7 @@ type SP_FE2CL_REP_NANO_TUNE_FAIL struct {
} }
type SP_FE2CL_REP_PC_BANK_OPEN_SUCC struct { type SP_FE2CL_REP_PC_BANK_OPEN_SUCC struct {
aBank [119]SItemBase ABank [119]SItemBase
IExtraBank int32 IExtraBank int32
// SIZE: 1432 // SIZE: 1432
} }
@ -2530,7 +2530,7 @@ type SP_FE2CL_REP_PC_VENDOR_START_FAIL struct {
} }
type SP_FE2CL_REP_PC_VENDOR_TABLE_UPDATE_SUCC struct { type SP_FE2CL_REP_PC_VENDOR_TABLE_UPDATE_SUCC struct {
item [20]SItemVendor Item [20]SItemVendor
// SIZE: 480 // SIZE: 480
} }
@ -2613,7 +2613,7 @@ type SP_FE2CL_REP_ACCEPT_MAKE_BUDDY_FAIL struct {
type SP_FE2CL_REP_SEND_BUDDY_FREECHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_BUDDY_FREECHAT_MESSAGE_SUCC struct {
IFromPCUID int64 IFromPCUID int64
IToPCUID int64 IToPCUID int64
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 276 // SIZE: 276
} }
@ -2621,7 +2621,7 @@ type SP_FE2CL_REP_SEND_BUDDY_FREECHAT_MESSAGE_SUCC struct {
type SP_FE2CL_REP_SEND_BUDDY_FREECHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_BUDDY_FREECHAT_MESSAGE_FAIL struct {
IErrorCode int32 IErrorCode int32
IToPCUID int64 IToPCUID int64
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 272 // SIZE: 272
} }
@ -2629,7 +2629,7 @@ type SP_FE2CL_REP_SEND_BUDDY_FREECHAT_MESSAGE_FAIL struct {
type SP_FE2CL_REP_SEND_BUDDY_MENUCHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_BUDDY_MENUCHAT_MESSAGE_SUCC struct {
IFromPCUID int64 IFromPCUID int64
IToPCUID int64 IToPCUID int64
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 276 // SIZE: 276
} }
@ -2637,7 +2637,7 @@ type SP_FE2CL_REP_SEND_BUDDY_MENUCHAT_MESSAGE_SUCC struct {
type SP_FE2CL_REP_SEND_BUDDY_MENUCHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_BUDDY_MENUCHAT_MESSAGE_FAIL struct {
IErrorCode int32 IErrorCode int32
IToPCUID int64 IToPCUID int64
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 272 // SIZE: 272
} }
@ -2645,7 +2645,7 @@ type SP_FE2CL_REP_SEND_BUDDY_MENUCHAT_MESSAGE_FAIL struct {
type SP_FE2CL_REP_GET_BUDDY_STYLE_SUCC struct { type SP_FE2CL_REP_GET_BUDDY_STYLE_SUCC struct {
IBuddyPCUID int64 IBuddyPCUID int64
IBuddySlot int8 `pad:"3"` IBuddySlot int8 `pad:"3"`
sBuddyStyle SBuddyStyleInfo SBuddyStyle SBuddyStyleInfo
// SIZE: 196 // SIZE: 196
} }
@ -2791,8 +2791,8 @@ type SP_FE2CL_PC_STATE_CHANGE struct {
type SP_FE2CL_REP_REQUEST_MAKE_BUDDY_SUCC_TO_ACCEPTER struct { type SP_FE2CL_REP_REQUEST_MAKE_BUDDY_SUCC_TO_ACCEPTER struct {
IRequestID int32 IRequestID int32
IBuddyID int32 IBuddyID int32
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 60 // SIZE: 60
} }
@ -3166,14 +3166,14 @@ type SP_FE2CL_PC_MOVETRANSPORTATION struct {
type SP_FE2CL_REP_SEND_ALL_GROUP_FREECHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_ALL_GROUP_FREECHAT_MESSAGE_SUCC struct {
ISendPCID int32 ISendPCID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 264 // SIZE: 264
} }
type SP_FE2CL_REP_SEND_ALL_GROUP_FREECHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_ALL_GROUP_FREECHAT_MESSAGE_FAIL struct {
ISendPCID int32 ISendPCID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IErrorCode int32 IErrorCode int32
// SIZE: 268 // SIZE: 268
@ -3182,7 +3182,7 @@ type SP_FE2CL_REP_SEND_ALL_GROUP_FREECHAT_MESSAGE_FAIL struct {
type SP_FE2CL_REP_SEND_ANY_GROUP_FREECHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_ANY_GROUP_FREECHAT_MESSAGE_SUCC struct {
ISendPCID int32 ISendPCID int32
IGroupPC_ID int32 IGroupPC_ID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 268 // SIZE: 268
} }
@ -3190,7 +3190,7 @@ type SP_FE2CL_REP_SEND_ANY_GROUP_FREECHAT_MESSAGE_SUCC struct {
type SP_FE2CL_REP_SEND_ANY_GROUP_FREECHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_ANY_GROUP_FREECHAT_MESSAGE_FAIL struct {
ISendPCID int32 ISendPCID int32
IGroupPC_ID int32 IGroupPC_ID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IErrorCode int32 IErrorCode int32
// SIZE: 272 // SIZE: 272
@ -3204,14 +3204,14 @@ type SP_FE2CL_REP_BARKER struct {
type SP_FE2CL_REP_SEND_ALL_GROUP_MENUCHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_ALL_GROUP_MENUCHAT_MESSAGE_SUCC struct {
ISendPCID int32 ISendPCID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 264 // SIZE: 264
} }
type SP_FE2CL_REP_SEND_ALL_GROUP_MENUCHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_ALL_GROUP_MENUCHAT_MESSAGE_FAIL struct {
ISendPCID int32 ISendPCID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IErrorCode int32 IErrorCode int32
// SIZE: 268 // SIZE: 268
@ -3220,7 +3220,7 @@ type SP_FE2CL_REP_SEND_ALL_GROUP_MENUCHAT_MESSAGE_FAIL struct {
type SP_FE2CL_REP_SEND_ANY_GROUP_MENUCHAT_MESSAGE_SUCC struct { type SP_FE2CL_REP_SEND_ANY_GROUP_MENUCHAT_MESSAGE_SUCC struct {
ISendPCID int32 ISendPCID int32
IGroupPC_ID int32 IGroupPC_ID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
// SIZE: 268 // SIZE: 268
} }
@ -3228,7 +3228,7 @@ type SP_FE2CL_REP_SEND_ANY_GROUP_MENUCHAT_MESSAGE_SUCC struct {
type SP_FE2CL_REP_SEND_ANY_GROUP_MENUCHAT_MESSAGE_FAIL struct { type SP_FE2CL_REP_SEND_ANY_GROUP_MENUCHAT_MESSAGE_FAIL struct {
ISendPCID int32 ISendPCID int32
IGroupPC_ID int32 IGroupPC_ID int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IErrorCode int32 IErrorCode int32
// SIZE: 272 // SIZE: 272
@ -3267,7 +3267,7 @@ type SP_FE2CL_REP_PC_WARP_USE_TRANSPORTATION_SUCC struct {
type SP_FE2CL_ANNOUNCE_MSG struct { type SP_FE2CL_ANNOUNCE_MSG struct {
IAnnounceType int8 `pad:"3"` IAnnounceType int8 `pad:"3"`
IDuringTime int32 IDuringTime int32
SZAnnounceMsg string `size:"512"` SzAnnounceMsg string `size:"512"`
// SIZE: 1032 // SIZE: 1032
} }
@ -3309,15 +3309,15 @@ type SP_FE2CL_GM_REP_PC_LOCATION struct {
IX int32 IX int32
IY int32 IY int32
IZ int32 IZ int32
SZTargetPC_FirstName string `size:"10"` SzTargetPC_FirstName string `size:"10"`
SZTargetPC_LastName string `size:"18"` SzTargetPC_LastName string `size:"18"`
// SIZE: 96 // SIZE: 96
} }
type SP_FE2CL_GM_REP_PC_ANNOUNCE struct { type SP_FE2CL_GM_REP_PC_ANNOUNCE struct {
IAnnounceType int8 `pad:"3"` IAnnounceType int8 `pad:"3"`
IDuringTime int32 IDuringTime int32
SZAnnounceMsg string `size:"512"` SzAnnounceMsg string `size:"512"`
// SIZE: 1032 // SIZE: 1032
} }
@ -3373,7 +3373,7 @@ type SP_FE2CL_REQ_LIVE_CHECK struct {
type SP_FE2CL_PC_MOTD_LOGIN struct { type SP_FE2CL_PC_MOTD_LOGIN struct {
IType int8 `pad:"1"` IType int8 `pad:"1"`
SZSystemMsg string `size:"512"` SzSystemMsg string `size:"512"`
// SIZE: 1026 // SIZE: 1026
} }
@ -3482,8 +3482,8 @@ type SP_FE2CL_REP_PC_NEW_EMAIL struct {
type SP_FE2CL_REP_PC_READ_EMAIL_SUCC struct { type SP_FE2CL_REP_PC_READ_EMAIL_SUCC struct {
IEmailIndex int64 IEmailIndex int64
SZContent string `size:"512"` SzContent string `size:"512"`
aItem [4]SItemBase AItem [4]SItemBase
ICash int32 ICash int32
// SIZE: 1084 // SIZE: 1084
} }
@ -3496,7 +3496,7 @@ type SP_FE2CL_REP_PC_READ_EMAIL_FAIL struct {
type SP_FE2CL_REP_PC_RECV_EMAIL_PAGE_LIST_SUCC struct { type SP_FE2CL_REP_PC_RECV_EMAIL_PAGE_LIST_SUCC struct {
IPageNum int8 `pad:"3"` IPageNum int8 `pad:"3"`
aEmailInfo [5]SEmailInfo AEmailInfo [5]SEmailInfo
// SIZE: 1024 // SIZE: 1024
} }
@ -3520,7 +3520,7 @@ type SP_FE2CL_REP_PC_DELETE_EMAIL_FAIL struct {
type SP_FE2CL_REP_PC_SEND_EMAIL_SUCC struct { type SP_FE2CL_REP_PC_SEND_EMAIL_SUCC struct {
ITo_PCUID int64 ITo_PCUID int64
ICandy int32 ICandy int32
aItem [4]SEmailItemInfoFromCL AItem [4]SEmailItemInfoFromCL
// SIZE: 76 // SIZE: 76
} }
@ -3567,8 +3567,8 @@ type SP_FE2CL_PC_SUDDEN_DEAD struct {
type SP_FE2CL_REP_GM_REQ_TARGET_PC_SPECIAL_STATE_ONOFF_SUCC struct { type SP_FE2CL_REP_GM_REQ_TARGET_PC_SPECIAL_STATE_ONOFF_SUCC struct {
ITargetPC_ID int32 ITargetPC_ID int32
SZTargetPC_FirstName string `size:"10"` SzTargetPC_FirstName string `size:"10"`
SZTargetPC_LastName string `size:"18"` SzTargetPC_LastName string `size:"18"`
IReqSpecialStateFlag int8 IReqSpecialStateFlag int8
ISpecialState int8 `pad:"2"` ISpecialState int8 `pad:"2"`
// SIZE: 64 // SIZE: 64
@ -3626,7 +3626,7 @@ type SP_FE2CL_REP_PC_TRADE_EMOTES_CHAT_FAIL struct {
IID_Request int32 IID_Request int32
IID_From int32 IID_From int32
IID_To int32 IID_To int32
SZFreeChat string `size:"128"` SzFreeChat string `size:"128"`
IEmoteCode int32 IEmoteCode int32
IErrorCode int32 IErrorCode int32
// SIZE: 276 // SIZE: 276
@ -3671,23 +3671,23 @@ type SP_FE2CL_REP_PC_WARP_CHANNEL_FAIL struct {
} }
type SP_FE2CL_REP_PC_FIND_NAME_MAKE_BUDDY_SUCC struct { type SP_FE2CL_REP_PC_FIND_NAME_MAKE_BUDDY_SUCC struct {
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
IPCUID int64 IPCUID int64
INameCheckFlag int8 `pad:"3"` INameCheckFlag int8 `pad:"3"`
// SIZE: 64 // SIZE: 64
} }
type SP_FE2CL_REP_PC_FIND_NAME_MAKE_BUDDY_FAIL struct { type SP_FE2CL_REP_PC_FIND_NAME_MAKE_BUDDY_FAIL struct {
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
IErrorCode int32 IErrorCode int32
// SIZE: 56 // SIZE: 56
} }
type SP_FE2CL_REP_PC_FIND_NAME_ACCEPT_BUDDY_FAIL struct { type SP_FE2CL_REP_PC_FIND_NAME_ACCEPT_BUDDY_FAIL struct {
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
IPCUID int64 IPCUID int64
INameCheckFlag int8 `pad:"3"` INameCheckFlag int8 `pad:"3"`
IErrorCode int32 IErrorCode int32
@ -3818,7 +3818,7 @@ type SP_FE2CL_PC_STREETSTALL_REP_ITEM_BUY_FAIL struct {
type SP_FE2CL_REP_PC_ITEM_COMBINATION_SUCC struct { type SP_FE2CL_REP_PC_ITEM_COMBINATION_SUCC struct {
INewItemSlot int32 INewItemSlot int32
sNewItem SItemBase SNewItem SItemBase
IStatItemSlot int32 IStatItemSlot int32
ICashItemSlot1 int32 ICashItemSlot1 int32
ICashItemSlot2 int32 ICashItemSlot2 int32
@ -3960,7 +3960,7 @@ type SP_FE2CL_PC_VEHICLE_OFF_FAIL struct {
} }
type SP_FE2CL_PC_QUICK_SLOT_INFO struct { type SP_FE2CL_PC_QUICK_SLOT_INFO struct {
aQuickSlot [8]SQuickSlot AQuickSlot [8]SQuickSlot
// SIZE: 32 // SIZE: 32
} }
@ -3983,7 +3983,7 @@ type SP_FE2CL_PC_DELETE_TIME_LIMIT_ITEM struct {
type SP_FE2CL_REP_PC_DISASSEMBLE_ITEM_SUCC struct { type SP_FE2CL_REP_PC_DISASSEMBLE_ITEM_SUCC struct {
INewItemSlot int32 INewItemSlot int32
sNewItem SItemBase SNewItem SItemBase
// SIZE: 16 // SIZE: 16
} }
@ -3994,18 +3994,18 @@ type SP_FE2CL_REP_PC_DISASSEMBLE_ITEM_FAIL struct {
} }
type SP_FE2CL_GM_REP_REWARD_RATE_SUCC struct { type SP_FE2CL_GM_REP_REWARD_RATE_SUCC struct {
AFRewardRate_Taros [5]float32 AfRewardRate_Taros [5]float32
AFRewardRate_FusionMatter [5]float32 AfRewardRate_FusionMatter [5]float32
// SIZE: 40 // SIZE: 40
} }
type SP_FE2CL_REP_PC_ITEM_ENCHANT_SUCC struct { type SP_FE2CL_REP_PC_ITEM_ENCHANT_SUCC struct {
IEnchantItemSlot int32 IEnchantItemSlot int32
sEnchantItem SItemBase SEnchantItem SItemBase
IWeaponMaterialItemSlot int32 IWeaponMaterialItemSlot int32
sWeaponMaterialItem SItemBase SWeaponMaterialItem SItemBase
IDefenceMaterialItemSlot int32 IDefenceMaterialItemSlot int32
sDefenceMaterialItem SItemBase SDefenceMaterialItem SItemBase
ICashItemSlot1 int32 ICashItemSlot1 int32
ICashItemSlot2 int32 ICashItemSlot2 int32
ICandy int32 ICandy int32
@ -4028,33 +4028,33 @@ type SP_LS2CL_REP_LOGIN_SUCC struct {
ISlotNum int8 ISlotNum int8
IPaymentFlag int8 IPaymentFlag int8
ITempForPacking4 int8 ITempForPacking4 int8
UISvrTime uint64 UiSvrTime uint64
SZID string `size:"33" pad:"2"` SzID string `size:"33" pad:"2"`
IOpenBetaFlag int32 IOpenBetaFlag int32
// SIZE: 84 // SIZE: 84
} }
type SP_LS2CL_REP_LOGIN_FAIL struct { type SP_LS2CL_REP_LOGIN_FAIL struct {
IErrorCode int32 IErrorCode int32
SZID string `size:"33" pad:"2"` SzID string `size:"33" pad:"2"`
// SIZE: 72 // SIZE: 72
} }
type SP_LS2CL_REP_CHAR_INFO struct { type SP_LS2CL_REP_CHAR_INFO struct {
ISlot int8 `pad:"1"` ISlot int8 `pad:"1"`
ILevel int16 ILevel int16
sPC_Style SPCStyle SPC_Style SPCStyle
sPC_Style2 SPCStyle2 `pad:"1"` SPC_Style2 SPCStyle2 `pad:"1"`
IX int32 IX int32
IY int32 IY int32
IZ int32 IZ int32
aEquip [9]SItemBase AEquip [9]SItemBase
// SIZE: 204 // SIZE: 204
} }
type SP_LS2CL_REP_CHECK_CHAR_NAME_SUCC struct { type SP_LS2CL_REP_CHECK_CHAR_NAME_SUCC struct {
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17"` SzLastName string `size:"17"`
// SIZE: 52 // SIZE: 52
} }
@ -4067,8 +4067,8 @@ type SP_LS2CL_REP_SAVE_CHAR_NAME_SUCC struct {
IPC_UID int64 IPC_UID int64
ISlotNum int8 ISlotNum int8
IGender int8 IGender int8
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17" pad:"2"` SzLastName string `size:"17" pad:"2"`
// SIZE: 64 // SIZE: 64
} }
@ -4079,9 +4079,9 @@ type SP_LS2CL_REP_SAVE_CHAR_NAME_FAIL struct {
type SP_LS2CL_REP_CHAR_CREATE_SUCC struct { type SP_LS2CL_REP_CHAR_CREATE_SUCC struct {
ILevel int16 `pad:"2"` ILevel int16 `pad:"2"`
sPC_Style SPCStyle SPC_Style SPCStyle
sPC_Style2 SPCStyle2 `pad:"1"` SPC_Style2 SPCStyle2 `pad:"1"`
sOn_Item SOnItem `pad:"2"` SOn_Item SOnItem `pad:"2"`
// SIZE: 100 // SIZE: 100
} }
@ -4151,8 +4151,8 @@ type SP_LS2CL_REQ_LIVE_CHECK struct {
type SP_LS2CL_REP_CHANGE_CHAR_NAME_SUCC struct { type SP_LS2CL_REP_CHANGE_CHAR_NAME_SUCC struct {
IPC_UID int64 IPC_UID int64
ISlotNum int8 `pad:"1"` ISlotNum int8 `pad:"1"`
SZFirstName string `size:"9"` SzFirstName string `size:"9"`
SZLastName string `size:"17" pad:"2"` SzLastName string `size:"17" pad:"2"`
// SIZE: 64 // SIZE: 64
} }

View File

@ -65,17 +65,17 @@ func (client *Client) Send(data interface{}, typeID uint32) {
func (client *Client) AcceptLogin(SZID string, IClientVerC int32, ISlotNum int8, data []protocol.SP_LS2CL_REP_CHAR_INFO) { func (client *Client) AcceptLogin(SZID string, IClientVerC int32, ISlotNum int8, data []protocol.SP_LS2CL_REP_CHAR_INFO) {
resp := &protocol.SP_LS2CL_REP_LOGIN_SUCC{ resp := &protocol.SP_LS2CL_REP_LOGIN_SUCC{
SZID: SZID, SzID: SZID,
ICharCount: int8(len(data)), ICharCount: int8(len(data)),
ISlotNum: ISlotNum, ISlotNum: ISlotNum,
IPaymentFlag: 1, IPaymentFlag: 1,
IOpenBetaFlag: 0, IOpenBetaFlag: 0,
UISvrTime: uint64(time.Now().Unix()), UiSvrTime: uint64(time.Now().Unix()),
} }
client.Send(resp, protocol.P_LS2CL_REP_LOGIN_SUCC) client.Send(resp, protocol.P_LS2CL_REP_LOGIN_SUCC)
client.e_key = protocol.CreateNewKey( client.e_key = protocol.CreateNewKey(
resp.UISvrTime, resp.UiSvrTime,
uint64(resp.ICharCount+1), uint64(resp.ICharCount+1),
uint64(resp.ISlotNum+1), uint64(resp.ISlotNum+1),
) )

View File

@ -57,14 +57,14 @@ func (server *Server) handlePacket(client *Client, typeID uint32, pkt *protocol.
pkt.Decode(&loginPkt) pkt.Decode(&loginPkt)
// TODO: for now, we're a dummy server // TODO: for now, we're a dummy server
client.AcceptLogin(loginPkt.SZID, loginPkt.IClientVerC, 1, []protocol.SP_LS2CL_REP_CHAR_INFO{}) client.AcceptLogin(loginPkt.SzID, loginPkt.IClientVerC, 1, []protocol.SP_LS2CL_REP_CHAR_INFO{})
case protocol.P_CL2LS_REQ_CHECK_CHAR_NAME: case protocol.P_CL2LS_REQ_CHECK_CHAR_NAME:
var charPkt protocol.SP_CL2LS_REQ_CHECK_CHAR_NAME var charPkt protocol.SP_CL2LS_REQ_CHECK_CHAR_NAME
pkt.Decode(&charPkt) pkt.Decode(&charPkt)
client.Send(&protocol.SP_LS2CL_REP_CHECK_CHAR_NAME_SUCC{ client.Send(&protocol.SP_LS2CL_REP_CHECK_CHAR_NAME_SUCC{
SZFirstName: charPkt.SZFirstName, SzFirstName: charPkt.SzFirstName,
SZLastName: charPkt.SZLastName, SzLastName: charPkt.SzLastName,
}, protocol.P_LS2CL_REP_CHECK_CHAR_NAME_SUCC) }, protocol.P_LS2CL_REP_CHECK_CHAR_NAME_SUCC)
case protocol.P_CL2LS_REQ_SAVE_CHAR_NAME: case protocol.P_CL2LS_REQ_SAVE_CHAR_NAME:
var charPkt protocol.SP_CL2LS_REQ_SAVE_CHAR_NAME var charPkt protocol.SP_CL2LS_REQ_SAVE_CHAR_NAME
@ -74,8 +74,8 @@ func (server *Server) handlePacket(client *Client, typeID uint32, pkt *protocol.
IPC_UID: 1, IPC_UID: 1,
ISlotNum: charPkt.ISlotNum, ISlotNum: charPkt.ISlotNum,
IGender: charPkt.IGender, IGender: charPkt.IGender,
SZFirstName: charPkt.SZFirstName, SzFirstName: charPkt.SzFirstName,
SZLastName: charPkt.SZLastName, SzLastName: charPkt.SzLastName,
}, protocol.P_LS2CL_REP_SAVE_CHAR_NAME_SUCC) }, protocol.P_LS2CL_REP_SAVE_CHAR_NAME_SUCC)
default: default:
log.Printf("[WARN] unsupported packet ID: %x\n", typeID) log.Printf("[WARN] unsupported packet ID: %x\n", typeID)

View File

@ -3,7 +3,7 @@
genstructs.py - gopenfusion genstructs.py - gopenfusion
Takes raw structures from a decompiled 'Assembly - CSharp.dll' from a main.unity3d fusionfall beta client, Takes raw structures from a decompiled 'Assembly - CSharp.dll' from a main.unity3d fusionfall beta client,
and transpiles them to gopenfusion's custom packet structure & tags. This requires a compiler installed, and transpiles them to gopenfusion's custom packet structure & tags. This requires a C compiler installed,
since struct field padding is grabbed via the `offsetof()` C macro. Some manual rearranging of structures since struct field padding is grabbed via the `offsetof()` C macro. Some manual rearranging of structures
from the disassembled source might be needed. This script can also be modified to generate c-style structures from the disassembled source might be needed. This script can also be modified to generate c-style structures
(because it already does!) (because it already does!)
@ -19,7 +19,7 @@ PACK_ALIGN = 4
def sanitizeName(name: str) -> str: def sanitizeName(name: str) -> str:
# all exported fields in go must start capitalized # all exported fields in go must start capitalized
return name[0:2].upper() + name[2:] return name[0:1].upper() + name[1:]
def writeToFile(source: str, filePath: str) -> None: def writeToFile(source: str, filePath: str) -> None:
with open(filePath, "w") as out: with open(filePath, "w") as out:
@ -112,11 +112,10 @@ class StructTranspiler:
if type.find("[]") != -1: # it's an array! if type.find("[]") != -1: # it's an array!
type = type.replace("[]", "") type = type.replace("[]", "")
self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")]) self.size = int(marshal[(marshal.find("SizeConst = ") + len("SizeConst = ")):marshal.find(")]")])
self.cname = name + "[%d]" % self.size self.cname = self.name + "[%d]" % self.size
else: else:
self.cname = name self.cname = self.name
self.size = 1 self.size = 1
self.name = name
self.type = sanitizeName(type) self.type = sanitizeName(type)
self.ctype = sanitizeName(type) self.ctype = sanitizeName(type)
self.needsPatching = True self.needsPatching = True