Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
romegames 1
romegames
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Best Studio 1
Best Studio
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
InfernoShade 1
InfernoShade
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

40K Envanter Görüntüleme Sistemi(Kostüm,Kemer Dahil)[C++,PYTHON]

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

ha buraya kopyaladın ha oraya bi fark yok (buraya kopyalayınca tab ayarları bozuluyor.). hem konu görünümü açısından hem kolaylık açısından diyorum.

bende sorun çıkartmadı ama bazı forumlarda sıkıntı var turkmmoda öyle bi sıkıntı olmuyor gördügüm kadarıyla sorunsuz ekliyorum genelde
 
ha buraya kopyaladın ha oraya bi fark yok (buraya kopyalayınca tab ayarları bozuluyor.). hem konu görünümü açısından hem kolaylık açısından diyorum.
kimse sıkıntı çekmemiş sen kavga mı istiyon seç meydan akçaabat ortahisar gelelim yani :D
 
Gamesrc/packet.h açılır aratılır:
PHP:
typedef struct pakcet_view_equip
Kod bloğu değişilir;
PHP:
typedef struct pakcet_view_equip
{
   BYTE    header;
   DWORD    vid;
   struct {
       DWORD    vnum;
       BYTE    count;
       long    alSockets[ITEM_SOCKET_MAX_NUM];
       TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
   } equips[16];

} TPacketViewEquip;
Char.cpp aratılır:
PHP:
void CHARACTER::SendEquipment(LPCHARACTER ch)
Kod bloğu değiştirilir;
Kod:
void CHARACTER::SendEquipment(LPCHARACTER ch){
    TPacketViewEquip p;
    p.header = HEADER_GC_VIEW_EQUIP;
    p.vid    = GetVID();
    int pos[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 20, 21, 22, 23 };
    for (int i = 0; i < 16; i++)
    {
        LPITEM item = GetWear(pos[i]);
        if (item)
        {
            p.equips[i].vnum = item->GetVnum();
            p.equips[i].count = item->GetCount();


            thecore_memcpy(p.equips[i].alSockets, item->GetSockets(), sizeof(p.equips[i].alSockets));
            thecore_memcpy(p.equips[i].aAttr, item->GetAttributes(), sizeof(p.equips[i].aAttr));
        }
        else
        {
            p.equips[i].vnum = 0;
        }
    }
    ch->GetDesc()->Packet(&p, sizeof(p));

}
Gamesrc bitti
Clientsrc/Userınterface/packet.h aratılır:
PHP:
typedef struct pakcet_view_equip
Kod bloğu değiştirilir;
PHP:
typedef struct pakcet_view_equip{
   BYTE    header;
   DWORD    dwVID;
   TEquipmentItemSet equips[16];

} TPacketGCViewEquip;
UserInterfacePythonNetworkStreamPhaseGame.cpp aratın:
PHP:
bool CPythonNetworkStream::RecvViewEquipPacket()
Değiştirin;
PHP:
bool CPythonNetworkStream::RecvViewEquipPacket()
{
    TPacketGCViewEquip kViewEquipPacket;
    if (!Recv(sizeof(kViewEquipPacket), &kViewEquipPacket))
        return false;


    PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OpenEquipmentDialog", Py_BuildValue("(i)", kViewEquipPacket.dwVID));
    for (int i = 0; i < 16; ++i)
    {
        TEquipmentItemSet & rItemSet = kViewEquipPacket.equips[i];
        PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogItem", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, rItemSet.vnum, rItemSet.count));


        for (int j = 0; j < ITEM_SOCKET_SLOT_MAX_NUM; ++j)
            PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogSocket", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, j, rItemSet.alSockets[j]));


        for (int k = 0; k < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++k)
            PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogAttr", Py_BuildValue("(iiiii)", kViewEquipPacket.dwVID, i, k, rItemSet.aAttr[k].bType, rItemSet.aAttr[k].sValue));
    }


    return true;
}

Clientsrcde bitti
root/uitarget.py aratın:
PHP:
self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
Altına ekle:
PHP:
self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
uitargetin ilk başındaki:
PHP:
BUTTON_NAME_LIST = (
Aralarına ekleyin;
PHP:
localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
Aratın:
PHP:
def __OnExitObserver(self):
    net.SendChatPacket("/observer_exit")
Altına ekleyin;
PHP:
def __OnViewEquipment(self):
    net.SendChatPacket("/view_equip " + str(self.vid))
Aratın:
PHP:
def ShowDefaultButton(self):
Kod bloğunu değiştirin;
PHP:
def ShowDefaultButton(self):    self.isShowButton = TRUE
    self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER])
    self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE])
    self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT])
    self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT])
    self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW])
    for button in self.showingButtonList:
        button.Show()
Bir bug var onuda fixliyelim sürekli açabiliyorsunuz bu onu fixliyor
root/interfacemodule.py aratın
Kod:
[COLOR=#000088][FONT=monospace]def[/FONT][/COLOR][COLOR=#660066][FONT=monospace]OpenEquipmentDialog[/FONT][/COLOR][COLOR=#666600][FONT=monospace]([/FONT][/COLOR][COLOR=#000088][FONT=monospace]self[/FONT][/COLOR][COLOR=#666600][FONT=monospace],[/FONT][/COLOR][COLOR=#000000][FONT=monospace] vid[/FONT][/COLOR][COLOR=#666600][FONT=monospace]):[/FONT][/COLOR]

Değiştirin;
Kod:
def OpenEquipmentDialog(self, vid):        if self.equipmentDialogDict.has_key(vid):
            self.equipmentDialogDict[vid].Destroy()
            self.CloseEquipmentDialog(vid)


        dlg = uiEquipmentDialog.EquipmentDialog()
        dlg.SetItemToolTip(self.tooltipItem)
        dlg.SetCloseEvent(ui.__mem_func__(self.CloseEquipmentDialog))
        dlg.Open(vid)



        self.equipmentDialogDict[vid] = dlg
Son olarak verdiğim dosyaları gerekli yerlere atın
Kanıt:
x0ME54e.jpg



Indexe ekleyin
Kod:
*ekipman
*





user diger userin itemini göremiyor aynısnı yaptım ama gmlerde sıkıntı yok nsl ayarlıycaz
 
user diger userin itemini göremiyor aynısnı yaptım ama gmlerde sıkıntı yok nsl ayarlıycaz
diğer konuda belirttim buraya da ekliyeceğim gibi görünüyor cmd_generalde şöyle biryer var if (ch->GetGMLevel() <= GM_PLAYER) return; burayı sil
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

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

Geri
Üst