Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Saint

Страницы: [1] 2
1
больше спасибо за ваши ответы, очень помогли, буду теперь думать что делать...

2
Значит, дело в наличии объекта в "\data\object.dat", как я писал выше.

скорее всего из-за того что он не прописан в файле data\maps\generic.ide

но как решить задачу, не редактируя файлов игры вот в чём вопрос

3
Точно не помню(давно этим не занимался), но вроде опкод 0107 предназначен для объектов из "\data\object.dat", для всех остальных же есть опкод 029B(могу ошибаться и вполне возможно, что и для 029B необходимо, чтобы объект был прописан в "\data\object.dat").

не тот, не тот опкод не могут создавать объекты норм с коллизией чтобы они были как часть карты, вот я и спрашиваю как это правильно делать для примера я выбрал модель 3064


4
Это какие-то особенные проблемы мультиплеера, поскольку у объекта 3064 есть коллизия.

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

у меня объекты в данный момент создаются чрез опкод 0107, большинство из них создаются именно так без коллизии, поэтому я и спрашиваю как правильно создавать?

5
вот есть созданный объект



на стать на него нельзя



вопрос как правильно его создать?

6
Общие вопросы / Re: Помощь с CLEO
« : Декабрь 08, 2018, 03:04:39 am »
спасибо большое за информацию, разобрался, всё работает

7
Общие вопросы / Re: Помощь с CLEO
« : Декабрь 03, 2018, 06:32:18 pm »
не могу создать

только код не в клео а С++

// const SCRIPT_COMMAND scatter_particles = { 0x039D, "ifiiiiffffff" }; // scripting.h

ScriptCommand(&scatter_particles, iType, fSize, byteR, byteG, byteB, iTime, PosX, PosY, PosZ, speedX, speedY, speedZ); // = { 0x039D, "ifiiiiffffff" };

в игре ничего нет

8
Общие вопросы / Re: Помощь с CLEO
« : Декабрь 02, 2018, 12:26:17 am »
как правильно использовать опкоды 0437 и 039D

9
Скриптинг / Re: CLEO: Скрипт Ходьбы
« : Август 25, 2018, 03:58:38 pm »
ещё раз спасибо, очень полезная информация =) сам бы наверное долго разбирался.

10
Скриптинг / Re: CLEO: Скрипт Ходьбы
« : Август 24, 2018, 08:41:31 pm »
про уменьшение значений - это может быть из PS2 т.к. там управление на аналогах и типо можно сильно нажать или чуть чуть

update: большое спасибо за помощь, разобрался что к чему =)

11
Скриптинг / Re: CLEO: Скрипт Ходьбы
« : Август 24, 2018, 08:37:28 pm »
Ну вообщет чтобы игрок ходил надо удерживать Левый Альт + W
но альт я так и не нашел в коде поэтому и не пойму нифига
ещё да в скрипте можно целиться на правую кнопку мышки

12
Скриптинг / CLEO: Скрипт Ходьбы
« : Август 19, 2018, 11:15:36 pm »
есть такой вот код


{$CLEO .cs}

//-------------MAIN---------------
0000NOP 
10
@ = // integer values 
10@ *= // integer values (never used in VC or GTA 3) 
10@ += 8240304 // integer values // 7DBCB0   CPad pads[2]
11@ = // integer values 
11@ *= // integer values (never used in VC or GTA 3) 
11@ += 8240304 // integer values 
12@ = 10 // integer values 
12@ *= // integer values (never used in VC or GTA 3) 
12@ += 8240304 // integer values 
13@ = 11 // integer values 
13@ *= // integer values (never used in VC or GTA 3) 
13@ += 8240304 // integer values 
15@ = Actor.EmulateFromPlayer(0)

:
NONAME_98
wait 0 
05E0
0@ = read_memory 5600778 size 4 virtual_protect 0 // 55760A
if and
80E0:   not player 0 driving 
   Player
.Controllable(0)
  
