dimanjs Опубликовано 25 июля, 2019 Опубликовано 25 июля, 2019 Подскажите пожалуйста, как поймать событие, когда игрок садиться на лошадь - хочу сделать так, чтобы fast travel работал только тогда, когда персонаж на лошади
Azazellz Опубликовано 25 июля, 2019 Опубликовано 25 июля, 2019 25.07.2019 13:21:41, dimanjs сказал(-а):Подскажите пожалуйста, как поймать событие, когда игрок садиться на лошадь - хочу сделать так, чтобы fast travel работал только тогда, когда персонаж на лошади События такого нет. Но есть кондишн IsOnMount И для СК есть IsRidingMount Можно сделать так: пилишь пассивную способность. В нее пихаешь эффект, на котором скрипт. В скрипте будет прописано включение фаст-тревела, когда эффект включается (OnEffectStart), и отключение фаст-тревела, когда эффект отключается (OnEffectFinish). В кондишнах этого эффекта внутри заклинания (не в записи самого MagicEffect'a, а именно в заклинании) ставишь IsRidingMount == 1. Все. Игрок садится на лошадь, включается эффект, скрипт на нем включает фаст-тревел. Игрок слезает с лошади, эффект отключается, скрипт на нем отключает фаст-тревел. 1
dimanjs Опубликовано 26 июля, 2019 Опубликовано 26 июля, 2019 25.07.2019 14:06:17, Azazellz сказал(-а): События такого нет. Но есть кондишн IsOnMount И для СК есть IsRidingMount Можно сделать так: пилишь пассивную способность. В нее пихаешь эффект, на котором скрипт. В скрипте будет прописано включение фаст-тревела, когда эффект включается (OnEffectStart), и отключение фаст-тревела, когда эффект отключается (OnEffectFinish). В кондишнах этого эффекта внутри заклинания (не в записи самого MagicEffect'a, а именно в заклинании) ставишь IsRidingMount == 1. Все. Игрок садится на лошадь, включается эффект, скрипт на нем включает фаст-тревел. Игрок слезает с лошади, эффект отключается, скрипт на нем отключает фаст-тревел. Спасибо огромное, я собирался запилить через loop с проверкой раз в секунду, но так, конечно, в 100 раз лучше, тк нет задержки по проверке и не давит на проц, когда просто бегаешь на двоих, сейчас запилю - спасибо большое за быстрый ответ ;)
Rh4eg4n Опубликовано 26 июля, 2019 Опубликовано 26 июля, 2019 (изменено) Доброго времени суток! Есть квест1, в нем на 30ой стадии должен запускаться квест2 со стадии 0. Этим кодом запускал квест: codeGame.SetPlayerAIDriven(false) Game.EnablePlayerControls() MQuest2.Start() MQuest2.SetObjectiveDisplayed(0) Первые две строчки срабатывают а вот квест не хочет запускаться. В чем может быть проблема? Изменено 26 июля, 2019 пользователем Rh4eg4n
werr Опубликовано 27 июля, 2019 Опубликовано 27 июля, 2019 26.07.2019 17:11:12, Rh4eg4n сказал(-а):Доброго времени суток! Есть квест1, в нем на 30ой стадии должен запускаться квест2 со стадии 0. Этим кодом запускал квест: codeGame.SetPlayerAIDriven(false) Game.EnablePlayerControls() MQuest2.Start() MQuest2.SetObjectiveDisplayed(0) Первые две строчки срабатывают а вот квест не хочет запускаться. В чем может быть проблема? В том что Start() не работает с квестами (во всяком случае разрабы на старом беседковском форуме не советовали так его запускать)? В том, что элиасы не заполнены? В том, что сделал квест неправильно? Выбирай тот вариант, который больше по душе. Без информации о квесте (развернуто, по вкладкам) о самом квесте ничего дельного не сказать. A Random Dude's Story
Rh4eg4n Опубликовано 27 июля, 2019 Опубликовано 27 июля, 2019 (изменено) 27.07.2019 06:55:50, werr сказал(-а): В том что Start() не работает с квестами (во всяком случае разрабы на старом беседковском форуме не советовали так его запускать)? В том, что элиасы не заполнены? В том, что сделал квест неправильно? Выбирай тот вариант, который больше по душе. Без информации о квесте (развернуто, по вкладкам) о самом квесте ничего дельного не сказать. Извиняюсь. В следующий раз максимально информативно напишу). По поводу моей проблемы, я ее решил так: добавил строчку MQuest2.SetStage(0) и вуаля, квест запустился. Изменено 27 июля, 2019 пользователем Rh4eg4n
Rh4eg4n Опубликовано 27 июля, 2019 Опубликовано 27 июля, 2019 (изменено) Есть сцена, на 13 фазе присутствует action22 пакет на каст спелла(скрин1), когда фаза закончится должен сработать скрипт на телепорт персонажей(скрин2) все работало как надо, а потом перестало(точнее нпс кастует спелл, после каста никто не телепортируется, а нпс начинаются вести себя так, как вели себя до начала сцены(как-будто сцена закончилась)) и не могу понять в чем проблема(последнее что делал это просто перекомпилировал все скрипты(на вкладке quest data кнопочка recompile all papyrus scripts))скрин1 скрин2 Изменено 27 июля, 2019 пользователем Rh4eg4n
CISCO.:i:..:i:. Опубликовано 29 июля, 2019 Опубликовано 29 июля, 2019 Всем привет! (ЗАРАНЕЕ ПАРДОНТЕ ЗА ПОВТОР ВОПРОСА) В игре Серана наделена множеством реплик - среди которых существует "Как тут красиво! Я рада что ты со мной". Вопрос как заставить её произносить эту реплику при прогрузке на определенную локацию - или от касания триггера - я понимаю что нужно писать какой то скрипт - но не понимаю что писать.
Крикар Опубликовано 7 августа, 2019 Опубликовано 7 августа, 2019 (изменено) Доброе время суток. А не знаете кто может по мочь по моду Order Flaming Rose Тут как получается, я пишу автору а он не отвечает много месяцов. Мод предназначен только для мужских тел. Но я встречал массу модов на мужские тела но они одевались и на женские хоть и без половых изменений, а этот на мужских как на скриншотах а на жанских как обычная коженая броня. Можно как то сделать под женских (даже без половых изменений) :blush2: Напишите в личку, плиз)))) http://modgames.net/load/tes_v_skyrim/bronja/orden_flaming_rose_skryto/249-1-0-22890 Изменено 7 августа, 2019 пользователем Крикар
Berserk1989 Опубликовано 15 сентября, 2019 Опубликовано 15 сентября, 2019 Всем доброго времени суток! Вопрос вот в чем - есть скрипт, увеличивающий добычу руды из рудных жил. Хочу увеличить шанс выпадения драгоценных камней (знаю, что ванильный шанс составляет 10%). Но вот какие именно строки менять - не понимаю(( Содержимое psc-файла после декомпиляции;/ Decompiled by Champollion V1.0.0 Source : MineOreScript.psc Modified : 2012-02-08 08:35:55 Compiled : 2012-02-08 08:35:59 User : administrador Computer : THIAGO-PC /; scriptName MineOreScript extends objectReference ;-- Properties -------------------------------------- Int property StrikesBeforeCollection = 1 auto {how many times this is struck before giving a resource} sound property DrScOreOpen auto {sound played when Ore is acquired} objectReference property CidhnaMinePlayerBedREF auto Int property ResourceCountCurrent = -1 auto hidden {Used to track the current remaining resources} Int property ResourceCountTotal = 10000000 auto {how many resources this has before it is depleted} message property FailureMessage auto {Message to say why you can't use this without RequiredWeapon} miscobject property Ore auto {what you get from this Ore Vein} Int property ResourceCount = 1 auto {how many resources you get per drop} quest property DialogueCidhnaMine auto objectReference property objSelf auto hidden {objectReference to self} leveleditem property lItemGems10 auto {Optional: Gems that may be mined along with ore} achievementsscript property AchievementsQuest auto formlist property mineOreToolsList auto {Optional: Player must have at least one item from this formlist to interact} quest property MS02 auto Int property AttackStrikesCurrent = -1 auto hidden {Current number of attack strikes} Int property StrikesCurrent = -1 auto hidden {Current number of strikes} location property CidhnaMineLocation auto mineorefurniturescript property myFurniture auto hidden {the furniture for this piece of ore, set in script} message property DepletedMessage auto {Message to say that this vein is depleted} Int property AttackStrikesBeforeCollection = 1 auto {how many times this is struck by attacks before giving a resource} ;-- Variables --------------------------------------- ;-- Functions --------------------------------------- function depleteOreDueToFailure() self.damageObject(50 as Float) self.setDestroyed(true) ResourceCountCurrent = 0 endFunction ; Skipped compiler generated GotoState function OnHit(objectReference akAggressor, form akSource, Projectile akProjectile, Bool abPowerAttack, Bool abSneakAttack, Bool abBashAttack, Bool abHitBlocked) if akAggressor == game.getPlayer() as objectReference if mineOreToolsList.hasForm(akSource) self.proccessAttackStrikes() endIf endIf endFunction function onActivate(objectReference akActivator) if akActivator as actor if akActivator == game.getPlayer() as objectReference if ResourceCountCurrent == 0 DepletedMessage.Show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) elseIf self.playerHasTools() == false FailureMessage.Show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) else if game.getPlayer().GetCurrentLocation() == CidhnaMineLocation && MS02.ISRunning() == false CidhnaMinePlayerBedREF.Activate(game.getPlayer() as objectReference, false) DialogueCidhnaMine.SetStage(45) return endIf if self.getLinkedRef(none) myFurniture = self.getLinkedRef(none) as mineorefurniturescript myFurniture.lastActivateRef = objSelf self.getLinkedRef(none).Activate(akActivator, false) AchievementsQuest.incHardworker(2) endIf endIf elseIf self.getLinkedRef(none) self.getLinkedRef(none).Activate(akActivator, false) endIf elseIf akActivator == self.getLinkedRef(none) self.proccessStrikes() endIf endFunction function proccessStrikes() if StrikesCurrent <= -1 StrikesCurrent = StrikesBeforeCollection endIf StrikesCurrent -= 1 if StrikesCurrent == 0 StrikesCurrent = StrikesBeforeCollection self.giveOre() endIf endFunction function onCellAttach() self.blockActivation(true) self.SetNoFavorAllowed(true) objSelf = self as objectReference if !self.getLinkedRef(none) self.depleteOreDueToFailure() endIf endFunction function giveOre() if ResourceCountCurrent == -1 ResourceCountCurrent = ResourceCountTotal endIf if ResourceCountCurrent > 0 ResourceCountCurrent -= 1 if ResourceCountCurrent == 0 self.damageObject(50 as Float) self.getLinkedRef(none).Activate(objSelf, false) DrScOreOpen.play(self as objectReference) self.setDestroyed(true) if Ore game.getPlayer().addItem(Ore as form, ResourceCount, false) endIf if lItemGems10 game.getPlayer().addItem(lItemGems10 as form, 1, false) endIf DepletedMessage.Show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) else DrScOreOpen.play(self as objectReference) if Ore game.getPlayer().addItem(Ore as form, ResourceCount, false) endIf if lItemGems10 game.getPlayer().addItem(lItemGems10 as form, 1, false) endIf endIf elseIf ResourceCountCurrent == 0 self.getLinkedRef(none).Activate(objSelf, false) (self.getLinkedRef(none) as mineorefurniturescript).goToDepletedState() DepletedMessage.Show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) endIf endFunction ; Skipped compiler generated GetState function proccessAttackStrikes() if AttackStrikesCurrent <= -1 AttackStrikesCurrent = AttackStrikesBeforeCollection endIf AttackStrikesCurrent -= 1 if AttackStrikesCurrent == 0 AttackStrikesCurrent = AttackStrikesBeforeCollection self.giveOre() endIf endFunction function onReset() self.Reset(none) self.clearDestruction() self.setDestroyed(false) ResourceCountCurrent = -1 endFunction Bool function playerHasTools() if game.getPlayer().GetItemCount(mineOreToolsList as form) > 0 return true else return false endIf endFunction Пытался заменить gems10 на gems50, но нужного результата не дало (наоборот - добыча камней пропала). Мне явно мешает какое-то условие, но какое - не могу понять (в скриптах и программировании не силен, поэтому прошу прощения, если вопрос нубский) [color=#000080Ордена и награды[/color]']
Azazellz Опубликовано 15 сентября, 2019 Опубликовано 15 сентября, 2019 15.09.2019 11:47:24, Berserk1989 сказал(-а):Но вот какие именно строки менять Никакие. Шанс на выпадение камней записан в левел листе с ними. Как раз тот самый ItemGems10 (ID 0010E992). Условное "ничего" выпадает в 90% случаев, остальное (какой именно камень все-таки выпадет) зависит от уровня персонажа. Правь этот левел лист. 1
Berserk1989 Опубликовано 15 сентября, 2019 Опубликовано 15 сентября, 2019 15.09.2019 12:10:11, Azazellz сказал(-а): Никакие. Шанс на выпадение камней записан в левел листе с ними. Как раз тот самый ItemGems10 (ID 0010E992). Условное "ничего" выпадает в 90% случаев, остальное (какой именно камень все-таки выпадет) зависит от уровня персонажа. Правь этот левел лист. Спасибо за оперативный ответ, буду пробовать! [color=#000080Ордена и награды[/color]']
Leadaire Опубликовано 9 ноября, 2019 Опубликовано 9 ноября, 2019 (изменено) Такая проблемка. При создании скрипта Event OnLocationChange(Location akOldLoc, Location akNewLoc) if MQ104.GetStage() >= 160 (pWICourier as WICourierScript).addItemToContainer(LetterQst, 1) AliasPlayer.Clear() GetOwningQuest().SetStage(200) GetOwningQuest().Stop() endIf endEvent Картинка выдает ошибку, что переменная MQ104 - undefined? насколько я понял, она не объявлена. Но каким образом? Skyrim.esm то подгружен. В общем мне надо, чтобы курьер после определенного события принес мне письмо. И еще такой вопрос, как задать условие, чтобы курьер пришел после взятия лвл? И надо ли вообще какое-то условие, чтобы этот долбанный курьер уже приперся? 15.09.2019 12:10:11, Azazellz сказал(-а): Может ты можешь помочь? _______________ И еще такой вопрос, если есть возможность, хотелось бы, чтобы была проверка по уровню персонажа, чтобы ниже определенного лвл, диалог не появлялся.Вот тут: Изменено 9 ноября, 2019 пользователем Leadaire
Azazellz Опубликовано 9 ноября, 2019 Опубликовано 9 ноября, 2019 09.11.2019 01:04:01, Leadaire сказал(-а):выдает ошибку, что переменная MQ104 - undefined? насколько я понял, она не объявлена. Но каким образом? Skyrim.esm то подгружен. В общем мне надо, чтобы курьер после определенного события принес мне письмо. Ну так она и не объявлена нигде. Скрипт не знает, что эти буковки обозначают. Проперти типа "квест" для нее задай, и в СК свяжи с нужным квестом. 09.11.2019 01:04:01, Leadaire сказал(-а):И еще такой вопрос, если есть возможность, хотелось бы, чтобы была проверка по уровню персонажа, чтобы ниже определенного лвл, диалог не появлялся. Кондишны по центру используй. GetLevel, игрок, число, тип AND. 1
Leadaire Опубликовано 10 ноября, 2019 Опубликовано 10 ноября, 2019 09.11.2019 13:45:58, Azazellz сказал(-а): Ну так она и не объявлена нигде. Скрипт не знает, что эти буковки обозначают. Проперти типа "квест" для нее задай, и в СК свяжи с нужным квестом. Кондишны по центру используй. GetLevel, игрок, число, тип AND. и еще такой вопрос, при таком условии if MQ104.GetStage() >= 160, скрипт стартанет именно после прохождения данного квеста? или можно условно мой мод загрузить на старый сейв и скрипт запустится? Как сделать запуск второго квеста, после завершения первого квеста (моих), через определенный промежуток времени (игрового)?
Azazellz Опубликовано 10 ноября, 2019 Опубликовано 10 ноября, 2019 10.11.2019 14:00:27, Leadaire сказал(-а): и еще такой вопрос, при таком условии if MQ104.GetStage() >= 160, скрипт стартанет именно после прохождения данного квеста? или можно условно мой мод загрузить на старый сейв и скрипт запустится? Как сделать запуск второго квеста, после завершения первого квеста (моих), через определенный промежуток времени (игрового)? Это зависит от стадии на момент завершения квеста. На всякий случай добавь условие "или" на проверку завершения. Типа if (MQ104.GetStage() >= 160) || (MQ104.IsCompleted()) Чтоб скрипт работал, вещь, к которой он прицеплен, должна быть условно активна. Например, если квест не запущен - то его скрипты не работают. Так что чтоб твой скрипт начал получать ивенты (OnLocationChanged) и делать код в этих ивентах - он должен быть куда-то прикреплен. Например, к алиасу игрока в активном квесте. На завершающей стадии квеста даешь команду "ждать игровое время", и потом - команду на запуск следующего квеста. Или скрытно запускаешь квест сразу, но с неотображаемой в журнале первой стадией. Потом уже в этом квесте по прошествии времени переводишь стадию на отображаемую (хз, можно так, или нет). 1
Leadaire Опубликовано 12 ноября, 2019 Опубликовано 12 ноября, 2019 10.11.2019 16:53:43, Azazellz сказал(-а): Это зависит от стадии на момент завершения квеста. На всякий случай добавь условие "или" на проверку завершения. Типа if (MQ104.GetStage() >= 160) || (MQ104.IsCompleted()) Чтоб скрипт работал, вещь, к которой он прицеплен, должна быть условно активна. Например, если квест не запущен - то его скрипты не работают. Так что чтоб твой скрипт начал получать ивенты (OnLocationChanged) и делать код в этих ивентах - он должен быть куда-то прикреплен. Например, к алиасу игрока в активном квесте. На завершающей стадии квеста даешь команду "ждать игровое время", и потом - команду на запуск следующего квеста. Или скрытно запускаешь квест сразу, но с неотображаемой в журнале первой стадией. Потом уже в этом квесте по прошествии времени переводишь стадию на отображаемую (хз, можно так, или нет). Что прописывать для команды ожидания игрового времени?
Azazellz Опубликовано 12 ноября, 2019 Опубликовано 12 ноября, 2019 12.11.2019 08:04:55, Leadaire сказал(-а): Что прописывать для команды ожидания игрового времени? https://www.creationkit.com/index.php?title=Category:Script_Objects Осваивай поиск. Конкретно это - ищи "wait".
Leadaire Опубликовано 8 декабря, 2019 Опубликовано 8 декабря, 2019 Такой вопрос, как в creation kit изменить время обновлений подземелий?
Azazellz Опубликовано 9 декабря, 2019 Опубликовано 9 декабря, 2019 08.12.2019 21:04:23, Leadaire сказал(-а): Такой вопрос, как в creation kit изменить время обновлений подземелий? Gameplay-Settings. Там ищи по Respawn или как-то так.
DiSpalL Опубликовано 19 декабря, 2019 Опубликовано 19 декабря, 2019 Подскажите пожалуйста, как сделать скрипт отслеживания времени? То есть, к примеру, что бы нпс по скрипту появлялся в нужном месте, скажем в 12 часов и находился там два часа?
mantik903 Опубликовано 31 декабря, 2019 Опубликовано 31 декабря, 2019 Господа, нужна помощь. По задумке после окончания диалога игрока должно сразу телепортировать на маркер. Вопрос - как это сделать? Я не могу подобрать соответствующий ивент, потому что ничего не происходит, а если просто вписать в фрагмент папируса в окошке "end" Game.GetPlayer().MoveTo("имя маркера") КК ругается: variable "имя маркера" is undefined. Хелп плиз. У меня как новичка уже мозг плавится.
mr Jyggalag Опубликовано 31 декабря, 2019 Опубликовано 31 декабря, 2019 31.12.2019 19:47:06, mantik903 сказал(-а): Господа, нужна помощь. По задумке после окончания диалога игрока должно сразу телепортировать на маркер. Вопрос - как это сделать? Я не могу подобрать соответствующий ивент, потому что ничего не происходит, а если просто вписать в фрагмент папируса в окошке "end" Game.GetPlayer().MoveTo("имя маркера") КК ругается: variable "имя маркера" is undefined. Хелп плиз. У меня как новичка уже мозг плавится. Привяжи просто окончание диалога к получению определённой квестовой стадии, а затем сделай скрипт, что на этой стадии будет телепортировать игрока к маркеру
Azazellz Опубликовано 1 января, 2020 Опубликовано 1 января, 2020 31.12.2019 19:47:06, mantik903 сказал(-а):КК ругается: variable "имя маркера" is undefined. Потому что надо через проперти этот маркер задать, либо напрямую, либо взять его из другого скрипта, где он задан. Не помню, можно там из окна диалога напрямую его скрипт редачить, или нет. Вроде можно - компилишь что-нибудь, чтоб скрипт создался, потом редактируешь - вроде должно сработать.
mantik903 Опубликовано 1 января, 2020 Опубликовано 1 января, 2020 (изменено) 31.12.2019 21:29:21, mr Jyggalag сказал(-а): Привяжи просто окончание диалога к получению определённой квестовой стадии, а затем сделай скрипт, что на этой стадии будет телепортировать игрока к маркеру Если делать полноценный скрипт, то опять же надо ивент. Я тоже об этом думал, но не смог ничего рабочего написать 01.01.2020 08:10:48, Azazellz сказал(-а): Потому что надо через проперти этот маркер задать, либо напрямую, либо взять его из другого скрипта, где он задан. Не помню, можно там из окна диалога напрямую его скрипт редачить, или нет. Вроде можно - компилишь что-нибудь, чтоб скрипт создался, потом редактируешь - вроде должно сработать. Опять же, функция без ивента работать не хочет. Впихнуть строку проблемы нет, и проперти задать тоже, но нужен блин ивент. UPD: чуть-чуть покопавшись смог-таки изменить фрагмент, чтобы телепорт сработал. Но вскрылась другая проблема - на нпс висит скрипт на СellDetach(Attach, Detached/AttachedFrom), то есть по задумке он должен отводить игрока в другое место. И при телепорте игрока нпс должен телепортироваться следом. Но почему-то остается на месте при любой вариации этого скрипта. Выглядит это так: ObjectReference Property aaaHTFTGroom Auto Event OnCellDetach (Actor aaaHappyTogetherGroom) aaaHappyTogetherGroom.MoveTo(aaaHTFTGroom) EndEvent Причем скрипт скомпилировался, все нормально. Но нпс все равно не портуется. И еще небольшой вопрос. Как заставить forcegreet адекватно работать? Единственный вариант который нашел я - это сделать сцену, и в самого нпс вшить скрипт через OnCellAttach. Но я не уверен, что это самый корректный из возможных. Изменено 1 января, 2020 пользователем mantik903
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти