Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2]

Newbie Spellweaver
Joined
Aug 6, 2023
Messages
16
Reaction score
2
How can I make the dark background of the item and the zen transparent like the seaseon 8?

 
Newbie Spellweaver
Joined
Mar 26, 2024
Messages
8
Reaction score
5
Good
dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums

Just render some textured circular walls around the character before skydome.




I released GUI for Master Level Tree in attachments!

Arrows fixed:

View attachment 258957

Tutorial how to fix Master Skills
- Remove old skills from Your skillmanager / skill enum.
- Remove all references to the old skills in conditional statements (be cautious).
- Add new master skills in skill enum / skill manager.
MASTER_SKILL_ADD_ITEM_DURABILITY_RATE1 = 300,
MASTER_SKILL_ADD_DEFENSE_SUCCESS_RATE_PVP1 = 301,
MASTER_SKILL_ADD_MAX_SD1 = 302,
MASTER_SKILL_ADD_MP_RECOVERY_RATE1 = 303,
MASTER_SKILL_ADD_POISON_RESISTANCE1 = 304,
MASTER_SKILL_ADD_JEWELRY_DURABILITY_RATE1 = 305,
MASTER_SKILL_ADD_SD_RECOVERY_RATE1 = 306,
MASTER_SKILL_ADD_HP_RECOVERY_RATE1 = 307,
MASTER_SKILL_ADD_LIGHTNING_RESISTANCE1 = 308,
MASTER_SKILL_ADD_DEFENSE1 = 309,
MASTER_SKILL_ADD_BP_RECOVERY_RATE1 = 310,
MASTER_SKILL_ADD_ICE_RESISTANCE1 = 311,
MASTER_SKILL_ADD_GUARDIAN_DURABILITY_RATE1 = 312,
MASTER_SKILL_ADD_DEFENSE_SUCCESS_RATE1 = 313,
MASTER_SKILL_ADD_ARMOR_SET_BONUS1 = 315,
MASTER_SKILL_ADD_REFLECT_DAMAGE1 = 316,
MASTER_SKILL_ADD_ENERGY1 = 317,
MASTER_SKILL_ADD_VITALITY1 = 318,
MASTER_SKILL_ADD_DEXTERITY1 = 319,
MASTER_SKILL_ADD_STRENGTH1 = 320,
MASTER_SKILL_ADD_DK_WING_DEFENSE = 322,
MASTER_SKILL_ADD_DK_WING_DAMAGE = 324,
MASTER_SKILL_ADD_ATTACK_SUCCESS_RATE1 = 325,
MASTER_SKILL_ADD_CYCLONE_IMPROVED1 = 326, // OK
MASTER_SKILL_ADD_SLASH_IMPROVED = 327, // OK
MASTER_SKILL_ADD_FALLING_SLASH_IMPROVED = 328, // OK
MASTER_SKILL_ADD_LUNGE_IMPROVED = 329, // OK
MASTER_SKILL_ADD_TWISTING_SLASH_IMPROVED1 = 330, // OK
MASTER_SKILL_ADD_RAGEFUL_BLOW_IMPROVED = 331, // OK
MASTER_SKILL_ADD_TWISTING_SLASH_ENHANCED = 332, // OK
MASTER_SKILL_ADD_RAGEFUL_BLOW_ENHANCED = 333, // OK
MASTER_SKILL_ADD_MAX_HP1 = 334,
MASTER_SKILL_ADD_WEAPON_DAMAGE1 = 335,
MASTER_SKILL_ADD_DEATH_STAB_IMPROVED = 336, // OK
MASTER_SKILL_ADD_FROZEN_STAB_IMPROVED = 337, // OK
MASTER_SKILL_ADD_MAX_MP1 = 338,
MASTER_SKILL_ADD_DEATH_STAB_ENHANCED = 339, // OK
MASTER_SKILL_ADD_FROZEN_STAB_ENHANCED = 340, // OK
MASTER_SKILL_ADD_MAX_BP1 = 341,
MASTER_SKILL_ADD_DEATH_STAB_MASTERED = 342, // OK
MASTER_SKILL_ADD_FROZEN_STAB_MASTERED = 343, // OK
MASTER_SKILL_ADD_BLOOD_STORM = 344,
MASTER_SKILL_ADD_COMBO_DAMAGE = 345,
MASTER_SKILL_ADD_BLOOD_STORM_IMPROVED = 346,
MASTER_SKILL_ADD_ATTACK_SUCCESS_RATE_PVP1 = 347,
MASTER_SKILL_ADD_TWO_HAND_SWORD_DAMAGE = 348,
MASTER_SKILL_ADD_ONE_HAND_SWORD_DAMAGE = 349,
MASTER_SKILL_ADD_MACE_DAMAGE = 350,
MASTER_SKILL_ADD_SPEAR_DAMAGE = 351,
MASTER_SKILL_ADD_TWO_HAND_SWORD_MASTERY = 352,
MASTER_SKILL_ADD_ONE_HAND_SWORD_MASTERY = 353,
MASTER_SKILL_ADD_MACE_MASTERY = 354,
MASTER_SKILL_ADD_SPEAR_MASTERY = 355,
MASTER_SKILL_ADD_GREATER_LIFE_IMPROVED = 356, // OK
MASTER_SKILL_ADD_MP_CONSUMPTION_RATE1 = 357,
MASTER_SKILL_ADD_HUNT_SD1 = 358,
MASTER_SKILL_ADD_HUNT_HP1 = 359,
MASTER_SKILL_ADD_GREATER_LIFE_ENHANCED = 360, // OK
MASTER_SKILL_ADD_MIN_PHYSI_DAMAGE1 = 361,
MASTER_SKILL_ADD_HUNT_MP1 = 362,
MASTER_SKILL_ADD_GREATER_LIFE_MASTERED = 363, // OK
MASTER_SKILL_ADD_MAX_PHYSI_DAMAGE1 = 364,
MASTER_SKILL_ADD_CRITICAL_DAMAGE_RATE1 = 366,
MASTER_SKILL_ADD_RESTORE_MP_RATE1 = 367,
MASTER_SKILL_ADD_RESTORE_HP_RATE1 = 368,
MASTER_SKILL_ADD_EXCELLENT_DAMAGE_RATE1 = 369,
MASTER_SKILL_ADD_DOUBLE_DAMAGE_RATE1 = 370,
MASTER_SKILL_ADD_IGNORE_DEFENSE_RATE1 = 371,
MASTER_SKILL_ADD_RESTORE_SD_RATE1 = 372,
MASTER_SKILL_ADD_DW_WING_DEFENSE = 375,
MASTER_SKILL_ADD_DW_WING_DAMAGE = 377,
MASTER_SKILL_ADD_FLAME_IMPROVED1 = 378, // OK
MASTER_SKILL_ADD_LIGHTNING_IMPROVED1 = 379, // OK
MASTER_SKILL_ADD_MAGIC_CIRCLE_IMPROVED = 380,
MASTER_SKILL_ADD_INFERNO_IMPROVED1 = 381,
MASTER_SKILL_ADD_BLAST_IMPROVED1 = 382,
MASTER_SKILL_ADD_MAGIC_CIRCLE_ENHANCED = 383,
MASTER_SKILL_ADD_POISON_IMPROVED = 384,
MASTER_SKILL_ADD_EVIL_SPIRIT_IMPROVED1 = 385,
MASTER_SKILL_ADD_MAGIC_DAMAGE1 = 386,
MASTER_SKILL_ADD_DECAY_IMPROVED = 387,
MASTER_SKILL_ADD_HELL_FIRE_IMPROVED = 388,
MASTER_SKILL_ADD_ICE_IMPROVED1 = 389,
MASTER_SKILL_ADD_METEORITE_IMPROVED = 390,
MASTER_SKILL_ADD_ICE_STORM_IMPROVED = 391,
MASTER_SKILL_ADD_NOVA_IMPROVED = 392,
MASTER_SKILL_ADD_ICE_STORM_ENHANCED = 393,
MASTER_SKILL_ADD_METEORITE_ENHANCED = 394,
MASTER_SKILL_ADD_NOVA_START_IMPROVED = 395,
MASTER_SKILL_ADD_ONE_HAND_STAFF_DAMAGE = 397,
MASTER_SKILL_ADD_TWO_HAND_STAFF_DAMAGE = 398,
MASTER_SKILL_ADD_SHIELD_DEFENSE1 = 399,
MASTER_SKILL_ADD_ONE_HAND_STAFF_MASTERY = 400,
MASTER_SKILL_ADD_TWO_HAND_STAFF_MASTERY = 401,
MASTER_SKILL_ADD_SHIELD_MASTERY1 = 402,
MASTER_SKILL_ADD_MANA_SHIELD_IMPROVED = 403,
MASTER_SKILL_ADD_MANA_SHIELD_ENHANCED = 404,
MASTER_SKILL_ADD_MIN_MAGIC_DAMAGE1 = 405,
MASTER_SKILL_ADD_MANA_SHIELD_MASTERED = 406,
MASTER_SKILL_ADD_MAX_MAGIC_DAMAGE1 = 407,
MASTER_SKILL_ADD_FE_WING_DEFENSE = 410,
MASTER_SKILL_ADD_FIVE_SHOT_IMPROVED = 411,
MASTER_SKILL_ADD_FE_WING_DAMAGE = 412,
MASTER_SKILL_ADD_HEAL_IMPROVED = 413,
MASTER_SKILL_ADD_TRIPLE_SHOT_IMPROVED = 414,
MASTER_SKILL_ADD_SUMMON_DEFENSE = 415,
MASTER_SKILL_ADD_PENETRATION_IMPROVED = 416,
MASTER_SKILL_ADD_GREATER_DEFENSE_IMPROVED = 417,
MASTER_SKILL_ADD_TRIPLE_SHOT_ENHANCED = 418,
MASTER_SKILL_ADD_SUMMON_LIFE = 419,
MASTER_SKILL_ADD_GREATER_DAMAGE_IMPROVED = 420,
MASTER_SKILL_ADD_WEAPON_DAMAGE2 = 421,
MASTER_SKILL_ADD_GREATER_DAMAGE_ENHANCED = 422,
MASTER_SKILL_ADD_GREATER_DEFENSE_ENHANCED = 423,
MASTER_SKILL_ADD_ICE_ARROW_IMPROVED = 424,
MASTER_SKILL_ADD_CURE = 425,
MASTER_SKILL_ADD_PARTY_HEAL = 426,
MASTER_SKILL_ADD_POISON_ARROW = 427,
MASTER_SKILL_ADD_SUMMON_DAMAGE = 428,
MASTER_SKILL_ADD_PARTY_HEAL_IMPROVED = 429,
MASTER_SKILL_ADD_BLESS = 430,
MASTER_SKILL_ADD_FIVE_SHOT_ENHANCED = 431,
MASTER_SKILL_ADD_SUMMON_SATYROS = 432,
MASTER_SKILL_ADD_BLESS_IMPROVED = 433,
MASTER_SKILL_ADD_POISON_ARROW_IMPROVED = 434,
MASTER_SKILL_ADD_BOW_DAMAGE = 435,
MASTER_SKILL_ADD_CROSS_BOW_DAMAGE = 436,
MASTER_SKILL_ADD_SHIELD_DEFENSE2 = 437,
MASTER_SKILL_ADD_BOW_MASTERY = 438,
MASTER_SKILL_ADD_CROSS_BOW_MASTERY = 439,
MASTER_SKILL_ADD_SHIELD_MASTERY2 = 440,
MASTER_SKILL_ADD_INFINITY_ARROW_IMPROVED = 441,
MASTER_SKILL_ADD_MIN_PHYSI_DAMAGE2 = 442,
MASTER_SKILL_ADD_MAX_PHYSI_DAMAGE2 = 443,
MASTER_SKILL_ADD_SU_WING_DEFENSE = 446,
MASTER_SKILL_ADD_SU_WING_DAMAGE = 447,
MASTER_SKILL_ADD_SAHAMUTT_IMPROVED = 448,
MASTER_SKILL_ADD_NEIL_IMPROVED = 449,
MASTER_SKILL_ADD_GHOST_PHANTOM_IMPROVED = 450,
MASTER_SKILL_ADD_SAHAMUTT_ENHANCED = 451,
MASTER_SKILL_ADD_NEIL_ENHANCED = 452,
MASTER_SKILL_ADD_GHOST_PHANTOM_ENHANCED = 453,
MASTER_SKILL_ADD_SLEEP_IMPROVED = 454,
MASTER_SKILL_ADD_CHAIN_LIGHTNING_IMPROVED = 455,
MASTER_SKILL_ADD_RED_STORM_IMPROVED = 456,
MASTER_SKILL_ADD_MAGIC_DAMAGE2 = 457,
MASTER_SKILL_ADD_DRAIN_LIFE_IMPROVED = 458,
MASTER_SKILL_ADD_LESSER_DAMAGE_IMPROVED = 459,
MASTER_SKILL_ADD_LESSER_DEFENSE_IMPROVED = 460,
MASTER_SKILL_ADD_BLIND = 461,
MASTER_SKILL_ADD_DRAIN_LIFE_ENHANCED = 462,
MASTER_SKILL_ADD_BLIND_IMPROVED = 463,
MASTER_SKILL_ADD_STICK_DAMAGE = 465,
MASTER_SKILL_ADD_BOOK_DAMAGE = 466,
MASTER_SKILL_ADD_STICK_MASTERY = 467,
MASTER_SKILL_ADD_BOOK_MASTERY = 468,
MASTER_SKILL_ADD_SWORD_POWER_IMPROVED = 469,
MASTER_SKILL_ADD_SWORD_POWER_ENHANCED = 470,
MASTER_SKILL_ADD_MIN_MAGIC_DAMAGE2 = 471,
MASTER_SKILL_ADD_SWORD_POWER_MASTERED = 472,
MASTER_SKILL_ADD_MAX_MAGIC_DAMAGE2 = 473,
MASTER_SKILL_ADD_MG_WING_DEFENSE = 476,
MASTER_SKILL_ADD_MG_WING_DAMAGE = 478,
MASTER_SKILL_ADD_CYCLONE_IMPROVED2 = 479,
MASTER_SKILL_ADD_LIGHTNING_IMPROVED2 = 480, //
MASTER_SKILL_ADD_TWISTING_SLASH_IMPROVED2 = 481, // OK
MASTER_SKILL_ADD_POWER_SLASH_IMPROVED = 482,
MASTER_SKILL_ADD_FLAME_IMPROVED2 = 483, // OK
MASTER_SKILL_ADD_BLAST_IMPROVED2 = 484,
MASTER_SKILL_ADD_WEAPON_DAMAGE3 = 485,
MASTER_SKILL_ADD_INFERNO_IMPROVED2 = 486,
MASTER_SKILL_ADD_EVIL_SPIRIT_IMPROVED2 = 487,
MASTER_SKILL_ADD_MAGIC_DAMAGE3 = 488,
MASTER_SKILL_ADD_ICE_IMPROVED2 = 489,
MASTER_SKILL_ADD_FIRE_SLASH_IMPROVED = 490,
MASTER_SKILL_ADD_ICE_ENHANCED = 491,
MASTER_SKILL_ADD_SWORD_SLASH_IMPROVED = 492,
MASTER_SKILL_ADD_FIRE_SLASH_ENHANCED = 493,
MASTER_SKILL_ADD_SWORD_SLASH_ENHANCED = 494,
MASTER_SKILL_ADD_EARTH_PRISON = 495,
MASTER_SKILL_ADD_LIGHTNING_STORM_IMPROVED = 496,
MASTER_SKILL_ADD_EARTH_PRISON_IMPROVED = 497,
MASTER_SKILL_ADD_DL_WING_DEFENSE = 505,
MASTER_SKILL_ADD_LEADERSHIP = 506,
MASTER_SKILL_ADD_DL_WING_DAMAGE = 507,
MASTER_SKILL_ADD_FIRE_BURST_IMPROVED = 508,
MASTER_SKILL_ADD_FORCE_WAVE_IMPROVED = 509,
MASTER_SKILL_ADD_DARK_HORSE_DEFENSE = 510,
MASTER_SKILL_ADD_GREATER_CRITICAL_DAMAGE_IMPROVED = 511,
MASTER_SKILL_ADD_EARTHQUAKE_IMPROVED = 512,
MASTER_SKILL_ADD_WEAPON_DAMAGE4 = 513,
MASTER_SKILL_ADD_FIRE_BURST_ENHANCED = 514,
MASTER_SKILL_ADD_GREATER_CRITICAL_DAMAGE_ENHANCED = 515,
MASTER_SKILL_ADD_EARTHQUAKE_ENHANCED = 516,
MASTER_SKILL_ADD_GREATER_CRITICAL_DAMAGE_MASTERED = 517,
MASTER_SKILL_ADD_FIRE_SCREAM_IMPROVED = 518,
MASTER_SKILL_ADD_ELECTRIC_SPARK_IMPROVED = 519,
MASTER_SKILL_ADD_FIRE_SCREAM_ENHANCED = 520,
MASTER_SKILL_ADD_IRON_DEFENSE = 521,
MASTER_SKILL_ADD_GREATER_CRITICAL_DAMAGE_EXTENDED = 522,
MASTER_SKILL_ADD_BIRDS_IMPROVED = 523,
MASTER_SKILL_ADD_IRON_DEFENSE_IMPROVED = 524,
MASTER_SKILL_ADD_DARK_SPIRIT_DAMAGE = 526,
MASTER_SKILL_ADD_SCEPTER_DAMAGE = 527,
MASTER_SKILL_ADD_SHIELD_DEFENSE3 = 528,
MASTER_SKILL_ADD_SCEPTER_PET_DAMAGE = 529,
MASTER_SKILL_ADD_DARK_SPIRIT_CRITICAL_DAMAGE_RATE = 530,
MASTER_SKILL_ADD_SCEPTER_MASTERY = 531,
MASTER_SKILL_ADD_SHIELD_MASTERY3 = 532,
MASTER_SKILL_ADD_DEFENSE_BY_LEADERSHIP = 533,
MASTER_SKILL_ADD_DARK_SPIRIT_EXCELLENT_DAMAGE_RATE = 534,
MASTER_SKILL_ADD_PET_DURABILITY_RATE = 535,
MASTER_SKILL_ADD_DARK_SPIRIT_ATTACK_SPEED = 536,
MASTER_SKILL_ADD_DARK_SPIRIT_DOUBLE_DAMAGE_RATE = 538,
MASTER_SKILL_ADD_DARK_SPIRIT_IGNORE_DEFENSE_RATE = 539,
MASTER_SKILL_ADD_RF_WING_DEFENSE = 549,
MASTER_SKILL_ADD_RF_WING_DAMAGE = 550,
MASTER_SKILL_ADD_LARGE_RING_BLOWER_IMPROVED = 551,
MASTER_SKILL_ADD_UPPER_BEAST_IMPROVED = 552,
MASTER_SKILL_ADD_LARGE_RING_BLOWER_ENHANCED = 554,
MASTER_SKILL_ADD_UPPER_BEAST_ENHANCED = 555,
MASTER_SKILL_ADD_DEFENSE_SUCCESS_RATE2 = 556,
MASTER_SKILL_ADD_WEAPON_DAMAGE5 = 557,
MASTER_SKILL_ADD_CHAIN_DRIVER_IMPROVED = 558,
MASTER_SKILL_ADD_DARK_SIDE_IMPROVED = 559,
MASTER_SKILL_ADD_DRAGON_LORE_IMPROVED = 560,
MASTER_SKILL_ADD_DRAGON_LORE_ENHANCED = 561,
MASTER_SKILL_ADD_CHAIN_DRIVER_ENHANCED = 562,
MASTER_SKILL_ADD_DARK_SIDE_ENHANCED = 563,
MASTER_SKILL_ADD_DRAGON_SLAYER_IMPROVED = 564,
MASTER_SKILL_ADD_BLOOD_HOWLING = 565,
MASTER_SKILL_ADD_DRAGON_SLAYER_ENHANCED = 566,
MASTER_SKILL_ADD_BLOOD_HOWLING_IMPROVED = 567,
MASTER_SKILL_ADD_GLOVE_DAMAGE = 568,
MASTER_SKILL_ADD_GREATER_DEFENSE_SUCCESS_RATE_IMPROVED = 569,
MASTER_SKILL_ADD_GLOVE_MASTERY = 571,
MASTER_SKILL_ADD_GREATER_DEFENSE_SUCCESS_RATE_ENHANCED = 572,
MASTER_SKILL_ADD_FITNESS_IMPROVED = 573,
MASTER_SKILL_ADD_ITEM_DURABILITY_RATE2 = 578,
MASTER_SKILL_ADD_DEFENSE_SUCCESS_RATE_PVP2 = 579,
MASTER_SKILL_ADD_MAX_SD2 = 580,
MASTER_SKILL_ADD_MP_RECOVERY_RATE2 = 581,
MASTER_SKILL_ADD_POISON_RESISTANCE2 = 582,
MASTER_SKILL_ADD_JEWELRY_DURABILITY_RATE2 = 583,
MASTER_SKILL_ADD_SD_RECOVERY_RATE2 = 584,
MASTER_SKILL_ADD_HP_RECOVERY_RATE2 = 585,
MASTER_SKILL_ADD_LIGHTNING_RESISTANCE2 = 586,
MASTER_SKILL_ADD_DEFENSE2 = 587,
MASTER_SKILL_ADD_BP_RECOVERY_RATE2 = 588,
MASTER_SKILL_ADD_ICE_RESISTANCE2 = 589,
MASTER_SKILL_ADD_GUARDIAN_DURABILITY_RATE2 = 590,
MASTER_SKILL_ADD_DEFENSE_SUCCESS_RATE3 = 591,
MASTER_SKILL_ADD_ARMOR_SET_BONUS2 = 593,
MASTER_SKILL_ADD_REFLECT_DAMAGE2 = 594,
MASTER_SKILL_ADD_ENERGY2 = 595,
MASTER_SKILL_ADD_VITALITY2 = 596,
MASTER_SKILL_ADD_DEXTERITY2 = 597,
MASTER_SKILL_ADD_STRENGTH2 = 598,
MASTER_SKILL_ADD_ATTACK_SUCCESS_RATE2 = 599,
MASTER_SKILL_ADD_MAX_HP2 = 600,
MASTER_SKILL_ADD_MAX_MP2 = 601,
MASTER_SKILL_ADD_ATTACK_SUCCESS_RATE_PVP2 = 603,
MASTER_SKILL_ADD_MP_CONSUMPTION_RATE2 = 604,
MASTER_SKILL_ADD_HUNT_SD2 = 605,
MASTER_SKILL_ADD_HUNT_HP2 = 606,
MASTER_SKILL_ADD_MIN_PHYSI_DAMAGE3 = 607,
MASTER_SKILL_ADD_HUNT_MP2 = 608,
MASTER_SKILL_ADD_MAX_PHYSI_DAMAGE3 = 609,
MASTER_SKILL_ADD_CRITICAL_DAMAGE_RATE2 = 610,
MASTER_SKILL_ADD_RESTORE_MP_RATE2 = 611,
MASTER_SKILL_ADD_RESTORE_HP_RATE2 = 612,
MASTER_SKILL_ADD_EXCELLENT_DAMAGE_RATE2 = 613,
MASTER_SKILL_ADD_DOUBLE_DAMAGE_RATE2 = 614,
MASTER_SKILL_ADD_IGNORE_DEFENSE_RATE2 = 615,
MASTER_SKILL_ADD_RESTORE_SD_RATE2 = 616,
MASTER_SKILL_ADD_TRIPLE_DAMAGE_RATE = 617,

