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

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


Сообщения - Shagg_E

Страницы: [1] 2 3 ... 33
1
Общие вопросы / Re: Помощь с CLEO
« : Апрель 04, 2018, 02:30:34 pm »
Дубликат опкода 018E нужен, чтобы точно избежать зависание  звука.

Дубликат - не решение. Если зависание происходит - это значит, что код написан с ошибками.

только нужно знать адрес  памяти.  Везде искал его, так и не нашел.

Адреса ищутся так. Но лучше конечно изучать уроки по реверсивной инженерии и IDA.

А вообще - стоимость авто прописана в handling.cfg у каждого авто в параметре Z.

2
Общие вопросы / Re: Помощь с CLEO
« : Март 30, 2018, 02:49:04 pm »
В варианте, где у тебя зависал звук, нежно было увеличить радиус проверки опкода 04E6. Видимо, ворота не могли "остановиться" из-за маленького радиуса.

А вот здесь:
Цитировать
018E: stop_sound 4@
018C: play_sound 3 at 1@ 2@ 3@
018E: stop_sound 4@
Последнюю строчку можно удалить(зачем дубликат?), а в опкоде 018C звук 3 изменить на 5. Звук был 3 хорош для ворот фабрики мороженого, а для гаража лучше 5(это специальный "гаражный" звук).

А сам код хорошо оптимизирован, лучше чем у меня.

3
Общие вопросы / Re: Помощь с CLEO
« : Март 25, 2018, 09:49:56 pm »
egor230>
Я тут как раз недавно помогал одному челу сделать ворота со звуком - глянь код:
https://pastebin.com/Kgr1niz4

4
Свободное общение / Re: Кто что смотрит?
« : Март 17, 2018, 10:53:20 pm »
Вау, нонейму так интересны наши вкусы, совсем не похоже на спам  :-\

5
Общие вопросы / Re: Помощь с CLEO
« : Март 15, 2018, 12:46:32 pm »
хотелось бы больше уроков по работе ida  базой.

Для вопросов по IDA можно использовать форум. Вот тема, например. Или вот еще.


Может как-то можно задать движения через память?

Через память можно. Для Physical Entity(машин, педов и объектов с физикой) есть подкласс CPhysical, где:
0x070 - вектор движения Entity, т.е.
0x070 - (float) x movement speed
0x074 - (float) y movement speed
0x078 - (float) z movement speed

6
Общие вопросы / Re: Помощь с CLEO
« : Март 14, 2018, 02:49:06 pm »
Как добавить звук выстрела? Есть таблица звуков?

Стандартными средствами никак... Может только путем замены одного из стандартных .wav в папке Audio и проигрывания его с помощью опкодов 03CF, 03D0, 03D7, 03D1, 03D2 и 040D. Но для звука выстрела этот способ крайне медлителен и неудобен.
Касаемо звуков sfx - есть опкоды 018C(проиграть одиночный SFX звук), 018D(бесконечно зацикленный SFX звук) и 018E(остановить зацикленный звук). Как видно из списков звуков в статьях по этим опкодам - звука выстрела там нет. Но есть другие, не менее интересные звуки.
Я пытался расковырять проигрывание любых sfx звуков, но пока прогресс не очень большой. Конечно, удалось найти возможность проиграть некоторые другие звуки, но звуков выстрела там по-прежнему нет.
Там же, но сообщением ниже я описал способ проигрывания некоторых реплик педами.

как вывести значение переменной на экран?

Запись
Код: Text
  1. 1@ = 5
  2. 2@ = 0.4
  3. 0ACF: show_formatted_styled_text "First: %d. Second: %.1f." time 2000 style 1 1@ 2@
выведет такой текст на экран:
Цитировать
"First: 5. Second: 0.4."

и этот текст будет на экране 2000мс(2 секунды). Т.е. %d - для integer, %.1f - для float значений.


конечно, очень писать плагины для vc, уроков для нубов нет. Прям горю желанием, сделать, что крутое.

Я и сам нуб в программировании, но мне помогли уроки с этого сайта.

