public void AddMarketItemHandler(Client sender, params object[] arguments)
        {
            /*
             * args[0] nameResult
             * args[1] typeResult
             * args[2] decimal costResult
             * args[3] List<string> names
             * args[4] FirstParameter
             * args[5] SecondParameter
             * args[6] ThirdParameter
             */
            MarketItem item = new MarketItem
            {
                Name            = arguments[0].ToString(),
                ItemEntityType  = (ItemEntityType)Enum.Parse(typeof(ItemEntityType), (string)arguments[1]),
                Cost            = (decimal)arguments[2],
                FirstParameter  = (int)arguments[4],
                SecondParameter = (int)arguments[5],
                ThirdParameter  = (int)arguments[6]
            };

            List <string> names = (List <string>)arguments[3];

            foreach (string name in names)
            {
                MarketEntity market = Markets.First(x => x.Data.Name == name);
                if (market != null)
                {
                    market.Data.Items.Add(item);
                    XmlHelper.AddXmlObject(market.Data, Path.Combine(Utils.XmlDirectory, "Markets", market.Data.Name));
                }
            }
        }
Exemple #2
0
        public void AddGarbage(Client sender, int prop = 0)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendWarning("Nie posiadasz uprawnień do tworzenia śmietnika.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu\", użyj ctrl + alt + shift + d aby poznać swoją obecną pozycję.");

            void Handler(Client o, string command)
            {
                if (o == sender && command == "tu")
                {
                    GarbageModel garbage = new GarbageModel
                    {
                        GtaPropId        = prop,
                        CreatorForumName = sender.GetAccountEntity().DbModel.Name,
                        Position         = sender.Position,
                        Rotation         = sender.Rotation
                    };

                    XmlHelper.AddXmlObject(garbage, Path.Combine(Utils.XmlDirectory, "JobGarbages"));
                    Garbages.Add(garbage);
                    sender.SendInfo("Dodawanie śmietnika zakończyło się pomyślnie.");
                }
            }
        }
        public void AddMarket(Client sender, string name)
        {
            sender.SendInfo("Ustaw się w pozycji NPC, a następnie wpisz /tu użyj ctrl + alt + shift + d aby poznać swoją obecną pozycję.");

            Vector3 center = null;

            void Handler(Client o, string message)
            {
                if (center == null && o == sender && message == "/tu")
                {
                    center = o.Position;
                    sender.SendInfo("Przejdź do pozycji końca promienia zasięgu i wpisz \"tu.\"");
                }
                else
                {
                    float radius = float.MinValue;
                    if (center != null && radius.Equals(float.MinValue) && o == sender && message == "tu")
                    {
                        radius = center.DistanceTo2D(o.Position);
                        MarketModel market = new MarketModel
                        {
                            Id     = XmlHelper.GetXmlObjects <MarketModel>(Path.Combine(Utils.XmlDirectory, "Markets")).Count,
                            Name   = name,
                            Center = center,
                            Radius = radius
                        };
                        XmlHelper.AddXmlObject(market, Path.Combine(Utils.XmlDirectory, "Markets"), market.Name);
                        Markets.Add(new MarketEntity(market));
                    }
                }
            }
        }
        public void AddVehicleToJob(Client sender, string name)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendWarning("Nie posiadasz uprawnień do dodawania auta do pracy.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji a następnie wpisz \"tu\"");

            void Handler(Client o, string message)
            {
                if (o == sender && message == "tu")
                {
                    CourierWarehouseModel warehouse = new CourierWarehouseModel()
                    {
                        Name             = name,
                        Position         = o.Position,
                        CreatorForumName = o.GetAccountEntity().DbModel.Name
                    };
                    XmlHelper.AddXmlObject(warehouse, Path.Combine(Utils.XmlDirectory, "CourierWarehouses"));

                    Warehouses.Add(new CourierWarehouse(warehouse));
                    o.SendInfo("Dodawanie magazynu do pracy kuriera zakończyło się pomyślnie.");
                }
            }
        }
