Yardım Metinlerden taş düşmesi hk

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

proflesor06

Çaylak Üye
Üye
Mesaj
3
Beğeni
0
Puan
18
Ticaret Puanı
0
Benim kurduğum fileste taş düşmüyor metinlerden char.cpp içeriği şu şekilde;
char.cpp:
Genişlet Daralt Kopyala
#if defined(ENABLE_WOLFMAN_CHARACTER) && defined(USE_WOLFMAN_STONES)
        28012,
#endif
        28030,
        28031,
        28032,
        28033,
        28034,
        28035,
        28036,
        28037,
        28038,
        28039,
        28040,
        28041,
        28042,
        28043,
#if defined(ENABLE_MAGIC_REDUCTION_SYSTEM) && defined(USE_MAGIC_REDUCTION_STONES)
        28044,
        28045,
#endif
    };
    DWORD stone_num = GetRaceNum();
    int idx = std::lower_bound(aStoneDrop, aStoneDrop + STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
    if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
    {
        m_dwDropMetinStone = 1;
    }
    else
    {
        const SStoneDropInfo& info = aStoneDrop[idx];
        m_bDropMetinStonePct = info.iDropPct;
        {
            m_dwDropMetinStone = c_adwMetin[number(0, sizeof(c_adwMetin) / sizeof(DWORD) - 1)];
            int iGradePct = number(1, 100);
            for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel++)
            {
                int iLevelGradePortion = info.iLevelPct[iStoneLevel];
                if (iGradePct <= iLevelGradePortion)
                {
                    break;
                }
                else
                {
                    iGradePct -= iLevelGradePortion;
                    m_dwDropMetinStone += 100;
                }
            }
        }
    }
}

constanets.cpp içeriği
constanets.cpp içeriği:
Genişlet Daralt Kopyala
constanets.cppconst SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    60,    {30,    30,    30,    9,    1}    },
    {8006,    60,    {28,    29,    31,    11,    1}    },
    {8007,    60,    {24,    29,    32,    13,    2}    },
    {8008,    60,    {22,    28,    33,    15,    2}    },
    {8009,    60,    {21,    27,    33,    17,    2}    },
    {8010,    60,    {18,    26,    34,    20,    2}    },
    {8011,    60,    {14,    26,    35,    22,    3}    },
    {8012,    60,    {10,    26,    37,    24,    3}    },
    {8013,    60,    {2,    26,    40,    29,    3}    },
    {8014,    60,    {0,    26,    41,    30,    3}    },
};


metinlerden hiç bir zaman taş atmıyor acaba nerede yanlışlık var inceleyebilir misiniz?
 
metinlerden hiç bir zaman taş atmıyor acaba nerede yanlışlık var inceleyebilir misiniz?
Service.h / CommonDefines.h:
Genişlet Daralt Kopyala
// Arat varsa yorum satırı haline getir:
#define ENABLE_NEWSTUFF

char.cpp:
Genişlet Daralt Kopyala
// Arat:
void CHARACTER::SetProto (const CMob * pkMob)

// İçinde var mı diye bak:

    if (IsStone())
    {
        DetermineDropMetinStone();
    }
 
Service.h / CommonDefines.h: >> arattım ve 2'sinde de ekli değil ekleyeyim mi?

char.cpp: ilgili alan şu şekilde

Kod:
Genişlet Daralt Kopyala
oid CHARACTER::SetProto(const CMob* pkMob)
{
    if (m_pkMobInst)
        M2_DELETE(m_pkMobInst);

    m_pkMobData = pkMob;
    m_pkMobInst = M2_NEW CMobInstance;

    m_bPKMode = PK_MODE_FREE;

    const TMobTable* t = &m_pkMobData->m_table;

    m_bCharType = t->bType;

    SetLevel(t->bLevel);
    SetEmpire(t->bEmpire);

    SetExp(t->dwExp);
    SetRealPoint(POINT_ST, t->bStr);
    SetRealPoint(POINT_DX, t->bDex);
    SetRealPoint(POINT_HT, t->bCon);
    SetRealPoint(POINT_IQ, t->bInt);

    ComputePoints();

    SetHP(GetMaxHP());
    SetSP(GetMaxSP());


( içerisinde yok )
 
char.cpp: ilgili alan şu şekilde

( içerisinde yok )
eklemeyi yapın

char.cpp:
Genişlet Daralt Kopyala
// Arat:
void CHARACTER::SetProto (const CMob * pkMob)

// Ekle:
    if (IsStone())
    {
        DetermineDropMetinStone();
    }

// Arat:
void CHARACTER::SetQuestFlag (const std::string& flag, int value)
{
    quest::CQuestManager& q = quest::CQuestManager::instance();
    quest::PC* pPC = q.GetPC (GetPlayerID());
    pPC->SetFlag (flag, value);
}

// Ekle: (varsa ekleme)
void CHARACTER::DetermineDropMetinStone()
{
    static const DWORD c_adwMetin[] =
    {
        #if defined(ENABLE_WOLFMAN_CHARACTER) && defined(USE_WOLFMAN_STONES)
        28012,
        #endif
        28030,
        28031,
        28032,
        28033,
        28034,
        28035,
        28036,
        28037,
        28038,
        28039,
        28040,
        28041,
        28042,
        28043,
        #if defined(ENABLE_MAGIC_REDUCTION_SYSTEM) && defined(USE_MAGIC_REDUCTION_STONES)
        28044,
        28045,
        #endif
    };
    DWORD stone_num = GetRaceNum();
    int idx = std::lower_bound (aStoneDrop, aStoneDrop + STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
    if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
    {
        m_dwDropMetinStone = 0;
    }
    else
    {
        const SStoneDropInfo & info = aStoneDrop[idx];
        m_bDropMetinStonePct = info.iDropPct;
        {
            m_dwDropMetinStone = c_adwMetin[number (0, sizeof (c_adwMetin) / sizeof (DWORD) - 1)];
            int iGradePct = number (1, 100);
            for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel ++)
            {
                int iLevelGradePortion = info.iLevelPct[iStoneLevel];
                if (iGradePct <= iLevelGradePortion)
                {
                    break;
                }
                else
                {
                    iGradePct -= iLevelGradePortion;
                    m_dwDropMetinStone += 100;
                }
            }
        }
    }
}
 
Geri
Üst