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

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

Окей, а если перенести iFlag в самый конец кода? Таким образом iFlag будет запирать блок после выполнения всех условий.

scn SFWCraftingRewardXPScript

Int iFlag
Int iPreviousValue
Int iCurrentValue
Int iCraftXP

	Begin MenuMode 1077

		Let iFlag := 1

	End

	Begin GameMode

		If iFlag
			Let iPreviousValue := iCurrentValue
			Let iCurrentValue := (GetPCMiscStat "Items Crafted")
			Let iCraftXP:= (iCurrentValue - iPreviousValue)
			If iCurrentValue > iPreviousValue
				Player.RewardXP iCraftXP
			Endif
		Endif
				Let iFlag := 0
	End

Поделиться сообщением


Ссылка на сообщение

Именно это я и хотел увидеть, в принципе. Единственное, я бы его разместил перед последним endif. Проблема была в том, что игрок мог зайти в меню крафта и просто выйти из него, ничего не крафтя. Тогда условие If iFlag выполнялось бы, и всё что в блоке также бы работало. А вот условие If iCurrentValue > iPreviousValue не выполнялось бы, а значит и строка Let iFlag := 0 была бы пропущена. Как-то так.

Теперь точно всё. Мод готов к релизу. Если ты, конечно, этого хочешь.

Поделиться сообщением


Ссылка на сообщение
Именно это я и хотел увидеть, в принципе.

Я великодушно прошу прощение, о мастер скриптинга. Но, если запихать последнюю строчку Set iFlag to 0 после всех ендифов, получится вообще колапс. Я не прав?

Поделиться сообщением


Ссылка на сообщение
Именно это я и хотел увидеть, в принципе. Единственное, я бы его разместил перед последним endif. Проблема была в том, что игрок мог зайти в меню крафта и просто выйти из него, ничего не крафтя. Тогда условие If iFlag выполнялось бы, и всё что в блоке также бы работало. А вот условие If iCurrentValue > iPreviousValue не выполнялось бы, а значит и строка Let iFlag := 0 была бы пропущена. Как-то так.

Теперь всё понятно. 

 

Мод готов к релизу. Если ты, конечно, этого хочешь.

Я же делаю моды и багфиксы прежде всего для себя, дабы не попадать в те ситуации, когда кто-то релизит мод, а он никому не нужен и начинается: "Ко-ко-ко, мой мод никому не нужен, жизнь ужасна и несправедлива, кругом одни уроды и т.д.". Поэтому моя совесть после релиза будет чиста, а чувство собственной важности не будет раздувать моё эго. :) Хотите - качайте, хотите - нет. Хозяин - барин, у меня мод работает и приносит удовольствие от геймплея с ним, а до остального мне дела нет. ;)

 

P.S. Это самый рациональный подход, я считаю.

Поделиться сообщением


Ссылка на сообщение

 

 

Но, если запихать последнюю строчку Set iFlag to 0 после всех ендифов, получится вообще колапс. Я не прав?

С чего вдруг? Блок пройдётся полностью, потом этим флагом закроется. Просто в ГеймМоде постоянно будет эта строка вызываться. Где проблема?

 

 

Я великодушно прошу прощение, о мастер скриптинга

К чему такое отношение? 

Поделиться сообщением


Ссылка на сообщение

 

 

К чему такое отношение? 

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

 

 

 

С чего вдруг? Блок пройдётся полностью, потом этим флагом закроется. Просто в ГеймМоде постоянно будет эта строка вызываться. Где проблема?

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

Поделиться сообщением


Ссылка на сообщение

 

 

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

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

 

 

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

Смысл в том, чтобы блок сработал ровно 1 раз после выхода из меню крафта. И если строка будет в самом низу, то это сработает также.

Поделиться сообщением


Ссылка на сообщение

 

 

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

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

 

 

 

Смысл в том, чтобы блок сработал ровно 1 раз после выхода из меню крафта. И если строка будет в самом низу, то это сработает также.

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

 

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

Поделиться сообщением


Ссылка на сообщение

А, ты про это. Я же так и сказал, что разместил бы эту строку перед последним Endif'ом.

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

Поделиться сообщением


Ссылка на сообщение

 

 

Я же так и сказал, что разместил бы эту строку перед последним Endif'ом.

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

 

А вообще у меня был один интересный опыт, еще на модгеймсе. После чего я понял, что понимание структуры не менее важно, чем знание различных функций и команд. Один знакомый парняга изучал скриптинг и что-то там спрашивал. По итогу получился что-то вроде вышеописанного скрипта. Вообщем, многие люди которые только учатся, какое-то время смотрят на все это как-то шаблонно. Короче говоря, скрипт был написан, через какое-то время он стал писать другой скрипт, используя полученные знания. Но на этот раз вместо переменной решил использовать в качестве условия стадию квеста. Я уже не помню, что там за скрипт получился, но предположим что-то вроде такого:

 

