Sobakapppoe Опубликовано 22 января, 2015 Опубликовано 22 января, 2015 Привет всем, Такой вопрос: "Как привязать начало квеста к питью допустим Скумы))?" То есть Выпил бутылку(только один раз, после уже не важно) и тебе выскакивает сообщение(ну это для примера) . Данная схема не работает: scn 1skumaquesttest begin OnActorEquip PotionSkooma Message "Fuuuuuckkk", 100 end Потому что тип блока OnActorEquip не относится к съеданию ингра и питью зелья, так? Может другой тип блока использовать, но какой?или можно пойти другим путем, если так, то направьте плз меня, дальше я уж сам) Добра всем! ^_^
Sobakapppoe Опубликовано 22 января, 2015 Автор Опубликовано 22 января, 2015 Заработал) scn 1skumaquesttest begin OnEquip Message "Fuuuuuckkk", 100 end совсем в простом сглупил)) Простите) Добра всем! ^_^
EpicFan Опубликовано 21 мая, 2015 Опубликовано 21 мая, 2015 (изменено) Не нашел подходящей темы, по этому пишу сюда, Вообщем недавно начал изучать TES CS и сейчас вплотную остановился на теме скриптов, Вообщем Придумал я сделать такую штуку- Денежное дерево, суть такова Дерево, трясешь его, сверху сыпятся септимы, вообщем попробовал я все реализовать так- Объекта активатора с моделью дерева я не нашел, по этому поставил дерево на алтарь к алтарю прикрепил скрипт активатор который включает основной скрипт который я повесил на другой объект висящий над деревом этот обьект я задисаблил, Скрипт для обьекта scn AZIstochnikGoldScript short controlvar float time Begin OnActivate If controlvar == 0 set controlvar to 1 EndIf End Begin GameMode If time < 3 && controlvar == 1 PlaceAtMe gold001, 1, 50, 0 Set time to time + getsecondspassed Else set Controlvar to 0 set time to 0 EndIf End Вообщем суть вопроса такова- этот скрипт работает но не так как мне хотелосья хочу сделать так что бы каждый фрейм появлялось по одной монетке рандомно в разных местах, то есть что бы расстояние и направление появления септимов менялись с каждым фреймом, а сейчас они сыпятся все время с одной стороны на одном и том же расстоянии если кто подскажет как реализовать, буду премного благодарен Изменено 21 мая, 2015 пользователем EpicFan
EpicFan Опубликовано 21 мая, 2015 Опубликовано 21 мая, 2015 (изменено) 22.01.2015 12:38:23, Sobakapppoe сказал(-а): Заработал) scn 1skumaquesttest begin OnEquip Message "Fuuuuuckkk", 100 end совсем в простом сглупил)) Простите) Незнаю может поздно но скрипт будет выглядить так scn ScoomaDrinkActivateMineQuest Begin OnActivate SetStage MineQuest 10 ; MineQuest - название вашего квеста, 10 первая стадия вашего квеста Activate ;если не написать здесь Activate то скуума не выпьется но скрипт все равно сработает End этот скрипт цепляем на скуму, только надо создать бутылочку с новым айди а то любая скума будет срабатывать на включение квеста Изменено 21 мая, 2015 пользователем EpicFan
ЛЯйтенант Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 (изменено) Создай переменную, присвой ей рандомное значение командой ранд (обсе) или гетрандомпроцент. Замени ею координату в пласекатми. Изменено 22 мая, 2015 пользователем ЛЯйтенант
EpicFan Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 22.05.2015 06:49:59, ЛЯйтенант сказал(-а): Создай переменную, присвой ей рандомное значение командой ранд (обсе) или гетрандомпроцент. Замени ею координату в пласекатми. так и думал что предложат гетрандомперцент, но вот дело в том что я уже пробовал так делать, все как в OSFM написано, результат изменился, но не очень, монетки действительно стали появляться рандомно в каждом фрейме но вот почему то направление и расстояние их появления не очень изменилось, они все время появляются на окружности с углом от 0 до 90 гр
ЛЯйтенант Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 Создай четвертую рандомную переменную. Замени ею последний аргумент. Зрачение от 1 до 4 точно непомню означает спереди сзади слеа справа. Но можно еще использовать мувто или мувтумаркер. Способов много.
EpicFan Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 22.05.2015 07:40:41, ЛЯйтенант сказал(-а): Создай четвертую рандомную переменную. Замени ею последний аргумент. Зрачение от 1 до 4 точно непомню означает спереди сзади слеа справа. Но можно еще использовать мувто или мувтумаркер. Способов много. Тож думал добавить четвертую переменную, вообщем благодарю, думаю что проще будет сделать через мувто или что то подобное, но на самом деле все это я пробую для тренировки и лучшего понятия скриптов, а теперь у меня по серьезнее вопрос вообщем хочу сделать контейнер с таким скриптом что бы когда скидываешь туда вещи то после закрытия выскакивало сообщение "продать все за "переменная для подсчета золота" "продавать" "не продавать" вообщем скрипт у меня работает но почему то не работает проверка кнопок сам скрипт scn AZGoldContainer short act short gld short itm1 short itm2 short button Begin MenuMode 1008 Set itm1 to GetItemCount WeapIronShortsword Set itm2 to GetItemCount WeapIronWarhammer set gld to itm1 * 10 + itm2 * 60 if gld > 0 Set act to 1 EndIf End Begin GameMode If act == 1 messagebox "продать все вещи за %5.0f золотых", gld, "продать", "не продавать" Set button to GetButtonPressed if button == -1 return ElseIf button == 0 set act to 0 Player.additem gold001 gld RemoveAllItems Else RemoveAllItems Player set act to 0 EndIf EndIf End вообщем при открытии и закрытии все работает как обычный контейнер как и задумывалось но вот стоит скинуть туда вещь и переменная gld становится больше нуля то включается блок gamemode но кнопки почему то не работают так как после нажатия первой кнопки должно переменной act присваиватся значение 0 и по сути блок gamemode должен больше не работать но сообщение с назойливой настойчивостью выскакивает на экран и то что должно выполнятся после ElseIf button == 0 добавление денег игроку и удаление всех обьектов из инвентаря не происходит, вообщем прошу помочь может вы знаете в чем дело ))
EpicFan Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 Вообщем нашел уже решение я переместил функцию проверки кнопок в отдельный gamemode блок и теперь все пашет )) сижу и пишу дальше свою портянку, скрипт получится длиннющий так как огромное количество предметов в игре ))
ЛЯйтенант Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 Чтобы скрипты не плучались длиннющие есть великий и могучий ОБСЕ. 21 версия божественна.
EpicFan Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 22.05.2015 09:47:13, ЛЯйтенант сказал(-а): Чтобы скрипты не плучались длиннющие есть великий и могучий ОБСЕ. 21 версия божественна. про OBSE уже думал но вот думаю сначала надо научится обычным скриптам, а потом уж когда придет понимание как реализовывать свои идеи, я потихонечку перейду на OBSE ))
EpicFan Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 22.05.2015 09:47:13, ЛЯйтенант сказал(-а): Чтобы скрипты не плучались длиннющие есть великий и могучий ОБСЕ. 21 версия божественна. Вот жесть! только все стало получатся как бац! вообщем скрипт работает все как и хотелось но вот беда! почему то если загрузится один раз то скрипт пашет, но вот если загрузить после первого раза еще раз то же самое сохранение то скрипт не работает!!! мож я какие глобальные переменные обьявил вместо локальных???
EpicFan Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 scn AZGoldContainer1 short act short gld short itm short button Begin MenuMode 1008 If itm == 0 Set itm to GetItemCount DarkInfernalFrost Set gld to itm * 7000 Set itm to 0 EndIf If itm == 0 Set itm to GetItemCount GoblinShamanStaff set gld to gld + itm * 6550 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount UniqueWeapHatred set gld to gld + itm * 6200 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount SEAmberMagicHammer5 set gld to gld + itm * 6100 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount SEAmberHammer5 set gld to gld + itm * 6100 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount SEWeapDaedricWarHammerDurable set gld to gld + itm * 6000 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount SE11ShadowBlade30 set gld to gld + itm * 6000 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount SE11ShadowAxe30 set gld to gld + itm * 6000 set itm to 0 EndIf if gld > 0 Set act to 1 EndIf End Begin GameMode If act == 1 messagebox "продать все вещи за %5.0f золотых", gld, "продать", "не продавать" Set act to 2 EndIf End Begin GameMode If act == 2 Set button to GetButtonPressed if button == -1 return ElseIf button == 0 RemoveAllItems Player.additem gold001 gld set act to 0 Else RemoveAllItems Player set act to 0 EndIf EndIf End вообщем когда я ставлю скрипт тот что сверху все норм и работает как надо, но если писать отдельный блок If EndIf для каждой вещи то получается просто огромная портянка, и я подумал почему бы не объединить вещи с одинаковой стоимостью в один блок If EndIf и вот что у меня получилось scn AZGoldContainer1 short act short gld short itm short button Begin MenuMode 1008 If itm == 0 Set itm to GetItemCount DarkInfernalFrost Set gld to itm * 7000 Set itm to 0 EndIf If itm == 0 Set itm to GetItemCount GoblinShamanStaff set gld to gld + itm * 6550 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount UniqueWeapHatred set gld to gld + itm * 6200 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount SEAmberMagicHammer5 set gld to gld + itm * 6100 set itm to 0 EndIf If itm == 0 Set itm to GetItemCount SEAmberHammer5 set gld to gld + itm * 6100 set itm to 0 EndIf If itm == 0 Set itm to ( GetItemCount SEWeapDaedricWarHammerDurable + GetItemCount SE11ShadowBlade30 + GetItemCount SE11ShadowAxe30 ) ; в пред идущем блоке я объединил то что в первом скрипте я записывал в отдельный блок set gld to gld + itm * 6000 set itm to 0 EndIf if gld > 0 Set act to 1 EndIf End Begin GameMode If act == 1 messagebox "продать все вещи за %5.0f золотых", gld, "продать", "не продавать" Set act to 2 EndIf End Begin GameMode If act == 2 Set button to GetButtonPressed if button == -1 return ElseIf button == 0 RemoveAllItems Player.additem gold001 gld set act to 0 Else RemoveAllItems Player set act to 0 EndIf EndIf End И второй скрипт заработал!! все считалось добавлялось удалялось как надо, но почему то если загрузить снова то же сохранение что и раньше то скрипт уже не работает!!! в чем может быть проблема???
Sobakapppoe Опубликовано 22 мая, 2015 Автор Опубликовано 22 мая, 2015 21.05.2015 19:48:53, EpicFan сказал(-а): Не нашел подходящей темы, по этому пишу сюда, Вообщем недавно начал изучать TES CS и сейчас вплотную остановился на теме скриптов, Вообщем Придумал я сделать такую штуку- Денежное дерево, суть такова Дерево, трясешь его, сверху сыпятся септимы, вообщем попробовал я все реализовать так- Объекта активатора с моделью дерева я не нашел, по этому поставил дерево на алтарь к алтарю прикрепил скрипт активатор который включает основной скрипт который я повесил на другой объект висящий над деревом этот обьект я задисаблил, Скрипт для обьекта scn AZIstochnikGoldScript short controlvar float time Begin OnActivate If controlvar == 0 set controlvar to 1 EndIf End Begin GameMode If time < 3 && controlvar == 1 PlaceAtMe gold001, 1, 50, 0 Set time to time + getsecondspassed Else set Controlvar to 0 set time to 0 EndIf End Вообщем суть вопроса такова- этот скрипт работает но не так как мне хотелосья хочу сделать так что бы каждый фрейм появлялось по одной монетке рандомно в разных местах, то есть что бы расстояние и направление появления септимов менялись с каждым фреймом, а сейчас они сыпятся все время с одной стороны на одном и том же расстоянии если кто подскажет как реализовать, буду премного благодарен С монетками можно сделать красивее намного. Чтобы они именно падали. Для этого стоит вспомнить немного физику, забить функцию свободного падения, начальную и конечную координаты по z. Также с рандомом их генерить в кроне дерева и они будут падать. Я бы сопроводил это еще и красивым шейдером каким-нибудь (можно в Дрожащих островах покопаться). И тогда конфетка получится вообще). Жаль что с физикой самого движка падение не проканает, нужно его вручную прописать и тогда норм все будет. Если интересно могу кусок своего скрипта скинуть. Приходилось делать свободное падение со вращением в полете. Ну по теме я понял, что Вы серьезно уже продвинулись в скриптах, так что проблем не возникнет. Если что в лс можете написать. Добра всем! ^_^
ЛЯйтенант Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 (изменено) Проверь где скрипт срабатывает командой print $"Скрипт сработал" к примеру: Спойлер Begin GameMode If act == 2 Set button to GetButtonPressed if button == -1 print $"Скрипт сработал при кнопке -1" return ElseIf button == 0 print $"Скрипт сработал при кнопке 0" RemoveAllItems Player.additem gold001 gld set act to 0 Else print $"Скрипт сработал при кнопке 2" RemoveAllItems Player set act to 0 EndIf EndIf End Печатать будет в консоли Изменено 22 мая, 2015 пользователем ЛЯйтенант
EpicFan Опубликовано 22 мая, 2015 Опубликовано 22 мая, 2015 (изменено) 22.05.2015 14:21:37, Sobakapppoe сказал(-а): С монетками можно сделать красивее намного. Чтобы они именно падали. Для этого стоит вспомнить немного физику, забить функцию свободного падения, начальную и конечную координаты по z. Также с рандомом их генерить в кроне дерева и они будут падать. Я бы сопроводил это еще и красивым шейдером каким-нибудь (можно в Дрожащих островах покопаться). И тогда конфетка получится вообще). Жаль что с физикой самого движка падение не проканает, нужно его вручную прописать и тогда норм все будет. Если интересно могу кусок своего скрипта скинуть. Приходилось делать свободное падение со вращением в полете. Ну по теме я понял, что Вы серьезно уже продвинулись в скриптах, так что проблем не возникнет. Если что в лс можете написать. Благодарю за ответ, это интересная идея, и если есть возможность то скиньте скрипт свой так как я с удовольствием изучаю чужие скрипты, а подходящих примеров мало, еще раз премного благодарен 22.05.2015 14:34:51, ЛЯйтенант сказал(-а): Проверь где скрипт срабатывает командой print $"Скрипт сработал" к примеру: Спойлер Begin GameMode If act == 2 Set button to GetButtonPressed if button == -1 print $"Скрипт сработал при кнопке -1" return ElseIf button == 0 print $"Скрипт сработал при кнопке 0" RemoveAllItems Player.additem gold001 gld set act to 0 Else print $"Скрипт сработал при кнопке 2" RemoveAllItems Player set act to 0 EndIf EndIf End Печатать будет в консоли Благодарю!! вы мне подсказали полезную вещь ) обязательно попробую, я кстати дописал скрипт первым способом, и оказалось что скрипты не могут иметь больше 1056 строк )) мой где то на полторы тыщи тянул ))) пришлось урезать за то теперь все оружие начиная стоимость прописаной в редакторе от 1650 продается быстро без лишних движений и за свою цену в отличие от имперских торговцев бомжей ))) Изменено 22 мая, 2015 пользователем EpicFan
EpicFan Опубликовано 23 мая, 2015 Опубликовано 23 мая, 2015 Вчера до меня дошло почему второй способ не работал )) я проверял его на грязном сохранении, теперь все пашет и скрипт стал в триста строк )) кстати я теперь знаю что скрипты ограничены высотой в 1056 строк и шириной в 512 символов )), так как скрипт получился относительно короткий и в него влезло все оружие стоимостью от 1500 септимов, теперь я смогу осуществить задуманное вписать туда и броню ))) а может еще и кольца влезут )))
EpicFan Опубликовано 23 мая, 2015 Опубликовано 23 мая, 2015 кстати кто знает каким образом вычисляются цены в игре? допустим есть оружие у которого в редакторе стоит цена в 6000 септимов но в игре показывает больше 9000, значит как то влияет уровень определенных навыков и умений??
angel-deff Опубликовано 20 февраля, 2019 Опубликовано 20 февраля, 2019 Вопрос по скриптам. В плагине Unholly Darkness есть зелье солнечного щита. Его скрипт прикреплён ниже. Я бы хотел сделать такое заклинание или способность для ГГ но не зелье. Как из этого сделать скрипт заклинания с тем же эффектом? Делаю заклинание и вешаю на него этот скрипт толку 0. scn VampireSunBlock short SunDamageShort Begin ScriptEffectStart If Player.IsSpellTarget KiVampSunDamage01 Player.RemoveSpell KIVampSunDamage01 set SunDamageShort to 1 endif If Player.IsSpellTarget KiVampSunDamage02 Player.RemoveSpell KIVampSunDamage02 set SunDamageShort to 2 endif If Player.IsSpellTarget KiVampSunDamage03 Player.RemoveSpell KIVampSunDamage03 set SunDamageShort to 3 endif End Begin ScriptEffectFinish If SunDamageShort == 1 Player.AddSpell KIVampSunDamage01 set SunDamageShort to 0 endif If SunDamageShort == 2 Player.AddSpell KIVampSunDamage02 set SunDamageShort to 0 endif If SunDamageShort == 3 Player.AddSpell KIVampSunDamage03 set SunDamageShort to 0 endif End
Rybak2 Опубликовано 5 ноября, 2019 Опубликовано 5 ноября, 2019 Вот два скрипта: scn 00QuestScriptSchilddesBoten short triggered Begin OnTriggerActor Player if triggered == 0 set triggered to 1 MessageBox "Это ведь знак? Кому понадобилось оставить его? Я пойду по этому следу." endif end scn 00TriggerboxScriptSchilddesBoten Short triggered Begin OnTriggerActor Player if triggered == 00 set triggered to 1 messagebox"Это знак? Кто оставил его? Следы ведут в это направление." endif end Я так понимаю, сценарии у них одинаковые, но названия разные и на первый, конструктор "выкидывает" сообщение: "Script block not supported by current script type". Ответ, видимо, на поверхности, но для меня, надеюсь пока, это задача требует подсказки...
Nu-Hatta Опубликовано 5 ноября, 2019 Опубликовано 5 ноября, 2019 Судя по названию, первый скрипт должен был быть квестовым. В таких скриптах не может быть блока OnTriggerActor.
Rybak2 Опубликовано 5 ноября, 2019 Опубликовано 5 ноября, 2019 Да, конечно, первый - квестовый, второй - объектовый(конструктор, собственно, об этом...), но вместо этого блока, что-то же просится, или как?
Nu-Hatta Опубликовано 5 ноября, 2019 Опубликовано 5 ноября, 2019 Это зависит от конкретных целей. Я же не знаю, чего в конечном итоге вы пытаетесь достичь.
Rybak2 Опубликовано 6 ноября, 2019 Опубликовано 6 ноября, 2019 (изменено) Я - локализатор, местного разлива, просто занимался переводом. При компиляции и сохранении скрипта(messagebox) конструктор выдал ошибку, которую хочется исправить, вот и все. Изменено 6 ноября, 2019 пользователем Rybak2
Nu-Hatta Опубликовано 6 ноября, 2019 Опубликовано 6 ноября, 2019 Остаётся загадкой, каким образов автор вообще смог запихнуть в есп подобный скрипт... Но в любом случае, подобной конструкции в квестовом скрипте совершенно не место. А что именно там должно было быть - знает только автор. Это точно, что в оригинале именно так и было?
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти