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]

Joined
Jul 31, 2012
Messages
490
Reaction score
93
dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums


someone help me with this when activating the SCALEFORM

Go through the header links. A file must not be called more than once.
It can also be the same struct.

A lot of time spent looking for a bug.
Try an older version.
 
Initiate Mage
Joined
Aug 26, 2015
Messages
4
Reaction score
2
Fix Dark Raven Walk Visual:

Search in Function SetPlayerWalk :

else if ( c->Weapon[1].Type==MODEL_HELPER+5 && c->SafeZone) // ´ÙÅ©½ºÇǸ´ ¸¶À»¿¡¼­ Á¤Áö »óÅ { SetAction ( &c->Object, PLAYER_DARKLORD_WALK ); }

Change :

else if (c->SafeZone && c->m_PetInfo->m_dwPetType == PET_TYPE_DARK_SPIRIT) // -> Fix Dark Raven { SetAction(&c->Object, PLAYER_DARKLORD_WALK); }
 
Newbie Spellweaver
Joined
Jul 28, 2021
Messages
30
Reaction score
4
dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums


S3 downgrade 30%

season 3 is best for all mu online stages.



Go through the header links. A file must not be called more than once.
It can also be the same struct.

A lot of time spent looking for a bug.
Try an older version.
i can help you https://mega.nz/file/CGpnHIba#UfCOaFzJqzc2m3c9eJ2N0ayYtsIUrNNpCmieEpWVR_8
 
Joined
Oct 8, 2006
Messages
740
Reaction score
289
Does anyone working on adding 6.3 stuff to 5.2? Would be pretty cool to a get few people to work together on this.
Started working on it few days ago. Pretty much I'm messing around with it just to get familiarized with the code first.



If there's any on-going serious project which I can join, I'll be glad to.
 
Newbie Spellweaver
Joined
Nov 17, 2016
Messages
15
Reaction score
20
Does anyone working on adding 6.3 stuff to 5.2? Would be pretty cool to a get few people to work together on this.
Started working on it few days ago. Pretty much I'm messing around with it just to get familiarized with the code first.



If there's any on-going serious project which I can join, I'll be glad to.

I'm still working on it. I already have RF fully integrated. I am working now with the idea of Mu Helper.

You can use the .map of the Main s6.2 Thai here posted to try decompiling and reconstructing the mu helper

https://forum.ragezone.com/f508/development-map-main-exe-season-1163032/
 
Joined
Jul 31, 2012
Messages
490
Reaction score
93
You can use the .map of the Main s6.2 Thai here posted to try decompiling and reconstructing the mu helper

https://forum.ragezone.com/f508/development-map-main-exe-season-1163032/

Better to go your own way.


dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums


dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums


dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums


dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums


dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums


Rather than copying other people's mistakes.



One small but important fix for players.

When using ancient items and their properties.
As always, everything can be blamed on the server's adjustments and the effort to please all the players.

Let's take a look at this feature.

This function will restore or reload split points if you press the "C" key.

NewUICharacterInfoWindow.cpp
PHP:
void SEASON3B::CNewUICharacterInfoWindow::ResetEquipmentLevel()
{
	ITEM *pItem = CharacterMachine->Equipment;
	Hero->Weapon[0].Level = (pItem[EQUIPMENT_WEAPON_RIGHT].Level>>3)&15;
	Hero->Weapon[1].Level = (pItem[EQUIPMENT_WEAPON_LEFT ].Level>>3)&15;
	Hero->BodyPart[BODYPART_HELM ].Level = (pItem[EQUIPMENT_HELM].Level>>3)&15;
	Hero->BodyPart[BODYPART_ARMOR].Level = (pItem[EQUIPMENT_ARMOR].Level>>3)&15;
	Hero->BodyPart[BODYPART_PANTS].Level = (pItem[EQUIPMENT_PANTS].Level>>3)&15;
	Hero->BodyPart[BODYPART_GLOVES].Level = (pItem[EQUIPMENT_GLOVES].Level>>3)&15;
	Hero->BodyPart[BODYPART_BOOTS].Level = (pItem[EQUIPMENT_BOOTS].Level>>3)&15;

	CheckFullSet(Hero);	
}

