You are not logged in.
<center>В этой теме задаются все вопросы по конкретным опкодам (назначение того или иного опкода, особенности использования, лимиты и т.д.). Все остальные подобные темы будут "приклеиваться" к этой</center>
<hr>
Возможно когда-нибудь разрешиться и этот мой вопрос на счёт непонятного использования кодов в скриптах, думаю в этом форуме будет большинство - проффи, поэтому задаю его и здесь.
Пример непонятного правила, при котором необходимо дублировать строки (оригинальный main.scm трейд :POOL2_6325):
0792: (unknown) $PLAYER_ACTOR 0792: (unknown) $PLAYER_ACTOR 0792: (unknown) $PLAYER_ACTOR 0792: (unknown) $PLAYER_ACTOR 0792: (unknown) $PLAYER_ACTOR
Как после команды "return", что-то ещё может выполняться?
(оригинальный main.scm трейд :QUARRY_2253)
018A: @132 = create_checkpoint_at @215 @216 @217 0006: @239 = 1;; integer values 0051: return;; Bug? 00BF: @200 = current_time_hours, @201 = current_time_minutes 0085: @50 = @202;; integer values and handles 0012: @50 *= 60;; integer values
Пример, когда один и тот же код операции использован и в условии и
самостоятельно(оригинальный main.scm трейд :DRUGS4_5856):
075A: @230 "DONUTDROP" "MD_CHASE" 4.0 0 1
(оригинальный main.scm трейд :WUZI5_2018)
00D6: if 0 075A: @74 "KAT_THROW_O" "MISC" 10000.0 0 0 004D: jump_if_false ЈWUZI5_2022
Еще пример, когда один и тот же код операции использован и в условии и
самостоятельно (оригинальный main.scm трейд :STEAL4_1089):
04E6: unknown_object @106 near_point @160 @161 @162 radius 5.0 5.0 3.0 unknown 1
(оригинальный main.scm трейд :STEAL4_1110)
00D6: if 0 04E6: unknown_object @106 near_point @160 @161 @162 radius 6.0 6.0 6.0 unknown 0 004D: jump_if_false ЈSTEAL4_1120
Вот снова, один и тот же код операции использован и в условии и
самостоятельно (оригинальный main.scm трейд :VALET_793):
03D3: find_nearest_route_for_3D_coord @21 @22 @23 get_3D_coord_to $73 $74 $75 get_Z_angle_to @24
(оригинальный main.scm трейд :GFDATE_3266)
00D6: if 0 03D3: find_nearest_route_for_3D_coord @4 @7 @10 get_3D_coord_to @5 @8 @11 get_Z_angle_to @13;; BUG??? 004D: jump_if_false ЈGFDATE_3290
Как это понимать??? Неточность некоторых OPR-кодов?
Я не нахожу объяснений ...
Last edited by Seemann (14-11-2007 07:51)
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
Да уж, примеры из разряда необъяснимых. Я вот подумал, и ни одного мал-мальски подходящего решения не приходит на ум. Кстати, многие опкоды, которые ты написал, уже известны.
04E6: is_object 106@ within_cube_with_center_at_3D_coord 156@ 157@ 158@ half_width 6.0 half_height 6.0 depth 6.0 flag 0 075A: set_object 88@ animation "BBALL_IDLELOOP_O" group "BSKTBALL" 10000.0 lockF 0 loop 0 //IF AND SET 0792: disembark_instantly_char 42@
начнем хотя бы с этого
P.S. Maybe someone from gtaf knows?
Offline
2Capushon
Как после команды "return", что-то ещё может выполняться?
Ну это, кстати, вполне обьяснимое явление - просто подряд идут коды сразу нескольких функций, грубо говоря это те же несколько gosub'ов, только после разработки R* оставили ссылку только на одну из них, а код не убрали. Даже, кстати, если использовать в госубах вместо меток числа, то такое тоже работает.
Аналогично, ничего удивительного не вижу в джампах, обходящих невыполнимый код в начале майна и еще где то, я иногда когда отлаживаю скрипты тоже так делаю, а потом убираю. Rockstar, судя по всему, просто поленились убирать отладочный код, поставив джампы и отключив соответственные опкоды в ехе.
Пример, когда один и тот же код операции использован и в условии и
самостоятельно(оригинальный main.scm трейд :DRUGS4_5856):
Ну игра при таком двойном использовании этих опкодов не вылетает. Вывод: их можно использовать и самостоятельно, и в условии.
Last edited by Xieon (16-08-2006 17:37)
Offline
Возможно когда-нибудь разрешиться и этот мой вопрос на счёт непонятного использования кодов в скриптах, думаю в этом форуме будет большинство - проффи, поэтому задаю его и здесь.
Мне думается, что Рокстар использовал более высокоуровневый билдер, поэтому столько мусора . Это можно представить как будто одну и ту же программу сначало скомпилировали в asm, а потом в delphi, если посмотреть листинг то в delphi-проги останется куча мусора и тут такая же система, наверное:) Но это моё ИМХО.
Как говорится чем ниже уровень, тем больше возможностей.
Offline
Мне думается, что Рокстар использовал более высокоуровневый билдер, поэтому столько мусора
В принципе можно посмотреть точную версию того кода, который писали их программисты. Пример R* скрипта записан в файле main.sc (есть в папке Data во всех GTA3). В VC и GTA3 еще есть debug.sc. Вот такой код и был скомпилирован R*-ким билдером в main.scm
Offline
2Seemann
можно посмотреть точную версию того кода, который писали их программисты. Пример R* скрипта записан в файле main.sc
Может им хотелось, что бы так думали... :-)
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline
Вряд ли. Больно уж конструкции оттуда схожи с теми, что мы имеем в SCM.
Offline
Может им хотелось, что бы так думали... :-)
Да мне тоже так кажется.
Вряд ли. Больно уж конструкции оттуда схожи с теми, что мы имеем в SCM.
Я не думаю что весь код можно написть в таком виде, больно долго и муторно. Вот гта 3 можно (да и то врят ли), там всего код занимал 2 мб, но гта са с 14 мб, отлаживать столь большой код замучеешься. Хотя кто их там знает.
Last edited by Sanchez (27-08-2006 09:37)
Offline
Я не думаю что весь код можно написть в таком виде, больно долго и муторно.
А как по твоему выглядел их код? Если ниже уровнем (как в SAMB), то это так писать еще дольше и муторнее. Если выше - то тогда не вижу смысла в придумывании каких-либо "промужуточных" форматов, как в *.sc. Да и если сравнивать структуру отдельных конструкций (например, загрузку моделей) то совпадение 100%.
Offline
2Seemann
Может быть, я только высказал своё мнение.
Offline
Так как мапс слёг и многие не знают о восстановлении на нете, если не возражаете - буду свои вопросы кидать сюда
1. 0570: $m = create_asset_radar_marker_with_icon 32 at x y z
018B: show_on_radar $m 2
Я так понял они работают в паре, 0570 - создаёт(просто создаёт) радарный значок, 018B - в зависимости от параметра 0 - ничего нет, 1 сфера, 2 иконка на радаре, 3 иконка и сфера
Это аналоги или другим опкодам или тут что-то другое кроется?
2.09B4: (unknown) x y 10.0 16384 1
10 - наверное радиус, 1\0 - показывает\непоказывает
в обсчем я от балды (точнее где сиджей стоял) ввёл эти координаты, рядом около этих координат стоял домик и появился маркер входа, ну я вошол в него, вышел и маркер исчез.
Я не понял что ето за число 16384 и тоже, для чего этот опкод
wait 0
Offline
Вообще-то есть уже тема для этого:
http://www.sannybuilder.com/forums/viewtopic.php?id=4
Я так понял они работают в паре
018B работает с любым маркером, устанавливает его тип (ты их уже описал). Опкод 0165, например, устанавливает цвет любого маркера.
Я не понял что ето за число 16384 и тоже, для чего этот опкод
Это неизвестный опкод. Сможешь сформулировать, что он точно делает - честь и хвала
Выглядит он примерно так:
09B4: unknown_portalXY 345.5621 306.2212 radius 10.0 bitmask 16384 enabled 0
Offline
Сори за тему, я ту сначала бегло неправильно прочитал(название в смысле)
исчо вопрос
0959: $2882 = create_horseshoe_at x y z
0958: $2932 = create_photo_at x y z
095A: $2982 = create_oyster_at x y z
как ведётся статистика сбора ракушек, фото, подков, эти переменные вродь больше не фигурируют в мэйне....???
wait 0
Offline
Не хотела создавть новую тему из-за одного вопроса, да и в "Разжёвывание "известных" команд" как-то не лезет.
Есть ли опкод отвечающий за статистику прохождения автошколы или здесь нужно писать специальный скрипт?
Offline
как ведётся статистика сбора ракушек, фото, подков, эти переменные вродь больше не фигурируют в мэйне....???
Пикапы создаются в майне, а сбор контролируется через ехе.
В gta-sa.exe есть процедура _StreetPickupTaken, которая срабатывает когда игрок берет какой-нибудь пикап и в зависимости от его вида (взятка, устрица, подкова и т.п.) вызывает другие процедуры.
.text:004552D0 OysterCollected proc near ; CODE XREF: _StreetPickupTaken+296p .text:00455390 HorseshoeTaken proc near ; CODE XREF: _StreetPickupTaken+2B7p
насчет фоток не знаю, но принцип должен быть тот же.
Есть ли опкод отвечающий за статистику прохождения автошколы или здесь нужно писать специальный скрипт?
Сама автошкола это скрипт, поэтому опкода для него быть не может. Подобная статистика прохождения контролируется через переменные.
Есть, например, флаг прохождения миссии: $MISSION_BACK_TO_SCHOOL_PASSED.
Offline
Пикапы создаются в майне, а сбор контролируется через ехе.
В gta-sa.exe есть процедура _StreetPickupTaken, которая срабатывает когда игрок берет какой-нибудь пикап и в зависимости от его вида (взятка, устрица, подкова и т.п.) вызывает другие процедуры.
ыыы.....мне до этого далеко есчо
01C7: remove_object_from_mission_cleanup_list xxx
01C5: remove_actor_from_mission_cleanup_list xxx
а вот это что? (может и не пригится, но так, из любопытства)
wait 0
Offline
01C7: remove_object_from_mission_cleanup_list xxx
01C5: remove_actor_from_mission_cleanup_list xxx
В игре есть такое понятие как mission_cleanup_list. В него автоматически заносятся все объекты, созданные во время миссии. В конце миссии есть команда mission_cleanup, которая как раз и высвобождает память от всего созданного на протяжении миссии, уничтожаем всех актеров, машины и пр. Если вам нужно, чтобы объект (актер) оставался в игре и после окончания миссии, вы может принудительно изъять его из этого списка этими командами
Offline
Опа.....возьму на заметку
Такой вопрос у меня возник при ковырянии мэйна, это у рокстара такой стиль програмирования интересный или это билдер так декомпилит? и вообще известно чем рокстар мэйн пишет?
wait 0
Offline
это у рокстара такой стиль програмирования интересный или это билдер так декомпилит?
билдер декомпилирует as is. Это такой стиль у R*. Хотя если подумать, то другого стиля там быть и не может - высокоуровневые конструкции всегда дают лишний код при компиляции (можешь скомпилировать примеры из санника и декомпилировать их и посмотреть что получается при компиляции if..then, циклов и пр.). Примеры оригинального R*-кого кода можно посмотреть в файле main.sc.
и вообще известно чем рокстар мэйн пишет?
точно не известно, но это их собственный компилятор (что-то вроде санника )
Offline
Кстати по поводу if..then, что-то я не видел чтоб этим кто-то польбзовался, это же намного удобней чем через if....not....jf, намного код проще и читабельней
wait 0
Offline
В миссиях используется вот такой код
0A0B: (unknown) и 4 параметра, 3 из них - координаты
что за оно кто в курсе уже?
wait 0
Offline
что за оно кто в курсе уже?
зайди в тему Новые опкоды, там есть ссылка на sascm.ini.
Offline
2Capushon:
Можешь объяснить точно, в чем различие между 073С и 0730? Я так понимаю - разный тип компонентов. Ты случайно не знаешь полный их список и за что каждая цифра отвечает?
Есть вот это:
0 Капот. 1 Багажник. 2 Дверь водителя или левого переднего места. 3 Дверь правого переднего места. 4 Дверь заднего левого места. 5 Дверь заднего правого места. by Alexander
а полнее?
Offline
В игре есть такое понятие как mission_cleanup_list. В него автоматически заносятся все объекты, созданные во время миссии. В конце миссии есть команда mission_cleanup, которая как раз и высвобождает память от всего созданного на протяжении миссии, уничтожаем всех актеров, машины и пр. Если вам нужно, чтобы объект (актер) оставался в игре и после окончания миссии, вы может принудительно изъять его из этого списка этими командами
Добавлю, что MissionCleanupList может хранить до 75 хендлов. Это максимум, который может создаваться в пределах одной миссии (актеров, машин, объектов и т.д.)
Offline