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 96

onur2898

Üye
Üye
Mesaj
92
Çözümler
3
Beğeni
39
Puan
444
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."));
}
 
Geri
Üst