Ola, da ich mir das System heute eingebaut habe und es 3 nervige Bugs gab sind dazu mal die Fixxes
Bitte melden Sie sich an, um dieses Bild zu sehen.
Bitte melden Sie sich an, um diesen Link zu sehen.
Die Bugs in der Original Version:
Wenn Gruppenmitglieder Offline sind werden sie auf der Minimap auf den Koordinaten X 0 Y 0 angezeigt.
Wenn man die Gruppe verlässt wird einem Weiterhin die alte Position von dem Entfernten Mitglied angezeigt.
Der offensichtlichste Fehler war das in der Funktion void CParty::SendPartyPositionAllToOne(LPCHARACTER ch) die Y Kordi als X eingetragen war.
Es gibt noch 1 Bug den ich nicht Fixen konnte der mir aber nichts ausmacht da ich eine Runde Playermark benutze und zwar ist es die Rotation von anderen Chars.
Falls jemand dazu einen Fix hätte wäre es sehr nett wenn er diesen in den Kommentaren Posten könnte damit das System endlich vollständig ist.
Suche in PythonMinimap.cpp nach:
- #ifdef ENABLE_PARTY_MAP
- if ((ELTimer_GetMSec() / 500) % 2)
- {
- for (auto itor = m_kMap_dwPID_kPartyMember.begin(); itor != m_kMap_dwPID_kPartyMember.end(); ++itor)
- {
- //TraceError("PartyPosition %ld %ld (screen %f %f)", itor->second.lX, itor->second.lY, itor->second.fScreenX, itor->second.fScreenY);
- m_AtlasPartyPlayerMark.SetPosition(itor->second.fScreenX - (float)m_AtlasPartyPlayerMark.GetWidth() / 2.0f,
- itor->second.fScreenY - (float)m_AtlasPartyPlayerMark.GetHeight() / 2.0f);
- m_AtlasPartyPlayerMark.SetRotation(itor->second.fRotation);
- m_AtlasPartyPlayerMark.Render();
- }
- m_AtlasPlayerMark.Render();
- }
- #else
- if ((ELTimer_GetMSec() / 500) % 2)
- m_AtlasPlayerMark.Render();
- #endif
Ersetzen durch:
- #ifdef ENABLE_PARTY_MAP
- if ((ELTimer_GetMSec() / 500) % 2)
- {
- for (auto itor = m_kMap_dwPID_kPartyMember.begin(); itor != m_kMap_dwPID_kPartyMember.end(); ++itor)
- {
- if(itor->second.lX > 0 || itor->second.fScreenX > 0)
- {
- //TraceError("PartyPosition %ld %ld (screen %f %f)", itor->second.lX, itor->second.lY, itor->second.fScreenX, itor->second.fScreenY);
- m_AtlasPartyPlayerMark.SetPosition(itor->second.fScreenX - (float)m_AtlasPartyPlayerMark.GetWidth() / 2.0f,
- itor->second.fScreenY - (float)m_AtlasPartyPlayerMark.GetHeight() / 2.0f);
- m_AtlasPartyPlayerMark.SetRotation(itor->second.fRotation);
- m_AtlasPartyPlayerMark.Render();
- }
- }
- m_AtlasPlayerMark.Render();
- }
- #else
- if ((ELTimer_GetMSec() / 500) % 2)
- m_AtlasPlayerMark.Render();
- #endif
Suchen in Party.cpp nach:
- void CParty::SendPartyPositionAllToOne(LPCHARACTER ch)
- {
- TMemberMap::iterator it;
- TPacketGCPartyPositionInfo p;
- for (it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
- {
- if (it->second.pCharacter && it->second.pCharacter->GetMapIndex() == ch->GetMapIndex())
- {
- DWORD pid = it->first;
- memset(&p, 0, sizeof(p));
- p.header = HEADER_GC_PARTY_POSITION_INFO;
- p.pid = pid;
- p.x = it->second.pCharacter->GetX();
- p.y = it->second.pCharacter->GetX();
- p.rot = it->second.pCharacter->GetRotation();
- ch->GetDesc()->Packet(&p, sizeof(p));
- }
- }
- }
Ersetzen durch:
- void CParty::SendPartyPositionAllToOne(LPCHARACTER ch)
- {
- TMemberMap::iterator it;
- TPacketGCPartyPositionInfo p;
- for (it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
- {
- if (it->second.pCharacter && it->second.pCharacter->GetMapIndex() == ch->GetMapIndex())
- {
- DWORD pid = it->first;
- memset(&p, 0, sizeof(p));
- p.header = HEADER_GC_PARTY_POSITION_INFO;
- p.pid = pid;
- p.x = it->second.pCharacter->GetX();
- p.y = it->second.pCharacter->GetY();
- p.rot = it->second.pCharacter->GetRotation();
- ch->GetDesc()->Packet(&p, sizeof(p));
- }
- }
- }