• Из-за обновления 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) последний раз были обновлены:

Вопрос C# событие Tick

E-Exception

Участник портала
3 Июл 2022
104
17
59
23
Я столкнулся с проблемой. Такое ощущение, что вызов события идет с запозданием, т.к при рендере текста над игроком, положение этого текста на экране (при вращении камерой) не соответствует действительному положению игрока в этом фрейме. Так ведь не должно быть, верно?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
Было бы лучше, если бы ты приложил код, который у тебя работает не так и описал что именно тебя не устраивает.
C# событие Tick - JS событие render, которое срабатывает каждый кадр.
 

E-Exception

Участник портала
3 Июл 2022
104
17
59
23
Код:
float currentX = 0, currentY = 0;
RAGE.Game.Graphics.GetScreenCoordFromWorldCoord(player.Position.X, player.Position.Y, player.Position.Z, ref currentX, ref currentY);
RAGE.Game.UIText.Draw($"[{player.RemoteId}] " + player.Name, new Point((int)(currentX * screenX), (int)(currentY * screenY) - 40), 1, System.Drawing.Color.White, RAGE.Game.Font.ChaletComprimeCologne, true);

Если быстро вращать камерой (или проехать на машине), то можно заметить, что определение позиции игрока отстает от его реального положения в кадре. Если прекратить движение, то всё отображается корректно
 

E-Exception

Участник портала
3 Июл 2022
104
17
59
23
Это ведь может быть связано с тем, что процессор перегружается? Это отдельным потоком обрабатывается?
 

E-Exception

Участник портала
3 Июл 2022
104
17
59
23
Демо с такой же проблемой у scaleform
C#:
Vector3 Rotation = veh.GetRotation(0);
Vector3 Scale = new Vector3(2.5f, 1.0f, 0.0f);
Vector3 Position = RAGE.Game.Entity.GetOffsetFromEntityInWorldCoords(veh.Handle, 0.5f, 0.7f, 0.85f) + veh.Right();

rpm.Render3D(Position, Rotation, Scale); //Scaleform rpm;

P.S Еще не пойму почему ротация скейлформы меняется иногда некорректно, но это уже другой вопрос)
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
Код:
float currentX = 0, currentY = 0;
RAGE.Game.Graphics.GetScreenCoordFromWorldCoord(player.Position.X, player.Position.Y, player.Position.Z, ref currentX, ref currentY);
RAGE.Game.UIText.Draw($"[{player.RemoteId}] " + player.Name, new Point((int)(currentX * screenX), (int)(currentY * screenY) - 40), 1, System.Drawing.Color.White, RAGE.Game.Font.ChaletComprimeCologne, true);

Если быстро вращать камерой (или проехать на машине), то можно заметить, что определение позиции игрока отстает от его реального положения в кадре. Если прекратить движение, то всё отображается корректно
Если ты едешь на машине, то нужно брать позицию машины, а не игрока.
Потому что когда игрок в машине, то его позиция обновляется реже, это старая проблема рейджа.
 

Exception

Новый участник
6 Фев 2023
11
0
20
Ну скейлформа берет координаты именно машины, а ее вот так колбасит. А отображение из прошлого примера я записать не смог, второй игрок нужен)
 

Exception

Новый участник
6 Фев 2023
11
0
20
Щас зайду на сервер запишу тогда демо еще и по первому примеру
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
В таком случае только вероятность того, что рейдж обновляет данные не так часто, как у тебя успевает срабатывать Tick (он же render). Если это так, то только разработчик рейджа может это исправить, на вряд ли есть другие способы.
 

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
Ну скейлформа берет координаты именно машины, а ее вот так колбасит. А отображение из прошлого примера я записать не смог, второй игрок нужен)
playerPos поменяй на свою позицию, на которой ты хочешь что-либо отрисовать(у меня в неймтегах это сделано, поэтому player)

P.S На чем спидометр делал? Scaleforms? o_0


JavaScript:
if (mp.players.local.vehicle) {
                let velocity = mp.players.local.vehicle.getVelocity();
                let frameTime = mp.game.gameplay.getFrameTime();
                velocity.x *= frameTime
                velocity.y *= frameTime
                velocity.z *= frameTime
                playerPos.x += velocity.x
                playerPos.y += velocity.y
                playerPos.z += velocity.z
            }
 

E-Exception

Участник портала
3 Июл 2022
104
17
59
23
playerPos поменяй на свою позицию, на которой ты хочешь что-либо отрисовать(у меня в неймтегах это сделано, поэтому player)

P.S На чем спидометр делал? Scaleforms? o_0


JavaScript:
if (mp.players.local.vehicle) {
                let velocity = mp.players.local.vehicle.getVelocity();
                let frameTime = mp.game.gameplay.getFrameTime();
                velocity.x *= frameTime
                velocity.y *= frameTime
                velocity.z *= frameTime
                playerPos.x += velocity.x
                playerPos.y += velocity.y
                playerPos.z += velocity.z
            }
Вот умножение скорости на время кадра уже похоже исправит проблему спидометра, спасибо, сейчас попробую (Хз почему сам не догадался)
Да, спидометр возле машины отрисовываю через скейлформы
 

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
Вот умножение скорости на время кадра уже похоже исправит проблему спидометра, спасибо, сейчас попробую (Хз почему сам не догадался)
Да, спидометр возле машины отрисовываю через скейлформы
Тут именно на ускорение нужно домножать, фиксит проблему трясущихся неймтегов, когда люди идут в машине.

P.S Спидометр бомбезный, спизжу позаимствую идею(если допру как эти скейлформы делать :D)
 

E-Exception

Участник портала
3 Июл 2022
104
17
59
23
Тут именно на ускорение нужно домножать, фиксит проблему трясущихся неймтегов, когда люди идут в машине.

P.S Спидометр бомбезный, спизжу позаимствую идею(если допру как эти скейлформы делать :D)
Если ты не делаешь дрифт или какой нибудь гоночный сервер, составляющий мне конкуренцию, то я могу просто любезно отправить тебе мой скрипт для примера)
P.S На ScriptHookV есть такой же спидометр, я взял идею с него и перенес в рейдж, так что скрипт получается даже не совсем мой
 

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
Если ты не делаешь дрифт или какой нибудь гоночный сервер, составляющий мне конкуренцию, то я могу просто любезно отправить тебе мой скрипт для примера)
P.S На ScriptHookV есть такой же спидометр, я взял идею с него и перенес в рейдж, так что скрипт получается даже не совсем мой
Спасибо, попробую лучше сам в свободное время :D
 

E-Exception

Участник портала
3 Июл 2022
104
17
59
23
Код:
float currentX = 0, currentY = 0;
RAGE.Game.Graphics.GetScreenCoordFromWorldCoord(player.Position.X, player.Position.Y, player.Position.Z, ref currentX, ref currentY);
RAGE.Game.UIText.Draw($"[{player.RemoteId}] " + player.Name, new Point((int)(currentX * screenX), (int)(currentY * screenY) - 40), 1, System.Drawing.Color.White, RAGE.Game.Font.ChaletComprimeCologne, true);

Если быстро вращать камерой (или проехать на машине), то можно заметить, что определение позиции игрока отстает от его реального положения в кадре. Если прекратить движение, то всё отображается корректно
Вот демо по этому коду, прямо видно как позиция плавает по сущности...
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28