• Добавляем различные ресурсы в продажу.В архиве сохраняем контакты для получения или готовый ресурс. Вывод средств 20%.

RageMP мануал Добавляем визуальное отображение бронежилетов в сборку RedAge RP / NeptuneEvo

Admin

Admin

Предводитель
Админ
1. Заходим в Inventory.cs
ищем case ItemType.BodyArmor и заменяем на это:
C#:
case ItemType.BodyArmor:
{
    if (item.IsActive)
    {
        item.Data = player.Armor.ToString();
        player.Armor = 0;
        player.ResetSharedData("HASARMOR");
        Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Variation = 0;
        Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture = 0;
        player.SetClothes(9, Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Variation, Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture);
        nInventory.Items[UUID][index].IsActive = false;
        GUI.Dashboard.Update(player, item, index);
    }
    else
    {
        var armor = Convert.ToInt32((string)item.Data);
        player.Armor = armor;
        player.SetSharedData("HASARMOR", true);
        switch (Fractions.Manager.FractionTypes[Main.Players[player].FractionID])
        {
            case -1:
            case 1:
                Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture = 2;
                break;
            case 0:
                Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture = 0;
                break;
            case 2:
                Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture = 1;
                break;
            default:
                Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture = 1;
                break;

        }
        Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Variation = 12;
        player.SetClothes(9, Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Variation, Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture);
        nInventory.UnActiveItem(player, item.Type);
        nInventory.Items[UUID][index].IsActive = true;
        GUI.Dashboard.Update(player, item, index);
    }
    return;
}

2. заходим в Main.cs
Ищем [RemoteEvent("deletearmor")] и заменяем на это:
C#:
[RemoteEvent("deletearmor")]
public void ClientEvent_DeleteArmor(Client player)
{
try
{
if (player.Armor == 0)
{
nItem aItem = nInventory.Find(Main.Players[player].UUID, ItemType.BodyArmor);
if (aItem == null || aItem.IsActive == false) return;
nInventory.Remove(player, ItemType.BodyArmor, 1);
Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Variation = 0;
Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture = 0;
player.SetClothes(9, Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Variation, Customization.CustomPlayerData[Main.Players[player].UUID].Clothes.Bodyarmor.Texture);

player.ResetSharedData("HASARMOR");
}
}
catch (Exception e) { Log.Write("deletearmor: " + e.Message, nLog.Type.Error); }
}

3. Заходим в Commands.cs
В любом месте между командами добавляем новую комманду:
C#:
[Command("armorelp")]
        public static void CMD_armorelp(Player player, int id)
        {
            try
            {
                if (!Group.CanUseCmd(player, "armorelp")) return;
                Player target = Main.GetPlayerByID(id);
                if (target == null)
                {
                    Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Игрок с таким ID не найден", 3000);
                    return;
                }
                target.StopAnimation();
                NAPI.Entity.SetEntityPosition(target, target.Position + new Vector3(0, 0, 0.5));
                target.SetSharedData("InDeath", false);
                Trigger.ClientEvent(target, "DeathTimer", false);
                target.Health = 100;
                target.ResetData("IS_DYING");
                Main.Players[target].IsAlive = true;
                Main.OffAntiAnim(target);
                if (target.HasData("DYING_TIMER"))
                {
                    Timers.Stop(target.GetData<string>("DYING_TIMER"));
                    target.ResetData("DYING_TIMER");
                }
                Notify.Send(target, NotifyType.Info, NotifyPosition.BottomCenter, $"Игрок ({player.Value}) реанимировал Вас", 3000);
                Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы реанимировали игрока ({target.Value})", 3000);

                if (target.HasData("CALLEMS_BLIP"))
                {
                    NAPI.Entity.DeleteEntity(target.GetData<Entity>("CALLEMS_BLIP"));
                }
                if (target.HasData("CALLEMS_COL"))
                {
                    NAPI.ColShape.DeleteColShape(target.GetData<ColShape>("CALLEMS_COL"));
                }
            }
            catch
            {

            }

        }

4. Заходим в FractionManager.cs

Ищем public static bool canUseCommand и добавляем ниже это :

C#:
if (Main.Players[player].AdminLVL > 0) return true;

5. Заходим в Character.cs

Ищем player.SetData("RESIST_TIME", 0); и добавляем ниже это :

C#:
player.SetSharedData("ALVL", AdminLVL);

6. Заходим в базу переходим в adminaccess и добавляем таблицу

Minirank пишем 7
command пишем armorelp
isaadmin пишем 1
idkey смотрите по последнему числу, если там допустип последняя команда 30 то пишем 31
 
Cheh

Cheh

Постоялец
Участник
в Main.cs
public void ClientEvent_DeleteArmor(Client player) выдавала ошибку
public void ClientEvent_DeleteArmor(Player player) заменил все ок
 
Верх