private static void MoveToHorrifyPoint(TargetArea area) { CombatMovement.Queue(new CombatMovement { Name = "Horrify Position", Destination = area.Position, OnUpdate = m => { // Only change destination if the new target is way better if (TikHorrifyCriteria(Enemies.BestLargeCluster) && Enemies.BestLargeCluster.Position.Distance(m.Destination) > 15f) { m.Destination = Enemies.BestLargeCluster.Position; } }, Options = new CombatMovementOptions { AcceptableDistance = 12f, Logging = LogLevel.Verbose, ChangeInDistanceLimit = 2f, SuccessBlacklistSeconds = 3, FailureBlacklistSeconds = 7, TimeBeforeBlocked = 500 } }); }
private static void MoveToSoulHarvestPoint(TargetArea area) { CombatMovement.Queue(new CombatMovement { Name = "Jade Harvest Position", Destination = area.Position, OnUpdate = m => { // Only change destination if the new target is way better if (IdealSoulHarvestCriteria(Enemies.BestLargeCluster) && Enemies.BestLargeCluster.Position.Distance(m.Destination) > 10f) { m.Destination = Enemies.BestLargeCluster.Position; } }, OnFinished = m => { if (MinimumSoulHarvestCriteria(Enemies.CloseNearby)) { //LogTargetArea("--- Harvesting (CombatMovement)", area); Skills.WitchDoctor.SoulHarvest.Cast(); } }, Options = new CombatMovementOptions { Logging = LogLevel.Verbose, } }); }
public static void SetCombatMovement(this Ped ped, CombatMovement movement) { Function.Call((Hash)5592521861259579479L, new InputArgument[2] { InputArgument.op_Implicit(((Entity)ped).get_Handle()), InputArgument.op_Implicit((int)movement) }); }
public static void SetCombatMovement(this Ped ped, CombatMovement movement) { Function.Call(GTA.Native.Hash.SET_PED_COMBAT_MOVEMENT, (InputArgument[])new InputArgument[2] { ped.Handle, (int)movement }); }
void Update() { PlayerCollisionHandler.StartCollisions(HorizontalMovement.HorizontalMovementState, PlayerStatusVariables.facingDirection); HorizontalMovement.StartMovement(); HorizontalMovement.PressMovementHandler(); VerticalMovement.StartMovement(); VerticalMovement.PressMovementHandler(); MiscellaneousMovement.StartMovement(); MiscellaneousMovement.PressMovementHandler(); CombatMovement.StartMovement(); CombatMovement.PressMovementHandler(); }
// Start is called before the first frame update void Start() { _cMove = GetComponent <CombatMovement>(); }
/// <summary> /// Spawns a ped on the given team, ready to fight. /// </summary> /// <param name="alliedTeam">true=ally team / false=enemy team</param> /// <returns>The spawned ped</returns> private Ped SpawnRandomPed(bool alliedTeam) { Vector3 pedPosition = alliedTeam ? spawnpointAllies : spawnpointEnemies; string pedName = RandomChoice(alliedTeam ? pedsAllies : pedsEnemies); string weaponName = RandomChoice(alliedTeam ? weaponsAllies : weaponsEnemies); PedHash pedSpawn; WeaponHash weaponGive; // TODO verify names from arrays on script startup if (!Enum.TryParse(pedName, true, out pedSpawn)) { throw new FormatException("Ped name " + pedName + " does not exist!"); } if (!Enum.TryParse(weaponName, true, out weaponGive)) { throw new FormatException("Weapon name " + weaponName + " does not exist!"); } Ped ped = World.CreatePed(pedSpawn, pedPosition); ped.Weapons.Give(weaponGive, 1, true, true); ped.Health = ped.MaxHealth = alliedTeam ? healthAllies : healthEnemies; ped.Armor = alliedTeam ? armorAllies : armorEnemies; ped.Money = 0; ped.Accuracy = alliedTeam ? accuracyAllies : accuracyEnemies; ped.RelationshipGroup = alliedTeam ? relationshipGroupAllies : relationshipGroupEnemies; ped.DropsWeaponsOnDeath = dropWeaponOnDead; CombatRange combatRange = alliedTeam ? combatRangeAllies : combatRangeEnemies; if (combatRange != CombatRange.Disabled) { if (combatRange == CombatRange.Random) { combatRange = RandomChoice(randomizableCombatRanges); } Function.Call(Hash.SET_PED_COMBAT_RANGE, ped, (int)combatRange); } CombatMovement combatMovement = alliedTeam ? combatMovementAllies : combatMovementEnemies; if (combatMovement != CombatMovement.Disabled) { if (combatMovement == CombatMovement.Random) { combatMovement = RandomChoice(randomizableCombatMovements); } Function.Call(Hash.SET_PED_COMBAT_MOVEMENT, ped, (int)combatMovement); } Function.Call(Hash.SET_PED_COMBAT_ATTRIBUTES, ped, 46, true); // force peds to fight Function.Call(Hash.SET_PED_SEEING_RANGE, ped, spawnpointsDistance); Function.Call(Hash.SET_PED_COMBAT_RANGE, ped, (int)(alliedTeam ? combatRangeAllies : combatRangeEnemies)); Function.Call(Hash.SET_PED_COMBAT_MOVEMENT, ped, (int)(alliedTeam ? combatMovementAllies : combatMovementEnemies)); if (showBlipsOnPeds) { Blip blip = ped.AddBlip(); blip.Color = alliedTeam ? BlipColor.Blue : BlipColor.Orange; blip.Name = alliedTeam ? "Ally team member" : "Enemy team member"; blip.Scale = 0.5f; } ped.Task.ClearAllImmediately(); ped.AlwaysKeepTask = true; // TODO Investigate if this could be making peds avoid reloads if (alliedTeam) { spawnedAllies.Add(ped); spawnedAlliesCounter++; } else { spawnedEnemies.Add(ped); spawnedEnemiesCounter++; } return(ped); }
public SimpleGangWar() { Tick += MainLoop; KeyUp += OnKeyUp; Interval = idleInterval; ScriptSettings config = ScriptSettings.Load("scripts\\SimpleGangWar.ini"); string configString; healthAllies = config.GetValue(SettingsHeader.Allies, "Health", healthAllies); healthEnemies = config.GetValue(SettingsHeader.Enemies, "Health", healthEnemies); armorAllies = config.GetValue(SettingsHeader.Allies, "Armor", armorAllies); armorEnemies = config.GetValue(SettingsHeader.Enemies, "Armor", armorEnemies); accuracyAllies = config.GetValue(SettingsHeader.Allies, "Accuracy", accuracyAllies); accuracyEnemies = config.GetValue(SettingsHeader.Enemies, "Accuracy", accuracyEnemies); configString = config.GetValue <string>(SettingsHeader.Allies, "CombatMovement", ""); combatMovementAllies = EnumParse(configString, combatMovementAllies); configString = config.GetValue <string>(SettingsHeader.Enemies, "CombatMovement", ""); combatMovementEnemies = EnumParse(configString, combatMovementEnemies); configString = config.GetValue <string>(SettingsHeader.Allies, "CombatRange", ""); combatRangeAllies = EnumParse(configString, combatRangeAllies); configString = config.GetValue <string>(SettingsHeader.Enemies, "CombatRange", ""); combatRangeEnemies = EnumParse(configString, combatRangeEnemies); configString = config.GetValue <string>(SettingsHeader.Allies, "Weapons", ""); weaponsAllies = ArrayParse(configString, weaponsAllies); configString = config.GetValue <string>(SettingsHeader.Enemies, "Weapons", ""); weaponsEnemies = ArrayParse(configString, weaponsEnemies); configString = config.GetValue <string>(SettingsHeader.Allies, "Models", ""); pedsAllies = ArrayParse(configString, pedsAllies); configString = config.GetValue <string>(SettingsHeader.Enemies, "Models", ""); pedsEnemies = ArrayParse(configString, pedsEnemies); configString = config.GetValue <string>(SettingsHeader.General, "Hotkey", ""); hotkey = EnumParse(configString, hotkey); configString = config.GetValue <string>(SettingsHeader.General, "SpawnHotkey", ""); spawnHotkey = EnumParse(configString, spawnHotkey); maxPedsPerTeam = config.GetValue(SettingsHeader.General, "MaxPedsPerTeam", maxPedsPerTeam); noWantedLevel = config.GetValue(SettingsHeader.General, "NoWantedLevel", noWantedLevel); showBlipsOnPeds = config.GetValue(SettingsHeader.General, "ShowBlipsOnPeds", showBlipsOnPeds); dropWeaponOnDead = config.GetValue(SettingsHeader.General, "DropWeaponOnDead", dropWeaponOnDead); removeDeadPeds = config.GetValue(SettingsHeader.General, "RemoveDeadPeds", removeDeadPeds); runToSpawnpoint = config.GetValue(SettingsHeader.General, "RunToSpawnpoint", runToSpawnpoint); processOtherRelationshipGroups = config.GetValue(SettingsHeader.General, "ProcessOtherRelationshipGroups", processOtherRelationshipGroups); neutralPlayer = config.GetValue(SettingsHeader.General, "NeutralPlayer", neutralPlayer); spawnpointFloodLimitPeds = config.GetValue(SettingsHeader.General, "SpawnpointFloodLimitPeds", spawnpointFloodLimitPeds); spawnpointFloodLimitDistance = config.GetValue(SettingsHeader.General, "SpawnpointFloodLimitDistance", spawnpointFloodLimitDistance); idleInterval = config.GetValue(SettingsHeader.General, "IdleInterval", idleInterval); battleInterval = config.GetValue(SettingsHeader.General, "BattleInterval", battleInterval); maxPedsAllies = config.GetValue(SettingsHeader.Allies, "MaxPeds", maxPedsPerTeam); maxPedsEnemies = config.GetValue(SettingsHeader.Enemies, "MaxPeds", maxPedsPerTeam); maxSpawnPedsAllies = config.GetValue(SettingsHeader.Allies, "MaxSpawnPeds", maxSpawnPedsAllies); maxSpawnPedsEnemies = config.GetValue(SettingsHeader.Enemies, "MaxSpawnPeds", maxSpawnPedsEnemies); relationshipGroupAllies = World.AddRelationshipGroup("simplegangwar_allies"); relationshipGroupEnemies = World.AddRelationshipGroup("simplegangwar_enemies"); relationshipGroupPlayer = Game.Player.Character.RelationshipGroup; SetRelationshipBetweenGroups(Relationship.Hate, relationshipGroupAllies, relationshipGroupEnemies); SetRelationshipBetweenGroups(Relationship.Respect, relationshipGroupAllies, relationshipGroupAllies); SetRelationshipBetweenGroups(Relationship.Respect, relationshipGroupEnemies, relationshipGroupEnemies); SetRelationshipBetweenGroups(Relationship.Respect, relationshipGroupAllies, relationshipGroupPlayer); if (!neutralPlayer) { SetRelationshipBetweenGroups(Relationship.Hate, relationshipGroupEnemies, relationshipGroupPlayer); } else { SetRelationshipBetweenGroups(Relationship.Respect, relationshipGroupEnemies, relationshipGroupPlayer); } // TODO processedRelationshipGroups not being used? processedRelationshipGroups.Add(relationshipGroupPlayer); processedRelationshipGroups.Add(relationshipGroupAllies); processedRelationshipGroups.Add(relationshipGroupEnemies); random = new Random(); UI.Notify("SimpleGangWar loaded"); }
void FixedUpdate() { HorizontalMovement.HoldMovementHandler(); VerticalMovement.HoldMovementHandler(); CombatMovement.HoldMovementHandler(); }