Detaylı Mob Target İnfo Tam Sistem

YunusEmreOfficial

yedmedya.com.tr
Premium Üye
Yardımsever Üye
Usta Üye
Mesaj
1.428
Çözümler
38
Beğeni
1.074
Puan
1.370
Ticaret Puanı
2
Merhaba Arkadaşlar uzun uzun aradım ama bu kadar detaylısını bulamadım. Bulduğum bir konu vardı o da modülleri paylaşmış bırakmış ve kaynak kodları olan server files dosyalarını koymuş. İncelemek isterseniz buraya tıklayın.

Gözüken zihin taşları sürekli değişir, aynı zamanda açıklaması da onunla birlikte değişir.

Şimdi tam dosyalarını ekliyorum. İyi Kullanımlar.

1702926505495.png
1702926566240.png
1734205842473.webp
1734205854066.webp



Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.

Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.

Not: Hiç bir forumdan yada konudan alıntı değildir. Osmanlı2 ve Pachi Tunganın paylaştığı server files dosyalarından bizzat kendim söktüm. Ayrıca bazı yerleri farklıdır. Uzun uğraşlar sonucu sorunsuz kurulabilecek hale getirdim. Söktükten sonra bizzat kendi filesime kurdum. Rehberi takip ettiğiniz ve düzgün eklediğiniz sürece hiç bir sorun çıkarmaz o yüzden eklemek için bana yazmayınız. Hata alırsanız konu altından bildirin çözeriz. İyi kullanımlar.

Source :
Linkleri görebilmek için giriş yap veya kayıt ol.

Source :
Linkleri görebilmek için giriş yap veya kayıt ol.




1 )
uitarget.py de NumberToString tanımlaması var. Aslında bildiğiniz string, daha güzel yazması için eklenmişti. Bunun tanımlamasını yapmasını dosyalarda unutmuşum bende var ama eklememişim. Str olarak değiştirdiğinizde de düzeliyordu orası ama yinede tanımlamasını yapalım güzel görünsün.

localeinfo.py:
Genişlet Daralt Kopyala
def NumberToString(n) :
    if n <= 0 :
        return "0"

    return "%s" % ('.'.join([ i-3<0 and str(n)[:i] or str(n)[i-3:i] for i in range(len(str(n))%3, len(str(n))+1, 3) if i ]))


2 )

Beceri kitapları gibi, tüm kitapların görünmeme sorununu aşağıdaki adımları uygulayarak çözebilrsiniz.
Not: Beceri kitapları skillerin isimlerine göre gösterilmez sadece beceri kitabı yazar. Onun için ayrıca değişiklikler yapmanız gerekli.


Öncesi :
Sonrası :
1728259695840-webp.19298
1728259619393-webp.19296

1728259633366-webp.19297

Çözüm :

uitooltip.py:
Genişlet Daralt Kopyala
## Arat
        ### Skill Book ###
        if 50300 == itemVnum:
            if 0 != metinSlot:
                self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILLBOOK_NAME, 1)
                self.ShowToolTip()
            return
        elif 70037 == itemVnum:
            if 0 != metinSlot:
                self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME, 0)
                self.AppendDescription(item.GetItemDescription(), 26)
                self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
                self.ShowToolTip()
            return
        elif 70055 == itemVnum:
            if 0 != metinSlot:
                self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME, 0)
                self.AppendDescription(item.GetItemDescription(), 26)
                self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
                self.ShowToolTip()
            return
     
###########################################################################################



## Değiştir.

        ### Skill Book ###
        elif 50300 == itemVnum:
            if 0 != metinSlot and not self.isBook:
                self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILLBOOK_NAME, 1)
                self.ShowToolTip()
            elif self.isBook:
                self.SetTitle(item.GetItemName())
                self.AppendDescription(item.GetItemDescription(), 26)
                self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
                self.ShowToolTip()
            return
        elif 70037 == itemVnum:
            if 0 != metinSlot and not self.isBook2:
                self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME, 0)
                self.AppendDescription(item.GetItemDescription(), 26)
                self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
                self.ShowToolTip()
            elif self.isBook2:
                self.SetTitle(item.GetItemName())
                self.AppendDescription(item.GetItemDescription(), 26)
                self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
                self.ShowToolTip()
            return
        elif 70055 == itemVnum:
            if 0 != metinSlot:
                self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME, 0)
                self.AppendDescription(item.GetItemDescription(), 26)
                self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR)
                self.ShowToolTip()
            return
     
