Добро пожаловать на RAGEM.RU

Все для RageMP GTA 5

Вопрос Система свалки

  • Автор темы Автор темы kiriyan
  • Дата начала Дата начала

kiriyan

Только зашёл
Участник портала
Регистрация
07.04.2024
Сообщения
2
Розыгрыши
0
Репутация
0
Реакции
1
Баллы
2
RC
6
У кого есть система свалки для RedAgeV3?
 
  • Like
Реакции: Appi
Принцип работы свалки : Встаёшь на маркер и нажимаешь Е - тебе вылезает меню, где ты можешь продать машину. Ты сможешь это сделать даже не имея дома.
Скрытое содержимое доступно для зарегистрированных пользователей!

1. Закидываете файл Svalka.cs в ваш проект, к примеру, в Core
2. Открываете Main.cs и ищите
Код:
 public void ClientEvent_interactionPressed(Player player, params object[] arguments)
3.Чуть ниже находите switch (id) и ниже добавляете это:
Код:
case 7811:
                      Houses.HouseManager.OpenCarsSellMenu(player);
return;
 
сделал все как сказанно но тачка не сливается!
 
это под redage v3?
 
Принцип работы свалки : Встаёшь на маркер и нажимаешь Е - тебе вылезает меню, где ты можешь продать машину. Ты сможешь это сделать даже не имея дома.
*** Скрытый текст не может быть процитирован. ***
1. Закидываете файл Svalka.cs в ваш проект, к примеру, в Core
2. Открываете Main.cs и ищите
Код:
 public void ClientEvent_interactionPressed(Player player, params object[] arguments)
3.Чуть ниже находите switch (id) и ниже добавляете это:
Код:
case 7811:
                      Houses.HouseManager.OpenCarsSellMenu(player);
return;
В RedAge v3 нету ClientEvent_interactionPressed
 
В core создаем файл svalka.cs
C#:
using GTANetworkAPI;
using System;
using Redage.SDK;
using NeptuneEvo.Core;
using NeptuneEvo.Character;
using Database;
using NeptuneEvo;
using NeptuneEvo.Handles;
using static NeptuneEvo.Core.BusinessManager;
using System.Collections.Generic;
using NeptuneEvo.VehicleData.Models;
using MySql.Data.MySqlClient;
using NeptuneEvo.Players;
using NeptuneEvo.Functions;
using Localization;
using NeptuneEvo.Accounts;
using GTANetworkMethods;
using System.Linq.Expressions;
using Org.BouncyCastle.Bcpg;
using NeptuneEvo.MoneySystem;
using System.Linq;

namespace NeptuneEvo.Houses
{
    class Svalka : Script
    {
        //private static Vector3 Svalki[i] = new Vector3(-363.91403, -92.45042, 39.015663);
        private static nLog Log = new nLog("Свалка");

        public static List<Vector3> Svalki = new List<Vector3>
        {
        new Vector3(-441.31528, -1695.6655, 18.69018),
        };

        [ServerEvent(Event.ResourceStart)]
        public void onResourceStart()
        {
            try
            {
                for (int i = 0; i < Svalki.Count; i++)
                {
                    NAPI.Marker.CreateMarker(1, Svalki[i] - new Vector3(0, 0, 0.7), new Vector3(), new Vector3(), 3, new Color(255, 0, 0));
                    NAPI.Blip.CreateBlip(163, Svalki[i], 0.9f, 1, "Свалка", 255, 0, true, 0, 0);
                    CustomColShape.CreateCylinderColShape(Svalki[i], 3, 3, 0, ColShapeEnums.Svalka);
                    NAPI.TextLabel.CreateTextLabel("~r~Сдача транспорта на свалку", Svalki[i] + new Vector3(0, 0, 1.5), 5F, 0.3F, 0, new Color(255, 255, 255));
                }
            }
            catch (Exception e)
            {
                Log.Write("ResourceStart: " + e.Message, nLog.Type.Error);
            }
        }

        [Interaction(ColShapeEnums.Svalka)]
        private void SellCar(ExtPlayer player)
        {
            var sessionData = player.GetSessionData();
            if (sessionData == null)
                return;

            var accountData = player.GetAccountData();
            if (accountData == null)
                return;

            var characterData = player.GetCharacterData();
            if (characterData == null)
                return;

            if (!player.IsInVehicle)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не в транспорте.", 3000);
                return;
            }

            var vehicle = (ExtVehicle)player.Vehicle;
            var vehicleData = VehicleManager.GetVehicleToNumber(vehicle.NumberPlate);
            var pl = characterData.FirstName + "_" + characterData.LastName;
            var holder = VehicleManager.Vehicles[player.Vehicle.NumberPlate].Holder;
            if (pl != holder)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Это не ваш автомобиль", 3000);
                return;
            }
            if (characterData.FirstName == null || characterData.LastName == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }
            if (vehicleData == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }
            if (holder == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }
            if (pl == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }

            if (vehicleData == null) return;

            if (vehicleData.Holder != sessionData.Name) return;

            sessionData.CarSellGov = vehicle.NumberPlate;

            int price = 0;
            if (BusinessManager.BusProductsData.ContainsKey(vehicleData.Model))
            {
                switch (accountData.VipLvl)
                {
                    case 0: // None
                    case 1: // Bronze
                    case 2: // Silver
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.5);
                        break;
                    case 3: // Gold
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.6);
                        break;
                    case 4: // Platinum
                    case 5: // Media Platinum
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.7);
                        break;
                    default:
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.5);
                        break;
                }
            }
            Trigger.ClientEvent(player, "openDialog", "SvalkaSell", $"Вы хотите сдать ваш транспорт на свалку? Вы получите ${price}");
            return;
        }
    }
}

В main.cs найти case:

C#:
case "CONFIRM_BUY_ORGBODYARMOUR":
    Organizations.Manager.CraftBodyArmor(player);
return;

после него добавить:
C#:
case "SvalkaSell":
    var vehicle1 = (ExtVehicle)player.Vehicle;
    string number1 = sessionData.CarSellGov;
    var vehicleData1 = VehicleManager.GetVehicleToNumber(number1);
    var pricesell = 0;
    if (BusinessManager.BusProductsData.ContainsKey(vehicleData1.Model))
    {
        switch (accountData.VipLvl)
        {
            case 0: // None
            case 1: // Bronze
            case 2: // Silver
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.5);
                break;
            case 3: // Gold
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.6);
                break;
            case 4: // Platinum
            case 5: // Media Platinum
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.7);
                break;
            default:
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.5);
                break;
        }
    }
    MoneySystem.Wallet.Change(player, pricesell);
    GameLog.Money($"server", $"player({characterData.UUID})", pricesell, $"carSellgov({vehicleData1.Model})");
    Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы успешно сдали автомобиль на свалку!", 3000);
    var vehiclesNumber = VehicleManager.GetVehiclesCarNumberToPlayer($"{characterData.FirstName}_{characterData.LastName}");
    VehicleManager.Remove(number1);
    player.Vehicle.Delete();
    return;
 
В core создаем файл svalka.cs
C#:
using GTANetworkAPI;
using System;
using Redage.SDK;
using NeptuneEvo.Core;
using NeptuneEvo.Character;
using Database;
using NeptuneEvo;
using NeptuneEvo.Handles;
using static NeptuneEvo.Core.BusinessManager;
using System.Collections.Generic;
using NeptuneEvo.VehicleData.Models;
using MySql.Data.MySqlClient;
using NeptuneEvo.Players;
using NeptuneEvo.Functions;
using Localization;
using NeptuneEvo.Accounts;
using GTANetworkMethods;
using System.Linq.Expressions;
using Org.BouncyCastle.Bcpg;
using NeptuneEvo.MoneySystem;
using System.Linq;

namespace NeptuneEvo.Houses
{
    class Svalka : Script
    {
        //private static Vector3 Svalki[i] = new Vector3(-363.91403, -92.45042, 39.015663);
        private static nLog Log = new nLog("Свалка");

        public static List<Vector3> Svalki = new List<Vector3>
        {
        new Vector3(-441.31528, -1695.6655, 18.69018),
        };

        [ServerEvent(Event.ResourceStart)]
        public void onResourceStart()
        {
            try
            {
                for (int i = 0; i < Svalki.Count; i++)
                {
                    NAPI.Marker.CreateMarker(1, Svalki[i] - new Vector3(0, 0, 0.7), new Vector3(), new Vector3(), 3, new Color(255, 0, 0));
                    NAPI.Blip.CreateBlip(163, Svalki[i], 0.9f, 1, "Свалка", 255, 0, true, 0, 0);
                    CustomColShape.CreateCylinderColShape(Svalki[i], 3, 3, 0, ColShapeEnums.Svalka);
                    NAPI.TextLabel.CreateTextLabel("~r~Сдача транспорта на свалку", Svalki[i] + new Vector3(0, 0, 1.5), 5F, 0.3F, 0, new Color(255, 255, 255));
                }
            }
            catch (Exception e)
            {
                Log.Write("ResourceStart: " + e.Message, nLog.Type.Error);
            }
        }