Exemple #5
0
        public void AddDriveThru(Client sender, string name)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendWarning("Nie posiadasz uprawnień do dodawania DriveThru.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu\" ctrl + alt + shift + d użyj /diag aby poznać swoją obecną pozycję.");

            Vector3 center = null;

            void Handler(Client o, string message)
            {
                if (center == null && o == sender && message == "tu")
                {
                    center = o.Position;
                    DriveThruModel data = new DriveThruModel
                    {
                        Position         = o.Position,
                        CreatorForumName = o.GetAccountEntity().DbModel.Name,
                    };
                    XmlHelper.AddXmlObject(data, Path.Combine(Utils.XmlDirectory, "DriveThrus"));

                    sender.SendInfo("Dodawanie DriveThru zakończyło się pomyślnie.");
                    DriveThruEntity driveThru = new DriveThruEntity(data);
                    driveThru.Spawn();
                    DriveThrus.Add(driveThru);
                }
            }
        }
        public void AddCarshop(Client sender, string name, CarshopType type)
        {
            AccountEntity player = sender.GetAccountEntity();

            if (player.DbModel.ServerRank < ServerRank.AdministratorRozgrywki2)
            {
                sender.SendWarning("Nie posiadasz uprawnień do tworzenia salonu samochodowego.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu\". użyj ctrl + alt + shift + d aby poznać swoją obecną pozycję.");

            player.HereHandler += client =>
            {
                CarshopModel data = new CarshopModel
                {
                    CreatorForumName = client.GetAccountEntity().DbModel.Name,
                    Position         = client.Position,
                    Type             = type,
                };
                data.CreatorForumName = client.GetAccountEntity().DbModel.Name;

                XmlHelper.AddXmlObject(data, Path.Combine(Utils.XmlDirectory, "Carshops"));
                Carshops.Add(new CarshopEntity(data));
                sender.SendInfo("Dodawanie salonu zakończyło się pomyślnie.");
            };
        }
Exemple #7
0
        public void AddBusStop(Client sender, string name)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendError("Nie posiadasz uprawnień do usuwania przystanku autobusowego.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz tu użyj ctrl + alt + shift + d aby poznać swoją obecną pozycję.");

            Vector3 center = null;

            void Handler(Client o, string command)
            {
                if (center == null && o == sender && command == "tu")
                {
                    center = o.Position;
                    BusStopModel data = new BusStopModel
                    {
                        Name             = name,
                        Center           = center,
                        CreatorForumName = o.GetAccountEntity().DbModel.Name,
                    };
                    XmlHelper.AddXmlObject(data, Path.Combine(Utils.XmlDirectory, nameof(BusStopModel), data.Name));

                    sender.SendError("Dodawanie przystanku zakończyło się pomyślnie.");
                    BusStopEntity busStop = new BusStopEntity(data);
                    busStop.Spawn();
                    EntityHelper.Add(busStop);
                }
            }
        }
        public void AddVehicleToCarshop(Client sender, VehicleHash hash, VehicleClass vehicleClass, decimal cost, string type, string type2 = "Empty")
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendWarning("Nie posiadasz uprawnień do tworzenia pojazdu w salonie.");
                return;
            }

            if (Vehicles.Any(v => v.Hash == hash))
            {
                sender.SendError("Podany pojazd jest już dodany.");
                return;
            }

            MoneyValidator validator = new MoneyValidator();

            if (!validator.IsValid(cost))
            {
                sender.SendError("Wprowadzona kwota gotówki jest nieprawidłowa.");
                return;
            }

            CarshopType endType      = CarshopType.Empty;
            CarshopType endType2     = CarshopType.Empty;
            var         carshopTypes = ((CarshopType[])Enum.GetValues(typeof(CarshopType))).ToList();

            if (carshopTypes.All(carshopType => carshopType.GetDescription() != type && carshopType.GetDescription() != type2))
            {
                sender.SendError("Wprowadzony typ salonu jest nieprawidłowy.");
            }

            foreach (CarshopType item in carshopTypes)
            {
                if (item.GetDescription() == type)
                {
                    endType = item;
                }
                if (item.GetDescription() == type2)
                {
                    endType2 = item;
                }
            }

            if (endType2 != CarshopType.Empty)
            {
                endType = endType | endType2;
            }

            CarshopVehicleModel vehicle =
                new CarshopVehicleModel(hash.ToString(), hash, vehicleClass, cost, endType)
            {
                CreatorForumName = sender.GetAccountEntity().DbModel.Name
            };

            XmlHelper.AddXmlObject(vehicle, Path.Combine(Utils.XmlDirectory, "CarshopVehicles"), vehicle.Name);
        }
        public void OnPlayerAddAnimHandler(Client sender, params object[] arguments)
        {
            //args[0] Polska nazwa animacji
            //args[1] Słownik animacji z GTA:N
            //args[2] Nazwa animacji z GTA:N

            XmlHelper.AddXmlObject(new Animation
            {
                Name           = arguments[0].ToString(),
                AnimDictionary = arguments[1].ToString(),
                AnimName       = arguments[2].ToString(),
            }, Path.Combine(Utils.XmlDirectory + "Animations"), arguments[2].ToString());

            sender.SendInfo("Animacja została dodana pomyślnie.");
        }
