Active Member Mind Rapist 188 Posted January 26, 2019 Active Member Share Posted January 26, 2019 How can I get a character's PID from their VID in python? (uiTarget) Link to comment Share on other sites More sharing options...
attila1995 3 Posted January 30, 2019 Share Posted January 30, 2019 You can use the InstanceBase's function to get some data about character by vid. But if i remember good,there is a python function to get player id by virtual number. lets look around for it in your client source. Link to comment Share on other sites More sharing options...
Forum Moderator VegaS™ 10277 Posted February 24, 2019 Forum Moderator Share Posted February 24, 2019 (edited) I don't know why you need it, but have fun. How-To-Use: # General: chrmgr.GetPlayerID(vid) # Example: uiTarget.py import chat, chrmgr def SetTargetVID(self, vid): self.vid = vid chat.AppendChat(chat.CHAT_TYPE_INFO, 'SetTargetVID - vid({:d}), pid({:d})'.format(self.vid, chrmgr.GetPlayerID(self.vid))) Src/Client/UserInterface/InstanceBase.h //1.1) Search for: public: const TPixelPosition& NEW_GetDstPixelPositionRef(); //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT public: void SetPlayerID(const DWORD dwPID) { m_dwPlayerID = dwPID; } const DWORD GetPlayerID() { return m_dwPlayerID; } protected: DWORD m_dwPlayerID; #endif Src/Client/UserInterface/InstanceBase.cpp //1.1) Search for: SetVirtualID(c_rkCreateData.m_dwVID); //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT if (IsPC()) SetPlayerID(c_rkCreateData.m_dwPlayerID); #endif //2.1) Search for: m_dwEmoticonTime = 0; //2.2) Add after: #ifdef ENABLE_PID_TO_CLIENT m_dwPlayerID = 0; #endif Src/Client/UserInterface/PythonCharacterManagerModule.cpp //1.1) Search for: { "RegisterTitleColor", chrmgrRegisterTitleColor, METH_VARARGS }, //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT { "GetPlayerID", chrmgGetPID, METH_VARARGS }, #endif //2.1) Search for: { "RegisterTitleColor", chrmgrRegisterTitleColor, METH_VARARGS }, //2.2) Add after: #ifdef ENABLE_PID_TO_CLIENT PyObject * chrmgGetPID(PyObject* poSelf, PyObject* poArgs) { int nVID; if (!PyTuple_GetInteger(poArgs, 0, &nVID)) return Py_BadArgument(); CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance(); CInstanceBase * pkInstBase = rkChrMgr.GetInstancePtr(nVID); if (!pkInstBase) return Py_BuildValue("i", 0); return Py_BuildValue("i", (pkInstBase->IsPC()) ? pkInstBase->GetPlayerID() : 0); } #endif Src/Client/UserInterface/NetworkActorManager.cpp //1.1) Search for: CInstanceBase::SCreateData kCreateData; //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT kCreateData.m_dwPlayerID=rkNetActorData.m_dwPlayerID; #endif //2.1) Search in SNetworkActorData::SNetworkActorData() for: m_dwVID=0; //2.2) Add after: #ifdef ENABLE_PID_TO_CLIENT m_dwPlayerID = 0; #endif //3.1) Search in void SNetworkActorData::__copy__(const SNetworkActorData& src) for: m_dwVID = src.m_dwVID; //3.2) Add after: #ifdef ENABLE_PID_TO_CLIENT m_dwPlayerID = src.m_dwPlayerID; #endif Src/Client/UserInterface/NetworkActorManager.h //1.1) Search for: DWORD m_dwVID; //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT DWORD m_dwPlayerID; #endif Src/Client/UserInterface/PythonNetworkStreamPhaseGameActor.cpp //1.1) Search for: kNetActorData.m_stName = chrInfoPacket.name; //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT kNetActorData.m_dwPlayerID = chrInfoPacket.dwPlayerID; #endif Src/Client/UserInterface/Packet.h //1.1) Search in packet_char_additional_info for: DWORD dwVID; //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT DWORD dwPlayerID; #endif Src/Client/UserInterface/Locale_inc.h #define ENABLE_PID_TO_CLIENT ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ Src/Server/game/src/char.cpp //1.1) Search for: addPacket.bEmpire = m_bEmpire; //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT addPacket.dwPlayerID = IsPC() ? GetPlayerID() : 0; #endif Src/Server/game/src/packet.h //1.1) Search in packet_char_additional_info for: DWORD dwVID; //1.2) Add after: #ifdef ENABLE_PID_TO_CLIENT DWORD dwPlayerID; #endif Src/Server/common/service.h #define ENABLE_PID_TO_CLIENT Edited August 25, 2022 by Metin2 Dev Core X - External 2 Internal 1 Check my GitHub Profile Click to find all the threads started by me [TOOL] Text file loader + JSON Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now