[ Новые сообщения · Участники · Правила форума · Поиск · 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
Администраторы
Скриптер
02.08.14 11:46
Offline
Цитата Shon_Uoker ()
Делал скрипт покупки одежды. Если игрок встает на сферу, то: игроку нельзя двигаться, пропадает радар, появляется надпись внизу. Если игрок нажал D то у игрока меняется скин, если нажал SPACE, то у игрока скин остается навсегда, и пропадают деньги(типа купил), если нажал ENTER, то: у игрока возвращается прошлый скин, появляется радар, игрок может двигаться. Вот мой скрипт, но почему то надпись появляется сразу после начала новой игры, и когда встаю на сферу, то ничего не происходит.
Вот образец. Я не тестировал в игре, но должно что-то получитс
Код
{$CLEO .cs}   
  thread 'SHOP'  
  03BC: $SHOP = create_sphere_at 217.3893 -99.0854 1005.2578 radius 1.0   

  :SHOP_1  
  wait 0  
  if and   
  not Actor.Driving($PLAYER_ACTOR)   
  0101:actor $PLAYER_ACTOR in_sphere 217.3893 -99.0854 1005.2578 radius 1.0 1.0 1.0 sphere 0 stopped   
  jf @SHOP_1   
  gosub @SHOP_LOAD_MODEL  
  0665: get_actor $PLAYER_ACTOR model_to 1@  
  PLayer.CanMove($PLAYER_CHAR) = false  
  Actor.SetImmunities($PLAYER_ACTOR, 1, 1, 1, 1, 1)   
  Actor.Angle($PLAYER_ACTOR) = 95.0   
  0581: enable_radar 0  
  00BB: show_text_lowpriority GXT 'SHOP1' time 5000 flag 1   
  2@ = 0  

  :SHOP2   
  wait 0  
  if  
  0AB0:   key_pressed 32 // Space  
  then  
  jump @SHOP_END  
  end  
  if  
  0AB0:   key_pressed 13 // Enter  
  then  
      if  
      82F2:   not actor $PLAYER_ACTOR model == 1@  
      then  
      09C7: change_player $PLAYER_CHAR model_to 1@   
      end  
  jump @SHOP_END  
  end  
  if  
  0AB0:   key_pressed 68 // D  
  then  
  2@ += 1  
      if  
      2@ > 1  
      then  
      2@ = 0  
      end  
      if  
      2@ == 0  
      then  
      09C7: change_player $PLAYER_CHAR model_to #SBMYTR3  
      else  
      09C7: change_player $PLAYER_CHAR model_to #BMORI  
      end  
  wait 1000  
  end  
  jump @SHOP2  

  :SHOP_LOAD_MODEL  
  if  
  not Model.Available(#SBMYTR3)  
  then  
  Model.Load(#SBMYTR3)   
  end  
  if  
  not Model.Available(#BMORI)  
  then  
  Model.Load(#BMORI)     
  end   
  038B: load_requested_models   
  return  

  :SHOP_END  
  Player.CanMove($PLAYER_CHAR) = true  
  Actor.SetImmunities($PLAYER_ACTOR, 0, 0, 0, 0, 0)   
  Model.Destroy(#SBMYTR3)  
  Model.Destroy(#BMORI)   
  0A93: end_custom_thread
P.S В дальнейшем, используйте только 1 заголовок для метод и меняйте её окончания. Лично у меня иногда игра крашит из того, что я использую разный префикс для меток. Плюс, по-моему, код лучше читается.

BoPoH
Друзья
02.08.14 17:30
Offline
Цитата wmysterio ()
:SHOP_1
wait 0
if and  
not Actor.Driving($PLAYER_ACTOR)  
0101:actor $PLAYER_ACTOR in_sphere 217.3893 -99.0854 1005.2578 radius 1.0 1.0 1.0 sphere 0 stopped  
jf @SHOP1  

Ошибка. Переименуй метку SHOP_1 в SHOP1 или наоборот.

SnakeR
Проверенные
03.08.14 13:15
Offline
Ставлю на карту тачку

Код
0@ = car.Create(#VOODOO,2573.1941, -2194.3745, -0.2187)  
car.Angle(0@) = 0.0

Создаю актера отдельно 
Код
actor.Create($IVAN,4,#BMYPOL1,2571.1941, -2194.3745, -0.2187)
actor.Angle($IVAN) = 0.0

потом пытаюсь его посадить в машину 
Код
036A: put_actor $IVAN in_car 0@
  В итоге, он появляется рядом с машиной как труп, причем когда машина прорисовывается, кажется что она падает на него, тот же эффект если создавать актера сразу как водителя

Код
actor.CreateAsDriver($IVAN,4,#BMYPOL1,0@)
В чем может быть проблема?

И еще, в файле где хранятся аудиозоны, добавил свою с нужными координатами, но она не работает(
Запускаю ее так
Код
0917: audio_zone 'LOWRIDERS' enable_sound 1

Добавлено (03.08.14, 12:15)
---------------------------------------------
И еще, вот эти опкоды на тачку никак не действуют


Код
0ABE: vehicle 0@ engine_on
067F: set_car 0@ headlights 1

Vital
Модераторы
Скриптер
03.08.14 16:14
Offline
Насчёт актёра идей пока нет у меня, а вот про два опкода нашёл кое-что на очень полезном сайте, которым рекомендую пользоваться, если нет уверенности в работе опкодов: http://gtag.gtagaming.com/opcode-database/
Там сказано, что 0АВЕ это вообще условие и должно выглядеть вот так: "0ABE: is_car_engine_on 0@", в SB формулировка другая, но есть отличная черта всех условий - отступ перед началом текста опкода. И этот опкод вернёт true в блоке условий, если двигатель машины включён.
А 067F имеет, судя по описанию на сайте, следующие флаги:
0 = NO_CAR_LIGHT_OVERRIDE
1 = FORCE_CAR_LIGHTS_OFF
2 = FORCE_CAR_LIGHTS_ON
Что значит 0, я не очень понимаю, а вот остальное вполне ясно: 1 - выкл, 2 - вкл.

wmysterio
Администраторы
Скриптер
03.08.14 21:46
Offline
Цитата SnakeR ()
В итоге, он появляется рядом с машиной как труп, причем когда машина прорисовывается, кажется что она падает на него, тот же эффект если создавать актера сразу как водителя
Попробуй эти
Код

072A: put_actor $IVAN into_car 0@ driverseat
072B: put_actor $IVAN into_car 0@ passengerseat 0
или
Код
05CB: AS_actor $IVAN enter_car 0@ as_driver 0 ms
05CA: AS_actor $IVAN enter_car 0@ passenger_seat 0 time 0
Вот, я смонтировал скрипт:
Код
{$CLEO}
Model.Load(#VOODOO)
Model.Load(#BMYPOL1)
038B: load_requested_models

0@ = Car.Create(#VOODOO, 2497.2532, -1674.491, 13.3359)
Car.Angle(0@) = 18.9113
0129: $IVAN = create_actor_pedtype 4 model #BMYPOL1 in_car 0@ driverseat

Model.Destroy(#VOODOO)
Model.Destroy(#BMYPOL1)

0A93: end_custom_thread
Цитата SnakeR ()
И еще, вот эти опкоды на тачку никак не действуют
Я проверял - работают. В первом случаи это обычная проверка на то, включен ли двигатель у транспорта. В поисковике Sanny Builder'e очень легко распознать проверку от процедуры или свойства. Как правило после : стоит несколько пробелов - значит условие.

Другой метод, если не знаете является команда условием, то в поисковике укажите знак ^. У вашем случаи, я в поисковик вбил "^engine" и Санник указал на то, что опкод 0ABE является проверкой. Этот знак выбирает все условия со всего найденного. Но это если у вас отсутствует интернет лучше применять.

Опкод 067F тоже работает. Параметры:
0 - зависит от текущего времени ( Если ночь, то включить. Если день, то выключить )
1 - выключить в независимости от времени суток
2 - включить в независимости от времени суток

BoPoH
Друзья
03.08.14 23:59
Offline
Цитата wmysterio ()
Другой метод, если не знаете является команда условием, то в поисковике укажите знак ^. У вашем случаи, я в поисковик вбил "^engine" и Санник указал на то, что опкод 0ABE является проверкой. Этот знак выбирает все условия со всего найденного. Но это если у вас отсутствует интернет лучше применять.

Забавно. Не знал об этом.

wmysterio
Администраторы
Скриптер
04.08.14 09:38
Offline
Цитата BoPoH ()
Забавно. Не знал об этом.
До недавнего времени я тоже не знал. Случайно зашел в "Справка->Редактор->Поиск опкодов" и вдумчиво прочитал содержимое(до этого как-то небыло нужды). Есть целый ряд возможностей поиска "с дополнительным фильтром". Возможно я неправильно вписал фильтр, но он не всегда точно ловит опкоды. Например, строка
Код
% actor car -sphere -near -train -cube -rectangle ^
почему-то словил опкод 09D0, который не соответствует фильтру. Вроде должно ловить все опкоды, в которой наблюдается последовательность слов "actor car", условные опкоды а также опкоды, что не содержат слов "sphere", "near", "train", "cube" и "rectangle" sad Нужно на форум SB спросить. Пусть объяснят точнее или добавят что-то новенькое в фильтры.

SnakeR
Проверенные
04.08.14 12:00
Offline
Спасибо за ответы) По аудио зонам я так понимаю пока никто помочь не может?)

Добавлено (04.08.14, 10:48)
---------------------------------------------
Как ни крутил но с актером эффект тот же) он просто дохнет)

Добавлено (04.08.14, 11:00)
---------------------------------------------
И еще такой вопрос, в бд на том сайте варианты написания опкодов одни, в санни вторые, в скриптах третьи, где блин правда?) Фары и двиг заработали только так

Код
0ABF: set_vehicle 0@ engine_state_to 1
067F: set_car 0@ lights 2

wmysterio
Администраторы
Скриптер
04.08.14 12:31
Offline
Цитата SnakeR ()
в бд на том сайте варианты написания опкодов одни, в санни вторые
на том сайте опкоды описаны в оригинальном виде. Например:
Код
0053 create_player #NULL at 2488.562 -1666.865 12.8757 store_to $PLAYER_CHAR
Sanny Builder меняет местами некоторые параметры. Например у СБ так:
Код
0053: $PLAYER_CHAR = create_player #NULL at 2488.562 -1666.865 12.8757
Как видите, переменная, в которую будет заносится игрок находятся в разных местах. Seemann объяснил это тем, что так более читабильно. А описание в скриптах это уже третье дело. Можно назвать и так
Код
0053: $PLAYER_CHAR = sozdat_igroka_s_modelyu #NULL v_tochke 2488.562 -1666.865 12.8757
Сути не меняет. В последнее время описание опкодов делалось из выходом мобильной ГТА СА, где нашлись оригинальные названия опкодов (или планировалось). Если использовать старые версии СБ, то описание могут отличатся, но параметры остаются теже.

SnakeR
Проверенные
04.08.14 14:39
Offline
Понятно, только эксперименты спасут меня) С актером все таки печаль-тоска, все время его машина убивает( Уже все варианты что нашел перепробовал...

Добавлено (04.08.14, 13:39)
---------------------------------------------
Все больше ковыряясь думаю о том, что проще взять и выдрать контент из игры и собрать игру заново на том же Unity3D... И возможностей дофига и ограничений нет...


wmysterio
Администраторы
Скриптер
04.08.14 14:53
Offline
Цитата SnakeR ()
что проще взять и выдрать контент из игры и собрать игру заново на том же Unity3D...
Сложно сказать. Unity не такой уж и лёгкий как кажется на первый взгяд + выдрать контент тоже не гладко.
Цитата SnakeR ()
С актером все таки печаль-тоска, все время его машина убивает( Уже все варианты что нашел перепробовал...
Скиньте полный код скрипта. По обрывках сложно что-то комментировать.

BoPoH
Друзья
04.08.14 15:24
Offline
Цитата SnakeR ()
Все больше ковыряясь думаю о том, что проще взять и выдрать контент из игры и собрать игру заново на том же Unity3D...

Ты потратишь гораздо больше времени. Всё далеко не так просто, как может показаться на первый взгляд.

SnakeR
Проверенные
04.08.14 15:30
Offline
Я в Unity3D работаю профессионально уже больше 3х лет, так что я знаю о чем говорю) Создать болванку с геймплеем в стиле ГТА - месяц-два ненапряжного труда) С контентом гораздо больше мороки.

Вот скриптец, он пока просто тестовый, никакой нагрузки не несет, чисто для обучения.

Код
{$CLEO}
0000:

:CAR_CREATE
thread 'CAR_CREATE'
wait 0
model.Load(#VOODOO)   
model.Load(#BMYPOL1)
model.Load(#LAUNCH)
038B: load_requested_models  

:CAR_1
wait 0   
if
model.Available(#VOODOO)
model.Available(#BMYPOL1)
model.Available(#LAUNCH)
jf @CAR_1

0917: audio_zone 'LOWRIDERS' enable_sound 1

0@ = car.Create(#VOODOO,2573.1941, -2194.3745, -0.2187)  
car.Angle(0@) = 0.0
car.ToggleHydraulics(0@) = true
07F5: car 0@ control_hydraulics 0.0 0.0 0.0 0.0
0ABF: set_vehicle 0@ engine_state_to 1
067F: set_car 0@ lights 2
0657: car 0@ open_component 1  

actor.Create($IVAN,4,#BMYPOL1,2571.1941, -2194.3745, -0.2187)   
072A: task_warp_char_into_car_as_driver $IVAN car 0@

1@ = car.Create(#LAUNCH,2573.6289, -2237.9548, -0.2187)  
car.Angle(1@) = 180.0

model.Destroy(#VOODOO)
model.Destroy(#BMYPOL1)
model.Destroy(#LAUNCH)

0A93: end_custom_thread

wmysterio
Администраторы
Скриптер
04.08.14 15:43
Offline
Цитата SnakeR ()
Вот скриптец, он пока просто тестовый, никакой нагрузки не несет, чисто для обучения.
Полностью рабочий код ( правда я добавил слово AND при проверке загрузки моделей).

SnakeR
Проверенные
04.08.14 15:52
Offline
Ну актера убивает тачка) Почему, я понять не могу)

Добавлено (04.08.14, 14:48)
---------------------------------------------
Если его просто рядом ставить то все ок, а если в машину то он труп)

Добавлено (04.08.14, 14:52)
---------------------------------------------
Вот что я вижу когда приезжаю на "место события" ))) Кстати аудиозона все так же молчит зараза((
Картинка
Отредактировал SnakeR - Понедельник, 04.08.14, 15:53

wmysterio
Администраторы
Скриптер
04.08.14 15:53
Offline
Цитата SnakeR ()
Ну актера убивает тачка) Почему, я понять не могу)
Да не убивает она ) Я только что тестил Ваш скрипт - сидит на пассажирском месте чел(скинул бы скрин, но картинка не грузится). Попробуйте установить последнюю версию Sanny Builder и Cleo. Возможно в нём проблема.

SnakeR
Проверенные
04.08.14 15:54
Offline
Цитата wmysterio ()
Попробуйте установить последнюю версию Sanny Builder и Cleo
Самые последние версии стоят, значит у меня магия творится)

wmysterio
Администраторы
Скриптер
04.08.14 16:00
Offline
Цитата SnakeR ()
Самые последние версии стоят, значит у меня магия творится)
мало вероятно, но может другой скрипт как-то влияет на актёра. У Вас нет других скриптов, где-бы использовалась переменная $IVAN?

С аудиозоной разобрался. Аудиозоны LOWRIDERS не существует. Есть LOWRIDE:
Код
0917: audio_zone 'LOWRIDE' enable_sound 1

SnakeR
Проверенные
04.08.14 16:08
Offline
Цитата wmysterio ()
Аудиозоны LOWRIDERS не существует. Есть LOWRIDE
А я писал выше что добавил ее в файл с зонами.
Никаких других скриптов нет, кроме того такое происходит только если его пихать в машину) Если его просто ставить рядом то все ок.

wmysterio
Администраторы
Скриптер
04.08.14 16:22
Offline
Цитата SnakeR ()
А я писал выше что добавил ее в файл с зонами.
Тогда я не знаю как решить проблему. Я создавал свои зоны, но они тоже не работали. В общем, проще проиграть музыку используя класс Audiostream, чем играться с зонами.
Цитата SnakeR ()
если его пихать в машину) Если его просто ставить рядом то все ок.
Что-то я никак не могу понять в чём ошибка... Вернее это не ошибка. Просто не могу понять почему у меня адекватно работает, а у Вас барахлит...

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