IMPROVED, ENHANCED, MASTERED you can add to existing skills.
Other things you must implement.



No skybox but more quality added.

View attachment 258893

Motion blur incoming...

View attachment 258896

.
 
Junior Spellweaver
Joined
Aug 1, 2011
Messages
126
Reaction score
90
Here are described new master skills like Blood Storm, Earth Prison.

We need names of BMD + Effect + structs like PLAYER_SKILL_....

 
Last edited:
Joined
Oct 29, 2007
Messages
1,296
Reaction score
1,318
Here are described new master skills like Blood Storm, Earth Prison.

We need names of BMD + Effect + structs like PLAYER_SKILL_....

I don't know man, I think it is only important to know the indicator or index of each of these Skills in Skill.txt or in MasterSkillTree.txt (it is assumed that on the Client side, they will have the same ids). Everything else can be done from having this minimal information, of course this is just my opinion. good luck!
 
Junior Spellweaver
Joined
Aug 1, 2011
Messages
126
Reaction score
90
I don't know man, I think it is only important to know the indicator or index of each of these Skills in Skill.txt or in MasterSkillTree.txt (it is assumed that on the Client side, they will have the same ids). Everything else can be done from having this minimal information, of course this is just my opinion. good luck!
You adding custom skills, so try to add this new master skills and show how to do this.


