#1 04-01-2007 14:21

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

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

Перенесу сюда последние находки.

За основу берется вот этот ини: http://www.pysniak.com/robert/gtasa/data/sascm.zip В нем собрано наибольшее количество известных на данный момент опкодов.
Я тоже постараюсь обновить ини из комплекта санника, а то уже больше года он не обновлялся.


09D4: suspend_wanted_level

Данный опкод снимает уровень поиска, но не сразу, а заставляет мигать звезды, как если бы вы перекрасили машину.

0A0F:   is_new_language_set

Проверка срабатывает, если вы установили в меню новый язык. В оригинале используется для обновления текстов на экране (на другом языке).

09FA:   is_menu_closed

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

0A29:  player $PLAYER_CHAR climbing

Проверка срабатывает, пока игрок перелазит/лезет на что-то (стена, забор, любое препятствие).

0A14: disable_respray_garages 1

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

0A1B:   actor 62@ touched_by_actor $PLAYER_ACTOR

Проверка срабатывает, если актер $PLAYER_ACTOR прикоснулся к актеру 62@. Также работает, когда $PLAYER_ACTOR касается этого актера своей машиной (типа, сбивает).

0A06:   train 0@ next_station_unlocked

Проверка срабатывает, если следующая станция для поезда 0@ доступна, т.е. находится в городе, который открыт для игрока (определяется статистикой #181). Используется в скрипте Trains для того, чтобы не телепортировать поезд в недоступный город.

0970: fade_and_teleport_in_override_point  ;; (c)Capushon

Срабатывает фейдинг и игрок переносится в точку, заданную опкодом 016E.


Сегодняшние находки:

0488:  model %1o% exists

Проверка срабатывает, если такой номер модели есть в IDE файлах игры и может быть использован в команде Model.Load. Также работает в Vice City.
(наверно, удобно использовать этот опкод в разного рода CarsCheck модах).

04C1: remove_references_to_roadblocks

Полицейские заграждения не будут больше создаваться и исчезнут как только игрок отъедет от них.

Кстати, лимит для заграждений, созданных опкодом 04С0 - 16.

Last edited by Seemann (04-01-2007 16:14)

Offline

#2 09-01-2007 08:43

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

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

3 свежих опкода.
Эти опкоды были неизвестны со времен GTA III и должны работать во всей линейке игр (включая последние, на приставках).

018F:   car 244@ flipped_for_2_seconds
0190: add_car 244@ to_flipped_check
0191: remove_car 244@ from_flipped_check

0190 записывает хендл машины в специальный массив, который может хранить до 6 таких хендлов. Игра каждую миллисекунду проверяет хендлы из этого массива и, если машина перевернулась, запоминает, сколько времени прошло с этого момента.

018F: проверка срабатывает, если машина из этого массива перевернулась и лежит уже больше 2 секунд. Это означает, что она уже точно никуда не поедет и скоро взорвется.

В оригинальных играх (VC, SA) этот опкод используется в основном в погонях, чтобы проверить, если машина перевернулась, то заставить водителя вылезти из нее ("Psycho Driver", "Two Bit Hit" в VC) или поставить машину на колеса (хендл этой машины может использоваться в опкодах, даже если она взорвалась.

0191 удаляет хендл машины из массива

Offline

#3 10-01-2007 05:44

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

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

0414: toggle_player $PLAYER_CHAR free_treatment_once 1

Игрок не будет платить за лечение, если умер, и его оружие останется при нем. Работает только однократно, для получения эффекта вновь, нужно использовать опкод еще раз.

072C: generate_police_bikes 0

Выключить появление копов на мотоциклах.

Offline

#4 19-01-2007 11:14

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

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

0741:   actor $PLAYER_ACTOR busted

проверка срабатывает, когда актера поймали менты.

Offline

#5 19-01-2007 22:50

Capushon
Registered: 13-08-2006
Posts: 348
Website

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

2Seemann:

проверка срабатывает, когда актера поймали менты.

У меня он так и числится (возможно на gtaforums пробегал), дело в другом - он работает только в миссиях...


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#6 20-01-2007 05:15

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

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

дело в другом - он работает только в миссиях...

я когда тестировал, у меня работал и в простом потоке (стриппед).

Offline

#7 29-01-2007 11:12

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

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

БЕТА-РЕЛИЗ SASCM.INI

http://sannybuilder.com/files/SASCM.rar

По указанной ссылке обновленный SASCM.INI, содержащий в себе практически все* известные опкоды. Я обновил его на основе ини от PlPynton, однако старался сохранить традиционный стиль описания опкодов. Также я включил туда несколько десятков найденных мной опкодов, добавил описания многих параметров, отметил зацепки в неизвестных опкодах. Многие опкоды я запостил на гтафорумс, которых нет на этом форуме, по возможности буду переносить инфу сюда.

Параметры не менялись местами, поэтому вы можете заменить ваш текущий ини совершенно безбоязненно.

Если вы испытываете какие-либо трудности с использованием данного ини, нашли ошибки, неточности и т.п. пишите в этой теме. Это поможет мне исправить все перед включением в следующий релиз SB.

Информация для пользователей SAMB: вы также можете использовать этот ини, однако в некоторых опкодах порядок следования параметров в INI санника и самба РАЗЛИЧАЮТСЯ. Поэтому, если вы замените им свой ини, ваши старые скрипты могут не работать.
Используйте его как справку.

Также обратите внимание, что я НЕ тестировал опкоды. Некоторые, правда, проверял, когда сомневался в правильности, даже нашел ошибочные описания, но в целом я копировал описания без проверки.

________________
* некоторые опкоды описаны в базе опкодов, но я не уверен в их правильности, поэтому не стал включать их.

Offline

#8 29-01-2007 11:23

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

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

Кстати, хотите знать главную находку последних дней в скриптинге?

Помните опкод

00e2=2,get_key_pressed %1d% %2d%

который числился нерабочим со времен GTA3. Так вот, прикол в том, что этот опкод имеет ТРИ параметра. Я не знаю, как могла произойти такая идиотская ошибка? и почему за все годы никто так ее и не исправил...

Правильное описание опкода:

00e2=3,get_player %1d% key %2d% state_to %3d%

последний параметр - переменная, в которую записываете положение кнопки. Первые 2 параметра такие же как в 00E1.

Особенность опкода в том, что он позволяет различить какая была нажата кнопка в тех случаях когда у 2-х кнопок одинаковый ID. Например, кнопки Left и Right имеют ID=0 и через проверку 00E1:  key_pressed 0 0 вы не сможете какая из них была нажата.

00E2 записывает следующие значения кнопок:

0 - не нажата
255 - нажата

для случаев с одинаковым ID:
-128 - нажата первая
128 - нажата вторая

00E2: get_player 0 key 0 state_to $keystate

Offline

#9 29-01-2007 11:45

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

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

Отличная новость, теперь можно организовать полноценный контроль управления игроком. smile

Offline

#10 29-01-2007 12:42

svetka
Registered: 29-12-2006
Posts: 222

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

yelmi wrote:

Отличная новость, теперь можно организовать полноценный контроль управления игроком. smile

Я вот тоже рада. smile  А в чем выражается этот "полноценный контроль"?

Offline

#11 29-01-2007 17:10

Alexander
Registered: 19-08-2006
Posts: 184
Website

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

yelmi :  а до этого можно подумать нельзя было smile Вот этот опкод 0494 , в комбинации с 00E1 можно полноценно управлять клавишами джойстика . Как пример flacs'a и мой скрипт с трюками на BMX , на мапсе есть темка и в SaveAll'e тоже есть .

Offline

#12 29-01-2007 23:10

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

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

Alexander: о существовании  0494 я зал и раньше, но не использовал, а точнее не тестировал.   

Опкод  00e2=3,get_player %1d% key %2d% state_to %3d%
не используется в оригинальном main.scm и я не понимал почему, до тех пор, пока не протестировал опкод

 0494: get_joystick_data 0 $1213 $1214 $1215 $1216

Принцип его работы тот же что и 00e2, а разница в том, что
$1213 – отвечает за кнопки влево/вправо
$1214 – вверх/вниз (вперед / назад)
$1215 – влево/вправо на цифровой клавиатуре (в автомобиле: влево/вправо -  клавиши контроля гидравлики )
$1216 - в автомобиле: вверх/вниз -  клавиши контроля гидравлики.
Наверное, по этому рокстаровцы и не использовали 00e2.

P.S. Не стоит использовать опкод 00e2 вместе с опкодом 00е1 – возможен вылет.

Last edited by yelmi (30-01-2007 01:53)

Offline

#13 30-01-2007 05:30

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

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

Нашел новые опкоды, которых нет в обновленном ини:

0A46: toggle_external_scripts_triggers_type 1 enabled 0

Позволяет включить/отключить временно все триггеры скриптов, созданные через 0928, 0929.

Первый параметр означает тип триггера:
0 - для актеров (0928)
1 - для объектов (0929)

Второй параметр - флаг включения/отключения



0951: disable_trip_skip

отключить trip_skip, например когда игрок уже сам до него доехал.


yelmi wrote:

Не стоит использовать опкод 00e2 вместе с опкодом 00е1 – возможен вылет.

что значит вместе?

Offline

#14 30-01-2007 12:10

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

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

Seemann wrote:

что значит вместе?

Я имел в виду такую конструкцию:   

:test
wait 0 ms
if
00E1:  key_pressed 0 0
jf @test 
00e2:get_player 0 key 0 state_to 12@

. . .

jump @test

При многократном нажатии клавиш наблюдались постепенное урезание (затемнение) половины экрана монитора и вылет.

Last edited by yelmi (30-01-2007 12:13)

Offline

#15 30-01-2007 23:31

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

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

0A4B:   controls_keyboard_and_mouse

на самом деле тут не совсем корректна трактовка этого опкода.
Опкод проверяет какое управление установлено в меню настроек.
Правильнее было бы так

0A4B=0,  are_controls_set_to_joystick_or_keyboard_and_mouse

Пример:

:testA
054C: use_GXT_table 'CASINO9' 
wait 0 ms
00D6: if 
0A4B:   controls_keyboard_and_mouse 
004D: jump_if_false @testA_1 
0512: permanent_text_box 'CAS9_H2'  //если установлено управление джойстиком
jump @testA_2

:testA_1
0512: permanent_text_box 'CAS9_H4' //если установлено управление клавиатурой 

:testA_2                                            
wait 8000 ms
jump @testA

Last edited by yelmi (30-01-2007 23:32)

Offline

#16 31-01-2007 04:44

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

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

2yelmi:
предлагаешь назвать его

0A4B:   are_controls_joystick

?


Кстати, люди, протестируйте эти опкоды

099E: unknown_toggle_police_patrols 0
08EA: unknown_toggle_gangs_spawn 0
06D0: unknown_toggle_ambulances_firetrucks 0 
0923: unknown_toggle_air_traffic 0

они все включают/отключают спаун траффика или банд. нужно подтверждение.

Offline

#17 31-01-2007 10:44

Alexander
Registered: 19-08-2006
Posts: 184
Website

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

099E: unknown_toggle_police_patrols 0 // отключает абсолютно все признаки прибывания полиции в СА , т.е. нет ни машин , ни мотоциклов , ни просто копов , они только остались в полиц. учтастках .
08EA: unknown_toggle_gangs_spawn 0 // отключается создание банд по территории СА .
06D0: unknown_toggle_ambulances_firetrucks 0  // скорые и пожарные машины не приезжают на мертвых педов и огонь соответственно.
0923: unknown_toggle_air_traffic 0 // отключает :
1) траффик самолётов в небе СА
2) полицейские вертолёты с прожекторами, которые ночами ,бывает,летают над ЛС
3) полицейские вертолёты (прилетающие мочить игрока на 3 звезды) и гидры (6 звёзд)