if (Стадия квеста 20)  && (какое-то еще условие)

     Строчки на какие-то действия

     if (еще какое-то условие)

          Опять какие-то действия

     endif

     SetStage (переход на другую стадию)

endif

 

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

 

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

Поделиться сообщением


Ссылка на сообщение

if (Стадия квеста 20)  && (какое-то еще условие)

     Строчки на какие-то действия

     if (еще какое-то условие)

          Опять какие-то действия

     endif

     SetStage (переход на другую стадию)

endif

 

Тут теперь я не понял.)

 

Допустим. Если у нас у квеста стадии 0 и 20.

 

Если мы запишем так:

if (Стадия квеста 20)  && (какое-то еще условие)
     Строчки на какие-то действия
     if (еще какое-то условие)
          Опять какие-то действия
     endif
endif
SetStage (переход на другую стадию)

У нас сразу сработает переход на эту другую стадию (не 20, а какую-то там, какую укажем).

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

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

 

Все, теперь понял)

Поделиться сообщением


Ссылка на сообщение

Ну да, переход на стадию остается вне всех условий и просто выполняется.

Поделиться сообщением


Ссылка на сообщение

Окей, т.е. я сам не понял, сам себе объяснил. :D

Поделиться сообщением


Ссылка на сообщение

Пока от школы тут, к сожалению, лишь одно название. Учеников катастрофически не хватает  :D

 

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

Поделиться сообщением


Ссылка на сообщение

Итак, я тут вчера вспомнил, что в моде на сталкер под названием Народная Солянка есть Экзоскелет Неведимка, именно поэтому появилась идея создать такой же для фолла, но без ПУ ибо будет по читерский. Какой для этого скрипт надо? и подойдёт ли скрипт китайской стелс-брони?

З.Ы. в скриптах я полный ноль

Поделиться сообщением


Ссылка на сообщение

Ну, учитывая, что вы обратись именно в школу скриптинга, а не в эту тему, то придётся всё же разбираться самому. Т.к. я в Сталкер и уж тем более в моды на него не играл, хотелось бы более подробное описание. Я так понимаю, нужен Селс-Режим пока костюм на ГГ. Всегда ли он нужен? Или есть условия выхода из него? Хотя смотреться наверно странно будет, но всё же. Жду подробностей, а я пока скрипт брони посмотрю.

 

P.S. Если вдруг желания делать самому не будет вообще, то советую всё же переместиться в тему, которую я указал. Хотя пока что я ничего сложного не вижу. А если что, думаю, единственный ученик, Old Vault Boy, поможет при необходимости  ;)

Поделиться сообщением


Ссылка на сообщение

 

 

Всегда ли он нужен

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

Поделиться сообщением


Ссылка на сообщение

Ну, собственно, я посмотрел, что там и как. Вот результат: на китайской броне нет скрипта. И на шлеме нет. Скрипты здесь вообще не понадобятся. Но идея начать поиски с китайской брони - очень здравая. Так и поступите и попытайтесь выяснить, что же тогда даёт стелс-поле, если не скрипт.

 

Только убедитесь, что нужную китайскую броню смотрите, из Анкориджа. А то лично у меня там ещё 2 были, и у них поля нет.

 

Будут вопросы - пишите.

Поделиться сообщением


Ссылка на сообщение

Ну, собственно, я посмотрел, что там и как. Вот результат: на китайской броне нет скрипта. И на шлеме нет. Скрипты здесь вообще не понадобятся.

Действительно, тут всё гораздо проще сделано. :)

Поделиться сообщением


Ссылка на сообщение

В данный момент я сейчас занимаюсь изменениями иконок, как дойду до скриптов напишу

Поделиться сообщением


Ссылка на сообщение

Посмотрел, скриптов нет. нашёл только скрипт StealthBoyStopCombatScript

Поделиться сообщением


Ссылка на сообщение

Так я же так и сказал

 

 

Вот результат: на китайской броне нет скрипта. И на шлеме нет. Скрипты здесь вообще не понадобятся. Но идея начать поиски с китайской брони - очень здравая. Так и поступите и попытайтесь выяснить, что же тогда даёт стелс-поле, если не скрипт.
 

Поделиться сообщением


Ссылка на сообщение

Я не искал скрип именно для стелс брони, я вообще хотел найти скрипт обычного стелс-боя

Поделиться сообщением


Ссылка на сообщение

Зачем, если есть броня, которая работает практически так, как надо?

Поделиться сообщением


Ссылка на сообщение

Чтобы знать хотя бы какой скрипт, и по возможности его немного переделать

Поделиться сообщением


Ссылка на сообщение

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

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

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

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

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

Войти

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

Войти


×
×
  • Создать...