You are not logged in.
@Seemann
Я решил написать новый скрипт бензомода, и хочу чтобы у каждого авто был свой объём бензобака, который будет записан в .ini-файле, а для этого я использую Quick Opcode Alexander'а, так как по другому не умею работать с .ini. А QO работает только с 0@v и не в какую не хочет работать с 0@s.
Конечно можно выкрутиться, но мне интересно - можно или нет.
А зачем такие сложности с ини файлом? Тебе всего-то нужна одна цифра для каждой модели. Теоретически тебе можно хранить эти значения в самом скрипте (внутри hex..end), либо сделать файл, в котором каждый символ - это объем бака соответствующей модели. Например пишешь
1 | 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
Скрипт камеры от первого лица:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | // 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