7
Общие вопросы / Re: Помощь с CLEO
« : Март 02, 2018, 08:00:27 pm »
Скажите, пожалуйста, адрес памяти дающий возможность стрелять ракетам из любой машины...
...
Очень интересна директива $OPCODE понял только, что добавление новых опкодов...
Боюсь, я тут не в силах чем-то помочь  :(
Первое наверное проще "эмулировать" путем создания и передвижения ракеты "вручную"(полный скриптовый контроль), а со вторым я не сталкивался...

8
Идеи / Re: Рендер тени в Vice City
« : Март 02, 2018, 06:42:40 pm »
Ты у себя попробовал, проблема в плагине, а не в куче других модов у меня?
Да, пробовал - как и у xanser, у меня стабильный вылет не только после ареста, но и после смерти. Проблема с удалением игрока, я думаю.

9
Идеи / Re: Рендер тени в Vice City
« : Февраль 26, 2018, 03:13:48 pm »
Заметил странный глюк с shadows.asi, а именно вылет игры после того, как тебя арестовала полиция. Установлено много других модов, но стоит убрать shadows.asi - и все нормально, с ним стабильное зависание. Прошу проверить этот момент.
FrogByte куда-то пропал, у меня пока навыков недостаточно чтобы этим заниматься, а другим видимо не до этого, так что... :(

10
Общие вопросы / Re: Помощь с CLEO
« : Февраль 26, 2018, 03:08:50 pm »
Классный скрипт!

Чтобы работала бомба с детонатором, нужно выдать игроку детонатор, как оружие вроде(очень давно этим не занимался, так что могу ошибаться):
Код: Text
  1. 01B1: give_player $PLAYER_CHAR weapon 34 ammo 1

Опкод 015F - установка камеры в нужную точку.
Опкод 0160 - это точка, в которую "смотрит" камера. Вместо этого опкода можно использовать другой опкод - чтобы камера смотрела прямо на авто:
Код: Text
  1. 0158: camera_on_vehicle 0@ mode 15 switchstyle 2

Аналогичные опкоды есть для слежения за актерами и объектами.

Параметр "2" в конце означает, что камера "телепортируется" мгновенно. Чтобы она переместилась плавно, нужно поставить 1 и добавить опкод перед установкой камеры:
Код: Text
  1. 0460: set_camera_pointing_time 0.0 1500
, где 1500 - время передвижения камеры.

Например:
Код: Text
  1. 0460: set_camera_pointing_time 0.0 1500
  2. 015F: set_camera_position -817.4 -905.55 13.86 0.0 rotation 0.0 0.0
  3. 0157: camera_on_player $PLAYER_CHAR mode 15 switchstyle 1
Этот код плавно переместит камеру в нужную точку за 1.5 секунды. Камера будет указывать на игрока.

Цитировать
скрипт сам по себе небольшой, но работает он крайне медленно, думаю над его оптимизацией
К сожалению - тут я не помощник. У меня уйдут часы на разбор, столько времени у меня, увы - нет...
Но ты просто держи в голове главный принцип - нужно стараться сокращать кол-во wait-ов до одного, стремясь превратить весь скрипт в один большой цикл. Это сложно, но итоговый код будет крайне органичен, плюс этот навык поможет тебе потом в любых других языках скриптинга и программирования.

11
Общие вопросы / Re: Помощь с CLEO
« : Февраль 24, 2018, 01:29:25 pm »
Цитировать
Вот этот кусочек

Это не то. Глянь выше в этом списке - это относится к гаражам. Вернее - к машинам, находящимся в гаражах. В гараже, который ты пытался править, видимо, не было машины, поэтому ты получил вылет.

Правильный оффсет - это:
Цитировать
0x1FE    byte    (& 7) car bomb state


Вообще, в Трехе был опкод, проверяющий тип бомбы в транспорте, а также опкод, устанавливающий нужный тип бомбы на авто, но из Вайса их вырезали.
Однако в этих же статьях по этим опкодам приводятся варианты scm-функций, которые можно использовать вместо этих опкодов.
Я накатал тестовый код, который приведен в конце сообщения.


Цитировать
Также не нашел адрес памяти гаража кэма.

Он "ненастоящий". Т.е. в оригинальной игре в миссии ограбления дверь гаража открывается "вручную" путем "ручного" передвижения гаражной двери. Чтобы гараж был "рабочим" и автоматическим - нужно его обозначить("создать") и ничего двигать не придется.


Касаемо создания гаражей. Там всё просто.
Опкод 0219 создает гараж опроделенного типа(5 - покраска) в определенном месте. Если в указанной зоне есть гаражная дверь - она автоматически будет открываться/закрываться.

Самое важное - это правильно обозначить координаты.

Возьмем один из стандартных гаражей:
Цитировать
0219: $681 = create_garage_type 5 door -914.129 -1263.54 10.706 to -906.3 -1266.9 14.421 depth -907.137 -1246.626


$681 - хэндл гаража. В принципе он нужен лишь для принудительного открытия/закрытия или удаления гаража.

5 - тип гаража.

Первые xyz координаты - это передний левый нижний угол гаража:


Вторые xyz координаты - это передний правый верхний угол гаража:


Последние xy координаты - это "глубина", т.е. задний левый угол гаража:


Пример, "активирующий" гараж Кэма, я также привел ниже.

Но ВНИМАНИЕ!
Гаражи нельзя создавать в CLEO скрипте, если ты не собираешься сразу их удалять, т.к. они не удаляются сами по себе и засоряют файлы сохранения также, как пикапы и парковки авто. Если ты 2 раза "создашь" гараж в одном месте - это будут 2 разных гаража в одном месте!

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


Вот код, который при вводе чита "CBNPNS" ставит бомбу 1 типа на машину игрока, если тот сидит в транспорте и никакой бомбы в авто не установлено. Также активируется гараж Кэма. В конце идут необходимые scm-функции.
Этот же код представлен в аттаче.

Код: Text
  1. {$CLEO .cs}
  2.  
  3. //-------------MAIN---------------
  4. thread 'CBNPNS'
  5.  
  6. :CBNPNS_01
  7. wait 0
  8. if and
  9.    Player.Defined($PLAYER_CHAR)
  10. 0ADC: test_cheat "CBNPNS"
  11. jf @CBNPNS_01
  12. if
  13. 00E0:   player $PLAYER_CHAR driving
  14. jf @CBNPNS_02
  15. 03C1: 0@ = player $PLAYER_CHAR car_no_save
  16. // car struct + 0x1FE (byte & 7) - car bomb state
  17. //
  18. //0 -   CARBOMB_NONE               No bomb
  19. //1 -   CARBOMB_TIMED              Inactive timed bomb, can be obtained from garage type 2
  20. //2 -   CARBOMB_ONIGNITION         Inactive ignition bomb, can be obtained from garage type 3
  21. //3 -   CARBOMB_REMOTE             Remote detonation bomb, can be obtained from garage type 4
  22. //4 -   CARBOMB_TIMEDACTIVE        Active timed bomb, activated from bomb type 1
  23. //5 -   CARBOMB_ONIGNITIONACTIVE   Active ignition bomb, activated from bomb type 2
  24. //
  25. if
  26. 0AB1: call_scm_func @opcode_0228 2 car_handle 0@ bomb_stage 0 // check if car bomb state == 0
  27. jf @CBNPNS_02
  28. 0AB1: call_scm_func @opcode_0242 2 car_handle 0@ bomb_type 1 // sets car bomb type 1
  29.  
  30. :CBNPNS_02
  31. 0219: 15@ = create_garage_type 5 door -836.738 -915.016 9.8 to -836.738 -898.316 13.4 depth -853.238 -905.016
  32. 0ACE: show_formatted_text_box "~h~The ~t~bomb ~h~has been ~x~installed ~h~and ~t~Kam's garage ~h~has been ~x~activated."
  33. jump @CBNPNS_01
  34.  
  35.  
  36. //-------------------------------------------------------------------------------------
  37. // SCM FUNCTIONS:
  38. //-------------------------------------------------------------------------------------
  39.  
  40. :opcode_0228
  41. // 0@ - input param (car handle)
  42. // 1@ - input param (bomb stage)
  43. 05E7: 0@ = car 0@ struct
  44. 0@ += 0x1FE  // car bomb offset
  45. 05E0: 0@ = read_memory 0@ size 1 virtual_protect 0
  46. 05F9: 0@ = 0@ AND 7
  47. 003B:   0@ == 1@  // check bomb stage in car against input
  48. 05F6: ret 0
  49.  
  50. :opcode_0242
  51. // 0@ - input param (car handle)
  52. // 1@ - input param (bomb stage)
  53. 05E7: 0@ = car 0@ struct
  54. 0@ += 0x1FE  // car bomb offset
  55. 05E0: 2@ = read_memory 0@ size 1 virtual_protect 0  // store previous value
  56. 05F9: 1@ = 1@ AND 7  // keep only the first three bits from input param
  57. 05F9: 2@ = 2@ AND 0xF8  // exclude the first three bits in stored value
  58. 05FA: 2@ = 2@ OR 1@  // replace the first three bits of stored value with input param
  59. 05DF: write_memory 0@ size 1 value 2@ virtual_protect 0  // set to new value
  60. 05F6: ret 0

12
Общие вопросы / Re: Помощь с CLEO
« : Февраль 21, 2018, 09:44:20 pm »
нашел только это
+ 0x25 - [1 байт] - тип бомбы (3 = дистанционный, 2 = зажигание двигателя, 1 = время, 0 = нет)
но как использовать? не знаю.
+0x25 - это смещение от какого-то адреса памяти. От какого адреса - это зависит от того, откуда взята эта информация.

13
Общие вопросы / Re: Помощь с CLEO
« : Февраль 15, 2018, 10:44:45 pm »
Цитировать
На питоне можно писать плагины или только на с++?
Не знаю - не пользуюсь им(питоном). Плагины лучше писать строго на c++ . Ведь когда ты забросишь Вайс - знания по c++ останутся, а этот язык будет актуален еще долгие годы.

Цитировать
Есть проблема, она постоянно снижается, не удерживая высоту. Подскажите, пожалуйста, как решить  эту проблему?
Скорее всего проблема в опкоде автопилота(04D2), но не уверен(не пользовался им). Я предпочитаю задавать скорость и направление движения "вручную"(задавая точные значения в адреса памяти).

14
Общие вопросы / Re: Помощь с CLEO
« : Февраль 10, 2018, 04:55:47 pm »
есть вопрос. Как использовать такие адреса памяти?
0x703997
Выбранный индекс меню [байт]. Сообщение GTAForums
•   00 - Статистика
•   01 - Начало игры
•   03 - Настройка звука
•   04 - Дисплей
•   05 - Язык
•   06 - Карта

Читать его, чтобы узнать, в каком меню находится в данный момент игрок. Но это имеет смысл только в плагинах, поскольку CLEO не работает в меню. Или в MMS.

15
Общие вопросы / Re: Помощь с CLEO
« : Февраль 09, 2018, 06:55:50 pm »
egor230
Опкод 035C нужно применять в цикле(каждые 0 ms).

Constantine
Также замечу, что это подфорум по Вайсу. По СА здесь.

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