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

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

Бред. Какие еще недочеты? Вообще-то ваниль никак не реагирует на endif, player->addtopic и прочее, это нормальное поведение, Беседка это учла. А то, что вы вдруг внезапно по велению сторонней программы стали исправлять эти "баги" в gfm, то это уже ваши тараканы. Еще раз, делайте как знаете.

Предупреждения обычно по делу идут. То, что скрипт скомпилировался, это ещё не значит, что он работает как положено. Движок не телепат, он не знает, чем автор скрипта думал, когда неправильно API использовал.

Несколько примеров:

1. Баг с Плантацией Дрена:

ShowMap Dren Plantation 

Из-за пропущенных кавычек последний аргумент отбрасывается, метка на карту не добавляется. Аналогично плагиностроители иногда косячат с командами AddItem/RemiveItem.

 

2. Баг с GetHealth:

Есть мод, в моде - голем-охранник, в скрипте которого есть проверка на уровень здоровья лидера:

if ( GetHealth leader > 50 )

Проблема в том, что у GetHealth в Морровинде нет аргументов, она всегда проверяет уровень здоровья текущего объекта. В результате аргумент отбрасывается, и команда в проверяет здоровье голема, а не охраняемого непися:

if ( GetHealth > 50 )

Чтобы работало как надо, команде надо явно указать цель:

if ( leader->GetHealth > 50 )

3. Попытка использовать сложные условия:

if ( getspelleffects "fireball" && getspelleffects "shard" ) 

Морровинд в такие условия не умеет, он тупо считает && и вторую проверку тремя дополнительными строковыми аргументами для первой. В результате вторая проверка отбрасывается, хотя скрипт нормально компилируется.

 

Таких примеров навалом, причём в самом Морровинде тоже косяков хватает, иначе GFM был бы не нужен.

 

И вообще в нормальных языках программирования половина "шедевров" скриптостроения даже бы не скомпилировалась, т.к. синтаксические ошибки принято исправлять во избежание некорретной работы приложений, а не прятать.

 

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

Тестирование, кстати, никогда не даёт 100%-ной гарантии правильности работы даже небольшого приложения, а "УМВР" - вообще не аргумент, потому и используют люди различные статические и динамические анализаторы, фаззеры и прочие внешние утилиты. Частным случаем статического анализа являются предупреждения компилятора, который честно предупреждает о потенциальных косяках.

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

  • Ответов 689
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме


Еще раз - это ошибки, они поправлены.

 

Это не ошибки. 
Исправили player->addtopic на addtopic, ох ты ж, да это же целых 8 байт сэкономили! Вот это исправление так исправление! Величайшая утечка памяти наконец заткнута! А если таких изменений много, то вообще ух!

Сам факт того, что исправление сделано уже будет занимать сотни байт :rofl:
Сорян, но как можно не постебать этих Великих-исправляльщиков?

 

Вот то, что akortunov пишет, вот это ошибки. Даже есть смысл проверять плагины опенмвшным компилятором.
Изменено пользователем Larkin
Ссылка на комментарий
Поделиться на другие сайты

 

Вот то, что akortunov пишет, вот это ошибки. Даже есть смысл проверять плагины опенмвшным компилятором.

А как ты определишь, где ошибки, а где не ошибки, без проверки? Обычно предупреждения принято править, чтобы лог не забивали - так проще реальные ошибки потом находить.

MPP, кстати, такие мелкие косяки правит по мере их нахождения.

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

Я всегда при редактировании мода в КС открываю еще и GFM.esp, чтобы видеть возможные ошибки.

Каждый раз просматривать эту портянку выискивая новые строки при отладке мода у меня нет желания.

 

Я сразу сказал, что это не баги, а предупреждения.

Из всего исправленного списка варнингов я нашел ошибку только в одном скрипте и еще одну для PfP.

@Larkin весельчак, проверь свое зрение и назови ее.

 


MPP уже больше не поддерживается, а в PfP half11 не хочет их заносить.

