lost81 Опубликовано 29 августа, 2005 Жалоба Поделиться Опубликовано 29 августа, 2005 Вопрос к тем, кто писал ДЕЙСТВИТЕЛЬНО длинные скрипты: Какова максимальная длина скрипта в сторках, естесственно, компилируемая? Сведения из MSFD просьба не приводить, там косяки! Не помню кто, но кто-то здесь хвастался, что всю ночь писал скрипт на 1200 строк, хотелось бы узнать как отреагировал компилятор на такую длину? Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiberius Flavius Опубликовано 29 августа, 2005 Жалоба Поделиться Опубликовано 29 августа, 2005 Мой самый большой скрипт был на 338 строк - компаньонский, и я поместил в него лишь самое основное. Самый большой скрипт, который я видел (точнее, досканально исследовал) скрипт компаньонов в моде Galleo_cm_partnersandbandits - 924 строки, 22357 байт. Компилятор нормально реагирует. Что больше - не знаю. Просто не сталкивался. Но, подозреваю, скрипты из Ridding_horse или Fishing Academy поболльше будут. Ссылка на комментарий Поделиться на другие сайты Поделиться
Олег Барс Опубликовано 29 августа, 2005 Жалоба Поделиться Опубликовано 29 августа, 2005 А MSFD почитать лень? Цитата: Символьное ограничение: Есть предел количества символов в скрипте. Это где-то около 30000 символов (настоящий предел, скорее всего, равен 32767, который является максимумом для 16-битного целого числа, с помощью которого длина скрипта хранится в .esp файле – спасибо Horatio за эту информацию). Если это количество достигается, то вы больше не сможете печатать в окне редактора. Для сохранения свободного места можно попробовать следующее:• Удалить символы• Использовать более короткие имена переменных• Посмотреть, можно ли разделить скрипт на части, вынести какую либо его часть в глобальный скрипт или повесить на разные объекты, как разные скрипты. Строковое ограничение: Стоит отметить также лимит строк. Похоже, максимальное количество строк варьируется от 900 до 1500 строк кода, возможно, это лимит скомпилированных строк, а не всех строк, так что пустые строки и комментарии не в счет. Это выдаст ошибку во время сохранения скрипта. Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 29 августа, 2005 Жалоба Поделиться Опубликовано 29 августа, 2005 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, оказалось, что он не принимает переменных в качестве аргументов. Без него все компилировалось и работало, даже такой длины. Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 29 августа, 2005 Жалоба Поделиться Опубликовано 29 августа, 2005 Так, а ModRegion переменные не понимает? Жалко... Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 30 августа, 2005 Автор Жалоба Поделиться Опубликовано 30 августа, 2005 2 Oleg Bars: Тебе, похоже, тоже лень дочитать сообщение до конца! Я, так и просил: данные из MSFD НЕ ПРИВОДИТЬ!!! ни одно условие из твоей цитаты не выполненно, и тем не мение компиллятор не видит "end" на 500-с лишним сторке! Колилчество символов 15177, в окне компилятора символы отображаются! Что скажешь на это?! 2 All: Спасибо за отзывчивость... хоть проблемма так и не решилась... прийдется выносить часть в глобальные скрипты... :( Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiberius Flavius Опубликовано 30 августа, 2005 Жалоба Поделиться Опубликовано 30 августа, 2005 Почему не видит end? Странно. В Galleo_cm_partnersandbandits с 900-стами строками все пашет нормально. Попробуй проверить длину отдельной строки. Из-за этого тоже могут быть проблемы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Олег Барс Опубликовано 30 августа, 2005 Жалоба Поделиться Опубликовано 30 августа, 2005 Ну не дочитал, извиняй :) Сам скрипт выложи, посмотрим. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 31 августа, 2005 Автор Жалоба Поделиться Опубликовано 31 августа, 2005 Ну не дочитал, извиняй :) Сам скрипт выложи, посмотрим.<{POST_SNAPBACK}> Ладно, бывает... ;)лови скрипт, обрати внимание, что при телепортации в города используется условие Do-Once, а в даэдрические святилища - нет, тк с данным условием скипт не видит end'a(те банальное сокращение сторк)[morrscript]begin 2_test_teleport short statusshort buttonshort messageshort Once if ( MenuMode == 1 ) returnendif 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 endifend[/morrscript] Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 31 августа, 2005 Жалоба Поделиться Опубликовано 31 августа, 2005 1. Вместо Position в данном контексте нужно PositionCell, так как в аргументах есть ячейки. 2. Может быть я невнимательно смотрел или может быть я просто банально туплю, но зачем тебе условие DoOnce, если при каждом Activate оно все равно сбрасывается? Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 1 сентября, 2005 Автор Жалоба Поделиться Опубликовано 1 сентября, 2005 1. Вместо Position в данном контексте нужно PositionCell, так как в аргументах есть ячейки. 2. Может быть я невнимательно смотрел или может быть я просто банально туплю, но зачем тебе условие DoOnce, если при каждом Activate оно все равно сбрасывается?<{POST_SNAPBACK}> 1-Нет, PisitionCell, это только для интерьеров, у меня везде телепортирует в экстерьеры, здесь-норма! 2- Ответ ты найдешь здесь Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 2 сентября, 2005 Автор Жалоба Поделиться Опубликовано 2 сентября, 2005 Так, на данный момент 592 строки, 17259 символов и ВСЕ КОМПИЛИРУЕТСЯ!!!! Я не знаю, что за глюк был у TES CS, но сегодня я решил еще раз попробовать дописать скрипт, все получилось! Всем спасибо за отзывчивость, тему можно закрывать! :D Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти