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

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


Сообщения - Shagg_E

Страницы: [1] 2 3 ... 35
1
О, зачет! Мало кто уделяет этому внимание!

2
Концепцией мода является сделать родной город с передачей восприятия местности, чтобы каждый уголок воспринимался так же, как в реальности
У тебя в реальности советская ГАИ разъезжает по городу?  ;D

Если серьезно, то здания годные, будет интересно следить за проектом!

3
Скриптинг / Re: Прицепить звук к объекту.
« : Август 05, 2018, 08:41:21 pm »
Звук идет с какими-то перерывами, это хреново.

1. В VC юзабельны только 2 слота wav(1 и 2)
2. Указывать положение wav можно только перед его воспроизведением. Если поменять положение во время воспроизведения - ничего не произойдет.
3. Wav продолжает проигрываться с той громкостью и в тех каналах, в каких он начал проигрываться. Т.е. если звук начинает воспроизводиться "с правой стороны вдалеке"(в правом канале с уменьшенной громкостью) - он таким и останется, даже если повернуть камеру в другую сторону(т.е. будет "вечно" звучать "справа").
4. Для поезда лучше заменить один из sfx звуков и воспроизводить их:
Vice City
Id Enum SFX[3] Range Notes
1 SOUND_PART_MISSION_COMPLETE 364-366 unlimited blip
3 SOUND_POLICE_CELL_DOOR_CLUNK 143 40.0 metal gate
5 SOUND_GARAGE_DOOR_CLUNK 102 80.0 garage door finished open/close
7 SOUND_RACE_START_3 364-366 unlimited blip
8 SOUND_RACE_START_2 364-366 unlimited blip
9 SOUND_RACE_START_1 364-366 unlimited blip
10 SOUND_RACE_START_GO 367-369 unlimited high pitch blip
12 SOUND_SHOOTING_RANGE_TARGET_HIT 162-164 50.0 bullet hit ground, random selection between 162 and 164
13 SOUND_AMMUNATION_BUY_WEAPON 361-363 unlimited successful select
14 SOUND_AMMUNATION_BUY_WEAPON_DENIED 361-363 unlimited unsuccessful select
16 SOUND_IMRAN_ARM_BOMB 178 unlimited "Demolition Man" and "Trojan Voodoo" arm bomb
18 SOUND_WILLIE_CARD_SWIPE 334 40.0 "No Escape?" card swipe
19 SOUND_MALE_AMBULANCE_OUCH intermittent male pain
20 SOUND_FEMALE_AMBULANCE_OUCH intermittent female pain
35 SOUND_SEAPLANE_LOW_FUEL 465 1000.0 "Dildo Dodo" Skimmer low fuel ping
52-54 162-164 50.0 bullet hit ground, random selection between 162 and 164
56 267 80.0 ringing phone
57 147 60.0 glass breaking
58 147 60.0 glass breaking
59 146 60.0 glass breaking
60 148-151 55.0 glass breaking, random selection between 148 and 151
61 327 60.0 boxes destroyed
62 328 60.0 boxes destroyed
63 136-140 60.0 metal sheet explosion, random selection between 136 and 140
64 33 60.0 tire hit ground
65 339 60.0 beach ball
66 156-157 20.0 gun shell drop, dependent on what collision the player is currently standing on