На западе не верят что варнинг.тхт может быть почти пустым.
Изменено пользователем olol
Ссылка на комментарий
Поделиться на другие сайты

А как ты определишь, где ошибки, а где не ошибки, без проверки? Обычно предупреждения принято править, чтобы лог не забивали - так проще реальные ошибки потом находить.

MPP, кстати, такие мелкие косяки правит по мере их нахождения.

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

@akortunov

MPP уже больше не поддерживается, а в PfP half11 не хочет их заносить.
На западе не верят что варнинг.тхт может быть почти пустым.

 

А патч для пуристов сильно жиже? Насколько я помню, там небольшое число изменений было выброшено. Да и, в принципе, по логам правки PfP (если они есть) можно восстановить и продолжить UMP.

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

UMP от кворна критиковали за то, что он начал туда заносить геймплейные исправления, которые пришлись не всем по вкусу.

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

Да и фритц не исключение... получается, что к этому приходят все, долго занимающиеся только одним модом.

Начинает стираться грань между исправлениями ошибок и улучшениями...

 

хальф11 взял последнюю свободную версию от тепала и занес все исправления по логам от кворна, получилась PfP.

Там практически все кроме сомнительных геймплейных исправлений, потому что для пуристов.

 

Было бы проще и быстрее удалить лишнее из последней версии, но у него нет прав на исправление версии кворна.

Там без разрешения делать нельзя, иначе съедят с говном...

Сейчас в PfP занесено очень много новых исправлений, а учитывая что там нет сомнительных правок, она устраивает всех.

 

Да и кому нужны, например, правки ребаланса брони, оружия... для фикса это полная чушь.

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

Лишние endif много кто случайно печатает, в сотнях плагинов есть лишние endif, скрипты спокойно работают на ванили.

Это вообще ни о чём не говорит. Вот пример скрипта из Балдмуна (colonySpriggan2):

elseif (deathvar==2)
	If (onactivate==1)
		return
	endif
	if (playonce==1)
			If (doonce==1)
				set xpos to ( GetPos, X )
				set ypos to ( GetPos, Y )
				set zpos to ( GetPos, Z )
				set zpos to (zpos +20)
				Placeitem "sprigganup" xpos ypos zpos 0 ;places effect
				set doonce to 2
			endif
			set time to ( time + GetSecondsPassed )	
			if (time>=1)
				Resurrect	; revives spriggan when activated by player
				Setscale 1.20  ;increase her size
				StartCombat Player
				ModHealth 3
				ModResistParalysis 100
				ModResistPoison 100
				ModResistMagicka 100
				ModResistFire 100
				ModResistFrost 100
				Set playonce to 2
			endif
		endif
	endif

	If (ondeath==1)
		set deathvar to 3	;third, final death
	endif
endif

А теперь скажите мне, при каких условиях должен обрабатываться блок с "third, final death". Чисто технически лишним endif считается последний, тогда deathvar будет устанавливаться в 3 при любом OnDeath, когда управление дойдет до конца скрипта, а не после третьей смерти сприггана, как должно быть исходя из логики скрипта. Причём судя по скрипту, после каждого воскрешения спригган должен становиться больше и злее (например, получать иммунитет чуть ли не ко всей магии).

 

Да и критерием "спокойной работы на ванили" обычно считается сам факт компиляции скрипта. Примеры творчества таких мододелов я скидывал выше.

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

Это вообще ни о чём не говорит. Вот пример скрипта из Балдмуна (colonySpriggan2):

 

elseif (deathvar==2)
	If (onactivate==1)
		return
	endif
	if (playonce==1)
			If (doonce==1)
				set xpos to ( GetPos, X )
				set ypos to ( GetPos, Y )
				set zpos to ( GetPos, Z )
				set zpos to (zpos +20)
				Placeitem "sprigganup" xpos ypos zpos 0 ;places effect
				set doonce to 2
			endif
			set time to ( time + GetSecondsPassed )	
			if (time>=1)
				Resurrect	; revives spriggan when activated by player
				Setscale 1.20  ;increase her size
				StartCombat Player
				ModHealth 3
				ModResistParalysis 100
				ModResistPoison 100
				ModResistMagicka 100
				ModResistFire 100
				ModResistFrost 100
				Set playonce to 2
			endif
		endif
	endif

	If (ondeath==1)
		set deathvar to 3	;third, final death
	endif