If you have an ancient set on. After performing a character reset or redistribution of points, your special traits will not work. If you do not have the stats and level for the relevant set immediately after accessing the game.

We all use the old familiar method of splitting points (/add, /str, /agi, ...) and don't have the basic treatment in the game client.

Edit the function like this
PHP:
void SEASON3B::CNewUICharacterInfoWindow::ResetEquipmentLevel()
{
	ITEM *pItem = CharacterMachine->Equipment;
	Hero->Weapon[0].Level = (pItem[EQUIPMENT_WEAPON_RIGHT].Level>>3)&15;
	Hero->Weapon[1].Level = (pItem[EQUIPMENT_WEAPON_LEFT ].Level>>3)&15;
	Hero->BodyPart[BODYPART_HELM ].Level = (pItem[EQUIPMENT_HELM].Level>>3)&15;
	Hero->BodyPart[BODYPART_ARMOR].Level = (pItem[EQUIPMENT_ARMOR].Level>>3)&15;
	Hero->BodyPart[BODYPART_PANTS].Level = (pItem[EQUIPMENT_PANTS].Level>>3)&15;
	Hero->BodyPart[BODYPART_GLOVES].Level = (pItem[EQUIPMENT_GLOVES].Level>>3)&15;
	Hero->BodyPart[BODYPART_BOOTS].Level = (pItem[EQUIPMENT_BOOTS].Level>>3)&15;

	CheckFullSet(Hero);	

	g_csItemOption.init();

}

Go to the file WSclient.cpp
The function referenced by the split points command.
Change the first case (0x00), remove the message about the distribution of points, if you don't want it there, but the end is important.
PHP:
	case 0x00:	// ˝şĹČ»ýĽş Ľş°ř
		if(fruit >=0 && fruit <= 4)
		{
#ifdef KWAK_FIX_COMPILE_LEVEL4_WARNING_EX
			int index = 0;
#else // KWAK_FIX_COMPILE_LEVEL4_WARNING_EX
            int  index;
#endif // KWAK_FIX_COMPILE_LEVEL4_WARNING_EX
			
            switch ( fruit )
            {
            case 0: //  żˇłĘÁö.
				CharacterAttribute->Energy      += point;
                index = 168;
                break;
				
            case 1: //  ĂĽ·Â.
				CharacterAttribute->Vitality    += point;
                index = 169;
                break;
				
            case 2: //  ąÎø.
				CharacterAttribute->Dexterity   += point;
                index = 167;
                break;
                
            case 3: //  Čű.
				CharacterAttribute->Strength    += point;
                index = 166;
                break;
			case 4:	//: ĹëĽÖ
				CharacterAttribute->Charisma    += point;
                index = 1900;
				break;
            }
			
            CharacterAttribute->AddPoint += point;
			
			//unicode::_sprintf(strText, GlobalText[379], GlobalText[index], point, GlobalText[1412]);
			//SEASON3B::CreateOkMessageBox(strText);
			// ---- FIX ----------------------------------------------------------------------
			g_pCharacterInfoWindow->ResetEquipmentLevel();
			CharacterMachine->CalculateAll();
			// --------------------------------------------------------------------------------
		}
		break;

Now you have fixed the division of points via the command.
But now there is a problem with the necessary level for the ring / pendant.
Special options are not unlocked when leveling up an item.

