Exemplo n.º 1
0
        public static void Open(Client client, Menu menu, bool force = false)
        {
            try
            {
                if (Menus.ContainsKey(client.Handle))
                {
                    Log.Debug($"Client already have opened Menu! id:{Menus[client.Handle].ID}", nLog.Type.Warn);
                    if (!force)
                    {
                        return;
                    }
                    Menus.Remove(client.Handle);
                }
                Menus.Add(client.Handle, menu);

                //string data = JsonConvert.SerializeObject(menu);
                string data = menu.getJsonStr();

                if (!client.HasData("Phone"))
                {
                    Trigger.ClientEvent(client, "phoneShow");
                    client.SetData("Phone", true);
                }
                Trigger.ClientEvent(client, "phoneOpen", data);
            } catch (Exception e)
            {
                Log.Write("EXCEPTION AT \"MENUCONTROL_OPEN\":\n" + e.ToString(), nLog.Type.Error);
            }
        }
Exemplo n.º 2
0
 public static void Event_Passport(Client player, params object[] arguments)
 {
     try
     {
         Client to = (Client)arguments[0];
         Log.Debug(to.Name.ToString());
         Passport(player, to);
     } catch (Exception e)
     {
         Log.Write("EXCEPTION AT \"EVENT_PASSPORT\":\n" + e.ToString(), nLog.Type.Error);
     }
 }
Exemplo n.º 3
0
        public void ReportTake(Client client, int id, bool retrn = false)
        {
            if (Main.Players[client].AdminLVL <= 0)
            {
                return;
            }
            Log.Debug($"Report take: {id} {retrn}");
            if (!Reports.ContainsKey(id))
            {
                Remove(id, client);
                return;
            }

            if (Reports[id].Status)
            {
                Remove(id, client);
                return;
            }

            foreach (Client target in NAPI.Pools.GetAllPlayers())
            {
                if (!Main.Players.ContainsKey(target))
                {
                    continue;
                }
                if (Main.Players[target].AdminLVL < adminLvL)
                {
                    continue;
                }

                if (retrn)
                {
                    Trigger.ClientEvent(target, "setreport", id, "");
                }
                else
                {
                    Trigger.ClientEvent(target, "setreport", id, client.Name);
                }
            }
        }
Exemplo n.º 4
0
        public static void AtmBizGen(Client player)
        {
            var acc = Main.Players[player];

            Log.Debug("Biz count : " + acc.BizIDs.Count);
            if (acc.BizIDs.Count > 0)
            {
                List <string> data = new List <string>();
                foreach (int key in acc.BizIDs)
                {
                    Business biz  = BusinessManager.BizList[key];
                    string   name = BusinessManager.BusinessTypeNames[biz.Type];
                    data.Add($"{name}");
                }
                Trigger.ClientEvent(player, "atmOpenBiz", JsonConvert.SerializeObject(data), "");
            }
            else
            {
                Trigger.ClientEvent(player, "atmOpen", "[1,0,0]");
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "У вас нет бизнеса!", 3000);
            }
        }
Exemplo n.º 5
0
        public static uint RequestPrivateDimension(Client requester)
        {
            int firstUnusedDim = 10000;

            lock (DimensionsInUse)
            {
                while (DimensionsInUse.ContainsKey(--firstUnusedDim))
                {
                }
                DimensionsInUse.Add(firstUnusedDim, requester.Handle);
            }
            Log.Debug($"Dimension {firstUnusedDim.ToString()} is registered for {requester.Name}.");
            return((uint)firstUnusedDim);
        }
Exemplo n.º 6
0
        private void timer_playerExitWorkVehicle(Client player, Vehicle vehicle)
        {
            NAPI.Task.Run(() =>
            {
                try
                {
                    if (!player.HasData("WORK_CAR_EXIT_TIMER"))
                    {
                        return;
                    }
                    if (NAPI.Data.GetEntityData(player, "IN_WORK_CAR"))
                    {
                        //                    Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_16");
                        Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"));
                        NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER");
                        Log.Debug("Player exit work vehicle timer was stoped");
                        return;
                    }
                    if (NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") > 180)
                    {
                        respawnCar(vehicle);

                        Notify.Send(player, NotifyType.Info, NotifyPosition.BottomCenter, $"Вы закончили рабочий день", 3000);
                        NAPI.Data.SetEntityData(player, "PAYMENT", 0);

                        NAPI.Data.SetEntityData(player, "ON_WORK", false);
                        NAPI.Data.SetEntityData(player, "WORK", null);
                        NAPI.ClientEvent.TriggerClientEvent(player, "deleteCheckpoint", 16, 0);
                        NAPI.ClientEvent.TriggerClientEvent(player, "deleteWorkBlip");
                        //Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_17");
                        Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"));
                        NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER");
                        Customization.ApplyCharacter(player);

                        if (player.HasData("WORKOBJECT"))
                        {
                            BasicSync.DetachObject(player);
                            player.ResetData("WORKOBJECT");
                        }
                        return;
                    }
                    NAPI.Data.SetEntityData(player, "CAR_EXIT_TIMER_COUNT", NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") + 1);
                } catch (Exception e)
                {
                    Log.Write("Timer_PlayerExitWorkVehicle_Collector:\n" + e.ToString(), nLog.Type.Error);
                }
            });
        }
Exemplo n.º 7
0
        private static void Remove(int ID_, Client someone = null)
        {
            try
            {
                Log.Debug($"Remove {ID_}");
                if (someone == null)
                {
                    foreach (Client target in NAPI.Pools.GetAllPlayers())
                    {
                        if (!Main.Players.ContainsKey(target))
                        {
                            continue;
                        }
                        if (Main.Players[target].FractionID != 15)
                        {
                            continue;
                        }

                        Trigger.ClientEvent(target, "deladvert", ID_);
                    }
                }
                else
                {
                    if (!Main.Players.ContainsKey(someone))
                    {
                        return;
                    }
                    if (Main.Players[someone].FractionID != 15)
                    {
                        return;
                    }

                    Trigger.ClientEvent(someone, "deladvert", ID_);
                }
                Adverts.Remove(ID_);
            }
            catch (Exception e)
            {
                Log.Write(e.ToString(), nLog.Type.Error);
            }
        }
Exemplo n.º 8
0
 private void timer_playerExitWorkVehicle(Client player, Vehicle vehicle)
 {
     NAPI.Task.Run(() =>
     {
         try
         {
             if (!player.HasData("WORK_CAR_EXIT_TIMER"))
             {
                 return;
             }
             if (NAPI.Data.GetEntityData(player, "IN_WORK_CAR"))
             {
                 //Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_5");
                 Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"));
                 NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER");
                 Log.Debug("Player exit work vehicle timer was stoped");
                 return;
             }
             if (NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") > 60)
             {
                 respawnCar(vehicle);
                 NAPI.Data.SetEntityData(player, "ON_WORK", false);
                 NAPI.Data.SetEntityData(player, "WORK", null);
                 Notify.Send(player, NotifyType.Info, NotifyPosition.BottomCenter, $"Вы закончили рабочий день", 3000);
                 Trigger.ClientEvent(player, "deleteCheckpoint", 4, 0);
                 //Main.StopT(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"), "timer_6");
                 Timers.Stop(NAPI.Data.GetEntityData(player, "WORK_CAR_EXIT_TIMER"));
                 NAPI.Data.ResetEntityData(player, "WORK_CAR_EXIT_TIMER");
                 Customization.ApplyCharacter(player);
                 return;
             }
             NAPI.Data.SetEntityData(player, "CAR_EXIT_TIMER_COUNT", NAPI.Data.GetEntityData(player, "CAR_EXIT_TIMER_COUNT") + 1);
         }
         catch (Exception e) { Log.Write("Timer_PlayerExitWorkVehicle_Lawnmower: " + e.Message, nLog.Type.Error); }
     });
 }
Exemplo n.º 9
0
        private static void Worker()
        {
            string CMD = "";

            try
            {
                Log.Debug("Worker started");
                while (true)
                {
                    if (queue.Count < 1)
                    {
                        continue;
                    }
                    else
                    {
                        MySQL.Query(queue.Dequeue());
                    }
                }
            }
            catch (Exception e)
            {
                Log.Write($"{e.ToString()}\n{CMD}", nLog.Type.Error);
            }
        }
Exemplo n.º 10
0
 public static void checkWantedList(Client sender, params object[] arguments)
 {
     try
     {
         List <string> list = new List <string>();
         foreach (var p in NAPI.Pools.GetAllPlayers())
         {
             if (!Main.Players.ContainsKey(p))
             {
                 continue;
             }
             var acc       = Main.Players[p];
             var wantedLvl = (acc.WantedLVL == null) ? 0 : acc.WantedLVL.Level;
             if (wantedLvl != 0)
             {
                 list.Add($"{acc.FirstName} {acc.LastName} - {wantedLvl}*");
             }
         }
         var json = JsonConvert.SerializeObject(list);
         Log.Debug(json);
         Trigger.ClientEvent(sender, "executeWantedList", json);
     }
     catch (Exception e) { Log.Write("checkWantedList: " + e.Message, nLog.Type.Error); }
 }
Exemplo n.º 11
0
        private static void Tick(object state)
        {
            try
            {
                Log.Debug("Donate time");

                using (MySqlConnection connection = new MySqlConnection(Connection))
                {
                    connection.Open();

                    MySqlCommand command = new MySqlCommand();
                    command.Connection = connection;

                    while (toChange.Count > 0)
                    {
                        KeyValuePair <string, string> kvp = toChange.Dequeue();
                        command.CommandText = string.Format(CHNGSTR, kvp.Value, kvp.Key, Main.oldconfig.ServerNumber);
                        command.ExecuteNonQuery();
                    }

                    while (newNames.Count > 0)
                    {
                        string nickname = newNames.Dequeue();
                        command.CommandText = string.Format(NEWNSTR, Main.oldconfig.ServerNumber, nickname);
                        command.ExecuteNonQuery();
                    }

                    command.CommandText = SYNCSTR;
                    MySqlDataReader reader = command.ExecuteReader();

                    DataTable result = new DataTable();
                    result.Load(reader);
                    reader.Close();

                    foreach (DataRow Row in result.Rows)
                    {
                        int    id   = Convert.ToInt32(Row["id"]);
                        string name = Convert.ToString(Row["account"]).ToLower();
                        long   reds = Convert.ToInt64(Row["amount"]);

                        try
                        {
                            if (Main.oldconfig.DonateSaleEnable)
                            {
                                reds = SaleEvent(reds);
                            }

                            if (!Main.Usernames.Contains(name))
                            {
                                Log.Write($"Can't find registred name for {name}!", nLog.Type.Warn);
                                continue;
                            }

                            var client = Main.Accounts.FirstOrDefault(a => a.Value.Login == name).Key;
                            if (client == null || client.IsNull || !Main.Accounts.ContainsKey(client))
                            {
                                MySQL.Query($"update `accounts` set `redbucks`=`redbucks`+{reds} where `login`='{name}'");
                            }
                            else
                            {
                                lock (Main.Players)
                                {
                                    Main.Accounts[client].RedBucks += reds;
                                }
                                NAPI.Task.Run(() =>
                                {
                                    try
                                    {
                                        if (!Main.Accounts.ContainsKey(client))
                                        {
                                            return;
                                        }
                                        Notify.Send(client, NotifyType.Success, NotifyPosition.BottomCenter, $"Вам пришли {reds} Redbucks", 3000);
                                        Trigger.ClientEvent(client, "starset", Main.Accounts[client].RedBucks);
                                    }
                                    catch { }
                                });
                            }
                            //TODO: новый лог денег
                            //GameLog.Money("donate", $"player({Main.PlayerUUIDs[name]})", +stars);
                            GameLog.Money("server", name, reds, "donateRed");

                            command.CommandText = $"delete from completed where id={id}";
                            command.ExecuteNonQuery();
                        }
                        catch (Exception e)
                        {
                            Log.Write($"Exception At Tick_Donations on {name}:\n" + e.ToString(), nLog.Type.Error);
                        }
                    }
                    connection.Close();
                }
            }
            catch (Exception e)
            {
                Log.Write("Exception At Tick_Donations:\n" + e.ToString(), nLog.Type.Error);
            }
        }
Exemplo n.º 12
0
        public void onPlayerDeathHandler(Client player, Client entityKiller, uint weapon)
        {
            try
            {
                if (!Main.Players.ContainsKey(player))
                {
                    return;
                }

                Log.Debug($"{player.Name} is died by {weapon}");

                FractionCommands.onPlayerDeathHandler(player, entityKiller, weapon);
                SafeMain.onPlayerDeathHandler(player, entityKiller, weapon);
                Weapons.Event_PlayerDeath(player, entityKiller, weapon);
                Army.Event_PlayerDeath(player, entityKiller, weapon);
                Police.Event_PlayerDeath(player, entityKiller, weapon);
                Houses.HouseManager.Event_OnPlayerDeath(player, entityKiller, weapon);

                Jobs.Collector.Event_PlayerDeath(player, entityKiller, weapon);
                Jobs.Gopostal.Event_PlayerDeath(player, entityKiller, weapon);

                VehicleManager.WarpPlayerOutOfVehicle(player);
                Main.Players[player].IsAlive = false;
                if (player.HasData("AdminSkin"))
                {
                    player.ResetData("AdminSkin");
                    player.SetSkin((Main.Players[player].Gender) ? PedHash.FreemodeMale01 : PedHash.FreemodeFemale01);
                    Customization.ApplyCharacter(player);
                }
                Trigger.ClientEvent(player, "screenFadeOut", 2000);

                var dimension = player.Dimension;

                if (Main.Players[player].DemorganTime != 0 || Main.Players[player].ArrestTime != 0)
                {
                    player.SetData("IS_DYING", true);
                }

                if (!player.HasData("IS_DYING"))
                {
                    if ((Manager.FractionTypes[Main.Players[player].FractionID] == 0 && (MafiaWars.warIsGoing || MafiaWars.warStarting)) ||
                        (Manager.FractionTypes[Main.Players[player].FractionID] == 1 && (GangsCapture.captureIsGoing || GangsCapture.captureStarting)))
                    {
                        player.SetSharedData("InDeath", true);
                        DeathConfirm(player, false);
                    }
                    else
                    {
                        player.SetSharedData("InDeath", true);
                        var medics = 0;
                        foreach (var m in Manager.Members)
                        {
                            if (m.Value.FractionID == 8)
                            {
                                medics++;
                            }
                        }
                        Trigger.ClientEvent(player, "openDialog", "DEATH_CONFIRM", $"Вы хотите вызвать медиков ({medics} в сети)?");
                    }
                }
                else
                {
                    NAPI.Task.Run(() => {
                        try
                        {
                            if (!Main.Players.ContainsKey(player))
                            {
                                return;
                            }

                            if (player.HasData("DYING_TIMER"))
                            {
                                //Main.StopT(player.GetData("DYING_TIMER"), "timer_9");
                                Timers.Stop(player.GetData("DYING_TIMER"));
                                player.ResetData("DYING_TIMER");
                            }

                            if (player.HasData("CALLEMS_BLIP"))
                            {
                                NAPI.Entity.DeleteEntity(player.GetData("CALLEMS_BLIP"));
                                player.ResetData("CALLEMS_BLIP");
                            }

                            if (player.HasData("CALLEMS_COL"))
                            {
                                NAPI.ColShape.DeleteColShape(player.GetData("CALLEMS_COL"));
                                player.ResetData("CALLEMS_COL");
                            }

                            Trigger.ClientEvent(player, "DeathTimer", false);
                            player.SetSharedData("InDeath", false);
                            var spawnPos = new Vector3();

                            if (Main.Players[player].DemorganTime != 0)
                            {
                                spawnPos  = Admin.DemorganPosition + new Vector3(0, 0, 1.12);
                                dimension = 1337;
                            }
                            else if (Main.Players[player].ArrestTime != 0)
                            {
                                spawnPos = Police.policeCheckpoints[4];
                            }
                            else if (Main.Players[player].FractionID == 14)
                            {
                                spawnPos = Fractions.Manager.FractionSpawns[14] + new Vector3(0, 0, 1.12);
                            }
                            else
                            {
                                player.SetData("IN_HOSPITAL", true);
                                spawnPos = emsCheckpoints[2];
                            }

                            NAPI.Player.SpawnPlayer(player, spawnPos);
                            NAPI.Player.SetPlayerHealth(player, 20);
                            player.ResetData("IS_DYING");
                            Main.Players[player].IsAlive = true;
                            Main.OffAntiAnim(player);
                            NAPI.Entity.SetEntityDimension(player, dimension);
                        } catch { }
                    }, 4000);
                }
            }
            catch (Exception e) { Log.Write("PlayerDeath: " + e.Message, nLog.Type.Error); }
        }
Exemplo n.º 13
0
 public static Hash GetHash(string name)
 {
     Log.Debug($"{name} {Convert.ToString((Hash)Enum.Parse(typeof(Hash), name))}");
     return((Hash)Enum.Parse(typeof(Hash), name));
 }
Exemplo n.º 14
0
        public async Task Load(Client player, int uuid)
        {
            try
            {
                if (Main.Players.ContainsKey(player))
                {
                    Main.Players.Remove(player);
                }

                DataTable result = await MySQL.QueryReadAsync($"SELECT * FROM `characters` WHERE uuid={uuid}");

                if (result == null || result.Rows.Count == 0)
                {
                    return;
                }

                foreach (DataRow Row in result.Rows)
                {
                    UUID         = Convert.ToInt32(Row["uuid"]);
                    FirstName    = Convert.ToString(Row["firstname"]);
                    LastName     = Convert.ToString(Row["lastname"]);
                    Gender       = Convert.ToBoolean(Row["gender"]);
                    Health       = Convert.ToInt32(Row["health"]);
                    Armor        = Convert.ToInt32(Row["armor"]);
                    LVL          = Convert.ToInt32(Row["lvl"]);
                    EXP          = Convert.ToInt32(Row["exp"]);
                    Money        = Convert.ToInt64(Row["money"]);
                    Bank         = Convert.ToInt32(Row["bank"]);
                    WorkID       = Convert.ToInt32(Row["work"]);
                    FractionID   = Convert.ToInt32(Row["fraction"]);
                    FractionLVL  = Convert.ToInt32(Row["fractionlvl"]);
                    ArrestTime   = Convert.ToInt32(Row["arrest"]);
                    DemorganTime = Convert.ToInt32(Row["demorgan"]);
                    WantedLVL    = JsonConvert.DeserializeObject <WantedLevel>(Row["wanted"].ToString());
                    BizIDs       = JsonConvert.DeserializeObject <List <int> >(Row["biz"].ToString());
                    AdminLVL     = Convert.ToInt32(Row["adminlvl"]);
                    Licenses     = JsonConvert.DeserializeObject <List <bool> >(Row["licenses"].ToString());
                    Unwarn       = ((DateTime)Row["unwarn"]);
                    Unmute       = Convert.ToInt32(Row["unmute"]);
                    Warns        = Convert.ToInt32(Row["warns"]);
                    LastVeh      = Convert.ToString(Row["lastveh"]);
                    OnDuty       = Convert.ToBoolean(Row["onduty"]);
                    LastHourMin  = Convert.ToInt32(Row["lasthour"]);
                    HotelID      = Convert.ToInt32(Row["hotel"]);
                    HotelLeft    = Convert.ToInt32(Row["hotelleft"]);
                    Contacts     = JsonConvert.DeserializeObject <Dictionary <int, string> >(Row["contacts"].ToString());
                    Achievements = JsonConvert.DeserializeObject <List <bool> >(Row["achiev"].ToString());
                    if (Achievements == null)
                    {
                        Achievements = new List <bool>();
                        for (uint i = 0; i != 401; i++)
                        {
                            Achievements.Add(false);
                        }
                    }
                    Sim        = Convert.ToInt32(Row["sim"]);
                    PetName    = Convert.ToString(Row["PetName"]);
                    CreateDate = ((DateTime)Row["createdate"]);

                    SpawnPos = JsonConvert.DeserializeObject <Vector3>(Row["pos"].ToString());
                    if (Row["pos"].ToString().Contains("NaN"))
                    {
                        Log.Debug("Detected wrong coordinates!", nLog.Type.Warn);
                        if (LVL <= 1)
                        {
                            new Vector3(-1037.42, -2738.239, 19.04929);          // На спавне новичков
                        }
                        else
                        {
                            SpawnPos = new Vector3(-1037.42, -2738.239, 19.04929);  // У мэрии LS Aero end 1
                        }
                    }
                }
                player.Name = FirstName + "_" + LastName;
                Main.Players.Add(player, this);
                CheckAchievements(player);
                GameLog.Connected(player.Name, UUID, player.GetData("RealSocialClub"), player.GetData("RealHWID"), player.Value, player.Address);
                Spawn(player);
            }
            catch (Exception e)
            {
                Log.Write("EXCEPTION AT \"Load\":\n" + e.ToString());
            }
        }