Binekden İndiğimizde itemi çıkarsın. C++

  • Konuyu açan Konuyu açan onur2898
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 0
  • Gösterim Gösterim 265

onur2898

Üye
Üye
Mesaj
100
Çözümler
3
Beğeni
52
Puan
714
Ticaret Puanı
0
Binekden indiğinizde itemin çıkarılmasını istiyorsanız

cmd_genaral.cpp de


ACMD (do_ride) içinde arat:
Genişlet Daralt Kopyala
        if (ch->IsHorseRiding())
        {
            dev_log (LOG_DEB0, "[DO_RIDE] stop riding");
            ch->StopRiding();
            return;
        }


Değiştir:
Genişlet Daralt Kopyala
        if (ch->IsHorseRiding())
        {
            dev_log (LOG_DEB0, "[DO_RIDE] stop riding");
            ch->StopRiding();


            LPITEM wear_mount = ch->GetWear(WEAR_COSTUME_MOUNT);


            if (wear_mount)
            {
                dev_log(LOG_DEB0, "[DO_RIDE] Unequip WEAR_COSTUME_MOUNT");
                ch->UnequipItem(wear_mount);
            }

            return;
        }


Eğerki binek itemi envanterdeyken ctrl h ile binek itemini giymek istiyorsanız.
Çoğu kişide bu fonksiyon vardır. Eğer yoksa ona göre işlem yapınız.

cmd_general.cpp de

ACMD (do_ride) içinde bul:
Genişlet Daralt Kopyala
        if (ch->GetHorse() != NULL)
        {
            dev_log (LOG_DEB0, "[DO_RIDE] start riding");
            ch->StartRiding();
            return;
        }


bul altına ekle

altına ekle:
Genişlet Daralt Kopyala
        for (BYTE i = 0; i < INVENTORY_MAX_NUM; ++i)
        {
            LPITEM item = ch->GetInventoryItem (i);
            if (NULL == item)
            {
                continue;
            }

            // À¯´ÏÅ© Å»°Í ¾ÆÀÌÅÛ
            if (item->IsRideItem())
            {
                if (NULL == ch->GetWear (WEAR_UNIQUE1) || NULL == ch->GetWear (WEAR_UNIQUE2) || NULL == ch->GetWear (WEAR_COSTUME_MOUNT))
                {
                    dev_log (LOG_DEB0, "[DO_RIDE] USE UNIQUE ITEM");
                    //ch->EquipItem(item);
                    ch->UseItem (TItemPos (INVENTORY, i));
                    return;
                }
            }


Yapamayan arkadaşlar olursa diye kendi do_ride mi bırakıyorum kendinize göre uyarlar veya değiştirirsiniz


C++:
Genişlet Daralt Kopyala
ACMD (do_ride)
{
    dev_log (LOG_DEB0, "[DO_RIDE] start");
    if (ch->IsDead() || ch->IsStun())
    {
        return;
    }

    {
        if (ch->IsHorseRiding())
        {
            dev_log (LOG_DEB0, "[DO_RIDE] stop riding");
            ch->StopRiding();


            LPITEM wear_mount = ch->GetWear(WEAR_COSTUME_MOUNT);


            if (wear_mount)
            {
                dev_log(LOG_DEB0, "[DO_RIDE] Unequip WEAR_COSTUME_MOUNT");
                ch->UnequipItem(wear_mount);
            }

            return;
        }

        if (ch->GetMountVnum())
        {
            dev_log (LOG_DEB0, "[DO_RIDE] unmount");
            do_unmount (ch, NULL, 0, 0);
            return;
        }
    }


    {
        if (ch->GetHorse() != NULL)
        {
            dev_log (LOG_DEB0, "[DO_RIDE] start riding");
            ch->StartRiding();
            return;
        }

        for (BYTE i = 0; i < INVENTORY_MAX_NUM; ++i)
        {
            LPITEM item = ch->GetInventoryItem (i);
            if (NULL == item)
            {
                continue;
            }

            // À¯´ÏÅ© Å»°Í ¾ÆÀÌÅÛ
            if (item->IsRideItem())
            {
                if (NULL == ch->GetWear (WEAR_UNIQUE1) || NULL == ch->GetWear (WEAR_UNIQUE2) || NULL == ch->GetWear (WEAR_COSTUME_MOUNT))
                {
                    dev_log (LOG_DEB0, "[DO_RIDE] USE UNIQUE ITEM");
                    //ch->EquipItem(item);
                    ch->UseItem (TItemPos (INVENTORY, i));
                    return;
                }
            }

            // ÀÏ¹İ Å»°Í ¾ÆÀÌÅÛ
            // TODO : Å»°Í¿ë SubType Ãß°¡
            switch (item->GetVnum())
            {
                case 71114:    // Àú½ÅÀÌ¿ë±Ç
                case 71116:    // »ê°ß½ÅÀÌ¿ë±Ç
                case 71118:    // ÅõÁö¹üÀÌ¿ë±Ç
                case 71120:    // »çÀÚ¿ÕÀÌ¿ë±Ç
                    dev_log (LOG_DEB0, "[DO_RIDE] USE QUEST ITEM");
                    ch->UseItem (TItemPos (INVENTORY, i));
                    return;
            }

            // GF mantis #113524, 52001~52090 ¹ø Å»°Í
            if ((item->GetVnum() > 52000) && (item->GetVnum() < 52091))
            {
                dev_log (LOG_DEB0, "[DO_RIDE] USE QUEST ITEM");
                ch->UseItem (TItemPos (INVENTORY, i));
                return;
            }
        }
    }



    ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("Önce Bineğini çıkar."));
}
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst