You are not logged in.
@Seemann
Я решил написать новый скрипт бензомода, и хочу чтобы у каждого авто был свой объём бензобака, который будет записан в .ini-файле, а для этого я использую Quick Opcode Alexander'а, так как по другому не умею работать с .ini . А QO работает только с 0@v и не в какую не хочет работать с 0@s.
Конечно можно выкрутиться, но мне интересно - можно или нет.
А зачем такие сложности с ини файлом? Тебе всего-то нужна одна цифра для каждой модели. Теоретически тебе можно хранить эти значения в самом скрипте (внутри hex..end), либо сделать файл, в котором каждый символ - это объем бака соответствующей модели. Например пишешь
123
в файл benzo.ini. Потом открываешь файл через CLEO как байтовый. Читаешь первый байт (это будет 0x31). Отнимаешь 0x30 (перевод текста в число) и получаешь в переменной цифру 1. Это объем первой модели (400). У модели 401 объем будет 2. И т.д. Кроме цифр 1..9 можно использовать буквы. Или сделать бинарный файл с идущими подряд байтами, значение которых определяет объем бака (от 1 до 255).
Примерно так. Но я возможно не заморачивался бы на такие детали, какая в общем-то разница у кого какой бак.
Offline
А зачем такие сложности с ини файлом?
чтобы можно было легко менять настройки для каждого авто отдельно, не прибегая к правке кода.
[large]Добавлено.[/large]
@Seemann - Спасибо, выручил=)
Last edited by flashTrash (25-08-2008 23:16)
Offline
Ну опять-таки, тебе вряд ли нужно делать 200 баков разных объемов. Потребуется не больше десятка. Можно менять объем бака в зависимости от модели машины - для грузовиков одно, для катеров другое и т.д. Не вижу никакой необходимости в такой тонкой настройке.
Если все же необходимо, то конвертировать строку очень просто, достаточно использовать другой постфикс для переменной (не @v, а @s). Т.е. читаем с ини, используя 0@v, потом в скрипте используем 0@s. Главное, чтобы длина строки была не больше 7 символов.
Offline
Народ я уже спрашивал насчет трупов, ну когда убиваешь, он так и будет валяться долго. Труп остается актером, и если сех на улице перебить, то народу больше не станет, так мне объяснил Seemann. А что если использовать этот скрипт в SAMP? Ведь там нет педов, и когда игрока убьешь, бот будет валяться долго. Ну вот поэтому прошу вас, уважаемых профессионалов, написать такой скрипт, чтобы когда убиваешь, труп не исчезал, а валялся минут 8, за исключением если подъедут медики и не вылечат.
Offline
Как правильно оформлять чекпоинты? Ну что бы он "смотрел" стрелкой на следующий, и проверкой проехал ли игрок?
Offline
А как машину заправлять то, не пойму? Какие кнопки нажимать на заправке? У меня "save all 4.2"
Offline
А как машину заправлять то, не пойму? Какие кнопки нажимать на заправке? У меня "save all 4.2"
Нужно просто встать в нужное место и ничего не нажимать!
Last edited by grand (24-08-2008 11:46)
Offline
Да, действительно...
Кстати, если я в вертолете, преследующий полицейский вертолет не стреляет по мне, может есть скрипт заставляющий стрелять?
Offline
Можна грузить тока с .txd файлов.В справке ес
Что подгружается это из .txd я знаю прекрасно, но я не знаю команды, которая выводит эти самые изображения из txd-архивов. Всю справку я облазил, а этого не нашел, поэтому и спросил.
Выводить на экран комиксы было бы гораздо выгоднее, нежели пользоваться стандартной и весьма кривой анимацией...
Offline
Спасибо!
Offline
Я где-то видел один скрипт с таким описанием: Можно делать фотографии, будто из камеры, но не имея при себе фотоаппарата. Я сначала на него махнул рукой, а вот теперь найти не могу. Народ кто знает напишите его плиз!
Offline
Как правильно оформлять чекпоинты? Ну что бы он "смотрел" стрелкой на следующий, и проверкой проехал ли игрок?
Поможете?
Offline
Почитай статью Создание маркеров, сфер и корон.
Сейчас рассмотрим наиболее интересную команду для создания маркера, этой же командой мы сможем создать корону! Этот опкод чаще всего используется в гоночных миссиях, так как ему можно присвоить, аж целых 10 значений, все мы сейчас и рассомотрим! Итак сначала команда:
06D5: $mar1 = create_racing_checkpoint_at [X] [Y] [Z] point_to [X2] [Y2] [Z2] type 0 radius 5.0
Теперь выясним, что значит каждая цифра:
0 - тип маркера
X Y Z - координаты маркера
X2 Y2 Z2 - вторые 3 цифры, используются только в одном случае, если первй параметр 0, так как это маркер со стрелкой внутри, а эти цифры указывают куда направлена стрелка!
5 - диаметр сферы/короны
$mar1 - переменная сферы/короны
Далее, посмотрим все значения, которые можно поставить. (Я всё протестировал)
Параметры сфер:
0 - со стрелкой внутри
1 - с финишным флагом
2 - пустой
3 - корона (при приближении игрока убирается, потом опять появляется)
4 - корона
5 - корона (кривая)
6 - ярко-красная корона, при прохождении через неё исчезает
7 - подвижная корона (летает вверх вниз)
8 - то же, что и 7, только при прохождении через неё, она останавливается, а потом опять летает
Убрать такую сферу/корону можно командой:
06D6: disable_racing_checkpoint $mar1
Переместить можно командой:
07F3: move_racing_checkpoint $mar1 to 0.0 0.0 0.0
Для проверки нахождения игрока есть опкоды:
00EC: actor $PLAYER_ACTOR sphere 0 near_point 0.0 0.0 radius 4.0 4.0 00ED: actor $PLAYER_ACTOR sphere 0 near_point 0.0 0.0 radius 4.0 4.0 on_foot 00EE: actor $PLAYER_ACTOR sphere 0 near_point 0.0 0.0 radius 4.0 4.0 in_car 00EF: actor $PLAYER_ACTOR sphere 0 near_point 0.0 0.0 radius 4.0 4.0 stopped 00F0: actor $PLAYER_ACTOR sphere 0 near_point 0.0 0.0 radius 4.0 4.0 stopped_on_foot 00F1: actor $PLAYER_ACTOR sphere 0 near_point 0.0 0.0 radius 4.0 4.0 stopped_in_car
00FE: actor $PLAYER_ACTOR sphere 0 in_sphere 0.0 0.0 0.0 radius 4.0 4.0 4.0 00FF: actor $PLAYER_ACTOR sphere 0 in_sphere 0.0 0.0 0.0 radius 4.0 4.0 4.0 on_foot 0100: actor $PLAYER_ACTOR in_sphere 0.0 0.0 0.0 radius 4.0 4.0 4.0 sphere 0 in_car 0101: actor $PLAYER_ACTOR in_sphere 0.0 0.0 0.0 radius 4.0 4.0 4.0 sphere 0 stopped 0102: actor $PLAYER_ACTOR in_sphere 0.0 0.0 0.0 radius 4.0 4.0 4.0 sphere 0 stopped_on_foot 0103: actor $PLAYER_ACTOR in_sphere 0.0 0.0 0.0 radius 4.0 4.0 4.0 sphere 0 stopped_in_car
Также советую пользоваться Opcode Search Tool (Сервис/Инструменты/Поиск опкодов...)
[small][/small]
Offline
VcSaJen
Большое спасибо!
Offline
Как сделать так, что-бы актёр стрелял длинными очередями? А то слишком экономит бесконечные пули.
[small][/small]
Offline
Как заполучить хэндл объекта карты, я что-то потерял опкод, всё время переименовывают?
@Capushon - Я имею ввиду актёр стреляет по пол секунды, когда в магазине ещё полно патронов. В оригинальных миссиях актёры стреляли без задержек.
[---]
Edit:
Допустим, я перехватил объект карты INTERCEPTOR'ом, и теперь как освободить корректно переменную?
Никак не освобождать или использовать RemoveReferences?
Last edited by VcSaJen (02-09-2008 08:40)
[small][/small]
Offline
@VcSaJen - ничего не нужно. Interceptor не меняет референсы объектов, поэтому и трогать ничего не надо.
Offline
Скрипт камеры от первого лица:
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007 {$VERSION 3.1.0027} {$CLEO .cs} //-------------MAIN--------------- thread 'CAM' 1@ = 0 2@ = 0 0000: NOP 3@ = 0.0 4@ = 0.0 5@ = 0.0 :CAM_57 wait 0 6@ = 0.0 7@ = -0.1 8@ = 0.69 if Actor.Driving($PLAYER_ACTOR) else_jump @CAM_398 if 1@ == 1 else_jump @CAM_132 jump @CAM_268 :CAM_132 if and 0AB0: key_pressed 67 0AB0: key_pressed 17 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_57 jump @CAM_163 :CAM_163 1@ = 1 0059: 6@ += 3@ // (float) 0059: 7@ += 4@ // (float) 0059: 8@ += 5@ // (float) 067C: put_camera_on_actor $PLAYER_ACTOR with_offset 6@ 7@ 8@ rotation 0.0 90.0 0.0 0.0 2 2@ = 0 if 0AB0: key_pressed 17 0AB0: key_pressed 88 else_jump @CAM_57 wait 500 jump @CAM_57 :CAM_268 if and 80E1: not player 0 pressed_key 5 80E1: not player 0 pressed_key 7 else_jump @CAM_323 if 2@ == 1 else_jump @CAM_438 2@ = 0 jump @CAM_163 :CAM_323 if 84C8: not actor $PLAYER_ACTOR driving_flying_vehicle else_jump @CAM_57 Camera.Restore 09AD: set_vehicle_camera_mode 0 2@ = 1 jump @CAM_57 :CAM_359 if 0AB0: key_pressed 17 0AB0: key_pressed 88 else_jump @CAM_57 Camera.Restore_WithJumpCut 09AD: set_vehicle_camera_mode 2 1@ = 0 jump @CAM_57 :CAM_398 if 1@ == 1 else_jump @CAM_57 Camera.Restore 09AD: set_vehicle_camera_mode 2 Camera.SetBehindPlayer 1@ = 0 jump @CAM_57 :CAM_438 wait 0 jump @CAM_449 :CAM_449 if and 0AB0: key_pressed 17 0AB0: key_pressed 103 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_490 5@ += 0.1 jump @CAM_163 :CAM_490 if and 0AB0: key_pressed 17 0AB0: key_pressed 105 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_531 5@ -= 0.1 jump @CAM_163 :CAM_531 if and 0AB0: key_pressed 17 0AB0: key_pressed 104 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_572 4@ += 0.1 jump @CAM_163 :CAM_572 if and 0AB0: key_pressed 17 0AB0: key_pressed 98 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_613 4@ -= 0.1 jump @CAM_163 :CAM_613 if and 0AB0: key_pressed 17 0AB0: key_pressed 100 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_654 3@ -= 0.1 jump @CAM_163 :CAM_654 if and 0AB0: key_pressed 17 0AB0: key_pressed 102 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_695 3@ += 0.1 jump @CAM_163 :CAM_695 if and 0AB0: key_pressed 17 0AB0: key_pressed 101 Actor.Driving($PLAYER_ACTOR) else_jump @CAM_359 03C0: 9@ = actor $PLAYER_ACTOR car 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA 0730: car 9@ damage_component 4 // versionA jump @CAM_163 end_thread
Я хочу сделать так, чтобы в машине можно было крутить башкой, тоесть вращать эту камеру. Нашел в справке опкод:
0936: set_camera 0.0 90.0 0.0 position_to 0.0 2 0.0 time 90.0 drop_mode 0.0
Но ведь он только кидает камеру в заданные координаты, а как к игроку прицепить камеру, которую можно вращать?
не надо материться
Last edited by Seemann (04-09-2008 11:55)
Offline
Здравствуйте. Как можно получить машину которое находится поблизости от игрока? Например получить её координаты, телепортировать машину и пр.
Offline
Здравствуйте. Как можно получить машину которое находится поблизости от игрока? Например получить её координаты, телепортировать машину и пр.
currentPlayerPed->pIntelligence.vehicleScanner.entities - массив указателей на ближайшие машины
currentPlayerPed->pIntelligence.vehicleScanner.count - количество элементов в массиве
все адреса и смещения есть в последней базе.
Offline
Можно как-нибудь изменить список объектов во время игры? (object.dat)
[small][/small]
Offline
все адреса и смещения есть в последней базе.
Какая база имеется ввиду?
И ещё вопрос. Где найти все hex коды клавиш, которые проверяются с помощь key_pressed?
Offline