Мануал Добавляем визуальное отображение бронежилетов в сборку RedAge RP / NeptuneEvo (RAGE:MP 1.1)

Harland David Sanders

Куратор портала
Автор темы
Команда форума
Куратор портала
466
284
105
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 и добавляем ниже это :

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


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

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

player.SetSharedData("ALVL", AdminLVL);

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

Minirank пишем 7
command пишем armorelp
isaadmin пишем 1
idkey смотрите по последнему числу, если там допустип последняя команда 30 то пишем 31
 
  • Like
Реакции: Alonze и wirgy

CHungro

Активный участник
198
21
37
Скрин нет?
 

OGPRussia

Участник портала
18
4
15
Как сделать, что бы отображалось в линии жизни информация о бронежилете (сколько осталось), как например как отображается информация о остатке воздуха когда ты плаваешь под водой?
1607728142998.png
 

skyElmax

Начинающий специалист
high coder
100
42
57

Tertiy

Новый участник
11
0
3
Добрый день!делал как написано,но что то пошло не так
123.jpg

подскажите что именно.Спасибо
 

Вложения

  • 100.1 KB Просмотры: 18

wearnings

Участник портала
52
13
23
25
Спасибо Мил человек.все заработало..поправить бы в мануале тогда.
Зачем поправлять, данная инструкция работает для 0,3,7 Client а ты ставишь на 1.1 то делается Player
 

wearnings

Участник портала
52
13
23
25
А ничего что в этой инструкции используется то Client то Player?
И что какая разница? Player для 1,1 Client для 0,3,7 и что! Автор создал тему! А уже читатели его пусть сами делают как надо им!
 

PERS

Активный участник
47
11
27
Парни вики на 1.1 еще не выпущена, по этому лучше задавайте, вам будут отвечать под 1.1 что то.

Отвечу что сам знаю, но я больше по дизайну )
 

DaVilka

Активный участник
65
24
27
И что какая разница? Player для 1,1 Client для 0,3,7 и что! Автор создал тему! А уже читатели его пусть сами делают как надо им!
Разница в том что если если это мануал то он должен работать, а если было бы десяток версий рейджа, то что, можно через слово пихать функции из всех версий?