You are not logged in.
Перенесу сюда последние находки.
За основу берется вот этот ини: 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
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
0414: toggle_player $PLAYER_CHAR free_treatment_once 1
Игрок не будет платить за лечение, если умер, и его оружие останется при нем. Работает только однократно, для получения эффекта вновь, нужно использовать опкод еще раз.
072C: generate_police_bikes 0
Выключить появление копов на мотоциклах.
Offline
0741: actor $PLAYER_ACTOR busted
проверка срабатывает, когда актера поймали менты.
Offline
2Seemann:
проверка срабатывает, когда актера поймали менты.
У меня он так и числится (возможно на gtaforums пробегал), дело в другом - он работает только в миссиях...
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
дело в другом - он работает только в миссиях...
я когда тестировал, у меня работал и в простом потоке (стриппед).
Offline
БЕТА-РЕЛИЗ SASCM.INI
http://sannybuilder.com/files/SASCM.rar
По указанной ссылке обновленный SASCM.INI, содержащий в себе практически все* известные опкоды. Я обновил его на основе ини от PlPynton, однако старался сохранить традиционный стиль описания опкодов. Также я включил туда несколько десятков найденных мной опкодов, добавил описания многих параметров, отметил зацепки в неизвестных опкодах. Многие опкоды я запостил на гтафорумс, которых нет на этом форуме, по возможности буду переносить инфу сюда.
Параметры не менялись местами, поэтому вы можете заменить ваш текущий ини совершенно безбоязненно.
Если вы испытываете какие-либо трудности с использованием данного ини, нашли ошибки, неточности и т.п. пишите в этой теме. Это поможет мне исправить все перед включением в следующий релиз SB.
Информация для пользователей SAMB: вы также можете использовать этот ини, однако в некоторых опкодах порядок следования параметров в INI санника и самба РАЗЛИЧАЮТСЯ. Поэтому, если вы замените им свой ини, ваши старые скрипты могут не работать.
Используйте его как справку.
Также обратите внимание, что я НЕ тестировал опкоды. Некоторые, правда, проверял, когда сомневался в правильности, даже нашел ошибочные описания, но в целом я копировал описания без проверки.
________________
* некоторые опкоды описаны в базе опкодов, но я не уверен в их правильности, поэтому не стал включать их.
Offline
Кстати, хотите знать главную находку последних дней в скриптинге?
Помните опкод
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
Отличная новость, теперь можно организовать полноценный контроль управления игроком. smile
Я вот тоже рада. А в чем выражается этот "полноценный контроль"?
Offline
yelmi : а до этого можно подумать нельзя было Вот этот опкод 0494 , в комбинации с 00E1 можно полноценно управлять клавишами джойстика . Как пример flacs'a и мой скрипт с трюками на BMX , на мапсе есть темка и в SaveAll'e тоже есть .
Offline
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
Нашел новые опкоды, которых нет в обновленном ини:
0A46: toggle_external_scripts_triggers_type 1 enabled 0
Позволяет включить/отключить временно все триггеры скриптов, созданные через 0928, 0929.
Первый параметр означает тип триггера:
0 - для актеров (0928)
1 - для объектов (0929)
Второй параметр - флаг включения/отключения
0951: disable_trip_skip
отключить trip_skip, например когда игрок уже сам до него доехал.
Не стоит использовать опкод 00e2 вместе с опкодом 00е1 – возможен вылет.
что значит вместе?
Offline
что значит вместе?
Я имел в виду такую конструкцию:
: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
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
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
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
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
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
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
да, этот опкод известен, первоначально был назван как
08FD: toggle_heat_visuals 0/1
хотя я когда тестировал, не смог увидеть разницу, вроде эффект "горячего асфальта" и так, и так есть... поэтому оставил как неизвестный. надо чтобы кто-нибудь еще протестировал
Offline
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
0913=-1,run_external_script %1x%а если поставить просто =1 в чём разница?
Т.к. опкод 0913 и 004F - может сожержать от 1- до 32 параматров, другие же опкоды этого свойства не имеют!
-1 = Это как бы ключ к декомпилированию.
Если поставить 1 - то будет несусветный глюк, которы закончиться тем что декомпиляция станет невозможной.:|
Last edited by flacs (02-02-2007 06:14)
Offline
а кто не будь знает опкод чтоб повернуть турбины у гидры
вот на пример создал я гидру в координатах, и хочу чтоб у нее турбиты не в низ были повёрнуты а на зад
Offline