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

Длина скрипта в строках


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

Вопрос к тем, кто писал ДЕЙСТВИТЕЛЬНО длинные скрипты: Какова максимальная длина скрипта в сторках, естесственно, компилируемая? Сведения из MSFD просьба не приводить, там косяки! Не помню кто, но кто-то здесь хвастался, что всю ночь писал скрипт на 1200 строк, хотелось бы узнать как отреагировал компилятор на такую длину?
Ссылка на комментарий
Поделиться на другие сайты

Мой самый большой скрипт был на 338 строк - компаньонский, и я поместил в него лишь самое основное. Самый большой скрипт, который я видел (точнее, досканально исследовал) скрипт компаньонов в моде Galleo_cm_partnersandbandits - 924 строки, 22357 байт. Компилятор нормально реагирует. Что больше - не знаю. Просто не сталкивался. Но, подозреваю, скрипты из Ridding_horse или Fishing Academy поболльше будут.
Ссылка на комментарий
Поделиться на другие сайты

А MSFD почитать лень? Цитата:

 

Символьное ограничение: Есть предел количества символов в скрипте. Это где-то около 30000 символов (настоящий предел, скорее всего, равен 32767, который является максимумом для 16-битного целого числа, с помощью которого длина скрипта хранится в .esp файле – спасибо Horatio за эту информацию). Если это количество достигается, то вы больше не сможете печатать в окне редактора. Для сохранения свободного места можно попробовать следующее:

• Удалить символы

• Использовать более короткие имена переменных

• Посмотреть, можно ли разделить скрипт на части, вынести какую либо его часть в глобальный скрипт или повесить на разные объекты, как разные скрипты.

 

Строковое ограничение: Стоит отметить также лимит строк. Похоже, максимальное количество строк варьируется от 900 до 1500 строк кода, возможно, это лимит скомпилированных строк, а не всех строк, так что пустые строки и комментарии не в счет. Это выдаст ошибку во время сохранения скрипта.

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

lost81

 

Похоже речь о том, как я выпил слишком много кофе. :P Я действительно писал такой скрипт для одного мода, он был предназначен для изменения шанса на погоду в регионе по нажатию кнопки.

Вот последние его строки:

if ( weathchance < 0 )
MessageBox "Число в скобках (ост. шансы) не может иметь отрицательное значение!" "Начать заново" "Выйти"
Set button to GetButtonPressed
if ( button == 0 )
 Set curstate to 1 
 Set weathchance to 100
elseif ( button == 1 )
 Set curstate to 0
endif
elseif ( weathchance == 0 )
Set vlong to 1
ModRegion "Moonlight island" clearchance cloudychance foggychance ovcastchance rainchance thundchance ashchance blightchance snowchance blizchance
endif

Компилятор этот скрипт выносил нормально, но меня подвел ModRegion, оказалось, что он не принимает переменных в качестве аргументов. Без него все компилировалось и работало, даже такой длины.

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

2 Oleg Bars: Тебе, похоже, тоже лень дочитать сообщение до конца! Я, так и просил: данные из MSFD НЕ ПРИВОДИТЬ!!! ни одно условие из твоей цитаты не выполненно, и тем не мение компиллятор не видит "end" на 500-с лишним сторке! Колилчество символов 15177, в окне компилятора символы отображаются! Что скажешь на это?!

 

2 All: Спасибо за отзывчивость... хоть проблемма так и не решилась... прийдется выносить часть в глобальные скрипты... :(

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

Почему не видит end? Странно. В Galleo_cm_partnersandbandits с 900-стами строками все пашет нормально. Попробуй проверить длину отдельной строки. Из-за этого тоже могут быть проблемы.
Ссылка на комментарий
Поделиться на другие сайты

Ну не дочитал, извиняй :)

Сам скрипт выложи, посмотрим.

 

Ладно, бывает... ;)

лови скрипт, обрати внимание, что при телепортации в города используется условие Do-Once, а в даэдрические святилища - нет, тк с данным условием скипт не видит end'a(те банальное сокращение сторк)

[morrscript]

begin 2_test_teleport

 

short status

short button

short message

short Once

 

if ( MenuMode == 1 )

return

endif

 

if ( OnActivate == 1 )

set status to 1

endif

 

if ( status == 1 )

MessageBox "В какое место вы желаете отправиться?" " Города " " Даэдрические руины " "Двемерские развалины" " Лагеря эшлендеров " "Никуда"

set message to 10

set Once to 0

set status to 0

elseif ( status == 2 )

MessageBox "В какой город отправляемся?" "Альд’рун" "Альд Велоти" "Балмора" "Вивек" "Вос" "Гнаар Мок" "Другой город" "Главное меню" "Никуда"

