Jump to content

Recommended Posts

Posted

I guess it's because of the Bink1 image compression format, I think granny 2.1.0.5 supports only Bink0 compression. I'll have to work on a conversion process for that as well. In the meanwhile, I've tried exporting with that texture format directly, but it would be really annoying to set it manually everytime.

pyramid_converted.rar

  • Upvote 1
Posted

OMG I tested the new one in game, but seems that lemara allready posted a screen.

And yeah it show perfectly in game..... Ricky92 thanks a lot man. This couldn't be possible without your help.

Posted

Okay, I can try exporting the dragon again, but I want to test animations now. Could someone explain to me how animations work in RO? I mean, what animations are used for mobs, like "walk", "attack", etc. Also, if this last test works I will release the converter soon, I just need to write the Bink1 conversion routine and maybe a GUI, so that it will be more intuitive.

  • Upvote 2
Posted

Seems like the animation indexes(?) are static and uses the following IDs:

void __thiscall C3dGrannyGameActor::SetAction(C3dGrannyGameActor *this, int action, int speed, int type)
{
 C3dGrannyGameActor *v4; // esi@1
 struct granny_control **v5; // edi@10
 signed int v6; // ebx@10
 int v7; // eax@12

 v4 = this;
 this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 0;
 switch ( action )
 {
case 48:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 4;
  break;
case 80:
case 88:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 2;
  break;
case 64:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 3;
  break;
case 0:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 0;
  break;
case 8:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 1;
  break;
case 24:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 5;
  break;
case 32:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 11;
  break;
case 40:
  this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 12;
  break;
default:
  break;
 }
 this->m_nLastActAnimation = this->baseclass_0.baseclass_0.baseclass_0.m_stateId;
 v5 = this->m_Control;
 v6 = 20;
 do
 {
C3dGrannyModelRes::DeActAnimation(v4->m_GrannyActorRes, *v5);
*v5 = 0;
++v5;
--v6;
 }
 while ( v6 );
 v7 = v4->m_nLastActAnimation;
 LODWORD(v4->m_GameClock) = 0;
 if ( type == 1 )
v4->m_Control[v4->m_nLastActAnimation] = C3dGrannyModelRes::ActAnimation(
										   v4->m_GrannyActorRes,
										   v7,
										   v4->m_Instance,
										   v4->m_Control[v7],
										   1);
 else
v4->m_Control[v4->m_nLastActAnimation] = C3dGrannyModelRes::ActAnimation(
										   v4->m_GrannyActorRes,
										   v7,
										   v4->m_Instance,
										   v4->m_Control[v7],
										   0);
}

void __thiscall CGrannyPc::SetAction(CGrannyPc *this, int action, int speed, int type)
{
 if ( this->m_GrannyActorRes )
 {
this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 0;
switch ( action )
{
  case 48:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 4;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 80:
  case 88:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 2;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 64:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 3;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 0:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 0;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 8:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 1;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 24:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 5;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 32:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 11;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 40:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 12;
	CGrannyPc::SetGrannyAction(this, type);
	break;
  case 16:
	this->baseclass_0.baseclass_0.baseclass_0.m_stateId = 6;
	goto LABEL_12;
  default:
LABEL_12:
	CGrannyPc::SetGrannyAction(this, type);
	break;
}
 }
}

I'll try to discover what are each ActionID, maybe they are indexed like ACTs files are.

Posted

example ragnarok model animation

MODEL

name(rotate degree)_(id animation) model can rotate 0 or 90 and model can have animation stand

ANIMATION *Bone only

(id animation)_(animation) "walk,damage,attack,dead" but animation id works only 1-9 for show animation in game

text_animation(name_abc..) = animation for empelium stand

1_animation(name_1) = animation for guildflag

2_animation(name_2) = animation for treasurebox

7_animation(name_7) = animation for king guardian

9_animation(name_9) = animation for sword guardian

8_animation(name_8) = animation for bow guardian

animation id 7,9,8 work stand animation other id not work stand animation

unoccupied animation id = 3,4,5,6 other id not work but ragnarok can add custom static model mob no limit same sprite

example

name(rotate degree)_.gr2

/whisp i think you understand

3dmob.rar

  • 2 weeks later...
  • 4 weeks later...
Posted

Hi there.

Ricky Has been like away for 2 weeks. Maybe due to personal reasons that we don't know at the moment.

I tried to contact him on skype but he has not replied yet. Hope he will back soon since the project was like... almost on its final steps. It would be a shame.

Posted

I don't think it is dead.

I'm sure he will be in contact very soon. The tool was really on a high state of development; It doesn't makes a sense to stop now when a big part is allready done.

Let's wait.

Posted

The project is not dead, I'm sorry. I haven't been able to work on it much, and, quite honestly, I had almost forgot about it.

The converter is working (at least I hope), but it can just convert one file at a time, and it is still full of memory leaks. I will need just a week or so to tweak it and maybe make a graphical interface for it.

In the meantime, if anyone wants to donate for my work:

btn_donateCC_LG.gif

I've put a lot of effort into this converter, and I will offer it free of charge. Any donation is greatly appreciated.

  • Upvote 6

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...