*Descriere:
Party System - Extended Info Members
Afiseaza informatii extinse la membrii din grupa.
*Poze / Video:
*Link download / Code:
Adaugam in common/service.h:
Deschidem char.cpp si cautam:
Adaugam:
Mai jos avem
Adaugam:
Deschidem packet.h si cautam:
Adaugam:
Deschidem party.cpp si cautam:
Adaugam:
Cautam:
Adaugam:
Acum, in sursa binary deschidem Packet.h si cautam:
Adaugam:
Deschidem PythonApplicationModule.cpp si adaugam:
Deschidem PythonNetworkStreamPhaseGame.cpp si cautam:
Inlocuim cu:
Deschidem PythonPlayer.cpp si cautam:
Inlocuim cu:
Cautam mai jos:
Adaugam:
Deschidem acum PythonPlayer.h si cautam:
Adaugam:
Mai jos gasim:
Inlocuim cu:
Deschidem PythonPlayerModule.cpp si cautam:
Adaugam:
Mai jos gasim:
Adaugam:
Nu uitati sa adaugati in locale_inc.h:
Pentru partea de client va las fisierele complete, voi cautati dupa:
si modificati/adaugati cum e in fisiere.
uiparty.py:
ui.py:
uiscript/partymemberinfoboard.py:
Adaugati in etc\ymir work\ui\pattern\ asta:
Party System - Extended Info Members
Afiseaza informatii extinse la membrii din grupa.
*Poze / Video:
- 01-16-2026, 08-55-57.png (256.49 KiB) Vizualizat 902 dată
- 01-16-2026, 09-12-59.png (302.71 KiB) Vizualizat de 899 ori
*Link download / Code:
Adaugam in common/service.h:
Cod: Selectaţi tot
#define EXTENDED_PARTY_INFOCod: Selectaţi tot
bool CHARACTER::BuildUpdatePartyPacket(TPacketGCPartyUpdate & out)
out.role = GetParty()->GetRole(GetPlayerID()); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos avem
Cod: Selectaţi tot
void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
val = GetExp();
} Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem packet.h si cautam:
Cod: Selectaţi tot
typedef struct packet_party_update
{
BYTE header;
DWORD pid;
BYTE role;
BYTE percent_hp; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem party.cpp si cautam:
Cod: Selectaţi tot
void CParty::SendPartyInfoOneToAll(DWORD pid)
{
auto it = m_memberMap.find(pid);
if (it == m_memberMap.end())
return;
if (it->second.pCharacter)
{
SendPartyInfoOneToAll(it->second.pCharacter);
return;
}
// Data Building
TPacketGCPartyUpdate p;
memset(&p, 0, sizeof(p));
p.header = HEADER_GC_PARTY_UPDATE;
p.pid = pid;
p.percent_hp = 255;
p.role = it->second.bRole; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cautam:
Cod: Selectaţi tot
void CParty::SendPartyInfoAllToOne(LPCHARACTER ch)
{
TPacketGCPartyUpdate p;
for (auto it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
{
if (!it->second.pCharacter)
{
DWORD pid = it->first;
memset(&p, 0, sizeof(p));
p.header = HEADER_GC_PARTY_UPDATE;
p.pid = pid;
p.percent_hp = 255;
p.role = it->second.bRole; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum, in sursa binary deschidem Packet.h si cautam:
Cod: Selectaţi tot
typedef struct packet_party_update
{
BYTE header;
DWORD pid;
BYTE state;
BYTE percent_hp; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem PythonApplicationModule.cpp si adaugam:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem PythonNetworkStreamPhaseGame.cpp si cautam:
Cod: Selectaţi tot
CPythonPlayer::Instance().UpdatePartyMemberInfo(kPartyUpdatePacket.pid, kPartyUpdatePacket.state, kPartyUpdatePacket.percent_hp); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem PythonPlayer.cpp si cautam:
Cod: Selectaţi tot
void CPythonPlayer::UpdatePartyMemberInfo(DWORD dwPID, BYTE byState, BYTE byHPPercentage) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cautam mai jos:
Cod: Selectaţi tot
pPartyMemberInfo->byState = byState;
pPartyMemberInfo->byHPPercentage = byHPPercentage; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem acum PythonPlayer.h si cautam:
Cod: Selectaţi tot
typedef struct SPartyMemberInfo
{
SPartyMemberInfo(DWORD _dwPID, const char * c_szName) : dwPID(_dwPID), strName(c_szName), dwVID(0) {}
DWORD dwVID;
DWORD dwPID;
std::string strName;
BYTE byState;
BYTE byHPPercentage; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos gasim:
Cod: Selectaţi tot
void UpdatePartyMemberInfo(DWORD dwPID, BYTE byState, BYTE byHPPercentage); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem PythonPlayerModule.cpp si cautam:
Cod: Selectaţi tot
PyObject * playerGetPartyMemberHPPercentage(PyObject* poSelf, PyObject* poArgs)
{
int iPID;
if (!PyTuple_GetInteger(poArgs, 0, &iPID))
return Py_BuildException();
CPythonPlayer::TPartyMemberInfo * pPartyMemberInfo;
if (!CPythonPlayer::Instance().GetPartyMemberPtr(iPID, &pPartyMemberInfo))
return Py_BuildValue("i", FALSE);
return Py_BuildValue("i", pPartyMemberInfo->byHPPercentage);
} Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos gasim:
Cod: Selectaţi tot
{ "GetPartyMemberHPPercentage", playerGetPartyMemberHPPercentage, METH_VARARGS }, Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Nu uitati sa adaugati in locale_inc.h:
Cod: Selectaţi tot
#define EXTENDED_PARTY_INFOCod: Selectaţi tot
EXTENDED_PARTY_INFOuiparty.py:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.ui.py:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.uiscript/partymemberinfoboard.py:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Adaugati in etc\ymir work\ui\pattern\ asta:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.





