public string GetLeastFavoriteGangName()
        {
            int     maxKills     = int.MinValue;
            PedType leastFavGang = PedType.PLAYER1;

            for (PedType g = PedType.GANG1; g <= PedType.GANG9; g = (PedType)((int)g + 1))
            {
                int kills = Stats.PedsKilledOfThisType[(int)g];
                if (kills > maxKills)
                {
                    maxKills     = kills;
                    leastFavGang = g;
                }
            }

            return(leastFavGang switch
            {
                PedType.GANG1 => Gxt.TheText["MAIN"]["ST_GNG1"],
                PedType.GANG2 => Gxt.TheText["MAIN"]["ST_GNG2"],
                PedType.GANG3 => Gxt.TheText["MAIN"]["ST_GNG3"],
                PedType.GANG4 => Gxt.TheText["MAIN"]["ST_GNG4"],
                PedType.GANG5 => Gxt.TheText["MAIN"]["ST_GNG5"],
                PedType.GANG6 => Gxt.TheText["MAIN"]["ST_GNG6"],
                PedType.GANG7 => Gxt.TheText["MAIN"]["ST_GNG7"],
                PedType.GANG8 => Gxt.TheText["MAIN"]["ST_GNG8"],
                PedType.GANG9 => Gxt.TheText["MAIN"]["ST_GNG9"],
                _ => null,
            });
예제 #2
0
파일: Peds.cs 프로젝트: jessegranger/Shiv
        public static PedHandle CreatePed(PedType type, PedHash model, Vector3 pos, float heading)
        {
            switch (RequestModel(model))
            {
            case AssetStatus.Invalid: return(PedHandle.ModelInvalid);

            case AssetStatus.Loading: return(PedHandle.ModelLoading);

            default: return(Call <PedHandle>(CREATE_PED, type, model, pos.X, pos.Y, pos.Z, heading, false, true));
            }
        }
예제 #3
0
파일: Peds.cs 프로젝트: jessegranger/Shiv
        public static PedHandle CreatePedInsideVehicle(VehicleHandle veh, PedType type, ModelHash model, VehicleSeat seat)
        {
            switch (RequestModel(model))
            {
            case AssetStatus.Invalid: return(PedHandle.ModelInvalid);

            case AssetStatus.Loading: return(PedHandle.ModelLoading);

            default: return(Call <PedHandle>(CREATE_PED_INSIDE_VEHICLE, veh, type, model, seat, true, true));
            }
        }
 public static async Task <Ped> CreatePed(Model model, PedType pedType, Vector3 pos, float heading = 0f, bool networked = true)
 {
     if (API.IsModelAPed((uint)model.Hash))
     {
         model.Request();
         while (!model.IsLoaded)
         {
             await BaseScript.Delay(1);
         }
         Ped ped = new Ped(API.CreatePed((int)pedType, (uint)model.Hash, pos.X, pos.Y, pos.Z, heading, networked, false));
         model.MarkAsNoLongerNeeded();
         return(ped);
     }
     return(null);
 }
예제 #5
0
파일: Peds.cs 프로젝트: jessegranger/Shiv
 public static bool TryCreatePed(PedType type, PedHash model, Vector3 pos, float heading, out PedHandle ped)
 {
     if (!IsValid(model))
     {
         ped = PedHandle.ModelInvalid;
         return(false);
     }
     if (!IsLoaded(model))
     {
         ped = PedHandle.ModelLoading;
         RequestModel(model);
         return(false);
     }
     ped = Call <PedHandle>(CREATE_PED, type, model, pos.X, pos.Y, pos.Z, heading, false, true);
     return(true);
 }
예제 #6
0
        public PedData(Ped ped, PedType type, bool isImportant = false, bool isPerp = false, string bruiseLoc = null,
                       string markLoc = null, string cutLoc = null, Traces traces = Traces.Blood, bool socialMedia = false)
        {
            Type   = type;
            Exists = true;
            Persona p = Functions.GetPersonaForPed(ped);

            Name   = p.FullName;
            Dob    = p.BirthDay;
            Gender = ExtensionMethods.GetGender(ped);

            if (type == PedType.VictimFamily)
            {
                if (Gender == ExtensionMethods.Gender.Male)
                {
                    Relationship = "Father";
                }
                else
                {
                    Relationship = "Mother";
                }
                Model = ped.Model.Name;
            }
            else if (type == PedType.Suspect)
            {
                IsPerp = isPerp;
                Model  = ped.Model.Name;
                var models = Rage.Model.VehicleModels.Where(c => c.IsCar && !c.IsBigVehicle && !c.IsBike && !c.IsEmergencyVehicle).ToList();
                VehModel = models[Rand.RandomNumber(models.Count)].Name;
            }
            else if (type == PedType.Victim)
            {
                IsImportant    = isImportant;
                BruiseLocation = bruiseLoc;
                MarkLocation   = markLoc;
                CutLocation    = cutLoc;
                Traces         = traces;
                SocialMedia    = socialMedia;
            }
            else if (type == PedType.Witness1 || type == PedType.Witness2)
            {
                IsImportant = isImportant;
            }
        }
        private static void StartScenario(Ped ped, PedType type)
        {
            try
            {
                if (ped.Exists())
                {
                    GameFiber.StartNew(delegate
                    {
                        ("Starting scenario for " + type.ToString()).AddLog();
                        string scenario = "";

                        switch (type)
                        {
                        case PedType.Cop:
                            var o1 = CanimationList[MathHelper.GetRandomInteger(CanimationList.Count - 1)];
                            ("Cop animation assigned: " + o1.FirstAnimation).AddLog();

                            switch (o1.Name)
                            {
                            case "clipboard":
                                scenario = "WORLD_HUMAN_CLIPBOARD";
                                break;

                            case "sec":
                                scenario = "WORLD_HUMAN_SECURITY_SHINE_TORCH";
                                break;

                            case "guard":
                                scenario = "WORLD_HUMAN_GUARD_STAND";
                                break;

                            default:
                                scenario = "WORLD_HUMAN_COP_IDLES";
                                break;
                            }
                            break;

                        case PedType.Ambient:
                            var p1 = PanimationList[MathHelper.GetRandomInteger(PanimationList.Count() - 1)];
                            ("Animation assigned: " + p1.FirstAnimation).AddLog();

                            if (p1.Name == "mobile")
                            {
                                scenario = Rand.RandomNumber(1, 3) == 1
                                        ? "WORLD_HUMAN_MOBILE_FILM_SHOCKING"
                                        : "WORLD_HUMAN_STAND_MOBILE";
                            }
                            else
                            {
                                scenario = "WORLD_HUMAN_PAPARAZZI";
                            }
                            break;
                        }

                        while (true)
                        {
                            if (!ped.Exists() || ped.IsDead)
                            {
                                break;
                            }
                            ped.Task_Scenario(scenario);
                            while (NativeFunction.Natives.IS_PED_USING_ANY_SCENARIO <bool>(ped))
                            {
                                GameFiber.Yield();
                            }
                            GameFiber.Yield();
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                ex.ToString().AddLog(true);
            }
        }
예제 #8
0
파일: Peds.cs 프로젝트: jessegranger/Shiv
 public static PedHandle CreatePedInsideVehicle(VehicleHandle veh, PedType type, PedHash model, VehicleSeat seat) => CreatePedInsideVehicle(veh, type, (ModelHash)model, seat);
예제 #9
0
        public static Ped SpawnPedOfType(PedType pedType, Vector3 pedPosition)
        {
            var ped = pedType.SpawnPed(pedPosition);

            int[] variation;
            int[] props;

            switch (PropStage)
            {
            case 0:
                //bare head
                props = null;
                break;

            case 1:
                //helmet
                props = pedType.GetHelmetProps();
                break;

            case 2:
                //face shield
                props = pedType.GetFaceShieldProps();
                break;

            case 3:
                //hearing protection
                props = pedType.GetHearingProtectionProps();
                break;

            default:
                props = null;
                break;
            }

            switch (VariationStage)
            {
            case 0:
                //bare chest
                variation = pedType.GetBareChestVariation();
                break;

            case 1:
                //hvv chest
                variation = pedType.GetHighVisibilityVestVariation();
                break;

            default:
                variation = null;
                break;
            }

            Log.Debug($"Spawned ped of type {pedType.TypeName} with model {ped.Model.Name}.");


            if (props == null)
            {
                Log.Debug("No props for this ped");
            }
            else
            {
                Log.Debug("Setting random props for ped: " +
                          string.Join(",", props));

                var propTextures = ped.GetPropTextureVariations(props[0], props[1]);
                var textureId    = Random.Next(0, propTextures);
                ped.SetPropIndex((PropComponentIds)props[0], props[1], textureId);
            }

            if (variation == null)
            {
                Log.Debug("No variation for this ped");
            }
            else
            {
                Log.Debug("Setting random props for ped: " +
                          string.Join(",", variation));

                var variationTextures = ped.GetTextureVariationCount(variation[0], variation[1]);
                var textureId         = Random.Next(0, variationTextures);
                ped.SetVariation(variation[0], variation[1], textureId);
            }

            return(ped);
        }
예제 #10
0
        public static Ped SpawnNewPed(Vector3 pedPosition)
        {
            /*var typeIndex = Random.Next(0, PedType.PedTypes.Length);
             * var pedType = PedType.PedTypes[typeIndex];
             *
             * pedType = PedType.PedTypes[5];*/

            PedType[] propPicks;
            PedType[] variationPicks;

            switch (PropStage)
            {
            case 0:
                //bare head
                propPicks = PedType.PedTypes;
                break;

            case 1:
                //helmet
                propPicks = HelmetTypes;
                break;

            case 2:
                //face shield
                propPicks = FaceShieldTypes;
                break;

            case 3:
                //hearing protection
                propPicks = HearingProtectionTypes;
                break;

            default:
                propPicks = new PedType[] { };
                break;
            }

            switch (VariationStage)
            {
            case 0:
                //bare chest
                variationPicks = BareChestTypes;
                break;

            case 1:
                //hvv chest
                variationPicks = HvvTypes;
                break;

            default:
                variationPicks = new PedType[] { };
                break;
            }

            var intersection = propPicks.Intersect(variationPicks);

            var pedType = intersection.RandomElement();


            var spawnedPed = SpawnPedOfType(pedType, pedPosition);

            PropStage      = (PropStage + 1) % 4;
            VariationStage = (VariationStage + 1) % 2;

            return(spawnedPed);
        }
예제 #11
0
 public static PedType GetPedType(this Ped ped)
 {
     return(PedType.FromModel(ped.Model));
 }