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

Вот такой вот скрипт.


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

Смотри...

Что погода выбирается по weather chanc'am, это понятно. То есть если у нас 50% на солнечно и 50% на облачно, то погода будет выбиратся из этого.

Теперь, когда nmonth у нас становится не равна текущему месяцу, то есть месяц меняется, мы смотрим какой месяц, и в зависимости от наго меняем шансы: если осень, то больше шансов накидываем на дождь и грозы, если зима - то на туман и облачность (нет, снега не будет, климат не тот... Разве что в Шеогораде может снег пойти... И сразу же растаять... Очень маленькая вероятность), если лето - на солнечность (Прочитал, что написал, и чуть сам сос стула не свалился... Солнечность! Это надо же! новое слово придумал!)... На солнечную погоду.

Непосредственно саму же погоду мой скрипт не меняет.

 

Да, и тут идея стукнула - если скрипт несколько усложнить, можно сделать так, что бы мор (blight) с течением времени распростронялся бы по острову! То есть если игрок совсем уж забивает на сюжет, то через пару лет по всему острову погода будет как на Красной Горе.

 

 

Понятно, буду юзать... ;)

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

тока не забыть зараженных тогда с ее распростанением расставлять по всему острову ;) иначе конкретные Неревары не поймут

Есть же в бладмуне функция addtoleveledcreature... Или как-то так... Хмм. Надо будет все обдумать...

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

Вот скрипт Gwathlobal'a из плагина MorrowindSeasons_BM_1C (добре, Крез ссылку выложил в теме про поиск плагинов). Очевидно, более сбалансированный, чем мой. Однако, таймер он тоже не использовал.

 

 

[morrscript]

begin _MS_MainScript

 

short state

short ToMornStar

short doonce

 

if ( doonce== 0 )

"jobasha"->additem "_ms_bk_MorrClimate" 1

"dorisa darvel"->additem "_ms_bk_MorrClimate" 1

"codus callonus"->additem "_ms_bk_MorrClimate" 1

 

AddTopic "климат Вварденфелла"

set doonce to 1

endif

 

if ( Month == 0 )

if ( state != 0 )

ModRegion "Ascadian Isles Region" 25 25 15 15 10 10 0 0

ModRegion "Ashlands Region" 10 5 10 25 0 0 50 0

ModRegion "Azura's Coast Region" 10 10 10 10 20 40 0 0

ModRegion "Bitter Coast Region" 10 20 10 0 40 20 0 0

ModRegion "Grazelands Region" 5 20 15 15 25 20 0 0

ModRegion "Molag Mar Region" 5 10 20 15 0 0 50 0

ModRegion "Sheogorad" 10 15 20 15 20 20 0 0

ModRegion "West Gash Region" 5 20 15 20 20 20 0 0

ModRegion "Felsaad Coast Region" 30 5 5 15 0 0 0 0 30 15

ModRegion "Hirstaang Forest Region" 20 25 0 40 0 0 0 0 10 5

ModRegion "Isinfier Plains Region" 10 10 0 10 0 0 0 0 40 30

ModRegion "Moesring Mountains Region" 5 5 0 10 0 0 0 0 35 45

 

set state to 0

endif

elseif ( Month == 1 )

if ( state != 1 )

ModRegion "Ascadian Isles Region" 30 30 10 10 10 10 0 0

ModRegion "Ashlands Region" 10 10 10 25 0 0 45 0

ModRegion "Azura's Coast Region" 10 10 10 10 25 35 0 0

ModRegion "Bitter Coast Region" 10 20 15 0 35 20 0 0

ModRegion "Grazelands Region" 5 20 20 10 25 20 0 0

ModRegion "Molag Mar Region" 5 15 20 15 0 0 45 0

ModRegion "Sheogorad" 10 15 20 10 20 25 0 0

ModRegion "West Gash Region" 5 25 10 20 20 20 0 0

ModRegion "Felsaad Coast Region" 25 5 5 15 0 0 0 0 30 20

ModRegion "Hirstaang Forest Region" 20 20 0 40 0 0 0 0 10 10

ModRegion "Isinfier Plains Region" 10 10 0 15 0 0 0 0 40 25

ModRegion "Moesring Mountains Region" 10 5 0 10 0 0 0 0 30 45

 

set state to 1

if ( ToMornStar == 1 )

set Month to 0

set ToMornStar to 0

endif

endif

elseif ( Month == 2 )

if ( state != 2 )

ModRegion "Ascadian Isles Region" 30 30 15 15 5 5 0 0

ModRegion "Ashlands Region" 10 15 10 25 0 0 40 0

ModRegion "Azura's Coast Region" 15 10 5 10 25 35 0 0

ModRegion "Bitter Coast Region" 15 20 10 0 35 20 0 0

ModRegion "Grazelands Region" 5 10 20 20 25 20 0 0

ModRegion "Molag Mar Region" 5 15 20 20 0 0 40 0

ModRegion "Sheogorad" 10 10 30 10 20 20 0 0

ModRegion "West Gash Region" 10 20 10 20 20 20 0 0

ModRegion "Felsaad Coast Region" 20 5 5 15 0 0 0 0 30 25

ModRegion "Hirstaang Forest Region" 20 15 0 45 0 0 0 0 10 10

ModRegion "Isinfier Plains Region" 10 10 0 20 0 0 0 0 40 20

ModRegion "Moesring Mountains Region" 10 10 0 10 0 0 0 0 30 40

 

set state to 2

endif

elseif ( Month == 3 )

if ( state != 3 )

ModRegion "Ascadian Isles Region" 30 30 5 5 15 15 0 0

ModRegion "Ashlands Region" 10 15 10 20 5 0 40 0

ModRegion "Azura's Coast Region" 10 10 5 5 30 40 0 0

ModRegion "Bitter Coast Region" 5 10 10 10 40 25 0 0

ModRegion "Grazelands Region" 5 10 10 10 35 30 0 0

ModRegion "Molag Mar Region" 5 10 20 5 0 0 60 0

ModRegion "Sheogorad" 10 10 35 10 20 15 0 0

ModRegion "West Gash Region" 10 20 10 15 25 20 0 0

ModRegion "Felsaad Coast Region" 15 5 5 15 0 0 0 0 30 30

ModRegion "Hirstaang Forest Region" 20 10 0 40 0 0 0 0 15 15

ModRegion "Isinfier Plains Region" 5 10 5 25 0 0 0 0 35 20

ModRegion "Moesring Mountains Region" 5 10 5 10 0 0 0 0 30 40

 

set state to 3

endif

elseif ( Month == 4 )

if ( state != 4 )

ModRegion "Ascadian Isles Region" 30 30 10 10 10 10 0 0

ModRegion "Ashlands Region" 10 20 10 20 0 0 40 0

ModRegion "Azura's Coast Region" 10 10 5 5 35 35 0 0

ModRegion "Bitter Coast Region" 10 10 10 5 40 25 0 0

ModRegion "Grazelands Region" 10 15 15 15 25 20 0 0

ModRegion "Molag Mar Region" 5 15 25 15 0 0 40 0

ModRegion "Sheogorad" 5 10 40 10 20 15 0 0

ModRegion "West Gash Region" 10 15 10 15 25 25 0 0

ModRegion "Felsaad Coast Region" 15 10 5 15 0 0 0 0 30 25

ModRegion "Hirstaang Forest Region" 20 15 0 40 0 0 0 0 15 10

ModRegion "Isinfier Plains Region" 10 15 0 30 0 0 0 0 30 15

ModRegion "Moesring Mountains Region" 5 10 5 10 0 0 0 0 30 40

 

set state to 4

endif

elseif ( Month == 5 )

if ( state != 5 )

ModRegion "Ascadian Isles Region" 35 35 10 10 5 5 0 0

ModRegion "Ashlands Region" 10 20 20 20 0 0 30 0

ModRegion "Azura's Coast Region" 15 15 10 10 25 25 0 0

ModRegion "Bitter Coast Region" 15 20 10 0 30 25 0 0

ModRegion "Grazelands Region" 20 25 10 10 20 15 0 0

ModRegion "Molag Mar Region" 5 15 30 15 0 0 35 0

ModRegion "Sheogorad" 10 10 30 15 20 15 0 0

ModRegion "West Gash Region" 10 20 15 20 20 15 0 0

ModRegion "Felsaad Coast Region" 25 10 5 15 0 0 0 0 30 15

ModRegion "Hirstaang Forest Region" 25 25 0 35 0 0 0 0 10 5

ModRegion "Isinfier Plains Region" 10 15 0 25 0 0 0 0 30 20

ModRegion "Moesring Mountains Region" 10 10 0 15 0 0 0 0 25 40

 

set state to 5

endif

elseif ( Month == 6 )

if ( state != 6 )

ModRegion "Ascadian Isles Region" 40 40 5 5 5 5 0 0

ModRegion "Ashlands Region" 10 25 10 20 0 0 35 0

ModRegion "Azura's Coast Region" 25 25 10 10 15 15 0 0

ModRegion "Bitter Coast Region" 10 45 10 0 20 15 0 0

ModRegion "Grazelands Region" 25 35 5 5 15 15 0 0

ModRegion "Molag Mar Region" 5 15 35 20 0 0 25 0

ModRegion "Sheogorad" 10 20 20 15 20 15 0 0

ModRegion "West Gash Region" 10 25 15 20 15 15 0 0

ModRegion "Felsaad Coast Region" 30 10 10 15 0 0 0 0 20 15

ModRegion "Hirstaang Forest Region" 25 35 0 35 0 0 0 0 5 0

ModRegion "Isinfier Plains Region" 5 10 5 30 0 0 0 0 30 20

ModRegion "Moesring Mountains Region" 10 10 0 15 0 0 0 0 20 45

 

set state to 6

endif

elseif ( Month == 7 )

if ( state != 7 )

ModRegion "Ascadian Isles Region" 35 45 10 0 5 5 0 0

ModRegion "Ashlands Region" 10 25 10 25 0 0 30 0

ModRegion "Azura's Coast Region" 25 45 10 10 5 5 0 0

ModRegion "Bitter Coast Region" 10 60 10 0 10 10 0 0

ModRegion "Grazelands Region" 30 40 5 5 10 10 0 0

ModRegion "Molag Mar Region" 5 15 35 25 0 0 20 0

ModRegion "Sheogorad" 15 40 10 15 10 10 0 0

ModRegion "West Gash Region" 15 30 15 20 10 10 0 0

ModRegion "Felsaad Coast Region" 30 10 15 15 0 0 0 0 20 10

ModRegion "Hirstaang Forest Region" 20 40 0 40 0 0 0 0 0 0

ModRegion "Isinfier Plains Region" 10 10 0 30 0 0 0 0 30 20

ModRegion "Moesring Mountains Region" 10 10 0 20 0 0 0 0 20 40

 

set state to 7

endif

elseif ( Month == 8 )

if ( state != 8 )

ModRegion "Ascadian Isles Region" 50 45 0 0 5 0 0 0

ModRegion "Ashlands Region" 20 20 10 20 0 0 30 0

ModRegion "Azura's Coast Region" 35 45 5 10 5 0 0 0

ModRegion "Bitter Coast Region" 20 60 10 0 5 5 0 0

ModRegion "Grazelands Region" 40 40 5 5 5 5 0 0

ModRegion "Molag Mar Region" 15 15 25 25 0 0 20 0

ModRegion "Sheogorad" 20 40 10 10 10 10 0 0

