private void Interact() { RPG.UIHandler.CloseAll(); Popup.CloseLastPopup(); var nearbyLoot = PlayerMethods.GetNearbyLoot(2.5f).FirstOrDefault(); if (nearbyLoot != null) { RPGMethods.Loot(nearbyLoot); } var nearestPed = RPGInfo.NearestPed; if (nearestPed != null && !Game.Player.Character.IsInCombat) { var npcObject = RPG.WorldData.Npcs.FirstOrDefault(n => n.IsQuestNpc && n.EntityHandle == nearestPed.Handle); if (npcObject != null) { if (npcObject.Name == "Matthew" && RPG.PlayerData.Tutorial.PressJToOpenMenu && RPG.PlayerData.Tutorial.BoughtAmmoFromShop && RPG.PlayerData.Tutorial.GetAKill && RPG.PlayerData.Tutorial.UnlockSkillWithSp && RPG.PlayerData.Tutorial.UsingSkills && RPG.PlayerData.Tutorial.SpawnVehicle) { var tut = RPG.GetPopup <TutorialBox>(); RPG.PlayerData.Tutorial.TutorialDoneExceptSpeak = true; RPG.PlayerData.Tutorial.SpokeToNpc = true; EventHandler.Do(o => { tut.Hide(); }); } RPG.UIHandler.StartDialog(npcObject); } } }
public UIHandler() { RPG.UIHandler = this; KeyDown += OnKeyDown; //Use some fancy transitions View.MenuTransitions = true; View.PopMenu(); View.MenuOffset = new Point(-302, 0); View.MenuPosition = new Point(UI.WIDTH - 300, 0); CharacterMenu = new RPGMenu("Character Menu", new GTASprite("CommonMenu", "interaction_bgd", Color.ForestGreen), new IMenuItem[] { new MenuButton("Quests", "").WithActivate(OpenQuestLog), new MenuButton("Set Skillbar", "").WithActivate(OpenSkillBarMenu), new MenuButton("Skills", "").WithActivate(OpenSkillsMenu), new MenuButton("Weapons", "").WithActivate(OpenWeaponsMenu), //new MenuButton("Talents", "", () => { View.PopMenu(); }), //new MenuButton("Mod Weapons", "", () => { View.PopMenu(); }), //new MenuButton("Mod Cars", "", () => { View.PopMenu();}), new MenuButton("Back", "").WithActivate(() => View.PopMenu()) }); ActionsMenu = new RPGMenu("ACTIONS", new GTASprite("CommonMenu", "interaction_bgd", Color.Red), new IMenuItem[] { new MenuButton("Spawn Personal Vehicle", "").WithActivate(() => RPGMethods.SpawnCar()), new MenuButton("Get Random Contract", "").WithActivate(GetRandomContract), new MenuButton("Purchase Goods", "").WithActivate(OpenShop), new MenuButton("Craft Items", "").WithActivate(OpenCrafting), new MenuButton("Back", "").WithActivate(View.PopMenu) }); SkillTreeMenu = RPG.SkillHandler.GetSkillMenu(); WeaponTreeMenu = RPG.WeaponHandler.GetWeaponMenu(); //var o = new MenuNumericScroller("Number", "", d => { }, d => { }, 0, 100, 1); //var p = new MenuToggle("Toggle", "", ()=> { }, () => { }); MainMenu = new RPGMenu("RPG Menu", new GTASprite("CommonMenu", "interaction_bgd", Color.DodgerBlue), new IMenuItem[] { new MenuButton("Inventory", "").WithActivate(OpenInventory), new MenuButton("Character Menu", "").WithActivate(OpenCharacterMenu), new MenuButton("Actions ", "").WithActivate(() => View.AddMenu(ActionsMenu)), new MenuButton("Options", "").WithActivate(() => OpenOptionsMenu()), new MenuButton("Play as Michael, Franklin and Trevor ", "").WithActivate(ConfirmPlayAsTrio), new MenuButton("Play as Yourself", "").WithActivate(ConfirmPlayAsYourCharacter), new MenuButton("Return to Normal Mode ", "").WithActivate(ConfirmReturnToNormal), new MenuButton("Close", "").WithActivate(View.PopMenu) }); RPGUI.FormatMenu(ActionsMenu); RPGUI.FormatMenu(MainMenu); RPGUI.FormatMenu(CharacterMenu); }
public static void InitCharacter() { LoadTutorial(); RPG.GameMode = GameMode.FullRPG; //Settings RPGLog.Log("Setting model:"); Model m = PlayerData.ModelHash; RPGLog.Log("Setting model to: " + m.Hash); m.Request(5000); if (m.IsValid && m.IsLoaded) { Function.Call(Hash.SET_PLAYER_MODEL, Game.Player.Handle, m.Hash); Script.Wait(500); } //remember we can control max health/ /useful for skills later on RPGLog.Log("Setting player HP"); Game.Player.Character.MaxHealth = 100; Game.Player.Character.Health = 100; RPGLog.Log("Init Cooldowns"); var cooldowns = RPG.PlayerData.Inventory.Where(i => i.Usable).Select(i => i.CoolDownTimer) .Concat(RPG.PlayerData.Skills.Where(s => s.Unlocked).Select(s => s.CoolDownTimer)); foreach (var cooldown in cooldowns) { cooldown.Current = cooldown.CoolDownMsTime; } RPGLog.Log("Loading Variations"); RPGMethods.LoadVariations(); RPGMethods.LoadVariations(); RPGMethods.LoadVariations(); RPGMethods.LoadVariations(); RPGMethods.LoadVariations(); //Reload RPGLog.Log("Reload quests if needed"); foreach (var q in PlayerData.Quests.Where(q => q.InProgress)) { q.OnReload(); } RPGLog.Log("Loading Weapons"); if (m.IsValid && m.IsLoaded && Game.Player.Character != null && Game.Player.Character.Exists()) { RPGMethods.LoadPlayerWeapons(); } }
private void QuestUpdates() { var questsInProgress = PlayerData.Quests.Where(q => q.InProgress).ToList(); var qNum = 1; foreach (var q in questsInProgress.Where(qu => qu.SpawnTargets && qu.HasSpawnedTargets)) { foreach (var b in q.BlipObjects) { if (qNum < 10) { b.Blip.ShowNumber(qNum); } } var conditionsToFix = q.Conditions.Where(c => !c.Done && (c.Type == ConditionType.Kill || c.Type == ConditionType.Loot) && c.Parameters.ContainsKey("ModelHash")); foreach (var c in conditionsToFix) { var quest = q; var npcs = WorldData.Npcs.Where(n => n.Name == "Quest_" + quest.Name).ToList(); for (int i = 0; i < npcs.Count; i++) { var n = npcs[i]; if (n.Ped.Exists() && !n.Ped.IsAlive) { n.Destroy(); } } //If no npcs found, or npcs are too high if (WorldData.Npcs.All(n => n.Name != "Quest_" + quest.Name) || WorldData.Npcs.Where(n => n.Name == "Quest_" + quest.Name).All(n => !n.Ped.IsAlive) || WorldData.Npcs.Where(n => n.Name == "Quest_" + quest.Name).All(w => w.Ped.Exists() && w.Ped.Position.Z > Game.Player.Character.Position.Z + 45) || WorldData.Npcs.Where(n => n.Name == "Quest_" + quest.Name).All(w => w.Ped.Exists() && w.Ped.Position.Z < Game.Player.Character.Position.Z - 45)) { q.HasSpawnedTargets = false; c.Position = RPGMethods.GetSpawnPoint(200); q.ClearObjectsAndBlips(); q.SetupCondition(c, false); RPGLog.Log("Spawning more peds for quest : " + quest.Name); } } qNum++; } }
public void Use(Keys skillKey) { if (RPG.UIHandler.CurrentDialog != null) { return; } var slot = Slots.First(s => s.Key == skillKey); if (slot.ItemName != null) { RPGMethods.UseItem(slot.ItemName); } else if (slot.SkillName != null) { RPGMethods.UseSkill(slot.SkillName); } }
private void SpawnCar() { if (RPG.UIHandler.CurrentDialog != null) { return; } if (!RPG.PlayerData.Tutorial.SpawnVehicle && RPG.PlayerData.Tutorial.PressJToOpenMenu && RPG.PlayerData.Tutorial.BoughtAmmoFromShop && RPG.PlayerData.Tutorial.GetAKill && RPG.PlayerData.Tutorial.UnlockSkillWithSp && RPG.PlayerData.Tutorial.UsingSkills) { var tut = RPG.GetPopup <TutorialBox>(); RPG.PlayerData.Tutorial.SpawnVehicle = true; RPG.PlayerData.Tutorial.TutorialDoneExceptSpeak = true; EventHandler.Do(o => { tut.Hide(); EventHandler.Wait(300); tut.Pop("Quest hand in locations are marked by the white star blip on the map.", "Drive to Matthew (Star) and press E to speak with him and finish your quest."); }); } RPGMethods.SpawnCar(); }
public static void LoadAllData(out bool NeedToCreateCharacter) { RPGMethods.CleanupObjects(); NeedToCreateCharacter = false; var newDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var dir = Path.Combine(newDir, @"Rockstar Games\GTA V\RPGMod\"); var playerDataFile = "PlayerData.save"; var playerDataPath = Path.Combine(dir, playerDataFile); if (File.Exists(playerDataPath)) { try { var loadedData = File.ReadAllText(playerDataPath); PlayerData = JsonConvert.DeserializeObject <PlayerData>(loadedData, GM.GetSerialisationSettings()); var dataVersion = PlayerData.Version; if (dataVersion != RPG.Version) { VersionMigration.Migrate(dataVersion, RPG.Version); } InitCharacter(); } catch (Exception e) { LoadedSuccessfully = false; RPGLog.Log(e.ToString()); RPGLog.Log("Error Loading or Initialising Player data."); } } else { NeedToCreateCharacter = true; } ApplySettings(); }
private void UseInventoryItem(RPGListMenu obj) { var selected = obj.SelectedIndex; if (selected >= PlayerData.Inventory.Count) { View.PopMenu(); return; } if (!PlayerData.Inventory.Any()) { return; } var selectedItem = PlayerData.Inventory[selected]; var used = RPGMethods.UseItem(selectedItem); if (selectedItem.Quantity <= 0) { selected--; if (selected < 0) { selected = 0; } } UpdateInventory(selected); InventoryMenu.SelectedIndex = selected; if (used) { RPG.Notify(Notification.Alert("Used : " + selectedItem.Name)); } }
public void UpdateX() { if (Function.Call <bool>(Hash.IS_CUTSCENE_ACTIVE)) { return; } Ped player = Game.Player.Character; Vehicle vehicle = player.CurrentVehicle; //Loot Interact var nearbyLoot = RPGInfo.NearbyLoot; var showingLoot = false; if (nearbyLoot != null) { if (nearbyLoot.Item.Type == ItemType.Money || nearbyLoot.Item.Type == ItemType.QuestItem) { RPGMethods.Loot(nearbyLoot); } else if (RPGSettings.ShowUI) { var interactUI = new UIContainer(new Point(UI.WIDTH / 2 - 120, UI.HEIGHT - 100), new Size(240, 17), Color.FromArgb(70, 70, 200, 70)); var lootStr = RPG.UsingController ? "Hold (A) To Loot " : "Press E To Loot "; interactUI.Items.Add(new UIText(lootStr + nearbyLoot.Name, new Point(240 / 2, 1), 0.25f, Color.White, 0, true)); interactUI.Draw(); showingLoot = true; } } if (CurrentDialog != null && !IsOpen(DialogMenu)) { World.RenderingCamera = NpcCamera; OpenDialog(); } //Controller Support var up = Game.IsControlJustPressed(0, Control.ScriptPadUp); var down = Game.IsControlJustPressed(0, Control.ScriptPadDown); var left = Game.IsControlJustPressed(0, Control.ScriptPadLeft); var right = Game.IsControlJustPressed(0, Control.ScriptPadRight); var back = Game.IsControlJustPressed(0, Control.Reload); var interact = Game.IsControlJustPressed(0, Control.Sprint); var skillMod = Game.IsControlPressed(0, Control.Jump); var hotkeyMod = Game.IsControlPressed(0, Control.Reload); if (interact) { if (CurrentDialog != null) { DialogMenu.OnActivate(); } else { View.HandleActivate(); } } if (back) { View.HandleBack(); } if (!skillMod && !hotkeyMod) { if (left) { if (CurrentDialog != null) { DialogMenu.OnChangeItem(false); } else { View.HandleChangeItem(false); } } if (right) { if (CurrentDialog != null) { DialogMenu.OnChangeItem(true); } else { View.HandleChangeItem(true); } } if (up) { if (CurrentDialog != null) { DialogMenu.OnChangeSelection(false); } else { View.HandleChangeSelection(false); } } if (down) { if (CurrentDialog != null) { DialogMenu.OnChangeSelection(true); } else { View.HandleChangeSelection(true); } } } if (!RPGSettings.ShowUI || CurrentDialog != null) { return; } //NPC Interact if (!showingLoot && CurrentDialog == null && !Game.Player.Character.IsInCombat) { var nearestPed = RPGInfo.NearestPed; if (nearestPed != null) { var npcObject = RPG.WorldData.Npcs.FirstOrDefault(n => n.IsQuestNpc && n.EntityHandle == nearestPed.Handle); if (npcObject != null) { var interactUI = new UIContainer(new Point(UI.WIDTH / 2 - 120, UI.HEIGHT - 122), new Size(240, 17), Color.FromArgb(70, 190, 190, 190)); var interactStr = RPG.UsingController ? "Hold (A) to Interact with " : "Press E to Interact with "; interactUI.Items.Add(new UIText(interactStr + npcObject.Name, new Point(240 / 2, 1), 0.25f, Color.White, 0, true)); interactUI.Draw(); } } } //Player text //new UIText(PlayerData.Name.ToLower() + " level " + PlayerData.Level + " criminal", new Point(51, UI.HEIGHT - 55), 0.25f, Color.White, 0, false).Draw(); //Expbar var expBarUI = new UIContainer(new Point(0, UI.HEIGHT - 2), new Size(UI.WIDTH, 2), Color.FromArgb(180, 20, 20, 20)); var percentExp = (float)PlayerData.Exp / PlayerData.ExpToLevel; expBarUI.Items.Add(new UIRectangle(new Point(0, 0), new Size((int)(percentExp * UI.WIDTH), 2), Color.FromArgb(220, 255, 255, 0))); expBarUI.Draw(); #region "RPG Style UI" var borderColor = Color.FromArgb(255, 75, 75, 75); Point rectanglePoint; Point textPoint; switch (RPGSettings.SafeArea) { case 0: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 63 : 63), UI.HEIGHT - 47); textPoint = new Point((RPGInfo.IsWideScreen ? 63 : 63), UI.HEIGHT - 48); break; case 1: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 57 : 57), UI.HEIGHT - 43); textPoint = new Point((RPGInfo.IsWideScreen ? 57 : 57), UI.HEIGHT - 44); break; case 2: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 51 : 50), UI.HEIGHT - 40); // textPoint = new Point((RPGInfo.IsWideScreen ? 51 : 51), UI.HEIGHT - 41); // break; case 3: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 45 : 45), UI.HEIGHT - 36); textPoint = new Point((RPGInfo.IsWideScreen ? 45 : 45), UI.HEIGHT - 37); break; case 4: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 39 : 39), UI.HEIGHT - 33); textPoint = new Point((RPGInfo.IsWideScreen ? 39 : 39), UI.HEIGHT - 34); break; case 5: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 32 : 32), UI.HEIGHT - 29); textPoint = new Point((RPGInfo.IsWideScreen ? 32 : 32), UI.HEIGHT - 30); break; case 6: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 26 : 26), UI.HEIGHT - 26); textPoint = new Point((RPGInfo.IsWideScreen ? 26 : 26), UI.HEIGHT - 27); break; case 7: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 19 : 19), UI.HEIGHT - 22); textPoint = new Point((RPGInfo.IsWideScreen ? 19 : 19), UI.HEIGHT - 23); break; case 8: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 13 : 13), UI.HEIGHT - 18); textPoint = new Point((RPGInfo.IsWideScreen ? 13 : 13), UI.HEIGHT - 19); break; case 9: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 6 : 6), UI.HEIGHT - 15); textPoint = new Point((RPGInfo.IsWideScreen ? 6 : 6), UI.HEIGHT - 16); break; case 10: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 0 : 0), UI.HEIGHT - 10); textPoint = new Point((RPGInfo.IsWideScreen ? 0 : 0), (RPGInfo.IsWideScreen ? UI.HEIGHT - 11 : UI.HEIGHT - 12)); break; default: rectanglePoint = new Point((RPGInfo.IsWideScreen ? 0 : 0), UI.HEIGHT - 10); textPoint = new Point((RPGInfo.IsWideScreen ? 0 : 0), (RPGInfo.IsWideScreen ? UI.HEIGHT - 11 : UI.HEIGHT - 12)); break; } if (vehicle != null) { var speed = ((int)(vehicle.Speed * 2.45)).ToString("000"); new UIText(" MPH", new Point(RPGInfo.IsWideScreen ? textPoint.X + 156 : textPoint.X + 156, textPoint.Y), 0.22f, Color.White, 0, false).Draw(); //55 new UIText(speed, new Point(RPGInfo.IsWideScreen ? textPoint.X + 141 : textPoint.X + 141, textPoint.Y), 0.22f, Color.White, 0, false).Draw(); //55 } new UIRectangle(rectanglePoint, new Size(181, 10), borderColor).Draw(); //playerinfo new UIText(PlayerData.Name + " Level " + PlayerData.Level + " " + PlayerData.Class.ToString().Replace("_", " "), textPoint, 0.22f, Color.White, 0, false).Draw(); var offset = RPGSettings.ShowingSubtitle ? -85 : 0; new UIRectangle(new Point(UI.WIDTH / 2 - 173, UI.HEIGHT - 45 - 28 + offset), new Size(345, 10), Color.FromArgb(60, 0, 0, 0)).Draw(); new UIRectangle(new Point(UI.WIDTH / 2 - 173, UI.HEIGHT - 45 - 13 + offset), new Size(345, 10), Color.FromArgb(60, 0, 0, 0)).Draw(); var hpText = string.Format("HP: {0}/{1}", Game.Player.Character.Health, Game.Player.Character.MaxHealth); var armorText = string.Format("Armor: {0}/{1}", Game.Player.Character.Armor, 100); var hp = ((float)Game.Player.Character.Health / Game.Player.Character.MaxHealth); var ap = ((float)Game.Player.Character.Armor / 100); var hpColor = Color.FromArgb(120, 33, 149, 34); if (hp < 0.2f) { hpColor = Color.FromArgb(120, 139, 0, 0); } else if (hp < 0.4f) { hpColor = Color.FromArgb(120, 255, 69, 0); } new UIRectangle(new Point(UI.WIDTH / 2 - 173, UI.HEIGHT - 45 - 28 + offset), new Size((int)(hp * 345), 10), hpColor).Draw(); new UIRectangle(new Point(UI.WIDTH / 2 - 173, UI.HEIGHT - 45 - 13 + offset), new Size((int)(ap * 345), 10), Color.FromArgb(180, 30, 144, 255)).Draw(); new UIText(hpText, new Point(UI.WIDTH / 2, UI.HEIGHT - 45 - 28 - 2 + offset), 0.22f, Color.White, 0, true).Draw(); new UIText(armorText, new Point(UI.WIDTH / 2, UI.HEIGHT - 45 - 13 - 2 + offset), 0.22f, Color.White, 0, true).Draw(); #endregion //Character window #2 if (View.ActiveMenus > 0) { var charPanel = new UIContainer(new Point(UI.WIDTH - 300, View.MenuPosition.Y - 215), new Size(300, 200), Color.Gray); //todo: what should we draw here? //charPanel.Draw(); } //Quest Tracker if (RPGSettings.ShowQuestTracker) { GetQuestTracker().Draw(); } //Skill bar if (RPGSettings.ShowSkillBar) { var skillOffset = RPGSettings.ShowingSubtitle ? -80 : 0; var skillBarUI = RPG.SkillHandler.GetSkillBar(skillOffset); skillBarUI.Draw(); } }
private void ConfirmReturnToNormal() { var box = RPGMessageBox.Create("Are you sure you want to return to normal mode?", "Return to normal mode", "Continue Playing GTA:RPG", () => { View.CloseAllMenus(); RPGMethods.ReturnToNormal(); }, () => { View.MenuPosition = new Point(UI.WIDTH - 300, 0); }); RPGUI.FormatMenu(box); View.AddMenu(box); }
private void ConfirmPlayAsTrio() { var box = RPGMessageBox.Create("Are you sure you want to play as the trio?", "Play as Michael Trevor and Franklin", "Continue Playing GTA:RPG", () => { View.CloseAllMenus(); RPGMethods.PlayAsTrio(); }, () => { View.MenuPosition = new Point(UI.WIDTH - 300, 0); }); RPGUI.FormatMenu(box); View.AddMenu(box); }
public void SetupCondition(QuestCondition c, bool firstSetup) { if (c.Type == ConditionType.Kill && c.Parameters.ContainsKey("ModelHash") || c.Type == ConditionType.Loot && c.Parameters.ContainsKey("ModelHash")) { int[] hashes; var models = c.Parameters["ModelHash"] as uint[]; var modelsA = c.Parameters["ModelHash"] as JArray; if (models != null) { hashes = models.Select(m => (int)m).ToArray(); } else { hashes = modelsA.Select(jv => (uint)jv).Select(t => (int)t).ToArray(); } if (SpawnTargets) { c.Position = c.Position == Vector3.Zero ? RPGMethods.GetSpawnPoint(350) : c.Position; BlipObjects.Add(RPGBlips.QuestArea(Name, c.Position)); EventHandler.Do(q => { var pos = c.Position; var amountToSpawn = AmountToSpawn; var playerGroup = Game.Player.Character.RelationshipGroup; var enemies = World.AddRelationshipGroup("RPG_Enemies"); World.SetRelationshipBetweenGroups(Relationship.Neutral, playerGroup, enemies); for (int i = 0; i < amountToSpawn; i++) { var hash = hashes[Random.Range(0, hashes.Length)]; var m = new Model(hash); m.Request(1000); var ped = World.CreatePed(m, pos + Vector3.RandomXY() * 2, Game.Player.Character.Heading + 180); ped.RelationshipGroup = enemies; var b = ped.AddBlip(); EventHandler.Wait(100); b.IsFriendly = false; b.Scale = 0.6f; ped.Task.WanderAround(); //todo: apply some weapon damage scaling here lol ped.Weapons.Give(WeaponHash.Pistol, 1000, false, true); ped.CanSwitchWeapons = true; RPG.WorldData.AddPed(new NpcObject("Quest_" + Name, ped)); RPG.WorldData.AddBlip(new BlipObject("Quest_" + Name, b)); HasSpawnedTargets = true; } }); } } if (!c.Parameters.ContainsKey("Current")) { c.Parameters.Add("Current", 0); } if (firstSetup) { switch (c.Type) { case ConditionType.Kill: case ConditionType.Loot: case ConditionType.DestroyVehicle: case ConditionType.Acquire: c.Parameters["Current"] = 0; break; case ConditionType.Interact: case ConditionType.Escort: case ConditionType.Race: case ConditionType.EvadeCops: c.Parameters["Current"] = false; break; case ConditionType.Custom: break; default: throw new ArgumentOutOfRangeException(); } } }
private void CheckIfForQuest(Entity entity, int Hash, bool isPed) { var hashKey = isPed ? "ModelHash" : "VehHash"; var activeQuests = PlayerData.Quests.Where(q => q.InProgress).ToList(); for (int i = 0; i < activeQuests.Count; i++) { var quest = activeQuests[i]; foreach (var c in quest.Conditions) { if (c.Type == ConditionType.Kill || c.Type == ConditionType.DestroyVehicle || c.Type == ConditionType.Loot) { if (!c.Parameters.ContainsKey(hashKey)) { if ((c.Type == ConditionType.Kill && isPed) || (c.Type == ConditionType.DestroyVehicle && !isPed)) { var cur = Convert.ToInt32(c.Parameters["Current"]); c.Parameters["Current"] = cur + 1; } else if (c.Type == ConditionType.Loot) { if (c.Parameters.ContainsKey("Vehicles")) { if (!isPed) { DropQuestItem(entity, (string)c.Parameters["PropModel"], (string)c.Parameters["ItemName"], Convert.ToInt32(c.Parameters["DropRate"])); } } else { if (isPed) { DropQuestItem(entity, (string)c.Parameters["PropModel"], (string)c.Parameters["ItemName"], Convert.ToInt32(c.Parameters["DropRate"])); } } } continue; } int[] hashes = RPGMethods.GetModelHashes(c.Parameters[hashKey]); var p = Hash; foreach (var m in hashes) { var x = m; if (p == x) { if (c.Type != ConditionType.Loot) { var cur = Convert.ToInt32(c.Parameters["Current"]); c.Parameters["Current"] = cur + 1; } else { DropQuestItem(entity, (string)c.Parameters["PropModel"], (string)c.Parameters["ItemName"], Convert.ToInt32(c.Parameters["DropRate"])); } break; } } } } } }
public override void Update() { Ped player = Game.Player.Character; if (player.IsDead || Function.Call <bool>(Hash.IS_PLAYER_BEING_ARRESTED, Game.Player.Handle)) { RPG.PlayerDead = true; Wait(3000); var deathPosition = Game.Player.Character.Position; try { RPG.UIHandler.CloseAll(); RPGSettings.ShowUI = false; var c = World.CreateCamera(Game.Player.Character.Position + new Vector3(0, 0, 100), new Vector3(0, 0, 90), GameplayCamera.FieldOfView); World.RenderingCamera = c; var oldModel = RPG.PlayerData.ModelHash; Model m = PedHash.Michael; m.Request(1000); Function.Call(Hash.SET_PLAYER_MODEL, Game.Player.Handle, m.Hash); Function.Call(Hash.SET_PED_DEFAULT_COMPONENT_VARIATION, Game.Player.Character.Handle); m.MarkAsNoLongerNeeded(); while (Game.Player.Character.IsDead || Function.Call <bool>(Hash.IS_PLAYER_BEING_ARRESTED, Game.Player.Handle)) { Wait(0); } var t = 150; while (t > 0) { UI.ShowSubtitle("Loading", 100); Function.Call(Hash.DISPLAY_HUD, 0); Function.Call(Hash.DISPLAY_RADAR, 0); World.RenderingCamera = c; Wait(100); t--; } //Wait(15000); Model oldM = oldModel; oldM.Request(1000); Function.Call(Hash.SET_PLAYER_MODEL, Game.Player.Handle, oldM.Hash); Wait(0); Game.Player.Character.FreezePosition = false; RPGMethods.OnRespawn(); RPGSettings.ShowUI = true; Function.Call(Hash.DISPLAY_HUD, 1); Function.Call(Hash.DISPLAY_RADAR, 1); World.RenderingCamera = null; c.Destroy(); Game.FadeScreenIn(500); RPG.PlayerDead = false; Wait(15000); } catch (Exception ex) { RPGLog.Log(ex.ToString()); } } }
private void StartRPGMode() { World.DestroyAllCameras(); Game.Player.CanControlCharacter = true; string missing; var statusGood = CheckStatus(out missing); if (statusGood || !RPGSettings.ShowPrerequisiteWarning) { RPG.Initialise(); Enabled = false; } else { var mb = (RPGMessageBox)RPGMessageBox.Create("Missing: " + missing + " View readme for more info.", "Play Anyway ( WARNING: Bugs/errors expected))", "Return to normal mode", PlayAnyway, () => { RPGMethods.ReturnToNormal(); RPG.UIHandler.View.CloseAllMenus(); }); RPGUI.FormatMenu(mb); mb.TopColor = Color.Red; mb.HeaderScale = 0.5f; RPG.UIHandler.View.AddMenu(mb); Enabled = false; } }