Code:
//Index   Name                                 Damage   MP      BP      Range   Radio   Delay   Type   Effect   ReqLevel   ReqEnergy   ReqLeadership   ReqKillCount   ReqGuildStatus   DW      DK      FE      MG      DL      SU      RF
344      "Add Blood Storm"               25    87    29    3    4       10000    *      0    0       0           0           0          0                   0       3       0       3       0       0       0
346       "Add Blood Storm Improved"           25 95 31 3 4       10000 *      0 0    0        0        0       0                0       3       0       3       0       0       0
495       "Add Earth Prison"                   26 180 15 0 4       10000 4      147      0          0           0               0              0                3       0       0       3       0       0       0
497       "Add Earth Prison Improved"          26 198 17 0 4       10000 0      147      0          0           0               0              0                3       0       0       3       0       0       0
565       "Add Blood Howling"         0 100 200 4 0       120000 *      166      0          0           0               0              0                0       0       0       0       0       0       3
567       "Add Blood Howling Improved"        0 110 220 4 0       120000 *      167      0          0           0               0              0                0       0       0       0       0       0       3
 
Last edited:
Joined
Oct 29, 2007
Messages
1,296
Reaction score
1,318
You adding custom skills, so try to add this new master skills and show how to do this.


Code:
//Index   Name                                 Damage   MP      BP      Range   Radio   Delay   Type   Effect   ReqLevel   ReqEnergy   ReqLeadership   ReqKillCount   ReqGuildStatus   DW      DK      FE      MG      DL      SU      RF
344      "Add Blood Storm"               25    87    29    3    4       10000    *      0    0       0           0           0          0                   0       3       0       3       0       0       0
346       "Add Blood Storm Improved"           25 95 31 3 4       10000 *      0 0    0        0        0       0                0       3       0       3       0       0       0
495       "Add Earth Prison"                   26 180 15 0 4       10000 4      147      0          0           0               0              0                3       0       0       3       0       0       0
497       "Add Earth Prison Improved"          26 198 17 0 4       10000 0      147      0          0           0               0              0                3       0       0       3       0       0       0
565       "Add Blood Howling"         0 100 200 4 0       120000 *      166      0          0           0               0              0                0       0       0       0       0       0       3
567       "Add Blood Howling Improved"        0 110 220 4 0       120000 *      167      0          0           0               0              0                0       0       0       0       0       0       3
For a while now I've avoided having to decompile things, even so... if you know their indexes, you could try it yourself, and while you're at it, you'll learn something new.
 