###########################################################################################

3 )
Görünüşü scroll barlı değilde tam göstermek için aşağıdakileri uygulayın.
Not: İtemler sadece 1 kez yüklenecek şekilde düzenlendi.(fixed)
Python:
Genişlet Daralt Kopyala
##Arat - Sil

MAX_ITEM_COUNT = 5


## Arat
                for value in xrange(self.slotSize):

## Değiştir

                for value in xrange(35):

##Arat

                            if emptySlotIndex >= self.slotSize:

## Değiştir

                            if emptySlotIndex >= 35:

## Arat

            def __LoadInformation_Drops(self, race):
                self.AppendSeperator()

                if race in constInfo.MONSTER_INFO_DATA:
                    if len(constInfo.MONSTER_INFO_DATA[race]["items"]) == 0:
                        self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)
                    else:
                        itemListBox = ui.ListBoxExNew(32 + 5, self.MAX_ITEM_COUNT)
                        itemListBox.SetSize(self.GetWidth() - 15 * 2 - ui.ScrollBar.SCROLLBAR_WIDTH, (32 + 5) * self.MAX_ITEM_COUNT)
                        height = 0
                        for curItem in constInfo.MONSTER_INFO_DATA[race]["items"]:
                            if curItem.has_key("vnum_list"):
                                height += self.AppendItem(itemListBox, curItem["vnum_list"], curItem["count"])
                            else:
                                height += self.AppendItem(itemListBox, curItem["vnum"], curItem["count"])
                        if height < itemListBox.GetHeight():
                            itemListBox.SetSize(itemListBox.GetWidth(), height)
                        self.AppendWindow(itemListBox, 15)
                        itemListBox.SetBasePos(0)

                        if len(constInfo.MONSTER_INFO_DATA[race]["items"]) > itemListBox.GetViewItemCount():
                            itemScrollBar = ui.ScrollBar()
                            itemScrollBar.SetParent(self)
                            itemScrollBar.SetPosition(itemListBox.GetRight(), itemListBox.GetTop())
                            itemScrollBar.SetScrollBarSize(32 * self.MAX_ITEM_COUNT + 5 * (self.MAX_ITEM_COUNT - 1))
                            itemScrollBar.SetMiddleBarSize(float(self.MAX_ITEM_COUNT) / float(height / (32 + 5)))
                            itemScrollBar.Show()
                            itemListBox.SetScrollBar(itemScrollBar)
                else:
                    self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)

            def OverInItem(self, slotIndex):
                vnum = self.itemVnums[slotIndex]
                if vnum == 0 or vnum == 50300 or vnum == 70037:
                    self.itemTooltip.HideToolTip()
                elif vnum > 27999 and vnum < 28960:
                    self.itemTooltip.HideToolTip()
                else:
                    self.OnShowItemTooltip(vnum)
