Yardım Normal At ile binekler ox haritasına gidince yok olmasını istiyorum <3

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

SYTTTY

Üye
Üye
Mesaj
12
Beğeni
1
Puan
40
Ticaret Puanı
0
at resmi asker at gibi atlar ve Beyaz aslan gibi atlar ox haritasına girdiğinde o binek silinsin at cagrıldı desin ama at gözükmesin elinde olan paylaşabilirse cok sevinirim <3
 
C++:
Genişlet Daralt Kopyala
Char_item.cpp

Arat ; bool CHARACTER::UseItem
Altında tekrar arat ; if (false == FN_check_item_sex(this, item))

Altına ekle ;

    if (item->GetType() == ITEM_COSTUME && item->GetSubType() == COSTUME_MOUNT)
    {
        if (false == WAR_MOUNT_USE_BLOCK_MAP(GetMapIndex()) || (GetMapIndex() >= 1100000 && GetMapIndex() <= 1120000) || GetMapIndex() == 113)
        {
            ChatPacket(CHAT_TYPE_INFO, "Bu bölgede binek çağıramazsın.");
            return false;
        }
    }
 
O olmazsa bunu denersin:
Genişlet Daralt Kopyala
Char_item.cpp

bool IS_BOTARYABLE_ZONE(int nMapIndex) // arat

//altına ekle
bool WAR_MOUNT_USE_BLOCK_MAP(int map_index)
{
    if(CWarMapManager::instance().IsWarMap(map_index))
        return true;

    switch (map_index)
    {
        case 113: // OX
        case 111: // lonca
        case 110: // lonca
        case 103: // ronark
        case 28: // duello arenası
            return false;
    }

    return true;
}

//arat
    if (false == FN_check_item_sex(this, item))
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼ºº°ÀÌ ¸ÂÁö¾Ê¾Æ ÀÌ ¾ÆÀÌÅÛÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù."));
        return false;
    }

//altına düzelt kendine göre ekle /**binektype bineksubtype kısımlarını*/
    if (item->GetType() == binektype && item->GetSubType() == bineksubtype)
    {
        if (false == WAR_MOUNT_USE_BLOCK_MAP(GetMapIndex()) || GetMapIndex() >= 1100000 && GetMapIndex() <= 1120000)
        {
            ChatPacket(CHAT_TYPE_INFO, "Bu bölgede kullanamazsın. ");
            return false;
        }
    }


input_loginde void CInputLogin::Entergame(

böyle bir fonksiyon var içinde

else if (ch->GetMapIndex() == 113) //arat
{
    //altına ekle
    LPITEM item3 = ch->GetWear(WEAR_COSTUME_MOUNT);
    if(ch->IsRidingMount())
    {
        ch->UnequipItem(item3);
    }
 
Ben bineklerimi at kodlarıyla kullandığım için sanada bunu attım kendin uyarlarsın diye ama sorun değil aşağıdaki kod işini çözer . İnput loginde entergame içinde müsait bir yere eklersin .


C++:
Genişlet Daralt Kopyala
if (ch->GetMapIndex() == 113 && ch->IsHorseRiding())
{
    ch->StopRiding();
    ch->HorseSummon(false);
}



Eğer buda işini çözmezse input loginde event başladığı zaman kontrol sağlayan bir fonksiyon var orayada şu şekilde yazabilirsin .


C++:
Genişlet Daralt Kopyala
    else if (ch->GetMapIndex() == 113)
    {
        if (COXEventManager::instance().Enter(ch) == false)
        {
            if (ch->GetGMLevel() == GM_PLAYER)
                ch->WarpSet(EMPIRE_START_X(ch->GetEmpire()), EMPIRE_START_Y(ch->GetEmpire()));
        }
    }
   
   
bunun altına şunu ekleyebilirsin

    else if (ch->IsHorseRiding())
    {
        ch->StopRiding();
        ch->HorseSummon(false);
    }


eklenmiş hali ;

else if (ch->GetMapIndex() == 113)
{
    if (!COXEventManager::instance().Enter(ch))
    {
        if (ch->GetGMLevel() == GM_PLAYER)
            ch->WarpSet(EMPIRE_START_X(ch->GetEmpire()), EMPIRE_START_Y(ch->GetEmpire()));
    }
    else if (ch->IsHorseRiding())
    {
        ch->StopRiding();
        ch->HorseSummon(false);
    }
}
 
Geri
Üst