Beispiel #1
0
    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)
     });
 }
Beispiel #3
0
 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
     });
 }
Beispiel #4
0
 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);
     }
 }
Beispiel #5
0
    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);
            }
        }
    }
Beispiel #6
0
    /// <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);
    }
Beispiel #7
0
    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");
    }