#51 05-07-2008 14:57

Seemann
Registered: 07-08-2006
Posts: 2,114

Re: Новые описания для опкодов

VcSaJen wrote:

ещё тут радиус непричём, тут тип

а типы известны?

Offline

#52 10-07-2008 05:11

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Новые описания для опкодов

Я уже тестировал, но txt файл остался на другом компьютере. Сейчас ещё раз протестирую и обновлю пост. Точно помню, что есть очень маленький взрыв, с большим номером.


[small][/small]

Offline

#53 10-07-2008 07:34

Yarik
Registered: 22-02-2008
Posts: 173
Website

Re: Новые описания для опкодов

Опкод 0986 у меня подписан как unknown_fires_stuff До конца я так и не понял его назначения, делал один скриптик (когда садишся на мото - он загоряется 0325: 2@ = create_car 1@ fire + по циклу создавал "горящий след" на земле за ним) До использования 0986 - мото горел только визуально (т.е. без повреждений) и "след" создавался только из 60ти огней - далее они не исчезали а 61й уже не появлялся ... Когда прописал 0986 в цикл - огонь на мото начал реально гореть и через опред. время мото взрывался, а "след" сам "стирался" и перезаписывался. Как по мне то данный опкод чтото типа "рестарта" для огня ...

Last edited by Yarik (10-07-2008 07:36)

Offline

#54 10-07-2008 08:34

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Новые описания для опкодов

Потестил, и сделал HTML-файл с описанием взрывов и скриншоты, сделанные спустя 400мс после взрыва cool . Можно добавить в папку help SB или скомпилить в спраку CHM.
Запаковал в архив и прикрепил к сообщению.


[small][/small]

Offline

#55 11-07-2008 16:40

yelmi
Registered: 10-12-2006
Posts: 134
Website

Re: Новые описания для опкодов

VcSaJen wrote:

Потестил, и сделал HTML-файл с описанием взрывов и скриншоты, сделанные спустя 400мс после взрыва cool . Можно добавить в папку help SB или скомпилить в спраку CHM.
Запаковал в архив и прикрепил к сообщению.

Добавлю в Sanny Builder Help/Документация по SCM/GTA SA

Offline

#56 21-04-2009 16:14

Alien
Registered: 12-10-2008
Posts: 564

Re: Новые описания для опкодов

03AB: unknown_car 0@ flag 1

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

03AB: set_car 0@ stability_on_turning_movements 1

Там еще много анноунов такого типа

039C: unknown_car 379@(253@,16i) flag 1 
03AB: unknown_car 95@ flag 1 
03ED: unknown_car 379@(253@,16i) flag 1 
0428: unknown_car 35@ flag 1 
0466: unknown_car 39@ flag 1 
048B: unknown_car 35@ flag $8224 
04BD: unknown_car 72@ flag 1 
0594: unknown_car 289@ flag 0 
0714: unknown_car 38@ flag 1 
073B: unknown_car 62@ flag 1 
08F2: unknown_car 36@ flag 0 
08F3: unknown_car $198 flag 0 
0957: unknown_car 95@ flag 0 
0A21: unknown_car 72@ flag 0

Стало на 1 меньше=)

Offline

#57 23-11-2009 12:17

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Новые описания для опкодов

Потестил опкоды для поездов:
1.

06DA: unknown_trains_flag

Будучи приведённым в любом из запущенных скриптов, удаляет из памяти сведения о поездах, созданных всеми запущенными скриптами. То есть назвать можно так:

06DA: remove_references_to_all_defined_trains

2.Название проверки

09E3:   train 0@ traveling_clockwise

не совсем корректно. Если при создании поезда командой

06D8: 0@ = create_train_at -1925.6472 278.1923 19.486 type 15 direction 1

параметр "direction" был равен 1, то поезд при следовании вдоль маршрута будет двигаться по точкам в том порядке, в котором они перечислены в соответствующем файле маршрута (tracks.dat - tracks4.dat). При параметре, равном 0, поезд будет двигаться в обратном направлении. Проверка 09E3 возвращает "true" в том случае, если параметр "direction" был равен 1. Так что более точное название:

09E3:   train 0@ direction==1

Offline

#58 23-11-2009 13:51

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Новые описания для опкодов

09E3:   train 0@ on_forward_direction

GIMS developer

Offline

#59 16-07-2013 14:06

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Новые описания для опкодов

Seemann wrote:

а исправления ошибок можно сюда.

У меня есть варианты исправлений почти для всех опкодов, воспроизводящих анимацию для актёра. Я много работал с этими опкодами, поэтому знаю, как работают некоторые параметры.

