Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------------
- // <copyright file="Ticket.cs" company="HippieCommunist">
- // Original script by HippieCommunist.
- // Heavily refactored by MulleDK19.
- // </copyright>
- //-----------------------------------------------------------------------
- namespace Ticket
- {
- using System;
- using System.Windows.Forms;
- using GTA;
- /// <summary>
- /// A script that makes police officers issue tickets to the player, when the player only has a wanted level of 1.
- /// </summary>
- public class Ticket : Script
- {
- #region Private Fields
- /// <summary>
- /// The speed of the player.
- /// </summary>
- private float lastPlayerSpeed;
- /// <summary>
- /// The player's wanted level.
- /// </summary>
- private int wantedLevel;
- /// <summary>
- /// Whether the player is currently surrendering.
- /// </summary>
- private bool isSurrendering = false;
- #endregion
- #region Constructors
- /// <summary>
- /// Initializes a new instance of the <see cref="Ticket"/> class.
- /// </summary>
- public Ticket()
- {
- this.Tick += new EventHandler(this.Ticket_Tick);
- Wait(0);
- }
- #endregion
- #region Properties
- /// <summary>
- /// Gets the last player speed.
- /// </summary>
- public float LastPlayerSpeed
- {
- get { return this.lastPlayerSpeed; }
- private set { this.lastPlayerSpeed = value; }
- }
- /// <summary>
- /// Gets the wanted level.
- /// </summary>
- public int WantedLevel
- {
- get { return this.wantedLevel; }
- private set { this.wantedLevel = value; }
- }
- /// <summary>
- /// Gets a value indicating whether the player is currently surrendering.
- /// </summary>
- /// <value>
- /// <c>true</c> if the player is currently surrendering is surrendering; otherwise, <c>false</c>.
- /// </value>
- public bool IsSurrendering
- {
- get { return this.isSurrendering; }
- private set { this.isSurrendering = value; }
- }
- #endregion
- #region Private Methods
- /// <summary>
- /// Gets a random integer within the specified range.
- /// </summary>
- /// <param name="minimum">The minimum value.</param>
- /// <param name="maximum">The maximum value.</param>
- /// <returns>A random number between <paramref name="minimum"/> and <paramref name="maximum"/>.</returns>
- private int GetRandomInteger(int minimum, int maximum)
- {
- Random random = new Random();
- return random.Next(minimum, maximum + 1);
- }
- /// <summary>
- /// Handles the script's Tick event.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
- private void Ticket_Tick(object sender, EventArgs e)
- {
- Wait(0);
- if (Player.WantedLevel == 1)
- {
- AnimationSet ambientAnimations = new AnimationSet("amb@newspaper_hold");
- AnimationSet nikoGestures = new AnimationSet("gestures@niko");
- AnimationFlags animationFlags = AnimationFlags.Unknown12 | AnimationFlags.Unknown11 | AnimationFlags.Unknown09;
- int ticketAmount = this.GetRandomInteger(5000, 14000);
- float playerVelocityX = Player.Character.Velocity.X;
- float playerVelocityY = Player.Character.Velocity.Y;
- playerVelocityX = playerVelocityX * playerVelocityX;
- playerVelocityY = playerVelocityY * playerVelocityY;
- if (Player.Character.isSittingInVehicle() && !Player.Character.isDead)
- {
- Vehicle playerVehicle = Player.Character.CurrentVehicle;
- Wait(0);
- if (playerVehicle.Exists())
- {
- this.LastPlayerSpeed = playerVehicle.Speed;
- }
- }
- GTA.Ped[] pedArray = GTA.World.GetPeds(Player.Character.Position.Around(2.0f), 1.7f, 2);
- foreach (GTA.Ped ped in pedArray)
- {
- if (this.IsSurrendering == true ||
- playerVelocityX > 0.001F ||
- playerVelocityY > 0.001F ||
- this.LastPlayerSpeed > 2.0F ||
- !ped.Exists() ||
- (Player.Money < 1000) ||
- GTA.Native.Function.Call<bool>("IS_CHAR_GETTING_UP", ped) ||
- ped.isSittingInVehicle() ||
- GTA.Native.Function.Call<bool>("IS_GROUP_MEMBER", ped, Player.Group) || (!ped.isAliveAndWell) ||
- ped == Player.Character || ped.RelationshipGroup == RelationshipGroup.Player || ped.isRagdoll ||
- (((uint)ped.Model.Hash != 0xF5148AB2) &&
- ((uint)ped.Model.Hash != 0xE9EC3678) &&
- ((uint)ped.Model.Hash != 0xFAAD5B99) &&
- ((uint)ped.Model.Hash != 0xE9EC3678) &&
- ((uint)ped.Model.Hash != 0xC41C88BE) &&
- ((uint)ped.Model.Hash != 0xC46CBC16)))
- {
- continue;
- }
- Group playerGroup;
- playerGroup = Player.Group;
- Wait(0);
- GTA.Native.Function.Call("REQUEST_MODEL", "amb_clipboard");
- ped.Task.AimAt(Player.Character.Position, 1500);
- Game.DisplayText("LCPD: Freeze!");
- GTA.Native.Function.Call("SWITCH_PED_TO_ANIMATED", Player.Character, 1);
- Player.Character.Task.ClearAll();
- Player.Character.FreezePosition = true;
- GTA.Native.Function.Call("SET_CAMERA_CONTROLS_DISABLED_WITH_PLAYER_CONTROLS", 0);
- Player.CanControlCharacter = false;
- ped.Health += 50;
- GTA.Native.Function.Call("CANCEL_OVERRIDE_RESTART");
- Player.Character.Task.ClearAll();
- Player.Character.FreezePosition = false;
- GTA.Native.Function.Call("SET_MAX_WANTED_LEVEL", 0);
- if (ped.isSittingInVehicle())
- {
- Wait(2500);
- }
- GTA.Object clipboard = World.CreateObject(Model.FromString("amb_clipboard"), Player.Character.Position.Around(9.0f));
- Vector3 sx = Player.Character.GetOffsetPosition(new Vector3(0.0f, 0.5f, 0.0f));
- GTA.Native.Function.Call("CLEAR_WANTED_LEVEL", Player);
- Player.Character.Task.TurnTo(ped);
- if (Player.Character.isSittingInVehicle())
- {
- Wait(1500);
- }
- GTA.Native.Function.Call("CLEAR_WANTED_LEVEL", Player);
- GTA.Native.Function.Call("SET_POLICE_IGNORE_PLAYER", Player, 1);
- Player.Character.Task.TurnTo(ped);
- Wait(1000);
- if (Player.Character.Weapons.CurrentType != 0)
- {
- Game.DisplayText("LCPD: Suspect is Armed, Confiscating Weapon");
- ticketAmount += 3500;
- Player.Character.Weapons.Current.Ammo -= Player.Character.Weapons.Current.Ammo;
- }
- GTA.Native.Function.Call("SET_CURRENT_CHAR_WEAPON", Player.Character, 0, 1);
- GTA.Native.Function.Call("SET_CURRENT_CHAR_WEAPON", ped, 0, 1);
- GTA.Native.Function.Call("SWITCH_PED_TO_ANIMATED", ped, 1);
- ped.Task.ClearAll();
- Player.Character.Task.TurnTo(ped);
- ped.DuckWhenAimedAtByGroupMember = false;
- ped.ChangeRelationship(RelationshipGroup.Player, Relationship.Companion);
- playerGroup.AddMember(ped);
- Player.Character.Task.TurnTo(ped);
- Wait(700);
- GTA.Native.Function.Call("SET_CURRENT_CHAR_WEAPON", ped, 0, 1);
- GTA.Native.Function.Call("SWITCH_PED_TO_ANIMATED", Player.Character, 0);
- GTA.Native.Function.Call("SET_CURRENT_CHAR_WEAPON", ped, 0, 1);
- GTA.Native.Function.Call("SET_EVERYONE_IGNORE_PLAYER", Player, 1);
- Wait(10);
- GTA.Native.Function.Call("SET_CURRENT_CHAR_WEAPON", ped, 0, 1);
- GTA.Native.Function.Call("SWITCH_PED_TO_ANIMATED", ped, 1);
- int waitTime = Convert.ToInt32(Math.Round((ped.Position.DistanceTo(Player.Character.Position) * 70.0f), 0));
- Wait(waitTime);
- GTA.Native.Function.Call("SWITCH_PED_TO_ANIMATED", ped, 1);
- GTA.Native.Function.Call("CLEAR_WANTED_LEVEL", Player);
- Player.Character.Task.TurnTo(ped);
- ped.Task.TurnTo(Player.Character);
- if (clipboard != null && clipboard.Exists())
- {
- GTA.Native.Function.Call("ATTACH_OBJECT_TO_PED", clipboard, ped, 1232, -0.025f, 0.085f, -0.021f, 0.0f, 0.0f, -0.5f, 0);
- }
- Player.Character.Task.PlayAnimation(nikoGestures, "how", 6.4F);
- ped.Task.PlayAnimation(ambientAnimations, "walk_hold", 6.4F, animationFlags);
- Wait(500);
- Player.Character.Task.ClearAll();
- ped.Task.TurnTo(Player.Character);
- Wait(3500);
- ped.SayAmbientSpeech("INTIMIDATE");
- playerGroup.RemoveMember(ped);
- ped.Task.ClearAll();
- if (clipboard != null && clipboard.Exists())
- {
- clipboard.Delete();
- }
- Player.CanControlCharacter = true;
- GTA.Native.Function.Call("SET_CAMERA_CONTROLS_DISABLED_WITH_PLAYER_CONTROLS", 1);
- GTA.Native.Function.Call("SET_POLICE_IGNORE_PLAYER", Player, 0);
- GTA.Native.Function.Call("SET_MAX_WANTED_LEVEL", 6);
- GTA.Native.Function.Call("SET_EVERYONE_IGNORE_PLAYER", Player, 0);
- if (Player.Money > ticketAmount)
- {
- Player.Money -= ticketAmount;
- }
- else
- {
- ticketAmount = Player.Money;
- }
- ped.Money += ticketAmount;
- Player.Money -= ticketAmount;
- Game.DisplayText("LCPD: your were fined with: " + ticketAmount + "$");
- ped.RelationshipGroup = RelationshipGroup.Cop;
- GTA.Native.Function.Call("CANCEL_OVERRIDE_RESTART");
- Player.Character.FreezePosition = false;
- this.IsSurrendering = false;
- if (ped.Exists())
- {
- GTA.Native.Function.Call("SET_CHAR_AS_MISSION_CHAR", ped, 0);
- if (ped.isInGroup)
- {
- playerGroup.RemoveMember(ped);
- }
- ped.NoLongerNeeded();
- }
- }
- if (this.IsSurrendering && !GTA.Native.Function.Call<bool>("IS_CHAR_PLAYING_ANIM", Player.Character, "ped", "handsup"))
- {
- new AnimationSet("ped");
- Wait(0);
- if ((isKeyPressed(Settings.GetValueKey("Key", Keys.F8)) && !GTA.Native.Function.Call<bool>("PLAYER_HAS_GREYED_OUT_STARS", Player)) && !GTA.Native.Function.Call<bool>("IS_CHAR_PLAYING_ANIM", Player.Character, "ped", "handsup"))
- {
- Player.Character.Task.PlayAnimation(nikoGestures, "handsup", 15.4F);
- }
- Wait(600);
- if (!GTA.Native.Function.Call<bool>("IS_CHAR_PLAYING_ANIM", Player.Character, "ped", "handsup"))
- {
- Player.WantedLevel = this.WantedLevel;
- this.IsSurrendering = false;
- }
- }
- }
- else if ((Player.WantedLevel >= 1) && Player.Character.isAlive && !Player.Character.isRagdoll)
- {
- if (isKeyPressed(Settings.GetValueKey("Key", Keys.F8)) && !GTA.Native.Function.Call<bool>("IS_PLAYER_BEING_ARRESTED", Player) && !GTA.Native.Function.Call<bool>("PLAYER_HAS_GREYED_OUT_STARS", Player))
- {
- this.IsSurrendering = true;
- this.WantedLevel = Player.WantedLevel;
- AnimationSet animz = new AnimationSet("ped");
- if (!GTA.Native.Function.Call<bool>("IS_CHAR_PLAYING_ANIM", Player.Character, "ped", "handsup"))
- {
- Player.Character.Task.PlayAnimation(animz, "handsup", 15.4F);
- }
- Player.WantedLevel = 1;
- Player.Character.Weapons.Current.Ammo = 0;
- Player.Character.DropCurrentWeapon();
- GTA.Native.Function.Call("SET_CURRENT_CHAR_WEAPON", Player.Character, 0, 1);
- Wait(100);
- if (GTA.Native.Function.Call<bool>("IS_CHAR_PLAYING_ANIM", Player.Character, "ped", "handsup"))
- {
- Wait(0);
- }
- else
- {
- Wait(0);
- Player.WantedLevel = this.WantedLevel;
- this.IsSurrendering = false;
- }
- }
- }
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement