public void Init(CombatEnemy targetObject) { target = targetObject; targetInstance = Instantiate(target); CombatUI.combatOverPanel.SetActive(false); CombatUI.CardPanel.gameObject.SetActive(true); CombatUI.gameObject.SetActive(true); playerModel = Instantiate(CombatViewModelPrefab, CombatUI.GroundMelee[0].transform); targetModel = Instantiate(CombatViewModelPrefab, CombatUI.GroundMelee[1].transform); targetModel.Init(targetInstance.HeadColor, targetInstance.TorsoColor, targetInstance.LegsColor, targetInstance.FeetColor); player.target = targetInstance; range = CombatRange.melee; consumableCount = 0; combatTurn = 0; CombatUI.combatRoundText.text = CombatTurn.ToString(); CombatUI.combatStatusText.text = ""; CombatUI.UpdateUI(player.statistics, target.Stats); getPlayerCards(); }
public static void SetCombatRange(this Ped ped, CombatRange range) { Function.Call((Hash)4350590797670664571L, new InputArgument[2] { InputArgument.op_Implicit(((Entity)ped).get_Handle()), InputArgument.op_Implicit((int)range) }); }
public static void SetCombatRange(this Ped ped, CombatRange range) { Function.Call(GTA.Native.Hash.SET_PED_COMBAT_RANGE, (InputArgument[])new InputArgument[2] { ped.Handle, (int)range }); }
public void SetRange(CombatRange r) { range = r; CardsByRange(r); if (range == CombatRange.melee) { CombatUI.SetRangeMelee(playerModel, targetModel); } else if (range == CombatRange.ranged) { CombatUI.SetRangeRanged(playerModel, targetModel); } else if (range == CombatRange.distant) { CombatUI.SetRangeDistant(playerModel, targetModel); } }
private void CardsByRange(CombatRange range) { bool isRange; for (int i = 0; i < cardList.Count; i++) { isRange = false; for (int k = 0; k < cardList[i].UsableRange.Length; k++) { if (cardList[i].UsableRange[k] == range) { isRange = true; cardList[i].gameObject.SetActive(true); break; } } if (!isRange) { cardList[i].gameObject.SetActive(false); } } }
/// <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"); }