Hikayeler

Reklam vermek için turkmmo@gmail.com

Minimap Grup Takip Sistemi [MT2Shop]

Ryuuku

Level 4
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
TM Üye
Katılım
19 May 2018
Konular
54
Mesajlar
409
Online süresi
2ay 16g
Reaksiyon Skoru
271
Altın Konu
0
Başarım Puanı
153
TM Yaşı
7 Yıl 11 Ay 7 Gün
MmoLira
790
DevLira
0

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Konularımı takip edenler bilir, fazla uzatmayı sevmiyorum direk konuya geçelim.
Not: Sistem kendi tarafımca henüz denenmemiştir. Deneyen olursa yazdığı taktirde konuya eklerim.
ff91a055d1e3cec85677793e6109e5bc.gif

C++:
Uygun bir yere ekle

#define ENABLE_PARTY_MAP
C++:
Bul;
HEADER_GC_MARK_IDXLIST                        = 102,
Altına ekle;
#ifdef ENABLE_PARTY_MAP        HEADER_GC_PARTY_POSITION_INFO                = 105,
#endif

Bul;
typedef struct packet_party_add
Satır sonuna ekle;
#ifdef ENABLE_PARTY_MAP   
typedef struct SPacketGCPartyPositionInfo
{
    unsigned char    header;
    DWORD    pid;
    DWORD    x;
    DWORD    y;
    float    rot;
} TPacketGCPartyPositionInfo;
#endif

C++:
Arat;
#include "../eterPythonLib/PythonWindowManager.h"
Altına ekle;
#ifdef ENABLE_PARTY_MAP
void CPythonMiniMap::AddPartyMember(DWORD dwPID, const char* szName)
{    TPartyMember& rkPartyMember = m_kMap_dwPID_kPartyMember[dwPID];    ZeroMemory(&rkPartyMember, sizeof(TPartyMember));
    rkPartyMember.pid = dwPID;    strncpy(rkPartyMember.szName, szName, sizeof(rkPartyMember.szName));    rkPartyMember.szName[CHARACTER_NAME_MAX_LEN] = '\0';
}
void CPythonMiniMap::MovePartyMember(DWORD dwPID, long lX, long lY, float fRot)
{    auto it = m_kMap_dwPID_kPartyMember.find(dwPID);    if (it == m_kMap_dwPID_kPartyMember.end())        return;
    if (lX < m_dwAtlasBaseX)        return;    if (lY < m_dwAtlasBaseY)        return;    if (lX > m_dwAtlasBaseX + DWORD(m_fAtlasMaxX))        return;    if (lY > m_dwAtlasBaseY + DWORD(m_fAtlasMaxY))        return;
    /*char szBuf[256];    snprintf(szBuf, sizeof(szBuf), "MovePartyMember %u (%s) to %ldx%ld (rot %f)",    dwPID, it->second.szName, lX, lY, fRot);    CPythonChat::Instance().AppendChat(CHAT_TYPE_INFO, szBuf);    */
    it->second.lX = lX - m_dwAtlasBaseX;    it->second.lY = lY - m_dwAtlasBaseY;    it->second.fRotation = fRot;
}
void CPythonMiniMap::RemovePartyMember(DWORD dwPID)
{    m_kMap_dwPID_kPartyMember.erase(dwPID);
}
void CPythonMiniMap::ClearPartyMember()
{    m_kMap_dwPID_kPartyMember.clear();
}
#endif