## Tamamını değiştir

            def __LoadInformation_Drops(self, race):
                self.AppendSeperator()

                if race in constInfo.MONSTER_INFO_DATA:
                    if len(constInfo.MONSTER_INFO_DATA[race]["items"]) == 0:
                        self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)
                        self.wndItem.Hide()
                    else:
                        self.wndItem.SetPosition(10, self.yPos - 7)
                        self.yPos += 32*5
                        self.SetSize(self.BOARD_WIDTH, self.yPos + 5)
                        self.UpdateRect()
                        self.wndItem.Show()

                        for curItem in constInfo.MONSTER_INFO_DATA[race]["items"]:
                            getItemID = 0
                            if curItem.has_key("vnum_list"):
                                getItemID = curItem["vnum_list"][0]
                                vnum = curItem["vnum_list"][0]
                            else:
                                getItemID = curItem["vnum"]
                                vnum=curItem["vnum"]

                            getItemCount=curItem["count"]
                            item.SelectItem(getItemID)
                            itemSize = item.GetItemSize()
                            if item.GetItemType() == item.ITEM_TYPE_METIN:
                                self.stoneVnum = getItemID
                                self.lastStoneVnum = 28430

                            emptySlotPos = self.SerachEmptySlot(itemSize[1])

                            if -1 != emptySlotPos:
                                self.itemArray[emptySlotPos] = 1

                                if itemSize[1] == 2:
                                    self.itemArray[emptySlotPos + 7] = 1
                                elif itemSize[1] == 3:
                                    self.itemArray[emptySlotPos + 7] = 1
                                    self.itemArray[emptySlotPos + 14] = 1

                                if item.GetItemType() == item.ITEM_TYPE_METIN:
                                    self.stoneImg = emptySlotPos

                                self.wndItem.SetItemSlot(emptySlotPos, getItemID, getItemCount)
                                self.itemVnums[emptySlotPos] = getItemID

                        self.wndItem.RefreshSlot()
                else:
                    self.AppendTextLine(localeInfo.TARGET_INFO_NO_ITEM_TEXT)
                    self.wndItem.Hide()

            def OverInItem(self, slotIndex):
                vnum = self.itemVnums[slotIndex]
                if vnum != 0:
                    self.OnShowItemTooltip(vnum)

## Arat

                    self.stoneImg.LoadImage(item.GetIconImageFileName(), realName)

## Değiştir

                    self.wndItem.SetItemSlot(self.stoneImg, nextImg, 1)

## Arat

    def __Initialize(self):
        self.nameString = ""
        self.nameLength = 0
        self.vid = 0
        if app.ENABLE_TARGET_INFORMATION_SYSTEM:
            self.vnum = 0
        self.isShowButton = False

## Altına ekle

        self.reload = False

## Arat

        def OnPressedInfoButton(self):

## Tamamını değiştir

        def OnPressedInfoButton(self):
            if self.infoButton.showWnd.IsShow():
                self.infoButton.showWnd.Close()
            else:
                if self.vnum !=0:
                    if self.reload == False:
                        net.SendTargetInfoLoad(player.GetTargetVID())
                        self.reload = True
                    self.infoButton.showWnd.Open(self, self.vnum)


İtem varken :
İtem yokken:
1734205823017.webp
1734205787898.webp


Merhaba arkadaşlar bu güncellememizde ekli olmayan metin taşlarında gösterilen taşlarla ilgilidir. Bu güncellemeyle birlikte sadece belirlediğiniz moblarda, metin taşlarında görünücektir. Eğer bunu uygulamassanız sorun olmaz, ancak bilmelisinizki tüm metin taşlarında görünücektir. Drop düşmese bile.

Gelelim güncelleme'ye :

server srcde char.cpp içerisinde:

char.cpp:
Genişlet Daralt Kopyala
    if (IsStone())
    {
        DetermineDropMetinStone();
    }
Böyle bir kod var. Bu kodun açıklaması, eğer metin taşı ise DetermineDropMetinStone fonksiyonunu çağır demek.

Bu fonksiyonu yorum satırına aldığında tüm metinlerdeki taşları kaldırır. /usr/game/share/locale/turkey içerisindeki mob_drop_item.txtye eklediğinde de sırayla üst üste gösterir. Kodlar ona ayarlı çünkü.

Yani yapman gereken şu:

Burayı sil yada yorum satırına al.

char.cpp:
Genişlet Daralt Kopyala
    // if (IsStone())
    // {
        //DetermineDropMetinStone();
    // }

Örnek bir mob içerisine ekleme,

