Mt2Hizmet 1
Mt2Hizmet
Fethi Polat 1
Fethi Polat
farkmt2official 1
farkmt2official
BlackFullMoon 1
BlackFullMoon
mavzermete 1
mavzermete
Hikaye Ekle
Kaynak ikonu

Onaylı Envanter Sistemi #ZacqooLeaven 1

indirmek için izniniz yok
Bu konu daha önce açılan konuyla farklıdır, bunda görüntüleme yapılırken "onaylama" istemektedir.
Eğer oyun seçeneklerine aç kapat engellemek istiyorsanız;
http://www.turkmmo.com/c-c-python/3...me-ac-kapat-oyun-seceneklerinecpythonlua.html
blackdragon61 arkadaşımızın konusundan faydalanın bazı şeyleri ondan alıntıladım bilgilerinize.

Resimler kanıtlar (sayfayı kaplamaması için link olarak koydum)

http://i.hizliresim.com/zVD8jD.png
http://i.hizliresim.com/lyDJQb.png


Gamesrc/packet.h açılır aratılır:
Kod:
typedef struct pakcet_view_equip

Değiştirilir komple
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[16];



} TPacketViewEquip;

Char.cpp aratılır:
Kod:
void CHARACTER::SendEquipment(LPCHARACTER ch)

Değiştirilir komple
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));



}

Clientsrc/Userınterface/packet.h aratılır:
Kod:
typedef struct pakcet_view_equip

Değiştirilir komple
Kod:
typedef struct pakcet_view_equip
{
   BYTE    header;
   DWORD    dwVID;
   TEquipmentItemSet equips[16];



} TPacketGCViewEquip;

UserInterfacePythonNetworkStreamPhaseGame.cpp aratılır:
Kod:
bool CPythonNetworkStream::RecvViewEquipPacket()

Değiştirilir komple
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 < 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;

}

Pack & python aşamasına geçiyoruz :



root> constinfo.py açılır ve müsait yere eklenir
Kod:
ENVANTER_TARGET_VID = 0
CLIENT_YOL = "lib/"

uitarget.py açılır ve aratılır
Kod:
locale.TARGET_BUTTON_EMOTION_ALLOW,
"VOTE_BLOCK_CHAT",

altına eklenir
Kod:
        "Profil",

aratılır
Kod:
self.buttonDict[locale.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)

altına eklenir
Kod:
self.buttonDict["Profil"].SAFE_SetEvent(self.__OnProfilGoster)

aratılır
Kod:
def __ShowMainCharacterMenu(self):

kod bloğunun altına eklenir
Kod:
    def __OnProfilGoster(self):      
        if not (self.zaman < app.GetTime()):
            chat.AppendChat(chat.CHAT_TYPE_INFO, localegame.OYUN_ENVANTER_SURE)
            return
        self.zaman = app.GetTime() + 10
        net.SendWhisperPacket(chr.GetNameByVID(self.vid), '#zacqooleavenEnvanter_Teklifi#Sorgu#')
        constInfo.ENVANTER_TARGET_VID = self.vid

aratılır
Kod:
self.showingButtonList.append(self.buttonDict[locale.TARGET_BUTTON_FIGHT])

altına eklenir
Kod:
        if(self.zaman < app.GetTime()):
            self.showingButtonList.append(self.buttonDict["Profil"])

aratılır

Kod:
            if distance < 0:
                return
altına eklenir
Kod:
            if(self.zaman < app.GetTime()):              
                self.zaman = 0
                self.__ShowButton("Profil")
                self.RefreshButton()
            else:
                self.__HideButton("Profil")

                self.RefreshButton()

game.py açılır ve aratılır
Kod:
        chat.AppendWhisper(mode, name, line)
        self.interface.RecvWhisper(name)

üstüne eklenir
Kod:
        if line.find("#zacqooleavenEnvanter_Teklifi#") != -1:           
            if os.path.exists(str(constInfo.CLIENT_YOL)+"profil_"+str(player.GetName())+".kf"):
                return
            if line.find("#Sorgu#") != -1:
                self.EnvanterDialog = uiCommon.QuestionDialog()
                self.EnvanterDialog.SetText(locale.OYUN_ENVANTER % (str(name)))
                self.EnvanterDialog.SetAcceptEvent(lambda arg=TRUE: self.OnEnvanterDialog(name, 1))
                self.EnvanterDialog.SetCancelEvent(lambda arg=FALSE: self.OnEnvanterDialog(name, 0))
                self.EnvanterDialog.Open()
            else:
                if line.find("Red") != -1:
                    self.uyari = uiCommon.PopupDialog()
                    self.uyari.SetText(locale.ENVANTER_RED)
                    self.uyari.Open()
                    return
                chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OYUN_ENVANTER_CHAT % (name))
                net.SendChatPacket("/view_equip " + str(constInfo.ENVANTER_TARGET_VID))

            return

aratılır
Kod:
def OnRecvWhisperError(self, mode, name, line):

kod bloğunun altına eklenir
Kod:
    def OnEnvanterDialog(self, ad, flag):      
        if flag == 0:
            self.EnvanterDialog.Close()
            return


        self.EnvanterDialog.Close()

        net.SendWhisperPacket(ad, "#zacqooleavenEnvanter_Teklifi#Cevap#")

locale_tr>locale_game.txt açılır ve an alta eklenir
Kod:
OYUN_ENVANTER    %s Envanterini görmek istiyor?
OYUN_ENVANTER_SURE    Tekrar sorgu göndermek için 10 saniye beklemen gerekli.
OYUN_ENVANTER_CHAT    Şuanda %s adlı oyuncunun profilini görmektesin.


İndirilecek dosyalar ; indirmek için tıkla
Virüstotal ; bakmak için tıkla


verdiğim indirme dosyasında uiscript , root içerisine ve packa atılacak dosyalar var bunları atın.


@ZacqooLeaven; teşekkürler sorunsuz çalışıyor
B4gAqp.jpg
Yazar
Bekir.CANPOLAT
Kaynak İndirilme
10
Görüntüleme
309
İlk yayınlama
Son Güncelleme

Ratings

0.00 yıldız(lar) 0 rating

Bekir.CANPOLAT - Kaynakları

Geri
Üst