Yardım Simya Efsun Değiştirme Sorunu

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

mellon133

Üye
Üye
Mesaj
24
Çözümler
1
Beğeni
2
Puan
408
Ticaret Puanı
0
mrblar, simya efsunu değiştirirken istenen ejderha alevi mesela 20 ise ben daha az koyduğumda ve uygula dediğim anda simya bonusları siliniyor ve simya penceresine gidiyor. ben ise ejderha alevi sayısını kontrol ettirip istenen ejderha alevi sayısı düşük ise uygula dediğimde sistem herhangi bir işlem yapmadan hata yazısı vermesini istiyorum. aşağıya kodu ekledim nasıl bir kod eklenirse böyle bir düzen sağlanır. Kodun en altındaki "else ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Error2")) " yazısı hata kodlaması bunu verdiğinde gerçekleşiyor. teşekkürler iyi forumlar.

cmd_general.cpp:
#ifdef ENABLE_DS_CHANGE_ATTR
ACMD(do_ds_change_attr)
{
    char arg1[256];
    one_argument(argument, arg1, sizeof(arg1));

    if (!*arg1)
        return;

    if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() || ch->IsCombOpen() || ch->IsOpenMailBox() || ch->isSashOpened(true) || ch->isSashOpened(false))
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´Ù¸¥ °Å·¡Ã¢ÀÌ ¿¸°»óÅ¿¡¼´Â »óÁ¡°Å·¡¸¦ ÇÒ¼ö °¡ ¾ø½À´Ï´Ù."));
        return;
    }

#ifdef ENABLE_ACCOUNT_LOCK
    if (ch->GetAccountLockSize() == 1)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "Hesap kilitliyken bu işlemi yapamazsınız.");
        return;
    }
#endif

    DWORD dwPos = 0;
    str_to_number(dwPos, arg1);

    const BYTE needFireCountList[] = { 1, 3, 5, 10, 20 };
    BYTE bNeedFire = -1;

    if (dwPos < 0 || dwPos >= DRAGON_SOUL_INVENTORY_MAX_NUM)
        return;

    LPITEM item = ch->GetItem(TItemPos(DRAGON_SOUL_INVENTORY, dwPos));

    if (!item || item->IsExchanging() || item->IsEquipped())
        return;

    if (item->IsDragonSoul()) {
        bNeedFire = needFireCountList[(item->GetVnum() / 100) % 10];
        if (bNeedFire != -1) {
            if (DSManager::instance().IsActiveDragonSoul(item) == true) {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Error1"));
                return;
            }

            for (BYTE i = 0; i < 6; i++) { item->SetForceAttribute(i, 0, 0); }

            if (ch->CountSpecifyItem(100700) >= bNeedFire) {
                bool ret = DSManager::instance().PutAttributes(item);
                if (ret == true) {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Success"));
                    ch->RemoveSpecifyItem(100700, bNeedFire);
                    ch->ChatPacket(CHAT_TYPE_COMMAND, "DS_ChangeAttr_Success");
                }
                else {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Failed"));
                    ch->ChatPacket(CHAT_TYPE_COMMAND, "DS_ChangeAttr_Failed");
                }
            }
            else ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DS_ChangeAttr_Error2"));
        }
    }
}
#endif
 
Son düzenleme:
Geri
Üst