Author Topic: Player Model Creation  (Read 981 times)

Hey, I need some help with a project I'm doing.

Mostly on the following.

  • How does blending work, exactly? How does it work? How would I make it work?
  • How should I distribute the animation to DSQs? Should I put basic animations within one DSQ and all the weapon animations in others?
  • How would I make it so that the player model adopts new DSQs that are compatible with it?
  • How do nodes work and how do I use them within the model?

Try looking at the Horse playertype. That might help.

He's talkin about the modeling part not script. I would help, but I dont know what differs from Blender and Ms3d. Did you use milkshape before?


He's talkin about the modeling part not script. I would help, but I dont know what differs from Blender and Ms3d. Did you use milkshape before?
Yes, but playertypes do involve scripting.

Well then, you know the basics of animations? Same thing usually. For the DSQ part, when you have the animation(s) done, export to tge plus, add the animation information in the box, check split DSQ export and export animations, and press export and it will make a .dts shape. Then, go back to TGE plus and press Export DSQ. This time, dont name the DSQ by its full name. Just use something (for example) like "bunny" and it will export all the animations in the box above.
All the .DSQs will be named (example) like bunny_walk or whatever you named the animation as.

Note, all player shapes needs to have a root animation(when the player stands still) or Blockland will crash.

So onto the scripting part.

For bunny, I have made a root, run, back, and crouch animation.

So Ill use the horse script for example

Code: [Select]
datablock TSShapeConstructor(HorseDts)
{
baseShape  = "./horse.dts";
sequence0  = "./h_root.dsq root";

sequence1  = "./h_run.dsq run";
sequence2  = "./h_run.dsq walk";
sequence3  = "./h_back.dsq back";
sequence4  = "./h_side.dsq side";

sequence5  = "./h_root.dsq crouch";
sequence6  = "./h_run.dsq crouchRun";
sequence7  = "./h_back.dsq crouchBack";
sequence8  = "./h_side.dsq crouchSide";

sequence9  = "./h_look.dsq look";
sequence10 = "./h_root.dsq headside";
sequence11 = "./h_root.dsq headUp";

sequence12 = "./h_jump.dsq jump";
sequence13 = "./h_jump.dsq standjump";
sequence14 = "./h_root.dsq fall";
sequence15 = "./h_root.dsq land";

sequence16 = "./h_armAttack.dsq armAttack";
sequence17 = "./h_root.dsq armReadyLeft";
sequence18 = "./h_root.dsq armReadyRight";
sequence19 = "./h_root.dsq armReadyBoth";
sequence20 = "./h_spearReady.dsq spearready"; 
sequence21 = "./h_root.dsq spearThrow";

sequence22 = "./h_root.dsq talk"; 

sequence23 = "./h_death1.dsq death1";

sequence24 = "./h_shiftUp.dsq shiftUp";
sequence25 = "./h_shiftDown.dsq shiftDown";
sequence26 = "./h_shiftAway.dsq shiftAway";
sequence27 = "./h_shiftTo.dsq shiftTo";
sequence28 = "./h_shiftLeft.dsq shiftLeft";
sequence29 = "./h_shiftRight.dsq shiftRight";
sequence30 = "./h_rotCW.dsq rotCW";
sequence31 = "./h_rotCCW.dsq rotCCW";

sequence32 = "./h_root.dsq undo";
sequence33 = "./h_plant.dsq plant";

sequence34 = "./h_root.dsq sit";

sequence35 = "./h_root.dsq wrench";

   sequence36 = "./h_root.dsq activate";
   sequence37 = "./h_root.dsq activate2";

   sequence38 = "./h_root.dsq leftrecoil";
}; 

Well mostly just do the usual stuff(rename datablocks/shapes ect.)
Just put the .dsq to the most logical function.

ex.

   sequence1  = "./h_run.dsq run";
   sequence2  = "./h_run.dsq walk";
   sequence3  = "./h_back.dsq back";
   sequence4  = "./h_side.dsq side";

to

   sequence1  = "./bunny_run.dsq run";
   sequence2  = "./bunny_run.dsq walk";
   sequence3  = "./bunny_back.dsq back";
   sequence4  = "./bunny_root.dsq side";// if you didnt make the side animation then just leave it as root



If you didnt make any .DSQ for a specific function, then change it to root.

Hope it helps.