[ Новые сообщения · Участники · Правила форума · Поиск · 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)

GeniusZ
Пользователи
06.07.15 13:04
Offline
Как можно реализовать возможность в миссии, когда актер садился бы в машину, то маркер над ним убирался? А когда выходил появлялся, как в оригинальных миссиях. Я попробовал добавить этот скрипт, но он не работает:

Код
if  
Actor.Driving($PLAYER_ACTOR)
then
00D9: $CAR = actor $PLAYER_ACTOR car
  if  
   actor.InCar($GIRL,$CAR)
  then
   marker.Disable(0@)   
  end
else  
marker.CreateAboveActor(0@,$GIRL)  
end

etwnp
Пользователи
06.07.15 15:36
Offline
Цитата GeniusZ ()
Как можно реализовать возможность в миссии, когда актер садился бы в машину, то маркер над ним убирался? А когда выходил появлялся, как в оригинальных миссиях. Я попробовал добавить этот скрипт, но он не работает:


В моем коде маркер создается всегда, если не включен, и выключается только если актер в машине игрока. По идее должно работать если нету задержки.
Код
while true

     wait 0
      
     if
         075C:   marker 0@ enabled  
     then  
     else
         marker.CreateAboveActor(0@,$GIRL)
     end
      
     if
         actor.Driving($PLAYER_ACTOR)
     then
      
         00D9: $CAR = actor $PLAYER_ACTOR car  
          
         if
             actor.InCar($GIRL,$CAR)  
         then
             marker.Disable(0@)  
         end
          
     end
      
end

wmysterio
Администраторы
Скриптер
06.07.15 15:38
Offline
Цитата GeniusZ ()
Как можно реализовать возможность в миссии, когда актер садился бы в машину, то маркер над ним убирался? А когда выходил появлялся, как в оригинальных миссиях.
Что-похожее есть в этом уроке.Там пример связанный с грузовиками, однако там есть алгоритм как реализовать такую возможность.

Если всё же возникают проблемы, то вот примерно такой код подойдёт:
Код
:T
03A4: script_name 'T'        // thread 'T'  
0247: request_model #ADMIRAL // load model
0247: request_model #WMYDRUG // load model
038B: load_all_models_now    // load requested models
00A5: create_car $CAR #ADMIRAL 0.0 0.0 0.0      // create car  
009A: create_char $ACTOR 4 #WMYDRUG 1.0 0.0 0.0 // create actor
0249: mark_model_as_no_longer_needed #ADMIRAL   // model destroy
0249: mark_model_as_no_longer_needed #WMYDRUG   // model destroy

:T_LOOP_A
0001: wait 0       
    
if or
0119: is_car_dead $CAR      // car wrecked
02BF: is_car_in_water $CAR  // car sunk
then
0002: goto @T_CAR_DEAD
end

if
0118: is_char_dead $ACTOR  // actor dead
then
0002: goto @T_ACTOR_DEAD
end

if or
80DB:   not is_char_in_car $PLAYER_ACTOR $CAR           // actor not in car  
80DB:   not is_char_in_car $ACTOR $CAR                  // actor not in car
then
     if
     875C:   not does_blip_exist $MARKER_BY_ACTOR        // marker not exist
     then
     0187: add_blip_for_char $MARKER_BY_ACTOR $ACTOR     // create marker
     end
     if
     875C:   not does_blip_exist $MARKER_BY_CAR          // marker not exist
     then
     0186: add_blip_for_car $MARKER_BY_CAR $CAR          // create marker
     end
else
     if or
     075C:   does_blip_exist $MARKER_BY_CAR             // marker exist
     075C:   does_blip_exist $MARKER_BY_ACTOR           // marker exist
     then     
     0164: remove_blip $MARKER_BY_CAR                   // marker disable
     0164: remove_blip $MARKER_BY_ACTOR                 // marker disable
     end  
end

if
// вставить код выхода из цикла
then
0002: goto @T_FINISH
end

0002: goto @T_LOOP_A

:T_FINISH
0AD1: show_formatted_text_highpriority "MISSION PASSED!" time 5000  
0002: goto @T_END

:T_CAR_DEAD
0AD1: show_formatted_text_highpriority "Car dead!" time 5000  
0002: goto @T_END

:T_ACTOR_DEAD
0AD1: show_formatted_text_highpriority "Actor dead!" time 5000  
0002: goto @T_END