endif
А теперь скажите мне, при каких условиях должен обрабатываться блок с "third, final death". Чисто технически лишним endif считается последний, тогда deathvar будет устанавливаться в 3 при любом OnDeath, а не после третьей смерти сприггана, как должно быть исходя из логики скрипта. Причём судя по скрипту, после каждого воскрешения спригган должен становиться больше и злее (например, получать иммунитет чуть ли не ко всей магии).

 

Да и критерием "спокойной работы на ванили" обычно считается сам факт компиляции скрипта. Примеры творчества таких мододелов я скидывал выше.

Тут спригган будет умирать один раз, да. Имеем сприггана, умирающего всего раз. Похоже на баг. Конкретно в этом скрипте это критично. А в скрипте ещё есть чтение переменной, которое не работает, емнип, без мср. Этот скрипт полностью багован. Кстати, а первый ondeath не отменяет следующий в этом же кадре?
Ссылка на комментарий
Поделиться на другие сайты

Очень хороший и наглядный пример.

 

Некоторые лишние endif были удалены в UMP и сейчас это исправление есть в PfP и 7хх.

Поэтому компилятор уже не дает предупреждений на скриптах спригганах.

Удален естественно последний endif согласно логике работы компилятора.

 

Если удалить не последний, а четвертый с конца, то логика работы будет исправлена и скрипт заработает как предполагалось.

Очевидно, что это ошибка, но будет ли это исправлением бага или гемплея?

 

Сейчас это обычные спригганы, но что получится после такого исправления?

Они усилятся втрое и маги будут в восторге от их 100% защиты от магии.

 

Тестеры проверяли игру и прохождение без этого исправления.

Оно хорошо подходит для хардкорной игры, но такой "подарок" обрадует не всех.

 

Ни кто не проверял полученный баланс после такого "исправления".

Существа имеющие уязвимость к огню за счет их горючести вдруг получат к нему иммунитет.

Разве это не будет багом вызванным исправлением?

 

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

И как это будет сочетаться с другими ребалансерами? В 5хх я это удалю.

 

Хороший пример показывающий близкую грань между исправлениями и улучшениями.

 

Дополнительно:

 

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

чтение переменных из других скриптов без МСР не работает, но проверку их на соответствие значениям делать можно.

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

Сейчас это обычные спригганы, но что получится после такого исправления? Они усилятся втрое и маги будут в восторге от их 100% защиты от магии.

Ну конкретно в данном случае управление вроде как не доходит до забагованной ветки из-за конструкций return, так что код ВРОДЕ работает (спригган воскресает 2 раза, усиляясь), но не берусь утверждать, что он работает во ВСЕХ вариантах исполнения скрипта.

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

В скриптах ДВА скрипта Pub_RavenRock

Но у одного название закомментарено:

begin ;Pub_RavenRock


В редакторе вместо имени у него begin, и он вроде нигде не используется, так что проблема безобидная и вылазит только при полном сканировании.

Это к вопросу "Зачем нужно проверять имена скриптов?", кстати.

 

Заметка от akortunov

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

 

В скриптах ДВА скрипта Pub_RavenRock
Но у одного название закомментарено:
begin ;Pub_RavenRock
В редакторе вместо имени у него begin, и он вроде нигде не используется, так что проблема безобидная и вылазит только при полном сканировании.
Это к вопросу "Зачем нужно проверять имена скриптов?", кстати.
 
Заметка от akortunov

 

 

Получилось поправить?

 

И еще вот это - https://www.fullrest.ru/forum/topic/41404-mfr-3217/?p=997050

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


В Молаг Маре нет такой комнаты.

 

 

Было:

Begin Pub_RavenRock

begin 

 

Стало:


Begin begin

;Pub_RavenRock

 