mob_drop_item.txt:
Genişlet Daralt Kopyala
Group    Àü¸¶¼®
{
    Mob    8002
    Type    drop
    1    5000    1    20
    2    11210    1    20
    3    11410    1    20
    4    11610    1    20
    5    11810    1    20
    6    30    1    20
    7    1010    1    20
    8    3020    1    20
    9    2020    1    20
    10    7020    1    20
    11    5001    1    15
    12    11211    1    15
    13    11411    1    15
    14    11611    1    15
    15    11811    1    15
    16    31    1    15
    17    1011    1    15
    18    3021    1    15
    19    2021    1    15
    20    7021    1    15
    21    5002    1    10
    22    11212    1    10
    23    11412    1    10
    24    11612    1    10
    25    11812    1    10
    26    32    1    5
    27    1012    1    5
    28    3022    1    5
    29    2022    1    5
    30    7022    1    5
    31    27002    50    100
    32    27003    30    50
    33    27005    30    50
    34    27006    20    50
    35    50300    1    10000
    36    50300    1    10000
    37    50300    1    10000
    38    50300    1    10000
    39    25041    1    10000
    40    70102    1    10000
    41    28430    1    50    15
    42    28431    1    50    15
    43    28432    1    50    15
    44    28433    1    50    15
    45    28434    1    50    15
    46    28435    1    50    15
    47    28436    1    50    15
    48    28437    1    50    15
    49    28438    1    50    15
    50    28439    1    50    15
    51    28440    1    50    15
    52    28441    1    50    15
    53    28442    1    50    15
    54    28443    1    50    15

}

Bu şekilde tüm taşları eklediğinizde, eklenen mobda görünecektir.

8002 - Dövüş Metni kodlu mob için yaptım. Sen istediğine ekleyebilirsin. Ayrıca sadece metin taşlarında değil istediğin moba ekleyebilirsin.

Böylece tüm metinlerde değilde mob_drop_item içerisindeki mob koduyla eklediklerinde görünür. 1 den fazla taş eklediğinde uitarget.py içerisinde sıralama olduğu için taşların fotosu sırayla değişir.

1734205665546.webp


1734205673678.webp

1734205679603.webp


Sadece MMOTutkunlarına Özeldir. Lütfen diğer yerlerde paylaşırken kaynak gösteriniz.
 
Son düzenleme:
5162 numaralı slotta aç kapat aç kapat dener misin?
 
5162 numaralı slotta aç kapat aç kapat dener misin?
1702929668299.png


İlk başta bu kadar yükleniyor, sonra tamamı yükleniyor. Bunu fark etmemiştim ama düzeliyor. Fazladan item eklemiyor. Sabit bir yerde kalıyor sadece ilk açılışta yaptı, tekrarında yapmıyor. Çok sorun olacağını sanmıyorum syserr vs düşürmüyor. Şu an sistem ekliyorum ekleyeyim reboot atıp tekrar dener söylerim.

1702929716248.png
 
En son bir moderatör tarafından düzenlenmiş:
merhabalar hocam öncelikle paylaşımınız için teşekkür ederim. Kendi çapımda amatörce files düzenlemeye oluşturmaya çalışıyorum. Sizden gördüğüm target info sistemini filesime eklemeye çalıştım. Kodları düzenleyip filezillaya yerleştirdim gmake all aldım fakat belli satırlarda bir hata ile karşılaştım.


item_manager.cpp: In member function 'bool ITEM_MANAGER::CreateDropItemVector(CH ARACTER*, CHARACTER*, std::vector<CItem*, std::allocator<CItem*> >&)':
item_manager.cpp:785: error: 'decltype' was not declared in this scope
item_manager.cpp:785: error: expected `;' before 'v'
item_manager.cpp:787: error: 'v' was not declared in this scope
item_manager.cpp:837: error: 'decltype' was not declared in this scope
item_manager.cpp:837: error: expected `;' before 'v'
item_manager.cpp:839: error: 'v' was not declared in this scope
item_manager.cpp:859: error: 'decltype' was not declared in this scope
item_manager.cpp:859: error: expected `;' before 'v'
item_manager.cpp:861: error: 'v' was not declared in this scope
gmake[1]: *** [.obj/item_manager.o] Error 1
gmake[1]: Leaving directory `/root/JADEITE_Src/Server/game/src'
gmake: *** [all] Error 2