Last edited:
Experienced Elementalist
Joined
Apr 2, 2009
Messages
223
Reaction score
59
dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums




NewUIInvenExpansion.ccp
C++:
#include "stdafx.h"
#include "DSPlaySound.h"
#include "NewUISystem.h"
#include "NewUIInvenExpansion.h"

#if(NEW_INVENTORY_EXPANSION == 1)

SEASON3B::CNewUIInvenExpansion::CNewUIInvenExpansion()
{
    this->pUIManager = NULL;

    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; ++i)
    {
        this->InvBoxPoint[i].x = 0;

        this->InvBoxPoint[i].y = 0;

        this->isExtEnabled[i] = false;
    }

    this->pos.x = 0;

    this->pos.y = 0;

    this->ThirdInterface = false;

    this->map_InvenOrgInterface.clear();

    this->m_list.clear();

    this->RegLinkageUI();
}

SEASON3B::CNewUIInvenExpansion::~CNewUIInvenExpansion()
{
    this->Release();
}

bool SEASON3B::CNewUIInvenExpansion::GetThirdInterface()
{
    return this->ThirdInterface;
}

bool SEASON3B::CNewUIInvenExpansion::Create(SEASON3B::CNewUIManager* pUIManager, int posX, int posY)
{
    if (pUIManager == NULL)
    {
        return 0;
    }

    if (g_pNewItemMng == NULL)
    {
        return 0;
    }

    this->pUIManager = pUIManager;

    this->pUIManager->AddUIObj(SEASON3B::INTERFACE_INVENTORY_EXPANSION, this);

    for (int i = 0; i < 4; i++)
    {
        this->InvBoxPoint[i].x = posX + 14;

        this->InvBoxPoint[i].y = posY + 87 * i + 44;
    }

    this->SetPos(posX, posY);

    this->LoadImages();

    this->Show(false);

    return 1;
}

void SEASON3B::CNewUIInvenExpansion::Release()
{
    this->map_InvenOrgInterface.clear();

    this->m_list.clear();

    this->UnloadImages();

    if (this->pUIManager != NULL)
    {
        this->pUIManager->RemoveUIObj(this);

        this->pUIManager = NULL;
    }
}

void SEASON3B::CNewUIInvenExpansion::SetPos(int posX, int posY)
{
    this->pos.x = posX;

    this->pos.y = posY;

    this->SetBtnInfo();

    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; i++)
    {
        this->InvBoxPoint[i].x = posX + 14;
        this->InvBoxPoint[i].y = posY + 87 * i + 44;
    }

    g_pMyInventory->SetInvenPos();

    if (this->IsVisible() == false)
    {
        return;
    }

    for (int i = 1; i < g_pMyInventory->GetInvenEnableCnt(); i++)
    {
        g_pMyInventory->UnlockInventory(i);

        g_pMyInventory->GetInventoryCtrl(i)->ShowInventory();
    }
}

bool SEASON3B::CNewUIInvenExpansion::Render()
{
    EnableAlphaTest(1);

    glColor4f(1.0, 1.0, 1.0, 1.0);

    this->RenderFrame();

    this->RenderTexts();

    this->RenderInvenExpansion();

    this->RenderButtons();

    DisableAlphaBlend();

    return 1;
}

bool SEASON3B::CNewUIInvenExpansion::Update()
{
    return 1;
}

bool SEASON3B::CNewUIInvenExpansion::UpdateMouseEvent()
{
    if (this->BtnProcess() == true)
    {
        return 0;
    }

    if (SEASON3B::CheckMouseIn(this->pos.x, this->pos.y, 190, 429) == false)
    {
        return 1;
    }

    if (SEASON3B::IsPress(VK_RBUTTON) == true)
    {
        this->ResetRButton();
        return 1;
    }

    if (SEASON3B::IsNone(VK_LBUTTON) == true)
    {
        return 1;
    }

    if (g_pMyInventory->GetRepairMode() == CNewUIMyInventory::REPAIR_MODE_OFF)
    {
        this->ResetLButton();
    }

    return 1;
}

bool SEASON3B::CNewUIInvenExpansion::UpdateKeyEvent()
{
    if (g_pNewUISystem->IsVisible(SEASON3B::INTERFACE_INVENTORY_EXPANSION) == false || SEASON3B::IsPress(VK_ESCAPE) == false)
    {
        return 1;
    }

    if (g_pNPCShop->IsSellingItem() == false)
    {
        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY);

        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY_EXPANSION);

        PlayBuffer(SOUND_CLICK01);
    }

    return 0;
}

bool SEASON3B::CNewUIInvenExpansion::BtnProcess()
{
    int PosX = this->GetPos()->x + 169;

    int PosY = this->GetPos()->y + 7;

    if (SEASON3B::IsPress(1) == true && SEASON3B::CheckMouseIn(PosX, PosY, 13, 12) == true)
    {
        this->ResetLButton();

        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY_EXPANSION);

        return 1;
    }
    
    if (this->CloseBT.UpdateMouseEvent() && g_pNewUISystem->IsVisible(SEASON3B::INTERFACE_INVENTORY_EXPANSION) == true)
    {
        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY_EXPANSION);

        return 1;
    }
    
    return false;
}

void SEASON3B::CNewUIInvenExpansion::ResetLButton()
{
    MouseLButton = 0;

    MouseLButtonPop = 0;

    MouseLButtonPush = 0;
}

void SEASON3B::CNewUIInvenExpansion::ResetRButton()
{
    MouseRButton = 0;

    MouseRButtonPop = 0;

    MouseRButtonPush = 0;
}

bool SEASON3B::CNewUIInvenExpansion::CheckExpansionInventory()
{
    if (this->IsVisible() == false)
    {
        return 0;
    }

    return SEASON3B::CheckMouseIn(this->pos.x, this->pos.y, 190, 429);
}

void SEASON3B::CNewUIInvenExpansion::SetBtnInfo()
{
    this->CloseBT.ChangeButtonImgState(true, CNewUIMyInventory::IMAGE_INVENTORY_EXIT_BTN);

    this->CloseBT.ChangeButtonInfo(this->pos.x + 13, this->pos.y + 391, 36, 29);

    this->CloseBT.ChangeToolTipText(GlobalText[927], true);
}

void SEASON3B::CNewUIInvenExpansion::InitExpansion()
{
    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; i++)
    {
        this->isExtEnabled[i] = false;
    }
}

bool SEASON3B::CNewUIInvenExpansion::LoadImages()
{
    LoadBitmap("Interface\\newui_msgbox_back.jpg", CNewUIMyInventory::IMAGE_INVENTORY_BACK, GL_LINEAR);    //31324

    LoadBitmap("Interface\\newui_item_back04.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_TOP2, GL_LINEAR);    //31356

    LoadBitmap("Interface\\newui_item_back02-L.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_LEFT, GL_LINEAR);    //31357

    LoadBitmap("Interface\\newui_item_back02-R.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_RIGHT, GL_LINEAR);    //31358

    LoadBitmap("Interface\\newui_item_back03.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_BOTTOM, GL_LINEAR);    //31359

    LoadBitmap("Interface\\newui_exit_00.tga", CNewUIMyInventory::IMAGE_INVENTORY_EXIT_BTN, GL_LINEAR);    //31372

    LoadBitmap("Interface\\newui_item_add_table.tga", BITMAP_EXPANSION_ITEM_TABLE, GL_LINEAR);    //31752

    LoadBitmap("Interface\\newui_item_add_marking_non.JPG", BITMAP_EXPANSION_ITEM_ADDMARKING_NON, GL_LINEAR);    //31753

    LoadBitmap("Interface\\newui_item_add_marking_no01.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N01, GL_LINEAR);    //31754

    LoadBitmap("Interface\\newui_item_add_marking_no02.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N02, GL_LINEAR);    //31755

    LoadBitmap("Interface\\newui_item_add_marking_no03.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N03, GL_LINEAR);    //31756

    LoadBitmap("Interface\\newui_item_add_marking_no04.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N04, GL_LINEAR);    //31757
}

void SEASON3B::CNewUIInvenExpansion::UnloadImages()
{
    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_EXIT_BTN);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_BOTTOM);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_RIGHT);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_LEFT);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_TOP2);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK);

    for (int i = BITMAP_EXPANSION_ITEM_TABLE; i < BITMAP_EXPANSION_END; i++)
    {
        DeleteBitmap(i);
    }
}

void SEASON3B::CNewUIInvenExpansion::RenderFrame()
{
    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK, this->pos.x, this->pos.y, 190.0, 429.0);

    SEASON3B::RenderImage(31356, this->pos.x, this->pos.y, 190.0, 64.0);

    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK_TOP2, (float)this->pos.x, (float)(this->pos.y + 64), 21.0, 320.0);

    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK_RIGHT, (float)(this->pos.x + 169), (float)(this->pos.y + 64), 21.0, 320.0);

    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK_BOTTOM, (float)this->pos.x, (float)(this->pos.y + 384), 190.0, 45.0);
}

