Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.494
Çözümler
546
Beğeni
12.044
Puan
5.864
Merhaba arkadaşlar,
Bugün size sorunları fixlenmiş bir şekilde 4 envanter sistemi eklemeyi anlatacağım.
Biliyorsunuz ki ben server files üzerinde çalışıyorum bu hususta forumlarda paylaşılan sistemlerin çoğunda bug bulunuyor. Bende bu bugları fixleyerek 4 envanter sistemi ekledim. Size nasıl ekleneceğini anlatacağım. İsterseniz 5 envanter yapın isterseniz 10 envanter yapın fark etmez.

Not: İşlemleri yapmadan önce yedek almanızı öneririm. Bu sistemde bilinen sorunlar çözülmüştür. Bilinmeyen bir sorun oluştuğu zaman konu altından belirtirseniz seve seve düzenlerim.

Sırasıyla şu işlemleri uygulayınız;
Server/common/lenght.h
açılır ve aratılır;
C++:
INVENTORY_MAX_NUM        = 90,

Şu kodlarla değiştirin;
C++:
    INVENTORY_MAX_NUM        = 180,
    INVENTORY_PAGE_COUNT    = INVENTORY_MAX_NUM / 45,
    INVENTORY_PAGE_SLOT_COUNT = INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT,

Server/game/src/exchange.cpp açılır ve CheckSpace fonksiyonun içinde şu kod aratılır;
C++:
    static CGrid s_grid1(5, INVENTORY_MAX_NUM/5 / 2); // inven page 1
    static CGrid s_grid2(5, INVENTORY_MAX_NUM/5 / 2); // inven page 2

Şu kodlarla değiştirin;
C++:
    static CGrid s_grid1(5, INVENTORY_MAX_NUM/5 / INVENTORY_PAGE_COUNT); // inven page 1
    static CGrid s_grid2(5, INVENTORY_MAX_NUM/5 / INVENTORY_PAGE_COUNT); // inven page 2
    static CGrid s_grid3(5, INVENTORY_MAX_NUM/5 / INVENTORY_PAGE_COUNT); // inven page 3
    static CGrid s_grid4(5, INVENTORY_MAX_NUM/5 / INVENTORY_PAGE_COUNT); // inven page 4

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


Aynı dosya ve fonksiyonun içinde şu kodları aratın;
C++:
    s_grid1.Clear();
    s_grid2.Clear();

Altına şunları ekleyin;
C++:
    s_grid3.Clear();
    s_grid4.Clear();

Eğer 5 envanter yapacaksanız şu değeri de eklemelisiniz;
C++:
    s_grid5.Clear();

Gene aynı dosya ve fonksiyonun içinde şu kodları aratın;
C++:
    for (i = 0; i < INVENTORY_MAX_NUM / 2; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid1.Put(i, 1, item->GetSize());
    }
    for (i = INVENTORY_MAX_NUM / 2; i < INVENTORY_MAX_NUM; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid2.Put(i - INVENTORY_MAX_NUM / 2, 1, item->GetSize());
    }

Biz 2 den fazla envanter kullanacağımız için bunu tamamen şu şekilde değiştiriyoruz;
C++:
    for (i = 0; i < INVENTORY_PAGE_SLOT_COUNT; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid1.Put(i, 1, item->GetSize());
    }
    for (i = INVENTORY_PAGE_SLOT_COUNT; i < INVENTORY_PAGE_SLOT_COUNT * 2; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid2.Put(i - INVENTORY_PAGE_SLOT_COUNT, 1, item->GetSize());
    }
    for (i = INVENTORY_PAGE_SLOT_COUNT * 2; i < INVENTORY_PAGE_SLOT_COUNT * 3; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid3.Put(i - INVENTORY_PAGE_SLOT_COUNT * 2, 1, item->GetSize());
    }
    for (i = INVENTORY_PAGE_SLOT_COUNT * 3; i < INVENTORY_PAGE_SLOT_COUNT * 4; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid4.Put(i - INVENTORY_PAGE_SLOT_COUNT * 3, 1, item->GetSize());
    }