Offline

#18 31-01-2007 12:27

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

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

Seemann wrote:

2yelmi:
предлагаешь назвать его

0A4B:   are_controls_joystick

?

Можно и так.

Быть может и этот опкод можно было бы переименовать, поскольку он контролирует перемещение мышки по осям X,Y.

0A4A: store_joystick_offset_to 21@ 22@

где
21@ - перемещение по оси Х
22@ - перемещение по оси Y

Last edited by yelmi (31-01-2007 12:28)

Offline

#19 01-02-2007 00:26

Capushon
Registered: 13-08-2006
Posts: 348
Website

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

2Seemann:

0A33=2,unknown_actor %1d% store_to %2d%

IMHO

0A33=2,unknown_actor %1d% store_car_to %2d%

Непонял назначение следующих команд:

075B: zoom_radar 100
08A3: update_respect_while_on_mission 1
08F4: toggle_gang_recruitment 0
0960: toggle_player_stats_box $PLAYER_CHAR flag  1

Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#20 01-02-2007 03:27

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

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

2Capushon:

075B: zoom_radar 100

увеличить радар (0-100%). попробуй в цикле поиграться, там изображение будет увеличиваться/уменьшаться, как когда на большой скорости едешь

08A3: update_respect_while_on_mission 1

давать/нет очки респекта за убийство вражеских бандюков (балласов) во время миссии. в обычном состоянии такого нет