Find this function in the WSclient.cpp file, look at the end of the function and edit it.
PHP:
void ReceiveLevelUp( BYTE *ReceiveBuffer )
{
	LPPRECEIVE_LEVEL_UP Data = (LPPRECEIVE_LEVEL_UP)ReceiveBuffer;
	CharacterAttribute->Level = Data->Level;
	CharacterAttribute->LevelUpPoint = Data->LevelUpPoint;
	CharacterAttribute->UpPoint = Data->UpPoint;
	CharacterAttribute->LifeMax = Data->MaxLife;
	CharacterAttribute->ManaMax = Data->MaxMana;
	CharacterAttribute->Life    = Data->MaxLife;
	CharacterAttribute->Mana    = Data->MaxMana;
	CharacterAttribute->ShieldMax = Data->MaxShield;
	CharacterAttribute->SkillManaMax = Data->SkillManaMax;
    
    //  Ăß°ˇµÇ´Â ˝şĹÝ Á¤ş¸.
    CharacterAttribute->AddPoint		= Data->AddPoint;
    CharacterAttribute->MaxAddPoint		= Data->MaxAddPoint;
	//	ż­¸Ĺ °¨ĽŇ Ć÷ŔÎĆ® Á¤ş¸
	CharacterAttribute->wMinusPoint		= Data->wMinusPoint;		// ÇöŔç °¨ĽŇ Ć÷ŔÎĆ®
    CharacterAttribute->wMaxMinusPoint	= Data->wMaxMinusPoint;		// ĂÖ´ë °¨ĽŇ Ć÷ŔÎĆ®
	
	unicode::t_char szText[256] = {NULL, };
	WORD iExp = CharacterAttribute->NextExperince - CharacterAttribute->Experience;
	sprintf(szText,GlobalText[486], iExp);
	g_pChatListBox->AddText("", szText, SEASON3B::TYPE_SYSTEM_MESSAGE);

    CharacterMachine->CalculateNextExperince();
	
	OBJECT *o = &Hero->Object;

	if(IsMasterLevel(Hero->Class) == true)
	{
		//		OBJECT *o = &Hero->Object;
		
		CreateJoint(BITMAP_FLARE,o->Position,o->Position,o->Angle,45,o,80,2);
		for ( int i=0; i<19; ++i )
		{
			CreateJoint(BITMAP_FLARE,o->Position,o->Position,o->Angle,46,o,80,2);
		}
	}
	else
	{
		for ( int i=0; i<15; ++i )
		{
			CreateJoint(BITMAP_FLARE,o->Position,o->Position,o->Angle,0,o,40,2);
		}
		CreateEffect(BITMAP_MAGIC+1,o->Position,o->Angle,o->Light,0,o);
	}
    PlayBuffer(SOUND_LEVEL_UP);

	// ---- Fix -------------------------------------------------------------------
	g_pCharacterInfoWindow->ResetEquipmentLevel();
	CharacterMachine->CalculateAll();
	// ----------------------------------------------------------------------------

#ifdef CONSOLE_DEBUG
	g_ConsoleDebug->Write(MCD_RECEIVE, "0x05ąŢŔ˝[ReceiveLevelUp]");
#endif // CONSOLE_DEBUG
}

Now if you kidnap an ancient item it will show you the properties.
I hope this fix helps someone.
 
Last edited:
Joined
Jul 31, 2012
Messages
490
Reaction score
93
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:
Joined
Jul 31, 2012
Messages
490
Reaction score
93
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 =>

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
PHP:
	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 LoadModelItemTexture() function
PHP:
	OpenTexture(MODEL_SWORD+35, "Item\\");	// ÇÇľî˝Ěşí·ąŔ̵ĺ
	OpenTexture(MODEL_SWORD_35_LEFT, "Item\\");
	OpenTexture(MODEL_SWORD_35_RIGHT, "Item\\");

- Add the following lines to the RegistItem() function
PHP:
	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));

- Add the following lines to the enum models in _enum.h
PHP:
	MODEL_SWORD_35_LEFT,
	MODEL_SWORD_35_RIGHT,
	MODEL_SWORD_35_WING,

2. Position in Inventory
- Add a condition for displaying the item in the inventory. In the RenderObjectScreen() function
PHP:
	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 scale of the object
