• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Sooliks

Активный участник
Автор темы
5 Июл 2022
7
7
40
C#:
using GTANetworkAPI;

using System.Collections.Generic;

namespace ServerSide
{
    public class InputMarker
    {
        public float posX { get; set; }
        public float posY { get; set; }
        public float posZ { get; set; }

        public Vector3 position = new Vector3();
        public string stringClientCefTrigger { get; set; }

        public static List<InputMarker> CordList = new List<InputMarker>()
        {

        };
        public static void CreateInputMarker(string textLabel, float posX, float posY, float posZ, int iconBlip, byte colorBlip, string stringClientCefTrigger)
        {        
           
            NAPI.TextLabel.CreateTextLabel(textLabel, new Vector3(posX, posY, posZ + 0.8f), 20.0f, 0.75f, 4, new Color(255, 255, 255));//Основной тект
            NAPI.TextLabel.CreateTextLabel("Нажмите [E]", new Vector3(posX, posY - 0.5f, posZ + 0.8f), 20.0f, 0.75f, 4, new Color(255, 255, 255));//Нажмите [E]
            NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, new Vector3(posX, posY, posZ - 1), new Vector3(), new Vector3(), 1.0f, new Color(255, 255, 255));//Маркер
            Blip blip = NAPI.Blip.CreateBlip(iconBlip, new Vector3(posX, posY, posZ), 1.0f, colorBlip);//Блип
            NAPI.Blip.SetBlipName(blip, textLabel);//Установка имени блипу
            NAPI.Blip.SetBlipShortRange(blip, true); //Установка видимости блипу
            InputMarker inputMarker = new InputMarker();      
            inputMarker.stringClientCefTrigger = stringClientCefTrigger;
            inputMarker.position=new Vector3(posX, posY, posZ);
            InputMarker.CordList.Add(inputMarker);      
        }
        public static InputMarker inputMarkerIsWithinReach(Player player, float distance = 1.5f)
        {
            InputMarker h = null;
            foreach (InputMarker inputMarker in CordList)
            {
                if (inputMarker != null && player.Position.DistanceTo(inputMarker.position) < distance)
                {
                    h = inputMarker;
                    NAPI.ClientEvent.TriggerClientEvent(player, inputMarker.stringClientCefTrigger);
                }
            }
            return h;
        }
    }
}
C#:
//помещаем в Event.ResourceStart, передаем параметры, название нашего маркера, координаты, id блипа, цвет и само название ивента на клиентской части.
            InputMarker.CreateInputMarker("Автосалон высокого класса", -802.8635f, -223.81265f, 37.21845f, 523, 44,"showAutoSalonWindow");
            InputMarker.CreateInputMarker("Работа: дальнобойщик", 1245.0433f, -3184.297f, 6.0282335f, 477, 52, "showTrukersWindow");
//дальше отлавливаем нажатие кнопки
[RemoteEvent("CLIENT:SERVER:OnPlayerPressE")]
        private void OnPlayerPressE(Player player)
        {        
            if(InputMarker.inputMarkerIsWithinReach(player)!=null)//проверяем стоит ли игрок возле нашего маркера
            {
                player.SendNotification("Вы успешно вошли в CEF");
            }
        }

//и клиентская часть
RAGE.Input.Bind(VirtualKeys.E, true, () =>
            {
                Events.CallRemote("CLIENT:SERVER:OnPlayerPressE");
               
            });


Выглядит вот так


Заранее еще извиняюсь за говнокод если он присутствует и то что может как то не красиво оформил тему, т.к выкладываю первый раз
 
Последнее редактирование модератором:

Andrew Fares

Специалист
7 Окт 2020
69
41
79
А не проще использовать колшейп для триггера функции при нажатии "E"?
На колшейп при создании ставим нужную data и потом отлавливаем этот ключ. Дальше вызываем нужные действия по принципу "ключ - значение"(условно).
Это для того, чтобы не перебирать координаты всех маркеров и сравнивать их.
 

DaVilka

Гуру
16 Сен 2020
601
228
108
А не проще использовать колшейп для триггера функции при нажатии "E"?
На колшейп при создании ставим нужную data и потом отлавливаем этот ключ. Дальше вызываем нужные действия по принципу "ключ - значение"(условно).
Это для того, чтобы не перебирать координаты всех маркеров и сравнивать их.
Проще, есть даже тема такая Простой способ взаимодействия через колшейп (C#)
 
  • Like
Реакции: Sooliks и Andrew Fares

Martin17

Начинающий специалист
23 Мар 2021
16
3
67
Просто лайк за старание,успехов(y)