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

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается 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/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


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

Подскажите работу с PED

Belcheezy#

Новый участник
19 Мар 2023
36
1
43
Приветствую господа, подскажите пожалуйста, делаю триггер на сервере(C#) в js клиента, для создания ped'a (кабана)
Но когда создаётся он стоит на месте, не двигается и висит в воздухе. и урон по нему не проходит.
применяя taskWanderInArea - выдаёт ошибку в cliente

Хочу сделать охоту типо.
Код:
mp.events.add('createAnimal', () => {
    if (!animal) {
        const spawnPosition = new mp.Vector3(1442.63, 6538.83, 15.85);
        animal = mp.peds.new(0xCE5FF074, spawnPosition, 0,0);
        //animal.taskWanderInArea(spawnPosition,10, 10, 10);   
        mp.gui.chat.push("Животное создано!");
    }
});

// Обработка смерти
mp.events.add('checkAnimalDeath', () => {
    if (animal && animal.isDead()) {
        animal.destroy(); // Удаляем
        animal = null; // Сбрасываем переменную
        mp.gui.chat.push("Животное мертво и удалено.");
    }
});

setInterval(() => {
    mp.events.call('checkAnimalDeath');
}, 5000);
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,255
233
5
Привет! Для того чтобы пед двигался и был уязвимым для урона, тебе нужно задействовать различные аспекты в коде. Попробуй использовать функцию mp.game.invoke('0x9D77056A530643F6', animal.handle, true); для активации персонажа, и animal.setInvincible(false); для сделать его уязвимым. Также, для движения педа, рекомендуется использовать функцию animal.taskGoStraightToCoord(spawnPosition.x, spawnPosition.y, spawnPosition.z, 1, -1, 0, 0); вместо taskWanderInArea. Надеюсь, это поможет исправить проблему.
 

enotit

Гений
High developer
BackEnd developer
13 Ноя 2020
1,541
490
187
21
Привет! Молодец, что попытался. Но..
1)
у тебя всегда будет false. ты не весь код скинул, выше должна быть объявлена переменная.
2)
Используй не так, а через mp.joaat
3) А что у тебя животное должно делать? Ты не вписал ни анимации, ни действий. Посмотри на схожие ресурсы, например https://rage.mp/files/file/77-hunting/
4)
Сами по себе педы бессмертны. Ты можешь из танка пульнуть - побоку будет.
 
Реакции: Mi-Zaft

Belcheezy#

Новый участник
19 Мар 2023
36
1
43
Привет! Молодец, что попытался. Но..
1)

у тебя всегда будет false. ты не весь код скинул, выше должна быть объявлена переменная.
2)

Используй не так, а через mp.joaat
3) А что у тебя животное должно делать? Ты не вписал ни анимации, ни действий. Посмотри на схожие ресурсы, например https://rage.mp/files/file/77-hunting/
4)

Сами по себе педы бессмертны. Ты можешь из танка пульнуть - побоку будет.
1) сверху было let anima = null;
2) Хорошо буду ей пользоваться)
3) щас скачаю гляну,
4) То есть мне нужно прописать логику выстрела в него и после применить animal.isDead?
 

enotit

Гений
High developer
BackEnd developer
13 Ноя 2020
1,541
490
187
21
щас скачаю гляну
Сначала ищи на просторах интерната решение. Сто процентов есть какой-то азиат, который это уже сделал.

То есть мне нужно прописать логику выстрела в него и после применить animal.isDead?
Ну, выстрел, хп, тип попадания (нужно ли)
 

Belcheezy#

Новый участник
19 Мар 2023
36
1
43
Сначала ищи на просторах интерната решение. Сто процентов есть какой-то азиат, который это уже сделал.


