Перейти к содержанию

Модификация детей Морроувинда под LCV(Живые города), нужен совет.


Рекомендуемые сообщения

Хотелось бы модифицировать плагин Дети в Морроувинде под идею Живых городов

Подскажите пожалуйста, насколько это будет сложно для новичка? Со скриптами дела не имела никогда.

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

Изменено пользователем Mapa
Ссылка на комментарий
Поделиться на другие сайты

Хотелось бы модифицировать плагин Дети в Морроувинде под Живые города.

Подскажите пожалуйста, насколько это будет сложно для новичка? Со скриптами дела не имела никогда.

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

Совместимость через CS сделать вряд ли получится. Максимум -- модифицировать скрипты, используя все плагины, добавляющие новые функции.

Подробнее необходимо изучать мануалы. MSFD, например. Для базы. А после уже рассматривать скрипты плагинов.

Изменено пользователем Муурн Шепард
Ссылка на комментарий
Поделиться на другие сайты

С совместимостью понятно.

 

Хорошо, а как тогда сделать такую фичу: Днем NPC на улице, ночью - дома. Либо где-то еще, предположим, три варианта местонахождения. Как можно посмотреть координаты (какие указывать)?

Вроде бы так проще должно быть, если редактировать скрипт под NPC. По LCV - уже точно зависимости не будет, ибо там куча глобальных, в которых я не разберусь

 

Вот к примеру, скрипт одного из детей

; Based on a script by Nigedo. Adjusted with enable/disable-functions by The Other Felix.

 

 

Short nolore

Short knowyou

Short OnPCHitMe

Short removeDay

Short count

Short extraBounty

Short nohello

Short doOnce

Float timer

short i1

float t1

float x1

float y1

float x2

float y2

float x3

float y3

if ( MenuMode == 1 )

return

endif

if ( i1 >= 10 )

set x2 to ( GetDistance player )

if ( x2 > 500 )

set i1 to 1

set x1 to ( player->GetPos X )

set y1 to ( player->GetPos Y )

set y3 to ( player->GetAngle Z )

set x2 to GetPos X

set y2 to GetPos Y

set x2 to ( x2 - x1 )

set y2 to ( y2 - y1 )

set x3 to ( y2 * y2 )

if ( x3 < 0.000001 )

return

endif

set x3 to ( x2 / y2 )

if ( x2 > 0 )

if ( y2 > 0 )

if ( x3 > 1 )

if ( y3 < -45 )

set i1 to 0

endif

else

if ( y3 < -90 )

set i1 to 0

endif

if ( y3 > 135 )

set i1 to 0

endif

endif

else

if ( x3 < -1 )

if ( y3 < 0 )

if ( y3 > -135 )

set i1 to 0

endif

endif

else

if ( y3 < 45 )

if ( y3 > -90 )

set i1 to 0

endif

endif

endif

endif

else

if ( y2 > 0 )

if ( x3 < -1 )

if ( y3 > 45 )

set i1 to 0

endif

else

if ( y3 > 90 )

set i1 to 0

endif

if ( y3 < -135 )

set i1 to 0

endif

endif

else

if ( x3 > 1 )

if ( y3 > 0 )

if ( y3 < 135 )

set i1 to 0

endif

endif

else

if ( y3 > -35 )

if ( y3 < 90 )

set i1 to 0

endif

endif

endif

endif

endif

if ( i1 == 0 ) ; player is not looking at me

if ( GetDisabled == 0 )

disable

else

enable

endif

endif

endif

set i1 to 0

endif

if ( t1 < 10 )

set t1 to ( t1 + GetSecondsPassed )

else

set t1 to ( ( Random 101 ) / 100.0 )

if ( GameHour > 20 )

set i1 to 1

elseif ( GameHour < 8 )

set i1 to 1

else

set i1 to 0

endif

if ( i1 == 1 )

if ( GetDisabled == 0 )

set i1 to 10

return

endif

else ; daytime

if ( day != removeDay )

if ( GetDisabled == 1 )

set i1 to 20

return

endif

endif

endif

endif

if ( CellChanged == 1 )

if ( GameHour > 20 )

set i1 to 1

elseif ( GameHour < 8 )

set i1 to 1

else

set i1 to 0

endif

if ( GetInterior == 1 )

if ( i1 == 1 )

if ( GetDisabled == 0 )

disable

endif

elseif ( GetDisabled == 1 )

enable

endif

return

endif

endif

if ( GetDisabled == 1 )

return

endif

 

if ( GetEffect sEffectRecall ) ; Recall cast completed

set removeDay To Day; Trigger unscheduled disable for one day

disable

return

elseif ( OnPCHitMe == 1 )

SetHealth 1000 ; Prevent more attacks from killing kid

Cast "1EM_kidsrecall" Player ; Face Player and cast kids recall spell

if ( extraBounty == 0 )

ModPCCrimeLevel 2000 ; Add extra fine for this crime

set extraBounty To 1

elseif ( GetPCCrimeLevel == 0 )

set OnPCHitMe To 0

set extraBounty To 0

endif

endif

;--------------------- AI scripting

if ( GetDistance Player < 100 )

if ( doOnce != 1 )

forcerun

AiWander 512 1 1

set doOnce to 1

endif

endif

if ( GetDistance Player >= 500 )

if ( doOnce == 1 )

Say "vo\em_vo\brb\Idl_BFP002.mp3" "Hi-hi-hi"

clearforcerun

AiWander 512 5 0 30 20 10 0 0 0 0 0 30

set doOnce to 0

endif

endif

 

End

Можно ли здесь точно выяснить, какой участок, связанный с дисейблом надо удалить (и заменить) Комментарии тут какие то... player is not looking at me что это может значить?

 

Изменено пользователем Mapa
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...