-
Re: Unfinished source BMD (3dMesh) to SMD
Here decompiled to: 1.03h Jpn -> Season 4.5
Added Cross Shield to: Season II - with Glass Effect
http://i.imgur.com/2oPKq.jpg
Code:
Func2:
void gObjSetItemEffect2(UNK0 * arg1, UNK1 * lpMsg, int iID, float arg4, int arg5, float arg6, int arg7) //Completed
{
if(iID == ITEMID(0,26)) //Flameberge
{
func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), 5, -1);
}
else if(iID == ITEMID(0,27)) //Sword Breaker
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(0,28)) //Rune Bastard Sword
{
func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(5,30)) //Deadly Staff
{
func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1, arg7);
lpMsg->ukn3[0x94] = 1;
*(float*)(&arg1->ukn[0x48]) = 1.0f;
*(float*)(&arg1->ukn[0x4C]) = 1.0f;
*(float*)(&arg1->ukn[0x50]) = 1.0f;
func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(5,32)) //Unknown (weird but Season4.5 have it)
{
func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(6,19)) //Frost Barrier
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(6,20)) //Guardian Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,49)) //Seraphim Helm
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,50)) //Divine Helm
{
func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,53)) //Unknown (weird but Season4.5 have it)
{
func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(6,21)) //Cross Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else
{
OriginalEffectFunc2(arg1, lpMsg, iID, arg4, arg5, arg6, arg7);
}
}
void gObjSetItemEffect3(UNK0 * arg1, UNK1 * lpMsg, int iID, float arg4, int arg5, float arg6, int arg7) //Completed
{
if(iID == ITEMID(0,26)) //Flameberge
{
func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), 5, arg7);
}
else if(iID == ITEMID(6,19)) //Frost Barrier
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,49)) //Seraphim Helm
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,53)) //Unknown (weird but Season4.5 have it)
{
func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,50)) //Divine Helm
{
func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else
{
OriginalEffectFunc3(arg1, lpMsg, iID, arg4, arg5, arg6, arg7);
}
}
//Função 1
else if(iID == ITEMID(6,21)) //Cross Shield
{
glColor3f(1.0f, 1.0f, 1.0f); //OpenGL Set Color
func_5168A0(arg1, 0, 2, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
arg1->ukn[0x94] = 1; //Unknown value (need check)
func_5168A0(arg1, 1, 70, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), -((int)(*( float*)0x587C650))%2000, -1); //Shield Glass Effect Animation
func_5168A0(arg1, 2, 66, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
//Função 2
else if(iID == ITEMID(6,21)) //Cross Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
Code :
//Função 1
else if(iID == ITEMID(6,21)) //Cross Shield
{
glColor3f(1.0f, 1.0f, 1.0f); //OpenGL Set Color
func_5168A0(arg1, 0, 2, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
arg1->ukn[0x94] = 1; //Unknown value (need check)
func_5168A0(arg1, 1, 70, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), -((int)(*( float*)0x587C650))%2000, -1); //Shield Glass Effect Animation
func_5168A0(arg1, 2, 66, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
//Função 2
else if(iID == ITEMID(6,21)) //Cross Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
-
Re: Unfinished source BMD (3dMesh) to SMD
Amazing release, mmm btw maybe u can put Glass Effect with alpha channels modification too, and brightnes texture. But its good begining that u made.
-
Re: Unfinished source BMD (3dMesh) to SMD
I don't made this.. credits are for: Hermex :p:
-
Re: Unfinished source BMD (3dMesh) to SMD
i found 3 functions related to effects.
webzen coded effects for each item like cross shield, flameberge i added in season2. For example cross shield uses this formula "-((int)(*( float*)0x587C650))%2000" to make the cool glass animation and flameberge this one:
PHP Code:
float Formula1 = (((int)(( *(float*)0x587C650) * 0.05f )) % 16) / 4;
float Formula2 = Formula1 * 0.25f;
also the rotate thing from the mace is from one of those 3 functions too and uses a similar formula
Preview:
http://img521.imageshack.us/img521/3138/effectitem.png
btw i never tested different values to see what happens to it xD
-
Re: Unfinished source BMD (3dMesh) to SMD
Nice man :D with this we can add effects like glass and fire effect =) is good :)
This part of code is for main ... Seadon 2? What version Exactly ...?
-
Re: Unfinished source BMD (3dMesh) to SMD
Btw, the fire effect its only a illusion, already looks like fire because in
the .ozt the texture its fire frames, its like a .GIF image, u can changue this by lighting or changue the color to purple or green etc etc... mmm this u post its a source but how abouth the offset? search a float in ollyDBG its a kick in the as.
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
hermexjohn
i found 3 functions related to effects.
webzen coded effects for each item like cross shield, flameberge i added in season2. For example cross shield uses this formula "-((int)(*( float*)0x587C650))%2000" to make the cool glass animation and flameberge this one:
PHP Code:
float Formula1 = (((int)(( *(float*)0x587C650) * 0.05f )) % 16) / 4;
float Formula2 = Formula1 * 0.25f;
also the rotate thing from the mace is from one of those 3 functions too and uses a similar formula
Preview:
http://img521.imageshack.us/img521/3138/effectitem.png
btw i never tested different values to see what happens to it xD
Hey hermex, is lacking this:
Code:
g_ItemEffect.func_5168A0(arg1, 5, 66, Value_5, 5, Value_2, Value_3, Formula2, -1 );
Here I leave the last version of: AriethMu_S6.dll, unpacked. ready for decompilation.
DOWNLOAD --> for main: 1.08C+ -> 1.08.29 (Kor) Season 6 Episode 2
PS: I think that, the hermex code it's based in: 1.03h (Jpn) Season 4.5
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
mauro07
Hey hermex, is lacking this:
Code:
g_ItemEffect.func_5168A0(arg1, 5, 66, Value_5, 5, Value_2, Value_3, Formula2, -1 );
Here I leave the last version of: AriethMu_S6.dll, unpacked. ready for decompilation.
DOWNLOAD --> for main: 1.08C+ -> 1.08.29 (Kor) Season 6 Episode 2
PS: I think that, the hermex code it's based in: 1.03h (Jpn) Season 4.5
It's not easy to decompile, coz the important areas of code are virtualized...
-
Re: Unfinished source BMD (3dMesh) to SMD
Maybe u should create a new thread to discuss about this.... this thread start as a opensource bmd <> smd converter, and is becoming a main functions thread.
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
kinder32
Maybe u should create a new thread to discuss about this.... this thread start as a opensource bmd <> smd converter, and is becoming a main functions thread.
But is all related to models...
-
Re: Unfinished source BMD (3dMesh) to SMD
I tested the BMD.exe its really good, support also bigest model formats, i tested with Ixion Titan 3 and support fine,
http://i303.photobucket.com/albums/n...00_48-0019.jpg
http://i303.photobucket.com/albums/n...00_47-0008.jpg
http://i303.photobucket.com/albums/n...00_47-0006.jpg
999999999999 Helath
999999999999 Strenght
GOOD JOB BOYS
The only think i dont like its how the program finish convert the models, send a error message in windows 7, if can fix this please post update.
-
Re: Unfinished source BMD (3dMesh) to SMD
What BMD.exe ? Did i miss some source on this post ?
-
Re: Unfinished source BMD (3dMesh) to SMD
Anyone tryed out on new ex700 bmds?
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
WeHostXen
Anyone tryed out on new ex700 bmds?
What bmd's ?
Edit:
MuModels now have one new type of encryption... the value is 0x0E...
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
mauro07
Well, I for one am very busy with things at work now.. and honestly I have no time, but I leave the code compilable in: Visual C++ 2005 .NET + Solution + Compiled exe
BMD - SMD Converter Source for 2005.rar :thumbup1:
Credits: Gembrid (me only made some changes and compile his code)
PS: Gembrid You have some material on some OpenGL effects in main.exe such as Shine, Blur, Transparency, etc... to put them on certain items?
Link is dead, can you please post mirror ?
Quote:
Originally Posted by
rodrigobmg
What bmd's ?
Edit:
MuModels now have one new type of encryption... the value is 0x0E...
Are you saying that convert has now 4 hex values adding this new one?
Can you make an example?
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
WeHostXen
Are you saying that convert has now 4 hex values adding this new one?
Can you make an example?
No, in old mains the byte 0x0C determines if the bmd have or note encryption, now have one new type of encryption and the byte correspondent is the 0x0E. Later i will decompile the function to see how it work...
-
Re: Unfinished source BMD (3dMesh) to SMD
Thanks
Yeahm, looks like the 0x0E type of crypt is different, maybe they only changed the key table...
PHP Code:
if(hdr.crypt == 0x0E)
{
if(s < 4)
throw;
if( s < (*(int *)buf)+4 )
throw;
SimpDec(buf+4, s-4);
pbuf = buf+4;
}
else
pbuf = buf;
I tried using 0x0C routine to decrypt new EX700 models, OFC but no sucess..
Where should i look for new table? Maybe the Unpacked JPN MAIN ??
Mauka usually finds those in his sleep ! Come'n lazy guy help us here !
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
WeHostXen
Thanks
Yeahm, looks like the 0x0E type of crypt is different, maybe they only changed the key table...
PHP Code:
if(hdr.crypt == 0x0E)
{
if(s < 4)
throw;
if( s < (*(int *)buf)+4 )
throw;
SimpDec(buf+4, s-4);
pbuf = buf+4;
}
else
pbuf = buf;
I tried using 0x0C routine to decrypt new EX700 models, OFC but no sucess..
Where should i look for new table? Maybe the Unpacked JPN MAIN ??
Mauka usually finds those in his sleep ! Come'n lazy guy help us here !
Have one new way to decrypt it, i will decompile it later, now i'm on work. I will post here when i finish...
-
Re: Unfinished source BMD (3dMesh) to SMD
-
Re: Unfinished source BMD (3dMesh) to SMD
Never Fixed the conversion of the player.bmd
http://mu-warblood.comlu.com/imagen.gif
The walking its damaged and i follow all the steps.
-
Re: Unfinished source BMD (3dMesh) to SMD
Rofl, M.J wallking style :ott1:
-
Re: Unfinished source BMD (3dMesh) to SMD
So Mauka, any spare time for us?
-
Re: Unfinished source BMD (3dMesh) to SMD
Quote:
Originally Posted by
RIMBROS
Never Fixed the conversion of the player.bmd
http://forum.ragezone.com/f508/unfin...ml#post6853098
Quote:
Originally Posted by
Gembrid
also, FileList function requires 1st file to be reference file(load reference, append animations), so if there is only animation smds need to add additional file "???_000.smd" or "???.smd" (just copy 1st animation file and rename it)
-
Re: Unfinished source BMD (3dMesh) to SMD
Can someone reupload the compiled version? I want to test fenrir for 97d.
-
Re: Unfinished source BMD (3dMesh) to SMD
I copy player_001.smd and put like player_000.smd, then i drag the player_000.smd in the bmd.exe and the problem its the same.