08F4: toggle_gang_recruitment 0

этот был найден демарестом полгода назад, видимо разрешить найм к себе в команду (макс. кол-во рекрутов)

edit:
переименовал в

08F4: set_max_group_members 0

кто-нибудь, подтвердите правильность


0960: toggle_player_stats_box $PLAYER_CHAR flag  1

включить/отключить окошко статов, которое появляется по нажатию таб

Last edited by Seemann (01-02-2007 09:02)

Offline

#21 01-02-2007 17:14

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

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

08FD: (unknown) 1   // 1/0 – включить/выключить

добавляет эффект небольшого размытия ( напоминает испарение от нагретого солнцем асфальта )

Offline

#22 01-02-2007 18:18

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

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

да, этот опкод известен, первоначально был назван как
08FD: toggle_heat_visuals 0/1

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

Offline

#23 01-02-2007 20:27

Capushon
Registered: 13-08-2006
Posts: 348
Website

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

2Seemann:

да, этот опкод известен, первоначально был назван как
08FD: toggle_heat_visuals 0/1
хотя я когда тестировал, не смог увидеть разницу, вроде эффект "горячего асфальта" и так, и так есть... поэтому оставил как неизвестный. надо чтобы кто-нибудь еще протестировал

Это будет заметно только в полдень!!!  12-17 часов.

Hедокументированно

09BD=1,set_player_in_menu %1h%
09BE=0,  player_is_in_menu
0818=1,  actor %1d% airborne  ;; В воздухе (в падении)
054E=1,set_actor %1d% clear_last_damage  ;; Восстановление здоровья актёра
0861=1,  player %1d% not_scaning_horizon
08FD=1,toggle_heat_haze %1h%  ;; Жара (дымка как испарение в городе)
08F8=1,show_progress_bar_for_stat_change %1h%
08F0=2,use_model %1g% to_replace_model %2g%  ;; 8-byte strings. internal models and textures for cutscenes.
0914=1,init_external_script %1x%

Спорные действия

0541=1,set_car %1d% fire_guns
056D=1,  actor %1d% exists
056E=1,  car %1d% exists
0572=1,set_taxi_boost_jump %1h%
0729=2,play_mobile_phone_animation %1d% %2h%
0737=2,  actor %1d% holding_object %2d%
076C=3,set_zone %1g% controlled_by_gang %2h% density_to %3h%
076D=3,get_zone %1g% controlled_by_gang %2h% density_to %3d%
07BE=1,release_train %1d%
08E7=1,set_entrance_markers %1h%
0901=2,set_player %1d% able_to_jump %2h%
093E=2,unknown_actor %1d% set %2d%
06DA=0,unknown_trains_action_stop
09AC=1,print_icon_player_in_radar %1h%

Спорные названия

048F=1,set_actor %1d% delete_all_items_in_possession
04BA=2,set_car %1d% speed_instantly %2d%
04D0=2,helicopter %1d% turn_to_z_angle %2d%
04D7=2,lock_actor %1d% in_current_position %2h%
04ED=1,request_animation %1s%
06E9=1,request_car_component %1o%
07C0=1,request_path %1d%
06FF=2,  random_ped_near_actor %1d% in_range %2d%
0719=0,enable_dialogue_mode
070D=1,refresh_actor %1d%
0734=0,random_car_generator_restore_defaults
0A19=1,print_interior8b_name %1g% ;; 8-byte strings
0A1E=1,save_screen_photo %1h%

Что же это создаётся, а потом удаляется???

0606=4,UNKNOWN_create_area_XYA %1d% %2d% XYB %3d% %4d%
0607=0,UNKNOWN_remove_0606

Что означает -1 ???

0913=-1,run_external_script %1x%

а если поставить просто =1  в чём разница?


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

#24 02-02-2007 06:10

flacs
Registered: 17-01-2007
Posts: 16

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

0913=-1,run_external_script %1x%

а если поставить просто =1  в чём разница?

Т.к. опкод 0913 и 004F - может сожержать от 1- до 32 параматров, другие же опкоды этого свойства не имеют!
-1 = Это как бы ключ к декомпилированию.

Если поставить 1 - то будет несусветный глюк, которы закончиться тем что декомпиляция станет невозможной.:|

Last edited by flacs (02-02-2007 06:14)

Offline

#25 03-02-2007 12:38

reinstal
Registered: 08-12-2006
Posts: 45

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

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

Offline

Board footer

Powered by FluxBB