Камиль Опубликовано 21 апреля, 2018 Опубликовано 21 апреля, 2018 (изменено) Получилось сделать перк защищающий от урона. Настроил активацию при низком здоровье. Но не срабатывает при мгновенной смерти, например если с большой высоты упасть - просто вышибает все здоровье, а перк не успевает сработать. Как вариант можно ли своего перса сделать бессмертным как квестовые NPC? чтоб мана, жизнь и запас сил кончались, но при нулевом здоровье не помирал. Изменено 21 апреля, 2018 пользователем Камиль
werr Опубликовано 21 апреля, 2018 Опубликовано 21 апреля, 2018 21.04.2018 16:39:22, Камиль сказал(-а): Как вариант можно ли своего перса сделать бессмертным как квестовые NPC? чтоб мана, жизнь и запас сил кончались, но при нулевом здоровье не помирал. Нужно. Для этого придется создать в квесте элиас игрока и отметить его как "Essential". Это также добавит возможность ловить ивенты входа/выхода в состояние Bleedout (когда персонаж припадает на колено). 1 A Random Dude's Story
Камиль Опубликовано 22 апреля, 2018 Опубликовано 22 апреля, 2018 21.04.2018 18:31:45, werr сказал(-а): Нужно. Для этого придется создать в квесте элиас игрока и отметить его как "Essential". Это также добавит возможность ловить ивенты входа/выхода в состояние Bleedout (когда персонаж припадает на колено). Эх. я в квестах не силен. У меня перк через зачарование накладывался. Т.е. при надевании необходимого предмета и выполнения всех проверок. Инструктаж можно?)
19alecsander92 Опубликовано 30 апреля, 2018 Опубликовано 30 апреля, 2018 Всем доброго дня ) как скрипт написать чтоб при открытии гроба или аллейдского контейнера с 30%-50% шансом появится призрак или скелет ? П.С. скрипт для облы
BOPOH333 Опубликовано 17 ноября, 2018 Опубликовано 17 ноября, 2018 Приветствую всех! Если кто-нибудь знает как уменьшить вероятность дождя в Скайриме - поделитесь, пожалуйста...
Brannweig Опубликовано 6 июня, 2019 Опубликовано 6 июня, 2019 Здравствуйте. Не подскажете скрипт, который можно привязать на магический эффект телепортации в заданное место? Для создания заклинания телепортации в поместье.
verflught Опубликовано 6 июня, 2019 Опубликовано 6 июня, 2019 06.06.2019 15:47:02, Brannweig сказал(-а): Для создания заклинания телепортации в поместье. думаю этот скрипт подойдет Мои моды Dasland Paradiseplace Создаю миры ради забавы :)
verflught Опубликовано 6 июня, 2019 Опубликовано 6 июня, 2019 (изменено) 17.11.2018 19:42:40, BOPOH333 сказал(-а):Приветствую всех! Если кто-нибудь знает как уменьшить вероятность дождя в Скайриме - поделитесь, пожалуйста... в настройках погоды и климата, смотри настройки weather и climate, их много. В самом скайриме погода настроена по регионам world/regions/tamriel, вкладка weather. Для каждого региона характерна своя погода, просто надо найти в списках погоды для каждого региона погоду содержащую в строке названия "rainy" и либо удалить ее, либо уменьшить её шанс, но это в редакторе, а как это сделать скриптом - не подскажу Изменено 6 июня, 2019 пользователем verflught Мои моды Dasland Paradiseplace Создаю миры ради забавы :)
Brannweig Опубликовано 8 июня, 2019 Опубликовано 8 июня, 2019 06.06.2019 20:18:37, verflught сказал(-а): думаю этот скрипт подойдет Этот туториал я видела. Там идёт условие взаимодействия игрока с объектом. А мне нужен скрипт на условие наличия на игроке определённого магического эффекта. Телепорт не как объект, к которому нужно подойти, а как заклинание. В любом случае спасибо за ответ.
Brannweig Опубликовано 8 июня, 2019 Опубликовано 8 июня, 2019 (изменено) scriptName LA_Teleport extends activemagiceffect ;-- Properties -------------------------------------- objectreference property TargetLocation auto ;-- Variables --------------------------------------- ;-- Functions --------------------------------------- function OnEffectFinish(Actor akTarget, Actor akCaster) game.GetPlayer().MoveTo(TargetLocation, 0.000000, 0.000000, 0.000000, true) game.EnableFastTravel(true) game.FastTravel(TargetLocation) endFunction Бесстыдно содрано у Lazz :) , сейчас опробую UPD: scriptName Teleport extends activemagiceffect objectreference property TeleportMarker auto Event OnEffectFinish(Actor Target, Actor Caster) game.GetPlayer().MoveTo(TeleportMarker) game.EnableFastTravel(true) game.FastTravel(TeleportMarker) EndEvent Работает. Изменено 8 июня, 2019 пользователем Brannweig
budu200 Опубликовано 14 февраля, 2020 Опубликовано 14 февраля, 2020 (изменено) Раздевает и одевает ГГ по триггеру... Если что лишнее, буду рад замечаниям... Scriptname aaaUnequip extends ObjectReference Import Game Import Utility Import Debug Import Math Formlist Property frmList auto Event OnTriggerEnter(ObjectReference akActionRef) if(akActionRef == Game.GetPlayer()) actor who = akActionRef as actor frmList.Revert() UnequipWeaponActor(who) UnequipItemActor(who) endif EndEvent EVENT OnTriggerLeave (objectReference akActionRef) If akActionRef == Game.GetPlayer() actor who = akActionRef as actor EquipItemActor(who) EndIf EndEvent Function UnequipItemActor(Actor target) int index int slotsChecked slotsChecked += 0x00100000 slotsChecked += 0x00200000 ; игнорировать зарезервированные слоты slotsChecked += 0x80000000 int thisSlot = 0x01 while (thisSlot < 0x80000000) if (Math.LogicalAnd(slotsChecked, thisSlot) != thisSlot) Armor thisArmor = target.GetWornForm(thisSlot) as Armor if (thisArmor) frmList.AddForm(thisArmor) target.UnequipItem(thisArmor, abSilent = true) index += 1 slotsChecked += thisArmor.GetSlotMask() else slotsChecked += thisSlot endif endif thisSlot *= 2 ;удвоить число, чтобы перейти к следующему слоту endWhile EndFunction Function EquipItemActor(Actor akActor) Int iIndex = frmList.GetSize() While iIndex iIndex -= 1 Form kForm = frmList.GetAt(iIndex) As form akActor.EquipItem(kForm, abSilent = true) EndWhile frmList.Revert() EndFunction Function UnequipWeaponActor(Actor target) if (target.GetEquippedWeapon(true)) FORM twisWeapon=target.GetEquippedWeapon(true) as FORM frmList.AddForm(twisWeapon) target.UnequipItem(twisWeapon, abSilent = true) endif if (target.GetEquippedWeapon(false)) FORM twisWeapon=target.GetEquippedWeapon(false) as FORM frmList.AddForm(twisWeapon) target.UnequipItem(twisWeapon, abSilent = true) endif EndFunction зы... нужно в ск формлист создать пустой и подключить к скриптуб, и прошу не тыкать пальцем с усмешкой. это мой первый скрипт :crazy: Изменено 14 февраля, 2020 пользователем budu200 1
krizhandr Опубликовано 28 апреля, 2020 Опубликовано 28 апреля, 2020 Нужен скрипт для стандартного изучения Слова Крика со Стены Слов (которая добавлена модом), чтобы ты подошел к Стене посмотрел на нее и изучил Крик. +<Kryzard>+
CISCO.:i:..:i:. Опубликовано 28 апреля, 2020 Опубликовано 28 апреля, 2020 28.04.2020 07:17:56, krizhandr сказал(-а): Нужен скрипт для стандартного изучения Слова Крика со Стены Слов (которая добавлена модом), чтобы ты подошел к Стене посмотрел на нее и изучил Крик. Вам сюда тыкhttps://tesall.ru/topic/17490-voprosy-po-skriptam/page-32
Антенна связи с космосом Опубликовано 29 апреля, 2020 Опубликовано 29 апреля, 2020 (изменено) · Скрыто Скрыто Здравствуйте, товарищи, у меня вопрос. Я нуб и юзаю КК по Скайриму методом тыка в игре сапёр, потому как программа постоянно вылетает. При попытки создания квеста в разделе Quest Stages появилась ошибка Starting 1 compile threads for 1 files... Compiling "QF_aaaDialogueFolloverXavier_090DD8B7"... <unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg F:\Games\TES V - Skyrim\Data\Scripts\Source\temp\QF_aaaDialogueFolloverXavier_090DD8B7.psc(3,0): Unknown user flag Hidden No output generated for QF_aaaDialogueFolloverXavier_090DD8B7, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on QF_aaaDialogueFolloverXavier_090DD8B7 Я так понял, дело в том, что нет tesv_papyrus_flags.flag, который искать надобно в архиве scripts.rar в папке Data, но у меня не только в дата, у меня нигде такой папочки нет. Объясните начинающему - что тут можно поделать и в чём я не прав? Я пытаюсь Ксавьера сделать "говорящим" и более менее оригинальным фолловером. упс, я только сейчас понял, что отправил свой вопрос не сюда. Извините. Перенесу его в другое место... Изменено 29 апреля, 2020 пользователем Антенна связи с космосом Я права, потому что я так сказала. Несогласные могут идти на йух вместе с прилетающими туда птичками. Ня.
Dimlov Опубликовано 30 июля, 2020 Опубликовано 30 июля, 2020 День добрый господа. Давно я не открывал Creation Kit. Пришла в голову идея сделать призываемую статую(объект). Вот не могу понять как такое можно реализовать, тут по любому нужен скрипт как я понимаю чтобы в месте каста появилась статуя. Буду благодарен если поможете.
angel-deff Опубликовано 1 сентября, 2020 Опубликовано 1 сентября, 2020 Если тема для скайрима хнаете рабочий скрипт "закрыть контейнер"? Чтобы он сам закрывался через 2-3 часа. Для прокачки навыка взлома. Мне выслали простой скрипт но KC не хочет компелировать его
ac97 Опубликовано 12 апреля, 2021 Опубликовано 12 апреля, 2021 (изменено) Воспроизводим свои видео: Синтаксис Function PlayBink(string asFileName, bool abInterruptible = false, bool abMuteAudio = true, bool abMuteMusic = true, \ bool abLetterbox = true) native global Пример скрипта: Scriptname aaaTestVideo extends ObjectReference Event onActivate(ObjectReference akActionRef) Game.PlayBink("BGS_Logo.bik", false, true, true, true) Game.GetPlayer().AddItem(money, 1000) endEvent MiscObject Property money Auto Скрипт, при активации чего-либо, воспроизводит видео, а после выдает деньги. Пример в игре: Спойлерhttps://youtu.be/mYq-5XdRsv0 Изменено 13 апреля, 2021 пользователем ac97
ac97 Опубликовано 12 апреля, 2021 Опубликовано 12 апреля, 2021 Scriptname aaaGetReputationHunter extends ObjectReference GlobalVariable Property countRep Auto //Глобальная переменная с текущим кол-вом репутации MiscObject Property plamen Auto //Ресурс необходимый для сдачи, для прокачки репутации EVENT onActivate(objectReference actronaut) int countReputation = countRep.GetValueInt() //получаем текущее кол-во репутации int countKristall = Game.GetPlayer().GetItemCount(plamen) //получаем кол-во артефактов у персонажа на руках. if(countReputation >= 0 && countReputation < 500 && countKristall >= 1) countRep.Value += 25 Game.GetPlayer().RemoveItem(plamen, 1) //Если репутации до 500 и есть артефакт для прокачки, то добавляем 25 репутации и удаляем артефакт elseif(countReputation <= 1000 && countReputation >= 500 && countKristall >= 2) countRep.Value += 25 Game.GetPlayer().RemoveItem(plamen, 2) //Если репутации от 500 и до 1000 и есть артефакт для прокачки, то добавляем 25 репутации и удаляем артефакт elseif(countReputation <= 2000 && countReputation >= 1000 && countKristall >= 3) countRep.Value += 25 Game.GetPlayer().RemoveItem(plamen, 3) //Если репутации от 1000 и до 2000 и есть артефакт для прокачки, то добавляем 25 репутации и удаляем артефакт elseif(countReputation <= 3000 && countReputation >= 2000 && countKristall >= 4) countRep.Value += 25 Game.GetPlayer().RemoveItem(plamen, 4) //Если репутации от 2000 и до 3000 и есть артефакт для прокачки, то добавляем 25 репутации и удаляем артефакт elseif(countReputation >= 3000) Debug.MessageBox("Максимальное кол-во репутации для сдачи. Выполните квест на получение максимальной репутации.") else Debug.MessageBox("Недостаточно Кристаллов Ящера") endif endEVENT Скрипт для прокачки репутации любой Вами созданной гильдии. =) Scriptname aaaShopHunters extends ObjectReference Message Property msgHunters Auto Potion Property grayPotion Auto Potion Property greenPotion Auto Potion Property bluePotion Auto Potion Property phioletPotion Auto Potion Property redPotion Auto MiscObject Property money Auto GlobalVariable Property reputation Auto EVENT onActivate(objectReference actronaut) int response = msgHunters.Show() int rep = reputation.GetValueInt() if (response == 0) if (rep >= 500 && game.getplayer().getItemCount(money) >= 50) Game.GetPlayer().RemoveItem(money, 50) Game.GetPlayer().AddItem(grayPotion, 1) else Debug.MessageBox("Недостаточно денег или репутации") endif elseif (response == 1) if (rep >= 1000 && game.getplayer().getItemCount(money) >= 70) Game.GetPlayer().RemoveItem(money, 70) Game.GetPlayer().AddItem(greenPotion, 1) else Debug.MessageBox("Недостаточно денег или репутации") endif elseif (response == 2) if (rep >= 2000 && game.getplayer().getItemCount(money) >= 100) Game.GetPlayer().RemoveItem(money, 100) Game.GetPlayer().AddItem(bluePotion, 1) else Debug.MessageBox("Недостаточно денег или репутации") endif elseif (response == 3) if (rep >= 3000 && game.getplayer().getItemCount(money) >= 150) Game.GetPlayer().RemoveItem(money, 150) Game.GetPlayer().AddItem(phioletPotion, 1) else Debug.MessageBox("Недостаточно денег или репутации") endif elseif (response == 4) if (rep >= 4000 && game.getplayer().getItemCount(money) >= 300) Game.GetPlayer().RemoveItem(money, 300) Game.GetPlayer().AddItem(redPotion, 1) else Debug.MessageBox("Недостаточно денег или репутации") endif elseif (response == 5) else Debug.MessageBox("Error") endif endEVENT Реализация репутационного магазина, для покупки товаров с кол-вом репутации данной гильдии.
Meridiano Опубликовано 18 апреля, 2021 Опубликовано 18 апреля, 2021 Перевод из Dec в Hex (Int в String, пример: 45678 ➔ "B26E"): String Function IntToHexString(Int Value) Bool Negative = (Value < 0) Int Temp01 = Math.Abs(Value) as Int Int Temp02 = 0 Int Temp03 = 0 String TempResult = "" While (Temp01 != 0) Temp02 = Math.Floor(Temp01 / 16) Temp03 = Temp01 - 16 * Temp02 TempResult = TempResult + StringUtil.GetNthChar("0123456789ABCDEF", Temp03) Temp01 = Temp02 EndWhile String Result = "" Int Index = StringUtil.GetLength(TempResult) While (Index > 0) Index = Index - 1 Result = Result + StringUtil.GetNthChar(TempResult, Index) EndWhile If (Negative) Return ("-" + Result) EndIf Return Result EndFunction Перевод из Hex в Dec (String в Int, пример: "A56BC7" ➔ 10841031): Int Function HexStringToInt(String Value) Int Result = 0 Bool Negative = (StringUtil.GetNthChar(Value, 0) == "-") Int Index = 0 Int ValueLength = StringUtil.GetLength(Value) While (Index < ValueLength) String Char = StringUtil.GetNthChar(Value, Index) Int Pos = StringUtil.Find("0123456789ABCDEF", Char, 0) If (Pos != -1) Result += Pos * Math.Pow(16, ValueLength - Index - 1) as Int EndIf Index += 1 EndWhile If (Negative) Return -Result EndIf Return Result EndFunction Поддерживаются отрицательные числа. Требуется SKSE из-за StringUtil. Примеры использования: String ValueHex = IntToHexString(481516) ; "758EC" Int ValueDec = HexStringToInt("ABC123") ; 11256099 ——————————————————————— don't forget your falls ———————————————————————
Meridiano Опубликовано 3 августа, 2021 Опубликовано 3 августа, 2021 Создание новой консольной команды средствами Papyrus (требуется SKSE) с примером.ScriptName SetPerkPointsScript Extends ReferenceAlias Event OnInit() RegisterForMenu("Console") ; Debug.Trace("[SetPerkPointsScript] console menu registered") EndEvent Event OnMenuOpen(String MenuName) RegisterForKey(28) ; enter RegisterForKey(156) ; num enter ; Debug.Trace("[SetPerkPointsScript] key 28 (enter) and key 156 (num enter) registered") EndEvent Event OnMenuClose(String MenuName) UnregisterForAllKeys() ; Debug.Trace("[SetPerkPointsScript] all keys unregistered") EndEvent Event OnKeyDown(Int KeyCode) ; Debug.Trace("[SetPerkPointsScript] key 28 (enter) or key 156 (num enter) pressed") Int CommandIndex = UI.GetInt("Console", "_global.Console.ConsoleInstance.Commands.length") - 1 ; Debug.Trace("[SetPerkPointsScript] Int CommandIndex >> " + CommandIndex as String) String LatestCommand = UI.GetString("Console", "_global.Console.ConsoleInstance.Commands." + CommandIndex as String) ; Debug.Trace("[SetPerkPointsScript] String LatestCommand >> " + LatestCommand) String[] CommandParts = StringUtil.Split(LatestCommand, " ") ExecCommand(CommandParts[0], CommandParts) EndEvent Function ExecCommand(String CommandName, String[] CommandArray) ; Debug.Trace("[SetPerkPointsScript] String CommandName >> " + CommandName) If (CommandName == "SetPerkPoints") || (CommandName == "SPP") If (CommandArray.Length == 2) Int PointsToSet = CommandArray[1] as Int If (PointsToSet < 0) PointsToSet = 0 ElseIf (PointsToSet > 255) PointsToSet = 255 EndIf Game.SetPerkPoints(PointsToSet) ConsoleUtil.PrintMessage("Player perk points count successfully set to " + PointsToSet as String) Else ConsoleUtil.PrintMessage("Error! Wrong function syntax. Usage:\nSetPerkPoints <int>\nSPP <int>") EndIf EndIf EndFunctionСкрипт прикрепляется к alias'у с игроком в квесте, который стартует при первой установке мода. При нажатии клавиши Enter или Num Enter будет запущена функция ExecCommand с двумя аргументами - названием команды и массивом из всех элементов команды. Так, в моём примере при вводе команды "spp 136" функции будут переданы аргументы "spp" и ["spp", "136"]. Обратите внимание, что все аргументы строковые, так что вам может потребоваться каст. ——————————————————————— don't forget your falls ———————————————————————
Meridiano Опубликовано 18 сентября, 2021 Опубликовано 18 сентября, 2021 Когда в SkyUI вы используете настройку типа OptionColor (выбор цвета из небольшой палитры), то мод возвращает цвет в формате Int (целое число). Например, светло-голубой цвет будет иметь значение 10092543. Вам может понадобиться вытащить из этого значения числа RGB, для чего некоторые предлагают операции деления, вычитания или целого остатка. Да, эти методы рабочие, но это квадратно-гнездовой способ мышления, когда есть битовые операции. Выглядит это вот так: Int[] Function ColorToRGB(Int Value) Int[] Result = New Int[3] Result[0] = Math.RightShift(Math.LogicalAnd(Value, 0xFF0000), 16) ; red Result[1] = Math.RightShift(Math.LogicalAnd(Value, 0xFF00), 8) ; green Result[2] = Math.RightShift(Math.LogicalAnd(Value, 0xFF), 0) ; blue Return Result EndFunction Этот вид функции полностью рабочий, но я привёл его таким, лишь чтобы показать алгоритм действий. Если подумать, то смещение на 0 бит не имеет смысла, как и "логическое И" с 0xFF0000 в связке со смещением на 16 бит. Без "логического И" ABCDEF после смещения превращается в AB.CDEF, которое сразу обрезается до AB из-за типа данных Int. Таким образом, более оптимальный вид функции будет таким: Int[] Function ColorToRGB(Int Value) Int[] Result = New Int[3] Result[0] = Math.RightShift(Value, 16) ; red Result[1] = Math.RightShift(Math.LogicalAnd(Value, 0xFF00), 8) ; green Result[2] = Math.LogicalAnd(Value, 0xFF) ; blue Return Result EndFunction Пример использования: Int[] RGB = ColorToRGB(10092543) ; [153, 255, 255] 2 ——————————————————————— don't forget your falls ———————————————————————
ac97 Опубликовано 6 декабря, 2021 Опубликовано 6 декабря, 2021 18.09.2021 22:21:21, Meridiano сказал(-а):Когда в SkyUI вы используете настройку типа OptionColor (выбор цвета из небольшой палитры), то мод возвращает цвет в формате Int (целое число). Например, светло-голубой цвет будет иметь значение 10092543. Вам может понадобиться вытащить из этого значения числа RGB, для чего некоторые предлагают операции деления, вычитания или целого остатка. Да, эти методы рабочие, но это квадратно-гнездовой способ мышления, когда есть битовые операции. Выглядит это вот так: Int[] Function ColorToRGB(Int Value) Int[] Result = New Int[3] Result[0] = Math.RightShift(Math.LogicalAnd(Value, 0xFF0000), 16) ; red Result[1] = Math.RightShift(Math.LogicalAnd(Value, 0xFF00), 8) ; green Result[2] = Math.RightShift(Math.LogicalAnd(Value, 0xFF), 0) ; blue Return Result EndFunction Этот вид функции полностью рабочий, но я привёл его таким, лишь чтобы показать алгоритм действий. Если подумать, то смещение на 0 бит не имеет смысла, как и "логическое И" с 0xFF0000 в связке со смещением на 16 бит. Без "логического И" ABCDEF после смещения превращается в AB.CDEF, которое сразу обрезается до AB из-за типа данных Int. Таким образом, более оптимальный вид функции будет таким: Int[] Function ColorToRGB(Int Value) Int[] Result = New Int[3] Result[0] = Math.RightShift(Value, 16) ; red Result[1] = Math.RightShift(Math.LogicalAnd(Value, 0xFF00), 8) ; green Result[2] = Math.LogicalAnd(Value, 0xFF) ; blue Return Result EndFunction Пример использования: Int[] RGB = ColorToRGB(10092543) ; [153, 255, 255] Теперь осталось реализовать структуры, классы, шаблоны да и полностью библиотеку STL =)
GOLDEN_KINDER Опубликовано 18 декабря, 2021 Опубликовано 18 декабря, 2021 14.02.2020 06:42:01, budu200 сказал(-а): Раздевает и одевает ГГ по триггеру... Если что лишнее, буду рад замечаниям... Scriptname aaaUnequip extends ObjectReference Import Game Import Utility Import Debug Import Math Formlist Property frmList auto Event OnTriggerEnter(ObjectReference akActionRef) if(akActionRef == Game.GetPlayer()) actor who = akActionRef as actor frmList.Revert() UnequipWeaponActor(who) UnequipItemActor(who) endif EndEvent EVENT OnTriggerLeave (objectReference akActionRef) If akActionRef == Game.GetPlayer() actor who = akActionRef as actor EquipItemActor(who) EndIf EndEvent Function UnequipItemActor(Actor target) int index int slotsChecked slotsChecked += 0x00100000 slotsChecked += 0x00200000 ; игнорировать зарезервированные слоты slotsChecked += 0x80000000 int thisSlot = 0x01 while (thisSlot < 0x80000000) if (Math.LogicalAnd(slotsChecked, thisSlot) != thisSlot) Armor thisArmor = target.GetWornForm(thisSlot) as Armor if (thisArmor) frmList.AddForm(thisArmor) target.UnequipItem(thisArmor, abSilent = true) index += 1 slotsChecked += thisArmor.GetSlotMask() else slotsChecked += thisSlot endif endif thisSlot *= 2 ;удвоить число, чтобы перейти к следующему слоту endWhile EndFunction Function EquipItemActor(Actor akActor) Int iIndex = frmList.GetSize() While iIndex iIndex -= 1 Form kForm = frmList.GetAt(iIndex) As form akActor.EquipItem(kForm, abSilent = true) EndWhile frmList.Revert() EndFunction Function UnequipWeaponActor(Actor target) if (target.GetEquippedWeapon(true)) FORM twisWeapon=target.GetEquippedWeapon(true) as FORM frmList.AddForm(twisWeapon) target.UnequipItem(twisWeapon, abSilent = true) endif if (target.GetEquippedWeapon(false)) FORM twisWeapon=target.GetEquippedWeapon(false) as FORM frmList.AddForm(twisWeapon) target.UnequipItem(twisWeapon, abSilent = true) endif EndFunction зы... нужно в ск формлист создать пустой и подключить к скриптуб, и прошу не тыкать пальцем с усмешкой. это мой первый скрипт :crazy: Решил опробовать скрипт, но словил ошибки компиляции СпойлерStarting 1 compile threads for 1 files... Compiling "GK_Script_Unequip"... D:\Games\Skyrim\Data\Scripts\Source\temp\GK_Script_Unequip.psc(38,17): LogicalAnd is not a function or does not exist D:\Games\Skyrim\Data\Scripts\Source\temp\GK_Script_Unequip.psc(38,17): cannot call the member function LogicalAnd alone or on a type, must call it on a variable D:\Games\Skyrim\Data\Scripts\Source\temp\GK_Script_Unequip.psc(38,52): cannot compare a none to a int (cast missing or types unrelated) D:\Games\Skyrim\Data\Scripts\Source\temp\GK_Script_Unequip.psc(39,37): GetWornForm is not a function or does not exist D:\Games\Skyrim\Data\Scripts\Source\temp\GK_Script_Unequip.psc(39,59): cannot cast a none to a armor, types are incompatible D:\Games\Skyrim\Data\Scripts\Source\temp\GK_Script_Unequip.psc(44,42): GetSlotMask is not a function or does not exist D:\Games\Skyrim\Data\Scripts\Source\temp\GK_Script_Unequip.psc(44,29): cannot add a int to a none (cast missing or types unrelated) No output generated for GK_Script_Unequip, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on GK_Script_Unequip
GOLDEN_KINDER Опубликовано 18 декабря, 2021 Опубликовано 18 декабря, 2021 (изменено) Скрипт для ванны/бассейна/бадьи и т.д. Предназначен для вампиров. Если человек будет использовать, то проиграется только сообщение с отвращением и анимация. Scriptname GK_script_bath extends ObjectReference EffectShader Property DLC1nVampireGoreFXS Auto MagicEffect Property PERKEFFECT Auto String Property Fail Auto String Property Success Auto String Property MyAnimation_01 Auto Idle Property MyAnimation_02 Auto Idle Property MyAnimation_03 Auto String Property MyAnimation_04 Auto String Property MyAnimation_05 Auto Idle Property IdleStop_Loose Auto ObjectReference Property PlayerRef Auto ObjectReference Property MovetoInside Auto ObjectReference Property MovetoOutside Auto Sound Property WashesTheBody01 Auto Sound Property WashesTheBody02 Auto Sound Property SitsInTheBath01 Auto Sound Property SitsInTheBath02 Auto Sound Property GetsUpInTheBath01 Auto Sound Property GetsUpInTheBath02 Auto Sound Property WipesOff Auto Sound Property Vomit Auto Spell Property PerkSpell1 Auto Spell Property PerkSpell2 Auto Spell Property HasVampirism Auto GlobalVariable Property GameHour Auto ImageSpaceModifier Property TG05BlackFrame Auto Event OnActivate(ObjectReference akActionRef) If akActionRef == Game.GetPlayer().HasSpell(HasVampirism) == 0 If Game.GetPlayer().IsWeaponDrawn() Game.DisablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = true, abSneaking = true, abMenu = true, abJournalTabs= true) Utility.Wait(1.5) Game.EnablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = true, abSneaking = true, abMenu = true, abJournalTabs= true) EndIf Game.DisablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = false, abSneaking = true, abMenu = true, abJournalTabs= true) Game.ForceThirdPerson() Utility.Wait(0.5) debug.notification(Fail) Debug.SendAnimationEvent(Game.GetPlayer(), MyAnimation_04) Vomit.Play(PlayerRef) PerkSpell2.Cast(Game.GetPlayer(), Game.GetPlayer()) Utility.Wait(1.5) Game.GetPlayer().PlayIdle(IdleStop_Loose) Game.EnablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = false, abSneaking = true, abMenu = true, abJournalTabs= true) Return Else If akActionRef == Game.GetPlayer().HasSpell(HasVampirism) == 1 If Game.GetPlayer().IsWeaponDrawn() Game.DisablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = true, abSneaking = true, abMenu = true, abJournalTabs= true) Utility.Wait(1.5) Game.EnablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = true, abSneaking = true, abMenu = true, abJournalTabs= true) EndIf Game.DisablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = false, abSneaking = true, abMenu = true, abJournalTabs= true) Game.ForceThirdPerson() Utility.Wait(0.5) Debug.SendAnimationEvent(Game.GetPlayer(), MyAnimation_05) Utility.Wait(2.0) TG05BlackFrame.ApplyCrossFade() Utility.Wait(3.5) Game.GetPlayer().UnequipAll() Game.GetPlayer().Moveto(MovetoInside) Utility.Wait(0.5) Debug.SendAnimationEvent(Game.GetPlayer(), MyAnimation_01) TG05BlackFrame.Remove() SitsInTheBath01.Play(PlayerRef) Utility.Wait(2.0) DLC1nVampireGoreFXS.Play(Game.GetPlayer()) Game.GetPlayer().PlayIdle(MyAnimation_02) GetsUpInTheBath01.Play(PlayerRef) Utility.Wait(2.7) Game.GetPlayer().PlayIdle(MyAnimation_03) WashesTheBody01.Play(PlayerRef) Utility.Wait(2.0) DLC1nVampireGoreFXS.Stop(Game.GetPlayer()) Utility.Wait(1.0) Debug.SendAnimationEvent(Game.GetPlayer(), MyAnimation_01) SitsInTheBath02.Play(PlayerRef) Utility.Wait(2.0) DLC1nVampireGoreFXS.Play(Game.GetPlayer()) Game.GetPlayer().PlayIdle(MyAnimation_02) GetsUpInTheBath02.Play(PlayerRef) Utility.Wait(2.7) Game.GetPlayer().PlayIdle(MyAnimation_03) WashesTheBody02.Play(PlayerRef) TG05BlackFrame.ApplyCrossFade() Utility.Wait(2.0) WipesOff.Play(PlayerRef) Utility.Wait(3.0) DLC1nVampireGoreFXS.Stop(Game.GetPlayer()) Game.GetPlayer().PlayIdle(IdleStop_Loose) Game.GetPlayer().Moveto(MovetoOutside) Game.EnablePlayerControls(abMovement =true, abFighting = true, abCamSwitch = true, abLooking = false, abSneaking = true, abMenu = true, abJournalTabs= true) GameHour.SetValue(GameHour.GetValue()+1) debug.notification("Прошёл один час") PerkSpell1.Cast(Game.GetPlayer(), Game.GetPlayer()) debug.notification(Success) TG05BlackFrame.Remove() EndIf EndIf EndEvent Видео Пример того, что будет, если бадью использует не вампир Видео UPD: обновил скрипт. Добавил новые анимации, кастомные звуки и изменил затемнение экрана. Изменено 28 января, 2022 пользователем GOLDEN_KINDER
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти