protected override void CreateBlip()
 {
     BlipHandler.AddBlip("Postal depot", MarkerLocation, new BlipOptions
     {
         Sprite = BlipSprite.GTAOMission
     });
 }
 public HuntingSellerMenu()
 {
     headerTitle = "Hunting seller";
     statusTitle = "";
     Client.Instance.TriggerServerEvent("Hunting.RequestPrices");
     BlipHandler.AddBlip("Hunting seller", sellerLocation, new BlipOptions
     {
         Sprite = BlipSprite.DollarSignSquared
     });
     //createSellingOptions();
 }
예제 #3
0
 public SkinHandler(Client client) : base(client)
 {
     client.RegisterEventHandler("Skin.LoadPlayerSkin", new Action <dynamic>(data =>
     {
         CharacterEditorMenu.handleSkinCreate(data == null ? CharacterEditorMenu.skinData : data);
     }));
     client.RegisterEventHandler("Skin.StartCharacterCreation", new Action <int>(async playerHome =>
     {
         CharacterEditorMenu charMenu = new CharacterEditorMenu();
         while (charMenu.Observer.CurrentMenu != null)
         {
             Client.Get <Arrest>().DisableActions();
             Game.PlayerPed.Task.ClearAll();
             await BaseScript.Delay(0);
         }
         //if (playerHome != 0) TriggerEvent("spawnPlayerHome", playerHome);
     }));
     client.RegisterEventHandler("Skin.UpdatePlayerSkinData", new Action <dynamic>(skinData => CharacterEditorMenu.skinData = skinData));
     client.RegisterEventHandler("Skin.SaveCurrentOutfit", new Action <string>(handleOutfitCreate));
     client.Get <InteractionUI>().RegisterInteractionMenuItem(new MenuFramework.MenuItemStandard
     {
         Title      = "Clothing Store",
         OnActivate = state =>
         {
             new CharacterEditorMenu(true);
             InteractionUI.Observer.CloseMenu(true);
         }
     }, () => clothingStoreLocaitons.Any(o => o.DistanceToSquared(Game.PlayerPed.Position) < 5.0f), 500);
     BlipHandler.AddBlip("Clothing store", clothingStoreLocaitons, new BlipOptions
     {
         Sprite = BlipSprite.Clothes
     });
     MarkerHandler.AddMarker(clothingStoreLocaitons);
     client.RegisterEventHandler("Skin.RefreshSkin", new Action(RefreshPlayerSkin));
     client.RegisterEventHandler("Player.OnLoginComplete", new Action(RefreshPlayerSkin));
     client.RegisterEventHandler("Player.CheckForInteraction", new Action(() =>
     {
         if (clothingStoreLocaitons.Any(o => o.DistanceToSquared(Game.PlayerPed.Position) < 5.0f))
         {
             new CharacterEditorMenu(true);
         }
     }));
     client.RegisterEventHandler("Player.OnSkinLoaded", new Action(() => canRefreshSkin = false));
     CommandRegister.RegisterCommand("refreshskin", async cmd =>
     {
         if (!canRefreshSkin)
         {
             return;
         }
         await cmd.Session.UpdateData("Character.SkinData");
         RefreshPlayerSkin();
     });
 }
예제 #4
0
        private void LoadBlips()
        {
            BlipHandler.AddBlip("Taxi Depot", markerLocation, new BlipOptions
            {
                Sprite = BlipSprite.PoliceCar,
                Colour = BlipColor.Yellow
            });

            var taxiMarker = new Marker(markerLocation, MarkerType.HorizontalCircleFat, Color.FromArgb(150, ConstantColours.Yellow), 4.0f);

            MarkerHandler.AddMarker(taxiMarker);
        }
        private void LoadBlips()
        {
            garageBlips.ForEach(o => o.Delete()); garageBlips.Clear();
            markerIds.ForEach(MarkerHandler.RemoveMarker); markerIds.Clear();

            foreach (var garage in garageLocations)
            {
                var blip = BlipHandler.AddBlip(garage.DisplayName, garage.Location, garage.BlipOptions);

                garageBlips.Add(blip);
                markerIds.Add(MarkerHandler.AddMarker(garage.Location, garage.MarkerOptions));
            }
        }
