Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. Los Santos Drug Wars
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

    3. Suggestions

[SA|C++] How to check an animation is finish or not


ZONIYAS
 Share

Recommended Posts

Hi! everyone, I m trying to make a mission script with c++, but the question is I don't know how to check an animation is done or not, if it's done so that I can play the next animation. 

What should I do? Please help me!! Thanks in advance!

Link to comment
Share on other sites

 

 

 

If you can use scm opcodes 0611: and 0613:
then it's easy


you can find checks for animation time(progress) very often in main.scm
view examples inside spoiler

Spoiler

inside script for Lowrider condition

:LOWGAME_5632
00D6: if 
0611:   actor 2@ performing_animation "LRGIRL_BDBNCE" 
004D: jump_if_false @LOWGAME_5686 
0613: 26@ = actor 2@ animation "LRGIRL_BDBNCE" time 

:LOWGAME_5686
00D6: if 
0023:   0.9 > 26@ 
004D: jump_if_false @LOWGAME_5714 
0006: 17@ = 1




inside script for final mission

:FINALEC_16006
00D6: if 
0611:   actor $PLAYER_ACTOR performing_animation "FIN_SWITCH_P" 
004D: jump_if_false @FINALEC_16338 
0613: 170@ = actor $PLAYER_ACTOR animation "FIN_SWITCH_P" time 
00D6: if 
0043:   170@ == 1.0 
004D: jump_if_false @FINALEC_16338

 

 

One complete animation = 1.0

 

if
    0611:   actor [ActorHandle] performing_animation "Swim_Dive_Under"
then
    0613: [AnimTime] = actor [ActorHandle] animation "Swim_Dive_Under" time
    if
        [AnimTime] == 1.0
    then
        //-- animation sequence is finshed
    end
end

 

i prefer to check if bigger than 0.95

because 1.0 maybe exist only for one millisecond

 

if
    0611:   actor [ActorHandle] performing_animation "Swim_Dive_Under"
then
    0613: [AnimTime] = actor [ActorHandle] animation "Swim_Dive_Under" time
    if
        [AnimTime] > 0.95
    then
        //-- animation sequence reached the end
    end
end

 

 

 

 

 


if
    0611:   actor [ActorHandle] performing_animation "Swim_Dive_Under"
then
    0613: [AnimTime] = actor [ActorHandle] animation "Swim_Dive_Under" time
    if
        1.0 > [AnimTime]
    then
        //-- animation is running
    else
        //-- animation sequence is finished or didn't start
    end
end

 

 

 

Edited by ZAZ
  • Like 2
Link to comment
Share on other sites

18 hours ago, ZONIYAS said:

Hi! everyone, I m trying to make a mission script with c++, but the question is I don't know how to check an animation is done or not, if it's done so that I can play the next animation. 

What should I do? Please help me!! Thanks in advance!

c++ (plugin-sdk), (not tested):

#include "CAnimBlendHierarchy.h"
CPed *playa = FindPlayerPed();
if (playa) {
	if (RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")) {
	   //  player is performing animation "ABSEIL"
	} else {
	   //  animation "ABSEIL" finished
	}
	
	// Animation time:
    if (RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")) {
    	float totalTime = RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")->m_pHierarchy->m_fTotalTime;
    	float currentTime = RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")->m_fCurrentTime;
    	float animTime = currentTime / currentTime;
    }
}

 

Link to comment
Share on other sites

Thanks for all your help ! your code works great!

12 hours ago, Jack said:

c++ (plugin-sdk), (not tested):

#include "CAnimBlendHierarchy.h"
CPed *playa = FindPlayerPed();
if (playa) {
	if (RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")) {
	   //  player is performing animation "ABSEIL"
	} else {
	   //  animation "ABSEIL" finished
	}
	
	// Animation time:
    if (RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")) {
    	float totalTime = RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")->m_pHierarchy->m_fTotalTime;
    	float currentTime = RpAnimBlendClumpGetAssociation(playa->m_pRwClump, "ABSEIL")->m_fCurrentTime;
    	float animTime = currentTime / currentTime;
    }
}

 

But I got another problem in setting next animation. After checking , the script just skip the first animation then play the second one. So I set the second animation's priority from TASK_PRIMARY_PRIMARY to TASK_PRIMARY_DEFAULT, although it works, game freezes and shutdown after play the next animation at last frame. What should I do? Should I release someting ?

 

Edited by ZONIYAS
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.