HeroEngine Forums

HeroEngine Support => Design & World Building => Topic started by: DPontious on Nov 03, 15, 03:59:37 PM

Title: importing
Post by: DPontious on Nov 03, 15, 03:59:37 PM
Looking for info on a a subject matter, looking for info on how to swop out the default charator. Also if i have another one made with bones could it be swoped in her place?
Title: Re: importing
Post by: ToY-Krun on Nov 03, 15, 04:06:21 PM
If I understand right, you want to add a custom character model to the game?


If thats right, you don't want to try to "replace" the default character, that would take more effort
than its worth and its not necessary.

a number of questions first...
Have you exported your custom character model from 3DSMax or Maya in the HGM format?

Have you set up your Repository Browser on your computer?

If so, we can help you get your character model uploaded (if you haven't already) and
help you add your character as a valid choice of character specs to use rather than the default.


this info will help determine where to begin trying to help you out!


Thanks
Title: Re: importing
Post by: DPontious on Nov 03, 15, 04:10:40 PM
Ok. Awesome, i have not exported as of yet.  That was one step i still not sure of.  I do have  Repository Browser set up.
Title: Re: importing
Post by: ToY-Krun on Nov 03, 15, 04:20:14 PM
Okay, lets take it a step at a time then,

Do you have 3DSMax or Maya setup to use the HeroTools?

If so, do you understand how to set the model up to export it?

You'll have to make sure your textures are in .dds format and in the repository.
then create your materials for the model and make sure the textures used point to the
ones in the repository.

Are you at this point?
Title: Re: importing
Post by: DPontious on Nov 03, 15, 04:37:11 PM
I do not ,that i know of have 3ds max setup to ise the hero tools. And not sure how to send up model. Only thing done is made model at this time.  Thanks for taken the time bu the way
Title: Re: importing
Post by: ToY-Krun on Nov 03, 15, 05:10:42 PM
Its no problem.


follow the directions on this page and make sure the script is added to 3DSMax and you can access the
HeroExporter and HeroCharacterTools


http://wiki.heroengine.com/wiki/Setting_up_3ds_Max

Title: Re: importing
Post by: DPontious on Nov 03, 15, 05:16:24 PM
Ok, yeah that has been set up. 
Title: Re: importing
Post by: ToY-Krun on Nov 03, 15, 05:28:55 PM
okay, did you replace the original "standard" materials with Hero materials and set the diffuse and/or normals to point to the .dds textures in your repository?
Title: Re: importing
Post by: ToY-Krun on Nov 03, 15, 05:37:46 PM
Somewhat of a walkthrough from the point of uploading your .dds textures (scaled to power of 2 sizes only of 1024 or less unless you have a 2048 you absolutely need for some reason)



using PS or Gimp or whatever you use, export your textures as .dds using dxt1 compression, and generate mipmaps
(unless you handles the mips otherwise yourself)

create/use existing folder in your repository and move your .dds textures to that folder.
Open the repository browser and if its a new folder, drag the folder to the proper location in the repository,
Else, drag them to the exact same directory as your local drive and upload them to the server.

3DSMax:
now replace the "standard" materials with "Hero" materials and point them to the correct textures in the folder of your repository.  Make sense?


You can only (and only need) a single mesh to initially create the character model.
Select one body mesh as the initial mesh and hide all others (don't hide your skeleton or rig)

Now check your skin and under advanced parameters affected bones is probably set to 20, change this to 4 or you'll get errors.

If you didnt use skin but used physique, don't worry about it then.

now make sure that the only animation active currently is your idle animation, nothing else.
if its not, you need to isolate it using the Hero Animation tools panel.

Let me know if you're this far along.

thanks

Title: Re: importing
Post by: DPontious on Nov 03, 15, 06:18:21 PM
K got it
Title: Re: importing
Post by: ToY-Krun on Nov 03, 15, 06:31:39 PM
okay, now open the Hero Character Tool.

First, enter (without spaces) the name of this character, as it will appear in the characterSpecs
 (example: HumanMale)

Then click to set the HE directory
then click to set the character directory (note it MUST be the /character/dynamic_2 folder or within it)
The tools will auto create a folder within that selected folder using the name of your character you entered above.

so if your character name was HumanMale, selecting /character/dynamic_2 as your character directory would result in
/character/dynamic_2/HumanMale/*character folders and files inside*

now, make sure your mesh is selected, and the character type is set to dynamic (if you're doing a static char let me know as its different)

click the get selected mesh

click create SRB
if this causes an error, let me know what it says and pause at this point.

if no errors, click create character.

if you get any errors that says "has stopped responding blah blah " click okay/or continue or whatever and it will continue.  sometimes this may happen once.  if it happens twice, theres a problem. let me know.

wait for it to complete before doing anything else (you'll have a command window open during all this , it will close
when done.)

copy the text line if ya like that registers the spec (/henpc blah blah blah) and save it.  YOu can get it from the text file thats generated with the character if you lose it.

at this point, IF NO ERRORS, in the Local repository, find the folder that was just created as described above.

Drag that folder to the server repo in the same exact folder as you have on your local repo.

At this point the character is exported, and is uploaded to the server.

Let me know if you have any problems with this. 

Almost done.
Title: Re: importing
Post by: DPontious on Nov 03, 15, 08:40:23 PM
Ok so far so good
Title: Re: importing
Post by: ToY-Krun on Nov 03, 15, 10:03:54 PM
okay now at this point, you need the line of text i mentioned (you can find it in the .txt file in the characrers folder on the repo).

copy paste that into the chat channel in the blade and your char spec should be registered.

Did you use a full body mesh as the intial mesh?

if so, once its registered, hit F5  choose character registry and then find your characterspec.
select it, click create Npc and voila, you should find your char model at your location.


Let me know if you have any probs with this..

At this point it requires some scripting to allow you to "Play" as that new char.

If you have other body parts that need to be added, I can walk you through adding those  to your char now that it is setup.

Let me know.
Title: Re: importing
Post by: keeperofstars on Nov 07, 15, 07:20:01 AM
not to interject, but Toy-Krun can you whip up the last bit and all of these thread parts into a tutorial when you get a chance? Thanks could really help others. :)
Ok back to your normally scheduled assistance.
Title: Re: importing
Post by: ToY-Krun on Nov 07, 15, 09:22:57 PM
Yeah, I thought about that.  When I get a chance I'll put it all together. 

@DPontius:
if you've reached the point described above,  you'll need to create an npc as described using your
character spec, to make sure it loads up right with no issues.
if you have other body parts for the char, you can now add those, which requires altering the parts file
for that character, as well as exporting those parts using the HeroExporter tool to export the parts individually.

If you have the entire character model ready and uploaded, AND can create an npc from that character spec with no
errors (i.e. it shows up right in the game), it will only stand idle until you give it a walk/run animation.
(as an npc it "may" move around, but will remain in the idle pose)

That finishes the task of importing the model itself, the remaining work is done by editing the .aas files and the animation.dat file, after you have exported your additional animations.  Thats a whole different subject, yell if you need further help.
Title: Re: importing
Post by: DPontious on Nov 23, 15, 09:21:03 AM
ok, everything uploaded with no errors, well there was UV thing.  But when opening f5 Boxman3 is there he just will not spawn.
Title: Re: importing
Post by: ToY-Krun on Nov 23, 15, 09:28:07 AM
Okay, in 3DSMax  select the same body part (mesh) you used for the initial export when you used Character Tools.
Now open the Hero Exporter tool (Not the Character Tools) and tick the radio button at the top that says Dynamic Character Part.

With your initial mesh selected, click Export Selected.

Find the folder you exported your character to (with the same name as the Character) and open the "Parts" sub-folder.

OverWrite the original .hgm file that corresponds with the Mesh/body part you are working with.

Now open the Repository Browser, and upload that body part again.

then test your model again using F5 / Character Registry.

Title: Re: importing
Post by: DPontious on Nov 23, 15, 10:00:05 AM
ok, Did as instructed, nothing happens when i hit create NPC 
Title: Re: importing
Post by: ToY-Krun on Nov 23, 15, 10:25:09 AM
any errors in the console panel or the error panel when trying to create the Npc?

also could you post a SS of the material manager panel in 3DSMax with the material selected that you're
using for the model, as well.
also in the SS, include the Modify panel open, mesh selected, and if you're using a skin, the skin/advanced parameters
expanded Please.



thanks
Title: Re: importing
Post by: DPontious on Nov 23, 15, 11:23:14 AM
ok, no prob ill well do that most likely tomorrow morning.  thanks
Title: Re: importing
Post by: Amarak on Nov 23, 15, 07:39:54 PM
If you used the character exporting described here, you may need to re-export the skeleton. Using Hero Export in Max, select the "Dynamic Skeleton" option and export just the skeleton again. I have to do that every time or it doesn't show up in the engine.
Title: Re: importing
Post by: DPontious on Nov 25, 15, 09:21:47 AM
here are the SS you ask for, also i have spawned a few npc via the f5 command and i cant get rid of them how do i do this.   
Title: Re: importing
Post by: ToY-Krun on Nov 25, 15, 12:48:07 PM
Its best to test your models in a "Play" instance , indicated by a number after the area name in the bottom right corner of the blade.  An "Edit" instance will have "Edit" after the area name.

This way, the models are not stored to the Areas .dat file, and you can test all you want.

To get rid of them, in the chat panel/chat window type :
/henpc list npcs

This should print out any npcs with their name in the chat panel.
Then you can type:
/henpc delete "npcname"   
for each one of them to get rid of them.

now as for the model itself, I'm uncertain as to how the Exporter would handle the UnWrap UV modifier in the case of a dynamic character...   Without saving your max project, I would try applying the UnWrapUV BEFORE the skin, AND,
CollapseTo, to commit the UnWrapUV to the mesh, THEN apply the skin modifier.  You should be able to leave the skin modifier NOT collapsed.   This should get rid of the error you're getting when exporting the model.


You'll get the "process has stopped" error sometimes "Once", during intial character export, but you should NOT get it at all during an export of a Dynamic Character Part by itself.

So, try the changes mentioned above and re-export the mesh as a dynamic character part using the Hero Exporter tool.  If that works, you should get no errors.  Upload it, and if you see your character now, then thats solved it.
If you don't see your character now, Also export the dynamic character skeleton as amarak mentioned (it might not have exported right due to errors the first go round).  To export the skeleton, UNselect everything, and choose Dynamic Skeleton in the Hero Exporter (make sure skeleton is visible) and click export UnHidden.
Should get No errors.   Upload it and try again.

I've never gotten this type of error in max using the exporter, however I also have not used any modifiers other than Skin on a Dynamic Character.   

(Just as a Note, You CAN successfully export a static model (barn, rock etc) using the UnWrapUV modifier in the stack, even when its not collapsed.)

Let me know how that goes.
Title: Re: importing
Post by: ToY-Krun on Nov 25, 15, 01:49:57 PM
Don't let this frustrate you!

Once you get it working, just use the exact same steps every time from then on, and it becomes
quite easy.   After you get the hang of it, you can probably export models (barring the time you spend working on the model itself) in roughly 5 mins per model/body part etc.

A set of steps I use each time:

PreCheck:
make sure textures are converted to .dds AND are scaled to a power of 2 (64/128/512/1024)
and then upload textures to the repo, preventing a spam of errors if i accidentally upload the model
before i upload the textures.

1. check my material to make sure I've already uploaded the right texture to the right folder in the repository.

2. double check my material to make sure all settings are correct (diffuse/normal settings, collide/ignore etc)

3. check object properties on the mesh im using and make sure there are no user defines that might cause issues.

4. Check the skin(if im using Skin) to make sure the max bones affected is 4.

5. make sure the rig is NOT in Pose mode

6. Using the Animation Tools , make sure I have the right animation selected (If im exporting as a character)

For exporting any body part:
7. Make absolute sure the model is in the exact same pose/animation that I exported the original character model.

8. Make sure the SRB or GrannyRootBone has the proper settings in the Hierarchy/links tab.
    Make sure to lock/inherit anything proper for the current animation (idle, walk etc)

9. Hide everything except the mesh I currently need to export (keeping the rig visible)

10. Export the body part/character using the proper tool.
Title: Re: importing
Post by: DPontious on Nov 26, 15, 07:22:56 AM
AWEWSOME! CollapseTo was the key! he is in, with an idle animation.  Thanks 1000 times over. i figured i would build boxman to practus and learn the syustem before i jump in with real stuff.  i can always start adding Parts to him to learn that as well.      isn't there a way to copy an .dat animation file to paste in Boxman .dat file.   again thanks
Title: Re: importing
Post by: ToY-Krun on Nov 26, 15, 10:36:35 AM
Great!
Yeah it helps to take a simple model to learn from and then get more complex.

Sure you can copy the .aas files.  but not so easy to copy .dat files.

Look in either character OR dynamic or dynamic_2 folder for an Animation folder in the repo.
Start with an idle one and copy it to your characters directory.  Make sure its not read only, and edit it to change the file name to the exact name as your animation (idle)  and change the anim name in the script itself to the proper name.

for your animations themselves (.hgm) you CAN use animations from other models but they wont match your rig, so , you'll likely wind up with a squashed char moving around or a pancake, or a ctd.   its fun to animate yourself, but there are also literally thousands of free motion caption files in archives and data bases all over the u.s. and available on the internet.  These can easily be turned into biped animations for your chars.  with some work cleaning them up and editing them just right, you can get plenty of animations without a whole lot of work.

See this page:http://wiki.heroengine.com/wiki/Character_Animations (http://wiki.heroengine.com/wiki/Character_Animations)
Pay careful attn to Animation Sets
Animation sequences, animation agent scripts, and animation files links.

for every animation you add, you'll need to:
Add it to the Animation.dat file
Add a .asq file for it
Add it to the BoxMan.aas

these can be tricky at first, look over the links above to better understand them.
Title: Re: importing
Post by: Amarak on Nov 26, 15, 10:46:38 AM
I was thinking the UV Unwrap might be the problem but I was going to test it before I said anything. I've had similar problems with other modifiers in the stack.
Title: Re: importing
Post by: ToY-Krun on Nov 26, 15, 11:59:31 AM
well, i didn't test it first,(should have i know  ::) ) but it was the only thing I could see that didnt fit my list rofl.
I'll have to add that check to my list now.
Title: Re: importing
Post by: DPontious on Dec 01, 15, 10:31:50 AM
ok, made a basic walk animation, but the option for animation will not let me click on it. 
Title: Re: importing
Post by: ToY-Krun on Dec 01, 15, 12:40:04 PM
Use the VDA anim option,
Then use the Export Unhidden option.


The "Old" method will block itself out if you try to click it.
Title: Re: importing
Post by: DPontious on Dec 01, 15, 03:49:36 PM
ok, cool yeah I was confused it gave me a .hgm file, but I see now. im taking it that once I manually place the walk.hgm. I will need to right its own .asq?
Title: Re: importing
Post by: ToY-Krun on Dec 01, 15, 04:05:02 PM
correct, you can copy the idle.asq and change the name to "walk.asq" and edit it to change the name inside too.
the name must be exactly the same as the animation.

Also you'll need to edit the Animation.dat file and add your new animation (walk) to the list, just beneath idle.

Animation.dat
Code: [Select]
!
!Basic AnimationSet.dat with a tempalte idle sequence listed
Version=1
[SEQUENCES]
  idle
  walk
  run
  walkrun


you'll need to change its properties, its read only.
also change properties of "yourcharacterName".aas to NOT read only, and edit it to add your new walk animation.

Here is a very basic implementation of ours for a simple character, but it contains animation references that you do not have, BUT you can either add them, or change the names to match animations that you create.


there may also be some variables that you don't have set up like Pose etc,

you can replace the contents of your "mycharacterName".aas with this:


YourCharcterName.aas

Code: [Select]
! biped control
!
!

channels
{
  AnimAllBody
  //WeaponRightHand
  //Impact
}


inputs
{
  BaseMode = Normal, Combat, Pose
  BasePosture = Idle, Turning, Moving, Dead, Alive
  variable IdleType = Normal, Dead, Ready
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable MoveType = Normal, Swim
  variable AlreadyTurning =  True, False
  variable OverridePosture = None, Jumping, Falling, Landing, Dead
  variable CurrentMotion = CombatMove, Idle, TurningLeft, TurningRight, Forward, Backingup
// basic input modifiers
  variable PoseType = None, SnapShot
//combat
  variable Attacking = None, Sideslash, Swipe, Laser, SpellcastLeft
  variable ImpactHit = None, Blam
}

transition OverridePosture {
  from None to Jumping = DoJump
}

transition MoveType {
  from Normal to Swim = EnterSwim
  from Swim to Normal = LeaveSwim
}

transition BasePosture {   
  from Idle to Dead = trDie
  from Moving to Dead = trDie
 
  from Turning to Dead = trDie
  }
 

transition BaseMode {
  from Normal to Combat = trGetReady
  from Combat to Normal = trCalmDown
 
  from Normal to Pose = EnterPose
  from Combat to Pose = EnterPose
 
  from Pose to Normal = ReleasePose
  from Pose to Combat = ReleasePose
}

action ReleasePose
{
change PoseType to None
}

action EnterPose
{
force (1) AnimAllBody {
when PoseType {
Default:
                                anim "pose"
looping true
hold 0
align false
blend 0
change AlreadyTurning to False
change CurrentMotion to Idle
change ImpactHit to None
}
}

}

action EnterSwim
{
  force(1) AnimAllBody{
    when BasePosture {
  is Idle:
    anim "idle"
      //align false
    //blend 0.1
    //hold 0 seconds
    //looping true
    change AlreadyTurning to True
    change CurrentMotion to Idle
  is Moving:
    when MoveDirection {
    is Forward:
        anim "walk"//run"
        blend 0.1
        hold 0 seconds
        change CurrentMotion to Forward
      is Backward:
        anim "walk_backwards"
        blend 0.1
        hold 0 seconds 
        change CurrentMotion to Backingup 
      }
    }
  } 
}

action LeaveSwim
{
  force(1) AnimAllBody{
    when BasePosture {
  is Idle:
    anim "idle"
      align false
    blend 0.3
    hold 0 seconds
    looping true
    change AlreadyTurning to False
    change CurrentMotion to Idle
  is Moving:
    when MoveDirection {
    is Forward:
        anim "walk"//run"
        blend 0.3
        hold 0 seconds
        change CurrentMotion to Forward
      is Backward:
        anim "walk_backwards"
        blend 0.3
        hold 0 seconds 
        change CurrentMotion to Backingup 
      }
  }
  } 
}

action DoJump
{
  force(1) AnimAllBody
  {
    anim "jump"
    blend .025
    hold 1
    looping false
    FreezeLastSequence true
    change OverridePosture to Falling
  }
}

action trGetReady
{
   change IdleType to Ready
}

action trCalmDown
{
   change IdleType to Normal
}

action trDie
{
  force(1) AnimAllBody
  {
    if(OverridePosture != Dead) {
      anim "death"
      hold 1
      blend 0.1
      align false
      looping false
      change IdleType to Dead
      change AlreadyTurning to False
      change CurrentMotion to Idle
      change Attacking to None
      change OverridePosture to Dead
    }
  } 
}

action PoseBehaviors {
set(1) AnimAllBody
{
when PoseType {
is None:
return
DEFAULT:
anim "pose"
looping true
hold 0
align true
blend 0
change AlreadyTurning to False
change CurrentMotion to Idle
change ImpactHit to None
}
}
}

action Default
{

  // Basic behavior for the whole body
 
  set(1) AnimAllBody
  {   
 
     when OverridePosture {
     is Jumping:
       // NOTE: This is also done in a transition above
       anim "jump"
       blend .025
       hold 1
       looping false
       FreezeLastSequence true
       change OverridePosture to Falling
       stop
     is Falling:
       //anim "fall_loop"
       blend .1
       hold .1
       looping true
       FreezeLastSequence true
       stop
     is Landing:
       //anim "fall_landing"
       blend .1
       hold .5
       looping false
       change OverridePosture to None
       stop
     }
 
      when BasePosture {
      is Idle:
        when MoveType {
        is Swim:
          anim "idle"
        DEFAULT:
  when BaseMode {
  is Combat:
    anim "ready"
  is Normal:
    anim "idle"
  is Pose:
   
  }
        }
        align False
        blend 0.25
        hold 0.25 seconds recycle
        looping True
        change AlreadyTurning to False
        change CurrentMotion to Idle

      is Turning:
        when TurnDirection {
        is Right:
          //anim "turn_right_45"
          change CurrentMotion to TurningRight
        is Left:
          //anim "turn_left_45"
          change CurrentMotion to TurningLeft
        }
        hold 1.0
        if (AlreadyTurning = True) {
          align True   
        }
        else {   
          blend 0.1
          align False
        }
        looping False
        change AlreadyTurning to True
      is Dead:
        anim "dead"
      is Moving:
        when MoveDirection {
        is Forward:
          when MoveType {
          is Swim:
            anim "walk"//run"
          DEFAULT:
            anim "walk"//run"
          }
          blend 0 
          hold 0 seconds
          change CurrentMotion to Forward
        is Backward:
          when MoveType {
          is Swim:
            anim "walk_backwards"
          DEFAULT:
            anim "walk_backwards"
          }
          blend 0.25
          hold 0.25 seconds 
          change CurrentMotion to Backingup   
        }
        looping True
        change AlreadyTurning to False
      }
     when BaseMode {
is Pose:
call PoseBehaviors
is Combat:
when Attacking {
is Sideslash:
anim "Sideslash"
blend .025
        hold 1
              looping false
change Attacking to None
is Swipe:
anim "Sideslash"
blend .025
        hold 1
              looping false
change Attacking to None
is Laser:
//change later
is SpellcastLeft:
//add anim here
}
     }
  } 
}



and it "SHOULD" compile when you upload it.  watch the console for any compile errors regarding it.

you can then work from this to create your own game specific animation script.

you can comment out lines just as you would in HSL using "//" at the lines beginning.

if you see errors(and you will) in the console that says.. cant find animation blah blah blah, its because this
script references an animation you havent uploaded yet.. If you get NO error and get NO animation in game, its because either the animation is NOT referenced in the .aas script OR in the wrong place OR its not been added to the animation.dat file.

Also take a look at this tutorial on setting up these files.   

HE and most games make use of the "walkrun" animation which blends the walk and run animations.

http://hewiki.heroengine.com/wiki/Animation_Sequence (http://hewiki.heroengine.com/wiki/Animation_Sequence)
http://hewiki.heroengine.com/wiki/Animating_Characters_Tutorial (http://hewiki.heroengine.com/wiki/Animating_Characters_Tutorial)

Basically, you create your walk animation and its files, then create your run animation and its files then you create a file called walkrun.asq it does NOT have an hgm, it rather references your walk AND run anims and blends them.

Here is a copy of one of ours:

walkrun.asq

Code: [Select]
!
! Animation Sequence Spec
!
Version=1
[ABILITIES]
  Speed Blend
    .SequenceA=walk
    .SequenceB=run
    .SpeedController=Speed
    .LowSpeedA=0
    .HighSpeedA=.4
    .LowSpeedB=.2
    .HighSpeedB=1
    .SequenceAFeedbackName=Feedback_WalkSpeed
    .SequenceBFeedbackName=Feedback_RunSpeed



Title: Re: importing
Post by: DPontious on Dec 01, 15, 04:08:51 PM
awesome stuff, thanks I will give this a run in the morning! again thanks
Title: Re: importing
Post by: ToY-Krun on Dec 01, 15, 05:22:09 PM
When i get a chance (pretty busy on our world atm) I'll go through the animation.dat/character.aas files and create a very basic version of each with walk, run, and walkrun  that should work for everyone as a basic set of files.

Unless someone else wants to jump in and offer those up :D

This entire thread might serve as a walkthrough of sorts for folks starting out.
Title: Re: importing
Post by: DPontious on Dec 02, 15, 09:24:29 AM
here is .aas


Code: [Select]
! biped control
!
!this is a super basic template to start with
!add more stuff and make it do something neat!!


channels
{
  AnimAllBody
  walk
}

inputs
{
  animation = Idle
 
  // Basic inputs used by the HeroEngine_ACCController
  BaseMode = Normal, Combat
  BasePosture = Idle, Turning, Moving, Prone, Dead, Sitting, Kneeling, Alive, Climbing
  OverridePosture = None, Jumping, Falling, Dead, Knockback, ResurrectTarget
  MoveType = Normal, Swim
  IdleType = Normal
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable AlreadyTurning =  true, false
  variable CurrentMotion = Idle, TurningLeft, TurningRight, Forward, Backingup, CombatMove
}

action Default
{
  set(1) AnimAllBody
  {
    when animation {
    is Idle:
       anim "idle"
    DEFAULT:
       anim "idle"
    }
   hold 1
   blend 0.1
   align false
   looping true
  }
}

action walk
{
  force(1) AnimAllBody
  {
    anim "walk"
    hold 1
    blend 0.1
    align false
    looping true
    change AlreadyTurning to False
    change CurrentMotion to Idle
    change Attacking to None
  } 
}

here are the other files i change if i understand this right

Code: [Select]
!
! Animation Sequence Spec
! template Sequence generated by Max or Maya output
Version=1
[ABILITIES]
  Apply Animation
    .Animation=walk.hgm
    .InitialSpeed=1
    .InitialLoop=true
    .InitialAlign=true
    .VDA=false
Title: Re: importing
Post by: dhines on Dec 02, 15, 11:44:40 AM
The compile errors for your agent script can be fixed by changing a couple of lines in your "walk" action.  See below for code snippet.

Code: [Select]
action walk
{
  force(1) AnimAllBody
  {
    anim "walk"
    hold 1
    blend 0.1
    align false
    looping true
    change AlreadyTurning to false
    change CurrentMotion to Idle
  } 
}

The first error was caused by setting the AlreadyTurning variable to an invalid value, and the second error was caused by referring to a variable that doesn't exist.
Title: Re: importing
Post by: DPontious on Dec 02, 15, 02:38:20 PM
ok cool, here are the new errors that popped up Note: that the Node=922 happens when i it space-bar or jump
Title: Re: importing
Post by: ToY-Krun on Dec 02, 15, 04:29:37 PM
you'll need to add "Landing" as shown here in the input defines




Code: [Select]
inputs
{
  animation = Idle
 
  // Basic inputs used by the HeroEngine_ACCController
  BaseMode = Normal, Combat
  BasePosture = Idle, Turning, Moving, Prone, Dead, Sitting, Kneeling, Alive, Climbing
  OverridePosture = None, Jumping, Falling, Dead, Knockback, ResurrectTarget,Landing
  MoveType = Normal, Swim
  IdleType = Normal
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable AlreadyTurning =  true, false
  variable CurrentMotion = Idle, TurningLeft, TurningRight, Forward, Backingup, CombatMove
}

OR, remove references to Landing by commenting it out "//" or deleting it.
You can always add these and more back in later as your list of animations/Overrides grows.
I would remove all references to it for now unless you plan to go ahead and setup your Jump/Fall/Landing animations right now.


Also as dHines pointed out, the .aas and .asq files are case sensitive. If you define an input or variable it must be referenced exactly as it was defined, "Case" and all.  Was my bad for not catching it in the copy i pasted in, BUT serves to learn about the case sensitivity anyway heh.
Title: Re: importing
Post by: DPontious on Dec 03, 15, 08:51:09 AM
Ok a couple things,  box man isn't moving when i hit W, when i hit A or D he just turns once either once to right or to left.  still getting the fall and landing error.  here are the codes
Boxman_03.aas
 
Code: [Select]
! biped control
!
!this is a super basic template to start with
!add more stuff and make it do something neat!!


channels
{
  AnimAllBody
  walk
}

inputs
{
  animation = Idle
 
  // Basic inputs used by the HeroEngine_ACCController
  BaseMode = Normal, Combat
  BasePosture = Idle, Turning, Moving, Prone, Dead, Sitting, Kneeling, Alive, Climbing
  //OverridePosture = None, Jumping, Falling, Dead, Knockback, ResurrectTarget
  MoveType = Normal, Swim
  IdleType = Normal
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable AlreadyTurning =  true, false
  variable CurrentMotion = Idle, TurningLeft, TurningRight, Forward, Backingup, CombatMove
}

action Default
{
  set(1) AnimAllBody
  {
    when animation {
    is Idle:
       anim "idle"
    DEFAULT:
       anim "idle"
    }
   hold 1
   blend 0.1
   align false
   looping true
  }
}

action walk
{
  force(1) AnimAllBody
  {
    anim "walk"
    hold 1
    blend 0.1
    align false
    looping true
    change AlreadyTurning to false
    change CurrentMotion to Idle
  } 
}

AnimationSet.dat

Code: [Select]
!
!Basic AnimationSet.dat with a tempalte idle sequence listed
Version=1
[SEQUENCES]
  idle
  walk

walk.asq

Code: [Select]
!
! Animation Sequence Spec
! template Sequence generated by Max or Maya output
Version=1
[ABILITIES]
  Apply Animation
    .Animation=walk.hgm
    .InitialSpeed=1
    .InitialLoop=true
    .InitialAlign=true
    .VDA=false
Title: Re: importing
Post by: Amarak on Dec 03, 15, 10:37:18 AM
When you created the walk animation, did you move boxman forward? Movement in HE is handled through the animation itself, so you do need to have translation in the walk and run animations.
Title: Re: importing
Post by: DPontious on Dec 03, 15, 10:41:43 AM
no, i just animated the walk movement, darn.  ok so with your experience do you need to move him far while animating, or just move him as far as the walk step would be? 
Title: Re: importing
Post by: ToY-Krun on Dec 03, 15, 11:30:06 AM
just use the same distance for walk/run/fly and you can adjust the speed via script, OR you can add frames if need be.
Title: Re: importing
Post by: DPontious on Dec 04, 15, 07:41:19 AM
Just added the movement in with the walk animation, same result. i do notice that the walk animation isn't playing and still not moving forward or backwards. 
Title: Re: importing
Post by: ToY-Krun on Dec 04, 15, 10:42:00 AM
walk_Backwards is a separate animation/translation.

looking at your .aas.... is that all of it?

it should be in the format exactly of the one i pasted up near the top, with the exception of
animation names/unused variables and of course minus the wrong cased variables lol.

There is no "action walk"

These blocks refer to specific calls that come from HE client, or predefined .

Heres how your .aas script should look:

Code: [Select]
! biped control
!
!

channels
{
  AnimAllBody
}

//**********************************************************
//inputs that cover most common situations
inputs
{
  BaseMode = Normal, Combat, Pose
  BasePosture = Idle, Turning, Moving, Dead, Alive
  variable IdleType = Normal, Dead, Ready
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable MoveType = Normal, Swim
  variable AlreadyTurning =  True, False
  variable OverridePosture = None, Jumping, Falling, Landing, Dead
  variable CurrentMotion = CombatMove, Idle, TurningLeft, TurningRight, Forward, Backingup
// basic input modifiers
  variable PoseType = None, SnapShot
//combat
  variable Attacking = None, Sideslash, Swipe, Laser, SpellcastLeft
  variable ImpactHit = None, Blam
}

//*******************************************************
//Transitions between various states
transition OverridePosture {
  from None to Jumping = DoJump
}

transition MoveType {
  from Normal to Swim = EnterSwim
  from Swim to Normal = LeaveSwim
}

transition BasePosture {   
  from Idle to Dead = trDie
  from Moving to Dead = trDie
 
  from Turning to Dead = trDie
}
 

transition BaseMode {
  from Normal to Combat = trGetReady
  from Combat to Normal = trCalmDown
 
  from Normal to Pose = EnterPose
  from Combat to Pose = EnterPose
 
  from Pose to Normal = ReleasePose
  from Pose to Combat = ReleasePose
}

//************************************************************************
//actions called by the above transitions
action ReleasePose
{
change PoseType to None
}

action EnterPose
{
force (1) AnimAllBody {
when PoseType {
Default:
                               
}
}

}

action EnterSwim
{
  force(1) AnimAllBody{
    when BasePosture {
  is Idle:
    anim "idle"
          //align false
    //blend 0.1
    //hold 0 seconds
    //looping true
    change AlreadyTurning to True
    change CurrentMotion to Idle
  is Moving:
    when MoveDirection {
    is Forward:
        //anim "walk"//run"
        blend 0.1
        hold 0 seconds
        change CurrentMotion to Forward
      is Backward:
        //anim "walk_backwards"
        blend 0.1
        hold 0 seconds
        change CurrentMotion to Backingup
      }
    }
  }
}

action LeaveSwim
{
  force(1) AnimAllBody{
    when BasePosture {
  is Idle:
    anim "idle"
      align false
    blend 0.3
    hold 0 seconds
    looping true
    change AlreadyTurning to False
    change CurrentMotion to Idle
  is Moving:
    when MoveDirection {
    is Forward:
        //anim "walk"//run"
        blend 0.3
        hold 0 seconds
        change CurrentMotion to Forward
      is Backward:
        //anim "walk_backwards"
        blend 0.3
        hold 0 seconds
        change CurrentMotion to Backingup
      }
  }
  }
}

action DoJump
{
  force(1) AnimAllBody
  {
    anim "jump"
    blend .025
    hold 1
    looping false
    FreezeLastSequence true
    change OverridePosture to Falling
  }
}

action trGetReady
{
   change IdleType to Ready
}

action trCalmDown
{
   change IdleType to Normal
}

action trDie
{
  force(1) AnimAllBody
  {
    if(OverridePosture != Dead) {
      anim "death"
      hold 1
      blend 0.1
      align false
      looping false
      change IdleType to Dead
      change AlreadyTurning to False
      change CurrentMotion to Idle
      change Attacking to None
      change OverridePosture to Dead
    }
  }
}

action PoseBehaviors {
set(1) AnimAllBody
{
when PoseType {
is None:
return
DEFAULT:
anim "pose"
looping true
hold 0
align true
blend 0
change AlreadyTurning to False
change CurrentMotion to Idle
change ImpactHit to None
}
}
}


//****************************************************************************
//Default actions when either none of the above apply OR in addition to them

action Default
{
//********************************************************************************
  // Basic behavior for the whole body
  //Since by default this is your only channel, put everything else within AnimAllBody
  //IF you create other channels, then you would add them below AnimAllBody using the same format
  set(1) AnimAllBody
  {   
 
     when OverridePosture {
     is Jumping:
       // NOTE: This is also done in a transition above
       anim "jump"
       blend .025
       hold 1
       looping false
       FreezeLastSequence true
       change OverridePosture to Falling
       stop
     is Falling:
       //anim "fall_loop"
       blend .1
       hold .1
       looping true
       FreezeLastSequence true
       stop
     is Landing:
       //anim "fall_landing"
       blend .1
       hold .5
       looping false
       change OverridePosture to None
       stop
     }
 
      when BasePosture {
      is Idle:
        when MoveType {
        is Swim:
          anim "idle"
        DEFAULT:
  when BaseMode {
  is Combat:
    anim "ready"
  is Normal:
    anim "idle"
  is Pose:
   
  }
        }
        align False
        blend 0.25
        hold 0.25 seconds recycle
        looping True
        change AlreadyTurning to False
        change CurrentMotion to Idle

      is Turning:
        when TurnDirection {
        is Right:
          //anim "turn_right_45"
          change CurrentMotion to TurningRight
        is Left:
          //anim "turn_left_45"
          change CurrentMotion to TurningLeft
        }
        hold 1.0
        if (AlreadyTurning = True) {
          align True   
        }
        else {   
          blend 0.1
          align False
        }
        looping False
        change AlreadyTurning to True
      is Dead:
        anim "dead"
      is Moving:
        when MoveDirection {
        is Forward:
          when MoveType {
          is Swim:
            anim "walk"//run"
          DEFAULT:
            anim "walk"//run"
          }
          blend 0
          hold 0 seconds
          change CurrentMotion to Forward
        is Backward:
          when MoveType {
          is Swim:
            anim "walk_backwards"
          DEFAULT:
            anim "walk_backwards"
          }
          blend 0.25
          hold 0.25 seconds
          change CurrentMotion to Backingup   
        }
        looping True
        change AlreadyTurning to False
      }
     when BaseMode {
is Pose:
call PoseBehaviors
is Combat:
when Attacking {
is Sideslash:
anim "Sideslash"
blend .025
        hold 1
              looping false
change Attacking to None
is Swipe:
anim "Sideslash"
blend .025
        hold 1
              looping false
change Attacking to None
is Laser:
//change later
is SpellcastLeft:
//add anim here
}
     }
  }
}


its quite tedious to try to format this im sorry, its an early copy from HJREF example and has been changed and tested with so many times its out of line in places... and notepad++ doesnt want to cooperate atm.
but use this for your entire script THEN weed out things you dont need.

action default is where everything goes pretty much except for special transitions which can go up top.
leaving the animations in the script that you dont have can serve you as a reminder/placeholder for them later on, and wont be called unless you do so from the client. 

It should get you walking, however when you try to attack, you WILL see an error in the console, dont be shocked, its normal, and it will appear until you create an attack animation and add it to each file discussed here in this topic.  once added, it should work fine!     YOu'll have to then do this for each animation you need, and then add your animation in the proper OverridePosture / BasePosture/Mode within the script.


Hope that makes sense lol.



UPDATE:
NOTE:Added a few commented lines along with some ***** to mark them somewhat describing
whats taking place within the script..  maybe it will help.

I went through it again and it should compile okay for you.  I've left all the unused anims in it and even left those that were commented out as a source of reference for later or as example.   when you're comfortable with how its laid out and works, remove all the unneeded blocks/lines/variables.

Title: Re: importing
Post by: ToY-Krun on Dec 04, 15, 11:16:10 AM
(sigh) maybe this will be the last edit lol
I can't verify that the following WILL compile, but it shouldn't be far off


putting this in a new reply to separate it from the last...


if you want an idea of what it would look like if you only needed walk and idle animations:

Code: [Select]
! biped control
!
!

channels
{
  AnimAllBody
}

//**********************************************************
//inputs that cover most common situations
inputs
{
  BaseMode = Normal, Combat, Pose
  BasePosture = Idle, Turning, Moving, Dead, Alive
  variable IdleType = Normal, Dead, Ready
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable MoveType = Normal, Swim
  variable AlreadyTurning =  True, False
  variable OverridePosture = None, Jumping, Falling, Landing, Dead
  variable CurrentMotion = CombatMove, Idle, TurningLeft, TurningRight, Forward, Backingup
// basic input modifiers
  variable PoseType = None, SnapShot
//combat
  variable Attacking = None, Sideslash, Swipe, Laser, SpellcastLeft
  variable ImpactHit = None, Blam
}

action Default
{
//********************************************************************************
  // Basic behavior for the whole body
  //Since by default this is your only channel, put everything else within AnimAllBody
  //IF you create other channels, then you would add them below AnimAllBody using the same format
  set(1) AnimAllBody
  {   
 
      when BasePosture {
      is Idle:
        when MoveType {
        is Swim:
          anim "idle"
        DEFAULT:
  when BaseMode {
  is Combat:
    anim "ready"
  is Normal:
    anim "idle"
  is Pose:
   
  }
        }
        align False
        blend 0.25
        hold 0.25 seconds recycle
        looping True
        change AlreadyTurning to False
        change CurrentMotion to Idle

     
      is Moving:
        when MoveDirection {
        is Forward:
          when MoveType {
          DEFAULT:
            anim "walk"//or run or walkrun
          }
          blend 0
          hold 0 seconds
          change CurrentMotion to Forward
        }
        looping True
        change AlreadyTurning to False
      }
  }
}

I left the variables for alreadyTurning etc in because these will be needed as you move forward more than likely.
The client will look for turning animations and also the client checks to see if the character is "turning" or not and so it should be set depending on the animation/situation as it is in the script above.

as far as the blends etc, you can play with those to get the look you want, based on your animations, but this should help you get going.
Title: Re: importing
Post by: ToY-Krun on Dec 04, 15, 11:42:27 AM
This seems as good a time as any to offer some explanation as to what goes on in this script, perhaps for those who are new to animation scripts or scripting in general.

If you see an error feel free to point it out, and if you have something to add, feel free to do that as well.



Code: [Select]
! biped control
!
!
//IF you have setup more than the default channel for your model, then add them here
channels
{
  AnimAllBody
}

//**********************************************************
//inputs block contains definitions of all valid inputs along with any variables and their valid values
//ALL content in this script is case sensitive
//inputs that cover most common situations
inputs
{
  //You may NOT change the value of BaseMode/BasePosture from within this script, these
  //are set from within the client and/OR HSL script.  You MAY however add new valid
  //states to them within this define block.
  BaseMode = Normal, Combat, Pose
  BasePosture = Idle, Turning, Moving, Dead, Alive
  //Variables may be changed from within this script and/OR by HSL script
  //the following variables are used by HeroEngine client, BUT must be defined here in order
  //to access them within this script.
  variable IdleType = Normal, Dead, Ready
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable MoveType = Normal, Swim
  variable AlreadyTurning =  True, False
  variable OverridePosture = None, Jumping, Falling, Landing, Dead
  variable CurrentMotion = CombatMove, Idle, TurningLeft, TurningRight, Forward, Backingup
// basic input modifiers
  variable PoseType = None, SnapShot
//combat
  variable Attacking = None, Sideslash, Swipe, Laser, SpellcastLeft
  variable ImpactHit = None, Blam
}

action Default
{
//********************************************************************************
  // Basic behavior for the whole body
  //Since by default this is your only channel, put everything else within AnimAllBody
  //IF you create other channels, then you would add them below AnimAllBody using the same format
  //Now some descriptive comments as to what is taking place in this section, step by step:
 
  //client detects what channel the model is using:
  //channel AnimAllBody which is the default channel:
  set(1) AnimAllBody
  {   
      //Client detects the BasePosture of the model  
      when BasePosture {
  //(A) client detects what the value of (A) or , BasePosture is
      is Idle:
    //(B) client detects what the current MoveType is
        when MoveType {
        //so if A = Idle and B = Swim then the script tells the client to play the "idle_swim" animation
        is Swim:
          //anim "idle_swim"
        DEFAULT:
//OTHERWISE if B does NOT equal Swim, then check to see what BaseMode the model is in
  when BaseMode {
  //if the client detects the model is in Combat then play the ready animation
  is Combat:
    anim "ready"
  //if the client detects the model is in Normal baseMode then play the normal or "idle" animation
  is Normal:
    anim "idle"
      //here you could create and use a pose animation if you like
  is Pose:
   
  }
        }
//the following settings are applied to any animation that is called above,
        //OR you could set these per animation above and remove them from here
        align False
        blend 0.25
        hold 0.25 seconds recycle
        looping True
        change AlreadyTurning to False
        change CurrentMotion to Idle

      //if you are pressing a movement key of any sort, then THIS block is being scanned continously
      is Moving:
    //so, a movement key is being pressed... which direction?
        when MoveDirection {
//if the model is being told to move forward the script tells the client to play the walk animation, thus moving the character
        is Forward:
          when MoveType {
          DEFAULT:
            anim "walk"//or run or walkrun
          }
          blend 0
          hold 0 seconds
          change CurrentMotion to Forward
        }
//NOTE: so long as the key is pressed, looping is set to true which tells the client to keep looping the animation
//until its told otherwise
        looping True
        change AlreadyTurning to False
      }
  }
}
Title: Re: importing
Post by: DPontious on Dec 04, 15, 07:59:13 PM
bare with me good sir, loaded your script worked fine was able to possess and move him, the only issue was he wouldn't stop moving.
Code: [Select]
! biped control
!
!

channels
{
  AnimAllBody
}

//**********************************************************
//inputs that cover most common situations
inputs
{
  BaseMode = Normal, Combat, Pose
  BasePosture = Idle, Turning, Moving, Dead, Alive
  variable IdleType = Normal, Dead, Ready
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable MoveType = Normal, Swim
  variable AlreadyTurning =  True, False
  variable OverridePosture = None, Jumping, Falling, Landing, Dead
  variable CurrentMotion = CombatMove, Idle, TurningLeft, TurningRight, Forward, Backingup
// basic input modifiers
  variable PoseType = None, SnapShot
//combat
  variable Attacking = None, Sideslash, Swipe, Laser, SpellcastLeft
  variable ImpactHit = None, Blam
}

action Default
{
//********************************************************************************
  // Basic behavior for the whole body
  //Since by default this is your only channel, put everything else within AnimAllBody
  //IF you create other channels, then you would add them below AnimAllBody using the same format
  set(1) AnimAllBody
  {   
 
      when BasePosture {
      is Idle:
        when MoveType {
        is Swim:
          anim "idle"
        DEFAULT:
  when BaseMode {
  is Combat:
    anim "ready"
  is Normal:
    anim "idle"
  is Pose:
   
  }
        }
        align False
        blend 0.25
        hold 0.25 seconds recycle
        looping True
        change AlreadyTurning to False
        change CurrentMotion to Idle

     
      is Moving:
        when MoveDirection {
        is Forward:
          when MoveType {
          DEFAULT:
            anim "walk"//or run or walkrun
          }
          blend 0
          hold 0 seconds
          change CurrentMotion to Forward
        }
        looping True
        change AlreadyTurning to False
      }
  }
}
Title: Re: importing
Post by: ToY-Krun on Dec 04, 15, 08:57:59 PM
Lol.  That can be caused by a few things.

Lets try this first.. replace all of your .aas script with the following:


iirc it needs some measure of control for turning in the script..
if it isnt stopped/started correctly npcs may move/not move correctly as they get hung up in
turn mode.  I've commented out the actual animations so it should be fine, as it will still set
turning on/off as it should based on your movement.



Code: [Select]
! biped control
!
!

channels
{
  AnimAllBody
}

//**********************************************************
//inputs that cover most common situations
inputs
{
  BaseMode = Normal, Combat, Pose
  BasePosture = Idle, Turning, Moving, Dead, Alive
  variable IdleType = Normal, Dead, Ready
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable MoveType = Normal, Swim
  variable AlreadyTurning =  True, False
  variable OverridePosture = None, Jumping, Falling, Landing, Dead
  variable CurrentMotion = CombatMove, Idle, TurningLeft, TurningRight, Forward, Backingup
// basic input modifiers
  variable PoseType = None, SnapShot
//combat
  variable Attacking = None, Sideslash, Swipe, Laser, SpellcastLeft
  variable ImpactHit = None, Blam
}

action Default
{
//********************************************************************************
  // Basic behavior for the whole body
  //Since by default this is your only channel, put everything else within AnimAllBody
  //IF you create other channels, then you would add them below AnimAllBody using the same format
  set(1) AnimAllBody
  {   
 
      when BasePosture {
      is Idle:
        when MoveType {
        is Swim:
          anim "idle"
        DEFAULT:
  when BaseMode {
  is Combat:
    anim "ready"
  is Normal:
    anim "idle"
  is Pose:
   
  }
        }
        align False
        blend 0.25
        hold 0.25 seconds recycle
        looping True
        change AlreadyTurning to False
        change CurrentMotion to Idle
  is Turning:
when BaseMode {
is Normal:
when TurnDirection {
is Right:
//anim "turn_right_45"
change CurrentMotion to TurningRight
is Left:
//anim "turn_left_45"
change CurrentMotion to TurningLeft
}
hold 1.0
if (AlreadyTurning = True) {
align True   
}
else {   
blend 0.1
align False
}
looping False
change AlreadyTurning to True
is Combat:
when TurnDirection {
is Right:
//anim "turn_right_45"
change CurrentMotion to TurningRight
is Left:
//anim "turn_left_45"
change CurrentMotion to TurningLeft
}
hold 1.0
if (AlreadyTurning = True) {
align True   
}
else {   
blend 0.1
align False
}
looping False
change AlreadyTurning to True

}
     
      is Moving:
        when MoveDirection {
        is Forward:
          when MoveType {
          DEFAULT:
            anim "walk"//or run or walkrun
          }
          blend 0
          hold 0 seconds
          change CurrentMotion to Forward
        }
        looping True
        change AlreadyTurning to False
      }
  }
}

I'm assuming there have been no changes to the Input_Command script on the client side and/or changes to the gameKeyBindings.ini file and/or controller scripts on the client side.


Edit: if this doesnt help, let us know.
also see if you can stop him by moving other directions (back/side to side) or jumping.


your reply brought yosimite sam to mind lol.. got a good laugh!
"Whoa mule whoa!!! When i say whoa, i mean whoa!"
https://youtu.be/3-vMzPi3IDg (https://youtu.be/3-vMzPi3IDg)
Title: Re: importing
Post by: DPontious on Dec 04, 15, 09:49:59 PM
ok, tryed new script,  nothing been changed to the   Input_Command script or changes to the gameKeyBindings.ini file, or controller scripts on the client side.   i also tryed to stop using other commands such as jump and stuff/.
Title: Re: importing
Post by: ToY-Krun on Dec 04, 15, 09:55:58 PM
in your walk.asq file, replace all of its contents with the following:


Code: [Select]
!
! Animation Sequence Spec: walk
! 08/30/2013 11:12
!
Version=1
[ABILITIES]
  Apply Animation
    .Animation=walk.hgm
    .InitialSpeed=0.7
    .InitialLoop=True
    .InitialAlign=True
    .Preload=False


If that doesnt work, how many frames are there in your walk animation and how far does it go?
It may be that the animation simply isnt completed.  give it some time and see if it stops eventually
Title: Re: importing
Post by: DPontious on Dec 04, 15, 10:01:24 PM
same, however think i have to take a break for a little, been at this all day, ill be back at it in the morning.    there are 25 frames and he goes to the end of the map if i let him lol have to delete him lol
Title: Re: importing
Post by: ToY-Krun on Dec 04, 15, 11:21:22 PM
okay tomorrow, login, go to Select Mode in the blade (3rd tool from the left in tool bar up at the top)
and select your npc, he should be surrounded by a yellow box.
Now go back to character mode (first tool in the tool bar) and possess the npc while hes still selected.

Then from the Blade Editors menu, choose animation.
Animation set tab, and click the button beside the "set" field and navigate to the animation.dat file for your character and open it.

Now go to the Animation Control tab.

Start the character moving while hes still selected, and

from the bottom of the Agent Override section, copy/paste here the contents of the text box there.
should look something like this:

Code: [Select]
behave 9223372063519022325 anim AnimAllBody argue always 1 1 false false 0.1 false

then what are the values of :
TurnDirection:
OVerridePosture:
MoveType:
MoveDirection:
IdleType:
CurrentMotion:
BasePosture:
BaseMode:
AlreadyTurning:


remember you'll need the npc targeted, and moving before getting these values.
Title: Re: importing
Post by: DPontious on Dec 05, 15, 09:30:07 AM
here are the results, i turned his clock speed down so he wouldnt run off map.  and the last two at the bottom i think was attack which was blank, and the last one was alreadyturning = fals, also noticed that when i hit forward in the currentmotion box, however once i release it it goes to idle yet he moves.  don't know if that info helps or not, just noticed it.

Title: Re: importing
Post by: ToY-Krun on Dec 05, 15, 01:01:24 PM
hrm okay.  OverridePosture should not be landing.



Try replacing the .aas contents with the following, this adds blocks that alter overrideposture based on current settings for states like Landing, jumping etc, however at the moment you're only worried about Landing since that is what your character insists hes doing.


Code: [Select]
! biped control
!
!

channels
{
  AnimAllBody
}

//**********************************************************
//inputs that cover most common situations
inputs
{
  BaseMode = Normal, Combat, Pose
  BasePosture = Idle, Turning, Moving, Dead, Alive
  variable IdleType = Normal, Dead, Ready
  MoveDirection = Forward, Backward
  TurnDirection = None, Right, Left
  TurnAmount = None, T45Degrees, T90Degrees, T135Degrees, T180Degrees
  variable MoveType = Normal, Swim
  variable AlreadyTurning =  True, False
  variable OverridePosture = None, Jumping, Falling, Landing, Dead
  variable CurrentMotion = CombatMove, Idle, TurningLeft, TurningRight, Forward, Backingup
// basic input modifiers
  variable PoseType = None, SnapShot
//combat
  variable Attacking = None, Sideslash, Swipe, Laser, SpellcastLeft
  variable ImpactHit = None, Blam
}

action Default
{
//********************************************************************************
  // Basic behavior for the whole body
  //Since by default this is your only channel, put everything else within AnimAllBody
  //IF you create other channels, then you would add them below AnimAllBody using the same format
  set(1) AnimAllBody
  {   
     When OverridePosture {
     is Jumping:
       // NOTE: This is also done in a transition above
       anim "jump"
       blend .025
       hold 1
       looping false
       FreezeLastSequence true
       //change OverridePosture to Falling
       //stop
     is Falling:
       //anim "fall_loop"
       blend .025
       hold 1
       looping false
       FreezeLastSequence true
   //Change OverridePosture to Landing
       stop
     is Landing:
       //anim "fall_landing"
       //blend .1
       //hold .5
       //looping false
       change OverridePosture to None
       stop
     }
       
      when BasePosture {
      is Idle:
        when MoveType {
        is Swim:
          anim "idle"
        DEFAULT:
  when BaseMode {
  is Combat:
    anim "ready"
  is Normal:
    anim "idle"
  is Pose:
   
  }
        }
        align False
        blend 0.25
        hold 0.25 seconds recycle
        looping True
        change AlreadyTurning to False
        change CurrentMotion to Idle
  is Turning:
when BaseMode {
is Normal:
when TurnDirection {
is Right:
//anim "turn_right_45"
change CurrentMotion to TurningRight
is Left:
//anim "turn_left_45"
change CurrentMotion to TurningLeft
}
hold 1.0
if (AlreadyTurning = True) {
align True   
}
else {   
blend 0.1
align False
}
looping False
change AlreadyTurning to True
is Combat:
when TurnDirection {
is Right:
//anim "turn_right_45"
change CurrentMotion to TurningRight
is Left:
//anim "turn_left_45"
change CurrentMotion to TurningLeft
}
hold 1.0
if (AlreadyTurning = True) {
align True   
}
else {   
blend 0.1
align False
}
looping False
change AlreadyTurning to True

}
     
      is Moving:
        when MoveDirection {
        is Forward:
          when MoveType {
          DEFAULT:
            anim "walk"//or run or walkrun
          }
          blend 0
          hold 0 seconds
          change CurrentMotion to Forward
        }
        looping True
        change AlreadyTurning to False
      }
  }
}