void SEASON3B::CNewUIInvenExpansion::RenderTexts()
{
    g_pRenderText->SetBgColor(0, 0, 0, 0);

    g_pRenderText->SetTextColor(255, 255, 255, 0xFFu);

    g_pRenderText->SetFont(g_hFontBold);

    g_pRenderText->RenderText(this->GetPos()->x, this->GetPos()->y, GlobalText[3323], 190, 0, 3, 0);
}

void SEASON3B::CNewUIInvenExpansion::RenderButtons()
{
    this->CloseBT.Render();
}

void SEASON3B::CNewUIInvenExpansion::RenderInvenExpansion()
{
    g_pMyInventory->RenderExpansionInven();

    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; i++)
    {

        SEASON3B::RenderImage(BITMAP_EXPANSION_ITEM_TABLE, (float)(this->InvBoxPoint[i].x - 4), (float)(this->InvBoxPoint[i].y - 3), 173.0, 87.0);

        if (this->isExtEnabled[i] != 0)
        {
            continue;
        }

        SEASON3B::RenderImage(BITMAP_EXPANSION_ITEM_ADDMARKING_NON, (float)this->InvBoxPoint[i].x, (float)this->InvBoxPoint[i].y, 161.0, 81.0);

        SEASON3B::RenderImage(i + BITMAP_EXPANSION_ITEM_ADDMARKING_N01, (float)(this->InvBoxPoint[i].x + 68), (float)(this->InvBoxPoint[i].y + 26), 25.0, 28.0);
    }
}

void SEASON3B::CNewUIInvenExpansion::OpeningProcess()
{
    g_pMyInventory->SetExpansionOpenState();
}

void SEASON3B::CNewUIInvenExpansion::ClosingProcess()
{
    g_pMyInventory->SetExpansionCloseState();

    this->InitMultiPosition();

    g_pMyInventory->SetInvenPos();
}

void SEASON3B::CNewUIInvenExpansion::InitMultiPosition()
{
    g_pMyShopInventory->SetPos(260, 0/*, 14 AL PEDO?*/);

    int PosX = this->GetUIPosition(14, 0)->y;

    int PosY = this->GetUIPosition(14, 0)->x + 260;

    g_pMyShopInventory->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pMixInventory->SetPos(260, 0/*, 9u*/);

    PosX = this->GetUIPosition(9, 0)->y;

    PosY = this->GetUIPosition(9, 0)->x + 260;

    g_pMixInventory->GetInventoryCtrl()->SetPos(PosX, PosY);
    
    g_pNPCShop->SetPos(260, 0/*, 0xCu*/);

    PosX = this->GetUIPosition(12, 0)->y;

    PosY = this->GetUIPosition(12, 0)->x + 260;

    g_pNPCShop->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pPurchaseShopInventory->SetPos(260, 0/*, 0xFu*/);

    PosX = this->GetUIPosition(15, 0)->y;

    PosY = this->GetUIPosition(15, 0)->x + 260;

    g_pPurchaseShopInventory->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pLuckyItemWnd->SetPos(260, 0/*, 0x4Bu*/);

    PosX = this->GetUIPosition(75, 0)->y;

    PosY = this->GetUIPosition(75, 0)->x + 260;

    g_pLuckyItemWnd->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pStorageInventory->SetPos( 260, 0/*, 8u*/);

    PosX = this->GetUIPosition(8, 0)->y;

    PosY = this->GetUIPosition(8, 0)->x + 260;

    g_pStorageInventory->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pTrade->SetPos(260, 0/*, 7u*/);

    PosX = this->GetUIPosition(7, 1)->y;

    PosY = this->GetUIPosition(7, 1)->x + 260;

    g_pTrade->GetYourInvenCtrl()->SetPos(PosX, PosY);

    PosX = this->GetUIPosition(7, 0)->y;

    PosY = this->GetUIPosition(7, 0)->x + 260;

    g_pTrade->GetMyInvenCtrl()->SetPos(PosX, PosY);

    this->ThirdInterface = false;

    this->SetPos(260, 0);
}

bool SEASON3B::CNewUIInvenExpansion::SetThirdPosition(DWORD winIndex)
{
    this->SetPos(260, 0);

    int ThirdIndex = this->IsThirdInterface(winIndex);

    switch (ThirdIndex)
    {
    case INTERFACE_TRADE:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pTrade->SetPos(70, 0/*, ThirdIndex*/);
        g_pTrade->GetMyInvenCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        g_pTrade->GetYourInvenCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 1)->x + 70, this->GetUIPosition(ThirdIndex, 1)->y);
        break;
    case INTERFACE_STORAGE:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pStorageInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pStorageInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_MIXINVENTORY:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pMixInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pMixInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_NPCSHOP:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pNPCShop->SetPos(70, 0/*, ThirdIndex*/);
        g_pNPCShop->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_MYSHOP_INVENTORY:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pMyShopInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pMyShopInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_PURCHASESHOP_INVENTORY:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pPurchaseShopInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pPurchaseShopInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_CHARACTER:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        break;
    case INTERFACE_LUCKYITEMWND:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pLuckyItemWnd->SetPos(70, 0/*, ThirdIndex*/);
        g_pLuckyItemWnd->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    default:
        return false;
    }

    return true;
}

int SEASON3B::CNewUIInvenExpansion::IsThirdInterface(int winIndex)
{
    return this->FindLinkageUI(winIndex);
}

