2V1-b/c: PythonNetworkStream phases, AccountConnector and the net module

Port PythonNetworkStream with its HandShake/Login/Select/Loading/Offline
phases, AccountConnector and PythonNetworkStreamModule verbatim; the net
stub goes. PythonBoot creates the network stream, account connector,
player, flying manager and effect manager like CPythonApplication, and
app.Create/Process drive CNetworkDevice and both connectors.

Packet.h long fields become 32-bit LONG; port.packet checks 38
login/select/loading packet sizes against wire_classic.h. Unported units
in the link closure live under platform/pending/ as stand-ins. The macOS
gate now builds all and finds iconv.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-23 15:02:14 +09:00
co-authored by Claude Opus 5.5
parent cd3b8b506f
commit 4d9b800efb
44 changed files with 8292 additions and 324 deletions
+46 -46
View File
@@ -766,8 +766,8 @@ typedef struct command_move
typedef struct command_sync_position_element
{
DWORD dwVID;
long lX;
long lY;
LONG lX; // PORT: LONG, the 32-bit Win32 long
LONG lY; // PORT: LONG, the 32-bit Win32 long
} TPacketCGSyncPositionElement;
typedef struct command_sync_position
@@ -780,8 +780,8 @@ typedef struct command_fly_targeting
{
BYTE bHeader;
DWORD dwTargetVID;
long lX;
long lY;
LONG lX; // PORT: LONG, the 32-bit Win32 long
LONG lY; // PORT: LONG, the 32-bit Win32 long
} TPacketCGFlyTargeting;
typedef struct packet_fly_targeting
@@ -789,8 +789,8 @@ typedef struct packet_fly_targeting
BYTE bHeader;
DWORD dwShooterVID;
DWORD dwTargetVID;
long lX;
long lY;
LONG lX; // PORT: LONG, the 32-bit Win32 long
LONG lY; // PORT: LONG, the 32-bit Win32 long
} TPacketGCFlyTargeting;
typedef struct packet_shoot
@@ -1186,7 +1186,7 @@ typedef struct SSimplePlayerInformation
BYTE bChangeName;
WORD wHairPart;
BYTE bDummy[4];
long x, y;
LONG x, y; // PORT: LONG, the 32-bit Win32 long
LONG lAddr;
WORD wPort;
BYTE bySkillGroup;
@@ -1312,9 +1312,9 @@ typedef struct packet_add_char
//char name[CHARACTER_NAME_MAX_LEN + 1];
float angle;
long x;
long y;
long z;
LONG x; // PORT: LONG, the 32-bit Win32 long
LONG y; // PORT: LONG, the 32-bit Win32 long
LONG z; // PORT: LONG, the 32-bit Win32 long
BYTE bType;
WORD wRaceNum;
@@ -1340,9 +1340,9 @@ typedef struct packet_add_char2
char name[CHARACTER_NAME_MAX_LEN + 1];
float angle;
long x;
long y;
long z;
LONG x; // PORT: LONG, the 32-bit Win32 long
LONG y; // PORT: LONG, the 32-bit Win32 long
LONG z; // PORT: LONG, the 32-bit Win32 long
BYTE bType;
WORD wRaceNum;
@@ -1457,7 +1457,7 @@ typedef struct packet_main_character
DWORD dwVID;
WORD wRaceNum;
char szName[CHARACTER_NAME_MAX_LEN + 1];
long lX, lY, lZ;
LONG lX, lY, lZ; // PORT: LONG, the 32-bit Win32 long
BYTE bySkillGroup;
} TPacketGCMainCharacter;
@@ -1468,7 +1468,7 @@ typedef struct packet_main_character2_empire
DWORD dwVID;
WORD wRaceNum;
char szName[CHARACTER_NAME_MAX_LEN + 1];
long lX, lY, lZ;
LONG lX, lY, lZ; // PORT: LONG, the 32-bit Win32 long
BYTE byEmpire;
BYTE bySkillGroup;
} TPacketGCMainCharacter2_EMPIRE;
@@ -1484,7 +1484,7 @@ typedef struct packet_main_character3_bgm
WORD wRaceNum;
char szUserName[CHARACTER_NAME_MAX_LEN + 1];
char szBGMName[MUSIC_NAME_MAX_LEN + 1];
long lX, lY, lZ;
LONG lX, lY, lZ; // PORT: LONG, the 32-bit Win32 long
BYTE byEmpire;
BYTE bySkillGroup;
} TPacketGCMainCharacter3_BGM;
@@ -1501,7 +1501,7 @@ typedef struct packet_main_character4_bgm_vol
char szUserName[CHARACTER_NAME_MAX_LEN + 1];
char szBGMName[MUSIC_NAME_MAX_LEN + 1];
float fBGMVol;
long lX, lY, lZ;
LONG lX, lY, lZ; // PORT: LONG, the 32-bit Win32 long
BYTE byEmpire;
BYTE bySkillGroup;
} TPacketGCMainCharacter4_BGM_VOL;
@@ -1679,7 +1679,7 @@ enum EPointTypes
typedef struct packet_points
{
BYTE header;
long points[POINT_MAX_NUM];
LONG points[POINT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
} TPacketGCPoints;
typedef struct packet_point_change
@@ -1689,8 +1689,8 @@ typedef struct packet_point_change
DWORD dwVID;
BYTE Type;
long amount; // 바뀐 값
long value; // 현재 값
LONG amount; // 바뀐 값 // PORT: LONG, the 32-bit Win32 long
LONG value; // 현재 값 // PORT: LONG, the 32-bit Win32 long
} TPacketGCPointChange;
typedef struct packet_motion
@@ -1718,7 +1718,7 @@ struct TPacketGCItemDelDeprecate
BYTE pos;
DWORD vnum;
BYTE count;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
LONG alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
};
@@ -1729,7 +1729,7 @@ typedef struct packet_set_item
DWORD vnum;
BYTE count;
DWORD flags; // 플래그 추가
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
LONG alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCItemSet;
@@ -1745,7 +1745,7 @@ typedef struct packet_set_item
TItemPos Cell;
DWORD vnum;
BYTE count;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
LONG alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCItemSet;
@@ -1758,7 +1758,7 @@ typedef struct packet_set_item2
DWORD flags; // 플래그 추가
DWORD anti_flags; // 플래그 추가
bool highlight;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
LONG alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCItemSet2;
#endif
@@ -1784,16 +1784,16 @@ typedef struct packet_update_item
BYTE header;
TItemPos Cell;
BYTE count;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
LONG alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCItemUpdate;
typedef struct packet_ground_add_item
{
BYTE bHeader;
long lX;
long lY;
long lZ;
LONG lX; // PORT: LONG, the 32-bit Win32 long
LONG lY; // PORT: LONG, the 32-bit Win32 long
LONG lZ; // PORT: LONG, the 32-bit Win32 long
DWORD dwVID;
DWORD dwVnum;
@@ -1892,7 +1892,7 @@ typedef struct packet_exchange
DWORD arg1;
TItemPos arg2;
DWORD arg3;
long alValues[ITEM_SOCKET_SLOT_MAX_NUM];
LONG alValues[ITEM_SOCKET_SLOT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TPacketGCExchange;
@@ -2000,7 +2000,7 @@ typedef struct packet_quest_confirm
{
BYTE header;
char msg[64+1];
long timeout;
LONG timeout; // PORT: LONG, the 32-bit Win32 long
DWORD requestPID;
} TPacketGCQuestConfirm;
@@ -2021,8 +2021,8 @@ typedef struct packet_c2c
typedef struct packetd_sync_position_element
{
DWORD dwVID;
long lX;
long lY;
LONG lX; // PORT: LONG, the 32-bit Win32 long
LONG lY; // PORT: LONG, the 32-bit Win32 long
} TPacketGCSyncPositionElement;
typedef struct packetd_sync_position
@@ -2291,7 +2291,7 @@ typedef struct SPacketGuildWarPoint
{
DWORD dwGainGuildID;
DWORD dwOpponentGuildID;
long lPoint;
LONG lPoint; // PORT: LONG, the 32-bit Win32 long
} TPacketGuildWarPoint;
// SubHeader - Dungeon
@@ -2419,8 +2419,8 @@ struct TNPCPosition
{
BYTE bType;
char name[CHARACTER_NAME_MAX_LEN+1];
long x;
long y;
LONG x; // PORT: LONG, the 32-bit Win32 long
LONG y; // PORT: LONG, the 32-bit Win32 long
};
typedef struct SPacketGCChangeName
@@ -2495,7 +2495,7 @@ typedef struct SEquipmentItemSet
{
DWORD vnum;
BYTE count;
long alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
LONG alSockets[ITEM_SOCKET_SLOT_MAX_NUM]; // PORT: LONG, the 32-bit Win32 long
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TEquipmentItemSet;
@@ -2509,8 +2509,8 @@ typedef struct pakcet_view_equip
typedef struct
{
DWORD dwID;
long x, y;
long width, height;
LONG x, y; // PORT: LONG, the 32-bit Win32 long
LONG width, height; // PORT: LONG, the 32-bit Win32 long
DWORD dwGuildID;
} TLandPacketElement;
@@ -2523,7 +2523,7 @@ typedef struct packet_land_list
typedef struct
{
BYTE bHeader;
long lID;
LONG lID; // PORT: LONG, the 32-bit Win32 long
char szTargetName[32+1];
} TPacketGCTargetCreate;
@@ -2537,7 +2537,7 @@ enum
typedef struct
{
BYTE bHeader;
long lID;
LONG lID; // PORT: LONG, the 32-bit Win32 long
char szTargetName[32+1];
DWORD dwVID;
BYTE byType;
@@ -2546,24 +2546,24 @@ typedef struct
typedef struct
{
BYTE bHeader;
long lID;
long lX, lY;
LONG lID; // PORT: LONG, the 32-bit Win32 long
LONG lX, lY; // PORT: LONG, the 32-bit Win32 long
} TPacketGCTargetUpdate;
typedef struct
{
BYTE bHeader;
long lID;
LONG lID; // PORT: LONG, the 32-bit Win32 long
} TPacketGCTargetDelete;
typedef struct
{
DWORD dwType;
BYTE bPointIdxApplyOn;
long lApplyValue;
LONG lApplyValue; // PORT: LONG, the 32-bit Win32 long
DWORD dwFlag;
long lDuration;
long lSPCost;
LONG lDuration; // PORT: LONG, the 32-bit Win32 long
LONG lSPCost; // PORT: LONG, the 32-bit Win32 long
} TPacketAffectElement;
typedef struct