예제 #6
0
        private void OnReceiveGarageLocation(Vector3 garagePos)
        {
            Client.Get <VehicleGarageMenu>().AddGarage("Home", garagePos);
            MarkerHandler.AddMarker(garagePos, new MarkerOptions
            {
                Color      = Color.FromArgb(255, 69, 0),
                ScaleFloat = 1.5f
            });

            garagePos.Z += 0.5f;
            BlipHandler.AddBlip("Home garage", garagePos, new BlipOptions
            {
                IsShortRange = true,
                Sprite       = BlipSprite.Garage
            });
        }
        private async void OnLogin()
        {
            // General store
            await BlipHandler.AddBlipAsync("General store", GeneralStores.Positions, new BlipOptions
            {
                Sprite = BlipSprite.Store
            });

            await MarkerHandler.AddMarkerAsync(GeneralStores.Positions);

            // Hardware store
            await BlipHandler.AddBlipAsync("Hardware store", HardwareStores.Positions, new BlipOptions
            {
                Sprite = BlipSprite.Repair
            });

            await MarkerHandler.AddMarkerAsync(HardwareStores.Positions);

            // Ammu nation
            await BlipHandler.AddBlipAsync("Ammu Nation", AmmuNation.Positions, new BlipOptions
            {
                Sprite = BlipSprite.AmmuNation,
                Colour = (BlipColor)6
            });

            await MarkerHandler.AddMarkerAsync(AmmuNation.Positions);

            // Fishing store
            await BlipHandler.AddBlipAsync("Fishing store", Fishing.Positions, new BlipOptions
            {
                Sprite = BlipSprite.Marina,
            });

            await MarkerHandler.AddMarkerAsync(Fishing.Positions);

            // Clubs
            await MarkerHandler.AddMarkerAsync(Clubs.Positions, new MarkerOptions
            {
                ScaleFloat = 3.0f
            });

            // Black market
            await MarkerHandler.AddMarkerAsync(BlackMarket.Positions, new MarkerOptions
            {
                Color = ConstantColours.Red
            });
        }
예제 #8
0
        private void OnRecieveDrugs(List <object> drugList)
        {
            drugList.ForEach(o =>
            {
                var drug = JsonConvert.DeserializeObject <Drug>(o.ToString());
                Log.Debug($"Recieved a drug of {drug.HarvestDrugName}");
                currentDrugs.Add(drug);

                if (drug.HarvestDrugName != "Bud")
                {
                    return;
                }
                BlipHandler.AddBlip("Marijuana", drug.HarvestLocations[0], new BlipOptions
                {
                    Sprite = BlipSprite.Marijuana,
                    Colour = (BlipColor)2
                });
            });
        }
        private void CreateJobBlip(string blipMessage, int targetPlayer, int blipColour)
        {
            var player = Client.PlayerList.FirstOrDefault(o => o.ServerId == targetPlayer);

            if (player != null)
            {
                var callerBlip = BlipHandler.AddBlip(blipMessage, player.Character.Position, new BlipOptions
                {
                    Sprite = BlipSprite.GTAOMission,
                    Colour = (BlipColor)blipColour
                });

                if (playersBlips.ContainsKey(targetPlayer))
                {
                    playersBlips[targetPlayer].Delete();
                }

                playersBlips[targetPlayer] = callerBlip;
            }
        }
예제 #10
0
        private void CreateEmgerencyBlip(int targetPlayer)
        {
            var player = Client.PlayerList.FirstOrDefault(o => o.ServerId == targetPlayer);

            if (player != null)
            {
                var callerBlip = BlipHandler.AddBlip($"Emergency call #{targetPlayer}", player.Character.Position, new BlipOptions
                {
                    Sprite = BlipSprite.GTAOMission,
                    Colour = (BlipColor)49
                });

                if (playersBlips.ContainsKey(targetPlayer))
                {
                    playersBlips[targetPlayer].Delete();
                }

                playersBlips[targetPlayer] = callerBlip;
            }
        }