void SEASON3B::CNewUIInvenExpansion::RegLinkageUI()
{
    this->myOrgInterface.SetOrgInvenPos(14, 16.0, 90.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(16, 0.0, 0.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(8, 15.0, 36.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(7, 16.0, 274.0, 16.0, 68.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(9, 15.0, 110.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(15, 16.0, 90.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(75, 15.0, 110.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());
}

int SEASON3B::CNewUIInvenExpansion::FindLinkageUI(int winIndex)
{
    for (std::list<int>::iterator it = this->m_list.begin(); it != this->m_list.end(); it++)
    {
        if (g_pNewUISystem->IsVisible(*it) == false)
        {
            continue;
        }

        this->ThirdInterface = 1;

        return *it;
    }

    this->ThirdInterface = 0;

    return winIndex;
}

tagPOINT* SEASON3B::CNewUIInvenExpansion::GetUIPosition(int index, bool isMyPos)
{
    static tagPOINT lpPoint = { 0,0 };

    std::map<int, CInvenOrgInterface>::iterator it = this->map_InvenOrgInterface.find(index);

    if (it == this->map_InvenOrgInterface.end())
    {
        return &lpPoint;
    }

    if (isMyPos == true)
    {
        lpPoint.x = it->second.GetOrgYourInvenPosX();

        lpPoint.y = it->second.GetOrgYourInvenPosY();

        return &lpPoint;
    }

    lpPoint.x = it->second.GetOrgInvenPosX();

    lpPoint.y = it->second.GetOrgInvenPosY();

    return &lpPoint;
}

bool SEASON3B::CNewUIInvenExpansion::SetEnableExpansionInven(BYTE count)
{
    bool result = false;

    int MaxCount = count;

    this->InitExpansion();

    if (count >= (MAS_NEW_UI_INVENT_EXPANSION + 1))
    {
        MaxCount = 0;
    }

    for (int i = 0; i < MaxCount; i++)
    {
        this->isExtEnabled[i] = true;

        result = 1;
    }

    g_pMyInventory->SetInvenEnableCnt(MaxCount);

    return result;
}

tagPOINT* SEASON3B::CNewUIInvenExpansion::GetPos()
{
    return &this->pos;
}

float SEASON3B::CNewUIInvenExpansion::GetLayerDepth()
{
    return 4.1999998;
}

tagPOINT* SEASON3B::CNewUIInvenExpansion::GetIEStartPos(int index)
{
    return &this->InvBoxPoint[index];
}

#endif

.h
C++:
#ifndef __NEW_UI_INVEN_EXPANSION_H__
#define __NEW_UI_INVEN_EXPANSION_H__

#pragma once

#include "NewUIBase.h"
#include "NewUIManager.h"
#include "NewUIButton.h"

#if(NEW_INVENTORY_EXPANSION == 1)

#define MAS_NEW_UI_INVENT_EXPANSION 4

class CInvenOrgInterface
{
public:
    CInvenOrgInterface()
    {
        this->InterfaceList = 0;
        this->posX = 0.0f;
        this->posY = 0.0f;
        this->myPosX = 0.0f;
        this->myPosY = 0.0f;
    }
    ~CInvenOrgInterface()
    {

    }

    void SetOrgInvenPos(int InterfaceList, float posX, float posY, float myPosX, float myPosY)
    {
        this->InterfaceList = InterfaceList;
        this->posX = posX;
        this->posY = posY;
        this->myPosX = myPosX;
        this->myPosY = myPosY;
    }

    float CInvenOrgInterface::GetOrgInvenPosX()
    {
        return this->posX;
    }

    float CInvenOrgInterface::GetOrgInvenPosY()
    {
        return this->posY;
    }

    float CInvenOrgInterface::GetOrgYourInvenPosX()
    {
        return this->myPosX;
    }

    float CInvenOrgInterface::GetOrgYourInvenPosY()
    {
        return this->myPosY;
    }

    int CInvenOrgInterface::GetInterfaceList()
    {
        return this->InterfaceList;
    }
private:
    float posX;
    float posY;
    float myPosX;
    float myPosY;
    DWORD InterfaceList;
};

namespace SEASON3B
{
    //size 324
    class CNewUIInvenExpansion : public CNewUIObj
    {
    public:
        enum IMAGE_LIST
        {
    

        };
        CNewUIInvenExpansion();
        ~CNewUIInvenExpansion();
        bool GetThirdInterface();
        bool Create(CNewUIManager* pUIManager, int posX, int posY);
        void Release();
        void SetPos(int posX, int posY);
        bool Render();
        bool Update();
        bool UpdateMouseEvent();
        bool UpdateKeyEvent();
        bool BtnProcess();
        void ResetLButton();
        void ResetRButton();
        bool CheckExpansionInventory();
        void SetBtnInfo();
        void InitExpansion();
        bool LoadImages();
        void UnloadImages();
        void RenderFrame();
        void RenderTexts();
        void RenderButtons();
        void RenderInvenExpansion();
        void OpeningProcess();
        void ClosingProcess();
        void InitMultiPosition();
        bool SetThirdPosition(DWORD winIndex);
        int IsThirdInterface(int winIndex);
        void RegLinkageUI();
        int FindLinkageUI(int winIndex);
        tagPOINT* GetUIPosition(int index, bool isMyPos);
        bool SetEnableExpansionInven(BYTE count);
        tagPOINT* GetPos();
        float GetLayerDepth();
        tagPOINT* GetIEStartPos(int index);
    private:
        CNewUIManager* pUIManager;
        bool isExtEnabled[MAS_NEW_UI_INVENT_EXPANSION];
        tagPOINT pos;
        tagPOINT InvBoxPoint[MAS_NEW_UI_INVENT_EXPANSION];
        CNewUIButton CloseBT;
        bool ThirdInterface;
        CInvenOrgInterface myOrgInterface;
        std::map<int, CInvenOrgInterface> map_InvenOrgInterface;
        std::list<int> m_list;
    };
}

#endif

#endif
 
Joined
Jun 12, 2005
Messages
748
Reaction score
69
Great, what about new master skill tree and mu helper? Not asking for full source, just a help, I’m new coder and practicing with these files.
I used to work with c# and unity where things are much easier than OpenGL but cause I really love mu i decide to turn to c++ and try to learn and contribute.

Something else, cause I didn’t test these files yet, I want to ask for some things if they work, like Vienna guild mercenary quests, Delgado lucky coin event, wandering merchant zyro expand vault and inventory, seed sphere level 5, stuff like that.
 
Last edited:
Newbie Spellweaver
Joined
Nov 17, 2016
Messages
15
Reaction score
20
dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums




NewUIInvenExpansion.ccp
C++:
#include "stdafx.h"
#include "DSPlaySound.h"
#include "NewUISystem.h"
#include "NewUIInvenExpansion.h"

#if(NEW_INVENTORY_EXPANSION == 1)

SEASON3B::CNewUIInvenExpansion::CNewUIInvenExpansion()
{
    this->pUIManager = NULL;

    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; ++i)
    {
        this->InvBoxPoint[i].x = 0;

        this->InvBoxPoint[i].y = 0;

        this->isExtEnabled[i] = false;
    }

    this->pos.x = 0;

    this->pos.y = 0;

    this->ThirdInterface = false;

    this->map_InvenOrgInterface.clear();

    this->m_list.clear();

    this->RegLinkageUI();
}

SEASON3B::CNewUIInvenExpansion::~CNewUIInvenExpansion()
{
    this->Release();
}

bool SEASON3B::CNewUIInvenExpansion::GetThirdInterface()
{
    return this->ThirdInterface;
}

bool SEASON3B::CNewUIInvenExpansion::Create(SEASON3B::CNewUIManager* pUIManager, int posX, int posY)
{
    if (pUIManager == NULL)
    {
        return 0;
    }

    if (g_pNewItemMng == NULL)
    {
        return 0;
    }

    this->pUIManager = pUIManager;

    this->pUIManager->AddUIObj(SEASON3B::INTERFACE_INVENTORY_EXPANSION, this);

    for (int i = 0; i < 4; i++)
    {
        this->InvBoxPoint[i].x = posX + 14;

        this->InvBoxPoint[i].y = posY + 87 * i + 44;
    }

    this->SetPos(posX, posY);

    this->LoadImages();

    this->Show(false);

    return 1;
}

void SEASON3B::CNewUIInvenExpansion::Release()
{
    this->map_InvenOrgInterface.clear();

    this->m_list.clear();

    this->UnloadImages();

    if (this->pUIManager != NULL)
    {
        this->pUIManager->RemoveUIObj(this);

        this->pUIManager = NULL;
    }
}

void SEASON3B::CNewUIInvenExpansion::SetPos(int posX, int posY)
{
    this->pos.x = posX;

    this->pos.y = posY;

    this->SetBtnInfo();

    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; i++)
    {
        this->InvBoxPoint[i].x = posX + 14;
        this->InvBoxPoint[i].y = posY + 87 * i + 44;
    }

    g_pMyInventory->SetInvenPos();

    if (this->IsVisible() == false)
    {
        return;
    }

    for (int i = 1; i < g_pMyInventory->GetInvenEnableCnt(); i++)
    {
        g_pMyInventory->UnlockInventory(i);

        g_pMyInventory->GetInventoryCtrl(i)->ShowInventory();
    }
}

bool SEASON3B::CNewUIInvenExpansion::Render()
{
    EnableAlphaTest(1);

    glColor4f(1.0, 1.0, 1.0, 1.0);

    this->RenderFrame();

    this->RenderTexts();

    this->RenderInvenExpansion();

    this->RenderButtons();

    DisableAlphaBlend();

    return 1;
}

bool SEASON3B::CNewUIInvenExpansion::Update()
{
    return 1;
}

bool SEASON3B::CNewUIInvenExpansion::UpdateMouseEvent()
{
    if (this->BtnProcess() == true)
    {
        return 0;
    }

    if (SEASON3B::CheckMouseIn(this->pos.x, this->pos.y, 190, 429) == false)
    {
        return 1;
    }

    if (SEASON3B::IsPress(VK_RBUTTON) == true)
    {
        this->ResetRButton();
        return 1;
    }

    if (SEASON3B::IsNone(VK_LBUTTON) == true)
    {
        return 1;
    }

    if (g_pMyInventory->GetRepairMode() == CNewUIMyInventory::REPAIR_MODE_OFF)
    {
        this->ResetLButton();
    }

    return 1;
}

bool SEASON3B::CNewUIInvenExpansion::UpdateKeyEvent()
{
    if (g_pNewUISystem->IsVisible(SEASON3B::INTERFACE_INVENTORY_EXPANSION) == false || SEASON3B::IsPress(VK_ESCAPE) == false)
    {
        return 1;
    }

    if (g_pNPCShop->IsSellingItem() == false)
    {
        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY);

        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY_EXPANSION);

        PlayBuffer(SOUND_CLICK01);
    }

    return 0;
}

bool SEASON3B::CNewUIInvenExpansion::BtnProcess()
{
    int PosX = this->GetPos()->x + 169;

    int PosY = this->GetPos()->y + 7;

    if (SEASON3B::IsPress(1) == true && SEASON3B::CheckMouseIn(PosX, PosY, 13, 12) == true)
    {
        this->ResetLButton();

        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY_EXPANSION);

        return 1;
    }
   
    if (this->CloseBT.UpdateMouseEvent() && g_pNewUISystem->IsVisible(SEASON3B::INTERFACE_INVENTORY_EXPANSION) == true)
    {
        g_pNewUISystem->Hide(SEASON3B::INTERFACE_INVENTORY_EXPANSION);

        return 1;
    }
   
    return false;
}

void SEASON3B::CNewUIInvenExpansion::ResetLButton()
{
    MouseLButton = 0;

    MouseLButtonPop = 0;

    MouseLButtonPush = 0;
}

void SEASON3B::CNewUIInvenExpansion::ResetRButton()
{
    MouseRButton = 0;

    MouseRButtonPop = 0;

    MouseRButtonPush = 0;
}

bool SEASON3B::CNewUIInvenExpansion::CheckExpansionInventory()
{
    if (this->IsVisible() == false)
    {
        return 0;
    }

    return SEASON3B::CheckMouseIn(this->pos.x, this->pos.y, 190, 429);
}

void SEASON3B::CNewUIInvenExpansion::SetBtnInfo()
{
    this->CloseBT.ChangeButtonImgState(true, CNewUIMyInventory::IMAGE_INVENTORY_EXIT_BTN);

    this->CloseBT.ChangeButtonInfo(this->pos.x + 13, this->pos.y + 391, 36, 29);

    this->CloseBT.ChangeToolTipText(GlobalText[927], true);
}

void SEASON3B::CNewUIInvenExpansion::InitExpansion()
{
    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; i++)
    {
        this->isExtEnabled[i] = false;
    }
}

