[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder (Вы можете получить ответы на вопросы по SB)
Вопросы по скриптингу Sanny Builder
wmysterio
Администраторы
Скриптер
22.11.11 21:52
Offline
Если у вас возник вопрос по скриптингу Sanny Builder, обращайтесь! Мы постараемся решить вашу проблему wink Это ещё не значит, что все прям бросятся решать во чтобы то не стало, но ответ вы сможете вы получить как вариант решения или как невозможность или сложность решения.
УВАЖАЕМЫЕ ПОЛЬЗОВАТЕЛИ! ПРОСЬБА КОД СКРИПТОВ ПОМЕЩАТЬ В КОНСТРУКЦИЮ КОДА:

или

Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена.
Прикрепления: 0248203.png(0.9 Kb) · 9085525.png(0.2 Kb)

wmysterio
Администраторы
Скриптер
07.03.16 05:58
Offline
Цитата Slivkin-Sergey ()
А вот теперь возникла другая проблема. Недавно я понял, что время, за которое текст будет рисоваться на экране (033E: set_draw_text_position 500.0 300.0 GXT 'TEST'), зависит от мощностей компьютера: чем быстрее он обработает все опкоды стилизации, рассчитает физику, выведет картинку на экран и т.д., тем меньше времени пробудет на экране текст. Я пробовал в CLEo скрипте с помощью переменной-счётчика 33@ замерить длительность выполнения одного и того же цикла вывода текста - результаты каждый раз были разные. В связи с этим вопрос - как сделать, чтобы текст выводился именно столько, сколько нужно, чтобы не зависел от конфигурации и загруженности компа? Может, есть какой-то аналог счётчиков 32@ и 33@ для миссий?
Ну всегда какой-то расчёт будет зависеть от мощности компа, к примеру даже перемещение камеры может быть быстрее, чем нужно. В случаи с рисованием, то куда проще, так как мы сами регулируем длительность рисования. К примеру, стандартный поток вывода выиграша игрока Рокстаровцы реализовали с помощью текущего времени:
Код
:CASHWIN
03A4: name_thread 'CASHWIN'
01BD: $Current_Time_in_ms2 = current_time_in_ms
00D6: if
0039:   1@ == 0
004D: jump_if_false @CASHWIN_57
008B: 3@ = $Current_Time_in_ms2 // (int)
000A: 3@ += 3000
0002: jump @CASHWIN_73

:CASHWIN_57
008B: 3@ = $Current_Time_in_ms2 // (int)
005A: 3@ += 1@ // (int)

:CASHWIN_73
0001: wait 0 ms
00D6: if
8256:   not player $PLAYER_CHAR defined
004D: jump_if_false @CASHWIN_95
004E: end_thread

:CASHWIN_95
01BD: $Current_Time_in_ms2 = current_time_in_ms
00D6: if
001E:   $Current_Time_in_ms2 > 3@ // (int)
004D: jump_if_false @CASHWIN_121
004E: end_thread

:CASHWIN_121
00D6: if
0039:   0@ == 0
004D: jump_if_false @CASHWIN_234
0050: gosub @CASHWIN_576
0340: set_text_draw_RGBA 180 180 180 255
00D6: if
0039:   2@ == 69
004D: jump_if_false @CASHWIN_206
033E: set_draw_text_position 320.0 180.333 GXT 'BJ_PUSH'  // ­?¤©¬
0002: jump @CASHWIN_227

:CASHWIN_206
033E: set_draw_text_position 320.0 180.333 GXT 'NOWIN'  // ~w~?‘ ?PO…‚PA‡!

:CASHWIN_227
0002: jump @CASHWIN_569

:CASHWIN_234
00D6: if
0019:   0@ > 0
004D: jump_if_false @CASHWIN_422
0050: gosub @CASHWIN_576
0871: init_jump_table 2@ total_jumps 2 default_jump 1 @CASHWIN_384 jumps 45 @CASHWIN_322 80 @CASHWIN_353 -1 @CASHWIN_415 -1 @CASHWIN_415 -1 @CASHWIN_415 -1 @CASHWIN_415 -1 @CASHWIN_415

:CASHWIN_322
045A: draw_text_1number 320.0 155.333 GXT 'ALLRACE' number 0@  // ‹CE ‚O­K… ‹‘…‚PA­‘!~n~~w~$~1~
0002: jump @CASHWIN_415

:CASHWIN_353
045A: draw_text_1number 320.0 155.333 GXT 'PL_07' number 0@  // ?o—e?a!~n~~w~$~1~
0002: jump @CASHWIN_415

:CASHWIN_384
045A: draw_text_1number 320.0 155.333 GXT 'WINNER' number 0@  // ?O?E?A!~n~~w~$~1~
0002: jump @CASHWIN_415

:CASHWIN_415
0002: jump @CASHWIN_569

:CASHWIN_422
008A: $3396 = 0@ // (int)
0010: $3396 *= -1
0050: gosub @CASHWIN_576
0871: init_jump_table 2@ total_jumps 1 default_jump 1 @CASHWIN_538 jumps 80 @CASHWIN_507 -1 @CASHWIN_569 -1 @CASHWIN_569 -1 @CASHWIN_569 -1 @CASHWIN_569 -1 @CASHWIN_569 -1 @CASHWIN_569

:CASHWIN_507
045A: draw_text_1number 320.0 155.333 GXT 'PL_10' number $3396  // ~r~?? ?po?™pa?!~n~~w~-$~1~
0002: jump @CASHWIN_569

:CASHWIN_538
045A: draw_text_1number 320.0 155.333 GXT 'LOSER' number $3396  // ~r~?‘ ?PO…‚PA‡!~n~~w~-$~1~
0002: jump @CASHWIN_569

:CASHWIN_569
0002: jump @CASHWIN_73

:CASHWIN_576
03E4: set_text_draw_align_right 0
0341: set_text_draw_align_justify 0
0343: set_text_draw_linewidth 640.0
0348: enable_text_draw_proportional 1
0345: enable_text_draw_background 0
033F: set_text_draw_letter_size 1.3 3.36
0342: set_text_draw_centered 1
081C: draw_text_outline 2 RGBA 0 0 0 255
0349: set_text_draw_font 3
0904: get_interface 6 color_RGBA_to $Color_Red $Color_Green $Gambles_CashWin $3400
0340: set_text_draw_RGBA $Color_Red $Color_Green $Gambles_CashWin 255
0051: return
Опкод 01BD.

SINGER
Проверенные
11.03.16 22:06
Offline
Здравствуйте!
Есть неплохая идея для миссии перевозок груза. Получится что-то на подобии "Дальнобойщик-2".
Вот смотрите: есть машина, грузовик или мотоцикл, но от них толку практически нет! имеется ввиду в плане доходности. Лишь некоторые автомобили могут зарабатывать деньги.
Я хочу описать вам свою идею в которой можно будет заработать даже на велосипеде! Вот ее суть:
На карте Сан-Андреаса в трех разных городах существует по одной или две станции грузоперевозок. Берем любое авто, даже спецтранспорт или велик и едем туда. Становимся на маркер и получаем груз, а также точку, куда его нужно довезти (лучше всего другой город или подальше в сельскую местность, а еще лучше и то и другое, только рандомно). Вы заработаете больше если у вас грузовик, если легковушка - меньше, если мото или велик - вообще фигню. Но, также рандомно, бывают и не совсем легальные грузы, которые через определенное время преследуются полицией или бандитами (рандомно) или теми и другими. За такие грузы вы получаете двойную прибыль, но они, нелегальные грузы, бывают редко. Таким образом, можно будет зарабатывать на любой тачке в игре!
Это не только интересная идея но и приближение к реализму.
Исключить нужно водный и воздушный транспорт. Можно было бы оставить вертушки, но это не интересно!
Кстати, таймер можно убрать вообще! А если груз срочный, типа почты, то можно поставить. Также рандомно. Хотя лучше чтобы таймера не было!  happy
Если кто возьмется и нужно будет что-то уточнить или дорисовать - обращайтесь.

Slivkin-Sergey
Модераторы
22.03.16 13:36
Offline
SINGER, я сейчас свой проект делаю, но твою идею тоже возьму на заметку. Если закончатся мысли для новых миссий, реализую, пока буду придумывать.

А у меня ещё одна проблема. Почему-то не ставится номер для машины:
Код
0674: set_car_model #PEREN numberplate "XXXXXXXX"
$MS_CAR = Car.Create(#PEREN, 1808.1262, -1432.3154, 13.1323)

Всё равно создаётся какой-то произвольный набор символов.

SINGER
Проверенные
22.03.16 17:32
Offline
Цитата Slivkin-Sergey ()
SINGER, я сейчас свой проект делаю, но твою идею тоже возьму на заметку. Если закончатся мысли для новых миссий, реализую, пока буду придумывать.
О! Отлично! Если доберешься к моей идеи и реализуешь ее - отпиши в личку, если не сложно. Заранее благодарю!

wmysterio
Администраторы
Скриптер
22.03.16 18:49
Offline
Цитата Slivkin-Sergey ()
Почему-то не ставится номер для машины
Попробуй использовать 7 символов в место 8.

Также номера "превращаются" автоматически в произвольный набор символов, если сесть в машину и немного поездить.

Slivkin-Sergey
Модераторы
23.03.16 13:49
Offline
wmysterio, спасибо, попробую. Ещё такой вопрос: можно ли как-нибудь "заморозить" анимацию актёра, т.е. чтоб он выполнял её до опред. момента и потом замер в этом положении?

Добавлено (23.03.16, 12:49)
---------------------------------------------
Неа, всё равно номера не ставятся...


wmysterio
Администраторы
Скриптер
23.03.16 16:39
Offline
Цитата Slivkin-Sergey ()
Неа, всё равно номера не ставятся
А какая собственно машина?
Вот мой код:
Код
{$CLEO}
0000:
Model.Load(#ADMIRAL)
038B: load_requested_models
0674: set_car_model #ADMIRAL numberplate "MYSTERIO"
0@ = Car.Create(#ADMIRAL, 2490.4504, -1674.2688, 13.3359)
Car.Angle(0@) = 88.4117          
0A93: end_custom_thread
Результат:

Номера успешно установлены, при чём с 8-ми символами. Но есть одно НО! Номера установлены только позади транспорта, а впереди - произвольный набор букв и цифр.
Другой скрипт(добавим ещё одну машину):
Код
{$CLEO}
0000:
Model.Load(#ADMIRAL)  
Model.Load(#PICADOR)
038B: load_requested_models
0674: set_car_model #ADMIRAL numberplate "MYSTERIO"
0@ = Car.Create(#ADMIRAL, 2490.4504, -1674.2688, 13.3359)
Car.Angle(0@) = 88.4117      
0674: set_car_model #PICADOR numberplate "MYSTERIO"
1@ = Car.Create(#PICADOR, 2489.2458, -1679.592, 13.0551)
Car.Angle(1@) = 88.404
Model.Destroy(#ADMIRAL)  
Model.Destroy(#PICADOR)         
0A93: end_custom_thread
Смотрим на неё:

Видно, что номера спереди, а позади - произвольный набор букв о_0

Вывод: Для каждой тачки номера ставятся индивидуально. Например в #HOTRING номера вообще не появляются
Прикрепления: 1919916.png(257.8 Kb) · 2345223.png(259.1 Kb)

Slivkin-Sergey
Модераторы
23.03.16 17:05
Offline
wmysterio, у меня #PEREN.

Добавлено (23.03.16, 16:05)
---------------------------------------------
И на нём и спереди и сзади один и тот же произвольный набор символов.


wmysterio
Администраторы
Скриптер
23.03.16 17:16
Offline
Цитата Slivkin-Sergey ()
И на нём и спереди и сзади один и тот же произвольный набор символов.
Тестировал у себя - тоже самое - новые номера не цепляются sad

Slivkin-Sergey
Модераторы
04.04.16 17:52
Offline
Спасибо за тесты, теперь хоть буду знать, что это не очередной бзик моей ГТАшки. Эх, а сколько можно было бы "пасхальных" номеров сделать - у меня ж эта машина чуть ли не в каждой миссии.

Добавлено (04.04.16, 16:52)
---------------------------------------------
Есть ли возможность в scr.scm добавить свои внешние скрипты, чтоб работали? Кроме парашюта. И ещё, надо воспроизвести несколько аудистримов одновременно, можно ли так сделать?

Отредактировал Slivkin-Sergey - Воскресенье, 03.04.16, 16:22

wmysterio
Администраторы
Скриптер
06.04.16 05:41
Offline
Цитата Slivkin-Sergey ()
Есть ли возможность в scr.scm добавить свои внешние скрипты, чтоб работали?
Делаешь мод как обычный мейн, а затем переносишь оба файла в mission pack. Работать будут только если начать игру с этого mission pack'а.
Цитата Slivkin-Sergey ()
И ещё, надо воспроизвести несколько аудистримов одновременно, можно ли так сделать?
Ну у меня спокойно получалось воспроизводить несколько аудио в "Карьерист"е.

Slivkin-Sergey
Модераторы
06.04.16 12:33
Offline
Цитата wmysterio ()
Делаешь мод как обычный мейн, а затем переносишь оба файла в mission pack. Работать будут только если начать игру с этого mission pack'а.

Да-да, я вот про сам принцип знал, просто читал где-то (может, даже здесь), что в миссион паках, кроме парашютов, никаких больше внешних скриптов не добавить стандартным способом.
Цитата wmysterio ()
Ну у меня спокойно получалось воспроизводить несколько аудио в "Карьерист"е.

У меня просто зацикленный звук, и я во время него воспроизвожу (Audiostream.Play) ещё один, а он не воспроизводится.

wmysterio
Администраторы
Скриптер
06.04.16 14:49
Offline
Цитата Slivkin-Sergey ()
Да-да, я вот про сам принцип знал, просто читал где-то (может, даже здесь), что в миссион паках, кроме парашютов, никаких больше внешних скриптов не добавить стандартным способом.
Не слышал я о таком. Сколько бы я внешних скриптов не делал, всё работало.
Цитата Slivkin-Sergey ()
У меня просто зацикленный звук, и я во время него воспроизвожу (Audiostream.Play) ещё один, а он не воспроизводится.
Покажи лучше фрагмент кода. В версии клео 4.1 работало нормально. Возможно Deji сделал ограничение.

morgenstern089
Пользователи
01.10.16 15:22
Offline
Доброго времени суток,господа скриптеры
У меня небольшая проблема в скрипте,он должен по сути создавать сферу (красный кружок) в определённой точке,а на деле гта просто вылетает в середине загрузки.
Вот код -
Код
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP

:NONAME_50
0001: wait 0
03BC: 1@ = create_sphere_at -1.0 -32.6 -23.0 radius 1.0
004E: terminate_this_script
 

Так же хочу отметить,что SB при компиляции заменяет строку

Код
03BC: 1@ = create_sphere_at -1.0 -32.6 -23.0 radius 1.0
 на

Код
03BC: add_sphere 1@ -1.0 -32.6 radius -23.0 store_to 1.0

что с этим делать? 

Заранее скажу спасибо =)


richardslade
Пользователи
03.10.16 18:31
Offline
Приветствую всех, кто здесь есть. У меня есть такой вопрос: в каких типах переменных можно хранить строки с длиной больше 16 символов? Некоторые опкоды требуют именно переменных, а не ключей в таблицах с текстами

morgenstern089, замени опкод 004E: terminate_this_script на 0A93: end_custom_thread, первый нужен для корректной работы main.scm, второй для cleo. А что компилятор заменяет строку, это не смертельно. По сути, он пишет то же самое другими словами

morgenstern089
Пользователи
03.10.16 19:54
Offline
richardslade, я бы насчёт замены строки и слова бы не сказал,ноооо они смещаются и получается совсем не то

richardslade
Пользователи
03.10.16 20:04
Offline
morgenstern089, насколько я понимаю работу компилятора, он вычленяет из строки нужные программе данные, например, цифры, строки, указатели на актеров, сферы и прочее, а потом создает клео-файл, где использует только эти данные. Соответственно при декомпиляции санни билдер по образцу из файла генерирует строки, понятные для человека, но с теми данными, которые были зашиты в клео-файл. Так что значение имеет только номер опкода в его начале (0605, к примеру) и данные, нужные для его работы (числа, строки, хэндлы, иной стафф). Остальное можно писать хоть на русском, я проверял, компилятору было фиолетово

wmysterio
Администраторы
Скриптер
03.10.16 20:34
Offline
morgenstern089, Параметры напрямую зависят от того, в каком режиме Вы редактируете скрипт. По-умолчанию должно компилировать как
Код
03BC: 1@ = create_sphere_at -1.0 -32.6 -23.0 radius 1.0
, но если режим другой, например "оригинальные опкоды SA", то будет вариант:
Код
03BC: add_sphere 1@ -1.0 -32.6 radius -23.0 store_to 1.0
По-идеи этот опкод в оригинале должен иметь вид
Код
03BC: add_sphere -1.0 -32.6 -23.0 radius 1.0 store_to 1@

morgenstern089
Пользователи
03.10.16 22:04
Offline
Низкий поклон всем,кто помог,этот опкод исправил ситуацию =)
Код
03BC: add_sphere -1.0 -32.6 -23.0 radius 1.0 store_to 1@

ilgarhuseynoff97
Пользователи
13.11.16 14:35
Offline
Здавствуйте все! Кто может помочь со скриптом, чтобы точность стрельбы у банд была 100%. В педстат едитор редактировал, но все равно не помогает. Если уже есть такой мод, скиньте пожалуйста кому не трудно.

Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder (Вы можете получить ответы на вопросы по SB)
Поиск: