Skill Set Bonus Sistemi

lmaohw

Bir kalp bir kere sever.
Gold Üye
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
686
Çözümler
36
Beğeni
733
Puan
919
Ticaret Puanı
0
Selamlar forumda Skill Set Bonusu ile ilgili bir konu göremedim sadece forumdada değil internette bulamadım bu yüzden forumdaki üyelerimizin yararlanabilmesi adına buraya açıp paylaşmayı düşündüm. Tabi bu şuanda p üzeri set bonus sistemi p için değil. Sage ve Legendary içindir.


Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
 
En son bir moderatör tarafından düzenlenmiş:
Elinize sağlık hocam skill tooltip inde mi yazdırıyor bu sistemi kullanan 55 120ler verdiği özellikleri bir ufak da pyde bilgi satırı ekledik mi tamamdır
 
Elinize sağlık hocam skill tooltip inde mi yazdırıyor bu sistemi kullanan 55 120ler verdiği özellikleri bir ufak da pyde bilgi satırı ekledik mi tamamdır
Hocam ben skillde göstermek yerine sol üste premium affect olarak ekledim bunu yapmak istersenizde ;

root içerisinde uiaffectshower.py açın ;
//bul
Python:
Genişlet Daralt Kopyala
            MALL_DESC_IDX_START+player.POINT_PC_BANG_DROP_BONUS: (localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/Item_Bonus_p_on.sub",),

//altına ekle

Python:
Genişlet Daralt Kopyala
            777 : (localeInfo.TOOLTIP_SAGE_SET_BONUS, "d:/ymir work/ui/skill/common/affect/marriage_fast.sub",),

locale içerisine gir ve locale_game.txt dosyasına ekle ;

Kod:
Genişlet Daralt Kopyala
TOOLTIP_SAGE_SET_BONUS    Sage Set Bonus\n\nCanavarlara karşı güçlü +%4000\nMetin taşlarına karşı güçlü +%4000\nPatronlara karşı güçlü +%4000\nGüç / +%500\nOrtalama Zarar %20    SNA
 
Selamlar forumda Skill Set Bonusu ile ilgili bir konu göremedim sadece forumdada değil internette bulamadım bu yüzden forumdaki üyelerimizin yararlanabilmesi adına buraya açıp paylaşmayı düşündüm. Tabi bu şuanda p üzeri set bonus sistemi p için değil. Sage ve Legendary içindir.


Alıntılarda özel içerikler gözükmez.
Allah razı olsun, bugün tam da bunu arıyordum. Ben de istek olarak açmayı düşünüyordum ama sen konuyu açmışsın. Teşekkürler.
 
aynen nasıl yapabliriz
Cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_SKILL_SET_BONUS

constexpr BYTE SKILL_COUNT = 6;
static const DWORD SkillList[JOB_MAX_NUM][SKILL_GROUP_MAX_NUM][SKILL_COUNT] =
{
    { {    1,    2,    3,    4,    5,    6    }, {    16,    17,    18,    19,    20,    21    } }, // savasci bedensel - zihinsel
    { {    31,    32,    33,    34,    35,    36    }, {    46,    47,    48,    49,    50,    51    } }, // ninja yakin - uzak
    { {    61,    62,    63,    64,    65,    66    }, {    76,    77,    78,    79,    80,    81    } }, // sura buyulu - kara buyu
    { {    91,    92,    93,    94,    95,    96    }, {    106,107,108,109,110,111    } }, // saman ejderha - iyilestirme
#ifdef ENABLE_WOLFMAN_CHARACTER
    { {    170,171,172,173,174,175    }, {    0,    0,    0,    0,    0,    0    } }, // kurt
#endif
};

enum class ESkillSetState {
    TYPE_FAIL,
    TYPE_LEGENDARY,
};

static const uint32_t skillSetBonusTable[1][4][2] =
{
    {// legendary bonuslar
        {  POINT_ATTBONUS_MONSTER, 3000 },
        {  POINT_ATTBONUS_STONE, 3000 },
        {  POINT_ATTBONUS_BOSS, 3000 },
        {  POINT_ST, 500 },
    }
};

constexpr uint8_t SAGE_LEVEL = 50; // sage_level skill leveli (default 50)
constexpr uint8_t LEGENDARY_LEVEL = 60; // legendary skill leveli (default 60)

void CHARACTER::CheckSkillBonus() {
    const auto& tempList = SkillList[GetJob()][GetSkillGroup() - 1];
    const auto& giveAffects = [&](const auto& arr, const auto aff) { // -> affect lambd
        if (FindAffect(aff)) { return; }
        const auto arrSize = sizeof(arr) / sizeof(arr[0]);
        for (unsigned i(0); i < arrSize; ++i) {
            const auto bonus = arr[i][0];
            const auto val = arr[i][1];
            if (val == 0) { continue; }
            AddAffect(aff, bonus, val, 0, INFINITE_AFFECT_DURATION, 0, true, true);
            if (IsGM()) { ChatPacket(1, "[GM_INFO] SkillSetBonus adding point : %u, val : %u", bonus, val); }
        }
    };

    auto state = ESkillSetState::TYPE_LEGENDARY;

    // sage begin
    for (const auto skillVnum : tempList)
    {
        //if (skillVnum == 0) { continue; }
        if (GetSkillLevel(skillVnum) < LEGENDARY_LEVEL) {
            state = ESkillSetState::TYPE_FAIL;
            break;
        }
    }

    if (state == ESkillSetState::TYPE_FAIL) {
        if (FindAffect(AFFECT_SAGE_SKILL_SET_BONUS)) { RemoveAffect(AFFECT_SAGE_SKILL_SET_BONUS); return; }
    }
    else {
        auto& setBonusList = skillSetBonusTable[static_cast<BYTE>(ESkillSetState::TYPE_LEGENDARY) - 1];
        giveAffects(setBonusList, AFFECT_SAGE_SKILL_SET_BONUS);
    }

    // sage end
/*
    // legendary begin
    state = ESkillSetState::TYPE_LEGENDARY;
    for (const auto skillVnum : tempList)
    { // check sage
        if (skillVnum == 0) { continue; }
        if (GetSkillLevel(skillVnum) < LEGENDARY_LEVEL) {
            state = ESkillSetState::TYPE_FAIL;
            break;
        }
    }

    if (state == ESkillSetState::TYPE_FAIL) {
        if (FindAffect(AFFECT_LEG_SKILL_SET_BONUS)) { RemoveAffect(AFFECT_LEG_SKILL_SET_BONUS); }
    }
    else {
        auto& setBonusList = skillSetBonusTable[static_cast<BYTE>(ESkillSetState::TYPE_LEGENDARY) - 1];
        giveAffects(setBonusList, AFFECT_LEG_SKILL_SET_BONUS);
    }
    // legendary end
*/
}
#endif


Buradaki skill vunumlarını p skilin olması gerekiyor deneyip bakabilirsin hata alırsan buradan yardımcı oluruz
 
Geri
Üst