5. Envanteri eklemek için for döngülerine şunu da ekleyin;
C++:
    for (i = INVENTORY_PAGE_SLOT_COUNT * 4; i < INVENTORY_PAGE_SLOT_COUNT * 5; ++i)
    {
        if (!(item = victim->GetInventoryItem(i)))
            continue;

        s_grid5.Put(i - INVENTORY_PAGE_SLOT_COUNT * 4, 1, item->GetSize());
    }

Bu kodları eklememizin sebebi ticaret yaptığımız zaman diğer envanterleri de görmesidir. Aksi taktirde diğer envanterler boş olsa bile envanter dolu hatası verir.

Merhaba, konu sorunsuz çalışmakta ama exchange.cpp kısmında düzenlenmesi gereke bir kod bölümü daha var eğer düzenlenmez ise ticarette 3 ve 4 envanteri görmüyor mainline src'de farklı hazır srclerde farklı mainline kullananlar için kodu aşağıya bırakıyorum @Whistle Konuya eklerseniz sevinirim.

if (iPos >= 0) kodunu aratın ve değiştirin

son oluşacak görüntü ;

10536 eklentisini görüntüle

C++:
                if (iPos >= 0)
                {
                    s_grid2.Put(iPos, 1, item->GetSize());
                }
                else
                {
                    //3. envanter item alma bug fix
                    iPos = s_grid3.FindBlank(1, item->GetSize());
                    if (iPos >= 0)
                    {
                        s_grid3.Put(iPos, 1, item->GetSize());
                    }
                    else
                    {
                        //4. envanter item alma bug fix
                        iPos = s_grid4.FindBlank(1, item->GetSize());
                        if (iPos >= 0){
                            s_grid4.Put(iPos, 1, item->GetSize());
                        }
                        else{
                            return false;//bul
                        }
                    }
            }
        }
    }

Server/game/src/char_item.cpp dosyasını açın ve IsEmptyItemGrid fonksiyonu içinde şu kodu aratın;
Not: Aynı fonksiyonda 2 tane oluyor. 2 sinide göstereceğim şekilde düzenleyin.
Kod:
                BYTE bPage = bCell / (INVENTORY_MAX_NUM / 2);

Bu kodu şu şekilde değiştirin;
Kod:
                BYTE bPage = bCell / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT);

Aynı dosya ve fonksiyon içinde şu kodu aratın;
Not: Aynı fonksiyonda 2 tane oluyor. 2 sinide göstereceğim şekilde düzenleyin.
C++:
                        if (p / (INVENTORY_MAX_NUM / 2) != bPage)

Bu kodu şu şekilde değiştirin;
C++:
                        if (p / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT) != bPage)

Evet arkadaşlar server kısmı bitti şimdi client kısmına geliyoruz. :)
Client/UserInterface/GameType.h açılır ve aratılır;
C++:
const DWORD c_Inventory_Page_Count = 2;

Kodları bunla değiştirin;
C++:
const DWORD c_Inventory_Page_Count = 4;
Not: 5 envanter kullanmak isterseniz 4 kısmını 5 yapın.

Evet arkaaşlar client kısmı da bu kadar. :) Sıra geldi Python'a.
İlk önce UIScript üzerinden gidelim.
Not: Bazı fileslerde inventorywindow.py dosyası locale_tr/ui içinden alınıyor. Bu yüzden UIScript mi yoksa locale_tr mi diye kontrol edin.
Not2: Python kodları 4 envanter içindir. Forumlarda 5 olanını bulabilirsiniz.

UIScript/InventoryWindow.py dosyası açılır ve şu kod aratılır;
Python:
EQUIPMENT_START_INDEX = 90

Şu şekilde değiştirin;
Python:
EQUIPMENT_START_INDEX = 180

Aynı dosyada şu kodları aratın;
Python:
                {
                    "name" : "Inventory_Tab_01",
                    "type" : "radio_button",

                    "x" : 10,
                    "y" : 33 + 191,

                    "default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
                    "over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
                    "down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
                    "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_1,

                    "children" :
                    (
                        {
                            "name" : "Inventory_Tab_01_Print",
                            "type" : "text",

                            "x" : 0,
                            "y" : 0,

                            "all_align" : "center",

                            "text" : "I",
                        },
                    ),
                },
                {
                    "name" : "Inventory_Tab_02",
                    "type" : "radio_button",

                    "x" : 10 + 78,
                    "y" : 33 + 191,

                    "default_image" : "d:/ymir work/ui/game/windows/tab_button_large_01.sub",
                    "over_image" : "d:/ymir work/ui/game/windows/tab_button_large_02.sub",
                    "down_image" : "d:/ymir work/ui/game/windows/tab_button_large_03.sub",
                    "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_2,

                    "children" :
                    (
                        {
                            "name" : "Inventory_Tab_02_Print",
                            "type" : "text",

                            "x" : 0,
                            "y" : 0,

                            "all_align" : "center",

                            "text" : "II",
                        },
                    ),
                },

Şu kodlarla hepsini değiştirin;
Python:
                {
                    "name" : "Inventory_Tab_01",
                    "type" : "radio_button",

                    "x" : 10,
                    "y" : 33 + 191,

                    "default_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_01.sub",
                    "over_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_02.sub",
                    "down_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_03.sub",
                    "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_1,

                    "children" :
                    (
                        {
                            "name" : "Inventory_Tab_01_Print",
                            "type" : "text",

                            "x" : 0,
                            "y" : 0,

                            "all_align" : "center",

                            "text" : "I",
                        },
                    ),
                },
                {
                    "name" : "Inventory_Tab_02",
                    "type" : "radio_button",

                    #"x" : 10 + 78,
                    "x" : 10 + 39,
                    "y" : 33 + 191,

                    "default_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_01.sub",
                    "over_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_02.sub",
                    "down_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_03.sub",
                    "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_2,

                    "children" :
                    (
                        {
                            "name" : "Inventory_Tab_02_Print",
                            "type" : "text",

                            "x" : 0,
                            "y" : 0,

                            "all_align" : "center",

                            "text" : "II",
                        },
                    ),
                },
        
                {
                    "name" : "Inventory_Tab_03",
                    "type" : "radio_button",

                    "x" : 10 + 39 + 39,
                    "y" : 33 + 191,

                    "default_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_01.sub",
                    "over_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_02.sub",
                    "down_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_03.sub",
                    "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_3,

                    "children" :
                    (
                        {
                            "name" : "Inventory_Tab_03_Print",
                            "type" : "text",

                            "x" : 0,
                            "y" : 0,

                            "all_align" : "center",

                            "text" : "III",
                        },
                    ),
                },
        
                {
                    "name" : "Inventory_Tab_04",
                    "type" : "radio_button",

                    "x" : 10 + 39 + 39 + 39,
                    "y" : 33 + 191,

                    "default_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_01.sub",
                    "over_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_02.sub",
                    "down_image" : "d:/ymir work/ui/game/windows/tab_button_large_half_03.sub",
                    "tooltip_text" : uiScriptLocale.INVENTORY_PAGE_BUTTON_TOOLTIP_4,

                    "children" :
                    (
                        {
                            "name" : "Inventory_Tab_04_Print",
                            "type" : "text",

                            "x" : 0,
                            "y" : 0,

                            "all_align" : "center",

                            "text" : "IV",
                        },
                    ),
                },

UIScript/BeltInventoryWindow.py dosyasını açın ve şu kodu aratın;
Python:
EQUIPMENT_START_INDEX = 90

Şu şekilde değiştirin;
Python:
EQUIPMENT_START_INDEX = 180

Evet arkadaşlar UIScript kısmı bitti şimdi sıra geldi Root dosyalarına. :)

Root/uiInventory.py dosyasını açın ve şu kodları aratın;
Python:
            self.inventoryTab = []
            self.inventoryTab.append(self.GetChild("Inventory_Tab_01"))
            self.inventoryTab.append(self.GetChild("Inventory_Tab_02"))