예제 #11
0
        public Tow()
        {
            returnVehicleItem = new MenuItemStandard
            {
                Title      = "Return Job Vehicle",
                OnActivate = async item =>
                {
                    if (Game.PlayerPed.Position.DistanceToSquared(towDropoffPoint) < 200.0f && currentTowTruck != null && (currentTowTruck.Position.DistanceToSquared(towDropoffPoint) < 200.0f || currentTowTruck.IsDead))
                    {
                        if (Game.PlayerPed.IsInVehicle() && Game.PlayerPed.CurrentVehicle == currentTowTruck)
                        {
                            Game.PlayerPed.Task.LeaveVehicle(currentTowTruck, true);
                        }

                        Log.ToChat("[Job]", "Returning job vehicle", ConstantColours.Job);

                        await BaseScript.Delay(3000);

                        EndJob();
                        Client.Get <InteractionUI>().RemoveInteractionMenuItem(returnVehicleItem);
                    }
                }
            };
            Client.RegisterTickHandler(VehicleGetTick);
            Client.RegisterTickHandler(JobTick);
            Client.RegisterEventHandler("Player.CheckForInteraction", new Action(OnInteraction));
            Client.RegisterEventHandler("Job.GetTowRequest", new Action(OnTowRequest));
            CommandRegister.RegisterCommand("tow", handleTowCommand);
            CommandRegister.RegisterCommand("canceltowjob", handleTowJobCancel);

            BlipHandler.AddBlip("Tow yard", towMarkerLocation, new BlipOptions
            {
                Sprite = BlipSprite.TowTruck
            });

            MarkerHandler.AddMarker(towMarkerLocation, new MarkerOptions
            {
                ScaleFloat = 4.0f
            });
        }