ModRegion "West Gash Region" 20 35 15 20 5 5 0 0

ModRegion "Felsaad Coast Region" 40 10 15 15 0 0 0 0 15 5

ModRegion "Hirstaang Forest Region" 30 40 0 30 0 0 0 0 0 0

ModRegion "Isinfier Plains Region" 20 20 0 30 0 0 0 0 20 10

ModRegion "Moesring Mountains Region" 20 10 0 10 0 0 0 0 20 40

 

set state to 8

endif

elseif ( Month == 9 )

if ( state != 9 )

ModRegion "Ascadian Isles Region" 30 45 10 5 5 5 0 0

ModRegion "Ashlands Region" 25 20 10 20 0 0 25 0

ModRegion "Azura's Coast Region" 30 45 5 10 5 5 0 0

ModRegion "Bitter Coast Region" 15 25 5 0 40 15 0 0

ModRegion "Grazelands Region" 20 40 10 10 10 10 0 0

ModRegion "Molag Mar Region" 10 20 20 25 0 0 25 0

ModRegion "Sheogorad" 15 30 10 15 20 10 0 0

ModRegion "West Gash Region" 15 25 10 20 15 15 0 0

ModRegion "Felsaad Coast Region" 35 10 15 15 0 0 0 0 20 5

ModRegion "Hirstaang Forest Region" 20 30 0 35 0 0 0 0 10 5

ModRegion "Isinfier Plains Region" 15 15 0 30 0 0 0 0 25 15

ModRegion "Moesring Mountains Region" 15 10 0 15 0 0 0 0 20 40

 

set state to 9

endif

elseif ( Month == 10 )

if ( state != 10 )

ModRegion "Ascadian Isles Region" 25 25 10 20 10 10 0 0

ModRegion "Ashlands Region" 15 15 10 20 0 0 40 0

ModRegion "Azura's Coast Region" 15 25 10 10 15 25 0 0

ModRegion "Bitter Coast Region" 10 35 10 0 25 20 0 0

ModRegion "Grazelands Region" 15 30 10 5 25 15 0 0

ModRegion "Molag Mar Region" 5 15 20 25 0 0 35 0

ModRegion "Sheogorad" 15 25 10 15 20 15 0 0

ModRegion "West Gash Region" 10 25 10 25 15 15 0 0

ModRegion "Felsaad Coast Region" 35 10 10 15 0 0 0 0 20 10

ModRegion "Hirstaang Forest Region" 20 30 0 40 0 0 0 0 10 0

ModRegion "Isinfier Plains Region" 15 5 0 25 0 0 0 0 35 20

ModRegion "Moesring Mountains Region" 10 10 0 15 0 0 0 0 25 40

 

set state to 10

endif

elseif ( Month == 11 )

if ( state != 11 )

ModRegion "Ascadian Isles Region" 30 25 10 15 10 10 0 0

ModRegion "Ashlands Region" 10 10 10 25 0 0 45 0

ModRegion "Azura's Coast Region" 15 15 10 10 15 35 0 0

ModRegion "Bitter Coast Region" 10 30 10 0 30 20 0 0

ModRegion "Grazelands Region" 10 30 10 10 25 15 0 0

ModRegion "Molag Mar Region" 5 10 20 20 0 0 45 0

ModRegion "Sheogorad" 15 20 15 10 20 20 0 0

ModRegion "West Gash Region" 10 20 15 20 20 15 0 0

ModRegion "Felsaad Coast Region" 30 10 5 15 0 0 0 0 25 15

ModRegion "Hirstaang Forest Region" 15 30 0 40 0 0 0 0 5 10

ModRegion "Isinfier Plains Region" 10 10 0 30 0 0 0 0 30 20

ModRegion "Isinfier Plains Region" 10 10 0 20 0 0 0 0 35 25

ModRegion "Moesring Mountains Region" 10 10 0 10 0 0 0 0 30 40

 