Altına şunları ekleyin;
Python:
            self.inventoryTab.append(self.GetChild("Inventory_Tab_03"))
            self.inventoryTab.append(self.GetChild("Inventory_Tab_04"))

Aynı dosyada şu kodları aratın;
Python:
        self.inventoryTab[0].SetEvent(lambda arg=0: self.SetInventoryPage(arg))
        self.inventoryTab[1].SetEvent(lambda arg=1: self.SetInventoryPage(arg))

Altına şunları ekleyin;
Python:
        self.inventoryTab[2].SetEvent(lambda arg=2: self.SetInventoryPage(arg))
        self.inventoryTab[3].SetEvent(lambda arg=3: self.SetInventoryPage(arg))

Aynı dosyada şu kodları aratın;
Python:
        self.inventoryTab[0].Down()

Altına şunları ekleyin;
Python:
        self.inventoryPageIndex = 0

Aynı dosyada SetInventoryPage fonksiyonun içindeki şu kodları aratın;
Python:
        self.inventoryPageIndex = page
        self.inventoryTab[1-page].SetUp()
        self.RefreshBagSlotWindow()

Şu şekilde değiştirin;
Python:
        self.inventoryTab[self.inventoryPageIndex].SetUp()
        self.inventoryPageIndex = page
        self.inventoryTab[self.inventoryPageIndex].Down()
        self.RefreshBagSlotWindow()
Bu kod sayesinde diğer sayfalara geçerken butonlar takılı kalmayacak.

Aynı dosyada RefreshBagSlotWindow fonksiyonunun içinde şu kodları aratın;
Python:
                if slotNumber >= player.INVENTORY_PAGE_SIZE:
                    slotNumber -= player.INVENTORY_PAGE_SIZE

Şu şekilde değiştirin;
Python:
                if slotNumber >= player.INVENTORY_PAGE_SIZE * self.inventoryPageIndex:
                    slotNumber -= player.INVENTORY_PAGE_SIZE * self.inventoryPageIndex
Bu kod sayesinde 3 ve 4 envanterde yer alan otomatik potlar çalışacak, efsun botları da efsunu görecektir.

Evet arkadaşlar Root kısmıda bitti. Şimdi locale_xx (locale_tr) üzerinde ayarlamalar yapacağız.
Not: locale_xx => locale_tr, xx => tr
locale_tr/tr/locale_interface.txt dosyası açın ve şunları aratın;
Kod:
INVENTORY_PAGE_BUTTON_TOOLTIP_1    1. Envanter
INVENTORY_PAGE_BUTTON_TOOLTIP_2    2. Envanter

Altına şunları ekleyin;
Kod:
INVENTORY_PAGE_BUTTON_TOOLTIP_3    3. Envanter
INVENTORY_PAGE_BUTTON_TOOLTIP_4    4. Envanter
Bu kodları eklemezseniz oyuna giremezsiniz ve syserr şöyle bir hata verir;
Kod:
<type 'exceptions.AttributeError'>:'module' object has no attribute 'INVENTORY_PAGE_BUTTON_TOOLTIP_3'

Evet arkadaşlar sistem bu şekildedir. Anlayabilmeniz için hazır kod vermiyorum. Lakin eski fileslerde tab_button_large_half_01.sub şu dosya yok. Bu yüzden ekten verdiğim dosyayı indirip ETC içine atın.
Not: Ekteki dosyanın içinde de anlatım mevcuttur. Konuda kodları eklerken tab ayarlarını filan düzgün yaptım. Gene de emin olmak için ekteki dosyanın anlatımını da kullanabilirsiniz.

Kanıt eklemek zorunlu olduğu için buyurun kanıt;
4 Envanter Kanıt.jpg
 

Dosya Eklentileri

  • Metin2 4 Envanter.zip
    111,6 KB · Gösterim: 800
Son düzenleme:
@Whistle bunu ekledikten sonra 3. 4 . envanterlere silah ve zırh koyamıyorum diğerleri sorunsuz konuyor martysama 1.7 source kullanıyorum internette bulabildiğim en son sürüm sebebi ne olabilir
 
@Whistle bunu ekledikten sonra 3. 4 . envanterlere silah ve zırh koyamıyorum diğerleri sorunsuz konuyor martysama 1.7 source kullanıyorum internette bulabildiğim en son sürüm sebebi ne olabilir
Python kodlarını eklediniz mi? Çünkü bende aynı src üzerinde çalışıyorum.
 
şöyle bişey buldum deniyorum şu an

char_battle.cpp
itemmanager.cpp
input_main.cpp
exchange.cpp
char_item.cpp
cmd_general.cpp
cube.cpp

Bu dosyaların içinde bulunan inventorysize = 180 kodunu bularak (bende 4 envanter olduğu için 180 kodu bulunmakta sizin filesinizde kaç envanter varsa ona göre slot sayısını değiştirin)

[Başka srclerde inventorysize kodu yerine INVENTORY_MAX_NUM adında da geçebilir.]
 
şöyle bişey buldum deniyorum şu an

char_battle.cpp
itemmanager.cpp
input_main.cpp
exchange.cpp
char_item.cpp
cmd_general.cpp
cube.cpp

Bu dosyaların içinde bulunan inventorysize = 180 kodunu bularak (bende 4 envanter olduğu için 180 kodu bulunmakta sizin filesinizde kaç envanter varsa ona göre slot sayısını değiştirin)

[Başka srclerde inventorysize kodu yerine INVENTORY_MAX_NUM adında da geçebilir.]
Siz martysama src kullandığınıza emin misiniz? Vanilla src olmasın o?
char_battle.cpp ItemDropPenalty fonksiyonunda şöyle kod mu var.
C++:
        std::vector<BYTE> vec_bSlots;

        int inventorysize = INVENTORY_MAX_NUM;
        if(!bigger_inventory) inventorysize = 180;

        for (i = 0; i < inventorysize; ++i)
            if (GetInventoryItem(i))
                vec_bSlots.push_back(i);

Bende şöyle;
C++:
        std::vector<BYTE> vec_bSlots;

        for (i = 0; i < INVENTORY_MAX_NUM; ++i)
            if (GetInventoryItem(i))
                vec_bSlots.push_back(i);

Eğer vanilla src kullanıyorsanız config ile ayarlanabilir şekilde yapılmış. Kısacası sistem sizde ekli. Neden tekrar ekliyorsunuz?
 
C++:
    if (bDropInventory) // Drop Inventory
    {
        std::vector<BYTE> vec_bSlots;

        for (i = 0; i < INVENTORY_MAX_NUM; ++i)
            if (GetInventoryItem(i))
                vec_bSlots.push_back(i);

        if (!vec_bSlots.empty())
        {
            random_shuffle(vec_bSlots.begin(), vec_bSlots.end());

            int iQty = MIN(vec_bSlots.size(), r.iInventoryQty);

            if (iQty)
                iQty = number(1, iQty);

            for (i = 0; i < iQty; ++i)
            {
                pkItem = GetInventoryItem(vec_bSlots[i]);

                if (IS_SET(pkItem->GetAntiFlag(), ITEM_ANTIFLAG_GIVE | ITEM_ANTIFLAG_PKDROP))
                    continue;

                SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 255);
                vec_item.push_back(std::make_pair(pkItem->RemoveFromCharacter(), INVENTORY));
            }
        }
        else if (iAlignIndex == 8)
            isDropAllEquipments = true;
    }

    if (bDropEquipment) // Drop Equipment
    {
        std::vector<BYTE> vec_bSlots;

        for (i = 0; i < WEAR_MAX_NUM; ++i)
            if (GetWear(i))
                vec_bSlots.push_back(i);

        if (!vec_bSlots.empty())
        {
            random_shuffle(vec_bSlots.begin(), vec_bSlots.end());
            int iQty;

            if (isDropAllEquipments)
                iQty = vec_bSlots.size();
            else
                iQty = MIN(vec_bSlots.size(), number(1, r.iEquipmentQty));

            if (iQty)
                iQty = number(1, iQty);

            for (i = 0; i < iQty; ++i)
            {
                pkItem = GetWear(vec_bSlots[i]);

                if (IS_SET(pkItem->GetAntiFlag(), ITEM_ANTIFLAG_GIVE | ITEM_ANTIFLAG_PKDROP))
                    continue;

                SyncQuickslot(QUICKSLOT_TYPE_ITEM, vec_bSlots[i], 255);
                vec_item.push_back(std::make_pair(pkItem->RemoveFromCharacter(), EQUIPMENT));
            }
        }
    }
