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
@@ -869,262 +869,6 @@ PyMethodDef methods_miniMap[] = {
};
const char* ints_miniMap[] = {"TYPE_OPC", "TYPE_OPCPVP", "TYPE_OPCPVPSELF", "TYPE_NPC", "TYPE_MONSTER", "TYPE_WARP", "TYPE_WAYPOINT", "TYPE_PARTY", "TYPE_EMPIRE", NULL};
const char* strings_miniMap[] = {NULL};
// 40250 UserInterface/PythonNetworkStreamModule.cpp: net export names.
PyObject* stub_net_GetBettingGuildWarValue(PyObject*, PyObject*) { return stub_call_named("net.GetBettingGuildWarValue"); }
PyObject* stub_net_EnableChatInsultFilter(PyObject*, PyObject*) { return stub_call_named("net.EnableChatInsultFilter"); }
PyObject* stub_net_SetServerInfo(PyObject*, PyObject*) { return stub_call_named("net.SetServerInfo"); }
PyObject* stub_net_GetServerInfo(PyObject*, PyObject*) { return stub_call_named("net.GetServerInfo"); }
PyObject* stub_net_PreserveServerCommand(PyObject*, PyObject*) { return stub_call_named("net.PreserveServerCommand"); }
PyObject* stub_net_GetPreservedServerCommand(PyObject*, PyObject*) { return stub_call_named("net.GetPreservedServerCommand"); }
PyObject* stub_net_StartGame(PyObject*, PyObject*) { return stub_call_named("net.StartGame"); }
PyObject* stub_net_Warp(PyObject*, PyObject*) { return stub_call_named("net.Warp"); }
PyObject* stub_net_IsTest(PyObject*, PyObject*) { return stub_call_named("net.IsTest"); }
PyObject* stub_net_SetMarkServer(PyObject*, PyObject*) { return stub_call_named("net.SetMarkServer"); }
PyObject* stub_net_IsChatInsultIn(PyObject*, PyObject*) { return stub_call_named("net.IsChatInsultIn"); }
PyObject* stub_net_IsInsultIn(PyObject*, PyObject*) { return stub_call_named("net.IsInsultIn"); }
PyObject* stub_net_LoadInsultList(PyObject*, PyObject*) { return stub_call_named("net.LoadInsultList"); }
PyObject* stub_net_UploadMark(PyObject*, PyObject*) { return stub_call_named("net.UploadMark"); }
PyObject* stub_net_UploadSymbol(PyObject*, PyObject*) { return stub_call_named("net.UploadSymbol"); }
PyObject* stub_net_GetGuildID(PyObject*, PyObject*) { return stub_call_named("net.GetGuildID"); }
PyObject* stub_net_GetEmpireID(PyObject*, PyObject*) { return stub_call_named("net.GetEmpireID"); }
PyObject* stub_net_GetMainActorVID(PyObject*, PyObject*) { return stub_call_named("net.GetMainActorVID"); }
PyObject* stub_net_GetMainActorRace(PyObject*, PyObject*) { return stub_call_named("net.GetMainActorRace"); }
PyObject* stub_net_GetMainActorEmpire(PyObject*, PyObject*) { return stub_call_named("net.GetMainActorEmpire"); }
PyObject* stub_net_GetMainActorSkillGroup(PyObject*, PyObject*) { return stub_call_named("net.GetMainActorSkillGroup"); }
PyObject* stub_net_GetAccountCharacterSlotDataInteger(PyObject*, PyObject*) { return stub_call_named("net.GetAccountCharacterSlotDataInteger"); }
PyObject* stub_net_GetAccountCharacterSlotDataString(PyObject*, PyObject*) { return stub_call_named("net.GetAccountCharacterSlotDataString"); }
PyObject* stub_net_GetFieldMusicFileName(PyObject*, PyObject*) { return stub_call_named("net.GetFieldMusicFileName"); }
PyObject* stub_net_GetFieldMusicVolume(PyObject*, PyObject*) { return stub_call_named("net.GetFieldMusicVolume"); }
PyObject* stub_net_ToggleGameDebugInfo(PyObject*, PyObject*) { return stub_call_named("net.ToggleGameDebugInfo"); }
PyObject* stub_net_SetLoginInfo(PyObject*, PyObject*) { return stub_call_named("net.SetLoginInfo"); }
PyObject* stub_net_SetPhaseWindow(PyObject*, PyObject*) { return stub_call_named("net.SetPhaseWindow"); }
PyObject* stub_net_ClearPhaseWindow(PyObject*, PyObject*) { return stub_call_named("net.ClearPhaseWindow"); }
PyObject* stub_net_SetServerCommandParserWindow(PyObject*, PyObject*) { return stub_call_named("net.SetServerCommandParserWindow"); }
PyObject* stub_net_SetAccountConnectorHandler(PyObject*, PyObject*) { return stub_call_named("net.SetAccountConnectorHandler"); }
PyObject* stub_net_SetHandler(PyObject*, PyObject*) { return stub_call_named("net.SetHandler"); }
PyObject* stub_net_SetTCPRecvBufferSize(PyObject*, PyObject*) { return stub_call_named("net.SetTCPRecvBufferSize"); }
PyObject* stub_net_SetTCPSendBufferSize(PyObject*, PyObject*) { return stub_call_named("net.SetTCPSendBufferSize"); }
PyObject* stub_net_SetUDPRecvBufferSize(PyObject*, PyObject*) { return stub_call_named("net.SetUDPRecvBufferSize"); }
PyObject* stub_net_DirectEnter(PyObject*, PyObject*) { return stub_call_named("net.DirectEnter"); }
PyObject* stub_net_LogOutGame(PyObject*, PyObject*) { return stub_call_named("net.LogOutGame"); }
PyObject* stub_net_ExitGame(PyObject*, PyObject*) { return stub_call_named("net.ExitGame"); }
PyObject* stub_net_ExitApplication(PyObject*, PyObject*) { return stub_call_named("net.ExitApplication"); }
PyObject* stub_net_ConnectTCP(PyObject*, PyObject*) { return stub_call_named("net.ConnectTCP"); }
PyObject* stub_net_ConnectUDP(PyObject*, PyObject*) { return stub_call_named("net.ConnectUDP"); }
PyObject* stub_net_ConnectToAccountServer(PyObject*, PyObject*) { return stub_call_named("net.ConnectToAccountServer"); }
PyObject* stub_net_SendLoginPacket(PyObject*, PyObject*) { return stub_call_named("net.SendLoginPacket"); }
PyObject* stub_net_SendChinaMatrixCardPacket(PyObject*, PyObject*) { return stub_call_named("net.SendChinaMatrixCardPacket"); }
PyObject* stub_net_SendRunupMatrixCardPacket(PyObject*, PyObject*) { return stub_call_named("net.SendRunupMatrixCardPacket"); }
PyObject* stub_net_SendNEWCIBNPasspodAnswerPacket(PyObject*, PyObject*) { return stub_call_named("net.SendNEWCIBNPasspodAnswerPacket"); }
PyObject* stub_net_SendSelectEmpirePacket(PyObject*, PyObject*) { return stub_call_named("net.SendSelectEmpirePacket"); }
PyObject* stub_net_SendSelectCharacterPacket(PyObject*, PyObject*) { return stub_call_named("net.SendSelectCharacterPacket"); }
PyObject* stub_net_SendChangeNamePacket(PyObject*, PyObject*) { return stub_call_named("net.SendChangeNamePacket"); }
PyObject* stub_net_SendCreateCharacterPacket(PyObject*, PyObject*) { return stub_call_named("net.SendCreateCharacterPacket"); }
PyObject* stub_net_SendDestroyCharacterPacket(PyObject*, PyObject*) { return stub_call_named("net.SendDestroyCharacterPacket"); }
PyObject* stub_net_SendEnterGamePacket(PyObject*, PyObject*) { return stub_call_named("net.SendEnterGamePacket"); }
PyObject* stub_net_SendItemUsePacket(PyObject*, PyObject*) { return stub_call_named("net.SendItemUsePacket"); }
PyObject* stub_net_SendItemUseToItemPacket(PyObject*, PyObject*) { return stub_call_named("net.SendItemUseToItemPacket"); }
PyObject* stub_net_SendItemDropPacket(PyObject*, PyObject*) { return stub_call_named("net.SendItemDropPacket"); }
PyObject* stub_net_SendItemDropPacketNew(PyObject*, PyObject*) { return stub_call_named("net.SendItemDropPacketNew"); }
PyObject* stub_net_SendElkDropPacket(PyObject*, PyObject*) { return stub_call_named("net.SendElkDropPacket"); }
PyObject* stub_net_SendGoldDropPacketNew(PyObject*, PyObject*) { return stub_call_named("net.SendGoldDropPacketNew"); }
PyObject* stub_net_SendItemMovePacket(PyObject*, PyObject*) { return stub_call_named("net.SendItemMovePacket"); }
PyObject* stub_net_SendItemPickUpPacket(PyObject*, PyObject*) { return stub_call_named("net.SendItemPickUpPacket"); }
PyObject* stub_net_SendGiveItemPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGiveItemPacket"); }
PyObject* stub_net_SetOfflinePhase(PyObject*, PyObject*) { return stub_call_named("net.SetOfflinePhase"); }
PyObject* stub_net_Disconnect(PyObject*, PyObject*) { return stub_call_named("net.Disconnect"); }
PyObject* stub_net_IsConnect(PyObject*, PyObject*) { return stub_call_named("net.IsConnect"); }
PyObject* stub_net_SendChatPacket(PyObject*, PyObject*) { return stub_call_named("net.SendChatPacket"); }
PyObject* stub_net_SendEmoticon(PyObject*, PyObject*) { return stub_call_named("net.SendEmoticon"); }
PyObject* stub_net_SendWhisperPacket(PyObject*, PyObject*) { return stub_call_named("net.SendWhisperPacket"); }
PyObject* stub_net_SendMobileMessagePacket(PyObject*, PyObject*) { return stub_call_named("net.SendMobileMessagePacket"); }
PyObject* stub_net_SendCharacterPositionPacket(PyObject*, PyObject*) { return stub_call_named("net.SendCharacterPositionPacket"); }
PyObject* stub_net_SendShopEndPacket(PyObject*, PyObject*) { return stub_call_named("net.SendShopEndPacket"); }
PyObject* stub_net_SendShopBuyPacket(PyObject*, PyObject*) { return stub_call_named("net.SendShopBuyPacket"); }
PyObject* stub_net_SendShopSellPacket(PyObject*, PyObject*) { return stub_call_named("net.SendShopSellPacket"); }
PyObject* stub_net_SendShopSellPacketNew(PyObject*, PyObject*) { return stub_call_named("net.SendShopSellPacketNew"); }
PyObject* stub_net_SendExchangeStartPacket(PyObject*, PyObject*) { return stub_call_named("net.SendExchangeStartPacket"); }
PyObject* stub_net_SendExchangeItemAddPacket(PyObject*, PyObject*) { return stub_call_named("net.SendExchangeItemAddPacket"); }
PyObject* stub_net_SendExchangeItemDelPacket(PyObject*, PyObject*) { return stub_call_named("net.SendExchangeItemDelPacket"); }
PyObject* stub_net_SendExchangeElkAddPacket(PyObject*, PyObject*) { return stub_call_named("net.SendExchangeElkAddPacket"); }
PyObject* stub_net_SendExchangeAcceptPacket(PyObject*, PyObject*) { return stub_call_named("net.SendExchangeAcceptPacket"); }
PyObject* stub_net_SendExchangeExitPacket(PyObject*, PyObject*) { return stub_call_named("net.SendExchangeExitPacket"); }
PyObject* stub_net_SendOnClickPacket(PyObject*, PyObject*) { return stub_call_named("net.SendOnClickPacket"); }
PyObject* stub_net_RegisterEmoticonString(PyObject*, PyObject*) { return stub_call_named("net.RegisterEmoticonString"); }
PyObject* stub_net_SendMessengerAddByVIDPacket(PyObject*, PyObject*) { return stub_call_named("net.SendMessengerAddByVIDPacket"); }
PyObject* stub_net_SendMessengerAddByNamePacket(PyObject*, PyObject*) { return stub_call_named("net.SendMessengerAddByNamePacket"); }
PyObject* stub_net_SendMessengerRemovePacket(PyObject*, PyObject*) { return stub_call_named("net.SendMessengerRemovePacket"); }
PyObject* stub_net_SendPartyInvitePacket(PyObject*, PyObject*) { return stub_call_named("net.SendPartyInvitePacket"); }
PyObject* stub_net_SendPartyInviteAnswerPacket(PyObject*, PyObject*) { return stub_call_named("net.SendPartyInviteAnswerPacket"); }
PyObject* stub_net_SendPartyExitPacket(PyObject*, PyObject*) { return stub_call_named("net.SendPartyExitPacket"); }
PyObject* stub_net_SendPartyRemovePacket(PyObject*, PyObject*) { return stub_call_named("net.SendPartyRemovePacket"); }
PyObject* stub_net_SendPartySetStatePacket(PyObject*, PyObject*) { return stub_call_named("net.SendPartySetStatePacket"); }
PyObject* stub_net_SendPartyUseSkillPacket(PyObject*, PyObject*) { return stub_call_named("net.SendPartyUseSkillPacket"); }
PyObject* stub_net_SendPartyParameterPacket(PyObject*, PyObject*) { return stub_call_named("net.SendPartyParameterPacket"); }
PyObject* stub_net_SendSafeboxSaveMoneyPacket(PyObject*, PyObject*) { return stub_call_named("net.SendSafeboxSaveMoneyPacket"); }
PyObject* stub_net_SendSafeboxWithdrawMoneyPacket(PyObject*, PyObject*) { return stub_call_named("net.SendSafeboxWithdrawMoneyPacket"); }
PyObject* stub_net_SendSafeboxCheckinPacket(PyObject*, PyObject*) { return stub_call_named("net.SendSafeboxCheckinPacket"); }
PyObject* stub_net_SendSafeboxCheckoutPacket(PyObject*, PyObject*) { return stub_call_named("net.SendSafeboxCheckoutPacket"); }
PyObject* stub_net_SendSafeboxItemMovePacket(PyObject*, PyObject*) { return stub_call_named("net.SendSafeboxItemMovePacket"); }
PyObject* stub_net_SendMallCheckoutPacket(PyObject*, PyObject*) { return stub_call_named("net.SendMallCheckoutPacket"); }
PyObject* stub_net_SendAnswerMakeGuildPacket(PyObject*, PyObject*) { return stub_call_named("net.SendAnswerMakeGuildPacket"); }
PyObject* stub_net_SendQuestInputStringPacket(PyObject*, PyObject*) { return stub_call_named("net.SendQuestInputStringPacket"); }
PyObject* stub_net_SendQuestConfirmPacket(PyObject*, PyObject*) { return stub_call_named("net.SendQuestConfirmPacket"); }
PyObject* stub_net_SendGuildAddMemberPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildAddMemberPacket"); }
PyObject* stub_net_SendGuildRemoveMemberPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildRemoveMemberPacket"); }
PyObject* stub_net_SendGuildChangeGradeNamePacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildChangeGradeNamePacket"); }
PyObject* stub_net_SendGuildChangeGradeAuthorityPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildChangeGradeAuthorityPacket"); }
PyObject* stub_net_SendGuildOfferPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildOfferPacket"); }
PyObject* stub_net_SendGuildPostCommentPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildPostCommentPacket"); }
PyObject* stub_net_SendGuildDeleteCommentPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildDeleteCommentPacket"); }
PyObject* stub_net_SendGuildRefreshCommentsPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildRefreshCommentsPacket"); }
PyObject* stub_net_SendGuildChangeMemberGradePacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildChangeMemberGradePacket"); }
PyObject* stub_net_SendGuildUseSkillPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildUseSkillPacket"); }
PyObject* stub_net_SendGuildChangeMemberGeneralPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildChangeMemberGeneralPacket"); }
PyObject* stub_net_SendGuildInviteAnswerPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildInviteAnswerPacket"); }
PyObject* stub_net_SendGuildChargeGSPPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildChargeGSPPacket"); }
PyObject* stub_net_SendGuildDepositMoneyPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildDepositMoneyPacket"); }
PyObject* stub_net_SendGuildWithdrawMoneyPacket(PyObject*, PyObject*) { return stub_call_named("net.SendGuildWithdrawMoneyPacket"); }
PyObject* stub_net_SendRequestRefineInfoPacket(PyObject*, PyObject*) { return stub_call_named("net.SendRequestRefineInfoPacket"); }
PyObject* stub_net_SendRefinePacket(PyObject*, PyObject*) { return stub_call_named("net.SendRefinePacket"); }
PyObject* stub_net_SendSelectItemPacket(PyObject*, PyObject*) { return stub_call_named("net.SendSelectItemPacket"); }
PyObject* stub_net_SetPacketSequenceMode(PyObject*, PyObject*) { return stub_call_named("net.SetPacketSequenceMode"); }
PyObject* stub_net_SetEmpireLanguageMode(PyObject*, PyObject*) { return stub_call_named("net.SetEmpireLanguageMode"); }
PyObject* stub_net_SetSkillGroupFake(PyObject*, PyObject*) { return stub_call_named("net.SetSkillGroupFake"); }
PyObject* stub_net_SendGuildSymbol(PyObject*, PyObject*) { return stub_call_named("net.SendGuildSymbol"); }
PyObject* stub_net_DisconnectUploader(PyObject*, PyObject*) { return stub_call_named("net.DisconnectUploader"); }
PyObject* stub_net_RecvGuildSymbol(PyObject*, PyObject*) { return stub_call_named("net.RecvGuildSymbol"); }
PyObject* stub_net_RegisterErrorLog(PyObject*, PyObject*) { return stub_call_named("net.RegisterErrorLog"); }
PyMethodDef methods_net[] = {
{ "GetBettingGuildWarValue", stub_net_GetBettingGuildWarValue, METH_VARARGS },
{ "EnableChatInsultFilter", stub_net_EnableChatInsultFilter, METH_VARARGS },
{ "SetServerInfo", stub_net_SetServerInfo, METH_VARARGS },
{ "GetServerInfo", stub_net_GetServerInfo, METH_VARARGS },
{ "PreserveServerCommand", stub_net_PreserveServerCommand, METH_VARARGS },
{ "GetPreservedServerCommand", stub_net_GetPreservedServerCommand, METH_VARARGS },
{ "StartGame", stub_net_StartGame, METH_VARARGS },
{ "Warp", stub_net_Warp, METH_VARARGS },
{ "IsTest", stub_net_IsTest, METH_VARARGS },
{ "SetMarkServer", stub_net_SetMarkServer, METH_VARARGS },
{ "IsChatInsultIn", stub_net_IsChatInsultIn, METH_VARARGS },
{ "IsInsultIn", stub_net_IsInsultIn, METH_VARARGS },
{ "LoadInsultList", stub_net_LoadInsultList, METH_VARARGS },
{ "UploadMark", stub_net_UploadMark, METH_VARARGS },
{ "UploadSymbol", stub_net_UploadSymbol, METH_VARARGS },
{ "GetGuildID", stub_net_GetGuildID, METH_VARARGS },
{ "GetEmpireID", stub_net_GetEmpireID, METH_VARARGS },
{ "GetMainActorVID", stub_net_GetMainActorVID, METH_VARARGS },
{ "GetMainActorRace", stub_net_GetMainActorRace, METH_VARARGS },
{ "GetMainActorEmpire", stub_net_GetMainActorEmpire, METH_VARARGS },
{ "GetMainActorSkillGroup", stub_net_GetMainActorSkillGroup, METH_VARARGS },
{ "GetAccountCharacterSlotDataInteger", stub_net_GetAccountCharacterSlotDataInteger, METH_VARARGS },
{ "GetAccountCharacterSlotDataString", stub_net_GetAccountCharacterSlotDataString, METH_VARARGS },
{ "GetFieldMusicFileName", stub_net_GetFieldMusicFileName, METH_VARARGS },
{ "GetFieldMusicVolume", stub_net_GetFieldMusicVolume, METH_VARARGS },
{ "ToggleGameDebugInfo", stub_net_ToggleGameDebugInfo, METH_VARARGS },
{ "SetLoginInfo", stub_net_SetLoginInfo, METH_VARARGS },
{ "SetPhaseWindow", stub_net_SetPhaseWindow, METH_VARARGS },
{ "ClearPhaseWindow", stub_net_ClearPhaseWindow, METH_VARARGS },
{ "SetServerCommandParserWindow", stub_net_SetServerCommandParserWindow, METH_VARARGS },
{ "SetAccountConnectorHandler", stub_net_SetAccountConnectorHandler, METH_VARARGS },
{ "SetHandler", stub_net_SetHandler, METH_VARARGS },
{ "SetTCPRecvBufferSize", stub_net_SetTCPRecvBufferSize, METH_VARARGS },
{ "SetTCPSendBufferSize", stub_net_SetTCPSendBufferSize, METH_VARARGS },
{ "SetUDPRecvBufferSize", stub_net_SetUDPRecvBufferSize, METH_VARARGS },
{ "DirectEnter", stub_net_DirectEnter, METH_VARARGS },
{ "LogOutGame", stub_net_LogOutGame, METH_VARARGS },
{ "ExitGame", stub_net_ExitGame, METH_VARARGS },
{ "ExitApplication", stub_net_ExitApplication, METH_VARARGS },
{ "ConnectTCP", stub_net_ConnectTCP, METH_VARARGS },
{ "ConnectUDP", stub_net_ConnectUDP, METH_VARARGS },
{ "ConnectToAccountServer", stub_net_ConnectToAccountServer, METH_VARARGS },
{ "SendLoginPacket", stub_net_SendLoginPacket, METH_VARARGS },
{ "SendChinaMatrixCardPacket", stub_net_SendChinaMatrixCardPacket, METH_VARARGS },
{ "SendRunupMatrixCardPacket", stub_net_SendRunupMatrixCardPacket, METH_VARARGS },
{ "SendNEWCIBNPasspodAnswerPacket", stub_net_SendNEWCIBNPasspodAnswerPacket, METH_VARARGS },
{ "SendSelectEmpirePacket", stub_net_SendSelectEmpirePacket, METH_VARARGS },
{ "SendSelectCharacterPacket", stub_net_SendSelectCharacterPacket, METH_VARARGS },
{ "SendChangeNamePacket", stub_net_SendChangeNamePacket, METH_VARARGS },
{ "SendCreateCharacterPacket", stub_net_SendCreateCharacterPacket, METH_VARARGS },
{ "SendDestroyCharacterPacket", stub_net_SendDestroyCharacterPacket, METH_VARARGS },
{ "SendEnterGamePacket", stub_net_SendEnterGamePacket, METH_VARARGS },
{ "SendItemUsePacket", stub_net_SendItemUsePacket, METH_VARARGS },
{ "SendItemUseToItemPacket", stub_net_SendItemUseToItemPacket, METH_VARARGS },
{ "SendItemDropPacket", stub_net_SendItemDropPacket, METH_VARARGS },
{ "SendItemDropPacketNew", stub_net_SendItemDropPacketNew, METH_VARARGS },
{ "SendElkDropPacket", stub_net_SendElkDropPacket, METH_VARARGS },
{ "SendGoldDropPacketNew", stub_net_SendGoldDropPacketNew, METH_VARARGS },
{ "SendItemMovePacket", stub_net_SendItemMovePacket, METH_VARARGS },
{ "SendItemPickUpPacket", stub_net_SendItemPickUpPacket, METH_VARARGS },
{ "SendGiveItemPacket", stub_net_SendGiveItemPacket, METH_VARARGS },
{ "SetOfflinePhase", stub_net_SetOfflinePhase, METH_VARARGS },
{ "Disconnect", stub_net_Disconnect, METH_VARARGS },
{ "IsConnect", stub_net_IsConnect, METH_VARARGS },
{ "SendChatPacket", stub_net_SendChatPacket, METH_VARARGS },
{ "SendEmoticon", stub_net_SendEmoticon, METH_VARARGS },
{ "SendWhisperPacket", stub_net_SendWhisperPacket, METH_VARARGS },
{ "SendMobileMessagePacket", stub_net_SendMobileMessagePacket, METH_VARARGS },
{ "SendCharacterPositionPacket", stub_net_SendCharacterPositionPacket, METH_VARARGS },
{ "SendShopEndPacket", stub_net_SendShopEndPacket, METH_VARARGS },
{ "SendShopBuyPacket", stub_net_SendShopBuyPacket, METH_VARARGS },
{ "SendShopSellPacket", stub_net_SendShopSellPacket, METH_VARARGS },
{ "SendShopSellPacketNew", stub_net_SendShopSellPacketNew, METH_VARARGS },
{ "SendExchangeStartPacket", stub_net_SendExchangeStartPacket, METH_VARARGS },
{ "SendExchangeItemAddPacket", stub_net_SendExchangeItemAddPacket, METH_VARARGS },
{ "SendExchangeItemDelPacket", stub_net_SendExchangeItemDelPacket, METH_VARARGS },
{ "SendExchangeElkAddPacket", stub_net_SendExchangeElkAddPacket, METH_VARARGS },
{ "SendExchangeAcceptPacket", stub_net_SendExchangeAcceptPacket, METH_VARARGS },
{ "SendExchangeExitPacket", stub_net_SendExchangeExitPacket, METH_VARARGS },
{ "SendOnClickPacket", stub_net_SendOnClickPacket, METH_VARARGS },
{ "RegisterEmoticonString", stub_net_RegisterEmoticonString, METH_VARARGS },
{ "SendMessengerAddByVIDPacket", stub_net_SendMessengerAddByVIDPacket, METH_VARARGS },
{ "SendMessengerAddByNamePacket", stub_net_SendMessengerAddByNamePacket, METH_VARARGS },
{ "SendMessengerRemovePacket", stub_net_SendMessengerRemovePacket, METH_VARARGS },
{ "SendPartyInvitePacket", stub_net_SendPartyInvitePacket, METH_VARARGS },
{ "SendPartyInviteAnswerPacket", stub_net_SendPartyInviteAnswerPacket, METH_VARARGS },
{ "SendPartyExitPacket", stub_net_SendPartyExitPacket, METH_VARARGS },
{ "SendPartyRemovePacket", stub_net_SendPartyRemovePacket, METH_VARARGS },
{ "SendPartySetStatePacket", stub_net_SendPartySetStatePacket, METH_VARARGS },
{ "SendPartyUseSkillPacket", stub_net_SendPartyUseSkillPacket, METH_VARARGS },
{ "SendPartyParameterPacket", stub_net_SendPartyParameterPacket, METH_VARARGS },
{ "SendSafeboxSaveMoneyPacket", stub_net_SendSafeboxSaveMoneyPacket, METH_VARARGS },
{ "SendSafeboxWithdrawMoneyPacket", stub_net_SendSafeboxWithdrawMoneyPacket, METH_VARARGS },
{ "SendSafeboxCheckinPacket", stub_net_SendSafeboxCheckinPacket, METH_VARARGS },
{ "SendSafeboxCheckoutPacket", stub_net_SendSafeboxCheckoutPacket, METH_VARARGS },
{ "SendSafeboxItemMovePacket", stub_net_SendSafeboxItemMovePacket, METH_VARARGS },
{ "SendMallCheckoutPacket", stub_net_SendMallCheckoutPacket, METH_VARARGS },
{ "SendAnswerMakeGuildPacket", stub_net_SendAnswerMakeGuildPacket, METH_VARARGS },
{ "SendQuestInputStringPacket", stub_net_SendQuestInputStringPacket, METH_VARARGS },
{ "SendQuestConfirmPacket", stub_net_SendQuestConfirmPacket, METH_VARARGS },
{ "SendGuildAddMemberPacket", stub_net_SendGuildAddMemberPacket, METH_VARARGS },
{ "SendGuildRemoveMemberPacket", stub_net_SendGuildRemoveMemberPacket, METH_VARARGS },
{ "SendGuildChangeGradeNamePacket", stub_net_SendGuildChangeGradeNamePacket, METH_VARARGS },
{ "SendGuildChangeGradeAuthorityPacket", stub_net_SendGuildChangeGradeAuthorityPacket, METH_VARARGS },
{ "SendGuildOfferPacket", stub_net_SendGuildOfferPacket, METH_VARARGS },
{ "SendGuildPostCommentPacket", stub_net_SendGuildPostCommentPacket, METH_VARARGS },
{ "SendGuildDeleteCommentPacket", stub_net_SendGuildDeleteCommentPacket, METH_VARARGS },
{ "SendGuildRefreshCommentsPacket", stub_net_SendGuildRefreshCommentsPacket, METH_VARARGS },
{ "SendGuildChangeMemberGradePacket", stub_net_SendGuildChangeMemberGradePacket, METH_VARARGS },
{ "SendGuildUseSkillPacket", stub_net_SendGuildUseSkillPacket, METH_VARARGS },
{ "SendGuildChangeMemberGeneralPacket", stub_net_SendGuildChangeMemberGeneralPacket, METH_VARARGS },
{ "SendGuildInviteAnswerPacket", stub_net_SendGuildInviteAnswerPacket, METH_VARARGS },
{ "SendGuildChargeGSPPacket", stub_net_SendGuildChargeGSPPacket, METH_VARARGS },
{ "SendGuildDepositMoneyPacket", stub_net_SendGuildDepositMoneyPacket, METH_VARARGS },
{ "SendGuildWithdrawMoneyPacket", stub_net_SendGuildWithdrawMoneyPacket, METH_VARARGS },
{ "SendRequestRefineInfoPacket", stub_net_SendRequestRefineInfoPacket, METH_VARARGS },
{ "SendRefinePacket", stub_net_SendRefinePacket, METH_VARARGS },
{ "SendSelectItemPacket", stub_net_SendSelectItemPacket, METH_VARARGS },
{ "SetPacketSequenceMode", stub_net_SetPacketSequenceMode, METH_VARARGS },
{ "SetEmpireLanguageMode", stub_net_SetEmpireLanguageMode, METH_VARARGS },
{ "SetSkillGroupFake", stub_net_SetSkillGroupFake, METH_VARARGS },
{ "SendGuildSymbol", stub_net_SendGuildSymbol, METH_VARARGS },
{ "DisconnectUploader", stub_net_DisconnectUploader, METH_VARARGS },
{ "RecvGuildSymbol", stub_net_RecvGuildSymbol, METH_VARARGS },
{ "RegisterErrorLog", stub_net_RegisterErrorLog, METH_VARARGS },
{ NULL, NULL }
};
const char* ints_net[] = {"ERROR_NONE", "ERROR_CONNECT_MARK_SERVER", "ERROR_LOAD_MARK", "ERROR_MARK_WIDTH", "ERROR_MARK_HEIGHT", "ERROR_MARK_UPLOAD_NEED_RECONNECT", "ERROR_MARK_CHECK_NEED_RECONNECT", "PHASE_WINDOW_LOGIN", "PHASE_WINDOW_SELECT", "PHASE_WINDOW_CREATE", "PHASE_WINDOW_LOAD", "PHASE_WINDOW_GAME", "PHASE_WINDOW_EMPIRE", "PHASE_WINDOW_LOGO", "ACCOUNT_CHARACTER_SLOT_ID", "ACCOUNT_CHARACTER_SLOT_NAME", "ACCOUNT_CHARACTER_SLOT_RACE", "ACCOUNT_CHARACTER_SLOT_LEVEL", "ACCOUNT_CHARACTER_SLOT_STR", "ACCOUNT_CHARACTER_SLOT_DEX", "ACCOUNT_CHARACTER_SLOT_INT", "ACCOUNT_CHARACTER_SLOT_HTH", "ACCOUNT_CHARACTER_SLOT_PLAYTIME", "ACCOUNT_CHARACTER_SLOT_FORM", "ACCOUNT_CHARACTER_SLOT_ADDR", "ACCOUNT_CHARACTER_SLOT_PORT", "ACCOUNT_CHARACTER_SLOT_GUILD_ID", "ACCOUNT_CHARACTER_SLOT_GUILD_NAME", "ACCOUNT_CHARACTER_SLOT_CHANGE_NAME_FLAG", "ACCOUNT_CHARACTER_SLOT_HAIR", "SERVER_COMMAND_LOG_OUT", "SERVER_COMMAND_RETURN_TO_SELECT_CHARACTER", "SERVER_COMMAND_QUIT", "EMPIRE_A", "EMPIRE_B", "EMPIRE_C", "DS_SUB_HEADER_REFINE_FAIL", "DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE", "DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL", "DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY", "DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MATERIAL", "DS_SUB_HEADER_REFINE_FAIL_TOO_MUCH_MATERIAL", "DS_SUB_HEADER_REFINE_SUCCEED", NULL};
const char* strings_net[] = {NULL};
// 40250 UserInterface/PythonNonPlayerModule.cpp: nonplayer export names.
PyObject* stub_nonplayer_GetEventType(PyObject*, PyObject*) { return stub_call_named("nonplayer.GetEventType"); }
PyObject* stub_nonplayer_GetEventTypeByVID(PyObject*, PyObject*) { return stub_call_named("nonplayer.GetEventTypeByVID"); }
@@ -1891,14 +1635,6 @@ void init_2v0_gameplay_stubs() {
for (const char** name = strings_miniMap; *name; ++name)
PyModule_AddStringConstant(module, *name, "");
}
{
PyObject* module = Py_InitModule("net", methods_net);
PyModule_AddIntConstant(module, "__port_stub__", 1);
for (const char** name = ints_net; *name; ++name)
PyModule_AddIntConstant(module, *name, 0);
for (const char** name = strings_net; *name; ++name)
PyModule_AddStringConstant(module, *name, "");
}
{
PyObject* module = Py_InitModule("nonplayer", methods_nonplayer);
PyModule_AddIntConstant(module, "__port_stub__", 1);
@@ -7,6 +7,11 @@
#include "EterPythonLib/StdAfx.h"
#include "EterBase/Timer.h"
#include "EterLib/Util.h"
#include "UserInterface/PythonNetworkStream.h"
#include "UserInterface/AccountConnector.h"
#include "UserInterface/PythonPlayer.h"
#include "GameLib/FlyingObjectManager.h"
#include "EffectLib/EffectManager.h"
#include "PythonBoot.h"
#include "PythonHost.h"
#include "../EterLib/UIRenderCommands.h"
@@ -25,6 +30,15 @@ std::unique_ptr<UI::CWindowManager> g_window_manager;
std::unique_ptr<CPythonResource> g_resource;
// 40250 CPythonApplication::m_timer; CSlotWindow's cool time and Process() read it via Instance().
std::unique_ptr<CTimer> g_timer;
// 40250 CPythonApplication::m_pyNetworkStream and m_kAccountConnector (CSingletons); the app loop
// processes them every frame and the net module reaches them through Instance().
std::unique_ptr<CPythonNetworkStream> g_network_stream;
std::unique_ptr<CAccountConnector> g_account_connector;
// 40250 CPythonApplication::m_pyPlayer, m_FlyingManager and m_kEftMgr: the loading phase clears them
// (CPythonNetworkStream::SetLoadingPhase). PythonPlayer and FlyingObjectManager are platform/pending stand-ins.
std::unique_ptr<CPythonPlayer> g_player;
std::unique_ptr<CFlyingManager> g_flying_manager;
std::unique_ptr<CEffectManager> g_effect_manager;
bool fail(std::string* error, const std::string& text)
{
@@ -206,6 +220,11 @@ bool Start(const char* stdlib_path, std::string* error)
g_timer = std::make_unique<CTimer>();
g_resource = std::make_unique<CPythonResource>();
g_window_manager = std::make_unique<UI::CWindowManager>();
g_network_stream = std::make_unique<CPythonNetworkStream>();
g_account_connector = std::make_unique<CAccountConnector>();
g_player = std::make_unique<CPythonPlayer>();
g_flying_manager = std::make_unique<CFlyingManager>();
g_effect_manager = std::make_unique<CEffectManager>();
return true;
}
@@ -226,6 +245,7 @@ bool run_main_script_body(const char* lpCmdLine, std::string* error)
initgrpText();
initwndMgr();
initapp();
initnet();
init_2v0_gameplay_stubs();
ClearLogBoxMessage();
@@ -391,6 +411,11 @@ void Stop()
// 40250 Main(): pyLauncher.Clear() runs before app->Destroy()/delete app, so the window manager
// (a CPythonApplication member) is still alive while Py_Finalize runs the windows' __del__.
g_launcher->Clear();
g_effect_manager.reset();
g_flying_manager.reset();
g_player.reset();
g_account_connector.reset();
g_network_stream.reset();
g_window_manager.reset();
g_resource.reset();
g_timer.reset();
@@ -398,3 +423,10 @@ void Stop()
}
}
// winuser.h (declared in the port's windows.h shim). WM_QUIT ends 40250's CPythonApplication::Loop;
// here the script fiber's loop ends the same way.
void PostQuitMessage(int)
{
PythonBoot::AppRequestQuit();
}