bool SEASON3B::CNewUIInvenExpansion::LoadImages()
{
    LoadBitmap("Interface\\newui_msgbox_back.jpg", CNewUIMyInventory::IMAGE_INVENTORY_BACK, GL_LINEAR);    //31324

    LoadBitmap("Interface\\newui_item_back04.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_TOP2, GL_LINEAR);    //31356

    LoadBitmap("Interface\\newui_item_back02-L.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_LEFT, GL_LINEAR);    //31357

    LoadBitmap("Interface\\newui_item_back02-R.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_RIGHT, GL_LINEAR);    //31358

    LoadBitmap("Interface\\newui_item_back03.tga", CNewUIMyInventory::IMAGE_INVENTORY_BACK_BOTTOM, GL_LINEAR);    //31359

    LoadBitmap("Interface\\newui_exit_00.tga", CNewUIMyInventory::IMAGE_INVENTORY_EXIT_BTN, GL_LINEAR);    //31372

    LoadBitmap("Interface\\newui_item_add_table.tga", BITMAP_EXPANSION_ITEM_TABLE, GL_LINEAR);    //31752

    LoadBitmap("Interface\\newui_item_add_marking_non.JPG", BITMAP_EXPANSION_ITEM_ADDMARKING_NON, GL_LINEAR);    //31753

    LoadBitmap("Interface\\newui_item_add_marking_no01.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N01, GL_LINEAR);    //31754

    LoadBitmap("Interface\\newui_item_add_marking_no02.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N02, GL_LINEAR);    //31755

    LoadBitmap("Interface\\newui_item_add_marking_no03.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N03, GL_LINEAR);    //31756

    LoadBitmap("Interface\\newui_item_add_marking_no04.tga", BITMAP_EXPANSION_ITEM_ADDMARKING_N04, GL_LINEAR);    //31757
}

void SEASON3B::CNewUIInvenExpansion::UnloadImages()
{
    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_EXIT_BTN);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_BOTTOM);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_RIGHT);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_LEFT);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK_TOP2);

    DeleteBitmap(CNewUIMyInventory::IMAGE_INVENTORY_BACK);

    for (int i = BITMAP_EXPANSION_ITEM_TABLE; i < BITMAP_EXPANSION_END; i++)
    {
        DeleteBitmap(i);
    }
}

void SEASON3B::CNewUIInvenExpansion::RenderFrame()
{
    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK, this->pos.x, this->pos.y, 190.0, 429.0);

    SEASON3B::RenderImage(31356, this->pos.x, this->pos.y, 190.0, 64.0);

    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK_TOP2, (float)this->pos.x, (float)(this->pos.y + 64), 21.0, 320.0);

    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK_RIGHT, (float)(this->pos.x + 169), (float)(this->pos.y + 64), 21.0, 320.0);

    SEASON3B::RenderImage(CNewUIMyInventory::IMAGE_INVENTORY_BACK_BOTTOM, (float)this->pos.x, (float)(this->pos.y + 384), 190.0, 45.0);
}

void SEASON3B::CNewUIInvenExpansion::RenderTexts()
{
    g_pRenderText->SetBgColor(0, 0, 0, 0);

    g_pRenderText->SetTextColor(255, 255, 255, 0xFFu);

    g_pRenderText->SetFont(g_hFontBold);

    g_pRenderText->RenderText(this->GetPos()->x, this->GetPos()->y, GlobalText[3323], 190, 0, 3, 0);
}

void SEASON3B::CNewUIInvenExpansion::RenderButtons()
{
    this->CloseBT.Render();
}

void SEASON3B::CNewUIInvenExpansion::RenderInvenExpansion()
{
    g_pMyInventory->RenderExpansionInven();

    for (int i = 0; i < MAS_NEW_UI_INVENT_EXPANSION; i++)
    {

        SEASON3B::RenderImage(BITMAP_EXPANSION_ITEM_TABLE, (float)(this->InvBoxPoint[i].x - 4), (float)(this->InvBoxPoint[i].y - 3), 173.0, 87.0);

        if (this->isExtEnabled[i] != 0)
        {
            continue;
        }

        SEASON3B::RenderImage(BITMAP_EXPANSION_ITEM_ADDMARKING_NON, (float)this->InvBoxPoint[i].x, (float)this->InvBoxPoint[i].y, 161.0, 81.0);

        SEASON3B::RenderImage(i + BITMAP_EXPANSION_ITEM_ADDMARKING_N01, (float)(this->InvBoxPoint[i].x + 68), (float)(this->InvBoxPoint[i].y + 26), 25.0, 28.0);
    }
}

void SEASON3B::CNewUIInvenExpansion::OpeningProcess()
{
    g_pMyInventory->SetExpansionOpenState();
}

void SEASON3B::CNewUIInvenExpansion::ClosingProcess()
{
    g_pMyInventory->SetExpansionCloseState();

    this->InitMultiPosition();

    g_pMyInventory->SetInvenPos();
}

void SEASON3B::CNewUIInvenExpansion::InitMultiPosition()
{
    g_pMyShopInventory->SetPos(260, 0/*, 14 AL PEDO?*/);

    int PosX = this->GetUIPosition(14, 0)->y;

    int PosY = this->GetUIPosition(14, 0)->x + 260;

    g_pMyShopInventory->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pMixInventory->SetPos(260, 0/*, 9u*/);

    PosX = this->GetUIPosition(9, 0)->y;

    PosY = this->GetUIPosition(9, 0)->x + 260;

    g_pMixInventory->GetInventoryCtrl()->SetPos(PosX, PosY);
   
    g_pNPCShop->SetPos(260, 0/*, 0xCu*/);

    PosX = this->GetUIPosition(12, 0)->y;

    PosY = this->GetUIPosition(12, 0)->x + 260;

    g_pNPCShop->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pPurchaseShopInventory->SetPos(260, 0/*, 0xFu*/);

    PosX = this->GetUIPosition(15, 0)->y;

    PosY = this->GetUIPosition(15, 0)->x + 260;

    g_pPurchaseShopInventory->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pLuckyItemWnd->SetPos(260, 0/*, 0x4Bu*/);

    PosX = this->GetUIPosition(75, 0)->y;

    PosY = this->GetUIPosition(75, 0)->x + 260;

    g_pLuckyItemWnd->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pStorageInventory->SetPos( 260, 0/*, 8u*/);

    PosX = this->GetUIPosition(8, 0)->y;

    PosY = this->GetUIPosition(8, 0)->x + 260;

    g_pStorageInventory->GetInventoryCtrl()->SetPos(PosX, PosY);

    g_pTrade->SetPos(260, 0/*, 7u*/);

    PosX = this->GetUIPosition(7, 1)->y;

    PosY = this->GetUIPosition(7, 1)->x + 260;

    g_pTrade->GetYourInvenCtrl()->SetPos(PosX, PosY);

    PosX = this->GetUIPosition(7, 0)->y;

    PosY = this->GetUIPosition(7, 0)->x + 260;

    g_pTrade->GetMyInvenCtrl()->SetPos(PosX, PosY);

    this->ThirdInterface = false;

    this->SetPos(260, 0);
}