Yardımcı olabilirmisiniz ?
 
merhabalar hocam öncelikle paylaşımınız için teşekkür ederim. Kendi çapımda amatörce files düzenlemeye oluşturmaya çalışıyorum. Sizden gördüğüm target info sistemini filesime eklemeye çalıştım. Kodları düzenleyip filezillaya yerleştirdim gmake all aldım fakat belli satırlarda bir hata ile karşılaştım.


item_manager.cpp: In member function 'bool ITEM_MANAGER::CreateDropItemVector(CH ARACTER*, CHARACTER*, std::vector<CItem*, std::allocator<CItem*> >&)':
item_manager.cpp:785: error: 'decltype' was not declared in this scope
item_manager.cpp:785: error: expected `;' before 'v'
item_manager.cpp:787: error: 'v' was not declared in this scope
item_manager.cpp:837: error: 'decltype' was not declared in this scope
item_manager.cpp:837: error: expected `;' before 'v'
item_manager.cpp:839: error: 'v' was not declared in this scope
item_manager.cpp:859: error: 'decltype' was not declared in this scope
item_manager.cpp:859: error: expected `;' before 'v'
item_manager.cpp:861: error: 'v' was not declared in this scope
gmake[1]: *** [.obj/item_manager.o] Error 1
gmake[1]: Leaving directory `/root/JADEITE_Src/Server/game/src'
gmake: *** [all] Error 2


Yardımcı olabilirmisiniz ?
rica ederim görünüşe göre hatalı eklemişsin gibi duruyo özeldende yazdım hata aldığın kod satırlarını kontrol et ) } gibi içine eklenecek felandır. Şuan hatırlamıyorum yapamassan dcden yaz bakalım 『 RcT 』YunusED
 
Arkadaşlar bi kaç arkadaştan hata alıp ekleyemediğine dair mesaj aldım alıp ekleyen varmı eksik yermi var ekleyen birisi varsa söylerse çok sevinirim. Ona göre eksik yer varsa sıfırdan ekleyip eksikleri tamamlar güncellerim konuyu 😇
 
Arkadaşlar bi kaç arkadaştan hata alıp ekleyemediğine dair mesaj aldım alıp ekleyen varmı eksik yermi var ekleyen birisi varsa söylerse çok sevinirim. Ona göre eksik yer varsa sıfırdan ekleyip eksikleri tamamlar güncellerim konuyu 😇
Src tarafında anlatım gayet açık. Hem client hem game dosyalarını derlerken bi hata ile karşılaşmadım.
Pack tarafında bazı hatalar aldım.
1- Oyuna giriş yaptığımda mob info'da ? butonu görünmüyordu. tga uzantısını arattım, yolunun yanlış verildiğini gördüm onu düzelttim.
2-Integer veriyi string verisine dönüştürmek için NumberToString diye bir fonksiyon kullanılmış ama tanımı yapılmamış. Onun yerine python'ın içerisinde varolan str fonksiyonunu kullandım.
3- Sonra butona tıkladığımda yine açılmıyordu, debug client ile kontrol ettim. Benim dosyalarımda mevcut olmayan bonusları (kılıç savunması gibi) bulamadığı için paneli açmıyormuş. Onları da yorum satırı haline getirince paneli açabildim.

edit: Şimdi farkettim, yang bilgisi yazmıyormuş. Ona da bi bakayım
Screenshot_2.png
 