Я не знаю, будет или нет ОпенМВ ругаться на использование ключевого слова в названии, а удалить нельзя.

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

Я имел в виду, что ее нет в оригинале, это сборка добавляет.

 

Да, верно, исправим у себя.

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

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

В прошлый раз диалог начался с обсуждения Ра'Вирра. Вот что он говорит по поводу своего ассортимента:

"Что? Ты говоришь, это не даэдрическое оружие? Нет, ты прав, но Ра'Вирр не лжец. Если ты этого пожелаешь, то Злодейское, Демоническое и Дьявольское оружие Ра'Вирра будет таким же острым, как изящное даэдрическое оружие, и таким же легким, как воздушная сумка нетча. Заклятие длится недолго, но достаточно долго, чтобы пробить самую крепкую броню. Ра'Вирр покупает оружие непосредственно у Телванни. Дешевле ты не найдешь во всей Балморе".

 

Ну стоит начать с того, что из диалога явно следует, что Ра'Вирр честный торговец. Он сразу поддержиавает довод игрока о том, что у него в ассортименте нет даэдрического оружия. Однако добавляет, что если игрок пожелает (имеется ввиду призовет), то з/д и д оружие будет (имеется ввиду превратится) как даэдрическое и при этом очень легкое (призванное оружие ничего не весит). Так же прямо говорит, что эффект временный.

Более того Ра'Вирр не единственный кто продает подобные предметы, так что обвинять его в том, что именно он хочет надуть игрока не стоит.

Тут скорее вопросы к Тельванни, которые изготавливают подобное оружие и шлемы.

 

Теперь о ценообразовании. Сам факт того, что игрок 1 уровня с колдовством 5 и интеллектом 40 может приобрести за 70 золотых заклинание призыва длинного меча и за 6 маны с вероятностью 19% его произнести (те в среднем тратя 30 маны) сразу опрокидывает все аргументы ньюфагов о плохой боевой системе, грязекрабы падут! Более того, каждый призванный предмет имеет очень полезное зачарование на соответствующий навык, очень помогающее в бою в начале.В результате, как это ни парадоксально, требовать большой цены от стального предмета, зачарованного подобным заклинанием не приходится (зачарованный стальной предмет стоит в среднем 200 монет).

Однако дальше ценнообразование продвинутых версий полностью рушится. Более менее логичным выглядит ценообразование шлемов:

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

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

На всем оружии разные элементарные щиты, логики не вижу. Я бы сделал везде огненные, раз уж оружие дьявольское. Либо 5 на 10 либо 1 на 60. Все равно они для антуража. Злодейское изменил бы полностью.

Со шлемами примерно тоже самое, только дьявольские их версии сломаны, имеют бесполезное дорогое зачарование и нереальное количество зарядов (для их создания нужна была бы звезда Азуры с душой 2/3 Вивека). Предложил замену по аналогии с оружием.

Кто-то в добром порыве восстановил demon axe и положил его Ра'Вирру на полочку. Да, зачарование от него было в игре (хотя по логике оно должно было быть 1-10 на 10), однако в качестве основы явно предполагалась стальная секира (fiend battle axe в игре есть на её основе), а не стальной одноручный топор. Так же в редакторе есть зачарования для demon axe и demon spear. А так же для шлемов fiend molecrab, fiend cephalopod.

После моих исправлений ассортимент Ра'Вирра выглядит очень логичным для старта. Дешевый demon tanto, средний devil spear и очень дорогие fiend tanto и fiend katana.

После тестов понимаешь, насколько силен призыв даэдрической Секиры, урона почти в два раза больше, чем от даэдрического меча. Давать возможность дешево купить оружие с эффектом такого призыва практически в стартовую локацию очень неправильно.

И просто ужасно класть подобное продавцу а заднюю комнату, где оно без проблем крадется. Я очень хочу чтобы этот топор был убран из GFM!

Я создал тестовый плагин, сундук стоит у Ра'Вирра. можете сразу оценить результат моей работы и его ассортимент. Восстановлено все оружие и шлемы.

Текстовый документ с багами для GFM так же приложен. Пожалуйста, уделите 5 минут, жду ваших комментариев.



 

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

У меня эти "шибки" не выводятся в игре.

Балансом оружия и брони здесь кто-то занимался. Вам нужно обратиться к ним или использовать свой.

 

Версия 6.3:
*Восстановлено зачарование devil axe_en и соответствующий предмет.
 
devil axe и steel dart добавлены на полку равирру.
В 5.хх этого нет, удалю если скажут убрать.
Ссылка на комментарий
Поделиться на другие сайты

Ну про неправильный devil axe я уже все написал. Приходим в бальмору, начинаем всех даэдрической секирой за 150 монет шатать, можно даже не красть с такой ценой. Подход понятен, если бесовские шлемы и шлемы из дьявольских цефалоподов тебя не смущают... Ну ладно. А вообще плагин смотрел, по сути есть комментарии?

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

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

 

Там добавлены новые вещи типа: demon battle axe, demon spear...

GFM исправляет ошибки, а не настраивает геймплей.

 

Твой исправленный "Дьявольский танто Анаренена" не соответствует диалjгам и топику: "Танто Черт Анаререна".

 

Я делаю GFM не для себя лично. Решение по 7хх принимает aL.

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

Диалоги я не правил, плагин тестовый, чтобы идею до конца довести обсуждением. Я думал что ошибки перевода стоит внести в GFM, остальное плагином. Название предмета "Танто Черт Анаререна" говорит само за себя. Я же эту работу делал тоже не для себя лично, тут важно каждое мнение, как я понял. Посмотрим, что aL скажет, может еще кто посмотрит. Там еще скрипты на проклятых вещах правились, их я тоже не смотрел.

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

Диалоги я не правил, плагин тестовый, чтобы идею до конца довести обсуждением. Я думал что ошибки перевода стоит внести в GFM, остальное плагином. Название предмета "Танто Черт Анаререна" говорит само за себя. Я же эту работу делал тоже не для себя лично, тут важно каждое мнение, как я понял. Посмотрим, что aL скажет, может еще кто посмотрит. Там еще скрипты на проклятых вещах правились, их я тоже не смотрел.

 

признаюсь просмотрел сквозь пальцы, киньте в меня цитатой, что конкретно предлагается сделать?

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

al, не торопись, новый год на носу, дел дофига. Будет время посмотришь. Все что я предлагаю есть в приложенном txt (надеюсь notepad++ у всех есть).

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

  • 4 недели спустя...
Проклятие GFM

 

Я раньше писал, что тот, кто долго занимается фиксом в конце-концов начинает включать в мод геймплейные изменения.

Это случилось с Thepal, quorn и Fritz.

Я привел в пример Patch for Purists от Half11 который все улучшения стал делать в отдельном моде.

 

Но время идет и все меняется...

Сейчас он переосмыслил свои требования и "Patch for Purists" уже не для пуристов.

 

PfP.jpg

 

Там обсуждается: нужно ли исправлять "ошибку" цвета желваков у никс-гончей и цену на Хакльлоу.

Меня поразил его вопрос: нужно ли переименовать название бутыльков для "правильной" сортировки.

Решили, что не нужно, но не потому, что это не ошибка, а потому, что будут конфликты с другими модами.

 

Теперь туда будет включаться все, что не вызывает несовместимость, но это их дело.

Для меня их решение и мнение R-Zero имеет нулевое значение для GFM.

 

Я предложил исправить диалоги (которые в GFM сделаны еще в 2005г), чтоб небыло предупреждений.

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

 

А когда я сказал, что не использую PfP из-за того, что в его большом списке сообщений трудно искать ошибки мода,

то вообще стал врагом номер 1

 

Я пожелел, что "Patch for Purists" уже не для пуристов и что ему действительно нужно сменить название для соответствия.

В результате Half11 попросил модераторов меня забанить.

 

ну чтож... а я пока иду другим путем...

 

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

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

Вы сможете оставить комментарий после входа в



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

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