FAQ Фиксим ники в маске (RedAge)

Hello World!

Участник портала
Автор темы
5
5
15
Асаламалейкум!
Давайте пофиксим проблему когда ник в маске не пропадал на сборке RedAge 0.3.7 (На 037 точно работает, на 1.1 хз)
Короче просто повторяйте за мной, объяснять ничего не буду, ибо лень

Customization.cs
C#:
public static void SetMask(Client player, int variation, int texture)
        {
            if (variation == 0)
            {
                player.SetSharedData("IS_MASK", false);
                ApplyCharacterFace(player);   

                player.SetClothes(2, CustomPlayerData[Main.Players[player].UUID].Hair.Hair, 0);
                NAPI.Player.SetPlayerHairColor(player, (byte)CustomPlayerData[Main.Players[player].UUID].Hair.Color, (byte)CustomPlayerData[Main.Players[player].UUID].Hair.HighlightColor);
            }
            else
            {
                player.SetSharedData("IS_MASK", true);
                ApplyMaskFace(player);
            }
            player.SetClothes(1, variation, texture);
        }
Robbery.cs
C#:
        public static void interactSafe(Client player)
        {
            if (!player.HasData("temp_SafeID")) return;

            Safe safe = Safes.FirstOrDefault(s => s.ID == player.GetData("temp_SafeID"));
            if (safe == null) return;

            if (safe.IsOpen)
            {
                safe.Loot(player);
            }
            else
            {
                if (!player.HasSharedData("IS_MASK") || !player.GetData("IS_MASK"))
                {
                    Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Взлом возможен только в маске", 3000);
                    return;
                }

                if (safe.Occupier != null && NAPI.Player.GetPlayerFromHandle(safe.Occupier) != null)
                {
                    Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот сейф уже взламывают", 3000);
                    return;
                }
                if (Fractions.Manager.FractionTypes[Main.Players[player].FractionID] != 1)
                {
                    Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Доступно только для банд", 3000);
                    return;
                }
                if (DateTime.Now.Hour < 13 || DateTime.Now.Hour > 22)
                {
                    Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Возможно открыть только с 13:00 до 23:00", 3000);
                    return;
                }

                var lockpick = nInventory.Find(Main.Players[player].UUID, ItemType.Lockpick);
                var count = (lockpick == null) ? 0 : lockpick.Count;
                if (count == 0)
                {
                    Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"У Вас нет отмычки", 3000);
                    return;
                }
                if (safe.Address != "Мэрия")
                {
                    if (DateTime.Now < NextRobbery && NowRobberyID != safe.ID)
                    {
                        DateTime g = new DateTime((NextRobbery - DateTime.Now).Ticks);
                        Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Попробуйте через {g.Minute}:{g.Second}", 3000);
                        return;
                    }
                }

                var nearestPlayers = Main.GetPlayersInRadiusOfPosition(player.Position, 7);
                var gangsters = 0;
                foreach (var p in nearestPlayers)
                {
                    if (p == null || !Main.Players.ContainsKey(p) || player == p) continue;
                    if (Fractions.Manager.FractionTypes[Main.Players[p].FractionID] == 1) gangsters++;
                }

                if (gangsters == 0)
                {
                    Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"С Вами должен быть как минимум ещё один тру гангстер", 3000);
                    //return;
                }

                safe.Occupier = player;
                player.SetData("CURRENT_STAGE", 0);
                Trigger.ClientEvent(player, "dial", "open", safe.LockAngles[0]);
                Notify.Send(player, NotifyType.Warning, NotifyPosition.BottomCenter, $"С минуты на минуту сюда прибудут копы", 3000);
                Manager.sendFractionMessage(7, $"Сейф по адресу {safe.Address} пытаются взломать");
                Manager.sendFractionMessage(9, $"Сейф по адресу {safe.Address} пытаются взломать");

                if (safe.Address != "Мэрия")
                {
                    if (NowRobberyID != safe.ID) NextRobbery = DateTime.Now.AddMinutes(15);
                    NowRobberyID = safe.ID;
                }

                if (DateTime.Now >= safe.BlipSet)
                {
                    safe.Blip = NAPI.Blip.CreateBlip(0, safe.Position, 1, 59, "Ограбление", 0, 0, true, 0, 0);
                    safe.Blip.Transparency = 0;
                    foreach (var p in Main.Players.Keys.ToList())
                    {
                        if (!Main.Players.ContainsKey(p)) continue;
                        if (Main.Players[p].FractionID != 7 && Main.Players[p].FractionID != 9) continue;

                        Trigger.ClientEvent(p, "changeBlipAlpha", safe.Blip, 255);
                        Trigger.ClientEvent(p, "createWaypoint", safe.Position.X, safe.Position.Y);
                    }
                    safe.BlipSet = DateTime.Now.AddMinutes(15);
                    NAPI.Task.Run(() => {
                        try
                        {
                            if (safe.Blip != null) safe.Blip.Delete();
                        } catch { }
                    }, 900000);
                }

                if (player.HasSharedData("IS_MASK") && !player.GetSharedData("IS_MASK"))
                {
                    var wantedLevel = new WantedLevel(4, "Полиция", DateTime.Now, "Ограбление сейфа");
                    Police.setPlayerWantedLevel(player, wantedLevel);
                }
            }
        }
FractionCommands.cs
C#:
 public static void playerTakeoffMask(Client player, Client target)
        {
            if (player.IsInVehicle || target.IsInVehicle) return;

            if (!target.HasSharedData("IS_MASK") || !target.HasSharedData("IS_MASK"))
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"У игрока нет маски", 3000);
                return;
            }

            var maskItem = nInventory.Items[Main.Players[target].UUID].FirstOrDefault(i => i.Type == ItemType.Mask && i.IsActive);
            nInventory.Remove(target, maskItem);
            Customization.CustomPlayerData[Main.Players[target].UUID].Clothes.Mask = new ComponentItem(0, 0);
            if (maskItem != null) Items.onDrop(player, maskItem, null);

            Customization.SetMask(target, 0, 0);;

            Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы сорвали маску с игрока ({target.Value})", 3000);
            Notify.Send(target, NotifyType.Warning, NotifyPosition.BottomCenter, $"Игрок ({player.Value}) сорвал с Вас маску", 3000);
            Commands.RPChat("me", player, " сорвал маску с {name}", target);
        }
        #endregion

        #region crimeCommands
        public static void robberyTarget(Client player, Client target)
        {
            if (!Main.Players.ContainsKey(player) || !Main.Players.ContainsKey(target)) return;

            if (!target.GetData("CUFFED") && !target.HasData("HANDS_UP"))
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Игрок должен быть связан или с поднятыми руками", 3000);
                return;
            }

            if (!player.HasSharedData("IS_MASK") || !player.GetSharedData("IS_MASK"))
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Ограбление возможно только в маске", 3000);
                return;
            }

            if (Main.Players[target].LVL < 2 || Main.Players[target].Money <= 1000 || (target.HasData("NEXT_ROB") && DateTime.Now < target.GetData("NEXT_ROB")))
            {
                Commands.RPChat("me", player, "хорошенько обшарив {name}, ничего не нашёл", target);
                return;
            }

            var max = (Main.Players[target].Money >= 3000) ? 3000 : Convert.ToInt32(Main.Players[target].Money) - 200;
            var min = (max - 200 < 0) ? max : max - 200;

            var found = Main.rnd.Next(min, max + 1);
            MoneySystem.Wallet.Change(target, -found);
            MoneySystem.Wallet.Change(player, found);
            GameLog.Money($"player({Main.Players[target].UUID})", $"player({Main.Players[player].UUID})", found, $"robbery");
            target.SetData("NEXT_ROB", DateTime.Now.AddMinutes(60));

            Commands.RPChat("me", player, "хорошенько обшарив {name}" + $", нашёл ${found}", target);
        }
Кто не понял, просто замените код в нужных файлах
Ищите по первой строчке нужное место
Если не туда залил тему, ну переместите куда надо
Ну вроде должно работать, но я не уверен, у всех же разные редаги :3
 
  • Like
Реакции: wirgy, Evbej и Myrka

Etader

Активный участник
121
22
37
1 ник и йд должен пропасть? это норм что все будут без ников бегать?
2 а как сделать чтобы и мафии могли сейфы грабить а не ток банды а то в банке сейфы для кого стоят