Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
B 1
berione65
sen272 1
sen272
Mt2Hizmet 1
Mt2Hizmet
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...

blackdragonx61

123456seven
TM Üye
Katılım
11 Ağu 2014
Konular
95
Mesajlar
1,904
Reaksiyon Skoru
719
Altın Konu
0
TM Yaşı
11 Yıl 10 Ay 3 Gün
Başarım Puanı
157
MmoLira
67
DevLira
0
Ticaret - 0%
0   0   0

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!

Game/packet.h Açılır-Aratılır:
Kod:
typedef struct pakcet_view_equip
Kod bloğu değişilir;

Kod:
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[19];
} TPacketViewEquip;
Char.cpp aratılır:
Kod:
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[19] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 20, 21, 22, 23, 24, 25, 26 };
    for (int i = 0; i < 19; 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:
Kod:
typedef struct pakcet_view_equip
Kod bloğu değiştirilir;
Kod:
typedef struct pakcet_view_equip
{
    BYTE    header;
    DWORD    dwVID;
    TEquipmentItemSet equips[19];
} TPacketGCViewEquip;

UserInterfacePythonNetworkStreamPhaseGame.cpp aratın:
Kod:
bool CPythonNetworkStream::RecvViewEquipPacket()
Değiştirin;
Kod:
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 < 19; ++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:
Kod:
self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
Altına ekle:

Kod:
self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
uitargetin ilk başındaki:
Kod:
BUTTON_NAME_LIST = (
Aralarına ekleyin;
Kod:
localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
Aratın:
Kod:
def __OnExitObserver(self):
       net.SendChatPacket("/observer_exit")
Altına ekleyin;
Kod:
def __OnViewEquipment(self):
        net.SendChatPacket("/view_equip " + str(self.vid))
Aratın:
Kod:
def ShowDefaultButton(self):
Kod:
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;
root/interfacemodule.py aratın:
Kod:
def OpenEquipmentDialog(self, vid):
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

2151372f52.jpg



Indexe ekleyin
Kod:
*ekipman*
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Sanırım bir eksik var bazı sourcelerde sadece gm ler görebilir.

game/cmd_general.cpp aç

ACMD(do_view_equip) arat

if (ch->GetGMLevel() <= GM_PLAYER)
return;

/*
if (ch->GetGMLevel() <= GM_PLAYER)
return;
*/

olarak değiştir. sorun düzelecektir.

Öğeyi görmek için üye olmalısınız.
Bak bu oldu teşekkürler :)
 
34k veya 2089 fileslerde sadece gameye diff atılarak ve roota ekleyerek çalışıyordu bunda ek olarak client sourceye eklemekte lazımmış gameye atılan diff clientde de mi geçerli acaba kafamda deli sorular :rolleyes: Deniyorum 10 15dkya kanıt atarım
 
34k veya 2089 fileslerde sadece gameye diff atılarak ve roota ekleyerek çalışıyordu bunda ek olarak client sourceye eklemekte lazımmış gameye atılan diff clientde de mi geçerli acaba kafamda deli sorular :rolleyes: Deniyorum 10 15dkya kanıt atarım
hayır aslında cliente fln eklemye gerek yok farkettiysen değiştirin diyorum çünkü normalde envanter görüntüleme var ama onda sadece zırh silah vb gösterir bunda kostüm ringler ve kemeride gösterir
 
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