Bende böyle şuan.

Şöyle bir şey buldum. Sadece 1. Envantere koyabiliyorum şu an silah ve zırhları başka envantere konmuyor ilginç. :D
 
En son bir moderatör tarafından düzenlenmiş:
1. Eğer mesajına yanıt gelmezse bir önceki mesajınızı düzenleyin. Eklemenizi yapın.
2. Kodları kod bloguna ekleyin. Böyle bir şey anlaşılmıyor.
3. Forumda yazım kurallarına önem veriyoruz ona uyun.
0515_200539.jpg


Buyurun tekrardan sizin için kontrol ettim.
Zırhı koymaya çalışın eğer olmazsa syserr hatalarını yazın.
Syserr ile ilgili bilgiyi buradan alabilirsiniz: Yardım Almadan Önce Bu Konuyu Okuyunuz! Syserr Nedir?
 
Bi yeri 2 defa arayacaktık. Ben bi kere arattıydım. Game srcden galiba. Ondan kaynaklı şuan build ediliyor.

@Whistle

kusura bakma ama kod editörünü göremedim ben mi dikkatsizim anlamadım
 
Bi yeri 2 defa arayacaktık. Ben bi kere arattıydım. Game srcden galiba. Ondan kaynaklı şuan build ediliyor.
Konu içinde de not yazmışım ama tam gözükmemiş galiba. En iyisi orayı renklendireyim.
Şu cümleyi konuda bulup tekrardan eklemenizi yapar mısınız?
Not: Aynı fonksiyonda 2 tane oluyor. 2 sinide göstereceğim şekilde düzenleyin.

Bütün kodları paylaştığınız kodlar benimkiyle uyuşuyor yalnız neden böyle bir mesaj attınız?
şöyle bişey buldum deniyorum şu an

char_battle.cpp
itemmanager.cpp
input_main.cpp
exchange.cpp
char_item.cpp
cmd_general.cpp
cube.cpp

Bu dosyaların içinde bulunan inventorysize = 180 kodunu bularak (bende 4 envanter olduğu için 180 kodu bulunmakta sizin filesinizde kaç envanter varsa ona göre slot sayısını değiştirin)

[Başka srclerde inventorysize kodu yerine INVENTORY_MAX_NUM adında da geçebilir.]

Ekleme yaparken sırayla acele etmeden, kodları anlayarak ekleme yapın. Arada hangi kodun ne işe yaradığını açıkladım. Konuda bulunan ek dosyayı indirerek daha rahat edersiniz. Onda direk kendi dosyalarında olduğu için python kısmında da hata yapma olasılığınız azalır. :)

Build işlemi bittikten sonra son durumu açıklayabilirseniz sevinirim. Eğer sorun çözülürse sizden de bir resim bekliyorum. :)
Resmi foruma yükleyin ama :)
 
O attığım mesaj internette denk geldi ama baktım gereksizmiş. Dosyaları açınca farkettim ama kalablık etmesin diye sildim. Sonradan gereksiz olduğu için.
 
O attığım mesaj internette denk geldi ama baktım gereksizmiş. Dosyaları açınca farkettim ama kalablık etmesin diye sildim. Sonradan gereksiz olduğu için.
Sorun yok dostum. :) İstediğin şekilde yardım isteyebilirsin. Elimden geldiğince yardımcı olurum. Sadece tek bir isteğim mesajlarınızda, konularınızda içeriğe önem vermeniz, yazım kurallarına önem vermeniz. Sitemizin kuralı bu şekiledir.

