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
Oct 29, 2007
Messages
1,267
Reaction score
1,284
If everything is delivered on the plate. Why is it so special just to add some skills? I'm not judging, but you know.. It gets annoying :D

Well, you know what they say: "The meaning of community or forum, is that we all have the right to have an equal opinion." In the same way that you dislike it, other people like it.
 
Joined
Jul 31, 2012
Messages
490
Reaction score
92
Hi, I'm glad this topic is reopening. I researched the source and launched it in combination with the 4.6 JPN season server. I fixed a lot of bugs in the files and added new wings and maps. I fixed a display error with HP, MP, SD, BP and DMG. It was also necessary to fix the PickupItems move, while holding the item and then closing the character inventory -> crash. The same problem in the cash shop. I hope that together we will solve all the problems in this topic.
 
Initiate Mage
Joined
May 21, 2021
Messages
2
Reaction score
0
Hi, I'm glad this topic is reopening. I researched the source and launched it in combination with the 4.6 JPN season server. I fixed a lot of bugs in the files and added new wings and maps. I fixed a display error with HP, MP, SD, BP and DMG. It was also necessary to fix the PickupItems move, while holding the item and then closing the character inventory -> crash. The same problem in the cash shop. I hope that together we will solve all the problems in this topic.

can u share the code modification pls? i'm also researching the source code and do some custom modify, and the first goal is 60 fps
 
Initiate Mage
Joined
Nov 14, 2021
Messages
2
Reaction score
2
I converted project to vs2019 (v142 toolkit).

All configurations compiles successfully so I assume it should work. I didn't test it well... I hope code is compatible with newer vc++ compiler.



Changes:


I think is a good starting point to develop something new.

To work with vs2019 you should update boost library to newest.

I can't zip the file and you don't specify the format or it is problematic, I tried with several programs 7.zip, WinRAR, PowerArchive 2021. None could unzip, please if possible resend the file in another universal and easily accessible format
 
Initiate Mage
Joined
Nov 14, 2021
Messages
2
Reaction score
2
as I didn't have an answer, I decided to look it up on my own. The format is Zstandard or ZS you need to download






as I didn't have an answer, I decided to look it up on my own. The format is Zstandard or ZS you need to download






as I didn't have an answer, I decided to look it up on my own. The format is Zstandard or ZS you need to download

 
Banned
Banned
Joined
Apr 29, 2015
Messages
161
Reaction score
15
as I didn't have an answer, I decided to look it up on my own. The format is Zstandard or ZS you need to download






as I didn't have an answer, I decided to look it up on my own. The format is Zstandard or ZS you need to download






as I didn't have an answer, I decided to look it up on my own. The format is Zstandard or ZS you need to download


you can use this one :
 
Joined
Jul 31, 2012
Messages
490
Reaction score
92
If you want to speed up loading and reduce the impact on memory.

I recommend starting with the ZzzOpenData.cpp file.

This is very bad!
PHP:
    //////////////////////////////////////////////////////////////////////////
    //  °Ë. MODEL_SWORD
    //////////////////////////////////////////////////////////////////////////
#ifdef _VS2008PORTING
    for(int i=0;i<17;i++)
#else // _VS2008PORTING
    for(i=0;i<17;i++)
#endif // _VS2008PORTING
      	AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword" ,i+1);    //  °Ë.

    AccessModel(MODEL_SWORD+17 ,"Data\\Item\\","Sword" ,18);    //  ´ŮĹ©şę·ąŔĚÄż.
    AccessModel(MODEL_SWORD+18 ,"Data\\Item\\","Sword" ,19);    //  Ľ±´ő şę·ąŔ̵ĺ.
    AccessModel(MODEL_SWORD+19 ,"Data\\Item\\","Sword" ,20);    //  ´ëõ»çŔÇ Ŕý´ë°Ë.

	AccessModel(MODEL_SWORD+20 ,"Data\\Item\\","Sword" ,21);    // ¸¶°Ë»ç Ăß°ˇ°Ë
	AccessModel(MODEL_SWORD+21 ,"Data\\Item\\","Sword" ,22);    // ±â»ç Ăß°ˇ°Ë
	AccessModel ( MODEL_SWORD+31, "Data\\Item\\", "Sword", 32 );	//	¸¶°Ë»ç ¸¶ąý°Ë.

What about?
PHP:
void OpenSwordItems()
{
	int i = 0;
	int maxSword = 32;

    for(i=0; i<maxSword; i++)	// <= Indicate the actual number of weapons.
	{
		//If you want to skip an item.
		if ((i >= 0 && i <= 21) 
			|| i == 31) 
		{
      			AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword" ,i+1);    //  °Ë.
		}
#ifdef ADD_SOCKET_ITEM
		else if ((i >= 26 && i <= 28))
		{
      			AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword_" ,i+1);    //  °Ë.
		}
#endif
		else if (i == 22)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "HDK_Sword");
		}
		else if (i == 23)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "HDK_Sword2");
		}
		else if (i == 24)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "CW_Sword");	
		}
		else if (i == 25)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "CW_Sword2");
		}
	}
}

It is much better to create a function that loads all sword models in one cycle.
Everything is in one place and there is no need to write anything outside the cycle.
It is not the cleanest solution.
It is better to load all swords in one way like Sword_XXX.bmd. Then there is no need to make an exception on the id.

The ZzzOpenData.cpp file is full of errors. These mistakes are really terrible and I can't explain how someone could have made them.
 
Joined
Jul 31, 2012
Messages
490
Reaction score
92
I optimize for you the functions of loading Models and textures of sets, weapons and shields.

Then I will share the ZzzOpenData.bmd file for you.

Then I will continue to work.
 
Experienced Elementalist
Joined
Apr 2, 2009
Messages
221
Reaction score
54
If you want to speed up loading and reduce the impact on memory.

I recommend starting with the ZzzOpenData.cpp file.

This is very bad!
PHP:
    //////////////////////////////////////////////////////////////////////////
    //  °Ë. MODEL_SWORD
    //////////////////////////////////////////////////////////////////////////
#ifdef _VS2008PORTING
    for(int i=0;i<17;i++)
#else // _VS2008PORTING
    for(i=0;i<17;i++)
#endif // _VS2008PORTING
      	AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword" ,i+1);    //  °Ë.

    AccessModel(MODEL_SWORD+17 ,"Data\\Item\\","Sword" ,18);    //  ´ŮĹ©şę·ąŔĚÄż.
    AccessModel(MODEL_SWORD+18 ,"Data\\Item\\","Sword" ,19);    //  Ľ±´ő şę·ąŔ̵ĺ.
    AccessModel(MODEL_SWORD+19 ,"Data\\Item\\","Sword" ,20);    //  ´ëõ»çŔÇ Ŕý´ë°Ë.

	AccessModel(MODEL_SWORD+20 ,"Data\\Item\\","Sword" ,21);    // ¸¶°Ë»ç Ăß°ˇ°Ë
	AccessModel(MODEL_SWORD+21 ,"Data\\Item\\","Sword" ,22);    // ±â»ç Ăß°ˇ°Ë
	AccessModel ( MODEL_SWORD+31, "Data\\Item\\", "Sword", 32 );	//	¸¶°Ë»ç ¸¶ąý°Ë.

What about?
PHP:
void OpenSwordItems()
{
	int i = 0;
	int maxSword = 32;

    for(i=0; i<maxSword; i++)	// <= Indicate the actual number of weapons.
	{
		//If you want to skip an item.
		if ((i >= 0 && i <= 21) 
			|| i == 31) 
		{
      			AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword" ,i+1);    //  °Ë.
		}
#ifdef ADD_SOCKET_ITEM
		else if ((i >= 26 && i <= 28))
		{
      			AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword_" ,i+1);    //  °Ë.
		}
#endif
		else if (i == 22)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "HDK_Sword");
		}
		else if (i == 23)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "HDK_Sword2");
		}
		else if (i == 24)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "CW_Sword");	
		}
		else if (i == 25)
		{
			AccessModel(MODEL_SWORD+i, "Data\\Item\\", "CW_Sword2");
		}
	}
}

It is much better to create a function that loads all sword models in one cycle.
Everything is in one place and there is no need to write anything outside the cycle.
It is not the cleanest solution.
It is better to load all swords in one way like Sword_XXX.bmd. Then there is no need to make an exception on the id.

The ZzzOpenData.cpp file is full of errors. These mistakes are really terrible and I can't explain how someone could have made them.

Only in webzen to work you need to be an initial student in the university.

It won't be a bad place to start.
 
Joined
Oct 29, 2007
Messages
1,267
Reaction score
1,284
If you want to speed up loading and reduce the impact on memory.

I recommend starting with the ZzzOpenData.cpp file.

This is very bad!
PHP:
    //////////////////////////////////////////////////////////////////////////
    //  °Ë. MODEL_SWORD
    //////////////////////////////////////////////////////////////////////////
#ifdef _VS2008PORTING
    for(int i=0;i<17;i++)
#else // _VS2008PORTING
    for(i=0;i<17;i++)
#endif // _VS2008PORTING
          AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword" ,i+1);    //  °Ë.

    AccessModel(MODEL_SWORD+17 ,"Data\\Item\\","Sword" ,18);    //  ´ŮĹ©şę·ąŔĚÄż.
    AccessModel(MODEL_SWORD+18 ,"Data\\Item\\","Sword" ,19);    //  Ľ±´ő şę·ąŔ̵ĺ.
    AccessModel(MODEL_SWORD+19 ,"Data\\Item\\","Sword" ,20);    //  ´ëõ»çŔÇ Ŕý´ë°Ë.

    AccessModel(MODEL_SWORD+20 ,"Data\\Item\\","Sword" ,21);    // ¸¶°Ë»ç Ăß°ˇ°Ë
    AccessModel(MODEL_SWORD+21 ,"Data\\Item\\","Sword" ,22);    // ±â»ç Ăß°ˇ°Ë
    AccessModel ( MODEL_SWORD+31, "Data\\Item\\", "Sword", 32 );    //    ¸¶°Ë»ç ¸¶ąý°Ë.

What about?
PHP:
void OpenSwordItems()
{
    int i = 0;
    int maxSword = 32;

    for(i=0; i<maxSword; i++)    // <= Indicate the actual number of weapons.
    {
        //If you want to skip an item.
        if ((i >= 0 && i <= 21) 
            || i == 31) 
        {
                  AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword" ,i+1);    //  °Ë.
        }
#ifdef ADD_SOCKET_ITEM
        else if ((i >= 26 && i <= 28))
        {
                  AccessModel(MODEL_SWORD+i ,"Data\\Item\\","Sword_" ,i+1);    //  °Ë.
        }
#endif
        else if (i == 22)
        {
            AccessModel(MODEL_SWORD+i, "Data\\Item\\", "HDK_Sword");
        }
        else if (i == 23)
        {
            AccessModel(MODEL_SWORD+i, "Data\\Item\\", "HDK_Sword2");
        }
        else if (i == 24)
        {
            AccessModel(MODEL_SWORD+i, "Data\\Item\\", "CW_Sword");    
        }
        else if (i == 25)
        {
            AccessModel(MODEL_SWORD+i, "Data\\Item\\", "CW_Sword2");
        }
    }
}

It is much better to create a function that loads all sword models in one cycle.
Everything is in one place and there is no need to write anything outside the cycle.
It is not the cleanest solution.
It is better to load all swords in one way like Sword_XXX.bmd. Then there is no need to make an exception on the id.

The ZzzOpenData.cpp file is full of errors. These mistakes are really terrible and I can't explain how someone could have made them.

English:

I think that it would even be much better to optimize these loops for loading objects and textures through the use of iterator vectors, of course memory management would become a little more difficult, but at least this way, you can make sure to host the amount of memory sufficient and necessary for its proper functioning, without the need to over-demand the capabilities of your processor.

The very indiscriminate use of multiple variables of the integer type (due to the size in BYTES of this type of data), is a bit inconvenient. iterator vectors would give you the possibility of managing memory in more dynamic ways, through the use of 1 type of repetition structure + the implementation of some scripting system external to the code, in this way, a lot of memory is saved.

Small Example:

Code:
#define NONE        -1
#define MAX_MODEL_PATH    260

typedef struct
{
    int    Type;
    int    Index;
    char    ModelPath[MAX_MODEL_PATH];
}ITEM_MODEL,*LPITEM_MODEL;

void CResources::OpenItems()
{
    for(std::vector<LPITEM_MODEL>::iterator it=this->m_ItemModel.begin();it !=this->m_ItemModel.end();it++)
    {
        if(it->Type == 0)
        {
            if(it->Index >= NULL)
            {
                sprintf_s(it->ModelPath,"Sword%d",it->Index+1);
                AccessModel(MODEL_SWORD+it->Index,"Data\\Item\\",it->ModelPath,NONE);
            }
        }
        else if(it->Type == 1)
        {
            if(it->Index >= NULL)
            {
                sprintf_s(it->ModelPath,"Axe%d",it->Index+1);
                AccessModel(MODEL_AXE+it->Index,"Data\\Item\\",it->ModelPath,NONE);
            }
        }
    }
}

Spanish:

Creo que incluso sería mucho mejor optimizar estos bucles para cargar objetos y texturas mediante el uso de vectores iteradores, por supuesto, la administración de la memoria se volvería un poco más difícil, pero al menos de esta manera, puede asegurarse de alojar la cantidad de memoria suficiente y necesaria para su correcto funcionamiento, sin necesidad de sobreexigir las capacidades de su procesador.

El uso muy indiscriminado de multiples variables del tipo enteras (por el tamaño en BYTES de este tipo de dato), es un poco incoveniente. los vectores iteratores le darían a usted la posibilidad de manejar la memoria de formas mas dinamicas, por medio del uso de 1 tipo de estructura de repetición + la implementación de algún sistema de script externo al código, de este modo, se ahorra mucha memoria.
 
Last edited:
Joined
Jul 31, 2012
Messages
490
Reaction score
92
Yes, this is how the solution may look. As a result, however, the difference will be almost imperceptible to today's players. Important in this fix is ​​to eliminate unnecessary cycling and reduce script processing time to a minimum. That's right, as you write, everything, including textures and models, should be placed in one cycle, ideally using structure. However, players now have enough memory to store and therefore it is not necessary. However, as I write, this is a sufficient solution for loading textures and models.
 
Back
Top