Arat;
bool CPythonMiniMap::LoadAtlas()
{
Satır içine ekle;
#ifdef ENABLE_PARTY_MAP   
ClearPartyMember();
#endif

Arat;
m_AtlasPlayerMark.Destroy();
Altına ekle;
#ifdef ENABLE_PARTY_MAP    m_AtlasPartyPlayerMark.Destroy();
#endif

Arat;
m_AtlasPlayerMark.SetImagePointer((CGraphicSubImage *) CResourceManager::Instance().GetResourcePointer(playerMarkFileName));
Altına ekle;
#ifdef ENABLE_PARTY_MAP    m_AtlasPartyPlayerMark.SetImagePointer((CGraphicSubImage *)CResourceManager::Instance().GetResourcePointer(playerMarkFileName));
#endif

UpdateAtlas() İçinde arat;
__GlobalPositionToAtlasPosition(rInfo.lx+rInfo.lwidth, rInfo.ly+rInfo.lheight, &rInfo.fexRender, &rInfo.feyRender);
        }
    }
Altına ekle;
#ifdef ENABLE_PARTY_MAP
        {
            auto itor = m_kMap_dwPID_kPartyMember.begin();
            for (; itor != m_kMap_dwPID_kPartyMember.end(); ++itor)
            {
                TPartyMember & rInfo = itor->second;
                __GlobalPositionToAtlasPosition(rInfo.lX, rInfo.lY, &rInfo.fScreenX, &rInfo.fScreenY);
            }
        }
#endif
Arat;
if ((ELTimer_GetMSec() / 500) % 2)
m_AtlasPlayerMark.Render();
Değiştir;
#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
C++:
Arat;
bool GetAtlasSize(float * pfSizeX, float * pfSizeY);
Altına ekle;
#ifdef ENABLE_PARTY_MAP
        void AddPartyMember(DWORD dwPID, const char* szName);
        void MovePartyMember(DWORD dwPID, long lX, long lY, float fRot);
        void RemovePartyMember(DWORD dwPID);
        void ClearPartyMember();
#endif

Arat;
struct SObserver
        {};
Satır sonuna ekle;
#ifdef ENABLE_PARTY_MAP
        typedef struct
        {
            DWORD pid;
            char szName[CHARACTER_NAME_MAX_LEN + 1];
            long lX;
            long lY;
            float fScreenX;
            float fScreenY;
            float fRotation;
        } TPartyMember;
#endif

Arat;
TInstanceMarkPositionVector        m_WarpPositionVector;
Altına ekle;
#ifdef ENABLE_PARTY_MAP
        std::map<DWORD, TPartyMember>    m_kMap_dwPID_kPartyMember;
#endif

Arat;
CGraphicExpandedImageInstance    m_AtlasPlayerMark;
Altına ekle;
#ifdef ENABLE_PARTY_MAP
        CGraphicExpandedImageInstance    m_AtlasPartyPlayerMark;
#endif
C++:
Arat;
Set(HEADER_GC_PARTY_UPDATE,
Altına ekle;
#ifdef ENABLE_PARTY_MAP   
            Set(HEADER_GC_PARTY_POSITION_INFO, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCPartyPositionInfo), STATIC_SIZE_PACKET));
#endif
C++:
Arat;
bool RecvPartyUpdate();
Altına ekle;
#ifdef ENABLE_PARTY_MAP
        bool RecvPartyPositionInfo();
#endif
C++:
Arat;
case HEADER_GC_PARTY_UPDATE:
Üstüne ekle;
#ifdef ENABLE_PARTY_MAP
            case HEADER_GC_PARTY_POSITION_INFO:
                ret = RecvPartyPositionInfo();
                break;
#endif