Либо можно попробовать юзать зацикленные sfx:
Vice City
Id Enum SFX Range Notes
0 SOUND_BANK_ALARM_LOOP 470 80.0 alarm
2 SOUND_POLICE_CELL_DOOR_SLIDING_LOOP 176 80.0 gate open/close
4 SOUND_GARAGE_DOOR_SLIDING_LOOP 176 80.0 gate open/close
6 SOUND_SNORING_LOOP 471 6.0 "No Escape?" snoring
11 SOUND_SHOOTING_RANGE_TARGET_MOVING_LOOP 331 40.0 Moving shooting range target
36 SOUND_NEW_BUILDING_BAR_1 472 80.0 Greasy Choppers "Alloy Wheels of Steel"
37 SOUND_NEW_BUILDING_BAR_2 473 80.0 Greasy Choppers "Messing with the Man"
38 SOUND_NEW_BUILDING_BAR_3 474 80.0 Greasy Choppers "Hog Tied"
39 SOUND_NEW_BUILDING_BAR_4 475 80.0 Greasy Choppers (unused)
40 SOUND_NEW_BUILDING_MALIBU_1 476 80.0 Malibu Club night, will not play if Malibu.mp3 is playing in the background
41 SOUND_NEW_BUILDING_MALIBU_2 477 80.0 Malibu Club day, same behavior as index 40
42 SOUND_NEW_BUILDING_MALIBU_3 478 80.0 Malibu Club evening, same behavior as index 40
43 SOUND_NEW_BUILDING_STRIP_1 479 80.0 Pole Position night, will not play if Strip.mp3 is playing in the background
44 SOUND_NEW_BUILDING_STRIP_2 480 80.0 Pole Position day, same behavior as index 43
45 SOUND_NEW_BUILDING_STRIP_3 481 80.0 Pole Position evening, same behavior as index 43
46 SOUND_NEW_BUILDING_CHURCH 482 80.0 South Washington Beach church
51 SOUND_NEW_WATERFALL 316 80.0 Fountain

НО! Там тоже нельзя менять положение звука, когда он уже начал воспроизводиться, так что для такого варианта нужно расковырять массив зацикленных звуков, как я описал в первом сообщении в этой теме.

4
Скриптинг / Re: Прицепить звук к объекту.
« : Август 05, 2018, 04:52:36 am »
А делов-то на две строки ))

 ;D Я не так тебя понял: думал, что ты это уже пробовал и тебя это не устраивает из-за сильного разброса партиклов, как огненный пердеж в этом видео.
Вариант DK делает по сути то же самое(только без скриптовой задержки), так что проблема разброса партиклов сохраняется. Горящий автомобиль имеет ту же проблему, к сожалению, так что мой вариант тоже не айс. В то же время, при сокращении "времени жизни"(кол-ва кадров) у партикла подобный "аттач" будет выглядеть более-менее нормально(если вспомнить дым из выхлопной трубы автомобиля).

P.S. Эх, в SA такой проблемы нет: там партиклы реализованы на порядок лучше...

P.P.S. Есть еще вариант: помимо сокращения кол-ва кадров, можно задавать партиклам скорости движения, идентичные скоростям движения "родительского" entity, либо исходя из разницы положения партикла из текущего и предыдущего игрового фрейма, тогда итоговоый "дым" или "огонь" будет выглядеть очень близко к идеальному даже на больших скоростях.

5
Скриптинг / Re: Прицепить звук к объекту.
« : Июль 12, 2018, 06:13:34 pm »
Если в IDE ты прикрепил 2dfx дым, и он работает лишь тогда, когда ты ставишь объект в IPL, а через SCM - нет, то пока это никак не реализовать. У меня это записано в списке идей для новых опкодов, но когда это "случится" - пока сказать не могу(времени катастрофически не хватает).
Если ты кодер, то вот мои мысли, где копать:
1)2dfx-партиклы, как и зацикленные sfx-звуки(опкоды 018D и 018E) должны иметь свои массивы, по типу горящего огня(есть кстати подозрение, что для дыма есть отдельный массив, как у огня).
2)В этих массивах должны быть смещения с координатами партикла или звука.
3)Можно динамически менять эти координаты.
4)???
5)PROFIT!
Примерно на этом принципе я и планирую запилить аттач звуков и партиклов к entity или их частям, но я предлагаю не ждать меня, а попробовать своими силами, если спешишь.

6
Где то еще должен быть пункт который добавляет к источнику lens-flare
Это уже в 2dfx. PointLight - это чисто сам свет от источника. Т.е. то, что освещает педов, авто, катсценовые и динамические объекты.
Так же у источников есть тот самый 2dfx + "тень"(отрисовка текстуры света на горизонтальной поверхности). Это уже в другом массиве(ах).

Это насколько я это всё понимаю(могу ошибаться, но вроде всё верно).

7
CPointLights:

0x9751B0 - количество PointLights
0x7E4FE0 - начало массива PointLights (максимум - 32 элемента)
каждый PointLight состоит из 44(0x2С) байт.

Структура совпадает с GTA3, я просто добавлю пояснения.

