@leorond Well done, mate! Excellent progress! It's gonna help anyone working on this.
@leorond Well done, mate! Excellent progress! It's gonna help anyone working on this.
I will try to make a tutorial for you to add the complete Phoenix Soul set with the skill.
This glove is so ugly! This glove is so ugly!
I will add something less known.
Last edited by leorond; 28-10-22 at 02:21 PM.
Originally I was going to add the Phoenix Soul Star, tricky due to modifying the function and storing the blades.
So I'll put in a tutorial for adding Bloody Dragon Gloves.
Adding Bloody Dragon Glove => Rage Fighter Glove
Download the file and extract it to Data/Item/ in the folder with the game client.
It is required for this tutorial.
1. Have the subject written in the source code of the game server.
2. Written item in Item_eng.bmd, Item.txt, Itemtooltip_eng.bmd
1. Adding files -> MonkSystem.cpp
- Add the following lines to the LoadModelItem() function
- Add the following lines to the LoadModelItemTexture() functionPHP Code:AccessModel(MODEL_SWORD+35, "Data\\Item\\", "GloveMaleBloodyDragon"); // ÇÇľî˝Ěşí·ąŔ̵ĺ
AccessModel(MODEL_SWORD_35_LEFT, "Data\\Item\\", "GloveMaleBloodyDragonL");
AccessModel(MODEL_SWORD_35_RIGHT, "Data\\Item\\", "GloveMaleBloodyDragonR");
- Add the following lines to the RegistItem() functionPHP Code:OpenTexture(MODEL_SWORD+35, "Item\\"); // ÇÇľî˝Ěşí·ąŔ̵ĺ
OpenTexture(MODEL_SWORD_35_LEFT, "Item\\");
OpenTexture(MODEL_SWORD_35_RIGHT, "Item\\");
- Add the following lines to the enum models in _enum.hPHP Code:m_cItemEqualType.SetModelType(MODEL_SWORD+35, MODEL_SWORD_35_LEFT, MODEL_SWORD_35_RIGHT);
m_mapItemEqualType.insert(tm_ItemEqualType::value_type(m_cItemEqualType.GetModelType(), m_cItemEqualType));
2. Position in InventoryPHP Code:MODEL_SWORD_35_LEFT,
MODEL_SWORD_35_RIGHT,
MODEL_SWORD_35_WING,
- Add a condition for displaying the item in the inventory. In the RenderObjectScreen() function
- Set the scale of the objectPHP Code:else if(Type == MODEL_SWORD+35)
{
Position[0] += 0.08f; // X
Position[1] -= 0.08f; // Y
Vector(-90.f,0.f,0.f,ObjectSelect.Angle);
}
- Set the object color in the PartObjectColor() function in the ZzzObject.cpp filePHP Code:else if(Type == MODEL_SWORD+35)
{
Scale = 0.0035f;
}
- I will describe the definition of colors (Glow) at the end of the tutorial
- Render the object in the RenderPartObjectBody() function in the ZzzObject.cpp filePHP Code:else if(g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+35)
Color = 18; // Sacred Fire Glove color
- Change the condition in the RenderPartObjectBodyColor() function in the ZzzObject.cpp filePHP Code:else if((g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+32) // µĺ·ą°ďąŮżî˝ş
|| (g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+33) // ŸŔ̰ĹŔÇŬ·Î
|| (g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+34)
|| (g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+35)) // <= Add model Phoenix Soul Star
{
b->RenderBody(RENDER_TEXTURE,o->Alpha,o->BlendMesh,o->BlendMeshLight,o->BlendMeshTexCoordU,o->BlendMeshTexCoordV,o->HiddenMesh);
}
- Change the condition in the RenderPartObjectBodyColor2() function in the ZzzObject.cpp filePHP Code:else if(Type >= MODEL_SWORD+32 && Type <= MODEL_SWORD+35) // ¸<= Change MODEL_SWORD+34 to 35
{
b->RenderBody(RenderType,Alpha,o->BlendMesh,o->BlendMeshLight,o->BlendMeshTexCoordU,o->BlendMeshTexCoordV);
}
3. Defining object colors.PHP Code:else if(Type >= MODEL_SWORD+32 && Type <= MODEL_SWORD+35) // ¸<= Change MODEL_SWORD+34 to 35
{
b->RenderBody(RenderType,Alpha,o->BlendMesh,o->BlendMeshLight,o->BlendMeshTexCoordU,o->BlendMeshTexCoordV);
}
- At the end of the function ( RenderPartObject() ) in which you define the color number, see below
- you will find the color switcherPHP Code:else if(g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+35)
Color = 76;
- add to the end switches a new casePHP Code:Bright *= Alpha;
switch(Color)
- Determine the case number according to the last registered case.
To generate R/G/B values, I recommend using the Glow editor.PHP Code:// Bloody Dragon Glove
case 76:Vector(
Bright*1.0f, // R
Bright*0.1f, // G
Bright*0.05f, // B
Light // It is not necessary to change this
);
break;
If you did everything right, you now have a new item for the Rage Fighter character in the game.
Adding a skill to the glove is not easy and I recommend using basic skill gloves 260 or 261.
I would like to thank the creator of the glove. I do not know who it is. If you know who it is. Write and I will add.
Last edited by leorond; 28-10-22 at 02:27 PM. Reason: Credit
Adding a new set is not difficult.
I got you a really nice one here.
Bloody Dragon Set
Thank you for the loan to VikingsMU.
And if you win with it
Set color
PHP Code:Vector(Bright*0.3f,Bright*0.05f,Bright*0.0f,Light);
![]()
Hello, Please if someone know how to fix these bugs
First, When I Open more than 1 MU Windows and try to take Screenshot in any one of them.. Both Took Screen Shots
How to seperate Each ScreenShot for current window only
Second, I added RF but I have This Problem
https://prnt.sc/akf6QYUXrW7O
![]()
Hi, it's pretty simple.
You have to find the standing animation and replace it with the existing one.
For example, in the ZzzCharacter.cpp file, this definition is in the SetPlayerStop() function
But you probably don't have the right player.bmd.PHP Code:#ifdef PBG_ADD_NEWCHAR_MONK_ANI
else if (GetBaseClass(c->Class) == CLASS_RAGEFIGHTER)
SetAction(&c->Object, PLAYER_STOP_RAGEFIGHTER); // <= PLAYER_STOP_MALE
#endif //PBG_ADD_NEWCHAR_MONK_ANI
Easy fix
1. Find and replace in the ZzzCharacter.cpp file all PLAYER_STOP_RAGEFIGHTER animations with PLAYER_STOP_MALE animations.
- - - Updated - - -
Could you elaborate more on the problem?
- - - Updated - - -
-If you need to settle an object, add a condition in the ZzzInventory.cpp file, in the RenderObjectScreen() function
You have to play around with the settings a bit.PHP Code:else if(Type == MODEL_ARMOR+21) // Great Dragon Armor
{
Position[0] -= 0.03f; // X position
Position[1] += 0.1f; // Y position
Vector(-90.f,0.f,0.f,ObjectSelect.Angle); // Rotation
}
Thx Alot @leorond.. Now RF Stands Right.
Do you have idea about this issue (When I Open more than 1 MU Windows and try to take Screenshot in any one of them.. Both Took Screen Shots
How to seperate Each ScreenShot for current window only)
there is new 8 bytes in SKILL_ATTRIBUTE in the end of the struct .. Found them ?
the items in the inventories. store and personal store I can't take or move the items. I thought it was an items error on the server side. update the files and nothing
- - - Updated - - -
there is also a small bug or glitch where when changing windows the game freezes and then takes a long time to resume
- - - Updated - - -
https://prnt.sc/aBr-iU24kEN0
- - - Updated - - -
SERVER SRC ITEM_ATTRIBUTE
CLIENT SRC ITEM_ATTRIBUTE
There is a difference in the structures, that will be the cause of my bug (if it is xd)
I was looking in Player.bmd for some animations.
I would come back to this fix.
Change definition to stop Rage Fighter
- From this definition in the _enum.h file
- Make this definitionPHP Code:PLAYER_STOP_RAGEFIGHTER ,
- Leave the action settings as followsPHP Code:PLAYER_STOP_RAGEFIGHTER = 283,
You get an original Rage Fighter stop animation.PHP Code:SetAction(&c->Object, PLAYER_STOP_RAGEFIGHTER);
@leorond Great this (PLAYER_STOP_RAGEFIGHTER = 283) Works Fine
Please I need help with Skills Structure
typedef struct // SIZE: 0x58
{
char Name[32]; // 0x00
BYTE Level; // 0x20
WORD Damage; // 0x22
WORD Mana; // 0x24
WORD AbilityGuage; // 0x26
BYTE Distance; // 0x28
int Delay; // 0x2C
int Energy; // 0x30
WORD Charisma; // 0x34
BYTE MasteryType; // 0x36
BYTE SkillUseType; // 0x37
BYTE SkillBrand; // 0x38
BYTE KillCount; // 0x3C
BYTE RequireDutyClass[MAX_DUTY_CLASS]; // 0x3D
BYTE RequireClass[MAX_CLASS]; // 0x40
WORD Magic_Icon; // 0x48
BYTE TypeSkill; // 0x4A
int Strength; // 0x4C
int Dexterity; // 0x50
BYTE SkillRank; // 0x54
BYTE IsDamage; // 0x55
WORD unk56; // 0x56
int unk58; // 0x58
} SKILL_ATTRIBUTE;
I am Getting Errors with skills
I use a slightly different structure
But I am loading the spells from a text filePHP Code:typedef struct
{
char Name[50];
BYTE Level;
WORD Damage;
WORD Mana;
WORD AbilityGuage;
BYTE Distance;
int Delay;
int Energy;
WORD Charisma;
BYTE MasteryType;
BYTE SkillUseType;
BYTE SkillBrand;
BYTE KillCount;
BYTE RequireDutyClass[MAX_DUTY_CLASS];
BYTE RequireClass[MAX_CLASS];
WORD Magic_Icon;
BYTE TypeSkill;
int Strength;
int Dexterity;
// => 27 arguments
} SKILL_ATTRIBUTE;
Try changing the size of the skills name
what about stack in visual studio?PHP Code:char Name[50];
Last edited by leorond; 02-11-22 at 08:17 PM.