예제 #12
0
        public VehicleStoreMenu(Client client) : base(client)
        {
            try
            {
                client.RegisterTickHandler(OnTick);
                client.RegisterEventHandler("Vehicle.Store.SpawnBoughtVehicle", new Action <string, string, string, string>(SpawnBoughtVehicle));
                client.RegisterEventHandler("Player.CheckForInteraction", new Action(OnInteraction));
                markerLocations.ForEach(o => MarkerHandler.AddMarker(new Marker(o, MarkerType.HorizontalCircleFat, System.Drawing.Color.FromArgb(100, 204, 204, 0), 3)));
                EntityDecoration.RegisterProperty("Vehicle.IsPreviewVehicle", DecorationType.Bool);

                StoreMenus.ToList().ForEach(async o =>
                {
                    var menuCategories = new Dictionary <string, List <VehicleModel> >();
                    var storeMenuItems = new List <MenuItem>();
                    o.Value.ForEach(vehData =>
                    {
                        if (!menuCategories.ContainsKey(vehData.vehicleCategory))
                        {
                            menuCategories.Add(vehData.vehicleCategory, new List <VehicleModel>());
                        }

                        menuCategories[vehData.vehicleCategory].Add(vehData);
                    });
                    foreach (var i in menuCategories)
                    {
                        var vehicleList         = i.Value.OrderBy(a => a.displayName).ToList();
                        var categoryItems       = new List <MenuItem>();
                        var vehicleCategoryMenu = new MenuModel {
                            headerTitle = i.Key, menuItems = categoryItems
                        };
                        await vehicleList.ForEachAsync(async veh =>
                        {
                            categoryItems.Add(new MenuItemStandard
                            {
                                Title      = $"{veh.displayName}",
                                OnActivate = async state =>
                                {
                                    isBuying = true;
                                    InteractionUI.Observer.CloseMenu(true);
                                    if (!loadedModels.ContainsKey(veh.modelName))
                                    {
                                        loadedModels[veh.modelName] = new Model(Game.GenerateHash(veh.modelName));
                                    }

                                    var vehModel = loadedModels[veh.modelName];
                                    //if (!Cache.PlayerPed.IsInVehicle() || previewVehicle == null)
                                    {
                                        Log.ToChat("[Store]", "Purchasing vehicle...", ConstantColours.Green);
                                        while (!vehModel.IsLoaded)
                                        {
                                            await vehModel.Request(0);
                                        }

                                        deletePreviewVehicle();

                                        var spawnLocation = vehiclePreviewLocation[o.Key].First(b => b.DistanceToSquared(Game.PlayerPed.Position) < 250.0f);
                                        previewVehicle    = new CitizenFX.Core.Vehicle(API.CreateVehicle((uint)vehModel.Hash, spawnLocation.X, spawnLocation.Y, spawnLocation.Z, 0.0f, false, false))
                                        {
                                            IsPositionFrozen = true,
                                            LockStatus       = VehicleLockStatus.StickPlayerInside,
                                            IsDriveable      = false,
                                            IsInvincible     = true
                                        }; // No network
                                        previewVehicle.SetDecor("Vehicle.IsPreviewVehicle", true);
                                        Game.PlayerPed.Task.WarpIntoVehicle(previewVehicle, VehicleSeat.Driver);
                                        await BaseScript.Delay(1000);
                                    }

                                    var vehData = VehicleDataPacker.PackVehicleData(previewVehicle);
                                    if (vehData == null)
                                    {
                                        Log.ToChat("[Store]", "There was an error purchasing this vehicle. Please try again", ConstantColours.Store);
                                        isBuying = false;
                                        return;
                                    }

                                    var vehDataModel = JsonConvert.DeserializeObject <VehicleDataModel>(vehData);
                                    if (vehDataModel.Model != 0 && vehModel.Hash == Cache.PlayerPed.CurrentVehicle.Model.Hash)
                                    {
                                        Magicallity.Client.Client.Instance.TriggerServerEvent("Vehicle.Store.BuyVehicle", veh.modelName, veh.price, o.Key, vehData);
                                    }
                                    else
                                    {
                                        Log.ToChat("[Store]", "There was an error purchasing this vehicle. Please try again", ConstantColours.Store);
                                    }

                                    isBuying = false;
                                },
                                OnSelect = state =>
                                {
                                    var modelLoaded = loadedModels.ContainsKey(veh.modelName);
                                    if (currentLoadingCategory != veh.vehicleCategory || !modelLoaded)
                                    {
                                        requestModelsForVehicleType(o.Key, vehicleCategoryMenu, veh.vehicleCategory);
                                    }

                                    if (!modelLoaded)
                                    {
                                        return;
                                    }

                                    var vehModel = loadedModels[veh.modelName];
                                    deletePreviewVehicle();

                                    var spawnLocation = vehiclePreviewLocation[o.Key].First(b => b.DistanceToSquared(Game.PlayerPed.Position) < 250.0f);
                                    previewVehicle    = new CitizenFX.Core.Vehicle(API.CreateVehicle((uint)vehModel.Hash, spawnLocation.X, spawnLocation.Y, spawnLocation.Z, 0.0f, false, false))
                                    {
                                        IsPositionFrozen = true,
                                        LockStatus       = VehicleLockStatus.StickPlayerInside,
                                        IsDriveable      = false,
                                        IsInvincible     = true
                                    }; // No network
                                    previewVehicle.SetDecor("Vehicle.IsPreviewVehicle", true);
                                    Game.PlayerPed.Task.WarpIntoVehicle(previewVehicle, VehicleSeat.Driver);
                                },
                                Detail = veh.price == 0 ? $"Free" : $"(${veh.price})",
                            });
                            await BaseScript.Delay(0);
                        });
                        storeMenuItems.Add(new MenuItemSubMenu
                        {
                            Title      = i.Key,
                            SubMenu    = vehicleCategoryMenu,
                            OnActivate = item =>
                            {
                                deletePreviewVehicle();

                                requestModelsForVehicleType(o.Key, vehicleCategoryMenu, i.Key);

                                vehicleCategoryMenu.menuItems[vehicleCategoryMenu.SelectedIndex].OnSelect(new MenuItemStandard());
                            }
                        });
                        await BaseScript.Delay(0);
                    }
                    var menuThing = new MenuModel {
                        headerTitle = o.Key.AddSpacesToCamelCase(), menuItems = storeMenuItems
                    };
                    storeMenus[o.Key] = menuThing;
                    client.Get <InteractionUI>().RegisterInteractionMenuItem(new MenuItemSubMenu
                    {
                        Title   = o.Key.AddSpacesToCamelCase(),
                        SubMenu = menuThing
                    }, () => vehiclePreviewLocation.ContainsKey(o.Key) && vehiclePreviewLocation[o.Key].Any(loc => loc.DistanceToSquared(Game.PlayerPed.Position) < 250.0f), 510);
                });
                vehiclePreviewLocation.ToList().ForEach(loc =>
                {
                    BlipHandler.AddBlip(loc.Key.AddSpacesToCamelCase(), loc.Value, new BlipOptions
                    {
                        Sprite = (BlipSprite)326
                    });
                });
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }