×
Меню
Индекс

MSFD Отслеживание убийств и нокаутов

OnDeath          (returns Boolean/short)
 
If ( Actor -> OnDeath == 1 )
 
Возвращает 1 для 1 кадра, когда актер умирает.
OnDeath, похоже, сбрасывается, после того как было использовано.
Это также значит, что из глобального и локального скрипта, которые используют OnDeath, только в глобальный она заработает.
Альтернативой может быть функция GetHealth1.
В следующем скрипте появится только первый MessageBox (Информация с форумов / Argent, ThePal):
 
begin personScript
 
if ( OnDeath )
messagebox "1"
endif
 
if ( OnDeath )
messagebox "2"
endif
 
end
 

OnMurder     (returns Boolean/short)
 
If ( Actor -> OnMurder == 1 )
 
Возвращает 1 для 1 кадра, когда актер убит.
Условия OnMurder мне не совсем понятны, но из того, как она используется в игре, можно предположить, что OnMurder устанавливается, если вас объявляют, как убийцу ("о вашем преступлении стало известно"). Итак, убийство происходит только если вы убиваете кого-то незаконно И вас видели.
 
Пример: он устанавливает переменную, что используется в теме диалога «Советник Редорана» ("Redoran Hortator"), чтобы определить, убил ли игрок советника:
 
begin RedoranCouncilor
 
;не знаний...
short noLore
 
;для HT_Monopoly
short mageMonopolyVote
 
;для  диалога «Советник»...
if ( OnDeath == 1 )
     if ( OnMurder == 1 )
          Set RedoranMurdered to 2
     else
          Set RedoranMurdered to 1
     endif
endif
 
End
 

OnKnockout     (returns Boolean/short)
 
If ( Actor -> OnKnockout == 1 )
 
Возвращает 1 для 1 кадра, когда актера нокаутируют (например, во время кулачного боя).
 

[no fix] GetDeadCount, "Actor ID"     (returns short)
 
If ( GetDeadCount "divayth fyr" > 0)
 
Функция возвращает число копий (references) типа "Actor ID", которые были убиты.
Полезная функция для квестового скриптования, чтобы отслеживать, какой NPC еще жив.
Заметьте, что для диалога есть эквивалентная функция.
Можно представить другое использование, например завоевание репутации у некоторых монстров, которые будут убегать от вас, вместо боя, после того, как вы убили больше 100 из них, и т.д.
 
Пример:
GetDeadCount часто используется для проверки, мертв ли конкретный NPC.
Рекомендуется использовать "> 0" в таких случаях, так как никогда не знаешь, не добавит ли чужой мод еще одного актера с тем же ID, так что лучше поостеречься.
 
Begin araraUvulasScript
 
if ( CellChanged == 0 )
     return
endif
 
if ( GetDeadCount "Neloth" > 0 )
     Disable
endif
 
End