Exemple #10
0
        public void CreateAtm(Client sender, decimal cost, string number)
        {
            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu.\" użyj ctrl + alt + shift + d aby poznać swoją obecną pozycję.");

            MoneyValidator           moneyValidator           = new MoneyValidator();
            CellphoneNumberValidator cellphoneNumberValidator = new CellphoneNumberValidator();

            if (!moneyValidator.IsValid(cost) || !cellphoneNumberValidator.IsValid(number))
            {
                sender.SendError("Wprowadzono dane w nieprawidłowym formacie.");
                return;
            }

            void Handler(Client o, string message)
            {
                if (o == sender && message == "/tu")
                {
                    TelephoneBoothModel data = new TelephoneBoothModel
                    {
                        CreatorForumName = o.GetAccountEntity().DbModel.Name,
                        Position         = new FullPosition
                        {
                            Position = new Vector3
                            {
                                X = sender.Position.X,
                                Y = sender.Position.Y,
                                Z = sender.Position.Z
                            },

                            Rotation = new Vector3
                            {
                                X = sender.Rotation.X,
                                Y = sender.Rotation.Y,
                                Z = sender.Rotation.Z
                            }
                        },
                        Cost   = cost,
                        Number = int.Parse(number)
                    };

                    XmlHelper.AddXmlObject(data, Path.Combine(Utils.XmlDirectory, nameof(TelephoneBoothModel)));
                    TelephoneBoothEntity booth = new TelephoneBoothEntity(data);
                    booth.Spawn();
                    Booths.Add(booth);
                    sender.SendInfo("Dodawanie budki zakończyło się pomyślnie.");
                }
            }
        }
        public ServerInfo()
        {
            string directory = Path.Combine(Utils.XmlDirectory, "ServerInfo\\");

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            if (!File.Exists(Path.Combine(directory, "ServerInfo.xml")))
            {
                XmlHelper.AddXmlObject(new ServerInfoModel(), directory, "ServerInfo");
            }

            Model = XmlHelper.GetXmlObjects <ServerInfoModel>(directory).First();
        }
        public void AddCornerBotHandler(Client sender, params object[] arguments)
        {
            CornerBotModel bot = new CornerBotModel
            {
                CreatorForumName = sender.GetAccountEntity().DbModel.Name,
                BotId            = XmlHelper.GetXmlObjects <CornerBotModel>(Path.Combine(Utils.XmlDirectory, "CornerBots")).Count + 1,
                Name             = Convert.ToString(arguments[0]),
                PedHash          = (PedHash)arguments[1],
                MoneyCount       = Convert.ToDecimal(arguments[2]),
                DrugType         = (DrugType)Enum.Parse(typeof(DrugType), (string)arguments[3]),
                Greeting         = (string)arguments[4],
                GoodFarewell     = (string)arguments[5],
                BadFarewell      = (string)arguments[6]
            };

            XmlHelper.AddXmlObject(bot, Path.Combine(Utils.XmlDirectory, "CornerBots"));
            sender.SendInfo("Dodanie NPC zakończyło się pomyślnie.");
        }