PHP:
		else if(Type == MODEL_SWORD+35)
		{
			Scale = 0.0035f;
		}

- Set the object color in the PartObjectColor() function in the ZzzObject.cpp file
- I will describe the definition of colors (Glow) at the end of the tutorial
PHP:
	else if(g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+35)
		Color = 18;	// Sacred Fire Glove color
- Render the object in the RenderPartObjectBody() function in the ZzzObject.cpp file
PHP:
	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 RenderPartObjectBodyColor() function in the ZzzObject.cpp file
PHP:
	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);
	}
- Change the condition in the RenderPartObjectBodyColor2() function in the ZzzObject.cpp file
PHP:
	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.
- At the end of the function ( RenderPartObject() ) in which you define the color number, see below
PHP:
	else if(g_CMonkSystem.EqualItemModelType(Type) == MODEL_SWORD+35)
		Color = 76;
- you will find the color switcher
PHP:
	Bright *= Alpha;
	switch(Color)
- add to the end switches a new case
- Determine the case number according to the last registered case.
PHP:
	// 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;

To generate R/G/B values, I recommend using the .

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:
Joined
Jul 31, 2012
Messages
490
Reaction score
93
Adding a new set is not difficult.

I got you a really nice one here.



Thank you for the loan to VikingsMU.

And if you win with it

Set color
PHP:
Vector(Bright*0.3f,Bright*0.05f,Bright*0.0f,Light);

6 - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Apr 24, 2015
Messages
31
Reaction score
7
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


dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums

dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums
 
Experienced Elementalist
Joined
May 12, 2014
Messages
260
Reaction score
61
in main I use vs2008 + src Louis upd13 s6 and s4 also works

H8vLZQQ - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums



Hello, a question how to debug the inventory, the items do not appear in their place
 

Attachments

You must be registered for see attachments list
Joined
Jul 31, 2012
Messages
490
Reaction score
93
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


dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums

dsw_pool - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums

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

PHP:
#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

But you probably don't have the right player.bmd.

Easy fix
1. Find and replace in the ZzzCharacter.cpp file all PLAYER_STOP_RAGEFIGHTER animations with PLAYER_STOP_MALE animations.



Hello, a question how to debug the inventory, the items do not appear in their place

Could you elaborate more on the problem?



Hello, a question how to debug the inventory, the items do not appear in their place

-If you need to settle an object, add a condition in the ZzzInventory.cpp file, in the RenderObjectScreen() function
PHP:
	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
	}

You have to play around with the settings a bit.
 
Newbie Spellweaver
Joined
Apr 24, 2015
Messages
31
Reaction score
7
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 ?
 
Joined
Jul 31, 2012
Messages
490
Reaction score
93
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 ?

Try the condition in the image creation function, window activity.
I don't have multiple windows enabled. Limited to process and window name.
 
Experienced Elementalist
Joined
May 12, 2014
Messages
260
Reaction score
61
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



there is also a small bug or glitch where when changing windows the game freezes and then takes a long time to resume



https://prnt.sc/aBr-iU24kEN0



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)
 
Joined
Jul 31, 2012
Messages
490
Reaction score
93
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

PHP:
#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

But you probably don't have the right player.bmd.

Easy fix
1. Find and replace in the ZzzCharacter.cpp file all PLAYER_STOP_RAGEFIGHTER animations with PLAYER_STOP_MALE animations.

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
PHP:
	PLAYER_STOP_RAGEFIGHTER	,
- Make this definition
PHP:
	PLAYER_STOP_RAGEFIGHTER	= 283,
- Leave the action settings as follows
PHP:
SetAction(&c->Object, PLAYER_STOP_RAGEFIGHTER);

You get an original Rage Fighter stop animation.
 
Newbie Spellweaver
Joined
Apr 24, 2015
Messages
31
Reaction score
7
@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
 
Back
Top