- Joined
- Oct 29, 2007
- Messages
- 1,290
- Reaction score
- 1,310
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
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.
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.
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.
You must be registered to see links
Changes:
I think is a good starting point to develop something new.
To work with vs2019 you should update boost library to newest.
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 downloadYou must be registered to see links
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 downloadYou must be registered to see links
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 downloadYou must be registered to see links
someone still working on this?
//////////////////////////////////////////////////////////////////////////
// °Ë. 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 ); // ¸¶°Ë»ç ¸¶ąý°Ë.
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");
}
}
}
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.
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.
#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);
}
}
}
}