:T_END
0164: remove_blip $MARKER_BY_CAR                   // marker disable
0164: remove_blip $MARKER_BY_ACTOR                 // marker disable
004E: terminate_this_script // end thread
В коментариях я написал название тех опкодов, которые вшиты в стандартный Sanny Builder, так как использую пока свой вариант, базирующийся на оригинальных названиях опкодов, что были открыты с выходом мобильной версии SA.

softcrasoft
Пользователи
06.07.15 17:09
Offline
Ребят есть такой вопрос:
Какую игру, GTA 3, GTA vice city, или таки san andreas вы можете выделить удобней в плане миссий?
Может допустим gta 3 в плане этого проще?

wmysterio
Администраторы
Скриптер
06.07.15 17:17
Offline
Цитата softcrasoft ()
Какую игру, GTA 3, GTA vice city, или таки san andreas вы можете выделить удобней в плане миссий? Может допустим gta 3 в плане этого проще?
Все три игры были написаны одном игровом движке. От сюда вывод, что и миссии в плане написания практически идентичны.
Иными словами - научишься делать миссии в 3, то без проблем сможешь написать для СА в ВС; научишься делать для ВС, то не будет проблем в СА и 3; научишься в СА, то написать миссию для 3 и ВС будет не проблема.

softcrasoft
Пользователи
06.07.15 17:29
Offline
Ок. если так, то буду делать на gta 3, т.к там меньше ресурсов компа надо. Но есть несколько вопросов:
1. Sanny builder также нормально работает в gta 3?
2. Опкоды используются те же?
Спасибо.

wmysterio
Администраторы
Скриптер
06.07.15 17:34
Offline
Цитата softcrasoft ()
1. Sanny builder также нормально работает в gta 3?

Да. Это универсальный и стабильный компилятор.
Цитата softcrasoft ()
2. Опкоды используются те же?
Нет, для каждой игры свой набор опкодов, но все они похожи: метки, задержки прыжки, просто большая их часть не известны в плане описания( много пометок с NOP и unknown ). Сан Андреас самая изученная из всех серии.

softcrasoft
Пользователи
06.07.15 17:37
Offline
Блин а узнать их можно как-то?
Просто вот в SA мой комп требует уж много ресурсов. что бы долго играть, нужно включать другой комп. Этот проц нагружается, нагревается, а куллер только после чистки. т.е не работает. по этому выключение компа автоматом при нагревании 95 градус.

wmysterio
Администраторы
Скриптер
06.07.15 17:44
Offline
Цитата softcrasoft ()
Блин а узнать их можно как-то?
В СБ клавишами CTRL+SHIFT+F2 - получить список опкодов и возможностью поиска.
Цитата softcrasoft ()
по этому выключение компа автоматом при нагревании 95 градус.
При таком температурном режиме компа ждут последние вздохи. Больше 80 градусов - это уже критическая точка. Обычно изготовитель ставит лимит в 60-70 градусов( в каждом проце, видюхе по разному)

softcrasoft
Пользователи
06.07.15 17:53
Offline
1. Может контрл альт 2? Но там же игру не пишет для какой опкод.
2. Не. Я однажды во время игры включал аиду, 90 градусов. И это при игре мафия 2. в GTA греется дольше.

GeniusZ
Пользователи
06.07.15 17:57
Offline
Цитата
Что-похожее есть в этом уроке.Там пример связанный с грузовиками, однако там есть алгоритм как реализовать такую возможность.
 
Я разобрался в чем проблема. А такая глупая ошибка. Оказывается этот код игнорировался, потому что перед ним был написан jump

wmysterio
Администраторы
Скриптер
06.07.15 18:00
Offline
Цитата softcrasoft ()
1. Может контрл альт 2? Но там же игру не пишет для какой опкод.
Да, котрол альт 2 smile Сначала выбираешь игру, с которой будет работать СБ:

А затем при "котрол альт 2" будет показывать опкоды специально под ту игру, которую выбрал.
Цитата softcrasoft ()
2. Не. Я однажды во время игры включал аиду, 90 градусов. И это при игре мафия 2. в GTA греется дольше.
Сам факт нагревания к такой температуре свидетельствует о том, что с компом явно что-то не так. Неважно какая игра и как долго длится нагревание.
Прикрепления: 7738500.png(8.2 Kb)

softcrasoft
Пользователи
06.07.15 21:13
Offline
Ну у меня комп никогда не разбирался, только продувался пылесосом. сейчас почему-то не работает куллер. раньше такое было, но при частых нагрузках все исправлялось. не знаю. ща мож по грею-по грею его, на куллер включится)))))))))

Добавлено (06.07.15, 20:13)
---------------------------------------------
Ребят. Помогите плз. Не работает мой скрипт. Игра вылетает при попадании. Вот код:
Код
{$cleo}

0000:
:a
wait 0
if
player.Defined($PLAYER_CHAR)
jf @a
Actor.StorePos($PLAYER_ACTOR, 2@, 3@, 4@)
0AE1: 1@ = random_actor_near_point 2@ 3@ 4@ in_radius 10.0 find_next 1 pass_deads 1
if and
056D: actor 1@ defined
051A: actor $PLAYER_ACTOR damaged_by_actor 1@
then
0635: AS_actor $PLAYER_ACTOR aim_at_actor 1@ 5000 ms
05E2: AS_actor $PLAYER_ACTOR kill_actor 1@
end
jump @a

wmysterio
Администраторы
Скриптер
06.07.15 21:22
Offline
Цитата softcrasoft ()
a
Код
{$cleo}   
0000:   

Actor.StorePos($PLAYER_ACTOR, 2@, 3@, 4@)
0AE1: 1@ = random_actor_near_point 2@ 3@ 4@ in_radius 10.0 find_next 0 pass_deads 1

:a   
wait 0   
if   
player.Defined($PLAYER_CHAR)   
jf @a   
Actor.StorePos($PLAYER_ACTOR, 2@, 3@, 4@)      
0AE1: 1@ = random_actor_near_point 2@ 3@ 4@ in_radius 10.0 find_next 1 pass_deads 1
if
056D: actor 1@ defined // ВСЕГДА сначала проверяем существует актёр
then
      if or // только тогда выполняем другие проверки, связанные с актёром 1@
      0457:   player $PLAYER_CHAR aiming_at_actor 1@
      051A:   actor $PLAYER_ACTOR damaged_by_actor 1@   
      then   
      //0635: AS_actor $PLAYER_ACTOR aim_at_actor 1@ 5000 ms  - если использовать опкод 05E2, то эта комманда будет бесполезной
      05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR // здесь я не понял кто кого должен убвать    
      end
end   
jump @a
Код не тестировал, но примерно так должно быть.

softcrasoft
Пользователи
06.07.15 21:44
Offline
актер сиджея должен убивать того кто в него стреляет

Добавлено (06.07.15, 20:44)
---------------------------------------------
гыг теперь его вообще стреляют-стреляют, и он 0 реакции.
{$cleo}  
0000:  

:NONAME
wait 0
if
player.Defined($PLAYER_CHAR)
jf @NONAME
Actor.StorePos($PLAYER_ACTOR, 2@, 3@, 4@)  
0AE1: 1@ = random_actor_near_point 2@ 3@ 4@ in_radius 10.0 find_next 1 pass_deads 1
if
056D: actor 1@ defined// ВСЕГДА сначала проверяем существует актёр
then
if or// только тогда выполняем другие проверки, связанные с а
0457:   player $PLAYER_CHAR aiming_at_actor 1@
051A:   actor $PLAYER_ACTOR damaged_by_actor 1@
then
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR// здесь я не понял кто кого должен убвать   
end
end
jump @NONAME
В чем пробла мож быть?


softcrasoft
Пользователи
06.07.15 22:36
Offline
е нефига не стреляет((

etwnp
Пользователи
07.07.15 00:10
Offline
Сиджей получается реагирует только на прямые попадания и машет руками потом.

softcrasoft
Пользователи
07.07.15 00:24
Offline
В него попали раз 10. Никакого действия. Вот пробни сам свой же скрипт))

etwnp
Пользователи
07.07.15 01:48
Offline
Может надо больше радиус ставить.

Код
{$CLEO}
0000: NOP

wait 0

repeat
     wait 0
until player.Defined($PLAYER_CHAR)

while true
     wait 0
      
     Actor.StorePos($PLAYER_ACTOR, 2@, 3@, 4@)    
     0AE1: 1@ = random_actor_near_point 2@ 3@ 4@ in_radius 100.0 find_next 1 pass_deads 1

     if
         056D: actor 1@ defined
     then
      
         if
             051A:   actor $PLAYER_ACTOR damaged_by_actor 1@    
         then
              05E2: AS_actor $PLAYER_ACTOR kill_actor 1@
         end
      
     end
      
end

softcrasoft
Пользователи
07.07.15 07:09
Offline
а смысл? кто стрелял стоял ко мне вплотную.

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