set state to 11

set ToMornStar to 1

endif

endif

 

end

[/morrscript]

 

PS: Когда для morrscript кнопку сделают?

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

  • 2 месяца спустя...

Вот из темы про мечты,

А ещё... Ещё хочу календарь. Каждый день у перса появляется табличка (а лучше запись в журнале), сообщающая какой сегодня день, и какие особенности этого дня. Например, в месяц твоего зодиака повышается удача. Допустим, ты маг, тогда в месяцы, подчиняющиеся созвездиям Мага (нужно уточнить, какие именно по Астрологии), у тебя повышаются магические навыки. Или ещё вариант. Сегодня, например, день Св. Альмалексии, и религия запрещает левитацию. Ослушался - штраф в виде снижения на месяц удачи. А другой день - день ХХХ Милосердного (Воинственного, Храброго), значит нельзя убивать (или там красть, или получаешь бонус к силе, или тебя весь день сопровождает призванный даэдра), а если в этот день помолиться такому-то алтарю - будет тебе такая-то приятность... Ну, наподобие как в Даггере.

 

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

 

Тут отписал, потому что основа скрипта та же будет.

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

Deathruler

А разница все-таки есть...

 

У тебя сразу конец:

if ( nmonth == month )

Return

 

А с таймером - каждый тик еще будет время вычисляться...

 

Set timer to (timer + GetSecondsPassed)

if (timer

Return

 

В проверке на меню - тоже смысла невижу... Нет разницы какую переменную проверять...

Только не в меню - каждый тик будет две проверки - вместо одной...

Разве что если в меню проторчать больше месяца... :1anim_ab:

 

if (MenuMode == 1)

Return

elseif ( nmonth == month )

Return

 

Проверки на: if ( GetInterior == 1 ) тоже не нужно...

"Лишний" раз в месяц скрипт отработает незаметно...

Да и кто сказал, что он лишний... Тот - кто месяцами не выходит наружу ?

 

А в 'ModRegion' ты в своем скрипте забыл про Снег и Вьюгу на Солтсхейме...

 

С модом 'Month_bugfix' вроде не должно быть проблем, если он будет вкючен первым...

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

Вот только без него у тебя небудет января ( 0 - месяц, утренней звезды).

:1anim_ac:

 

А теперь на счет последнего: 'основа скрипта та же будет'...

Ты имеешь в виду - добавить его обработку в свой скрипт ?

По моему - без разницы, что в этом, что в другом... Ни чего общего, кроме проверки месяца...

 

Вот только я лично незнаю, как скриптом определить знак игрока...

Как впрочем, пол определяется только из диалога...

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

  • 1 месяц спустя...

Гм, похоже, определить знак игрока вообще не реально. EJ-12 предлагал воспользоватся GetSpell, что бы определить знак по заклинаниям, присущим знаку, однако информация MSFD:

 

Возвращает «истину», если у объекта есть Spell_ID в инвентаре. Тем не менее, это, похоже, работает не для всех типов заклинаний. Способности и другие заклинания, относящиеся к расе/знаку рождения, не регистрируются этой функцией, а только те, что располагаются в главной части окна заклинаний. Пример смотри ниже.

 

Обидно...

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

Гм, похоже, определить знак игрока вообще не реально...

Ну не совсем...

 

В UMP, например, для возможности определения пола из скриптов ввели

глобальную переменную PCGender и patchScript...

 

Можно PC спросить об этом... если обманет - то самого себя... :)

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

  • 1 месяц спустя...
Гм, похоже, определить знак игрока вообще не реально. EJ-12 предлагал воспользоватся GetSpell, что бы определить знак по заклинаниям, присущим знаку, однако информация MSFD:

Обидно...

Неа. Можно. Нужно использовать функцию GetSpellEffects. Определяет все, что можно, нужно и не нужно.

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

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

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

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

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

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

Войти

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

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

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