Exemple #13
0
        public void CreateAtm(Client sender)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendWarning("Nie posiadasz uprawnień do dodawania bankomatu.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu\".");

            void Handler(Client o, string message)
            {
                if (o == sender && message == "tu")
                {
                    AtmModel data = new AtmModel
                    {
                        CreatorForumName = o.GetAccountEntity().DbModel.Name,
                        Position         = new FullPosition
                        {
                            Position = new Vector3
                            {
                                X = o.Position.X,
                                Y = o.Position.Y,
                                Z = o.Position.Z
                            },

                            Rotation = new Vector3
                            {
                                X = o.Rotation.X,
                                Y = o.Rotation.Y,
                                Z = o.Rotation.Z
                            }
                        }
                    };
                    XmlHelper.AddXmlObject(data, Path.Combine(Utils.XmlDirectory, nameof(AtmModel)));
                    AtmEntity atm = new AtmEntity(data);
                    atm.Spawn();
                    EntityHelper.Add(atm);
                    sender.SendInfo("Dodawanie bankomatu zakończyło się pomyślnie.");
                }
            }
        }
        public void AddCrimeBot(Client sender, string name)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki3))
            {
                sender.SendWarning("Nie posiadasz uprawnień do tworzenia bota przestępczego.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu\" użyj ctrl + alt + shift + d aby poznać swoją obecną pozycję.");

            FullPosition  botPosition = null;
            VehicleEntity botVehicle  = null;

            void Handler(Client o, string message)
            {
                if (o == sender && message == "tu" && botPosition == null)
                {
                    botPosition = new FullPosition
                    {
                        Position = new Vector3
                        {
                            X = sender.Position.X,
                            Y = sender.Position.Y,
                            Z = sender.Position.Z
                        },

                        Rotation = new Vector3
                        {
                            X = sender.Rotation.X,
                            Y = sender.Rotation.Y,
                            Z = sender.Rotation.Z
                        },

                        Direction = new Vector3(0f, 0f, 0f)
                    };

                    NAPI.ClientEvent.TriggerClientEvent(sender,
                                                        "DrawAddingCrimeBotComponents",
                                                        new Vector3(botPosition.Position.X, botPosition.Position.Y, botPosition.Position.Z - 1));

                    sender.SendInfo("Ustaw pojazd w wybranej pozycji następnie wpisz \"tu\".");

                    botVehicle = VehicleEntity.Create(
                        new FullPosition(new Vector3(
                                             sender.Position.X + 2,
                                             sender.Position.Y + 2,
                                             sender.Position.Z), sender.Rotation),
                        VehicleHash.Sentinel, name, 0, sender.GetAccountEntity().DbModel.Id, new Color(0, 0, 0), new Color(0, 0, 0));

                    NAPI.Player.SetPlayerIntoVehicle(sender, botVehicle.GameVehicle, -1);
                }
                else if (o == sender && message == "tu" && botPosition != null && botVehicle != null)
                {
                    FullPosition botVehiclePosition = new FullPosition
                    {
                        Position = new Vector3
                        {
                            X = botVehicle.GameVehicle.Position.X,
                            Y = botVehicle.GameVehicle.Position.Y,
                            Z = botVehicle.GameVehicle.Position.Z
                        },

                        Rotation = new Vector3
                        {
                            X = botVehicle.GameVehicle.Rotation.X,
                            Y = botVehicle.GameVehicle.Rotation.Y,
                            Z = botVehicle.GameVehicle.Rotation.Z
                        },

                        Direction = new Vector3(0f, 0f, 0f)
                    };

                    NAPI.ClientEvent.TriggerClientEvent(sender, "DisposeAddingCrimeBotComponents");

                    XmlHelper.AddXmlObject(new CrimeBotPosition
                    {
                        CreatorForumName = o.GetAccountEntity().DbModel.Name,
                        Name             = name,
                        BotPosition      = botPosition,
                        VehiclePosition  = botVehiclePosition
                    }, Path.Combine(Utils.XmlDirectory, "CrimeBotPositions"));

                    sender.SendInfo("Dodawanie pozycji bota zakończyło się pomyślnie!");
                    NAPI.Player.WarpPlayerOutOfVehicle(sender);
                    botVehicle.Dispose();
                }
            };
        }
        public void AddCorner(Client sender, string ids)
        {
            List <string> botIds = ids.Split(',').ToList();

            //Sprawdzamy czy gracz podał prawidłowe ID NPC
            if (!CornerBotHelper.TryGetCornerBotIds(botIds, out List <int> correctBotIds))
            {
                sender.SendError("Podano dane w nieprawidłowym formacie. Lub podany NPC nie istnieje.");
                return;
            }

            sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu\". użyj ctrl + shift + alt + d aby poznać swoją obecną pozycję.");

            FullPosition        position     = null;
            List <FullPosition> botPositions = new List <FullPosition>();

            void Handler(Client o, string message)
            {
                if (position == null && o == sender && message == "tu")
                {
                    position = new FullPosition
                    {
                        Position = new Vector3
                        {
                            X = sender.Position.X,
                            Y = sender.Position.Y,
                            Z = sender.Position.Z - 0.5f
                        },

                        Rotation = new Vector3
                        {
                            X = sender.Rotation.X,
                            Y = sender.Rotation.Y,
                            Z = sender.Rotation.Z
                        }
                    };

                    sender.SendInfo("Wyznacz trasę npc na rogu. Ustaw się w danym punkcie i wpisz \"poz\".");
                    sender.SendInfo("Aby zacząć od nowa wpisz \"reset\"");
                    sender.SendInfo("Aby usunąć ostatnią pozycję wpisz \"usun\"");
                }
                else if (position != null && o == sender && message == "/poz")
                {
                    botPositions.Add(new FullPosition
                    {
                        Position = new Vector3
                        {
                            X = sender.Position.X,
                            Y = sender.Position.Y,
                            Z = sender.Position.Z
                        },

                        Rotation = new Vector3
                        {
                            X = sender.Rotation.X,
                            Y = sender.Rotation.Y,
                            Z = sender.Rotation.Z
                        }
                    });

                    sender.SendInfo($"Obecna liczba punktów: {botPositions.Count}. Aby zakończyć wpisz \"zakoncz\"");
                    sender.SendInfo("Aby zacząć od nowa wpisz /reset");
                }
                else if (position != null && botPositions.Count != 0 && o == sender && message == "zakoncz")
                {
                    CornerModel data = new CornerModel
                    {
                        CreatorForumName = o.GetAccountEntity().DbModel.Name,
                        Position         = position,
                        CornerBots       = XmlHelper.GetXmlObjects <CornerBotModel>(Path.Combine(Utils.XmlDirectory, "CornerBots"))
                                           .Where(bot => correctBotIds.Contains(bot.BotId)).ToList(),
                        BotPositions = botPositions
                    };
                    //Dodajemy nowy plik .xml
                    XmlHelper.AddXmlObject(data, Path.Combine(Utils.XmlDirectory, "Corners"));
                    CornerEntity corner = new CornerEntity(data);
                    Corners.Add(corner);

                    sender.SendInfo("Dodawanie rogu zakończyło się pomyślnie.");
                }
                else if (botPositions.Count != 0 && position != null && o == sender && message == "usun")
                {
                    botPositions.RemoveAt(botPositions.Count);
                }
                else if (botPositions.Count != 0 && position != null && o == sender && message == "reset")
                {
                    position     = null;
                    botPositions = new List <FullPosition>();
                    sender.SendInfo("Ustaw się w wybranej pozycji, a następnie wpisz \"tu\".");
                    sender.SendInfo("...użyj /diag aby poznać swoją obecną pozycję.");
                }
            };
        }