#1 26-01-2011 11:43

oz91
Registered: 26-01-2011
Posts: 6

Проверки в скриптовых роликах (SA)

При написании миссии возникла следующая проблема.
Как использовать проверки в роликах?
Пример. Я создал триггер, запустил миссию. Привожу отрывок из нее, самое начало. Чтоб лучше было понятно - написал комментарии.

:RIDE
thread "RIDE"
gosub @MIS_ST
if
  wasted_or_busted
then
  gosub @MIS_F
end
gosub @MIS_CL
end_thread

:MIS_ST
increment_mission_attempts

//---- Загружаем телефон и мелодию звонка

model.Load(#CELLPHONE)                
03CF: load_wav 23000 as 1
038B: load_requested_models

:MIS_Z 
if or
  not model.Available(#CELLPHONE)
  83D0:  not wav 1 loaded
jf @Ride1
wait 0
jump @MIS_Z

//-------------------------------------------

:Ride1

//------ Очищаем местность в заданных координатах  

0395: clear_area 1 at -358.3962 1179.3182 19.7422 radius 15.0   
      
//-------Ставим туда игрока и камеру.

Actor.PutAt($PLAYER_ACTOR, -358.0858, 1176.1097, 19.7422)           
actor.Angle($PLAYER_ACTOR) = 294.475
camera.SetPosition(-348.5866, 1181.1206, 19.7422, 0.0, 0.0, 0.0)
camera.PointAt(-360.9038, 1176.1595, 21.9065, 2)
02A3: enable_widescreen 1 

//------- На всякий случай. У игрока оружие - убираем. Игрока преследуют - заставляем их отвязаться.

03BF: set_player $PLAYER_CHAR ignored_by_everyone 1                 
06AB: set_actor $PLAYER_ACTOR all_weapons_hidden 1                    


//------- Здесь начинаются непонятки. До начала миссии я затемнил экран. Я хочу чтобы все действие начало показываться через секунду. Пускаю таймер:
32@ = 0
while 32@ <= 1000
wait 0
  if
    Player.Defined($PLAYER_CHAR)
  then
    if
      not Actor.Dead($PLAYER_ACTOR)
    then
      Continue
    else
      jump @Ride5
    end
  end
end

//-----Первый вопрос: надо ли проверять, что случилось с игроком за эту секунду, как здесь?

0707: start_scene_skip_to @Ride6
0615: define_AS_pack_begin 1@
05D3: AS_actor -1 goto_point -352.5362 1179.427 19.7422 mode 4 3500 ms // versionA
05B9: AS_actor -1 stay_idle 500 ms
0729: AS_actor -1 hold_cellphone 1
0616: define_AS_pack_end 1@ 
0618: assign_actor $PLAYER_ACTOR to_AS_pack 1@ 
fade 1 1000 

//------Задали действия, теперь показываем их игроку

32@ = 0
while 32@ <= 2500
wait 0
  if
    Player.Defined($PLAYER_CHAR)
  then
    if
      not Actor.Dead($PLAYER_ACTOR)
    then
      continue
    else
      061B: remove_references_to_AS_pack 1@
      jump @Ride5
    end
  end
end
03D1: play_wav 1
00BC: show_text_highpriority GXT 'Ride_1' time 2000 flag 1

//------- Суть та же. Я мог написать просто "wait 2500" и пока актер выполняет действия, таймер отсчитал бы эти 2,5 секунды, и на экране в итоге появился текст.

и т.д.

Так нужны ли такие проверки актера каждую секунду? Ведь игрок может ввести чит, и сценка как-нибудь застопорится.

Offline

#2 27-01-2011 02:23

Seemann
Registered: 07-08-2006
Posts: 2,156

Re: Проверки в скриптовых роликах (SA)

насколько я понимаю, игра сама проверяет состояние игрока в каждый момент и, если он умер, прерывает миссию. поэтому дополнительные проверки в сценках избыточны.

Offline

#3 31-01-2011 09:30

oz91
Registered: 26-01-2011
Posts: 6

Re: Проверки в скриптовых роликах (SA)

Seemann wrote:

насколько я понимаю, игра сама проверяет состояние игрока в каждый момент и, если он умер, прерывает миссию. поэтому дополнительные проверки в сценках избыточны.

Просто мне нужно было, если Си-Джей умрет, вырубить widescreen, сделать так, чтобы игрок опять мог двигаться, и пр., так как в сценке эти команды включаются. Я забыл в вопросе упомянуть об этом.
Но только недавно узнал, что, если ГГ умирает, игра автоматически восстанавливает камеру, убирает черные полосы с экрана, и вообще во многих командах, например как

0489: set_actor $PLAYER_ACTOR muted 1

восстанавливает исходные значения...
И, например, если в блоке Mission Cleanup написать

object.Destroy(4@)

и в самой миссии вообще этот объект не создавать, то игра не вылетит... Так же, если модель удалить, не загрузив... Почему так?

Last edited by oz91 (31-01-2011 09:38)

Offline

#4 01-02-2011 09:49

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Проверки в скриптовых роликах (SA)

потому что так задумано для облегчения скриптования миссий


GIMS developer

Offline

#5 04-02-2011 15:48

oz91
Registered: 26-01-2011
Posts: 6

Re: Проверки в скриптовых роликах (SA)

Ясно)
@Seemann, @3Doomer, спасибо за ответы)

Offline

Board footer

Powered by FluxBB