set message to 20

set status to 0

elseif ( status == 3 )

MessageBox "В какой город отправляемся?" "Гнисис" "Дагон Фел" "Кальдера" "Маар Ган" "Молаг Мар" "Другой город" "Предыдущее меню" "Главное меню" "Никуда"

set message to 21

set status to 0

elseif ( status == 4 )

MessageBox "В какой город отправляемся?" "Пелагиат" "Призрачные Врата" "Садрит Мора" "Сейда Нин" "Суран" "Другой город" "Предыдущее меню" "Главное меню" "Никуда"

set message to 22

set status to 0

elseif ( status == 5 )

MessageBox "В какой город отправляемся?" "Тель Арун" "Тель Бранора" "Тель Мора" "Хла Оад" "Хуул" "Эбенгард" "Предыдущее меню" "Главное меню" "Никуда"

set message to 23

set status to 0

elseif ( status == 6 )

MessageBox "Какие руины желаете посетить?" "Аддадшашанамму" "Альд Даэдрот" "Альд Сота" "Алмурабаларамми" "Ашалмавия" "Ашалмимилкала" "Другие руины" "Главное меню" "Никуда"

set message to 30

set status to 0

elseif ( status == 7 )

MessageBox "Какие руины желаете посетить?" "Ассарнатамат" "Асслкушалит" "Ассурдирапал" "Ассурнабиташпи" "Ашунартес" "Другие руины" "Предыдущее меню" "Главное меню" "Никуда"

set message to 31

set status to 0

elseif ( status == 8 )

MessageBox "Какие руины желаете посетить?" "Ашурнибиби" "Бал Фелл" "Бал Ур" "Душариран" "Зайнтирарис" "Другие руины" "Предыдущее меню" "Главное меню" "Никуда"

set message to 32

set status to 0

elseif ( status == 9 )

MessageBox "Какие руины желаете посетить?" "Зергонипал" "Ибар-Дад" "Кашташпи" "Коштарари" "Мелкашиши" "Другие руины" "Предыдущее меню" "Главное меню" "Никуда"

set message to 33

set status to 0

elseif ( status == 10 )

MessageBox "Какие руины желаете посетить?" "Оннисиралис" "Рамимилк" "Родовая Гробница Омарен" "Святилише Азуры" "Тусененд" "Другие руины" "Предыдущее меню" "Главное меню" "Никуда"

set message to 34

set status to 0

elseif ( status == 11 )

MessageBox "Какие руины желаете посетить?" "Уларрадаллаку" "Шашпиламат" "Эбернанит" "Эзутанамус" "Янсиррамус" "Ясаммидан" "Предыдущее меню" "Главное меню" "Никуда"

set message to 35

set status to 0

endif

 

if ( message == 10 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button ==0 )

set status to 2

elseif ( button == 1 )

set status to 6

 

elseif ( button == 4 )

set status to 0

endif