0393: actor 215@ perform_animation "POOL_SHORT_SHOT" at 248@ times_normal_rate

Этот опкод лучше перефразировать так:

0393: actor $PLAYER_ACTOR animation "POOL_SHORT_SHOT" set_speed 1.0
04ED: load_animation "LOWRIDER"
04EE: animation "LOWRIDER" loaded
04EF: release_animation "LOWRIDER"

Заменить на:

04ED: load_IFP_file "LOWRIDER"
04EE: IFP_file "LOWRIDER" loaded
04EF: release_IFP_file "LOWRIDER"
0605: actor -1 perform_animation "M_SMKLEAN_LOOP" IFP "LOWRIDER" framedelta 4.0 loop 1 lockX 0 lockY 0 lockF 0 time -1 // versionA
0812: AS_actor -1 perform_animation "LRGIRL_IDLELOOP" IFP "LOWRIDER" framedelta 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1  // versionB
088A: actor 34@ perform_animation "RAIL_FALL" IFP "SWAT" 8.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1 disable_force 0 disable_lockZ 1
0A1A: actor 88@ perform_walk_animation "HIKER_POSE_L" IFP "MISC" framedelta 4.0 loopA 0 lockX 0 lockY 0 lockF 1 -1 ms // versionC

В этих опкодах нужно посоветоваться, как лучше переименовать. Я распишу за что отвечает каждый параметр.
Actor, animation и IFP - думаю понятно, здесь всё правильно описано.

framedelta нужно переименовать в interpolation. Этот параметр отвечает за плавность перехода в анимацию (и за плавность выхода из анимации или перехода в другую анимацию). Чем больше этот параметр - тем быстрее и заметнее переход. Чем меньше параметр - тем плавнее и красивее. Обычно лучше ставить его в районе 4.0-15.0. Если поставить 10000.0, то актёр моментально примет начальную позу анимации, т.е. вообще без перехода.

loop - здесь всё ясно, цикл. lockX и lockY нужно поменять местами. Они отвечают за перемещение коллизии игрока вместе с анимацией (Root-костью в анимации). Т.е. если выставить lockX = 1 то коллизия игрока будет двигаться вместе с анимацией вперёд-назад (по оси Y относительно игрока); если выставить lockY = 1, то коллизия игрока будет двигаться вместе с анимацией влево-вправо (по оси X относительно игрока). Поэтому нужно бы их поменять местами. Ещё замечен следующий факт: если выставить только lockY = 1, а lockX оставить равным нулю, то перемещения игрока вместе с анимацией не будет ни по одной из осей. Проще говоря у нас 3 варианта - без перемещения коллизии (0, 0), с перемещением по оси Y (1, 0) и с перемещением по осям X и Y (1, 1).

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

У нас есть 4 опкода воспроизводящих анимации для актёров (не считая комбинированных с прикреплением объектов и т.п.). Они отличаются между собой некоторыми нюансами. Есть 3 опкода с одинаковыми параметрами и один содержащий те же параметры + 2 дополнительных параметра. Первые 3 опкода можно разделить по версиям (A, B, C), как это сделано комментариями к опкодам.
versionA (0605): Отличительная особенность опкода состоит в том, что анимация воспроизводится только если актёр находится на земле. Если во время выполнения анимации актёр слетел с поверхности, т.е. оказался в воздухе, то воспроизведение анимации прервётся.
versionB (0812): Тоже самое, что и versionA, только работает и в воздухе. Т.е. нет зависимости от того, в воздухе актёр или нет, анимация будет работать в любом случае, даже под водой.
versionC (0A1A): Имеет ту же особенность, что и versionA - не работает в воздухе. Имеет дополнительную особенность - выполняется относительно кости Root актёра и может выполняться параллельно другой анимации. К примеру, если включить lockX и lockY, бежать, и воспроизвести анимацию на игроке, то перемещение Root в анимации будет прибавляться к бегу. Если lockX и lockY отключить, перемещение будет только визуальным, без перемещения коллизии актёра. При этом анимацию можно сбить, например, совершив удар (ЛКМ).