0x00 [float] - x coord
0x04 [float] - y coord
0x08 [float] - z coord
0x0С [float] - x direction
0x10 [float] - y direction
0x14 [float] - z direction
0x18 [float] - дальность света
0x1С [float] - red(0.0-1.0)
0x20 [float] - green(0.0-1.0)
0x24 [float] - blue(0.0-1.0)
0x28 [byte] - тип света(0 - светит во все стороны из центра, 1 - directional(фары), светят строго по вектору, 2 - не используется(вроде), становятся слабее, если источников этого типа много, 3-4 - хз, не освещают динамику, скорее всего нужны для источников, которые кроме 2dfx никак не проявляют себя)
0x29 [byte] - тип "дымки" вокруг света(0 - нет "дымки", 1 и 2 - есть)
0x2A [bool] - генерация дополнительной тени авто игрока вблизи источника света(0 - нет, 1 - да), работает только для типа света 0, при параметре LightShd в timecyc.dat больше 0
0x2B [byte] - не используется(пустышка)

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

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

В общем, 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 - если нет, т.е. ты сразу можешь юзать функцию, как условие.

9
Я не внимательно прочел, и дал функцию для SA.
Для вайса вот:
Код: C++
  1. 5778B0           ; char __cdecl CSprite::CalcScreenCoors(const RwV3d *posn, RwV3d *out, float *w, float *h, bool checkMaxVisible)

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

Ну, объявляешь функцию как-то так:
Код: C++
  1. auto            _CalcScreenCoors        = (unsigned int (__cdecl*)(float*, float*, float*, float*, bool))0x5778B0;

затем юзаешь так:
Код: C++
  1.                 float MyCoords[3]; // наши 3d координаты
  2.                 float OutCoords[3]; // хз зачем, не особо ковырял функцию и не разобрался
  3.                 float width; // будущая x координата экрана
  4.                 float height; // будущая y координата экрана
  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.                 // теперь в переменных width и height уже записаны координаты экрана, если бы разрешение было бы 640x480
  10.                 width = width/640*(*(signed int *)(0xA0FD04));
  11.                 height = width/480*(*(signed int *)(0xA0FD08));
  12.                 // теперь в переменных width и height уже записаны действительные координаты экрана игрока, юзаем их по надобности

Следует отметить 2 вещи:
1) Я говнокодер, и можно сделать лучше
2) Этот код я не тестировал(я тестил эту функцию давно и на CLEO, а не в C++), но главное - передать смысл(надеюсь, мне это удалось)

10
Общие вопросы / Re: Помощь с CLEO
« : Июнь 03, 2018, 02:10:03 am »
Попробуй при создании актера заменить 4 pedtype на другой(от полицейского или члена банды). Либо сделать "цель" не объектом, а актером.
Если второе сработает - сделай актера-цель невидимым, затем помести этого невидимого актера в невидимый(модель #NULL) или маленький(модель кастета) объект и отключи у этого объекта коллизию, чтобы этот летающий невидимый актер никому не мешал.

11
Общие вопросы / Re: Помощь с CLEO
« : Июнь 02, 2018, 11:45:22 pm »
Я планировал сделать свой режим стрельбы(в т.ч. - с выбором 3d точки цели для актера), но это будет еще очень не скоро... Пока же ничем с этим помочь не могу  :(

12
Общие вопросы / Re: Помощь с CLEO
« : Июнь 02, 2018, 10:49:11 pm »
к большому сожалению, что только не делал происходит вылет.

Я уже приводил пример работы с выводом переменных на экран. Для float вроде нужно писать %.1f
как заставить актера стрелять в определенную точку?

Хз, пока сам не разобрался... Думаю, где-то в исходниках VCMP лежит ответ...

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

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

14
0x02 можно назвать m_bTargetExists

а 0x2D  _pad2D[3] - это просто пустышка, получается?


UPD: черт.. Оказывается, в марте для вайса уже всё разобрали. Я с лета не обновлял sdk ;D

UPD2: Вау, теперь есть удобный установщик sdk!

15
Shagg_E, структура, скорее всего, идентична той, что в GTA3.
https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_III/game_III/CFire.h
Да, скорее всего. Я доковырял - вроде совпадает

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