Son düzenleme:
Src tarafında anlatım gayet açık. Hem client hem game dosyalarını derlerken bi hata ile karşılaşmadım.
Pack tarafında bazı hatalar aldı.
1- Oyuna giriş yaptığımda mob info'da ? butonu görünmüyordu. tga uzantısını arattım, yolunun yanlış verildiğini gördüm onu düzelttim.
2-Integer veriyi string verisine dönüştürmek için NumberToString diye bir fonksiyon kullanılmış ama tanımı yapılmamış. Onun yerine python'ın içerisinde varolan str fonksiyonunu kullandım.
3- Sonra butona tıkladığımda yine açılmıyordu, debug client ile kontrol ettim. Benim dosyalarımda mevcut olmayan bonusları (kılıç savunması gibi) bulamadığı için paneli açmıyormuş. Onları da yorum satırı haline getirince paneli açabildim.


14614 eklentisini görüntüle
tga uzantılarında ufak bi değişiklik yapmıştım eklemeyi unutmuşum sanırım sadece dosya adında değişiklik yaptım /mark/kılıc mesela /game/kılıc gibi oldu diğer bi yandan 2. sorun localeinfo.py dosyasına sayıların .lı olması için string tanımlamıştım onuda sonradan ekledim konuya dahil edeceğim şuan mesela sende normal görünüyo can olayı 73838322 ise string tanımlandığında 738.383.22 gibi görünüyo bunuda aynı şekilde konuya dahil ederim aslında panelin açılması için bi sorun yaratmıyolar bilmeyen için sorun tabi de sonradan çok düzenleme yaptım aklımdan kaçmış

bu arada tam bendeki gibi bi görüntü oluşmuyo sıfırdan ekleyip hataları düzenleyeceğim bugün içinde güncelleme yaparım eklemen için çok teşekkür ederim kanıt olması sevindirdi.
 
tga uzantılarında ufak bi değişiklik yapmıştım eklemeyi unutmuşum sanırım sadece dosya adında değişiklik yaptım /mark/kılıc mesela /game/kılıc gibi oldu diğer bi yandan 2. sorun localeinfo.py dosyasına sayıların .lı olması için string tanımlamıştım onuda sonradan ekledim konuya dahil edeceğim şuan mesela sende normal görünüyo can olayı 73838322 ise string tanımlandığında 738.383.22 gibi görünüyo bunuda aynı şekilde konuya dahil ederim aslında panelin açılması için bi sorun yaratmıyolar bilmeyen için sorun tabi de sonradan çok düzenleme yaptım aklımdan kaçmış

bu arada tam bendeki gibi bi görüntü oluşmuyo sıfırdan ekleyip hataları düzenleyeceğim bugün içinde güncelleme yaparım eklemen için çok teşekkür ederim kanıt olması sevindirdi.
Sistemin kendisinde bariz bir hata yok gibi, kendine uyarlaman lazım biraz
 
Sistemin kendisinde bariz bir hata yok gibi, kendine uyarlaman lazım biraz
evet evet sistemde bi sorun yok sadece ufak tefek düzenleme yapılması lazım mesela sende dayanıklılık bölümüde görünmüyo uitargette ekleme yapmadın mı acaba kılıç çiftel vs görünmüyo yada isimleri farklı

yang bilgisini extradan açtım kodları diğer fileslerdede yok kendim ekliycem bitirince kod yazmasını onuda eklerim konuya
 
evet evet sistemde bi sorun yok sadece ufak tefek düzenleme yapılması lazım mesela sende dayanıklılık bölümüde görünmüyo uitargette ekleme yapmadın mı acaba kılıç çiftel vs görünmüyo yada isimleri farklı

yang bilgisini extradan açtım kodları diğer fileslerdede yok kendim ekliycem bitirince kod yazmasını onuda eklerim konuya
O efsunlar benim sistemimde mevcut olmadığı için ilgili satırları yorum satırı haline getirdim, bi sakıncası yok.
Efsunları eklediğimde güncellerim
 
O efsunlar benim sistemimde mevcut olmadığı için ilgili satırları yorum satırı haline getirdim, bi sakıncası yok.
Efsunları eklediğimde güncellerim
tmmdır o zamana eksikleri tamamlarım inşallah şuan elektirkler yok hızlıca ekliycemde kaldım öyle ndkdkdld
 
Geri
Üst