Azazellz Опубликовано 23 ноября, 2017 Опубликовано 23 ноября, 2017 23.11.2017 08:05:36, call_o_bock сказал(-а):А мне теорию по скриптам надо как-то подучить. На вики все достаточно мутно для меня, может кто-то уже накатал гайд на русском? Может кто и перевел. Но вообще надо на английском читать учиться, ибо 90% мануалов на нем. На СК-вики есть несколько стартовых гайдов.
mr Jyggalag Опубликовано 23 ноября, 2017 Опубликовано 23 ноября, 2017 Вопрос - могу ли я переименовать уже имеющийся объект (скажем, маркер на карте)? Например, через Message получить от игрока текст x, а затем уже названию маркера z присвоить значение x
Azazellz Опубликовано 24 ноября, 2017 Опубликовано 24 ноября, 2017 23.11.2017 21:49:33, mr Jygalag сказал(-а):Вопрос - могу ли я переименовать уже имеющийся объект (скажем, маркер на карте)? Например, через Message получить от игрока текст x, а затем уже названию маркера z присвоить значение x Есть несколько модов-ренеймеров. На нексусе или тут в поиске Renamer забей. Насчет маркера карты не уверен, но название локации в одном из них точно можно было менять. Или QuickMenu можешь попробовать - это вообще адовый инструмент с мегатоннами возможностей управления всем чем угодно. 1
mr Jyggalag Опубликовано 24 ноября, 2017 Опубликовано 24 ноября, 2017 24.11.2017 11:14:05, Azazellz сказал(-а):Есть несколько модов-ренеймеров. На нексусе или тут в поиске Renamer забей. Насчет маркера карты не уверен, но название локации в одном из них точно можно было менять. Нашёл мод, где можно переименовывать локации - называется Jaxonz Renamer. Пойду копаться в коде мода, спасибо за совет
alexeyfenix Опубликовано 25 ноября, 2017 Опубликовано 25 ноября, 2017 Доброго времени суток! Товарищи, кто понимает в скриптах, хотел спросить о скрипте MineOreScript.pex. Всем известна проблема перезаписи реквиемом скрипта добычи CCOR. Эту проблему я решил, как писали ранее здесь. Вот интересуюсь этим моментом поглубже. Пока что я так понимаю каждый анимационный удар генерит возможность добычи минералов и драг камней.Если выставить на минимум - 3 удара, то и будет 1-3. Мне вот интересно,а можно как-нибудь сделать схему - 1 удар(анимация) и рандом там 1-3 руды / сколько-то камней?
Azazellz Опубликовано 25 ноября, 2017 Опубликовано 25 ноября, 2017 25.11.2017 21:27:13, alexeyfenix сказал(-а):Мне вот интересно Ну ты бы сам скрипт чтоль запостил (текст, не файл). Сам-то как думаешь, насколько сильно надо желать помочь совершенно неизвестному человеку, чтоб все за тебя сделать - и скрипт у себя найти, и поменять его, и итог сюда выложить?
alexeyfenix Опубликовано 26 ноября, 2017 Опубликовано 26 ноября, 2017 25.11.2017 21:36:30, Azazellz сказал(-а): Ну ты бы сам скрипт чтоль запостил (текст, не файл). Сам-то как думаешь, насколько сильно надо желать помочь совершенно неизвестному человеку, чтоб все за тебя сделать - и скрипт у себя найти, и поменять его, и итог сюда выложить? Пардон. На всякий случай пропишу путь откуда какой файл.CCOR с Реквием взаимодействуют таким образом, что приходится отдельный файл ССOR вытаскивать после реквиема,что бы настройки на добычу руды работали.Но в этом файле какая-то абракадарбра написана, я подозреваю,нужен не совсем этот,а другой файл с таким же названием. Тем не менее ,выложу оба с путем, что бы не запутаться. MineOreScript.psc Путь: Mod Organizer\mods\CompleteCraftingOverhaulRemade170\Scripts\Source Текст: [SPOILER] scriptName MineOreScript extends objectReference ; ;This script handles the Ore Veins and handshakes with the mining furniture ;=================================================================== sound property DrScOreOpen auto {sound played when Ore is acquired} formlist property mineOreToolsList auto {Optional: Player must have at least one item from this formlist to interact} Message Property FailureMessage Auto {Message to say why you can't use this without RequiredWeapon} Message Property DepletedMessage Auto {Message to say that this vein is depleted} MiscObject Property Ore Auto {what you get from this Ore Vein} LeveledItem property lItemGems10 auto {Optional: Gems that may be mined along with ore} int Property ResourceCount = 1 Auto {how many resources you get per drop} GlobalVariable Property ResourceCountGV_CCO auto ;added by Complete Crafting Overhaul by Kryptopyr int property ResourceCountTotal = 3 auto {how many resources this has before it is depleted} GlobalVariable Property ResourceCountTotalGV_CCO auto ;added by Complete Crafting Overhaul by Kryptopyr int property ResourceCountCurrent = -1 auto Hidden {Used to track the current remaining resources} int property StrikesBeforeCollection = 1 Auto {how many times this is struck before giving a resource} GlobalVariable Property StrikesBeforeCollectionGV_CCO auto ;added by Complete Crafting Overhaul by Kryptopyr int property StrikesCurrent = -1 Auto hidden {Current number of strikes} int property AttackStrikesBeforeCollection = 3 Auto {how many times this is struck by attacks before giving a resource} GlobalVariable Property AttackStrikesBeforeCollectionGV_CCO auto ;added by Complete Crafting Overhaul by Kryptopyr int property BYOHDeposit = 0 auto ;added by Complete Crafting Overhaul by Kryptopyr Set this to 1 for Clay & Stone deposits found in Hearthfire DLC. int property StalhrimDeposit = 0 auto ;added by Complete Crafting Overhaul by Kryptopyr Set this to 1 for Stalhrim in order to double the number of strikes it takes to mine. int property DLC2MineGem = 0 auto ;added by Complete Crafting Overhaul by Kryptopyr Set this to 1 for Gem Geodes found in Dragonborn DLC (can also be used for any ore where the max number of resources obtained should always be 1). int property DLC1Shellbug = 0 auto ;added by Complete Crafting Overhaul by Kryptopyr Set this to 1 for Shellbugs found in Dawnguard DLC (can also be used for any ore where the max number of resources obtained should always be 3). int property SkillAdvance = 0 auto ;added by Complete Crafting Overhaul by Kryptopyr int property MiningSkillIncrease = 0 auto ;added by Complete Crafting Overhaul by Kryptopyr int property AttackStrikesCurrent = -1 Auto hidden {Current number of attack strikes} mineOreFurnitureScript property myFurniture auto hidden {the furniture for this piece of ore, set in script} objectReference property objSelf auto hidden {objectReference to self} AchievementsScript property AchievementsQuest auto Location Property CidhnaMineLocation Auto Quest Property MS02 Auto Quest Property DialogueCidhnaMine Auto ObjectReference Property CidhnaMinePlayerBedREF Auto ;=================================================================== ;;EVENT BLOCK ;=================================================================== event onCellAttach() ; debug.Trace(self + ": is running onCellAttach") blockActivation() SetNoFavorAllowed() objSelf = self as objectReference if !getLinkedRef() ; debug.Trace(self + ": does not have a linked ref, going to depleted state") depleteOreDueToFailure() endif endEvent event onActivate(objectReference akActivator) ; debug.Trace(self + " has been activated by " + akActivator) ;Actor is attempting to mine if akActivator as actor ;if the actor is the player if akActivator == game.getPlayer() ;USKP 1.3.0 FixStart - Deactivate sneaking before mining to prevent sneak issues. if game.getPlayer().IsSneaking() game.getPlayer().StartSneaking() endif ;USKP 1.3.0 FixEnd ;if this is not depleted and the player has the right item If ResourceCountCurrent == 0 DepletedMessage.Show() elseif playerHasTools() == false FailureMessage.Show() ;enter the furniture else If Game.GetPlayer().GetCurrentLocation() == CidhnaMineLocation && MS02.ISRunning() == False ; debug.Trace(self + "Player is in Cidhna Mine, activate the bed to serve time") CidhnaMinePlayerBedREF.Activate(Game.GetPlayer()) DialogueCidhnaMine.SetStage(45) Return EndIf ; debug.Trace(self + " should cause " + akActivator + " to activate " + getLinkedRef()) if getLinkedRef() myFurniture = getLinkedRef() as mineOreFurnitureScript myFurniture.lastActivateRef = objSelf getLinkedRef().activate(akActivator) AchievementsQuest.incHardworker(2) Else ; debug.Trace(self + ": error this ore does not have a linkedRef") endif endif Else if getLinkedRef() getLinkedRef().activate(akActivator) Else ; debug.Trace(self + ": error this ore does not have a linkedRef") endif EndIf ;Furniture is telling ore it has been struck ElseIf akActivator == GetLinkedRef() ; debug.Trace(self + ": has been activated by" + akActivator) ProccessStrikes() ;Something unexpected has activated the ore Else ; debug.Trace(self + "has been activated by: " + akActivator + " why?") endif endEvent ;;;May add on hit with pickaxe here later Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) ; debug.Trace(self + ": onHit - akAgressor = " + akAggressor + "; akSource = " + akSource) if akAggressor == game.getPlayer() ;PATCH 1.5 CAPTURE ON HIT EVENT AND BRING UP SERVE TIME DIALOG FOR CIDHNA MINE if mineOreToolsList.hasForm(akSource) If Game.GetPlayer().GetCurrentLocation() == CidhnaMineLocation && MS02.ISRunning() == False ; debug.Trace(self + "Player is in Cidhna Mine, activate the bed to serve time") CidhnaMinePlayerBedREF.Activate(Game.GetPlayer()) DialogueCidhnaMine.SetStage(45) Return EndIf proccessAttackStrikes() endif endif endEvent event onReset() ; debug.Trace(self + ": is running onReset") ;THIS WASN'T WORKING RIGHT self.Reset() self.clearDestruction() self.setDestroyed(False) ; if getLinkedRef() resourceCountCurrent = -1 ; else ; depleteOreDueToFailure() ; endif ;USKP 1.3.0 FixStart - if ore is enabled then disable and enable to avoid becoming un-mineable upon respawn. if self.isEnabled() self.disable() self.enable() endif ;USKP 1.3.0 FixEnd endEvent ;=================================================================== ;;FUNCTION BLOCK ;=================================================================== bool function playerHasTools() if Game.GetPlayer().GetItemCount(mineOreToolsList) > 0 ; debug.Trace(self + ": playerHasTools is returning true") return true Else ; debug.Trace(self + ": playerHasTools is returning false") return false endIf endFunction function proccessAttackStrikes() if AttackStrikesCurrent <= -1 if StalhrimDeposit == 1 ;added by Complete Crafting Overhaul by kryptopyr AttackStrikesBeforeCollection = 2*((Game.GetFormFromFile(0x01CC0504, "Update.esm") As GlobalVariable).GetValue() As Int) ;AttackStrikesBeforeCollectionGV_CCO else AttackStrikesBeforeCollection = ((Game.GetFormFromFile(0x01CC0504, "Update.esm") As GlobalVariable).GetValue() As Int) ;AttackStrikesBeforeCollectionGV_CCO endif ;^^added by Complete Crafting Overhaul by kryptopyr AttackStrikesCurrent = AttackStrikesBeforeCollection EndIf AttackStrikesCurrent -= 1 if AttackStrikesCurrent == 0 AttackstrikesCurrent = AttackStrikesBeforeCollection giveOre() endIf endFunction function proccessStrikes() if StrikesCurrent <= -1 if StalhrimDeposit == 1 ;added by Complete Crafting Overhaul by kryptopyr StrikesBeforeCollection = 2*((Game.GetFormFromFile(0x01CC0503, "Update.esm") As GlobalVariable).GetValue() As Int) ;StrikesBeforeCollectionGV_CCO else StrikesBeforeCollection = ((Game.GetFormFromFile(0x01CC0503, "Update.esm") As GlobalVariable).GetValue() As Int) ;StrikesBeforeCollectionGV_CCO endif ;^^added by Complete Crafting Overhaul by kryptopyr StrikesCurrent = StrikesBeforeCollection EndIf StrikesCurrent -= 1 if StrikesCurrent == 0 strikesCurrent = StrikesBeforeCollection giveOre() endIf endFunction function giveOre() if DLC2MineGem == 1 ;added by Complete Crafting Overhaul by kryptopyr ResourceCountTotal = 1 elseif DLC1Shellbug == 1 ResourceCountTotal = 3 elseif BYOHDeposit == 1 ResourceCountTotal = 1000 else ResourceCountTotal = ((Game.GetFormFromFile(0x01CC0502, "Update.esm") As GlobalVariable).GetValue() As Int) ;ResourceCountTotalGV_CCO endif ;^^added by Complete Crafting Overhaul by kryptopyr if ResourceCountCurrent == -1 ResourceCountCurrent = ResourceCountTotal EndIf if ResourceCountCurrent > 0 MiningSkillIncrease = ((Game.GetFormFromFile(0x01CC0450, "Update.esm") As GlobalVariable).GetValue() As Int) ;added by Complete Crafting Overhaul by kryptopyr if MiningSkillIncrease > 0 Game.AdvanceSkill("Smithing", MiningSkillIncrease) endif ResourceCount = ((Game.GetFormFromFile(0x01CC0501, "Update.esm") As GlobalVariable).GetValue() As Int) ;ResourceCountGV_CCO if BYOHDeposit == 1 ResourceCount = ResourceCount+3 endif ;^^added by Complete Crafting Overhaul by kryptopy ResourceCountCurrent -= 1 ; debug.Trace(self + ": ResourceCountCurrent = " + ResourceCountCurrent) if ResourceCountCurrent == 0 ; debug.Trace(self + ": ResourceCountCurrent == 0 - depleted" ) self.damageObject(50) getLinkedRef().activate(objSelf) DrScOreOpen.play(self) self.setDestroyed(true) ; if this vein has ore and/or gems defined, give them. if ore (game.getPlayer()).addItem(Ore, ResourceCount) endif if lItemGems10 (game.getPlayer()).addItem(lItemGems10) endif DepletedMessage.Show() else DrScOreOpen.play(self) ; if this vein has ore and/or gems defined, give them. if ore (game.getPlayer()).addItem(Ore, ResourceCount) endif if lItemGems10 (game.getPlayer()).addItem(lItemGems10) endif endif elseif ResourceCountCurrent == 0 getLinkedRef().activate(objSelf) (getLinkedRef() as MineOreFurnitureScript).goToDepletedState() DepletedMessage.Show() endif EndFunction function depleteOreDueToFailure() self.damageObject(50) ;THIS WASN'T WORKING RIGHT self.setDestroyed(true) ResourceCountCurrent = 0 endFunction [/spoiler] Файл: http://dropmefiles.com/ZJMZo MineOreScript.pex Путь: Mod Organizer\mods\CompleteCraftingOverhaulRemade170\Scripts Текст Спойлер ъWАЮ TjГ MineOreScript.psc sshatch SEABOURNE М MineOreScript GetState GotoState onCellAttach onActivate OnHit onReset playerHasTools proccessAttackStrikes ProccessStrikes giveOre depleteOreDueToFailure hidden conditional objectReference ::StrikesCurrent_var Int ::mineOreToolsList_var formlist ::CidhnaMinePlayerBedREF_var ::DepletedMessage_var message #::StrikesBeforeCollectionGV_CCO_var globalvariable ::StrikesBeforeCollection_var ::ResourceCountGV_CCO_var ::DialogueCidhnaMine_var quest ::MS02_var ::CidhnaMineLocation_var location ::myFurniture_var mineorefurniturescript )::AttackStrikesBeforeCollectionGV_CCO_var ::SkillAdvance_var ::BYOHDeposit_var ::objSelf_var ::AttackStrikesCurrent_var ::ResourceCountCurrent_var ::FailureMessage_var ::AchievementsQuest_var achievementsscript ::Ore_var miscobject ::DrScOreOpen_var sound ::DLC2MineGem_var ::MiningSkillIncrease_var ::StalhrimDeposit_var #::AttackStrikesBeforeCollection_var ::DLC1Shellbug_var ::ResourceCountTotal_var ::ResourceCount_var ::lItemGems10_var leveleditem ::ResourceCountTotalGV_CCO_var ResourceCountGV_CCO CidhnaMinePlayerBedREF DialogueCidhnaMine myFurniture 2the furniture for this piece of ore, set in script CidhnaMineLocation ResourceCount #how many resources you get per drop objSelf objectReference to self AchievementsQuest MS02 StrikesBeforeCollection 6how many times this is struck before giving a resource AttackStrikesCurrent Current number of attack strikes #AttackStrikesBeforeCollectionGV_CCO ResourceCountTotal 1how many resources this has before it is depleted StrikesBeforeCollectionGV_CCO DLC2MineGem MiningSkillIncrease SkillAdvance lItemGems10 /Optional: Gems that may be mined along with ore DLC1Shellbug AttackStrikesBeforeCollection Ahow many times this is struck by attacks before giving a resource DrScOreOpen !sound played when Ore is acquired BYOHDeposit StrikesCurrent Current number of strikes ResourceCountCurrent -Used to track the current remaining resources Ore what you get from this Ore Vein mineOreToolsList KOptional: Player must have at least one item from this formlist to interact StalhrimDeposit DepletedMessage )Message to say that this vein is depleted ResourceCountTotalGV_CCO FailureMessage <Message to say why you can't use this without RequiredWeapon None 9Function that switches this object to the specified state newState String ::NoneVar onEndState self ::State onBeginState akActivator ::temp2 actor ::temp3 ::temp4 ::temp5 Bool ::temp6 ::temp8 ::temp7 ::temp9 ::temp10 ::temp11 ::temp12 game getPlayer IsSneaking StartSneaking Show GetCurrentLocation ISRunning Activate SetStage getLinkedRef lastActivateRef incHardworker 'Function that returns the current state akAggressor akSource Form akProjectile Projectile abPowerAttack abSneakAttack abBashAttack abHitBlocked ::temp13 ::temp14 ::temp15 ::temp16 ::temp17 ::temp18 ::temp19 hasForm ::temp20 Reset clearDestruction setDestroyed isEnabled disable enable ::temp0 ::temp1 blockActivation SetNoFavorAllowed ::temp47 Float damageObject ::temp37 ::temp38 ::temp39 ::temp40 ::temp41 ::temp42 ::temp43 ::temp44 ::temp45 ::temp46 GetFormFromFile Update.esm GetValue AdvanceSkill Smithing play addItem goToDepletedState ::temp31 ::temp32 ::temp33 ::temp34 ::temp35 ::temp36 ::temp21 ::temp22 ::temp23 ::temp24 GetItemCount ::temp25 ::temp26 ::temp27 ::temp28 ::temp29 ::temp30 Tjї T U V V W W W Y Y ; a a c c c c e e e f f f k k l l m m m n n q q q q q q q q q s s s t u u x x y y y z z { { | | | ‚ ‚ ѓ ѓ ѓ ѓ Љ Љ Љ Њ Њ — — — — ™ ™ љ љ љ љ љ љ љ љ љ њ њ њ ќ ћ ћ Ё © Є ¬ ± ± І і і ј ј ј ј ј ѕ ѕ Б Ж Ж З З И И И И И И И К К К К К М М О О Р Р С Т Т Ч Ч Ш Ш Щ Щ Щ Щ Щ Щ Щ Ы Ы Ы Ы Ы Э Э Я Я б б в г г X и и й й к к л л м м н н п п п п п с с т т х х ц ц ц ц ц ч ч ш ш ш ъ ъ ъ ъ ъ ы ы ь ь ь ю ю ""$% d яяяя ! " # $ % & яяяя ' яяяя ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < ! = > ? @ 5 A B % C * ) D E F G H & I " J K 4 L M / N 0 O # P 7 Q 6 R 3 S T 2 U . V - W $ X Y Z [ ' \ , ] + ^ _ ` 1 a b c 8 d e ( f g h i j f k l j m h n l j f o p q r q s t u v u w u j f x y z u { | ! ; p o p 5 } ~ r s r t o s t + } ~ r r v v } ~ r Ђ r j v ' v Ѓ x l w w w w Ѓ ( x } ~ r ‚ r y w y w w w ѓ z z z w z w } ~ r s r „ z s … z - † l s s † l { | { | { % ‡ { † l { „ { z o € ) j † l { { † l s „ s w o † l s z o s z l j i ‰ m f Љ ‹ Њ Ќ Ћ Џ u ђ u ‘ u ’ u “ q ” • u – u — u ™ u j f } ~ “ ” “ • Љ ” • љ – ‹ – } ~ “ ‚ “ — — ѓ ™ ™ ™ ™ } ~ “ ” “ „ ™ ” … ™ - l j f j f › u њ l j ќ l j ћ l j 'яяяя џ l › › l j Ў l j f j f ў Ј u ¤ l j Ґ l j ў l % ў † l ў Ј ў Ј l j f ¦ § j f ¦ 2 Ё l j ¦ ћ l j ' f © u Є u « Њ ¬ § ® j f Ї ° u ± q І ! X © / © 4 Є 3 Є 4 Є $ Є 4 и } і « М ґ ¬ « µ ¬ ® 4 ® Є 'яяяя Є ' 4 © ' © 9 } і « МP ґ ¬ « µ ¬ ® 0 ® Є 0 Є 0 } ¶ j · } і « М ґ ¬ « µ ¬ ® 5 ® Є $ Є ® 5 5 ® ® ' ' ® Є ' Є 2 Ё l j † l Ї „ Ї ° % Ї l ё - ® Ї ћ l j + } ~ ± « + № ± j « 5 6 } ~ ± « 6 № ± j « Ѓ ® Ї l ё - ® Ї + } ~ ± « + № ± j « 5 6 } ~ ± « 6 № ± j « ° ' ° † l Ї „ Ї Є % † l Ї І Ї є І j Ѓ ® f » u ј u Ѕ Њ ѕ ї § А j f » яяяя » ј 1 ј } і Ѕ М ґ ѕ Ѕ µ ѕ ї А ї А А А } і Ѕ М ґ ѕ Ѕ µ ѕ ї А ї А А А ј ј l j u Б q В Њ Г Д u } ~ Б В Е Б Г В Д Г Д f Ж u З u И Њ Й К § Л j f Ж &яяяя Ж З 1 З } і И М ґ Й И µ Й К Л К Л Л 2 Л } і И М ґ Й И µ Й К Л К 2 Л & 2 Л & & Л З & З & 2 l j Файл: http://dropmefiles.com/32IOA
Azazellz Опубликовано 26 ноября, 2017 Опубликовано 26 ноября, 2017 26.11.2017 08:04:04, alexeyfenix сказал(-а):Но в этом файле какая-то абракадарбра написана, я подозреваю,нужен не совсем этот,а другой файл с таким же названием Так не .pex нужен. Нужен .psc. pex - это уже скомпилированный скрипт, тогда как .psc - это исходник. Оно, конечно, можно и декомпилятором воспользоваться, но если в исходнике были комментарии (как в первом скрипте) - то они потеряются.
Azazellz Опубликовано 26 ноября, 2017 Опубликовано 26 ноября, 2017 26.11.2017 08:04:04, alexeyfenix сказал(-а): int Property ResourceCount = 1 Auto Сколько ресурсов получаешь при дропе. 26.11.2017 08:04:04, alexeyfenix сказал(-а): int property ResourceCountTotal = 3 auto Сколько "дропов" может быть прежде чем жила истощится. 26.11.2017 08:04:04, alexeyfenix сказал(-а): int property StrikesBeforeCollection = 1 Auto Сколько раз надо стукнуть жилу, прежде чем будет "дроп" 26.11.2017 08:04:04, alexeyfenix сказал(-а): int property AttackStrikesBeforeCollection = 3 Auto Сколько раз надо ударить жилу без ее использования прежде чем будет дроп. 26.11.2017 08:04:04, alexeyfenix сказал(-а): LeveledItem property lItemGems10 auto Левел-итем (типа листа) с камнями. Надо больше - докидай туда еще камней, там же шанс прописан как я понимаю. 1
=D= Опубликовано 28 ноября, 2017 Опубликовано 28 ноября, 2017 (изменено) Здравствуйте. Решил тут впервые написать скрипт и появился вопрос: как привязать скрипт к игроку? Изменено 28 ноября, 2017 пользователем =D=
Azazellz Опубликовано 28 ноября, 2017 Опубликовано 28 ноября, 2017 28.11.2017 19:34:20, =D= сказал(-а):Здравствуйте. Решил тут впервые написать скрипт и появился вопрос: как привязать скрипт к игроку?Либо через квест с аллиасом, в который включен игрок, либо через магический эффект, который будет на игроке висеть. 1
=D= Опубликовано 28 ноября, 2017 Опубликовано 28 ноября, 2017 28.11.2017 20:30:23, Azazellz сказал(-а): Либо через квест с аллиасом, в который включен игрок, А вас не затруднит рассказать более подробно? Вот как выглядят мои потуги: создал квест, указал аллианс, привинтил простенький скрипт, чтоб убедится, что вся эта конструкция работает иии...ничего. Конечно, я не сомневаюсь, что я где-то накосячил. Но, не могли бы вы указать чяднт?
Azazellz Опубликовано 28 ноября, 2017 Опубликовано 28 ноября, 2017 (изменено) 28.11.2017 21:20:42, =D= сказал(-а):А вас не затруднит рассказать более подробно?Вот как выглядят мои потуги: создал квест, указал аллианс, привинтил простенький скрипт, чтоб убедится, что вся эта конструкция работает иии...ничего. Конечно, я не сомневаюсь, что я где-то накосячил. Но, не могли бы вы указать чяднт?Так как СК-Вики похоже лежит, и так как я на память синтаксис ивента OnEquipped не помню - то может там неверно что-то задано.Есть еще вариант попробовать привязать этот скрипт не к квесту, а к алиасу напрямую.Но вообще я через квесты такой тип отслеживания уже давно не делал (забыл все уже), и предпочитаю вместо них магические эффекты использовать. Изменено 28 ноября, 2017 пользователем Azazellz 1
=D= Опубликовано 29 ноября, 2017 Опубликовано 29 ноября, 2017 28.11.2017 22:56:52, Azazellz сказал(-а): и предпочитаю вместо них магические эффекты использовать. Я так понимаю, нужно скрипт прикрутить к маг. эффекту. А что дальше? Вы можете подсказать?
Azazellz Опубликовано 29 ноября, 2017 Опубликовано 29 ноября, 2017 (изменено) 29.11.2017 07:41:32, =D= сказал(-а):Я так понимаю, нужно скрипт прикрутить к маг. эффекту. А что дальше? Вы можете подсказать?Фишка в том, что скрипт, который прилеплен к маг.эффекту принимает все эвенты с актера, на котором этот эффект висит - т.е. работает точно так же, как скрипт, висящий напрямую на самом актере.Делаешь магический эффект, пишешь в него скрипт. Этот эффект прицепляешь к заклинанию. Заклинанием уже воздействуешь на актера или игрока.Для "постоянного" отслеживания чего-нибудь заклинание должно быть пассивным постоянно действующим эффектом (типа сопротивления огню данмеров). Если надо что-то кратковременно сделать - например, отследить момент смерти актера от заклинания, или дизентегрировать тело при убийстве непися молнией- то заклинание может быть с фиксированным временем действия.Открой пассивную способность огненного атронаха, например - в ней скрипт взрыва при его смерти прописан. Изменено 29 ноября, 2017 пользователем Azazellz 1
=D= Опубликовано 29 ноября, 2017 Опубликовано 29 ноября, 2017 29.11.2017 10:39:44, Azazellz сказал(-а): Спасибо огромное. Буду пробовать.
=D= Опубликовано 1 декабря, 2017 Опубликовано 1 декабря, 2017 Здравствуйте. У меня снова появилось пара вопросов: 1. Есть ли функция возвращающая манакост/цену спелла(количество манны которое нужно игроку для успешного каста спелла)? 2. Каким образом можно запретить игроку каст спелла? (Пример: если стамина достигает значения Х, то игрок не может кастовать спелл).
Azazellz Опубликовано 1 декабря, 2017 Опубликовано 1 декабря, 2017 01.12.2017 06:58:22, =D= сказал(-а):1. Есть ли функция возвращающая манакост/цену спелла(количество манны которое нужно игроку для успешного каста спелла)? Скорее всего нет. Нужно писать скрипт, который будет следить за расходом маны на каст спелла, и "заливать" часть маны обратно. 01.12.2017 06:58:22, =D= сказал(-а): 2. Каким образом можно запретить игроку каст спелла? (Пример: если стамина достигает значения Х, то игрок не может кастовать спелл). По-моему никаким вообще. Все, что мне удалось придумать - это прописывать кондишны в спелле или эффектах, но в этом случае спелл все равно можно кастовать (анимация будет), но эффектов у такого спелла не будет. 1
=D= Опубликовано 1 декабря, 2017 Опубликовано 1 декабря, 2017 01.12.2017 08:50:41, Azazellz сказал(-а): Спасибо за оперативный ответ
Azazellz Опубликовано 1 декабря, 2017 Опубликовано 1 декабря, 2017 01.12.2017 12:47:34, =D= сказал(-а): Спасибо за оперативный ответ Хотя на второй вопрос есть такая штука как InterruptCast Может прокатить. 1
=D= Опубликовано 1 декабря, 2017 Опубликовано 1 декабря, 2017 (изменено) 01.12.2017 14:03:40, Azazellz сказал(-а): Спасибо. Эта функция - то что нужно.Извиняюсь за надоедливость, но не подскажите как использовать функции skse в редакторе? Я так понимаю, нужно запустить редактор с неким ключом? Проблема решилась переустановкой СК. Изменено 1 декабря, 2017 пользователем =D=
=D= Опубликовано 2 декабря, 2017 Опубликовано 2 декабря, 2017 И я снова прошу помощи) Есть ли функция, позволяющая узнать, кастит ли игрок прямо сейчас потоковый спелл(спелл типа концентрации)? Пробовал через HasMagicEffectPlayer.HasMagicEffect(spellCast.GetNthEffectMagicEffect(0)) Но он работает только для спеллов направленных на игрока.
Azazellz Опубликовано 3 декабря, 2017 Опубликовано 3 декабря, 2017 Есть OnSpellCast - срабатывает в момент старта каста. Еще можно попробовать прицепиться к Animation Event'у - найти эвент на каст спеллов-концентраций, и по нему отслеживать. А еще есть еще GetEquippedSpell. 1
alexeyfenix Опубликовано 9 декабря, 2017 Опубликовано 9 декабря, 2017 (изменено) Доброго времени. Обращаюсь с просьбой со скриптами. Побудила к этому нужда решить один баг, связанный с Реквиемом(хотя может и не с ним,кто знает) https://hostingkartinok.com/show-image.php?id=620a2ea06e3417d0fd76ecbe3be12c59 Фишка в том,что после драки частенько обнаруживаю,что на ГГ висит дизейбл - "истощение от использования оружия. Баг никак не снимается, хоть тресни. Пробовал бить щитом,оружием, снимать броню,включать отладку в реквиеме, даже перепатчивать - всё равно остается. И я подумал, может быть можно было бы создать скрипт,который посредством какого-нибудь заклинания просто снимает все негативные дебаффы? Конечно,я абсолютно ничего не понимаю в скриптах,и там может быть не все так просто, но тем не менее,прошу помочь с ним. Изменено 9 декабря, 2017 пользователем alexeyfenix
mr Jyggalag Опубликовано 9 декабря, 2017 Опубликовано 9 декабря, 2017 (изменено) Вопрос - я не могу брать значение/тип призываемого существа, а затем передавать это значение в заклинание? Т.е я использую какое-нибудь заклинание изгнания, а тип изгнанного существа передаётся в призыва (изгоняю какого-нибудь дремора, а затем этого же дремора специальным заклинанием призываю; далее изгоняю огненного атронаха - и в место дремора вызываю уже огненного атронаха). И ещё - кто разъяснит, как работает этот скрипт (не в плане, что делает в результате своего действия, а именно как он работает)? Вот он:Actor CloneTarget Actor TargetEff Event onEffectStart(Actor Target, Actor Caster) TargetEff = Target ObjectReference Clone = TargetEff.PlaceAtMe(TargetEff.GetActorBase(), 1, false, true) CloneTarget = Clone as Actor CloneTarget.Enable() CloneTarget.StartCombat(CloneTarget) RegisterForSingleUpdate(5) EndEvent Event onUpdate() TargetEff.PushActorAway(CloneTarget, 10) CloneTarget.Kill() Utility.Wait(3) CloneTarget.Disable() CloneTarget.Delete() EndEvent Изменено 9 декабря, 2017 пользователем mr Jygalag
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти