×
Меню
Индекс

MSFD Определяем, когда игрок покинул ячейку

[no fix] CellChanged
 
If ( CellChanged == 1 )
If ( CellChanged )
 
CellChanged возвращает 1 в кадре, когда игрок меняет ячейку.
Когда игрок готов покинуть ячейку, скрипт в текущей ячейке останавливается, так что эта функция исполняется, и результаты будут готовы, как только игрок вернется, а не когда он покидает ее, так как скрипт останавливается раньше, чем устанавливается CellChanged (Спасибо Klinn за это исправление).
В функции есть небольшой баг: телепортация из ячейки не переключает эту функцию (не подтверждено).
 
Пример: В скрипте SlaveScript, который освобождает рабов в игре, функция CellChanged работает как триггер, заставляя рабов исчезнуть — раб уходит в светлое будущее:
 
 
Begin SlaveScript
[…]
if ( slaveStatus == 3 )
     if ( GetCurrentAIPackage == 3 )
          AIWander 512 0 0 0 0 0 0 0 0 0 0 0
     endif
     if ( GetItemCount Slave_Bracer_Left > 0 )
          Drop Slave_Bracer_Left 1
     endif
     if ( GetItemCount Slave_Bracer_Right > 0 )
          Drop Slave_Bracer_Right 1
     endif
     if ( CellChanged == 1 )
          Disable
     endif
endif
 
end slaveScript
 
другой отличный пример — это скрипт Gateway Haunt.
Он всегда возвращается, когда вы этого не ждете:
 
Begin ResurrectHaunt
 
;town_Sadrith quest
;gateway_haunt resurrects until journal town_Sadrith >= 35
 
 
if ( CellChanged == 1 )
     if ( gateway_haunt->GetHealth < 1 )
          gateway_haunt->Resurrect
     endif
endif
 
end ResurrectHaunt