0@ == 6850112 // integer values    //    688640     float fMinHeight      dd -100.0
00E1:   player 0 pressed_button 6     // Key Target
else_jump @NONAME_169 
05DF
write_memory 5600778 size 4 value 10541348 virtual_protect 1 // 55760A   // A0D929

:NONAME_169
if and
  
0@ == 10541348 // integer values // A0D924     .bss:00A0D924 ?? ?? ?? ??                       flt_A0D924      dd ?
80E1:   not player 0 pressed_button 6   // Key Target
else_jump @NONAME_212 
05DF
write_memory 5600778 size 4 value 6850112 virtual_protect 1 // 55760A flt_A0D924 // 688640   float fMinHeight      dd -100.0

:NONAME_212
05E0
5@ = read_memory 8801382 size 1 virtual_protect 1  // 864C66   ActiveKeyState
if and
80E0:   not player 0 driving 
   Player
.Controllable(0)
  
5@ == 255 // integer values 
else_jump @NONAME_367 
if 
00E1:   player 0 pressed_button 8  // W
else_jump @NONAME_283 
05DF
write_memory 10size 2 value 85 virtual_protect 0 

:NONAME_283
if 
00E1:   player 0 pressed_button 9 // S
else_jump @NONAME_311 
05DF
write_memory 11size 2 value 85 virtual_protect 0 

:NONAME_311
if 
00E1:   player 0 pressed_button 10  // A
else_jump @NONAME_339 
05DF
write_memory 12size 2 value 85 virtual_protect 0 

:NONAME_339
if 
00E1:   player 0 pressed_button 11  // D
else_jump @NONAME_367 
05DF
write_memory 13size 2 value 85 virtual_protect 0 

:NONAME_367
jump 
@NONAME_98 



может кто помочь объяснить как он работает и преобразовать его код С++

13
Ой, я олень, сори - говорю же: давно не юзал это.

В общем, OutCoords - это нужные тебе координаты экрана(высчитывать разрешение экрана игрока дополнительно не надо), а вот width и height уже хз что такое. Меня спутала база idb, которую я сейчас юзаю.

Короче - как-то так:
Код: C++
  1.                 float MyCoords[3]; // наши 3d координаты
  2.                 float OutCoords[3]; // будущие X и Y координаты экрана, а также расстояние до 3d точки от камеры
  3.                 float width; // хз что
  4.                 float height; // хз что
  5.                 MyCoords[0] = 1245.0; // записываем свой X(просто пример)
  6.                 MyCoords[1] = 657.0; // записываем свой Y(просто пример)
  7.                 MyCoords[2] = 33.0; // записываем свой Z(просто пример)
  8.                 _CalcScreenCoors(&MyCoords[0], &OutCoords[0], &width, &height, 1);
  9.                 // теперь в переменных OutCoords[0] и OutCoords[1] уже записаны действительные координаты экрана игрока, юзаем их по надобности
Также эта функция может возвращать bool значение, которое true, если 3d точка примерно в зоне видимости экрана, и false - если нет, т.е. ты сразу можешь юзать функцию, как условие.

благодарю, разобрался.

14
всё равно оно как-то не верно работает


даже если использовать стандартную функцию https://msdn.microsoft.com/en-us/library/windows/desktop/dd162498(v=vs.85).aspx

15
Высчитать координаты экрана по мировым 3d координатам можно этой функцией:
70CE30                             ; CSprite::CalcScreenCoors(RwV3d const&, RwV3d*, float *, float *, bool, bool)

Первый RwV3d - указатель на твои мировые 3d координаты. Второй RwV3d - хз что.
В следующие два указателя float будут записаны координаты из расчета разрешения 640x480, так что их нужно еще будет перемножать на ширину экрана игрока/640(для ширины) и на высоту экрана игрока/480(для высоты, ессно).
Последние оба bool ставь на единицы.
В СА не тестил, в ВС аналогичная функция работает.

пример использования?

Страницы: [1] 2