- Joined
- Oct 29, 2007
- Messages
- 1,292
- Reaction score
- 1,314
Last edited:
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature currently requires accessing the site using the built-in Safari browser.
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
.
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!Here are described new master skills like Blood Storm, Earth Prison.
We need names of BMD + Effect + structs like PLAYER_SKILL_....
You must be registered to see links
You adding custom skills, so try to add this new master skills and show how to do this.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!
//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.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
#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
#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
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
May be possible that YolaxD released something - idk. I completely implemented it myself, since I didn't find any available source.Original credits for that: YolaxD released in December 2021
Odisk is someone who does not usually give the credits that correspond to others
Hi, do you have fix delete character?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
It seems that deleting the character is no problem at allHi, do you have fix delete character?