Quantcast

Jump to content

» «
Photo

Wait until Event finishes ? [C#]

2 replies to this topic
Kolopsel
  • Kolopsel

    Player Hater

  • Members
  • Joined: 18 Jun 2017
  • Germany

#1

Posted 20 August 2017 - 04:05 PM Edited by Kolopsel, 20 August 2017 - 04:11 PM.

Hello,

i wanted to ask if there is a good method, to wait for something until a event (Task) finishes.

For example : A Ped drives somewhere but after he finished this given event, he does something else. 

I know, checking it periodically is capable of doing this, but i wanted to ask if there is a better method.

 

Thank you for reading !

- Kolopsel


aimless
  • aimless

    Crackhead

  • Members
  • Joined: 30 Jul 2015
  • United-States

#2

Posted 20 August 2017 - 11:16 PM

You can use task sequences. There is an example in this thread. http://gtaforums.com...ce/?hl=sequence

 

You can use up to 16 tasks in a task sequence. But you can run a task sequence of task sequences. If you need more.

 

Also some tasks are task sequence themselves like guard position, and scenarios. If you use these the sequence will stop at that task and wont continue.

Most will work like TASK_VEHICLE_DRIVE_TO_COORD, TASK_PLAY_ANIM, TASK_FOLLOW_NAV_MESH_TO_COORD

  • sollaholla likes this

NoNameSet
  • NoNameSet

    Player Hater

  • Members
  • Joined: 22 Jul 2017
  • Germany

#3

Posted 25 August 2017 - 09:36 AM Edited by NoNameSet, 25 August 2017 - 09:39 AM.

Hello,

i wanted to ask if there is a good method, to wait for something until a event (Task) finishes.

For example : A Ped drives somewhere but after he finished this given event, he does something else. 

I know, checking it periodically is capable of doing this, but i wanted to ask if there is a better method.

 

Thank you for reading !

- Kolopsel

I use RagePluginHook as a reference but the code should be the same:

if (!IsTask4Done && Game.LocalPlayer.Character.Position.DistanceTo(Pris3) <= 8)
            {
                Game.DisplayHelp("Press ~b~T~w~ to speak with ~r~Prisoner~w~", 6000);

                while (!Game.IsKeyDown(System.Windows.Forms.Keys.T))
                    GameFiber.Yield();

                Game.DisplaySubtitle("~b~You~w~: HANDS UP, THIS IS THE POLICE!", 4000);
                GameFiber.Wait(4000);
                int c = new Random().Next(1, 3);
                if (c == 1)
                {
                    Game.DisplaySubtitle("~r~Prisoner~w~: Congratulations, you just won the golden prize...a battle against the one and only " + suspect3Persona.Forename);
                    GameFiber.Wait(6000);
                    Pris3.Tasks.FightAgainst(Game.LocalPlayer.Character);
                }
                else
                {
                    Game.DisplaySubtitle("~r~Prisoner~w~: Catch me if you can!");
                    GameFiber.Wait(3000);
                    Pris3.Tasks.Flee(Game.LocalPlayer.Character, 5000, -1);
                }

                IsTask4Done = true;
            }
if (IsTask4Done == true && Game.LocalPlayer.Character.Position.DistanceTo(Pris3)<=8)
{
//now task him something else or you could continue in the !IsTask4Done method
  Pris3.Tasks.EnterVehicle(Game.LocalPlayer.CurrentVehicle, -1);
  Pris3.Tasks.DriveToPosition(Game.LocalPlayer.Character.CurrentVehicle, Pris2.Position, 25);
}




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users