Mapa Опубликовано 21 ноября, 2012 Жалоба Поделиться Опубликовано 21 ноября, 2012 (изменено) Хотелось бы модифицировать плагин Дети в Морроувинде под идею Живых городовПодскажите пожалуйста, насколько это будет сложно для новичка? Со скриптами дела не имела никогда.Смысл еще в том, что сейчас на детях висит скрипт, который заставляет их ночью исчезать. Мне нужно, соответственно, чтобы этого не было. Кроме того, есть плагины, которые модифицируют скрипты детей, добавляя свои функции. Как правильно в таком случае обеспечить совместимость, учитывая, что скрипт нужно редактировать? Изменено 21 ноября, 2012 пользователем Mapa Ссылка на комментарий Поделиться на другие сайты Поделиться
bi-666 Опубликовано 21 ноября, 2012 Жалоба Поделиться Опубликовано 21 ноября, 2012 Скрипты хоть выложите. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 21 ноября, 2012 Жалоба Поделиться Опубликовано 21 ноября, 2012 (изменено) Хотелось бы модифицировать плагин Дети в Морроувинде под Живые города.Подскажите пожалуйста, насколько это будет сложно для новичка? Со скриптами дела не имела никогда.Смысл еще в том, что сейчас на детях висит скрипт, который заставляет их ночью исчезать. Мне нужно, соответственно, чтобы этого не было. Кроме того, есть плагины, которые модифицируют скрипты детей, добавляя свои функции. Как правильно в таком случае обеспечить совместимость, учитывая, что скрипт нужно редактировать?Совместимость через CS сделать вряд ли получится. Максимум -- модифицировать скрипты, используя все плагины, добавляющие новые функции.Подробнее необходимо изучать мануалы. MSFD, например. Для базы. А после уже рассматривать скрипты плагинов. Изменено 21 ноября, 2012 пользователем Муурн Шепард Ссылка на комментарий Поделиться на другие сайты Поделиться
Mapa Опубликовано 21 ноября, 2012 Автор Жалоба Поделиться Опубликовано 21 ноября, 2012 (изменено) С совместимостью понятно. Хорошо, а как тогда сделать такую фичу: Днем NPC на улице, ночью - дома. Либо где-то еще, предположим, три варианта местонахождения. Как можно посмотреть координаты (какие указывать)?Вроде бы так проще должно быть, если редактировать скрипт под NPC. По LCV - уже точно зависимости не будет, ибо там куча глобальных, в которых я не разберусь Вот к примеру, скрипт одного из детей; Based on a script by Nigedo. Adjusted with enable/disable-functions by The Other Felix. Short noloreShort knowyouShort OnPCHitMeShort removeDayShort countShort extraBountyShort nohelloShort doOnceFloat timershort i1float t1float x1float y1float x2float y2float x3float y3if ( MenuMode == 1 ) returnendif 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 0endifif ( 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 endifendifif ( 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 endifendifif ( GetDisabled == 1 ) returnendif if ( GetEffect sEffectRecall ) ; Recall cast completed set removeDay To Day; Trigger unscheduled disable for one day disable returnelseif ( 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 endifendif;--------------------- AI scriptingif ( GetDistance Player < 100 )if ( doOnce != 1 )forcerunAiWander 512 1 1set doOnce to 1endifendifif ( GetDistance Player >= 500 )if ( doOnce == 1 )Say "vo\em_vo\brb\Idl_BFP002.mp3" "Hi-hi-hi"clearforcerunAiWander 512 5 0 30 20 10 0 0 0 0 0 30set doOnce to 0endifendif EndМожно ли здесь точно выяснить, какой участок, связанный с дисейблом надо удалить (и заменить) Комментарии тут какие то... player is not looking at me что это может значить? Изменено 21 ноября, 2012 пользователем Mapa Ссылка на комментарий Поделиться на другие сайты Поделиться
bi-666 Опубликовано 21 ноября, 2012 Жалоба Поделиться Опубликовано 21 ноября, 2012 Попробуйте удалить оба блокаif ( GameHour > 20 ) set i1 to 1 elseif ( GameHour < 8 ) set i1 to 1 else set i1 to 0 endif Ссылка на комментарий Поделиться на другие сайты Поделиться
Mapa Опубликовано 21 ноября, 2012 Автор Жалоба Поделиться Опубликовано 21 ноября, 2012 (изменено) Спасибо, тему пока можно закрыть. Изменено 22 ноября, 2012 пользователем Mapa Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти