private InterrogationLine.Type WaitForPlayersResponse(InterrogationLine.Type correctType) { while (true) { GameFiber.Yield(); if (Game.IsKeyDown(KeyTruth)) { Game.HideHelp(); PlayAnswerSound(correctType == InterrogationLine.Type.Truth); return(InterrogationLine.Type.Truth); } else if (Game.IsKeyDown(KeyDoubt)) { Game.HideHelp(); PlayAnswerSound(correctType == InterrogationLine.Type.Doubt); return(InterrogationLine.Type.Doubt); } else if (Game.IsKeyDown(KeyLie)) { Game.HideHelp(); PlayAnswerSound(correctType == InterrogationLine.Type.Lie); return(InterrogationLine.Type.Lie); } } }
private static void PlayInterrogeeFacialAnim(InterrogationLine.Type t, Ped interrogee) { if (t == InterrogationLine.Type.Truth) { interrogee.Tasks.PlayAnimation("gestures@m@standing@casual", "gesture_pleased", 4f, AnimationFlags.Loop); } else if (t == InterrogationLine.Type.Doubt) { interrogee.Tasks.PlayAnimation("facials@gen_male@variations@injured", "mood_injured_3", 4f, AnimationFlags.Loop); } else if (t == InterrogationLine.Type.Lie) { interrogee.Tasks.PlayAnimation("facials@p_m_two@variations@injured", "mood_injured_3", 4f, AnimationFlags.Loop); } }
private void ProcessLines() { while (Dist(Interrogator, Interrogee) > DistanceToStart) { GameFiber.Yield(); } Interrogator.KeepTasks = true; Interrogee.KeepTasks = true; NativeFunction.Natives.TASK_TURN_PED_TO_FACE_ENTITY(Game.LocalPlayer.Character, Interrogee, -1); NativeFunction.Natives.TASK_TURN_PED_TO_FACE_ENTITY(Interrogee, Game.LocalPlayer.Character, -1); GameFiber.Sleep(1000); _playerTOsus = CreatePointingCam(Interrogator, Interrogee); _susTOplayer = CreatePointingCam(Interrogee, Interrogator); Interrogator.IsPositionFrozen = true; Interrogee.IsPositionFrozen = true; _gameCam = CreateGameCam(); NativeFunction.Natives.SET_PED_CAN_SWITCH_WEAPON(Interrogator, false); while (true) { GameFiber.Yield(); if (_lines[_currentLine].LineType != _lineTypeCheck) { _currentLine++; continue; } Game.DisplayHelp("Press ~y~" + InteractKey.ToString() + "~w~ to continue the interrogation."); while (true) { GameFiber.Yield(); if (!Game.IsKeyDown(InteractKey)) { continue; } Game.HideHelp(); break; } var cl = _lines[_currentLine]; Interrogee.IsVisible = false; PedPlayRndAnim(Interrogator); PlayFacialAnim(Interrogator); DisplayLineForPed(Interrogator, cl.PlayerLine, _susTOplayer); Interrogee.IsVisible = true; Interrogator.IsVisible = false; PedPlayRndAnim(Interrogee); PlayFacialAnim(Interrogee); DisplayLineForPed(Interrogee, cl.PerpLine, _playerTOsus); if (cl.LineType == InterrogationLine.Type.Question) { PlayInterrogeeFacialAnim(cl.CorrectType, Interrogee); Game.DisplayHelp(Help, true); _lineTypeCheck = WaitForPlayersResponse(cl.CorrectType); } else { _lineTypeCheck = InterrogationLine.Type.Question; } Interrogee.Tasks.Clear(); Interrogator.IsVisible = true; _currentLine++; if (_currentLine == _lines.Length) { break; } } }