[ Новые сообщения · Участники · Правила форума · Поиск · RSS ] |
Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder (Вы можете получить ответы на вопросы по SB) |
Вопросы по скриптингу Sanny Builder |
Если у вас возник вопрос по скриптингу Sanny Builder, обращайтесь! Мы постараемся решить вашу проблему
![]() УВАЖАЕМЫЕ ПОЛЬЗОВАТЕЛИ! ПРОСЬБА КОД СКРИПТОВ ПОМЕЩАТЬ В КОНСТРУКЦИЮ КОДА: ![]() ![]() Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена. Прикрепления: 0248203.png(0.9 Kb) · 9085525.png(0.2 Kb)
|
Ребят нужна помощь, вообщем я пытаюсь сделать бой с 2 и более противниками, мне нужно найти ближаших 5 персов от игрока, и тот что ближе должен атаковать игрока, а остальные выполнять иное действие.
Попытался сделать покат только на 2 персов. Код {$VERSION 3.1.0027} {$CLEO .cs} //-------------MAIN--------------- thread 'SYS' :SYS_11 wait 0 if Player.Defined($PLAYER_CHAR) jf @SYS_11 04C4: store_coords_to 17@ 18@ 19@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0 0AE1: 1@ = random_actor_near_point 17@ 18@ 19@ in_radius 10.0 find_next 1 pass_deads 1 //IF and SET 0AE1: 2@ = random_actor_near_point 17@ 18@ 19@ in_radius 10.0 find_next 1 pass_deads 1 //IF and SET 04C4: store_coords_to 17@ 18@ 19@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0 wait 1000 00A0: store_actor 1@ position_to 10@ 11@ 12@ wait 1000 00A0: store_actor 2@ position_to 13@ 14@ 15@ 0509: 3@ = distance_between_XY 17@ 18@ and_XY 10@ 11@ 0509: 4@ = distance_between_XY 17@ 18@ and_XY 13@ 14@ if 001D: 4@ > 3@ // (int) then marker.CreateAboveActor($ActMark,2@) marker.SetColor($ActMark,1) 0812: AS_actor 1@ perform_animation "HIT_FIGHTG_LKICK2" IFP_file "FIGHTH" 8.0 loopA 0 lockX 0 lockY 0 lockF 1 time -1 // versionB else marker.CreateAboveActor($ActMark,1@) marker.SetColor($ActMark,1) 05BE: AS_kill_actor 2@ wait 3000 end jump @SYS_11 но игра почему то вылетает.... я знаю что можно сделать поиск персонажей вот так Код 0AE2: 0@(28@,5i) = random_vehicle_near_point 29@ 30@ 31@ in_radius 100.0 find_next 0 pass_wrecked 1 //IF and SET Отредактировал mc_qwert - Суббота, 31.08.13, 14:22
|
Я бы использовал такой вариант, перебираешь всех игроков в радиусе от 0.0 до 20.0 например в циклк с шагом 0.5, первый кого найдет будет ближайшим игроком, потом к нему еще 4 находишь, просто при нахождении ставь счетчик и ++ при нахождении актера а потом если счетчик равен 5 break, можно все и сложне сделать :/
|
alfazlo, Cпасибо, я тоже подумал об этом, но я не знаю насколько быстро это всё выполниться)
Если есть ещё варианты предлагайте) |
Возможно ли каким-то образом индексировать элементы массива при помощи текста? Например, $SAVE_PICKUPS[MCSKATEPARK]. Было бы очень удобно.
|
alfazlo, прямой рендеринг при выполнении скриптов невозможен. Я даже делал плагин, который позволяет производить рендер (http://ru-script.3dn.ru/forum/6-88-1). Правда, сейчас он уже не актуален, т.к. я развил эту идею в Plugin SDK (SDK для написания плагинов), больше информации о котором здесь появится позже.
|
И ещё:
Код 0605: actor $PLAYER_ACTOR perform_animation "FIGHTKICK_B" IFP "FIGHT_E" framedelta 1.0 loop 0 lockX 0 lockY 0 lockF 0 time -1 Почему работает только при framedelta = 4.0? Я вроде читал на форуме санника, что Цитата (Voron295) framedelta нужно переименовать в interpolation. Этот параметр отвечает за плавность перехода в анимацию (и за плавность выхода из анимации или перехода в другую анимацию). Чем больше этот параметр - тем быстрее и заметнее переход. Чем меньше параметр - тем плавнее и красивее. Обычно лучше ставить его в районе 4.0-15.0. Если поставить 10000.0, то актёр моментально примет начальную позу анимации, т.е. вообще без перехода. Добавлено (31.08.13, 20:00) Добавлено (31.08.13, 20:38) Код $SAFEPLACES_TO_GET_DURING_STORYLINE = 0 gosub @STORY_SAFEPL create_thread @STORY_SAFEPL_CHECK 0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 1835.452 -1372.777 13.5854 Actor.Angle($PLAYER_ACTOR) = 275.7124 Car.Destroy(5@) Actor.DestroyInstantly(1@) wait 1000 02A3: enable_widescreen 0 fade 1 500 01E3: show_text_1number_styled GXT 'M_PASS' number 100 time 5000 style 1 // Ї…CC…• ‹‘ЊO‡EA!~n~~w~$~1~ 0394: play_music 1 Player.Money($PLAYER_CHAR) += 100 0318: set_latest_mission_passed 'M2NAME' $TOTAL_STEVENSON_MISSIONS_PASSED += 1 return |
Slivkin-Sergey, 'M2NAME' - это GXT запись, она должна быть создана либо в GXT, либо в .fxt файле (нужен gxthook.cleo). FXT файлы строятся так:
ИМЯ_ЗАПИСИ Текст записи К примеру: M2NAME Mission 02 Тогда будет написано Mission 02, когда в опкоде написано M2NAME. 2109: create_special_actor $VITAL in_front_of_computer
|
Vital, зачем меня за дурачка держишь? У меня есть GXT запись M2NAME, содержание "Training".
Добавлено (31.08.13, 21:14) |
Slivkin-Sergey, дурачком я тебя не считаю, не волнуйся, просто можно всегда не знать каких-то нюансов или забыть их, к примеру, пробел в создании fxt записи. Кстати, попробуй использовать FXT, это гораздо удобнее, не нужно указывать файл, просто сразу запись. Создание GXT записей немного замороченное, потому рекомендую именно .fxt, у меня всегда работало, к тому же можно перевод делать таким образом
![]() Отредактировал Vital - Суббота, 31.08.13, 23:58
2109: create_special_actor $VITAL in_front_of_computer
|
Цитата (DK22Pac) alfazlo, прямой рендеринг при выполнении скриптов невозможен. Я даже делал плагин, который позволяет производить рендер (http://ru-script.3dn.ru/forum/6-88-1). Правда, сейчас он уже не актуален, т.к. я развил эту идею в Plugin SDK (SDK для написания плагинов), больше информации о котором здесь появится позже. |
Цитата (Vital) Кстати, попробуй использовать FXT, это гораздо удобнее, не нужно указывать файл, просто сразу запись. Создание GXT записей немного замороченное, потому рекомендую именно .fxt, у меня всегда работало, к тому же можно перевод делать таким образом Ну, FXT для проекта на main'е несолидно ![]() А так, спасибо за помощь И ещё: кто-нибудь видит здесь причину вылета? Код //-------------------Mission 3----------------------- :STEVEN2 thread "STEVEN2" gosub @STEVEN2_1 if wasted_or_busted then gosub @STEVEN2_FAILED end gosub @STEVEN2_CLEANUP end_thread :STEVEN2_1 wait 0 Player.CanMove($PLAYER_CHAR, 0) 02A3: enable_widescreen 1 Actor.PutAt($PLAYER_ACTOR, 1825.2642, -1369.931, 14.4219) Actor.Angle($PLAYER_ACTOR) = 89.6142 04ED: "DEALER" repeat wait 0 until 04EE: "DEALER" 0812: actor $PLAYER_ACTOR perform_animation "DEALER_IDLE" IFP "DEALER" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 0 time -1 04C4: store_coords_to $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 from_actor $PLAYER_ACTOR with_offset -1.2 -1.5 1.0 Camera.SetPosition($TEMPVAR_FLOAT_1, $TEMPVAR_FLOAT_2, $TEMPVAR_FLOAT_3, 0.0, 0.0, 0.0) Camera.OnPed($PLAYER_ACTOR, 15, 2) 03DE: set_pedestrians_density_multiplier_to 0.0 fade 1 500 04C4: store_coords_to $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 from_actor $PLAYER_ACTOR with_offset -1.2 4.5 1.0 0460: set_camera_transverse_delay 0.0 time 10000 Camera.SetPosition($TEMPVAR_FLOAT_1, $TEMPVAR_FLOAT_2, $TEMPVAR_FLOAT_3, 0.0, 0.0, 0.0) Camera.OnPed($PLAYER_ACTOR, 15, 1) wait 6000 0812: actor $PLAYER_ACTOR perform_animation "DEALER_IDLE_02" IFP "DEALER" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 1 time -1 00BC: show_text_highpriority GXT 'M3R1' time 4000 flag 1 wait 4000 fade 0 500 wait 500 02A3: enable_widescreen 0 fade 1 500 Player.CanMove($PLAYER_CHAR, 1) Camera.Restore_WithJumpCut() $ONMISSION = 0 wait 500 return :STEVEN2_FAILED 00BA: text_styled 'M_FAIL' 5000 ms 1 // ~r~MISSION FAILED! return :STEVEN2_CLEANUP $ONMISSION = 0 // integer values mission_cleanup return Добавлено (01.09.13, 14:09) Добавлено (04.09.13, 11:31) Код 0079: 271@ += frame_delta_time * 1.0 // (float) 0079: 272@ += frame_delta_time * 1.0 // (float) 0079: 273@ += frame_delta_time * 1.0 // (float) Взято из ориг. майна, миссия "Мясной бизнес", момент, где чувак в замедленном времени кидает коктейль Молотова. |
Slivkin-Sergey, если не ошибаюсь, frame_delta_time как-то связано с FPS (Frames Per Second - кол-во кадров в секунду).
2109: create_special_actor $VITAL in_front_of_computer
|
Цитата (Vital) FPS (Frames Per Second - кол-во кадров в секунду). Эмм... --- Vital, ещё она используется в опкодах для воспроизведения анимаций, чем меньше её значение, тем плавнее переход от одной анимации к другой, или от анимации к исходному положению. |
У меня проблема с прогой почему у меня когда я захожу в игру нахожу место сворачиваю игру в sany builder нажимаю редактор координат а у меня все значения по 0 хотя я знаю что я не на 0 остановился в игре. Что делать
|
manrimods, причины могут быть разные, но как вариант - запустить программу в режиме администратора.
|
ребят, как убрать надпись с главного экрана жёлтым шрифтом внизу слева "CLEO 3" ? а то очень уж мешает, всю картину портит.
Евгений_Сергеевич
|
blackful, думаю с помощью клео ты этого не сделаешь, придётся задейстовать посторонние методы и всё равно наврятли получится
Отредактировал HYPERMUV - Суббота, 07.09.13, 19:16
|
В каком файле находится конфигурация, отвечающая за оружие копов, бандитов, обычных прохожих?
|
Как можно изменить цвет гроувских территорий с зелёного на другой?
Добавлено (20.09.13, 10:21) Добавлено (20.09.13, 10:22) Код 04BD: set_car 40@ is_part_of_convoy 0 |
Цитата (Slivkin-Sergey) Код 04BD: set_car 40@ is_part_of_convoy 0 Этот опкод добавляет машины в конвой. Т.е машины, на которые применен этот опкод, будут ехать рядом. |
| |||