Yardım item bölme sistemi yükseltme envanterinde olan sorun

  • Konuyu açan Konuyu açan legendxxx
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 74
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

legendxxx

Üye
Üye
Mesaj
99
Çözümler
4
Beğeni
19
Puan
434
Ticaret Puanı
0
Arkadaşlar bu sorunu çözmeme yardım edebilecek varmı diğer envanterlerde olmuyor sadece yükseltme envanterinde oluyor
 
4 Envanter bazı fixlemeleri vardı uyguladınızmı veya itemleri butun envantere surukluyerek soruna baktınız yada envanteri itemlerle doldurdunuzmu eger bu saydıgım hatalar mevcut degilse sistemde sorun olabilir diye dusunuyorum
 
4 Envanter bazı fixlemeleri vardı uyguladınızmı veya itemleri butun envantere surukluyerek soruna baktınız yada envanteri itemlerle doldurdunuzmu eger bu saydıgım hatalar mevcut degilse sistemde sorun olabilir diye dusunuyorum
sistemde bir sorun yok envanter marty sama filesin envanteri diğer ek envnaterlerinde bir sorun yok sadece yükseltme envanterinde var kodlar aynı ama digerleriyle anlayamadım
 
İnventorywindows.py den tanımlama yaptınizmı hocam sistemin yabancısıyım cunku bu tur konuların ya sistemler yada locale kısımlarında uyarlama yapılması lazım kontrol edebilirmisiniz ufak kapanıs parantezi gibi islemlerde bu sorunlara yol acabiliyor herhangi bir sysr varsa benimle paylasırmısınız debug sysr realse sysr
 
Yıllar önce kullanmıştım Sanii envanterini, sorun şu olabilir split yaparken MoveItem fonksiyonu ile envantere dağıtıyor yer kalmadığı için sanki normal envantere dönmüş gibi yerinde sayıyor olabilir mi?
 
indexlerdeki IsEmptySpecialItemGrid kısımlarını tekrar IsEmptyItemGrid bu şekilde değiştir birdaha dene.
çünkü IsEmptyItemGrid içerisinde bu kodu döndürüyor.
 
charitem:
Genişlet Daralt Kopyala
int CHARACTER::GetEmptyUpgradeInventoryFromIndex(WORD index, BYTE itemSize) const //SPLIT ITEMS
{
    for (WORD i = SPECIAL_INVENTORY_MATERIAL_START; i < SPECIAL_INVENTORY_MATERIAL_END; ++i)
        if (IsEmptyItemGrid(TItemPos (INVENTORY, i), itemSize))
            return i;       
    return -1;
}
bu şekilde denedim hocam gene son 30 boşluga dolmuyor
indexlerdeki IsEmptySpecialItemGrid kısımlarını tekrar IsEmptyItemGrid bu şekilde değiştir birdaha dene.
çünkü IsEmptyItemGrid içerisinde bu kodu döndürüyor.

cmd_general:
Genişlet Daralt Kopyala
ACMD(do_split_items) //SPLIT ITEMS
{
    if (!ch)
        return;
    
    const char *line;
    char arg1[256], arg2[256], arg3[256];
    line = two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
    one_argument(line, arg3, sizeof(arg3));
    
    if (!*arg1 || !*arg2 || !*arg3)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Wrong command use.");
        return;
    }
    
    if (!ch->CanWarp())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Close all windows and wait a few seconds, before using this."));
        return;
    }
    
    WORD count = 0; //zamien se to na bajta jak nie masz zwiekszonych slotów.
    WORD cell = 0;
    WORD destCell = 0;
    
    str_to_number(cell, arg1);
    str_to_number(count, arg2);
    str_to_number(destCell, arg3);
    
    LPITEM item = ch->GetInventoryItem(cell);
    if (item != NULL)
    {
        WORD itemCount = item->GetCount(); //to tez se kurwa zamien na byte'a jak nie masz slotów zwiekszonych.
        while (itemCount > 0)
        {
            if (count > itemCount)
                count = itemCount;
            

            int iEmptyPosition;

            if (destCell >= SPECIAL_INVENTORY_SKILLBOOK_START && destCell < SPECIAL_INVENTORY_SKILLBOOK_END)
            {
                iEmptyPosition = ch->GetEmptyBookInventoryFromIndex(destCell, item->GetSize());                 
            }
            else if (destCell >= SPECIAL_INVENTORY_MATERIAL_START && destCell < SPECIAL_INVENTORY_MATERIAL_END)
            {
                iEmptyPosition = ch->GetEmptyUpgradeInventoryFromIndex(destCell, item->GetSize());                 
            }   
            else {
                iEmptyPosition = ch->GetEmptyInventoryFromIndex(destCell, item->GetSize());
            }
            
            //int iEmptyPosition = ch->GetEmptyInventoryFromIndex(destCell, item->GetSize());

            
            if (iEmptyPosition == -1)
                break;
            
            itemCount -= count;
            ch->MoveItem(TItemPos(INVENTORY, cell), TItemPos(INVENTORY, iEmptyPosition), count);
        }
    }
}
 
char.h içindeki envanter ile alakalı …_MAX yazan veri tipi var o hala byte mi?
 
Geri
Üst