bool SEASON3B::CNewUIInvenExpansion::SetThirdPosition(DWORD winIndex)
{
    this->SetPos(260, 0);

    int ThirdIndex = this->IsThirdInterface(winIndex);

    switch (ThirdIndex)
    {
    case INTERFACE_TRADE:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pTrade->SetPos(70, 0/*, ThirdIndex*/);
        g_pTrade->GetMyInvenCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        g_pTrade->GetYourInvenCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 1)->x + 70, this->GetUIPosition(ThirdIndex, 1)->y);
        break;
    case INTERFACE_STORAGE:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pStorageInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pStorageInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_MIXINVENTORY:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pMixInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pMixInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_NPCSHOP:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pNPCShop->SetPos(70, 0/*, ThirdIndex*/);
        g_pNPCShop->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_MYSHOP_INVENTORY:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pMyShopInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pMyShopInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_PURCHASESHOP_INVENTORY:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pPurchaseShopInventory->SetPos(70, 0/*, ThirdIndex*/);
        g_pPurchaseShopInventory->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    case INTERFACE_CHARACTER:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        break;
    case INTERFACE_LUCKYITEMWND:
        g_pNewUIMng->ShowInterface(INTERFACE_INVENTORY);
        g_pNewUIMng->ShowInterface(ThirdIndex);
        g_pLuckyItemWnd->SetPos(70, 0/*, ThirdIndex*/);
        g_pLuckyItemWnd->GetInventoryCtrl()->SetPos(this->GetUIPosition(ThirdIndex, 0)->x + 70, this->GetUIPosition(ThirdIndex, 0)->y);
        break;
    default:
        return false;
    }

    return true;
}

int SEASON3B::CNewUIInvenExpansion::IsThirdInterface(int winIndex)
{
    return this->FindLinkageUI(winIndex);
}

void SEASON3B::CNewUIInvenExpansion::RegLinkageUI()
{
    this->myOrgInterface.SetOrgInvenPos(14, 16.0, 90.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(16, 0.0, 0.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(8, 15.0, 36.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(7, 16.0, 274.0, 16.0, 68.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(9, 15.0, 110.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(15, 16.0, 90.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());

    this->myOrgInterface.SetOrgInvenPos(75, 15.0, 110.0, 0.0, 0.0);

    this->map_InvenOrgInterface.insert(std::pair<int, CInvenOrgInterface>(this->myOrgInterface.GetInterfaceList(), this->myOrgInterface));

    this->m_list.push_back(this->myOrgInterface.GetInterfaceList());
}

int SEASON3B::CNewUIInvenExpansion::FindLinkageUI(int winIndex)
{
    for (std::list<int>::iterator it = this->m_list.begin(); it != this->m_list.end(); it++)
    {
        if (g_pNewUISystem->IsVisible(*it) == false)
        {
            continue;
        }

        this->ThirdInterface = 1;

        return *it;
    }

    this->ThirdInterface = 0;

    return winIndex;
}

tagPOINT* SEASON3B::CNewUIInvenExpansion::GetUIPosition(int index, bool isMyPos)
{
    static tagPOINT lpPoint = { 0,0 };

    std::map<int, CInvenOrgInterface>::iterator it = this->map_InvenOrgInterface.find(index);

    if (it == this->map_InvenOrgInterface.end())
    {
        return &lpPoint;
    }

    if (isMyPos == true)
    {
        lpPoint.x = it->second.GetOrgYourInvenPosX();

        lpPoint.y = it->second.GetOrgYourInvenPosY();

        return &lpPoint;
    }

    lpPoint.x = it->second.GetOrgInvenPosX();

    lpPoint.y = it->second.GetOrgInvenPosY();

    return &lpPoint;
}

bool SEASON3B::CNewUIInvenExpansion::SetEnableExpansionInven(BYTE count)
{
    bool result = false;

    int MaxCount = count;

    this->InitExpansion();

    if (count >= (MAS_NEW_UI_INVENT_EXPANSION + 1))
    {
        MaxCount = 0;
    }

    for (int i = 0; i < MaxCount; i++)
    {
        this->isExtEnabled[i] = true;

        result = 1;
    }

    g_pMyInventory->SetInvenEnableCnt(MaxCount);

    return result;
}

tagPOINT* SEASON3B::CNewUIInvenExpansion::GetPos()
{
    return &this->pos;
}

float SEASON3B::CNewUIInvenExpansion::GetLayerDepth()
{
    return 4.1999998;
}

tagPOINT* SEASON3B::CNewUIInvenExpansion::GetIEStartPos(int index)
{
    return &this->InvBoxPoint[index];
}

#endif

.h
C++:
#ifndef __NEW_UI_INVEN_EXPANSION_H__
#define __NEW_UI_INVEN_EXPANSION_H__

#pragma once

#include "NewUIBase.h"
#include "NewUIManager.h"
#include "NewUIButton.h"

#if(NEW_INVENTORY_EXPANSION == 1)

#define MAS_NEW_UI_INVENT_EXPANSION 4

class CInvenOrgInterface
{
public:
    CInvenOrgInterface()
    {
        this->InterfaceList = 0;
        this->posX = 0.0f;
        this->posY = 0.0f;
        this->myPosX = 0.0f;
        this->myPosY = 0.0f;
    }
    ~CInvenOrgInterface()
    {

    }

    void SetOrgInvenPos(int InterfaceList, float posX, float posY, float myPosX, float myPosY)
    {
        this->InterfaceList = InterfaceList;
        this->posX = posX;
        this->posY = posY;
        this->myPosX = myPosX;
        this->myPosY = myPosY;
    }

    float CInvenOrgInterface::GetOrgInvenPosX()
    {
        return this->posX;
    }

    float CInvenOrgInterface::GetOrgInvenPosY()
    {
        return this->posY;
    }

    float CInvenOrgInterface::GetOrgYourInvenPosX()
    {
        return this->myPosX;
    }

    float CInvenOrgInterface::GetOrgYourInvenPosY()
    {
        return this->myPosY;
    }

    int CInvenOrgInterface::GetInterfaceList()
    {
        return this->InterfaceList;
    }
private:
    float posX;
    float posY;
    float myPosX;
    float myPosY;
    DWORD InterfaceList;
};

namespace SEASON3B
{
    //size 324
    class CNewUIInvenExpansion : public CNewUIObj
    {
    public:
        enum IMAGE_LIST
        {
   

        };
        CNewUIInvenExpansion();
        ~CNewUIInvenExpansion();
        bool GetThirdInterface();
        bool Create(CNewUIManager* pUIManager, int posX, int posY);
        void Release();
        void SetPos(int posX, int posY);
        bool Render();
        bool Update();
        bool UpdateMouseEvent();
        bool UpdateKeyEvent();
        bool BtnProcess();
        void ResetLButton();
        void ResetRButton();
        bool CheckExpansionInventory();
        void SetBtnInfo();
        void InitExpansion();
        bool LoadImages();
        void UnloadImages();
        void RenderFrame();
        void RenderTexts();
        void RenderButtons();
        void RenderInvenExpansion();
        void OpeningProcess();
        void ClosingProcess();
        void InitMultiPosition();
        bool SetThirdPosition(DWORD winIndex);
        int IsThirdInterface(int winIndex);
        void RegLinkageUI();
        int FindLinkageUI(int winIndex);
        tagPOINT* GetUIPosition(int index, bool isMyPos);
        bool SetEnableExpansionInven(BYTE count);
        tagPOINT* GetPos();
        float GetLayerDepth();
        tagPOINT* GetIEStartPos(int index);
    private:
        CNewUIManager* pUIManager;
        bool isExtEnabled[MAS_NEW_UI_INVENT_EXPANSION];
        tagPOINT pos;
        tagPOINT InvBoxPoint[MAS_NEW_UI_INVENT_EXPANSION];
        CNewUIButton CloseBT;
        bool ThirdInterface;
        CInvenOrgInterface myOrgInterface;
        std::map<int, CInvenOrgInterface> map_InvenOrgInterface;
        std::list<int> m_list;
    };
}

#endif

#endif

Odisk - Sven implemented it a long time ago.

Original credits for that: YolaxD released in December 2021
Odisk is someone who does not usually give the credits that correspond to others
 
Experienced Elementalist
Joined
May 1, 2009
Messages
202
Reaction score
20
this is 1.03k CHS client origin reup by me:

or you can use this link:
 
Last edited:
Newbie Spellweaver
Joined
Aug 6, 2023
Messages
16
Reaction score
2
You adding custom skills, so try to add this new master skills and show how to do this.


Code:
//Index   Name                                 Damage   MP      BP      Range   Radio   Delay   Type   Effect   ReqLevel   ReqEnergy   ReqLeadership   ReqKillCount   ReqGuildStatus   DW      DK      FE      MG      DL      SU      RF
344      "Add Blood Storm"               25    87    29    3    4       10000    *      0    0       0           0           0          0                   0       3       0       3       0       0       0
346       "Add Blood Storm Improved"           25 95 31 3 4       10000 *      0 0    0        0        0       0                0       3       0       3       0       0       0
495       "Add Earth Prison"                   26 180 15 0 4       10000 4      147      0          0           0               0              0                3       0       0       3       0       0       0
497       "Add Earth Prison Improved"          26 198 17 0 4       10000 0      147      0          0           0               0              0                3       0       0       3       0       0       0
565       "Add Blood Howling"         0 100 200 4 0       120000 *      166      0          0           0               0              0                0       0       0       0       0       0       3
567       "Add Blood Howling Improved"        0 110 220 4 0       120000 *      167      0          0           0               0              0                0       0       0       0       0       0       3
Hi, do you have fix delete character?
 
Back
Top