Arat;
bool CPythonNetworkStream::RecvPartyAdd()
{  
       ...
      return false;
Altına ekle;
#ifdef ENABLE_PARTY_MAP
    if (strcmp(kPartyAddPacket.name, CPythonPlayer::Instance().GetName()))
        CPythonMiniMap::Instance().AddPartyMember(kPartyAddPacket.pid, kPartyAddPacket.name);
#endif

Arat;
bool CPythonNetworkStream::RecvPartyRemove()
Üstüne ekle;
#ifdef ENABLE_PARTY_MAP
bool CPythonNetworkStream::RecvPartyPositionInfo()
{
    TPacketGCPartyPositionInfo kPartyPositionInfoPacket;
    if (!Recv(sizeof(kPartyPositionInfoPacket), &kPartyPositionInfoPacket))
        return false;
    CPythonMiniMap::Instance().MovePartyMember(kPartyPositionInfoPacket.pid, kPartyPositionInfoPacket.x,
        kPartyPositionInfoPacket.y, kPartyPositionInfoPacket.rot);
    return true;
}
#endif

Arat;
if (!Recv(sizeof(kPartyRemovePacket), &kPartyRemovePacket))
        return false;
Altına ekle;
#ifdef ENABLE_PARTY_MAP
    CPythonMiniMap::Instance().RemovePartyMember(kPartyRemovePacket.pid);
#endif

Arat;
if (CPythonPlayer::Instance().IsMainCharacterIndex(kPartyUnlinkPacket.vid))
Altına ekle;
#ifdef ENABLE_PARTY_MAP
        CPythonMiniMap::Instance().ClearPartyMember();
#endif
C++:
Arat;
mining_cancel();
Altına ekle;
#ifdef ENABLE_PARTY_MAP
    if (IsPC() && GetParty())
        GetParty()->SendPartyPositionOneToAll(this);
#endif
C++:
Arat;
HEADER_GC_MARK_IDXLIST            = 102,
Altına ekle;
#ifdef ENABLE_PARTY_MAP   
    HEADER_GC_PARTY_POSITION_INFO    =105,
#endif

Arat;
typedef struct packet_party_update
Satır sonuna ekle;
#ifdef ENABLE_PARTY_MAP
typedef struct SPacketGCPartyPositionInfo
{
    unsigned char    header;
    DWORD    pid;
    DWORD    x;
    DWORD    y;
    float    rot;
} TPacketGCPartyPositionInfo;
#endif
C++:
Arat;
SendPartyInfoOneToAll(pkChr);
Altına ekle;
#ifdef ENABLE_PARTY_MAP
        SendPartyPositionAllToOne(pkChr);
        SendPartyPositionOneToAll(pkChr);
#endif

Arat;
void CParty::SendPartyInfoAllToOne(LPCHARACTER ch)
Üstüne ekle;
#ifdef ENABLE_PARTY_MAP   
void CParty::SendPartyPositionOneToAll(LPCHARACTER ch)
{
    if (!ch->GetDesc())
        return;
    TMemberMap::iterator it;
    TPacketGCPartyPositionInfo p;
    p.header = HEADER_GC_PARTY_POSITION_INFO;
    p.pid = ch->GetPlayerID();
    p.x = ch->GetX();
    p.y = ch->GetY();
    p.rot = ch->GetRotation();
    for (it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
    {
        if ((it->second.pCharacter) && (it->second.pCharacter->GetDesc()) && (it->second.pCharacter->GetMapIndex() == ch->GetMapIndex()))
            it->second.pCharacter->GetDesc()->Packet(&p, sizeof(p));
    }
}
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));
        }
    }
}
#endif
C++:
Arat;
        void        SendPartyUnlinkOneToAll(LPCHARACTER ch);
Altına ekle;
#ifdef ENABLE_PARTY_MAP   
        void        SendPartyPositionOneToAll(LPCHARACTER ch);
        void        SendPartyPositionAllToOne(LPCHARACTER ch);
#endif
C++:
Uygun bir yere ekle;

#define ENABLE_PARTY_MAP
 
Teşekkürler.
 
kardeşim bunu questten de yapabilirdin çok basit bi sistem olmuş.Bunu okuma yazmayı bilenlerde yapar :D benim filesimden sökmüşsün bunu :)
 
kardeşim bunu questten de yapabilirdin çok basit bi sistem olmuş.Bunu okuma yazmayı bilenlerde yapar :D benim filesimden sökmüşsün bunu :)
Bu arada ciddiye almayın :D şakasına yaptım beceremem ben bunu
Adamsın Burak.
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst