You are not logged in.
А хватает он твою машину. Искать нужно по другому. Посмотри на предыдущей странице. Правда там гоночная миссия . Но суть одна и та же.
Offline
Но там же авто уже записаны в переменые (не можешь же ты проверять расстояние между несуществующими машинами )
Offline
И один и второй опкод записывает твою машину. Так понятнее.
Offline
ну то что мою это я понял ,но вот по моему хватает не совсем самую близкую (находится должна максимум в четырех метрах от игрока . )а это по моему не так ( раз двадцать пытался закрыть двери машине и найти ее . )=(
Offline
У меня вопросы. Какие должны быть задержки по длине. Для безопасной работы нескольких десятков скриптов. Если я небуду обьявлять значения переменных в скрипте иммунитетов на авто. Будет ли работать изменяя значения только нужного иммунитета.
':-:'+################
можно прикрепить игрока к авто. Я знаю что можно прикрепить обьект к авто. А игрока?
Last edited by 444andrei444 (28-05-2011 14:51)
Offline
можно прикрепить игрока к авто. Я знаю что можно прикрепить обьект к авто. А игрока?
вероятно можно исправить опкод 0681 через память под актёра, сейчас гляну в базе...
UPD. Вылет... вероятно нельзя прикрепить актёра к чему-либо вообще, кроме как опкодом 04F4. Делал так:
{$CLEO} model.Load(#ADMIRAL) 038B: load_requested_models wait 500 :1 wait 0 if 0ab0: 48 jf @1 0A8C: write_memory 0x495434 size 1 value 0x90 virtual_protect 1 car.Create(1@, #ADMIRAL, 0.0, 0.0, 20.0) wait 500 0681: attach_actor $PLAYER_ACTOR to_car 1@ with_offset 0.0 0.0 1.0 rotation 0.0 0.0 0.0 0A8C: write_memory 0x495434 size 1 value 0x9C virtual_protect 1 wait 1000 jump @1
может я что-то неправильно сделал всё-таки? хотя думаю всё-таки сделал правильно...
Last edited by Voron295 (28-05-2011 19:10)
Offline
может я что-то неправильно сделал всё-таки?
Ошибок несколько:
1.Команда
.text:00495434 0F8 mov ecx, _ObjectPool
в hex-виде представлена так (см. вкладку hex-view a в IDA):
8B 0D 9C 44 B7 00
, где 8B 0D - это опкод (mov ecx, значение), а 9C 44 B7 00 - это значение, записываемое в регистр ecx (0x00B7449C).
Нужно заменить значение третьего байта команды, поэтому вместо адреса 0x495434 надо подставить0x495436.
2.Также нужно заменить команду:
.text:0049543B 0FC call _CPool_CObject__atHandle ; Call Procedure
на
.text:0049543B 0FC call _CPool_CPed__atHandle ; Call Procedure
Причём в команду вызова функции подставляется не адрес функции, а разница между адресом функции и адресом команды, следующей за командой вызова функции ( http://sannybuilder.com/forums/viewtopic.php?id=1068 ).
3.Необходимо убрать ожидание (wait 500) между правкой опкода и его использованием.
А вообще чтобы прикрепить игрока к авто, можно просто поместить его в туррет:
0464: put_actor $PLAYER_ACTOR into_turret_on_car 1@ at_car_offset 5@ 10@ 7@ position 0 shooting_angle_limit 360.0 with_weapon 12@
Offline
я понял какую машину этот опкод хватал.машину на которой ездил я. написал так
{$VERSION 3.1.0027} {$CLEO .cs} wait 1000 :not_defined wait 0 if 0256: player $PLAYER_CHAR defined else_jump @not_defined :defined wait 100 if 00E1: player 0 pressed_key 11 else_jump @not_defined :pressed wait 100 if 00DF: actor $PLAYER_ACTOR driving else_jump @not_defined :driving wait 100 00D9: 4@ = actor $PLAYER_ACTOR car 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@ :defined_car WAIT 0 if and 056E: car 0@ defined 80DD: not actor $PLAYER_ACTOR driving_car_with_model 0@// попытался исправить косяк с самоуничтожением но не вышло 056D: actor 1@ defined else_jump @driving 020B: explode_car 0@ // взрывать должен по идее не мою тачку ,НО ЭТО НЕ ТАК (ЭТО ПРОСТО ДЛЯ НАГЛЯДНОСТИ ОПКОД НАПИСАН НА САМОМ ДЕЛЕ Я ХОЧУ СДЕЛАТЬ СКРИПТ КОТОРЫЙ ДАЁТ ВОЗМОЖНОСТЬ ЦЕПЛЯТЬ ЛЮБОЙ АВТО) :END WAIT 100 CAR.RemoveReferences(0@) ACTOR.RemoveReferences(1@) JUMP @not_defined
ПОДСКАЖИТЕ КАК ИСПРАВИТЬ (ЧТОБЫ ВЗРЫВАЛО НЕ МОЙ АВТОМОБИЛЬ)
Last edited by met dog (29-05-2011 01:01)
Offline
@met dog
Опкод 0AB5 записывает в переменные хэндлы ближайших к актеру машины и прохожего. Если близко к актеру нет ни одной машины или прохожего, в соответствующую переменную будет записано -1. Если игрок в транспорте, то запишется в переменную транспорт игрока. Захватывать транспорт надо другими опкодами. Тебе же уже про это написали.
МАШИНА ДОЛЖНА НАХОДИТСЯ МАКСИМУМ В ЧЕТЫРЕХ МЕТРАХ ОТ ИГРОКА
??? Расстояние в 4 игровых метра слишком мало. Если игрок в транспорте, то другое авто должно находится вплотную к транспорту игрока.
Вот пример скрипта:
{$CLEO .cs} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then if and Actor.Driving($PLAYER_ACTOR) 00E1: player 0 pressed_key 11 then 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0 073E: get_car_in_sphere 1@ 2@ 3@ radius 20.0 model -1 handle_as 4@ if Car.Defined(4@) then if not Car.Wrecked(4@) then 020B: explode_car 4@ end end end end end
Offline
СПАСИБО СО ВЗРЫВОМ РАБОТАЕТ НО ВОТ ЧУТЬ ПЕРЕДЕЛАЛ
{$CLEO .cs} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then if and Actor.Driving($PLAYER_ACTOR) 00E1: player 0 pressed_key 11 then 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0 00D9: 5@ = actor $PLAYER_ACTOR car // mission only 073E: get_car_in_sphere 1@ 2@ 3@ radius 20.0 model -1 handle_as 4@ if AND Car.Defined(4@) Car.Defined(5@) then if AND not Car.Wrecked(4@) not Car.Wrecked(5@) then 0683: attach_car 4@ to_car 5@ at_offset 0.0 -4.6 0.65 rotation 2.0 2.0 2.0 end end end end end
А ВОТ ЭТО НЕ РАБОТАЕТ МАШИНУ НЕ ЦЕПЛЯЕТ вроде написано все правильно ...что я делаю не так !?:cry:
Last edited by met dog (29-05-2011 12:44)
Offline
У меня вопрос как сделать весь штат открытым сначала игры.
Offline
@met dog
1) Надо использовать опкод 03C0, а не 00D9
2) Проверка Car.Defined(5@) - не нужна.
{$CLEO .cs} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then if and Actor.Driving($PLAYER_ACTOR) 00E1: player 0 pressed_key 11 then 03C0: 5@ = actor $PLAYER_ACTOR car 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0 073E: get_car_in_sphere 1@ 2@ 3@ radius 20.0 model -1 handle_as 4@ if Car.Defined(4@) then if and not Car.Wrecked(4@) not Car.Wrecked(5@) then 0683: attach_car 4@ to_car 5@ at_offset 0.0 -4.6 0.65 rotation 2.0 2.0 2.0 end end end end end
Offline
У меня вопрос как сделать весь штат открытым сначала игры.
0629: change_integer_stat 181 to 4
кстати, раз уж об этой теме, хотел спросить насчёт перегородок перекрывающих мосты между городами, вероятно они создаются спец. потоком в майне? кто знает его название? а если не поток, то что?)
Offline
ну когда изучал майн то видел вроде такой поток (было давно название не запомнил )просто открой майн введи в поиске опкод который создает невидимую стену (если не помнишь ,то есть в разделе о пешеходах ) и то что найдешь кажется и будет нужный тебе поток .
Last edited by met dog (29-05-2011 13:30)
Offline
3.Необходимо убрать ожидание (wait 500) между правкой опкода и его использованием.
wait 500 я поставил лишь для того, чтобы убедиться, что вылет происходит не раньше опкода 0681.
У меня такое ощущение, что я стану учить скорее ассемблер, чем Си
И, как я понял из данной вами ссылки, можно создавать фактически новые опкоды с применением стандартных функций игры прямо в скрипте?
в поиске опкод который создает невидимую стену (если не помнишь ,то есть в разделе о пешеходах )
Что-то я не вижу связи между невидимой стеной и пешеходами, точнее можно?
UPD. Как я понял, один из опкодов: 01E8, 022B или 04С0. Склоняюсь к последнему...
Last edited by Voron295 (29-05-2011 13:39)
Offline
Offline
а есть ли программа для редактирования и создания игровых путей (помню ,что Seemann писал где то о ней . Сделал ли он ее ?)=)
Offline
а есть ли программа для редактирования и создания игровых путей (помню ,что Seemann писал где то о ней . Сделал ли он ее ?)=)
Для создания - carrec.cs
Для редактирования - редактор от Sanchez (впадлу щас искать тему, поищи по форуму или на вики)
Offline
а есть ли команда которая предвещает дальнейшее выполнение любой команды после нее??? пример:
<код>
и дальше
jump @car
jump @car2
т.е надо чтобы выполнилось jump @car or jump @car2.
Offline
А можно ли пирсвоить актеру определённое поведение к примеру ударил или вытащил из машины он побежит в панике ,а не набросится на тебя с кулаками ?И ещё существует ли проверка на соприкосновение
обьекта с авто ?(нужно сделать скрипт в котором наезжаешь на бургеры и они взрываются )
Last edited by met dog (30-05-2011 00:36)
Offline
Попробуй присвоить трусливое поведение
http://sannybuilder.com/forums/viewtopic.php?id=44
Offline
Юбилейный пост
.........
Решил сделать скрипт диалогов. Выбор осушествляется через меню. Хотелось бы сделать чтобы из меню запускались скрипты с расширением .s но если в них осуществлять поиск ближайшего актера заново, то актер может быть уже не тот. Вариант 2 засунуть все действия в скрипт меню, но тогда код будет очень длинный и не удивлюсь если я в нем запутаюсь. Может еще есть варианты?
Offline