elseif ( message == 20 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -15574, 52576, 2029, 90 "Ald-ruhn ( -2, 6 )"

set Once to 1

set status to 0

endif

elseif ( button == 1 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -85936, 125692, 598, 315 "Ald Velothi ( -11, 15 )"

set Once to 1

set status to 0

endif

elseif ( button == 2 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -23035, -16921, 519, 315 "Balmora ( -3, 3 )"

set Once to 1

set status to 0

endif

elseif ( button == 3 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 33447, -84447, 617, 180 "Vivec, Arena ( 4, -11 )"

set Once to 1

set status to 0

endif

elseif ( button == 4 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 99403, 113793, 236, 225 "Vos ( 12, 13 )"

set Once to 1

set status to 0

endif

elseif ( button == 5 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -58633, 26165, 122, 315 "Gnaar Mok ( -8, 3 )"

set Once to 1

set status to 0

endif

elseif ( button == 6 )

set status to 3

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 21 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -81436, 90288, 122, 315 "Gnisis ( -10, 11 )"

set Once to 1

set status to 0

endif

elseif ( button == 1 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 62681, 183952, 174, 180 "Dagon Fel ( 7, 22 )"

set Once to 1

set status to 0

endif

elseif ( button == 2 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -12998, 19715, 1630, 45 "Caldera ( -2, 2 )"

set Once to 1

set status to 0

endif

elseif ( button == 3 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -22031, 102540, 2013, 45 "Maar Gan ( -3, 12 )"

set Once to 1

set status to 0

endif

elseif ( button == 4 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 106400, -61836, 809, 90 "Molag Mar ( 12, -8 )"

set Once to 1

set status to 0

endif

elseif ( button == 5 )

set status to 4

elseif ( button == 6 )

set status to 2

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 22 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 641, -56732, 1395, 90 "Pelagiat ( 0, -7 )"

set Once to 1

set status to 0

endif

elseif ( button == 1 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 20593, 37598, 986, 0 "Ghostgate ( 2, 4 )"

set Once to 1

set status to 0

endif

elseif ( button == 2 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 142561, 35970, 430, 90 "Sadrith Mora ( 17, 14 )"

set Once to 1

set status to 0

endif

elseif ( button == 3 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -10156, -71313, 185, 270 "Seyda Neen ( -2, -9 )"

set Once to 1

set status to 0

endif

elseif ( button == 4 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 53173, -48657, 583, 180 "Suran (6, -6)"

set Once to 1

set status to 0

endif

elseif ( button == 5 )

set status to 5

elseif ( button == 6 )

set status to 3

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 23 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 124603, 41626, 174, 0 "Tel Aruhn ( 15, 5 )"

set Once to 1

set status to 0

endif

elseif ( button == 1 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 123315, -102442, 810, 90 "Tel Branora ( 15, 13 )"

set Once to 1

set status to 0

endif

elseif ( button == 2 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 106821, 116980, 172, 45 "Tel Mora ( 113, 14 )"

set Once to 1

set status to 0

endif

elseif ( button == 3 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -44969, -40142, 558, 315 "Hla Oad ( -6, -5 )"

set Once to 1

set status to 0

endif

elseif ( button == 4 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position -69196, 141750, 241, 0 "Khuul ( -9, 17 )"

set once to 1

set status to 0

endif

elseif ( button == 5 )

if ( Once == 0 )

PlaySound "mysticism area"

Player -> Position 17126, -101926, 458, 270 "EbonHeart ( 2, -13 )"

set Once to 1

set status to 0

endif

elseif ( button == 6 )

set status to 4

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 30 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

PlaySound "mysticism area"

Player -> Position -65135, 6888, 129, 135 "Район Горького Берега ( -8, 0 )"

set status to 0

elseif ( button == 1 )

PlaySound "mysticism area"

Player -> Position 92200, 168127, 429, 90 "Ald Daedroth ( 11, 20 )"

set status to 0

elseif ( button == 2 )

PlaySound "mysticism area"

Player -> Position 55934, -73559, 3, 333 "Ald Sotha ( 6, 9 )"

set status to 0

elseif ( button == 3 )

PlaySound "mysticism area"

Player -> Position 132486, -67286, 656, 180 "Район Побережья Азуры ( 16, -9 )"

set status to 0

elseif ( button == 4 )

PlaySound "mysticism area"

Player -> Position -76101, 124234, 1504, 0 "Ashalmawia ( -10, 15 )"

set status to 0

elseif ( button == 5 )

PlaySound "mysticism area"

Player -> Position -63842, -11173, -28, 0 "Район Горького Берега ( -8, -2)"

set status to 0

elseif ( button == 6 )

set status to 7

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 31 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

PlaySound "mysticism area"

Player -> Position 4178, 5042, 1139, 45 "Район Эшленда ( 0, 0 )"

set status to 0

elseif ( button == 1 )

PlaySound "mysticism area"

Player -> Position 20435, 93960, 9293, 180 "Район Красной Горы ( 2, 11 )"

set status to 0

elseif ( button == 2 )

PlaySound "mysticism area"

Player -> Position 689, 174832, 100, 180 "Район Шигорада ( 0, 21 )"

set status to 0

elseif ( button == 3 )

PlaySound "mysticism area"

Player -> Position -40528, 150109, 729, 90 "Ashurnabitashpi ( -5, 18 )"

set status to 0

elseif ( button == 4 )

PlaySound "mysticism area"

Player -> Position 26305, -18636, 1012, 135 "Район Молаг Амур ( 3, -3 )"

set status to 0

elseif ( button == 5 )

set status to 8

elseif ( button == 6 )

set status to 6

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 32 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

PlaySound "mysticism area"

Player -> Position -58085, -29828, 112, 90, "Район Горького Берега ( -8, -4 )"

set status to 0

elseif ( button == 1 )

PlaySound "mysticism area"

Player -> Position 73838, -95952, 751, 241 "Bal Fell ( 9, -12 )"

set status to 0

elseif ( button == 2 )

PlaySound "mysticism area"

Player -> Position 56776, -37747, 846, 270 "Bal Ur ( 6, -5 )"

set status to 0

elseif ( button == 3 )

PlaySound "mysticism area"

Player -> Position -51682, 80707, 1563, 135 "Район Западного Нагорья ( -7, 9 )"

set status to 0

elseif ( button == 4 )

PlaySound "mysticism area"

Player -> Position 104825, -73853, 788, 166 "Zaintiraris ( 12, -10 )"

set status to 0

elseif ( button == 5 )

set status to 9

elseif ( button == 6 )

set status to 7

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 33 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

PlaySound "mysticism area"

Player -> Position 44328, 126591, 780, 56 "Zergonipal ( 5, 15 )"

set status to 0

elseif ( button == 1 )

PlaySound "mysticism area"

Player -> Position -43087, 148609, 293, 135 "Район Шигорада ( -6, 18 )"

set status to 0

elseif ( button == 2 )

PlaySound "mysticism area"

Player -> Position 77671, 135321, 131, 90 "Район Грейзленда ( 9, 16 )"

set status to 0

elseif ( button == 3 )

PlaySound "mysticism area"

Player -> Position 150787, 6759, 431, 270 "Район побережья Азуры ( 18, 0 )"

set status to 0

elseif ( button == 4 )

PlaySound "mysticism area"

Player -> Position -44806, 108641, 788, 90 "Район Западного Нагорья ( -6, 13 )"

set status to 0

elseif ( button == 5 )

set status to 10

elseif ( button == 6 )

set status to 8

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 34 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

PlaySound "mysticism area"

Player -> Position -2702, 184132, 136, 135 "Район Шигорада ( -1, 22 )"

set status to 0

elseif ( button == 1 )

PlaySound "mysticism area"

Player -> Position -4586, 37048, 1085, 45 "Район Эшленда ( -1, 4 )"

set status to 0

elseif ( button == 2 )

PlaySound "mysticism area"

Player -> Position 166123, 38493, 220, 135 "Район побережья Азуры ( 20, 4 )"

set status to 0

elseif ( button == 3 )

PlaySound "mysticism area"

Player -> Position 162097, -61759, 1496, 270 "Район побережья Азуры ( 19, -8 )"

set status to 0

elseif ( button == 4 )

PlaySound "mysticism area"

Player -> Position 116300, -9945, 1332, 90 "Район Молаг Амур ( 14, -2 )"

set status to 0

elseif ( button == 5 )

set status to 11

elseif ( button == 6 )

set status to 9

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

elseif ( message == 35 )

set button to GetButtonPressed

if ( button == -1 )

return

set status to 0

elseif ( button == 0 )

PlaySound "mysticism area"

Player -> Position 9049, 71210, 12115, 180 "Район Красной Горы ( 1, 8 )"

set status to 0

elseif ( button == 1 )

PlaySound "mysticism area"

Player -> Position 140541, -34325, 825, 135 "Район Побережья Азуры ( 17, -5 )"

set status to 0

elseif ( button == 2 )

PlaySound "mysticism area"

Player -> Position 3581, 142245, 736, 45 "Район Эшленда ( 0, 17 )"

set status to 0

elseif ( button == 3 )

PlaySound "mysticism area"

Player -> Position 116573, 95956, 850, 135 "Район Побережья Азуры ( 14, 11 )"

set status to 0

elseif ( button == 4 )

PlaySound "mysticism area"

Player -> Position 104642, 38421, 561, 225 "Yansirramus ( 12, 4 )"

set status to 0

elseif ( button == 5 )

PlaySound "mysticism area"

Player -> Position -118086, 115586, 346, 315 "Район Западного Нагорья ( -15, 14 )"

set status to 0

elseif ( button == 6 )

set status to 10

elseif ( button == 7 )

set status to 1

elseif ( button == 8 )

set status to 0

endif

endif

end

[/morrscript]

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

1. Вместо Position в данном контексте нужно PositionCell, так как в аргументах есть ячейки.

 

2. Может быть я невнимательно смотрел или может быть я просто банально туплю, но зачем тебе условие DoOnce, если при каждом Activate оно все равно сбрасывается?

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

1. Вместо Position в данном контексте нужно PositionCell, так как в аргументах есть ячейки.

 

2. Может быть я невнимательно смотрел или может быть я просто банально туплю, но зачем тебе условие DoOnce, если при каждом Activate оно все равно сбрасывается?

 

1-Нет, PisitionCell, это только для интерьеров, у меня везде телепортирует в экстерьеры, здесь-норма!

 

2- Ответ ты найдешь здесь

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

Так, на данный момент 592 строки, 17259 символов и ВСЕ КОМПИЛИРУЕТСЯ!!!! Я не знаю, что за глюк был у TES CS, но сегодня я решил еще раз попробовать дописать скрипт, все получилось! Всем спасибо за отзывчивость, тему можно закрывать! :D
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Войти

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

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

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