        [Interaction(ColShapeEnums.Svalka)]
        private void SellCar(ExtPlayer player)
        {
            var sessionData = player.GetSessionData();
            if (sessionData == null)
                return;

            var accountData = player.GetAccountData();
            if (accountData == null)
                return;

            var characterData = player.GetCharacterData();
            if (characterData == null)
                return;

            if (!player.IsInVehicle)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Вы не в транспорте.", 3000);
                return;
            }

            var vehicle = (ExtVehicle)player.Vehicle;
            var vehicleData = VehicleManager.GetVehicleToNumber(vehicle.NumberPlate);
            var pl = characterData.FirstName + "_" + characterData.LastName;
            var holder = VehicleManager.Vehicles[player.Vehicle.NumberPlate].Holder;
            if (pl != holder)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Это не ваш автомобиль", 3000);
                return;
            }
            if (characterData.FirstName == null || characterData.LastName == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }
            if (vehicleData == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }
            if (holder == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }
            if (pl == null)
            {
                Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Этот транспорт нельзя сдать на свалку.", 3000);
                return;
            }

            if (vehicleData == null) return;

            if (vehicleData.Holder != sessionData.Name) return;

            sessionData.CarSellGov = vehicle.NumberPlate;

            int price = 0;
            if (BusinessManager.BusProductsData.ContainsKey(vehicleData.Model))
            {
                switch (accountData.VipLvl)
                {
                    case 0: // None
                    case 1: // Bronze
                    case 2: // Silver
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.5);
                        break;
                    case 3: // Gold
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.6);
                        break;
                    case 4: // Platinum
                    case 5: // Media Platinum
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.7);
                        break;
                    default:
                        price = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData.Model].Price * 0.5);
                        break;
                }
            }
            Trigger.ClientEvent(player, "openDialog", "SvalkaSell", $"Вы хотите сдать ваш транспорт на свалку? Вы получите ${price}");
            return;
        }
    }
}

В main.cs найти case:

C#:
case "CONFIRM_BUY_ORGBODYARMOUR":
    Organizations.Manager.CraftBodyArmor(player);
return;

после него добавить:
C#:
case "SvalkaSell":
    var vehicle1 = (ExtVehicle)player.Vehicle;
    string number1 = sessionData.CarSellGov;
    var vehicleData1 = VehicleManager.GetVehicleToNumber(number1);
    var pricesell = 0;
    if (BusinessManager.BusProductsData.ContainsKey(vehicleData1.Model))
    {
        switch (accountData.VipLvl)
        {
            case 0: // None
            case 1: // Bronze
            case 2: // Silver
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.5);
                break;
            case 3: // Gold
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.6);
                break;
            case 4: // Platinum
            case 5: // Media Platinum
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.7);
                break;
            default:
                pricesell = Convert.ToInt32(BusinessManager.BusProductsData[vehicleData1.Model].Price * 0.5);
                break;
        }
    }
    MoneySystem.Wallet.Change(player, pricesell);
    GameLog.Money($"server", $"player({characterData.UUID})", pricesell, $"carSellgov({vehicleData1.Model})");
    Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, $"Вы успешно сдали автомобиль на свалку!", 3000);
    var vehiclesNumber = VehicleManager.GetVehiclesCarNumberToPlayer($"{characterData.FirstName}_{characterData.LastName}");
    VehicleManager.Remove(number1);
    player.Vehicle.Delete();
    return;
В коде выше создается класс `Svalka`, который является скриптом для игрового сервера Rage MP. В этом классе описаны методы и события связанные с функционалом "Свалки" игрового мира.

1. В методе `onResourceStart` инициализируется свалка с маркерами, блипами и коллайдерами.
2. Метод `SellCar` описывает логику сдачи транспорта на свалку.
3. В файле `main.cs` добавляется обработчик для события `SvalkaSell`, который завершает процесс сдачи транспорта на свалку, начисляя игроку деньги за сданный автомобиль.

Этот скрипт позволяет игрокам взаимодействовать с функционалом свалки в игровом мире, сдавая транспорт на переработку и получая за это игровую валюту.
 

Все для RAGE:MP

Все для RAGE:MP. Портал о мультиплеере. Подумывали об том «как создать гта 5 сервер?» или «скачать готовый сервер rage mp?» на нашем сайте вы найдете очень много полезных ресурсов для RAGE:MP: готовые сервера, скрипты, моды, карты, шаблоны сайтов, мануалы и уроки, помощь в разработке, услуги скриптеров и других специалистов в сфере RAGE Multiplayer.

RAGE Multiplayer

Объединитесь с другими игроками, создайте свой сервер, сообщество или новый игровой режим. В RAGE Multiplayer вас ждут безграничные возможности и беспрецедентный контроль. Пусть ваше воображение будет единственным горизонтом.
Официальный сайт мультиплеера - rage.mp.
Сайт входит в группу проектов GTA V MP
Верх