Kod editrünü sormuşsunuz buyurun;
Kod editörü.jpg


Kod kısmına tıklayınca gelen pencereye kodları yazabilirsin.
 
İstersen attığım gereksiz mesajları temizle. Konuda boş yer kaplamasın. Yine de sen bilirsin. Sorunum çözüldü nasıl olsa eyw.

Kod editörü yeri için sağol. Bidaha ki sefere her türlü uygun yazarım.
 
En son bir moderatör tarafından düzenlenmiş:
İstersen attığım gereksiz mesajları temizle. Konuda boş yer kaplamasın. Yine de sen bilirsin. Sorunum çözüldü nasıl olsa eyw.
Dursun sorun değil. :) Bana göre gereksiz değil.
Sorununuzun çözülmesine sevindim.
Sizden bir şey rica edebilir miyim? Oyun içinden ekran görüntüsü çekip konuya mesaj olarak atabilir misiniz?

Kod editörü yeri için sağol. Bidaha ki sefere her türlü uygun yazarım.
Sorun değil. :) Yaşanan sorun mesajları bilse olsa ileride bu sistemi eklemeye çalışanlar sorunlarını yaşadıklarında mesajları okuyacaktır.
Sitemizdeki metin2 yardım kısmındaki konulara bakacak olursanız ne kadar çok kişi tarafından ziyaret edildiğini görebilirsiniz.

Bu konudaki anlatımı bizzat kendim yaptım. Bu yüzden de kendim her şeyini denedim. Ticaret bugunu, yerden item alma bugunu, taşma sorununu filan. Hiçbiri yok. Sorunsuz bir şekilde kullanabilirsiniz. Lakin bilinmeyen bir sorun çıkarsa onu da belirtirseniz düzeltirim.

Projenizde başarılar dilerim. :)
 
Son düzenleme:
Güle güle kullanın. :) Siz genede dediğim gibi bugları kontrol edin. Kanıt içinde teşekkür ederim. Sistemi ekleyenlerin kanıt atması daha sağlıklı oluyor.
 
Kodları eksiksik bir şekilde düzenledim fakat şöyle bir bug algılandı yada hata ; ( ve o son iki yere ise envanter dolu hatası aldım)
4 envanter sorunu.jpg
 
En son bir moderatör tarafından düzenlenmiş:
Kodları eksiksik bir şekilde düzenledim fakat şöyle bir bug algılandı yada hata ; ( ve o son iki yere ise envanter dolu hatası aldım)
1469 eklentisini görüntüle
Kaynak kodu dosyalarını düzenlerken atladığınız yerler var sanırsam. Bazı kodları iki kez değiştirmek gerekiyor. Lütfen en baştan tek tek anlatıma göre kodlarınızı kontrol ediniz.
Ek olarak resimi foruma yükledim. Harici resim servisleri sitemizde yasak. ;)
 
Kaynak kodu dosyalarını düzenlerken atladığınız yerler var sanırsam. Bazı kodları iki kez değiştirmek gerekiyor. Lütfen en baştan tek tek anlatıma göre kodlarınızı kontrol ediniz.
Ek olarak resimi foruma yükledim. Harici resim servisleri sitemizde yasak. ;)

Konuyu düzenlemeyi unutmuşum üzgünüm :)

Sistemi eklemeyi çok harika bir şekilde anlatmışsınız gerçekten ve sorunsuz bir şekilde ekledim client source build etmiştim ama o exe ile girmeyi unutmuşum sadece, anlatımınız gerçekten çok güzel ve kanıt olarak şöyle atayım;
Dipnot olarak arkadaşlar romen rakamları yerine 1.2.3.4 diye kendim yazdım normalde sistemde romen rakamlarıyla ekli idi :)

mmotut.png
 
En son bir moderatör tarafından düzenlenmiş:
Geri
Üst