Ну и последний опкод, содержащий дополнительные параметры, 088A.
Первый параметр описан как disable_force. На самом деле этот параметр отвечает за возможность воспроизведения анимации в воздухе. Если выставить 1, то опкод будет равносилен опкоду 0812 (versionB), если 0, то, соответственно, опкоду 0605 (versionA).
Второй параметр описан как disable_lockZ, что опять же неверно. Если выставить параметр равным 1, то по окончанию анимации коллизия актёра будет установлена в то место, где закончилась анимация, но это - если lockX и lockY равны нулю. Примечательно, что на ось Z это тоже работает. Т.е. если в анимации актёр смещается ещё и по оси Z, то в конце анимации коллизия актёра будет установлена точно в то место, где анимация закончилась, по всем трём координатам. Судя по всему, алгоритм использует разницу между начальным положением и конечным положением, а в конце анимации смещает коллизию на заранее вычисленную разницу. Из-за этого, если использовать параметры lockX и lockY, актёр будет дополнительно смещён в конце анимации на ту самую разницу, о которой я упомянул предложением ранее. Если отключить параметр disable_lockZ, то опкод будет работать полностью точно так же, как и опкоды версии A и B, в зависимости от параметра disable_force.
Параметр disable_force лучше переименовать в allow_air или что-то в этом роде, а disable_lockZ - пока что не могу придумать, как изъяснить его коротко и понятно.

Если кого-то интересует синхронизация в SA-MP, то воспроизведение анимации опкодом 0812 даёт возможность другим игрокам видеть вашу анимацию в SA-MP'е, при двух условиях:
1. Анимация находится в оригинальных игровых IFP-файлах. Т.е. если создать свой IFP-файл, или добавить свою анимацию к уже существующему игровому IFP-файлу, то другие игроки их не увидят, даже если у них есть эта анимация тоже. Видимо, SA-MP использует список всех игровых анимаций для синхронизации.
2. IFP-файл, из которого воспроизводится анимация, загружен у других игроков. Обычно SA-MP сам загружает нужный IFP-файл при 1-2 воспроизведениях из этого IFP.

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

Ну, вроде всё рассказал о анимациях. Думаю, кое-что из моих описаний можно было бы в справку SB добавить smile Но для начала нужно придумать названия к тем параметрам, к которым я названия придумать не смог. Думаю, у тех, кто лучше разбирается в инглише, получится грамотно назвать их.

Last edited by Voron295 (16-07-2013 14:50)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#60 17-07-2013 18:13

RitrS
From: Downtown
Registered: 11-07-2013
Posts: 62
Website

Re: Новые описания для опкодов

@Voron295 -
4 года спустя smile)

Offline

#61 17-07-2013 18:15

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

Re: Новые описания для опкодов

Так разработка СБ возобновилась, почему бы нет?

Offline

#62 17-07-2013 22:41

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Новые описания для опкодов

RitrS wrote:

@Voron295 -
4 года спустя smile)

Изначально этот пост был в теме "Sanny Builder v3.xx". Seemann его перенёс сюда.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#63 24-10-2013 03:15

Ghost Bear
Registered: 25-08-2008
Posts: 4

Re: Новые описания для опкодов

Не уверен, что подходящая тема, однако лучше, чем создавать новую: Ни у кого не возникало идеи написать копилятор для оригинальных DMA-шных .sc скриптов, что утекли с ios версией гта 3? Выглядят они в стиле BASIC'а и гораздо комфортнее в написании. Верхом успеха тут будет если получится из всех оригинальных .sc собрать байт в байт копию main.scm smile

Offline

#64 24-10-2013 05:10

Sergey81
Registered: 19-12-2008
Posts: 654

Re: Новые описания для опкодов

Offline

#65 24-10-2013 16:12

ZeroTen
Registered: 28-08-2013
Posts: 5

Re: Новые описания для опкодов

Есть miss2 из юбилейной андроидовской vice city, но заставить его что нибудь скомпилировать нелегко...
http://img593.imageshack.us/img593/2365/jzb1.jpg

Last edited by ZeroTen (24-10-2013 16:13)

Offline

#66 24-10-2013 22:02

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Новые описания для опкодов

Вообще-то SB на голову выше этого древнего недокомпилятора.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#67 08-06-2015 22:08

Seemann
Registered: 07-08-2006
Posts: 2,114

Re: Новые описания для опкодов

https://sannybuilder.com/dev/sa_opnames.txt
оригинальные рокстаровские названия скриптовых команд, которые были опубликованы вместе с SA Mobile.
Спустя много лет интересно сравнить, насколько точны или наивны были наши предположения о смысле тех или иных опкодов.

Offline

#68 09-06-2015 18:04

Vital
From: Москва
Registered: 07-11-2010
Posts: 64
Website

Re: Новые описания для опкодов

Seemann wrote:

https://sannybuilder.com/dev/sa_opnames.txt
оригинальные рокстаровские названия скриптовых команд, которые были опубликованы вместе с SA Mobile.
Спустя много лет интересно сравнить, насколько точны или наивны были наши предположения о смысле тех или иных опкодов.