Ну, выстрел, хп, тип попадания (нужно ли)
Подскажи пожалуйста как проверить жив ли ped или нет? на клиенте или на сервере без разницы (сервер c#)
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,818
1,872
208
35

Belcheezy#

Новый участник
19 Мар 2023
36
1
43
Что то не получается, подскажите как удалить peda. hunterHandle.delete(); - получает что функции не существует.

Код:
"update_animal_death": (hunterHandle) => {
        if (!hunterHandle) return;
        if (mp.peds.exists(hunterHandle)) { // Проверяем, существует ли сущность

        if (hunterHandle.isDead()) { // Проверяем на смерть, используя сущность
            mp.gui.chat.push("Охотник мертв");
            hunterHandle.delete();
        } else {
            mp.gui.chat.push("Охотник жив");
        }
        }
    },
 

Swayze

Активный участник
BackEnd developer
6 Окт 2022
78
39
55
Что то не получается, подскажите как удалить peda. hunterHandle.delete(); - получает что функции не существует.

Код:
"update_animal_death": (hunterHandle) => {
        if (!hunterHandle) return;
        if (mp.peds.exists(hunterHandle)) { // Проверяем, существует ли сущность

        if (hunterHandle.isDead()) { // Проверяем на смерть, используя сущность
            mp.gui.chat.push("Охотник мертв");
            hunterHandle.delete();
        } else {
            mp.gui.chat.push("Охотник жив");
        }
        }
    },
 

Swayze

Активный участник
BackEnd developer
6 Окт 2022
78
39
55
Что то не получается, подскажите как удалить peda. hunterHandle.delete(); - получает что функции не существует.

Код:
"update_animal_death": (hunterHandle) => {
        if (!hunterHandle) return;
        if (mp.peds.exists(hunterHandle)) { // Проверяем, существует ли сущность

        if (hunterHandle.isDead()) { // Проверяем на смерть, используя сущность
            mp.gui.chat.push("Охотник мертв");
            hunterHandle.delete();
        } else {
            mp.gui.chat.push("Охотник жив");
        }
        }
    },
Если хочешь передать сущность с сервера - передавай его ремоут айдишник и на клиенте уже ищи его + валидируй существует ли
 

Belcheezy#

Новый участник
19 Мар 2023
36
1
43
Если хочешь передать сущность с сервера - передавай его ремоут айдишник и на клиенте уже ищи его + валидируй существует ли
Я передаю его значение то есть value
через mp.peds.at получаю true
проверяю на ped = mp.peds.exists - получаю [obkect Object]
и в конце пытаюсь удалить его через destroy но ничего не происходит, уже голова кругом :D

Код:
"update_animal_death": (hunterHandle) => {
        if (!hunterHandle) return;
        const exi = mp.peds.exists(hunterHandle);
        const peds = mp.peds.at(hunterHandle);
        const exixt = mp.peds.exists(peds);
        mp.gui.chat.push("hh: " + hunterHandle);
        mp.gui.chat.push("Существует?: "+ exi );
        mp.gui.chat.push("exixt: " + exixt);   
        mp.gui.chat.push("Найден?: " + peds);
        peds.destroy();
 

Belcheezy#

Новый участник
19 Мар 2023
36
1
43
Немного поразмыслив, вроде как понял что нельзя отправлять handle (Object) в клиент нужно только число
отправил число, вроде как создаёться находит его.
при проверке isdead() = всегда true хотя оно живое всё ещё)
Как сделать проверку на клиенте или сервере?
что живое ли оно или нет?

C#:
public void OnAnimalDeath(Player player, int hunters, int live)
        {
            // Получаем объект Ped по его NetHandle
            ushort entityId = (ushort)hunters;

            // Определяем тип сущности (например, пешеход, если это был игрок)
            EntityType entityType = EntityType.Ped;  // Или используйте EntityType.Player для игрока, если это нужно

            // Создаем NetHandle, используя ID и тип сущности
            NetHandle hunterHandle = new NetHandle(entityId, entityType);

            Ped hunter = NAPI.Entity.GetEntityFromHandle<Ped>(hunterHandle);
            if (hunter.IsInstanceAlive == false)
            {
                // Логика для обработки смерти животного (например, его удаление или респаун)
                NAPI.Entity.DeleteEntity(hunter);
                NAPI.Chat.SendChatMessageToPlayer(player, "~r~Это животное мертво. Оно было удалено.");

                // Тут можно также добавить логику для респауна животного или других действий
            }
        }


JavaScript:
mp.events.add({
    // Обработчик для смерти животного
    "update_animal_death": (hunterHandleLong) => {
        if (!hunterHandleLong) return;
        const hunter = mp.peds.at(hunterHandleLong); 
        const exists = mp.peds.exists(hunter);
        
        if (hunter.isDead()) {
            mp.gui.chat.push("Животное мертво.");
        } else {
            mp.gui.chat.push("Животное живо.");
        }

        if (hunter.isDead()) {
            // Пример: действия с педом, если он найден
            mp.events.callRemote('on_animal_death', hunterHandleLong,1);
        }
          
    },
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
3,818
1,872
208
35
Немного поразмыслив, вроде как понял что нельзя отправлять handle (Object) в клиент нужно только число
отправил число, вроде как создаёться находит его.
при проверке isdead() = всегда true хотя оно живое всё ещё)
Как сделать проверку на клиенте или сервере?
что живое ли оно или нет?

C#:
public void OnAnimalDeath(Player player, int hunters, int live)
        {
            // Получаем объект Ped по его NetHandle
            ushort entityId = (ushort)hunters;

            // Определяем тип сущности (например, пешеход, если это был игрок)
            EntityType entityType = EntityType.Ped;  // Или используйте EntityType.Player для игрока, если это нужно

            // Создаем NetHandle, используя ID и тип сущности
            NetHandle hunterHandle = new NetHandle(entityId, entityType);

            Ped hunter = NAPI.Entity.GetEntityFromHandle<Ped>(hunterHandle);
            if (hunter.IsInstanceAlive == false)
            {
                // Логика для обработки смерти животного (например, его удаление или респаун)
                NAPI.Entity.DeleteEntity(hunter);
                NAPI.Chat.SendChatMessageToPlayer(player, "~r~Это животное мертво. Оно было удалено.");

                // Тут можно также добавить логику для респауна животного или других действий
            }
        }


JavaScript:
mp.events.add({
    // Обработчик для смерти животного
    "update_animal_death": (hunterHandleLong) => {
        if (!hunterHandleLong) return;
        const hunter = mp.peds.at(hunterHandleLong);
        const exists = mp.peds.exists(hunter);
       
        if (hunter.isDead()) {
            mp.gui.chat.push("Животное мертво.");
        } else {
            mp.gui.chat.push("Животное живо.");
        }

        if (hunter.isDead()) {
            // Пример: действия с педом, если он найден
            mp.events.callRemote('on_animal_death', hunterHandleLong,1);
        }
         
    },

скажи нейронке что с педами лучше работать всегда только на клиенте
 
  • Haha
Реакции: enotit

Belcheezy#

Новый участник
19 Мар 2023
36
1
43
Ну ладно о смешном))
Подскажите логику кто нибудь)) как сделать))
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
JavaScript:
mp.events.add({
    // Обработчик для смерти животного
    "update_animal_death": (hunterHandleLong) => {
        if (!hunterHandleLong) return;
        const hunter = mp.peds.at(hunterHandleLong);
        const exists = mp.peds.exists(hunter);
       
        if (hunter.isDead()) {
            mp.gui.chat.push("Животное мертво.");
        } else {
            mp.gui.chat.push("Животное живо.");
        }

        if (hunter.isDead()) {
            // Пример: действия с педом, если он найден
            mp.events.callRemote('on_animal_death', hunterHandleLong,1);
        }
         
    },
pool.at это метод только серверный на JS, для клиента .atRemoteId