Ух ты! Я, конечно, понимаю, какая это трудная работа, но планируется ли полная замена текста опкодов на новый? Или просто будут исправлены неточности и unknown'ы?

Как бы то ни было, это уже радует, информация крайне полезная. smile

Offline

#69 10-06-2015 11:58

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Новые описания для опкодов

Seemann wrote:

https://sannybuilder.com/dev/sa_opnames.txt
оригинальные рокстаровские названия скриптовых команд, которые были опубликованы вместе с SA Mobile.
Спустя много лет интересно сравнить, насколько точны или наивны были наши предположения о смысле тех или иных опкодов.

Оооо! Это именно то, что надо!  good
Поможет сопоставить нативы GTA 4/5 c Опкодавми GTA SA.


[small][/small]

Offline

#70 10-06-2015 19:12

Seemann
Registered: 07-08-2006
Posts: 2,114

Re: Новые описания для опкодов

На gtamodding.com в описании опкодов можно найти ссылку на соответствующий нейтив
http://www.gtamodding.com/wiki/List_of_opcodes

Offline

#71 04-07-2015 00:41

wmysterio
From: Ukraine
Registered: 04-03-2011
Posts: 212
Website

Re: Новые описания для опкодов

Seemann wrote:

оригинальные рокстаровские названия скриптовых команд, которые были опубликованы вместе с SA Mobile.

Круто. Я уже адаптирую их под СБ. Незнаю нужно ли, но может кому пригодится. Лично мне будет сложно адаптироваться к новым названиям комманд.
***
Насколько я понял, целых 740 опкодов нет в SASCM.INI. По-идеи, это дополнение к консольной и другим версиям или я ошибаюсь?
***
Да, и в opcodes.txt значитительно больше опкодов, нежели в SASCM.INI.

Last edited by wmysterio (04-07-2015 12:44)

Offline

#72 04-07-2015 14:37

Seemann
Registered: 07-08-2006
Posts: 2,114

Re: Новые описания для опкодов

В SASCM.INI только те опкоды, которые использовались в оригинальном main.scm. В реальности их конечно больше. Какие-то опкоды перешли из GTA3 и VC и в SA не используются. Часть опкодов была добавлена для разных типов сущностей, но в реальности использовалось только одно (например, опкоды, проверяющие позицию игрока или объекта).
В opcodes.txt больше опкодов за счет того, что там еще добавляются условия с отрицанием. Например,

0019:   16@ > 1440000 // integer values
8019:   not  16@ > 3000 // integer values

хотя это один и тот же опкод

Если будешь заниматься редактированием SASCM.INI то советую обратить внимание на эти страницы

http://www.gtamodding.com/wiki/Sanny_Builder/SCM.INI
http://www.gtamodding.com/wiki/Sanny_Builder/VCSCM.INI

здесь потихоньку формируются списки опкодов для III/VC в одном стиле, можно использовать их в качестве основы для SASCM

Offline

#73 04-07-2015 18:32

wmysterio
From: Ukraine
Registered: 04-03-2011
Posts: 212
Website

Re: Новые описания для опкодов

Seemann wrote:

В SASCM.INI только те опкоды, которые использовались в оригинальном main.scm. В реальности их конечно больше. Какие-то опкоды перешли из GTA3 и VC и в SA не используются. Часть опкодов была добавлена для разных типов сущностей, но в реальности использовалось только одно (например, опкоды, проверяющие позицию игрока или объекта).
В opcodes.txt больше опкодов за счет того, что там еще добавляются условия с отрицанием. Например,

0019:   16@ > 1440000 // integer values
8019:   not  16@ > 3000 // integer values

хотя это один и тот же опкод

Если будешь заниматься редактированием SASCM.INI то советую обратить внимание на эти страницы

http://www.gtamodding.com/wiki/Sanny_Builder/SCM.INI
http://www.gtamodding.com/wiki/Sanny_Builder/VCSCM.INI

здесь потихоньку формируются списки опкодов для III/VC в одном стиле, можно использовать их в качестве основы для SASCM

Я ещё вчера написал на шарпе парсер, по-этому и расспрашивал. Получил практически оригинальный вариант опкодов. Здесь можно скачать пакет: оригинальных опкодов, архив которого содержит файлы "SASCM.ini" и "opcodex.txt". Однако в таком виде мы приедем к тому, с чего начинали но шиворот на выворот - описание опкода оригинальное, но параметры не имеют описания.  Если такой вариант устроит, то можно уже вручную расставить описание параметров.
--------------------------------------
Архив постоянно обновляется. Каждая папка описует обновление

Last edited by wmysterio (07-07-2015 15:14)

Offline

Board footer

Powered by FluxBB