Azazellz Опубликовано 5 июля, 2021 Опубликовано 5 июля, 2021 05.07.2021 15:04:42, angel-deff сказал(-а):Это тот самый скрипт который делает игрока невидимым в скайриме Этот скрипт сам по себе почти ничего не делает. Он только кастует какие-то заклинания и вызывает функции из квестовых скриптов. Весь основной функционал лежит в другом месте. Как я понимаю, на Солстейме это все не работает, потому что автор забыл вставить в функционал соответствующую фракцию, которая за преступления на Солстейме отвечает. Ну или просто когда мод разрабатывался, Солстейма еще не было, а потом автор поленился это все обновлять. А это значит, что функционал там посложнее, чем всего одна команда.
angel-deff Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 05.07.2021 17:40:56, Azazellz сказал(-а): Этот скрипт сам по себе почти ничего не делает. Он только кастует какие-то заклинания и вызывает функции из квестовых скриптов. Весь основной функционал лежит в другом месте. Как я понимаю, на Солстейме это все не работает, потому что автор забыл вставить в функционал соответствующую фракцию, которая за преступления на Солстейме отвечает. Ну или просто когда мод разрабатывался, Солстейма еще не было, а потом автор поленился это все обновлять. А это значит, что функционал там посложнее, чем всего одна команда. Нашёл вот этот скрипт в файлах Scriptname AASneakToolsMainQuestScript extends Quest conditional float originalJumpHeight bool isDawnguardInstalled conditional bool allowThroatSlits conditional bool allowKnockOuts conditional bool allowSleepKills conditional bool allowCrafting conditional bool Property playerBusted auto bool Property detected auto float Property SneakToolsVersion auto Actor Property PlayerRef auto Perk Property SneakToolsSlitThroatPerk auto Perk Property SneakToolsKnockOutPerk auto Perk Property SneakToolsKillSleepingPerk auto Perk Property SneakToolsArrowsPerk auto Faction Property SneakToolsUnconsciousFaction auto FormList Property SneakToolsFireLightsFormList auto GlobalVariable Property SneakToolsAllowEssentialKill auto GlobalVariable Property SneakToolsUseMenus auto Spell Property SneakToolsTeleportShopSpell auto Topic Property SneakToolsDialTricksOfTheTrade auto Topic Property SneakToolsDialKillingTopic auto Quest Property SneakToolsAliasesQuest auto Faction Property CrimeFactionEastmarch auto Faction Property CrimeFactionFalkreath auto Faction Property CrimeFactionHaafingar auto Faction Property CrimeFactionHjaalmarch auto Faction Property CrimeFactionPale auto Faction Property CrimeFactionReach auto Faction Property CrimeFactionRift auto Faction Property CrimeFactionWhiterun auto Faction Property CrimeFactionWinterhold auto Faction Property CrimeFactionOrcs auto int RealCrimeGoldEastMarchViolent int RealCrimeGoldFalkreathViolent int RealCrimeGoldHaafingarViolent int RealCrimeGoldHjaalmarchViolent int RealCrimeGoldPaleViolent int RealCrimeGoldReachViolent int RealCrimeGoldRiftViolent int RealCrimeGoldWhiterunViolent int RealCrimeGoldWinterholdViolent int RealCrimeGoldOrcsViolent int RealCrimeGoldEastMarchNonViolent int RealCrimeGoldFalkreathNonViolent int RealCrimeGoldHaafingarNonViolent int RealCrimeGoldHjaalmarchNonViolent int RealCrimeGoldPaleNonViolent int RealCrimeGoldReachNonViolent int RealCrimeGoldRiftNonViolent int RealCrimeGoldWhiterunNonViolent int RealCrimeGoldWinterholdNonViolent int RealCrimeGoldOrcsNonViolent int FakeCrimeGoldEastMarchViolent int FakeCrimeGoldFalkreathViolent int FakeCrimeGoldHaafingarViolent int FakeCrimeGoldHjaalmarchViolent int FakeCrimeGoldPaleViolent int FakeCrimeGoldReachViolent int FakeCrimeGoldRiftViolent int FakeCrimeGoldWhiterunViolent int FakeCrimeGoldWinterholdViolent int FakeCrimeGoldOrcsViolent int FakeCrimeGoldEastMarchNonViolent int FakeCrimeGoldFalkreathNonViolent int FakeCrimeGoldHaafingarNonViolent int FakeCrimeGoldHjaalmarchNonViolent int FakeCrimeGoldPaleNonViolent int FakeCrimeGoldReachNonViolent int FakeCrimeGoldRiftNonViolent int FakeCrimeGoldWhiterunNonViolent int FakeCrimeGoldWinterholdNonViolent int FakeCrimeGoldOrcsNonViolent ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function SneakToolsEquipFaceMaskFunction() UnregisterForUpdateGameTime() If(playerBusted) return ElseIf(detected) playerBusted=true SneakToolsUnsuccesfulEquipFaceMaskFunction() Debug.Notification("My true identity was recognised!") Else SneakToolsUpdateRealCrimeGold() SneakToolsSuccesfulEquipFaceMaskFunction() playerRef.StopCombatAlarm() EndIf detected = false EndFunction Function SneakToolsSuccesfulEquipFaceMaskFunction() CrimeFactionEastmarch.SetCrimeGold(FakeCrimeGoldEastmarchNonViolent) CrimeFactionEastmarch.SetCrimeGoldViolent(FakeCrimeGoldEastmarchViolent) CrimeFactionFalkreath.SetCrimeGold(FakeCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.SetCrimeGoldViolent(FakeCrimeGoldFalkreathViolent) CrimeFactionHaafingar.SetCrimeGold(FakeCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.SetCrimeGoldViolent(FakeCrimeGoldHaafingarViolent) CrimeFactionHjaalmarch.SetCrimeGold(FakeCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.SetCrimeGoldViolent(FakeCrimeGoldHjaalmarchViolent) CrimeFactionPale.SetCrimeGold(FakeCrimeGoldPaleNonViolent) CrimeFactionPale.SetCrimeGoldViolent(FakeCrimeGoldPaleViolent) CrimeFactionReach.SetCrimeGold(FakeCrimeGoldReachNonViolent) CrimeFactionReach.SetCrimeGoldViolent(FakeCrimeGoldReachViolent) CrimeFactionRift.SetCrimeGold(FakeCrimeGoldRiftNonViolent) CrimeFactionRift.SetCrimeGoldViolent(FakeCrimeGoldRiftViolent) CrimeFactionWhiterun.SetCrimeGold(FakeCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.SetCrimeGoldViolent(FakeCrimeGoldWhiterunViolent) CrimeFactionWinterhold.SetCrimeGold(FakeCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.SetCrimeGoldViolent(FakeCrimeGoldWinterholdViolent) CrimeFactionOrcs.SetCrimeGold(FakeCrimeGoldOrcsNonViolent) CrimeFactionOrcs.SetCrimeGoldViolent(FakeCrimeGoldOrcsViolent) EndFunction Function SneakToolsUnsuccesfulEquipFaceMaskFunction() CrimeFactionEastmarch.ModCrimeGold(FakeCrimeGoldEastmarchNonViolent) CrimeFactionEastmarch.ModCrimeGold(FakeCrimeGoldEastmarchViolent, true) CrimeFactionFalkreath.ModCrimeGold(FakeCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.ModCrimeGold(FakeCrimeGoldFalkreathViolent, true) CrimeFactionHaafingar.ModCrimeGold(FakeCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.ModCrimeGold(FakeCrimeGoldHaafingarViolent, true) CrimeFactionHjaalmarch.ModCrimeGold(FakeCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.ModCrimeGold(FakeCrimeGoldHjaalmarchViolent, true) CrimeFactionPale.ModCrimeGold(FakeCrimeGoldPaleNonViolent) CrimeFactionPale.ModCrimeGold(FakeCrimeGoldPaleViolent, true) CrimeFactionReach.ModCrimeGold(FakeCrimeGoldReachNonViolent) CrimeFactionReach.ModCrimeGold(FakeCrimeGoldReachViolent, true) CrimeFactionRift.ModCrimeGold(FakeCrimeGoldRiftNonViolent) CrimeFactionRift.ModCrimeGold(FakeCrimeGoldRiftViolent, true) CrimeFactionWhiterun.ModCrimeGold(FakeCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.ModCrimeGold(FakeCrimeGoldWhiterunViolent, true) CrimeFactionWinterhold.ModCrimeGold(FakeCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.ModCrimeGold(FakeCrimeGoldWinterholdViolent, true) CrimeFactionOrcs.ModCrimeGold(FakeCrimeGoldOrcsNonViolent) CrimeFactionOrcs.ModCrimeGold(FakeCrimeGoldOrcsViolent, true) SneakToolsResetFakeCrimeGold() EndFunction ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UNEQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function SneakToolsUnequipFaceMaskFunction() if(detected) RegisterForSingleUpdateGameTime(48) If(!playerBusted) SneakToolsUnsuccesfulUnequipFaceMaskFunction() playerBusted=true EndIf Else RegisterForSingleUpdateGameTime(24) If(!playerBusted) SneakToolsUpdateFakeCrimeGold() SneakToolsSuccesfulUnequipFaceMaskFunction() playerRef.StopCombatAlarm() EndIf EndIf detected = false EndFunction Function SneakToolsSuccesfulUnequipFaceMaskFunction() CrimeFactionEastmarch.SetCrimeGold(RealCrimeGoldEastMarchNonViolent) CrimeFactionEastmarch.SetCrimeGoldViolent(RealCrimeGoldEastMarchViolent) CrimeFactionFalkreath.SetCrimeGold(RealCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.SetCrimeGoldViolent(RealCrimeGoldFalkreathViolent) CrimeFactionHaafingar.SetCrimeGold(RealCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.SetCrimeGoldViolent(RealCrimeGoldHaafingarViolent) CrimeFactionHjaalmarch.SetCrimeGold(RealCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.SetCrimeGoldViolent(RealCrimeGoldHjaalmarchViolent) CrimeFactionPale.SetCrimeGold(RealCrimeGoldPaleNonViolent) CrimeFactionPale.SetCrimeGoldViolent(RealCrimeGoldPaleViolent) CrimeFactionReach.SetCrimeGold(RealCrimeGoldReachNonViolent) CrimeFactionReach.SetCrimeGoldViolent(RealCrimeGoldReachViolent) CrimeFactionRift.SetCrimeGold(RealCrimeGoldRiftNonViolent) CrimeFactionRift.SetCrimeGoldViolent(RealCrimeGoldRiftViolent) CrimeFactionWhiterun.SetCrimeGold(RealCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.SetCrimeGoldViolent(RealCrimeGoldWhiterunViolent) CrimeFactionWinterhold.SetCrimeGold(RealCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.SetCrimeGoldViolent(RealCrimeGoldWinterholdViolent) CrimeFactionOrcs.SetCrimeGold(RealCrimeGoldOrcsNonViolent) CrimeFactionOrcs.SetCrimeGoldViolent(RealCrimeGoldOrcsViolent) EndFunction Function SneakToolsUnsuccesfulUnequipFaceMaskFunction() CrimeFactionEastmarch.ModCrimeGold(RealCrimeGoldEastMarchNonViolent) CrimeFactionEastmarch.ModCrimeGold(RealCrimeGoldEastMarchViolent, true) CrimeFactionFalkreath.ModCrimeGold(RealCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.ModCrimeGold(RealCrimeGoldFalkreathViolent, true) CrimeFactionHaafingar.ModCrimeGold(RealCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.ModCrimeGold(RealCrimeGoldHaafingarViolent, true) CrimeFactionHjaalmarch.ModCrimeGold(RealCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.ModCrimeGold(RealCrimeGoldHjaalmarchViolent, true) CrimeFactionPale.ModCrimeGold(RealCrimeGoldPaleNonViolent) CrimeFactionPale.ModCrimeGold(RealCrimeGoldPaleViolent, true) CrimeFactionReach.ModCrimeGold(RealCrimeGoldReachNonViolent) CrimeFactionReach.ModCrimeGold(RealCrimeGoldReachViolent, true) CrimeFactionRift.ModCrimeGold(RealCrimeGoldRiftNonViolent) CrimeFactionRift.ModCrimeGold(RealCrimeGoldRiftViolent, true) CrimeFactionWhiterun.ModCrimeGold(RealCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.ModCrimeGold(RealCrimeGoldWhiterunViolent, true) CrimeFactionWinterhold.ModCrimeGold(RealCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.ModCrimeGold(RealCrimeGoldWinterholdViolent, true) CrimeFactionOrcs.ModCrimeGold(RealCrimeGoldOrcsNonViolent) CrimeFactionOrcs.ModCrimeGold(RealCrimeGoldOrcsViolent, true) SneakToolsResetFakeCrimeGold() EndFunction ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UNEQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function SneakToolsUpdateRealCrimeGold() RealCrimeGoldEastMarchViolent = CrimeFactionEastmarch.GetCrimeGoldViolent() RealCrimeGoldFalkreathViolent = CrimeFactionFalkreath.GetCrimeGoldViolent() RealCrimeGoldHaafingarViolent = CrimeFactionHaafingar.GetCrimeGoldViolent() RealCrimeGoldHjaalmarchViolent = CrimeFactionHjaalmarch.GetCrimeGoldViolent() RealCrimeGoldPaleViolent = CrimeFactionPale.GetCrimeGoldViolent() RealCrimeGoldReachViolent = CrimeFactionReach.GetCrimeGoldViolent() RealCrimeGoldRiftViolent = CrimeFactionRift.GetCrimeGoldViolent() RealCrimeGoldWhiterunViolent = CrimeFactionWhiterun.GetCrimeGoldViolent() RealCrimeGoldWinterholdViolent = CrimeFactionWinterhold.GetCrimeGoldViolent() RealCrimeGoldOrcsViolent = CrimeFactionOrcs.GetCrimeGoldViolent() RealCrimeGoldEastMarchNonViolent = CrimeFactionEastmarch.GetCrimeGoldNonViolent() RealCrimeGoldFalkreathNonViolent = CrimeFactionFalkreath.GetCrimeGoldNonViolent() RealCrimeGoldHaafingarNonViolent = CrimeFactionHaafingar.GetCrimeGoldNonViolent() RealCrimeGoldHjaalmarchNonViolent = CrimeFactionHjaalmarch.GetCrimeGoldNonViolent() RealCrimeGoldPaleNonViolent = CrimeFactionPale.GetCrimeGoldNonViolent() RealCrimeGoldReachNonViolent = CrimeFactionReach.GetCrimeGoldNonViolent() RealCrimeGoldRiftNonViolent = CrimeFactionRift.GetCrimeGoldNonViolent() RealCrimeGoldWhiterunNonViolent = CrimeFactionWhiterun.GetCrimeGoldNonViolent() RealCrimeGoldWinterholdNonViolent = CrimeFactionWinterhold.GetCrimeGoldNonViolent() RealCrimeGoldOrcsNonViolent = CrimeFactionOrcs.GetCrimeGoldNonViolent() EndFunction Function SneakToolsUpdateFakeCrimeGold() FakeCrimeGoldEastMarchViolent = CrimeFactionEastmarch.GetCrimeGoldViolent() FakeCrimeGoldFalkreathViolent = CrimeFactionFalkreath.GetCrimeGoldViolent() FakeCrimeGoldHaafingarViolent = CrimeFactionHaafingar.GetCrimeGoldViolent() FakeCrimeGoldHjaalmarchViolent = CrimeFactionHjaalmarch.GetCrimeGoldViolent() FakeCrimeGoldPaleViolent = CrimeFactionPale.GetCrimeGoldViolent() FakeCrimeGoldReachViolent = CrimeFactionReach.GetCrimeGoldViolent() FakeCrimeGoldRiftViolent = CrimeFactionRift.GetCrimeGoldViolent() FakeCrimeGoldWhiterunViolent = CrimeFactionWhiterun.GetCrimeGoldViolent() FakeCrimeGoldWinterholdViolent = CrimeFactionWinterhold.GetCrimeGoldViolent() FakeCrimeGoldOrcsViolent = CrimeFactionOrcs.GetCrimeGoldViolent() FakeCrimeGoldEastMarchNonViolent = CrimeFactionEastmarch.GetCrimeGoldNonViolent() FakeCrimeGoldFalkreathNonViolent = CrimeFactionFalkreath.GetCrimeGoldNonViolent() FakeCrimeGoldHaafingarNonViolent = CrimeFactionHaafingar.GetCrimeGoldNonViolent() FakeCrimeGoldHjaalmarchNonViolent = CrimeFactionHjaalmarch.GetCrimeGoldNonViolent() FakeCrimeGoldPaleNonViolent = CrimeFactionPale.GetCrimeGoldNonViolent() FakeCrimeGoldReachNonViolent = CrimeFactionReach.GetCrimeGoldNonViolent() FakeCrimeGoldRiftNonViolent = CrimeFactionRift.GetCrimeGoldNonViolent() FakeCrimeGoldWhiterunNonViolent = CrimeFactionWhiterun.GetCrimeGoldNonViolent() FakeCrimeGoldWinterholdNonViolent = CrimeFactionWinterhold.GetCrimeGoldNonViolent() FakeCrimeGoldOrcsNonViolent = CrimeFactionOrcs.GetCrimeGoldNonViolent() EndFunction Function SneakToolsResetFakeCrimeGold() FakeCrimeGoldEastMarchViolent = 0 FakeCrimeGoldFalkreathViolent = 0 FakeCrimeGoldHaafingarViolent = 0 FakeCrimeGoldHjaalmarchViolent = 0 FakeCrimeGoldPaleViolent = 0 FakeCrimeGoldReachViolent = 0 FakeCrimeGoldRiftViolent = 0 FakeCrimeGoldWhiterunViolent = 0 FakeCrimeGoldWinterholdViolent = 0 FakeCrimeGoldOrcsViolent = 0 FakeCrimeGoldEastMarchNonViolent = 0 FakeCrimeGoldFalkreathNonViolent = 0 FakeCrimeGoldHaafingarNonViolent = 0 FakeCrimeGoldHjaalmarchNonViolent = 0 FakeCrimeGoldPaleNonViolent = 0 FakeCrimeGoldReachNonViolent = 0 FakeCrimeGoldRiftNonViolent = 0 FakeCrimeGoldWhiterunNonViolent = 0 FakeCrimeGoldWinterholdNonViolent = 0 FakeCrimeGoldOrcsNonViolent = 0 EndFunction Function setPlayerBusted(bool busted) playerBusted=busted EndFunction FormList Property TrapGasWeapon auto Explosion Property SneakToolsTrapOilExplosionInitial auto Explosion Property SneakToolsTrapOilExplosion01 auto Explosion Property SneakToolsTrapOilExplosionMaster auto Function initSneakTools() playerRef.AddPerk(SneakToolsSlitThroatPerk) playerRef.AddPerk(SneakToolsKnockOutPerk) playerRef.AddPerk(SneakToolsKillSleepingPerk) playerRef.AddPerk(SneakToolsArrowsPerk) playerRef.AddToFaction(SneakToolsUnconsciousFaction) playerRef.AddSpell(SneakToolsTeleportShopSpell) allowThroatSlits = true allowKnockOuts = true allowSleepKills = true allowCrafting = true SneakToolsDialTricksOfTheTrade.Add() (Game.GetForm(0x00082E17) As FormList).AddForm(Game.GetFormFromFile(0x0008A735, "Sneak Tools.esp")) TrapGasWeapon.AddForm(SneakToolsTrapOilExplosionInitial) TrapGasWeapon.AddForm(SneakToolsTrapOilExplosion01) TrapGasWeapon.AddForm(SneakToolsTrapOilExplosionMaster) AddClaraluxLights() handleDawnguardInstallation() originalJumpHeight = Game.GetGameSettingFloat("fJumpHeightMin") RegisterForSingleUpdate(3) EndFunction Function handleDawnguardInstallation() If(Game.GetFormFromFile(0x00000BB3, "Dawnguard.esm") != None) ;Dawnguard installed isDawnguardInstalled = true (Game.GetForm(0x00082E17) As FormList).AddForm(Game.GetFormFromFile(0x000ABC5C, "Sneak Tools.esp")) Else isDawnguardInstalled = false return EndIf EndFunction Function addClaraluxLights() If(Game.GetFormFromFile(0x00003FAA, "CLARALUX - More and Brighter Lights.esm") == None) ;Claralux not installed return EndIf SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FAA, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FE1, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA8, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FE2, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA5, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA4, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA6, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA9, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FAD, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00004021, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000018BE, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00001E7B, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x0000131B, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E9E, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E91, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E92, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E93, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E94, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E95, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079BB, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x0000143E, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x0000140A, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FAC, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000013EC, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00001485, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00002180, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00001414, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079AB, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A7, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A8, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A9, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079AA, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A6, "CLARALUX - More and Brighter Lights.esm")) EndFunction Event OnUpdateGameTime() SneakToolsResetFakeCrimeGold() playerBusted=false EndEvent Event OnUpdate() SneakToolsAliasesQuest.Stop() SneakToolsAliasesQuest.Start() RegisterForSingleUpdate(3) EndEvent Function SetUseMenuPopUps(bool b) If(b) SneakToolsUseMenus.SetValueInt(1) Else SneakToolsUseMenus.SetValueInt(0) EndIf EndFunction Function SetAllowEssentialKills(bool b) If(b) SneakToolsAllowEssentialKill.SetValueInt(1) Else SneakToolsAllowEssentialKill.SetValueInt(0) EndIf EndFunction Function SetAllowThroatSlits(bool b) allowThroatSlits = b EndFunction Function SetAllowKnockOuts(bool b) allowKnockOuts = b EndFunction Function SetAllowSleepKills(bool b) allowSleepKills = b EndFunction Function SetAllowCrafting(bool b) allowCrafting = b EndFunction Function ActivateMod() RegisterForSingleUpdate(3) EndFunction Function DeactivateMod() UnregisterForUpdate() SneakToolsAliasesQuest.Stop() EndFunction Function FixJumpingHeight() Game.SetGameSettingFloat("fJumpHeightMin", originalJumpHeight) EndFunction Event OnReset() RealCrimeGoldEastMarchViolent=0 RealCrimeGoldFalkreathViolent =0 RealCrimeGoldHaafingarViolent =0 RealCrimeGoldHjaalmarchViolent =0 RealCrimeGoldPaleViolent =0 RealCrimeGoldReachViolent =0 RealCrimeGoldRiftViolent =0 RealCrimeGoldWhiterunViolent =0 RealCrimeGoldWinterholdViolent =0 RealCrimeGoldOrcsViolent = 0 RealCrimeGoldEastMarchNonViolent=0 RealCrimeGoldFalkreathNonViolent =0 RealCrimeGoldHaafingarNonViolent =0 RealCrimeGoldHjaalmarchNonViolent =0 RealCrimeGoldPaleNonViolent =0 RealCrimeGoldReachNonViolent =0 RealCrimeGoldRiftNonViolent =0 RealCrimeGoldWhiterunNonViolent =0 RealCrimeGoldWinterholdNonViolent =0 RealCrimeGoldOrcsNonViolent = 0 FakeCrimeGoldEastMarchViolent =0 FakeCrimeGoldFalkreathViolent =0 FakeCrimeGoldHaafingarViolent =0 FakeCrimeGoldHjaalmarchViolent =0 FakeCrimeGoldPaleViolent =0 FakeCrimeGoldReachViolent =0 FakeCrimeGoldRiftViolent =0 FakeCrimeGoldWhiterunViolent =0 FakeCrimeGoldWinterholdViolent =0 FakeCrimeGoldOrcsViolent = 0 FakeCrimeGoldEastMarchNonViolent =0 FakeCrimeGoldFalkreathNonViolent =0 FakeCrimeGoldHaafingarNonViolent =0 FakeCrimeGoldHjaalmarchNonViolent =0 FakeCrimeGoldPaleNonViolent =0 FakeCrimeGoldReachNonViolent =0 FakeCrimeGoldRiftNonViolent =0 FakeCrimeGoldWhiterunNonViolent =0 FakeCrimeGoldWinterholdNonViolent =0 FakeCrimeGoldOrcsNonViolent = 0 EndEvent
angel-deff Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 05.07.2021 17:40:56, Azazellz сказал(-а): Этот скрипт сам по себе почти ничего не делает. Он только кастует какие-то заклинания и вызывает функции из квестовых скриптов. Весь основной функционал лежит в другом месте. Как я понимаю, на Солстейме это все не работает, потому что автор забыл вставить в функционал соответствующую фракцию, которая за преступления на Солстейме отвечает. Ну или просто когда мод разрабатывался, Солстейма еще не было, а потом автор поленился это все обновлять. А это значит, что функционал там посложнее, чем всего одна команда. И надеюсь верно доработал Scriptname AASneakToolsMainQuestScript extends Quest conditional float originalJumpHeight bool isDawnguardInstalled conditional bool allowThroatSlits conditional bool allowKnockOuts conditional bool allowSleepKills conditional bool allowCrafting conditional bool Property playerBusted auto bool Property detected auto float Property SneakToolsVersion auto Actor Property PlayerRef auto Perk Property SneakToolsSlitThroatPerk auto Perk Property SneakToolsKnockOutPerk auto Perk Property SneakToolsKillSleepingPerk auto Perk Property SneakToolsArrowsPerk auto Faction Property SneakToolsUnconsciousFaction auto FormList Property SneakToolsFireLightsFormList auto GlobalVariable Property SneakToolsAllowEssentialKill auto GlobalVariable Property SneakToolsUseMenus auto Spell Property SneakToolsTeleportShopSpell auto Topic Property SneakToolsDialTricksOfTheTrade auto Topic Property SneakToolsDialKillingTopic auto Quest Property SneakToolsAliasesQuest auto Faction Property CrimeFactionEastmarch auto Faction Property CrimeFactionFalkreath auto Faction Property CrimeFactionHaafingar auto Faction Property CrimeFactionHjaalmarch auto Faction Property CrimeFactionPale auto Faction Property CrimeFactionReach auto Faction Property CrimeFactionRift auto Faction Property CrimeFactionWhiterun auto Faction Property CrimeFactionWinterhold auto Faction Property CrimeFactionOrcs auto Faction Property DLC2CrimeRavenRock auto int RealCrimeGoldEastMarchViolent int RealCrimeGoldFalkreathViolent int RealCrimeGoldHaafingarViolent int RealCrimeGoldHjaalmarchViolent int RealCrimeGoldPaleViolent int RealCrimeGoldReachViolent int RealCrimeGoldRiftViolent int RealCrimeGoldWhiterunViolent int RealCrimeGoldWinterholdViolent int RealCrimeGoldOrcsViolent int RealCrimeGoldDLC2CrimeRavenRockViolent int RealCrimeGoldEastMarchNonViolent int RealCrimeGoldFalkreathNonViolent int RealCrimeGoldHaafingarNonViolent int RealCrimeGoldHjaalmarchNonViolent int RealCrimeGoldPaleNonViolent int RealCrimeGoldReachNonViolent int RealCrimeGoldRiftNonViolent int RealCrimeGoldWhiterunNonViolent int RealCrimeGoldWinterholdNonViolent int RealCrimeGoldOrcsNonViolent int RealCrimeGoldDLC2CrimeRavenRockNonViolent int FakeCrimeGoldEastMarchViolent int FakeCrimeGoldFalkreathViolent int FakeCrimeGoldHaafingarViolent int FakeCrimeGoldHjaalmarchViolent int FakeCrimeGoldPaleViolent int FakeCrimeGoldReachViolent int FakeCrimeGoldRiftViolent int FakeCrimeGoldWhiterunViolent int FakeCrimeGoldWinterholdViolent int FakeCrimeGoldOrcsViolent int FakeCrimeGoldDLC2CrimeRavenRockViolent int FakeCrimeGoldEastMarchNonViolent int FakeCrimeGoldFalkreathNonViolent int FakeCrimeGoldHaafingarNonViolent int FakeCrimeGoldHjaalmarchNonViolent int FakeCrimeGoldPaleNonViolent int FakeCrimeGoldReachNonViolent int FakeCrimeGoldRiftNonViolent int FakeCrimeGoldWhiterunNonViolent int FakeCrimeGoldWinterholdNonViolent int FakeCrimeGoldOrcsNonViolent int FakeCrimeGoldDLC2CrimeRavenRockNonViolent ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function SneakToolsEquipFaceMaskFunction() UnregisterForUpdateGameTime() If(playerBusted) return ElseIf(detected) playerBusted=true SneakToolsUnsuccesfulEquipFaceMaskFunction() Debug.Notification("My true identity was recognised!") Else SneakToolsUpdateRealCrimeGold() SneakToolsSuccesfulEquipFaceMaskFunction() playerRef.StopCombatAlarm() EndIf detected = false EndFunction Function SneakToolsSuccesfulEquipFaceMaskFunction() CrimeFactionEastmarch.SetCrimeGold(FakeCrimeGoldEastmarchNonViolent) CrimeFactionEastmarch.SetCrimeGoldViolent(FakeCrimeGoldEastmarchViolent) CrimeFactionFalkreath.SetCrimeGold(FakeCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.SetCrimeGoldViolent(FakeCrimeGoldFalkreathViolent) CrimeFactionHaafingar.SetCrimeGold(FakeCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.SetCrimeGoldViolent(FakeCrimeGoldHaafingarViolent) CrimeFactionHjaalmarch.SetCrimeGold(FakeCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.SetCrimeGoldViolent(FakeCrimeGoldHjaalmarchViolent) CrimeFactionPale.SetCrimeGold(FakeCrimeGoldPaleNonViolent) CrimeFactionPale.SetCrimeGoldViolent(FakeCrimeGoldPaleViolent) CrimeFactionReach.SetCrimeGold(FakeCrimeGoldReachNonViolent) CrimeFactionReach.SetCrimeGoldViolent(FakeCrimeGoldReachViolent) CrimeFactionRift.SetCrimeGold(FakeCrimeGoldRiftNonViolent) CrimeFactionRift.SetCrimeGoldViolent(FakeCrimeGoldRiftViolent) CrimeFactionWhiterun.SetCrimeGold(FakeCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.SetCrimeGoldViolent(FakeCrimeGoldWhiterunViolent) CrimeFactionWinterhold.SetCrimeGold(FakeCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.SetCrimeGoldViolent(FakeCrimeGoldWinterholdViolent) CrimeFactionOrcs.SetCrimeGold(FakeCrimeGoldOrcsNonViolent) CrimeFactionOrcs.SetCrimeGold(FakeCrimeGoldOrcsNonViolent) CrimeFactionOrcs.SetCrimeGoldViolent(FakeCrimeGoldOrcsViolent) DLC2CrimeRavenRock.SetCrimeGold(FakeCrimeGoldDLC2CrimeRavenRockNonViolent) DLC2CrimeRavenRock.SetCrimeGoldViolent(FakeCrimeGoldDLC2CrimeRavenRockViolent) ;;;;;;;;;;;;;;;;;;;;;;;;;;DLC2CrimeRavenRockFaction;;;;;;;;;;;;;;;;;;;;;;;;;;;; EndFunction Function SneakToolsUnsuccesfulEquipFaceMaskFunction() CrimeFactionEastmarch.ModCrimeGold(FakeCrimeGoldEastmarchNonViolent) CrimeFactionEastmarch.ModCrimeGold(FakeCrimeGoldEastmarchViolent, true) CrimeFactionFalkreath.ModCrimeGold(FakeCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.ModCrimeGold(FakeCrimeGoldFalkreathViolent, true) CrimeFactionHaafingar.ModCrimeGold(FakeCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.ModCrimeGold(FakeCrimeGoldHaafingarViolent, true) CrimeFactionHjaalmarch.ModCrimeGold(FakeCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.ModCrimeGold(FakeCrimeGoldHjaalmarchViolent, true) CrimeFactionPale.ModCrimeGold(FakeCrimeGoldPaleNonViolent) CrimeFactionPale.ModCrimeGold(FakeCrimeGoldPaleViolent, true) CrimeFactionReach.ModCrimeGold(FakeCrimeGoldReachNonViolent) CrimeFactionReach.ModCrimeGold(FakeCrimeGoldReachViolent, true) CrimeFactionRift.ModCrimeGold(FakeCrimeGoldRiftNonViolent) CrimeFactionRift.ModCrimeGold(FakeCrimeGoldRiftViolent, true) CrimeFactionWhiterun.ModCrimeGold(FakeCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.ModCrimeGold(FakeCrimeGoldWhiterunViolent, true) CrimeFactionWinterhold.ModCrimeGold(FakeCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.ModCrimeGold(FakeCrimeGoldWinterholdViolent, true) CrimeFactionOrcs.ModCrimeGold(FakeCrimeGoldOrcsNonViolent) CrimeFactionOrcs.ModCrimeGold(FakeCrimeGoldOrcsViolent, true) DLC2CrimeRavenRock.ModCrimeGold(FakeCrimeGoldDLC2CrimeRavenRockNonViolent) DLC2CrimeRavenRock.ModCrimeGold(FakeCrimeGoldDLC2CrimeRavenRockViolent, true) SneakToolsResetFakeCrimeGold() EndFunction ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UNEQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function SneakToolsUnequipFaceMaskFunction() if(detected) RegisterForSingleUpdateGameTime(48) If(!playerBusted) SneakToolsUnsuccesfulUnequipFaceMaskFunction() playerBusted=true EndIf Else RegisterForSingleUpdateGameTime(24) If(!playerBusted) SneakToolsUpdateFakeCrimeGold() SneakToolsSuccesfulUnequipFaceMaskFunction() playerRef.StopCombatAlarm() EndIf EndIf detected = false EndFunction Function SneakToolsSuccesfulUnequipFaceMaskFunction() CrimeFactionEastmarch.SetCrimeGold(RealCrimeGoldEastMarchNonViolent) CrimeFactionEastmarch.SetCrimeGoldViolent(RealCrimeGoldEastMarchViolent) CrimeFactionFalkreath.SetCrimeGold(RealCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.SetCrimeGoldViolent(RealCrimeGoldFalkreathViolent) CrimeFactionHaafingar.SetCrimeGold(RealCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.SetCrimeGoldViolent(RealCrimeGoldHaafingarViolent) CrimeFactionHjaalmarch.SetCrimeGold(RealCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.SetCrimeGoldViolent(RealCrimeGoldHjaalmarchViolent) CrimeFactionPale.SetCrimeGold(RealCrimeGoldPaleNonViolent) CrimeFactionPale.SetCrimeGoldViolent(RealCrimeGoldPaleViolent) CrimeFactionReach.SetCrimeGold(RealCrimeGoldReachNonViolent) CrimeFactionReach.SetCrimeGoldViolent(RealCrimeGoldReachViolent) CrimeFactionRift.SetCrimeGold(RealCrimeGoldRiftNonViolent) CrimeFactionRift.SetCrimeGoldViolent(RealCrimeGoldRiftViolent) CrimeFactionWhiterun.SetCrimeGold(RealCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.SetCrimeGoldViolent(RealCrimeGoldWhiterunViolent) CrimeFactionWinterhold.SetCrimeGold(RealCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.SetCrimeGoldViolent(RealCrimeGoldWinterholdViolent) CrimeFactionOrcs.SetCrimeGold(RealCrimeGoldOrcsNonViolent) CrimeFactionOrcs.SetCrimeGoldViolent(RealCrimeGoldOrcsViolent) DLC2CrimeRavenRock.SetCrimeGold(RealCrimeGoldDLC2CrimeRavenRockNonViolent) DLC2CrimeRavenRock.SetCrimeGoldViolent(RealCrimeGoldDLC2CrimeRavenRockViolent) EndFunction Function SneakToolsUnsuccesfulUnequipFaceMaskFunction() CrimeFactionEastmarch.ModCrimeGold(RealCrimeGoldEastMarchNonViolent) CrimeFactionEastmarch.ModCrimeGold(RealCrimeGoldEastMarchViolent, true) CrimeFactionFalkreath.ModCrimeGold(RealCrimeGoldFalkreathNonViolent) CrimeFactionFalkreath.ModCrimeGold(RealCrimeGoldFalkreathViolent, true) CrimeFactionHaafingar.ModCrimeGold(RealCrimeGoldHaafingarNonViolent) CrimeFactionHaafingar.ModCrimeGold(RealCrimeGoldHaafingarViolent, true) CrimeFactionHjaalmarch.ModCrimeGold(RealCrimeGoldHjaalmarchNonViolent) CrimeFactionHjaalmarch.ModCrimeGold(RealCrimeGoldHjaalmarchViolent, true) CrimeFactionPale.ModCrimeGold(RealCrimeGoldPaleNonViolent) CrimeFactionPale.ModCrimeGold(RealCrimeGoldPaleViolent, true) CrimeFactionReach.ModCrimeGold(RealCrimeGoldReachNonViolent) CrimeFactionReach.ModCrimeGold(RealCrimeGoldReachViolent, true) CrimeFactionRift.ModCrimeGold(RealCrimeGoldRiftNonViolent) CrimeFactionRift.ModCrimeGold(RealCrimeGoldRiftViolent, true) CrimeFactionWhiterun.ModCrimeGold(RealCrimeGoldWhiterunNonViolent) CrimeFactionWhiterun.ModCrimeGold(RealCrimeGoldWhiterunViolent, true) CrimeFactionWinterhold.ModCrimeGold(RealCrimeGoldWinterholdNonViolent) CrimeFactionWinterhold.ModCrimeGold(RealCrimeGoldWinterholdViolent, true) CrimeFactionOrcs.ModCrimeGold(RealCrimeGoldOrcsNonViolent) CrimeFactionOrcs.ModCrimeGold(RealCrimeGoldOrcsViolent, true) DLC2CrimeRavenRock.ModCrimeGold(RealCrimeGoldDLC2CrimeRavenRockNonViolent) DLC2CrimeRavenRock.ModCrimeGold(RealCrimeGoldDLC2CrimeRavenRockViolent, true) SneakToolsResetFakeCrimeGold() EndFunction ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UNEQUIPPING;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function SneakToolsUpdateRealCrimeGold() RealCrimeGoldEastMarchViolent = CrimeFactionEastmarch.GetCrimeGoldViolent() RealCrimeGoldFalkreathViolent = CrimeFactionFalkreath.GetCrimeGoldViolent() RealCrimeGoldHaafingarViolent = CrimeFactionHaafingar.GetCrimeGoldViolent() RealCrimeGoldHjaalmarchViolent = CrimeFactionHjaalmarch.GetCrimeGoldViolent() RealCrimeGoldPaleViolent = CrimeFactionPale.GetCrimeGoldViolent() RealCrimeGoldReachViolent = CrimeFactionReach.GetCrimeGoldViolent() RealCrimeGoldRiftViolent = CrimeFactionRift.GetCrimeGoldViolent() RealCrimeGoldWhiterunViolent = CrimeFactionWhiterun.GetCrimeGoldViolent() RealCrimeGoldWinterholdViolent = CrimeFactionWinterhold.GetCrimeGoldViolent() RealCrimeGoldOrcsViolent = CrimeFactionOrcs.GetCrimeGoldViolent() RealCrimeGoldDLC2CrimeRavenRockViolent = DLC2CrimeRavenRock.GetCrimeGoldViolent() ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RealCrimeGoldEastMarchNonViolent = CrimeFactionEastmarch.GetCrimeGoldNonViolent() RealCrimeGoldFalkreathNonViolent = CrimeFactionFalkreath.GetCrimeGoldNonViolent() RealCrimeGoldHaafingarNonViolent = CrimeFactionHaafingar.GetCrimeGoldNonViolent() RealCrimeGoldHjaalmarchNonViolent = CrimeFactionHjaalmarch.GetCrimeGoldNonViolent() RealCrimeGoldPaleNonViolent = CrimeFactionPale.GetCrimeGoldNonViolent() RealCrimeGoldReachNonViolent = CrimeFactionReach.GetCrimeGoldNonViolent() RealCrimeGoldRiftNonViolent = CrimeFactionRift.GetCrimeGoldNonViolent() RealCrimeGoldWhiterunNonViolent = CrimeFactionWhiterun.GetCrimeGoldNonViolent() RealCrimeGoldWinterholdNonViolent = CrimeFactionWinterhold.GetCrimeGoldNonViolent() RealCrimeGoldOrcsNonViolent = CrimeFactionOrcs.GetCrimeGoldNonViolent() RealCrimeGoldDLC2CrimeRavenRockNonViolent = DLC2CrimeRavenRock.GetCrimeGoldNonViolent() EndFunction Function SneakToolsUpdateFakeCrimeGold() FakeCrimeGoldEastMarchViolent = CrimeFactionEastmarch.GetCrimeGoldViolent() FakeCrimeGoldFalkreathViolent = CrimeFactionFalkreath.GetCrimeGoldViolent() FakeCrimeGoldHaafingarViolent = CrimeFactionHaafingar.GetCrimeGoldViolent() FakeCrimeGoldHjaalmarchViolent = CrimeFactionHjaalmarch.GetCrimeGoldViolent() FakeCrimeGoldPaleViolent = CrimeFactionPale.GetCrimeGoldViolent() FakeCrimeGoldReachViolent = CrimeFactionReach.GetCrimeGoldViolent() FakeCrimeGoldRiftViolent = CrimeFactionRift.GetCrimeGoldViolent() FakeCrimeGoldWhiterunViolent = CrimeFactionWhiterun.GetCrimeGoldViolent() FakeCrimeGoldWinterholdViolent = CrimeFactionWinterhold.GetCrimeGoldViolent() FakeCrimeGoldOrcsViolent = CrimeFactionOrcs.GetCrimeGoldViolent() FakeCrimeGoldDLC2CrimeRavenRockViolent = DLC2CrimeRavenRock.GetCrimeGoldViolent() FakeCrimeGoldEastMarchNonViolent = CrimeFactionEastmarch.GetCrimeGoldNonViolent() FakeCrimeGoldFalkreathNonViolent = CrimeFactionFalkreath.GetCrimeGoldNonViolent() FakeCrimeGoldHaafingarNonViolent = CrimeFactionHaafingar.GetCrimeGoldNonViolent() FakeCrimeGoldHjaalmarchNonViolent = CrimeFactionHjaalmarch.GetCrimeGoldNonViolent() FakeCrimeGoldPaleNonViolent = CrimeFactionPale.GetCrimeGoldNonViolent() FakeCrimeGoldReachNonViolent = CrimeFactionReach.GetCrimeGoldNonViolent() FakeCrimeGoldRiftNonViolent = CrimeFactionRift.GetCrimeGoldNonViolent() FakeCrimeGoldWhiterunNonViolent = CrimeFactionWhiterun.GetCrimeGoldNonViolent() FakeCrimeGoldWinterholdNonViolent = CrimeFactionWinterhold.GetCrimeGoldNonViolent() FakeCrimeGoldOrcsNonViolent = CrimeFactionOrcs.GetCrimeGoldNonViolent() FakeCrimeGoldDLC2CrimeRavenRockNonViolent = DLC2CrimeRavenRock.GetCrimeGoldNonViolent() EndFunction Function SneakToolsResetFakeCrimeGold() FakeCrimeGoldEastMarchViolent = 0 FakeCrimeGoldFalkreathViolent = 0 FakeCrimeGoldHaafingarViolent = 0 FakeCrimeGoldHjaalmarchViolent = 0 FakeCrimeGoldPaleViolent = 0 FakeCrimeGoldReachViolent = 0 FakeCrimeGoldRiftViolent = 0 FakeCrimeGoldWhiterunViolent = 0 FakeCrimeGoldWinterholdViolent = 0 FakeCrimeGoldOrcsViolent = 0 FakeCrimeGoldDLC2CrimeRavenRockViolent = 0 FakeCrimeGoldEastMarchNonViolent = 0 FakeCrimeGoldFalkreathNonViolent = 0 FakeCrimeGoldHaafingarNonViolent = 0 FakeCrimeGoldHjaalmarchNonViolent = 0 FakeCrimeGoldPaleNonViolent = 0 FakeCrimeGoldReachNonViolent = 0 FakeCrimeGoldRiftNonViolent = 0 FakeCrimeGoldWhiterunNonViolent = 0 FakeCrimeGoldWinterholdNonViolent = 0 FakeCrimeGoldOrcsNonViolent = 0 FakeCrimeGoldDLC2CrimeRavenRockNonViolent = 0 EndFunction Function setPlayerBusted(bool busted) playerBusted=busted EndFunction FormList Property TrapGasWeapon auto Explosion Property SneakToolsTrapOilExplosionInitial auto Explosion Property SneakToolsTrapOilExplosion01 auto Explosion Property SneakToolsTrapOilExplosionMaster auto Function initSneakTools() playerRef.AddPerk(SneakToolsSlitThroatPerk) playerRef.AddPerk(SneakToolsKnockOutPerk) playerRef.AddPerk(SneakToolsKillSleepingPerk) playerRef.AddPerk(SneakToolsArrowsPerk) playerRef.AddToFaction(SneakToolsUnconsciousFaction) playerRef.AddSpell(SneakToolsTeleportShopSpell) allowThroatSlits = true allowKnockOuts = true allowSleepKills = true allowCrafting = true SneakToolsDialTricksOfTheTrade.Add() (Game.GetForm(0x00082E17) As FormList).AddForm(Game.GetFormFromFile(0x0008A735, "Sneak Tools.esp")) TrapGasWeapon.AddForm(SneakToolsTrapOilExplosionInitial) TrapGasWeapon.AddForm(SneakToolsTrapOilExplosion01) TrapGasWeapon.AddForm(SneakToolsTrapOilExplosionMaster) AddClaraluxLights() handleDawnguardInstallation() originalJumpHeight = Game.GetGameSettingFloat("fJumpHeightMin") RegisterForSingleUpdate(3) EndFunction Function handleDawnguardInstallation() If(Game.GetFormFromFile(0x00000BB3, "Dawnguard.esm") != None) ;Dawnguard installed isDawnguardInstalled = true (Game.GetForm(0x00082E17) As FormList).AddForm(Game.GetFormFromFile(0x000ABC5C, "Sneak Tools.esp")) Else isDawnguardInstalled = false return EndIf EndFunction Function addClaraluxLights() If(Game.GetFormFromFile(0x00003FAA, "CLARALUX - More and Brighter Lights.esm") == None) ;Claralux not installed return EndIf SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FAA, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FE1, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA8, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FE2, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA5, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA4, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA6, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FA9, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FAD, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00004021, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000018BE, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00001E7B, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x0000131B, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E9E, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E91, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E92, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E93, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E94, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00006E95, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079BB, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x0000143E, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x0000140A, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00003FAC, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000013EC, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00001485, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00002180, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x00001414, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079AB, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A7, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A8, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A9, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079AA, "CLARALUX - More and Brighter Lights.esm")) SneakToolsFireLightsFormList.AddForm(Game.GetFormFromFile(0x000079A6, "CLARALUX - More and Brighter Lights.esm")) EndFunction Event OnUpdateGameTime() SneakToolsResetFakeCrimeGold() playerBusted=false EndEvent Event OnUpdate() SneakToolsAliasesQuest.Stop() SneakToolsAliasesQuest.Start() RegisterForSingleUpdate(3) EndEvent Function SetUseMenuPopUps(bool b) If(b) SneakToolsUseMenus.SetValueInt(1) Else SneakToolsUseMenus.SetValueInt(0) EndIf EndFunction Function SetAllowEssentialKills(bool b) If(b) SneakToolsAllowEssentialKill.SetValueInt(1) Else SneakToolsAllowEssentialKill.SetValueInt(0) EndIf EndFunction Function SetAllowThroatSlits(bool b) allowThroatSlits = b EndFunction Function SetAllowKnockOuts(bool b) allowKnockOuts = b EndFunction Function SetAllowSleepKills(bool b) allowSleepKills = b EndFunction Function SetAllowCrafting(bool b) allowCrafting = b EndFunction Function ActivateMod() RegisterForSingleUpdate(3) EndFunction Function DeactivateMod() UnregisterForUpdate() SneakToolsAliasesQuest.Stop() EndFunction Function FixJumpingHeight() Game.SetGameSettingFloat("fJumpHeightMin", originalJumpHeight) EndFunction Event OnReset() RealCrimeGoldEastMarchViolent=0 RealCrimeGoldFalkreathViolent =0 RealCrimeGoldHaafingarViolent =0 RealCrimeGoldHjaalmarchViolent =0 RealCrimeGoldPaleViolent =0 RealCrimeGoldReachViolent =0 RealCrimeGoldRiftViolent =0 RealCrimeGoldWhiterunViolent =0 RealCrimeGoldWinterholdViolent =0 RealCrimeGoldOrcsViolent = 0 RealCrimeGoldDLC2CrimeRavenRockViolent = 0 RealCrimeGoldEastMarchNonViolent=0 RealCrimeGoldFalkreathNonViolent =0 RealCrimeGoldHaafingarNonViolent =0 RealCrimeGoldHjaalmarchNonViolent =0 RealCrimeGoldPaleNonViolent =0 RealCrimeGoldReachNonViolent =0 RealCrimeGoldRiftNonViolent =0 RealCrimeGoldWhiterunNonViolent =0 RealCrimeGoldWinterholdNonViolent =0 RealCrimeGoldOrcsNonViolent = 0 RealCrimeGoldDLC2CrimeRavenRockNonViolent = 0 FakeCrimeGoldEastMarchViolent =0 FakeCrimeGoldFalkreathViolent =0 FakeCrimeGoldHaafingarViolent =0 FakeCrimeGoldHjaalmarchViolent =0 FakeCrimeGoldPaleViolent =0 FakeCrimeGoldReachViolent =0 FakeCrimeGoldRiftViolent =0 FakeCrimeGoldWhiterunViolent =0 FakeCrimeGoldWinterholdViolent =0 FakeCrimeGoldOrcsViolent = 0 FakeCrimeGoldDLC2CrimeRavenRockViolent = 0 FakeCrimeGoldEastMarchNonViolent =0 FakeCrimeGoldFalkreathNonViolent =0 FakeCrimeGoldHaafingarNonViolent =0 FakeCrimeGoldHjaalmarchNonViolent =0 FakeCrimeGoldPaleNonViolent =0 FakeCrimeGoldReachNonViolent =0 FakeCrimeGoldRiftNonViolent =0 FakeCrimeGoldWhiterunNonViolent =0 FakeCrimeGoldWinterholdNonViolent =0 FakeCrimeGoldOrcsNonViolent = 0 FakeCrimeGoldDLC2CrimeRavenRockNonViolent = 0 EndEvent добавив под каждый столбец это-DLC2CrimeRavenRock
Azazellz Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 06.07.2021 03:46:45, angel-deff сказал(-а): добавив под каждый столбец это-DLC2CrimeRavenRock Ну, можешь протестировать. С первого взгляда вроде все норм. Но я детально эту портянку не разбирал, так что всякое может быть =) Возможно, еще надо будет Property в .esp-файле назначить. Новая игра только потребуется, скорее всего. Или полное удаление мода, и создание "чистого сейва". Квестовые скрипты в сейвы пишутся. И неужели нет уже готового патча на нексусе? Трудно поверить.
angel-deff Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 06.07.2021 12:51:35, Azazellz сказал(-а): Ну, можешь протестировать. С первого взгляда вроде все норм. Но я детально эту портянку не разбирал, так что всякое может быть =) Возможно, еще надо будет Property в .esp-файле назначить. Новая игра только потребуется, скорее всего. Или полное удаление мода, и создание "чистого сейва". Квестовые скрипты в сейвы пишутся. И неужели нет уже готового патча на нексусе? Трудно поверить. Уже протестил. Без новой игры правда, короче не пашет так. С новой игрой проверю позже. И да, патча нет ибо нынешний автор злюка а прежней забыл добавить скалу как признался. И я ароде написал скрипт функцию Scriptname Crime_gold Function SetPlayerReportCrime(bool abReportCrime = true) Game.SetPlayerReportCrime(false) EndFunction он даже скомпелировался, теперь думаю как его нацепить на шлем шоб работал
angel-deff Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 06.07.2021 12:51:35, Azazellz сказал(-а): . И неужели нет уже готового патча на нексусе? Трудно поверить. У мода есть версия для SE но там уже все длс вшиты. Я скачал на легендарку и эффект тот же. В скале 0 эффекта. И никто не хочет делать патчи и подгонять под легенду мод
Azazellz Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 06.07.2021 13:12:20, angel-deff сказал(-а):И я ароде написал скрипт функцию Одной функции мало. Скрипты так не работают. Во-первых, им нужен объект, с которого они будут срабатывать. Скрипт для квеста не будет работать для персонажа. В заголовке скрипта это должно быть, у тебя этого нет. Во-вторых, скриптам нужно событие, с которого они будут запускаться. Event. У тебя этого тоже нет. Сам код функции вне эвентов записан (или даже в другом скрипте), но функция все равно будет вызываться только в каком-то эвенте. Без эвента это все бесполезно. Я ж говорил - изучай туториалы, Там все это объясняется. Применительно к скрипту выше - сам видишь, там только функции, без эвентов. Но теперь вспомни первый скрипт, со шлема (с магического эффекта на шлеме). Вот там как раз эвенты есть, и они ко всем этим функциям и обращаются.
angel-deff Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 (изменено) 06.07.2021 13:55:04, Azazellz сказал(-а): Одной функции мало. Скрипты так не работают. Во-первых, им нужен объект, с которого они будут срабатывать. Скрипт для квеста не будет работать для персонажа. В заголовке скрипта это должно быть, у тебя этого нет. Во-вторых, скриптам нужно событие, с которого они будут запускаться. Event. У тебя этого тоже нет. Сам код функции вне эвентов записан (или даже в другом скрипте), но функция все равно будет вызываться только в каком-то эвенте. Без эвента это все бесполезно. Я ж говорил - изучай туториалы, Там все это объясняется. Применительно к скрипту выше - сам видишь, там только функции, без эвентов. Но теперь вспомни первый скрипт, со шлема (с магического эффекта на шлеме). Вот там как раз эвенты есть, и они ко всем этим функциям и обращаются. Вроде проперти под названием прописал, ивенты у того скрипта спёр вместе с ссылками, лишнее стёр оставив как событие заклинание которое привязано к зачарованию которое сейчас часть шлема. Следовательно предпологаю-пока шлем одет функция которую я прописал в ивент должна работать. Scriptname Crime_gold Actor Property Player Auto Function SetPlayerReportCrime(bool abReportCrime = true) Game.SetPlayerReportCrime(false) EndFunction Event OnEffectStart(Actor akTarget, Actor akCaster) If(akTarget == playerRef) playerRef.AddSpell(SneakToolsWearingMaskAbility, false) Function SetPlayerReportCrime(bool abReportCrime = true) Game.SetPlayerReportCrime(false) EndFunction EndIf EndEvent Event OnEffectFinish(Actor akTarget, Actor akCaster) If(akTarget == playerRef) playerRef.RemoveSpell(SneakToolsWearingMaskAbility) EndIf Event надеюсь, я правельно всё сделал? Или хоть чуток ближе к правельному? Я вот честно, очень хочу закончить мод за эти 6 дней=) Изменено 6 июля, 2021 пользователем angel-deff
Azazellz Опубликовано 6 июля, 2021 Опубликовано 6 июля, 2021 06.07.2021 14:59:35, angel-deff сказал(-а):надеюсь, я правельно всё сделал? Нет. 06.07.2021 14:59:35, angel-deff сказал(-а):Или хоть чуток ближе к правельному? Чуток ближе, да. Но все равно - ерунда ерундой. Изучай туториалы, в последний раз повторяю. Если бы ты потратил 2-3 часа на изучение - уже бы все сделал.
ScottMontgomery Опубликовано 12 сентября, 2021 Опубликовано 12 сентября, 2021 Всем привет, помогите пожалуйста с простым скриптом, уже часов 8 бьюсь головой об стену и ничего не получается. Суть в следующем - скрипт вешается на предмет и при одевании проверяется какое-либо условие (например пол нпц) и выполняется что-либо. Проблема в том, что я никак не могу найти REF предмета к которому прикреплен скрипт. Scriptname AaaScriptName extends ObjectReference event OnEquipped(Actor akActor) ;ObjectReference equipment = self Form equipment = GetBaseObject() if (akActor.GetActorBase().GetSex() == 1) akActor.RemoveItem(equipment, 1) Debug.MessageBox(equipment) endIf endevent
Azazellz Опубликовано 12 сентября, 2021 Опубликовано 12 сентября, 2021 12.09.2021 12:39:59, ScottMontgomery сказал(-а): Всем привет, помогите пожалуйста с простым скриптом, уже часов 8 бьюсь головой об стену и ничего не получается. Суть в следующем - скрипт вешается на предмет и при одевании проверяется какое-либо условие (например пол нпц) и выполняется что-либо. Проблема в том, что я никак не могу найти REF предмета к которому прикреплен скрипт. Scriptname AaaScriptName extends ObjectReference event OnEquipped(Actor akActor) ;ObjectReference equipment = self Form equipment = GetBaseObject() if (akActor.GetActorBase().GetSex() == 1) akActor.RemoveItem(equipment, 1) Debug.MessageBox(equipment) endIf endevent Попробуй что-то типа такого: Armor equipment = (self as Form) as Armor Или сразу "self as Armor", без использования form. Если совсем никак - переделай систему на ивент OnObjectEquipped и проверяй его с НПСа, а не с предмета.
ScottMontgomery Опубликовано 12 сентября, 2021 Опубликовано 12 сентября, 2021 12.09.2021 21:04:56, Azazellz сказал(-а): Попробуй что-то типа такого: Armor equipment = (self as Form) as Armor Или сразу "self as Armor", без использования form. Если совсем никак - переделай систему на ивент OnObjectEquipped и проверяй его с НПСа, а не с предмета. Спасибо за ответ. Это не работает - MessageBox отображает [AaaScriptName <Item 1 in container (00000014)>], а должен REF брони. Без Form не компилится скрипт. Дело в том, что очень много брони попадает через лвл листы почти всем нпц и делать мужскую версию брони я не буду. И чтобы не было модников-мужск. нпц с бархатным бельем например мне проще на многие предметы повесить скрипт. Вешать его на всех нпц просто не вариант. Не могу понять неужели нельзя никак обратиться в скрипте к его источнику, на который его поцепили?
Azazellz Опубликовано 13 сентября, 2021 Опубликовано 13 сентября, 2021 12.09.2021 21:55:37, ScottMontgomery сказал(-а):а должен REF брони Так броня то удаляется, или нет? Мессаджбокс тебе зачем? 12.09.2021 21:55:37, ScottMontgomery сказал(-а):Не могу понять неужели нельзя никак обратиться в скрипте к его источнику, на который его поцепили? Вообще, self для этого и нужен. Но как он точно работает я уже и не помню. Использовал пару раз всего, вроде бы как раз как в примере выше описал, через двойной "as".
ScottMontgomery Опубликовано 13 сентября, 2021 Опубликовано 13 сентября, 2021 13.09.2021 07:28:29, Azazellz сказал(-а): Так броня то удаляется, или нет? Мессаджбокс тебе зачем? Вообще, self для этого и нужен. Но как он точно работает я уже и не помню. Использовал пару раз всего, вроде бы как раз как в примере выше описал, через двойной "as". Мессаджбокс для фидбека, чтобы убедиться в правильности переменной. Ничего не удаляется, там или None, или пусто, или [AaaScriptName <Item 1 in container (00000014)>] (если обратиться напрямую к self он даст такой же результат). Сдается мне это все потому, что у объекта нет REF тк он лежит в инвентаре и нужно это как-то реализовывать через пустой квест или типо того.
ломгом Опубликовано 25 сентября, 2021 Опубликовано 25 сентября, 2021 Добрый день. Хочу сделать скрипт в котором при активации кнопки исчезала/появлялась определенная стена, однако не просто disable/enable, а чтобы была анимация исчезновения/появления. например через "effectshader property" Знающие скриптеры подскажите как можно такое реализовать? Нечто похожее с исчезновением есть в Апокрифе у расширяющихся коридоров.
Azazellz Опубликовано 26 сентября, 2021 Опубликовано 26 сентября, 2021 25.09.2021 21:24:37, ломгом сказал(-а): Добрый день. Хочу сделать скрипт в котором при активации кнопки исчезала/появлялась определенная стена, однако не просто disable/enable, а чтобы была анимация исчезновения/появления. например через "effectshader property" Знающие скриптеры подскажите как можно такое реализовать? Нечто похожее с исчезновением есть в Апокрифе у расширяющихся коридоров. Ну так если есть коридоры - посмотри, как они устроены. Я в детали не лазил, но скорее всего там в самой стене это закодировано, через анимацию. Скриптом она только вызывается. Самый простой способ добавить эффект - скастовать какой-нибудь визуальный explosion на нужный объект. Через PlaceAtMe, или как там этот аналог в папирусе прописан.
ломгом Опубликовано 26 сентября, 2021 Опубликовано 26 сентября, 2021 (изменено) Добрый день. Я снова по своему скрипту, теперь по детальней. У меня есть активатор на основе сокета под парагон (на него я и вешаю скрипт) и кристалл который в него вставляется и активирует его. Так же есть стена, которая должна исчезнуть при активации сокета. Вот мой код, который я сумел реализовать. scriptName aaWallDisable01 extends ObjectReference Bool property HasKey auto ObjectReference property Wall auto (Это собственно будет стена которая должна исчезнуть) message property DontHave auto (Сообщение что у меня нет нужного предмета) miscobject property Stone auto (Это тот самый кристалл который вставляется в сокет) EffectShader Property DisableEffect Auto (Это эффект при исчезновении стены) EffectShader Property EnableEffect Auto (Это эффект при появлении стены) Float Property ShaderTime Auto (Это время в течение которого должна исчезнуть появится стена) function OnActivate(ObjectReference akActionRef) if akActionRef == game.GetPlayer() as ObjectReference if HasKey == false if game.GetPlayer().GetItemCount(Stone as form) >= 1 self.PlayAnimationAndWait("PlaceWhite", "Done") game.GetPlayer().RemoveItem(Stone as form, 1, false, none) Wall.Disable(false) HasKey = true else DontHave.Show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) endIf else self.PlayAnimationAndWait("TakeWhite", "Done") game.GetPlayer().AddItem(Stone as form, 1, false) Wall.Enable(false) HasKey = false endIf endIf endFunction Собственно мой вопрос, что и где мне добавить чтобы на стену применялись эффекты исчезновения или появления подскажите плиз. Я плохо разбираюсь в папирусе, поэтому не знаю переменных которые надо вписать Изменено 26 сентября, 2021 пользователем ломгом
Azazellz Опубликовано 26 сентября, 2021 Опубликовано 26 сентября, 2021 26.09.2021 12:52:06, ломгом сказал(-а): Собственно мой вопрос, что и где мне добавить чтобы на стену применялись эффекты исчезновения или появления подскажите плиз. Я плохо разбираюсь в папирусе, поэтому не знаю переменных которые надо вписать Ну, собственно, команда вот: https://www.creationkit.com/index.php?title=Play_-_EffectShader Подставляешь свою стену и эффект туда. Вписываешь в скрипт перед Disable (и после enable). Возможно, потребуется использовать utility.wait после каста эффекта, чтоб дверь не сразу исчезла, а немного постояла.
ломгом Опубликовано 26 сентября, 2021 Опубликовано 26 сентября, 2021 (изменено) 26.09.2021 13:10:11, Azazellz сказал(-а): Ну, собственно, команда вот: https://www.creationkit.com/index.php?title=Play_-_EffectShader Подставляешь свою стену и эффект туда. Вписываешь в скрипт перед Disable (и после enable). Возможно, потребуется использовать utility.wait после каста эффекта, чтоб дверь не сразу исчезла, а немного постояла. Прописал по вашему совету. Ничего не изменилось Bool property HasKey auto ObjectReference property Wall auto message property DontHave auto miscobject property Stone auto EffectShader Property DisableEffect Auto EffectShader Property EnableEffect Auto Float Property ShaderTime Auto function OnActivate(ObjectReference akActionRef) if akActionRef == game.GetPlayer() as ObjectReference if HasKey == false if game.GetPlayer().GetItemCount(Stone as form) >= 1 self.PlayAnimationAndWait("PlaceWhite", "Done") game.GetPlayer().RemoveItem(Stone as form, 1, false, none) DisableEffect.Play(Wall, ShaderTime) utility.Wait(ShaderTime) Wall.Disable(false) HasKey = true else DontHave.Show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) endIf else self.PlayAnimationAndWait("TakeWhite", "Done") game.GetPlayer().AddItem(Stone as form, 1, false) Wall.Enable(false) EnableEffect.Play(Wall, ShaderTime) utility.Wait(ShaderTime) HasKey = false endIf endIf endFunction Эффекты не проигрываются Может что то неправильно вписал, но компиляцию скрипт прошел Изменено 26 сентября, 2021 пользователем ломгом
Azazellz Опубликовано 26 сентября, 2021 Опубликовано 26 сентября, 2021 26.09.2021 14:30:57, ломгом сказал(-а): Эффекты не проигрываются Может что то неправильно вписал, но компиляцию скрипт прошел Скорее в эффектах дело. Возможно, не все из них можно применять к статичным объектам. Поэкспериментируй с разными эффектами. Потому что если ты указываешь в проперти совершенно конкретную стену из окна рендера, то я не вижу, где тут еще может быть что-то не так.
ломгом Опубликовано 26 сентября, 2021 Опубликовано 26 сентября, 2021 26.09.2021 15:45:37, Azazellz сказал(-а): Скорее в эффектах дело. Возможно, не все из них можно применять к статичным объектам. Поэкспериментируй с разными эффектами. Потому что если ты указываешь в проперти совершенно конкретную стену из окна рендера, то я не вижу, где тут еще может быть что-то не так. Накостылил в общем через активацию кнопок а с них уже эффекты. Немного непонятно почему но заработало. Если кто-нибудь знает как все реализовать через мою заготовку буду признателен подсказке.
Dragon055 Опубликовано 17 октября, 2021 Опубликовано 17 октября, 2021 (изменено) помогите с скриптом как сделать чтоб при убийстве нпс его труп автоматически исчез и удалился ну те которые сам создал и второе какой скрипт нужен для того чтоб игрок при смерти оживилься чтоб только в внутри маркера сработал Изменено 17 октября, 2021 пользователем Dragon055
aaa112aaa Опубликовано 17 октября, 2021 Опубликовано 17 октября, 2021 (изменено) Обновлено! Кто шарит в скриптописании? С этим уже разобрался: (а именно как с помощью jsonutil (PapyrusUtil) и fiss (FileAccess Interface) сохранять и загружать значения строк, сохранять то сохраняет, а вот загружать... Похоже если и загружает, то не присваивает значения переменным или присваивает, но не всегда. Старая версия работает как надо, но есть задержка перед показом первого меню, собственно поэтому и решил заморочиться с условиями обработки в функции - "GetCellName()", чтобы каждый раз не перебирала все строки, а только те которые пустые и те которые отличаются (2 вводные переменные строк для этого).) Теперь другая проблема. Функция - GetCellName() Если разместить её выполнение перед показом меню, то будет задержка перед показом первого меню в несколько секунд, поэтому разместил после, но названия в меню конечно обновятся спустя эти несколько секунд, вот и вопрос имеется. Возможно ли оптимизировать время выполнения этой функции? Если нужно будет, старые версии скриптов можете взять с моего мода, распакуйте BSA, там есть исходники - https://www.nexusmods.com/skyrimspecialedition/mods/57064 Решил пока сделать по простому, поэтому текста в скрипте много, вот собственно и эти скрипты: Большая часть скрипта, остальная часть не важна, там функции "SetObjectiveDisplayed" MarkAndRecallQuestScript Scriptname MarkAndRecallQuestScript extends Quest ;-- Properties -------------------------------------- ReferenceAlias Property Recall1 Auto ReferenceAlias Property Recall2 Auto ReferenceAlias Property Recall3 Auto ReferenceAlias Property Recall4 Auto ReferenceAlias Property Recall5 Auto ReferenceAlias Property Recall6 Auto ReferenceAlias Property Recall7 Auto ReferenceAlias Property Recall8 Auto ReferenceAlias Property Recall9 Auto ReferenceAlias Property Recall10 Auto ReferenceAlias Property Recall11 Auto ReferenceAlias Property Recall12 Auto ReferenceAlias Property Recall13 Auto ReferenceAlias Property Recall14 Auto ReferenceAlias Property Recall15 Auto ReferenceAlias Property Recall16 Auto String Property Recall1Name Auto Hidden String Property Recall2Name Auto Hidden String Property Recall3Name Auto Hidden String Property Recall4Name Auto Hidden String Property Recall5Name Auto Hidden String Property Recall6Name Auto Hidden String Property Recall7Name Auto Hidden String Property Recall8Name Auto Hidden String Property Recall9Name Auto Hidden String Property Recall10Name Auto Hidden String Property Recall11Name Auto Hidden String Property Recall12Name Auto Hidden String Property Recall13Name Auto Hidden String Property Recall14Name Auto Hidden String Property Recall15Name Auto Hidden String Property Recall16Name Auto Hidden Int Property Distance = 4000 Auto ;ReferenceAlias Property Player Auto LocationAlias Property Recall1Location Auto ;-- Variables --------------------------------------- ;String settings_path = "..\\MarkAndRecall\\UserSettings" String settings_path = "..\\MarkAndRecall\\UserSettings" String _Recall_1_Name String _Recall_2_Name String _Recall_3_Name String _Recall_4_Name String _Recall_5_Name String _Recall_6_Name String _Recall_7_Name String _Recall_8_Name String _Recall_9_Name String _Recall_10_Name String _Recall_11_Name String _Recall_12_Name String _Recall_13_Name String _Recall_14_Name String _Recall_15_Name String _Recall_16_Name Bool _messageResult = false Bool _waitForMessage = false ;-- Functions --------------------------------------- Event OnInit() if !(game.GetPlayer().HasSpell((Game.GetFormFromFile(0x5901, "MarkAndRecall.esp")) as Spell)) game.GetPlayer().addspell((Game.GetFormFromFile(0x5901, "MarkAndRecall.esp")) as Spell, false) debug.notification("Заклинание: " + (Game.GetFormFromFile(0x5901, "MarkAndRecall.esp")).GetName() + " Добавлено.") ; debug.notification("Spell: " + (Game.GetFormFromFile(0x5901, "MarkAndRecall.esp")).GetName() + " Added.") endif debug.notification("Quest: " + self.GetName() + " Запущен.") LoadSettingsAtStart() EndEvent bool Function IsMarkerNearPlayer(ObjectReference O) Actor player = Game.GetPlayer() Cell targetCell = O.GetParentCell() Cell playerCell = player.GetParentCell() if (targetCell != playerCell) return false else if (player.GetDistance(O) >= Distance) ; pretty darned far away -- safe return false else ; too close for comfort return true endif endif endFunction Bool Function GetCellNameIdentical(ObjectReference O, String S1, String S2) If ((S1 == S2) && (S2 != "")) return true ElseIf (S1 != S2) If ((S2 == (S1 + " (Снаружи)")) && (S1 != "")) ; debug.notification("True - (S2 == (S1 + ( Outside)))") return true ElseIf ((S2 == "") && (S1 != "")) ; debug.notification("False - (S2 == Empty) && (S1 != Empty)") return false ElseIf ((S2 != "") && (S1 == "")) If ((O.GetCurrentLocation().GetName() == "") && (O.GetParentCell().GetName() == "")) ; debug.notification("GetWorldSpaceName: " + O.GetWorldSpace().GetName()) Int xcell = math.floor(O.getpositionX() / 4096 as Float) Int ycell = math.floor(O.getpositionY() / 4096 as Float) Int zcell = math.floor(O.getpositionZ()) If (S2 == ("Тамриэль " + xcell as String + " , " + ycell as String)); Скайрим ; debug.notification("True") return true Else ; debug.notification("False") return false EndIf EndIf ElseIf ((S1 == "Mark And Recall Markers Cell") && (S2 == "Пусто")) ; debug.notification("True - Ignore Cell") return true Endif ; debug.notification("False - (S1 != S2)") return false ElseIf (S2 == "") ; debug.notification("False - (S2 == Empty)") return false ElseIf ((S1 == "") && (S2 == "")) ; debug.notification("False - Strings == Empty") return false EndIf EndFunction String Function GetCellName(ObjectReference O, String S1, String S2) if (O.GetParentCell().IsInterior() == 0) If (O.GetCurrentLocation().GetName() != "") return (O.GetCurrentLocation().GetName() + " (Снаружи)") ElseIf ((O.GetCurrentLocation().GetName() == "") && (O.GetParentCell().GetName() == "")) Int xcell = math.floor(O.getpositionX() / 4096 as Float) Int ycell = math.floor(O.getpositionY() / 4096 as Float) Int zcell = math.floor(O.getpositionZ()) return ("Тамриэль " + xcell as String + " , " + ycell as String); Скайрим Endif ElseIf (O.GetParentCell().IsInterior() == 1) If (O.GetParentCell().GetName() != "") If ((S1 == "Mark And Recall Markers Cell") && (S2 == "Пусто")) Else return (O.GetParentCell().GetName()) Endif EndIf EndIf EndFunction String Function GetCellName1(ObjectReference O, String S1, String S2) If ((S1 == S2) && (S2 != "")) ElseIf ((S1 == "") && (O.GetCurrentLocation().GetName() != "")) if ((O.GetParentCell().IsInterior() == 0) && (S1 == S2)) return (O.GetCurrentLocation().GetName() + " (Снаружи)") Endif ElseIf ((S1 == "") && (O.GetCurrentLocation().GetName() == "") && (O.GetParentCell().GetName() == "")) Int xcell = math.floor(O.getpositionX() / 4096 as Float) Int ycell = math.floor(O.getpositionY() / 4096 as Float) Int zcell = math.floor(O.getpositionZ()) ; debug.notification("Check 4: " + O.GetWorldSpace().GetName() + " " + xcell as String + " , " + ycell as String) return ("Тамриэль " + xcell as String + " , " + ycell as String); Скайрим ElseIf (S1 != S2) ; debug.notification("Check: Else") If ((S2 == "") && (S1 != "")) if (O.GetParentCell().IsInterior() == 0) If (O.GetCurrentLocation().GetName() != "") ; debug.notification("Check 2: " + O.GetCurrentLocation().GetName() + " (Outside)") return (O.GetCurrentLocation().GetName() + " (Снаружи)") Endif ElseIf (O.GetParentCell().IsInterior() == 1) If (O.GetParentCell().GetName() != "") ; debug.notification("Check: " + O.GetParentCell().GetName()) return (O.GetParentCell().GetName()) Endif Endif ElseIf ((S1 != "Mark And Recall Markers Cell") && (S2 != "Пусто")) If (O.GetParentCell().GetName() != "") ; debug.notification("Check 3: " + O.GetParentCell().GetName()) return (O.GetParentCell().GetName()) Endif ElseIf ((S1 == "Mark And Recall Markers Cell") && (S2 != "Пусто")) If (O.GetParentCell().GetName() != "") return (O.GetParentCell().GetName()) Endif ElseIf ((S1 == "Mark And Recall Markers Cell") && (S2 == "Пусто")) Endif EndIf EndFunction ; debug.messagebox("Player is in cell " + xcell as String + "," + ycell as String + " at elevation " + zcell as String) function ShowNotification(String S1, String S2) If (S1 == "LoadUserSettingsPapyrus") debug.notification("Check LoadUserSettingsPapyrus: " + S2) ElseIf (S1 == "SaveUserSettingsPapyrus") debug.notification("Check SaveUserSettingsPapyrus: " + S2) ElseIf (S1 == "LoadUserSettings") debug.notification("Check LoadUserSettings: " + S2) ElseIf (S1 == "SaveUserSettings") debug.notification("Check SaveUserSettings: " + S2) EndIf endFunction function LoadSettingsAtStart() debug.notification("Загрузка меток.") Bool ValidatePapyrusUtil = papyrusutil.GetVersion() > 31 if ValidatePapyrusUtil if jsonutil.JsonExists(settings_path) self.LoadUserSettingsPapyrus() return endIf endIf fissinterface fiss = fissfactory.getFISS() if fiss fiss.beginLoad("MARUserSettings.xml") if fiss.endLoad() != "" return else self.LoadUserSettings() return endIf endIf debug.notification("Загрузка меток завершена.") endFunction Bool function LoadUserSettingsPapyrus() ; debug.notification("Загрузка меток.") if !jsonutil.IsGood(settings_path) return false endIf if ((_Recall_1_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_1_Name", _Recall_1_Name) != "")) _Recall_1_Name = jsonutil.GetPathStringValue(settings_path, "Recall_1_Name", _Recall_1_Name) endif if ((_Recall_2_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_2_Name", _Recall_2_Name) != "")) _Recall_2_Name = jsonutil.GetPathStringValue(settings_path, "Recall_2_Name", _Recall_2_Name) endif if ((_Recall_3_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_3_Name", _Recall_3_Name) != "")) _Recall_3_Name = jsonutil.GetPathStringValue(settings_path, "Recall_3_Name", _Recall_3_Name) endif if ((_Recall_4_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_4_Name", _Recall_4_Name) != "")) _Recall_4_Name = jsonutil.GetPathStringValue(settings_path, "Recall_4_Name", _Recall_4_Name) endif if ((_Recall_5_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_5_Name", _Recall_5_Name) != "")) _Recall_5_Name = jsonutil.GetPathStringValue(settings_path, "Recall_5_Name", _Recall_5_Name) endif if ((_Recall_6_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_6_Name", _Recall_6_Name) != "")) _Recall_6_Name = jsonutil.GetPathStringValue(settings_path, "Recall_6_Name", _Recall_6_Name) endif if ((_Recall_7_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_7_Name", _Recall_7_Name) != "")) _Recall_7_Name = jsonutil.GetPathStringValue(settings_path, "Recall_7_Name", _Recall_7_Name) endif if ((_Recall_8_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_8_Name", _Recall_8_Name) != "")) _Recall_8_Name = jsonutil.GetPathStringValue(settings_path, "Recall_8_Name", _Recall_8_Name) endif if ((_Recall_9_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_9_Name", _Recall_9_Name) != "")) _Recall_9_Name = jsonutil.GetPathStringValue(settings_path, "Recall_9_Name", _Recall_9_Name) endif if ((_Recall_10_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_10_Name", _Recall_10_Name) != "")) _Recall_10_Name = jsonutil.GetPathStringValue(settings_path, "Recall_10_Name", _Recall_10_Name) endif if ((_Recall_11_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_11_Name", _Recall_11_Name) != "")) _Recall_11_Name = jsonutil.GetPathStringValue(settings_path, "Recall_11_Name", _Recall_11_Name) endif if ((_Recall_12_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_12_Name", _Recall_12_Name) != "")) _Recall_12_Name = jsonutil.GetPathStringValue(settings_path, "Recall_12_Name", _Recall_12_Name) endif if ((_Recall_13_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_13_Name", _Recall_13_Name) != "")) _Recall_13_Name = jsonutil.GetPathStringValue(settings_path, "Recall_13_Name", _Recall_13_Name) endif if ((_Recall_14_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_14_Name", _Recall_14_Name) != "")) _Recall_14_Name = jsonutil.GetPathStringValue(settings_path, "Recall_14_Name", _Recall_14_Name) endif if ((_Recall_15_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_15_Name", _Recall_15_Name) != "")) _Recall_15_Name = jsonutil.GetPathStringValue(settings_path, "Recall_15_Name", _Recall_15_Name) endif if ((_Recall_16_Name != "") && (jsonutil.GetPathStringValue(settings_path, "Recall_16_Name", _Recall_16_Name) != "")) _Recall_16_Name = jsonutil.GetPathStringValue(settings_path, "Recall_16_Name", _Recall_16_Name) endif ;==================================== if _Recall_1_Name != "" (Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).SetName(_Recall_1_Name) endif if _Recall_2_Name != "" (Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).SetName(_Recall_2_Name) endif if _Recall_3_Name != "" (Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).SetName(_Recall_3_Name) endif if _Recall_4_Name != "" (Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).SetName(_Recall_4_Name) endif if _Recall_5_Name != "" (Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).SetName(_Recall_5_Name) endif if _Recall_6_Name != "" (Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).SetName(_Recall_6_Name) endif if _Recall_7_Name != "" (Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).SetName(_Recall_7_Name) endif if _Recall_8_Name != "" (Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).SetName(_Recall_8_Name) endif if _Recall_9_Name != "" (Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).SetName(_Recall_9_Name) endif if _Recall_10_Name != "" (Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).SetName(_Recall_10_Name) endif if _Recall_11_Name != "" (Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).SetName(_Recall_11_Name) endif if _Recall_12_Name != "" (Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).SetName(_Recall_12_Name) endif if _Recall_13_Name != "" (Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).SetName(_Recall_13_Name) endif if _Recall_14_Name != "" (Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).SetName(_Recall_14_Name) endif if _Recall_15_Name != "" (Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).SetName(_Recall_15_Name) endif if _Recall_16_Name != "" (Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).SetName(_Recall_16_Name) endif ;==================================== return true endFunction Bool function SaveUserSettingsPapyrus() If ((Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() != "") Recall1Name = (Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() != "") Recall2Name = (Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() != "") Recall3Name = (Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() != "") Recall4Name = (Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() != "") Recall5Name = (Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() != "") Recall6Name = (Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() != "") Recall7Name = (Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() != "") Recall8Name = (Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() != "") Recall9Name = (Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() != "") Recall10Name = (Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() != "") Recall11Name = (Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() != "") Recall12Name = (Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() != "") Recall13Name = (Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() != "") Recall14Name = (Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() != "") Recall15Name = (Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() != "") Recall16Name = (Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() EndIf if ((Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() != "") _Recall_1_Name = (Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() != "") _Recall_2_Name = (Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() != "") _Recall_3_Name = (Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() != "") _Recall_4_Name = (Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() != "") _Recall_5_Name = (Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() != "") _Recall_6_Name = (Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() != "") _Recall_7_Name = (Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() != "") _Recall_8_Name = (Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() != "") _Recall_9_Name = (Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() != "") _Recall_10_Name = (Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() != "") _Recall_11_Name = (Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() != "") _Recall_12_Name = (Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() != "") _Recall_13_Name = (Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() != "") _Recall_14_Name = (Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() != "") _Recall_15_Name = (Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() != "") _Recall_16_Name = (Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() endif ;==================================== if (_Recall_1_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_1_Name", _Recall_1_Name) endif if (_Recall_2_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_2_Name", _Recall_2_Name) endif if (_Recall_3_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_3_Name", _Recall_3_Name) endif if (_Recall_4_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_4_Name", _Recall_4_Name) endif if (_Recall_5_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_5_Name", _Recall_5_Name) endif if (_Recall_6_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_6_Name", _Recall_6_Name) endif if (_Recall_7_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_7_Name", _Recall_7_Name) endif if (_Recall_8_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_8_Name", _Recall_8_Name) endif if (_Recall_9_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_9_Name", _Recall_9_Name) endif if (_Recall_10_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_10_Name", _Recall_10_Name) endif if (_Recall_11_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_11_Name", _Recall_11_Name) endif if (_Recall_12_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_12_Name", _Recall_12_Name) endif if (_Recall_13_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_13_Name", _Recall_13_Name) endif if (_Recall_14_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_14_Name", _Recall_14_Name) endif if (_Recall_15_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_15_Name", _Recall_15_Name) endif if (_Recall_16_Name != "") jsonutil.SetPathStringValue(settings_path, "Recall_16_Name", _Recall_16_Name) endif ;==================================== if !jsonutil.Save(settings_path, false) debug.Trace("MAR: Error saving user settings.", 0) return false endIf debug.notification("Сохранени меток завершено.") return true endFunction ;String function loadString(String name) Bool function LoadUserSettings() fissinterface fiss = fissfactory.getFISS() fiss.beginLoad("MARUserSettings.xml") if (fiss.loadString("Recall_1_Name") != "") _Recall_1_Name = fiss.loadString("Recall_1_Name") endif if (fiss.loadString("Recall_2_Name") != "") _Recall_2_Name = fiss.loadString("Recall_2_Name") endif if (fiss.loadString("Recall_3_Name") != "") _Recall_3_Name = fiss.loadString("Recall_3_Name") endif if (fiss.loadString("Recall_4_Name") != "") _Recall_4_Name = fiss.loadString("Recall_4_Name") endif if (fiss.loadString("Recall_5_Name") != "") _Recall_5_Name = fiss.loadString("Recall_5_Name") endif if (fiss.loadString("Recall_6_Name") != "") _Recall_6_Name = fiss.loadString("Recall_6_Name") endif if (fiss.loadString("Recall_7_Name") != "") _Recall_7_Name = fiss.loadString("Recall_7_Name") endif if (fiss.loadString("Recall_8_Name") != "") _Recall_8_Name = fiss.loadString("Recall_8_Name") endif if (fiss.loadString("Recall_9_Name") != "") _Recall_9_Name = fiss.loadString("Recall_9_Name") endif if (fiss.loadString("Recall_10_Name") != "") _Recall_10_Name = fiss.loadString("Recall_10_Name") endif if (fiss.loadString("Recall_11_Name") != "") _Recall_11_Name = fiss.loadString("Recall_11_Name") endif if (fiss.loadString("Recall_12_Name") != "") _Recall_12_Name = fiss.loadString("Recall_12_Name") endif if (fiss.loadString("Recall_13_Name") != "") _Recall_13_Name = fiss.loadString("Recall_13_Name") endif if (fiss.loadString("Recall_14_Name") != "") _Recall_14_Name = fiss.loadString("Recall_14_Name") endif if (fiss.loadString("Recall_15_Name") != "") _Recall_15_Name = fiss.loadString("Recall_15_Name") endif if (fiss.loadString("Recall_16_Name") != "") _Recall_16_Name = fiss.loadString("Recall_16_Name") endif ;==================================== if _Recall_1_Name != "" (Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).SetName(_Recall_1_Name) endif if _Recall_2_Name != "" (Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).SetName(_Recall_2_Name) endif if _Recall_3_Name != "" (Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).SetName(_Recall_3_Name) endif if _Recall_4_Name != "" (Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).SetName(_Recall_4_Name) endif if _Recall_5_Name != "" (Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).SetName(_Recall_5_Name) endif if _Recall_6_Name != "" (Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).SetName(_Recall_6_Name) endif if _Recall_7_Name != "" (Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).SetName(_Recall_7_Name) endif if _Recall_8_Name != "" (Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).SetName(_Recall_8_Name) endif if _Recall_9_Name != "" (Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).SetName(_Recall_9_Name) endif if _Recall_10_Name != "" (Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).SetName(_Recall_10_Name) endif if _Recall_11_Name != "" (Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).SetName(_Recall_11_Name) endif if _Recall_12_Name != "" (Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).SetName(_Recall_12_Name) endif if _Recall_13_Name != "" (Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).SetName(_Recall_13_Name) endif if _Recall_14_Name != "" (Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).SetName(_Recall_14_Name) endif if _Recall_15_Name != "" (Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).SetName(_Recall_15_Name) endif if _Recall_16_Name != "" (Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).SetName(_Recall_16_Name) endif ;==================================== String result = fiss.endLoad() if result != "" debug.Trace("MAR: Error loading user settings: " + result, 0) return false endIf return true endFunction Bool function SaveUserSettings() fissinterface fiss = fissfactory.getFISS() fiss.beginSave("MARUserSettings.xml", " Mark And Recall") if ((Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() != "") _Recall_1_Name = (Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() != "") _Recall_2_Name = (Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() != "") _Recall_3_Name = (Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() != "") _Recall_4_Name = (Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() != "") _Recall_5_Name = (Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() != "") _Recall_6_Name = (Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() != "") _Recall_7_Name = (Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() != "") _Recall_8_Name = (Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() != "") _Recall_9_Name = (Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() != "") _Recall_10_Name = (Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() != "") _Recall_11_Name = (Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() != "") _Recall_12_Name = (Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() != "") _Recall_13_Name = (Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() != "") _Recall_14_Name = (Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() != "") _Recall_15_Name = (Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() endif if ((Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() != "") _Recall_16_Name = (Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() endif ;==================================== if (_Recall_1_Name != "") fiss.saveString("Recall_1_Name", _Recall_1_Name) endif if _Recall_2_Name != "" fiss.saveString("Recall_2_Name", _Recall_2_Name) endif if (_Recall_3_Name != "") fiss.saveString("Recall_3_Name", _Recall_3_Name) endif if (_Recall_4_Name != "") fiss.saveString("Recall_4_Name", _Recall_4_Name) endif if (_Recall_5_Name != "") fiss.saveString("Recall_5_Name", _Recall_5_Name) endif if (_Recall_6_Name != "") fiss.saveString("Recall_6_Name", _Recall_6_Name) endif if (_Recall_7_Name != "") fiss.saveString("Recall_7_Name", _Recall_7_Name) endif if (_Recall_8_Name != "") fiss.saveString("Recall_8_Name", _Recall_8_Name) endif if (_Recall_9_Name != "") fiss.saveString("Recall_9_Name", _Recall_9_Name) endif if (_Recall_10_Name != "") fiss.saveString("Recall_10_Name", _Recall_10_Name) endif if (_Recall_11_Name != "") fiss.saveString("Recall_11_Name", _Recall_11_Name) endif if (_Recall_12_Name != "") fiss.saveString("Recall_12_Name", _Recall_12_Name) endif if (_Recall_13_Name != "") fiss.saveString("Recall_13_Name", _Recall_13_Name) endif if (_Recall_14_Name != "") fiss.saveString("Recall_14_Name", _Recall_14_Name) endif if (_Recall_15_Name != "") fiss.saveString("Recall_15_Name", _Recall_15_Name) endif if (_Recall_16_Name != "") fiss.saveString("Recall_16_Name", _Recall_16_Name) endif ;==================================== String result = fiss.endSave() if result != "" debug.Trace("MAR: Error saving user settings: " + result, 0) return false endIf return true endFunction ;======================================================================================= Второй скрипт полностью: MarkAndRecallScriptEffect scriptName MarkAndRecallScriptEffect extends activemagiceffect ;-- Properties -------------------------------------- Cell Property IgnoreCell Auto Bool Property IsDebugMode = false Auto ;Int Property Distance = 4000 Auto ObjectReference Property MarkerReturn Auto Hidden ;ObjectReference Property XRecall1 Auto Message Property MessageError Auto ObjectReference Property Recall1 Auto ObjectReference Property Recall2 Auto ObjectReference Property Recall3 Auto ObjectReference Property Recall4 Auto ObjectReference Property Recall5 Auto ObjectReference Property Recall6 Auto ObjectReference Property Recall7 Auto ObjectReference Property Recall8 Auto ObjectReference Property Recall9 Auto ObjectReference Property Recall10 Auto ObjectReference Property Recall11 Auto ObjectReference Property Recall12 Auto ObjectReference Property Recall13 Auto ObjectReference Property Recall14 Auto ObjectReference Property Recall15 Auto ObjectReference Property Recall16 Auto ;ObjectReference Property MarkAndRecall_Recall_Name_1_Ref Auto explosion property _MarkAndRecall_AlterationAlt_Explosion auto visualeffect property _MarkAndRecall_AlterationAlt_VFX_Collapse auto visualeffect property _MarkAndRecall_AlterationAlt_VFX_Teleport auto ;/ /; String Property Recall1Name Auto Hidden String Property Recall2Name Auto Hidden String Property Recall3Name Auto Hidden String Property Recall4Name Auto Hidden String Property Recall5Name Auto Hidden String Property Recall6Name Auto Hidden String Property Recall7Name Auto Hidden String Property Recall8Name Auto Hidden String Property Recall9Name Auto Hidden String Property Recall10Name Auto Hidden String Property Recall11Name Auto Hidden String Property Recall12Name Auto Hidden String Property Recall13Name Auto Hidden String Property Recall14Name Auto Hidden String Property Recall15Name Auto Hidden String Property Recall16Name Auto Hidden MarkAndRecallQuestScript property MarkAndRecallQuest auto Message Property _MarkAndRecallMenu Auto Message Property _MarkMenu Auto Message Property _RecallMenu Auto Message Property _MarkMenu_Next Auto Message Property _RecallMenu_Next Auto ;-- Variables --------------------------------------- String S_1 ;-- Functions --------------------------------------- Function InitNames() if Recall1Name == "" Recall1Name = "Пусто" endif if Recall2Name == "" Recall2Name = "Пусто" endif if Recall3Name == "" Recall3Name = "Пусто" endif if Recall4Name == "" Recall4Name = "Пусто" endif if Recall5Name == "" Recall5Name = "Пусто" endif if Recall6Name == "" Recall6Name = "Пусто" endif if Recall7Name == "" Recall7Name = "Пусто" endif if Recall8Name == "" Recall8Name = "Пусто" endif if Recall9Name == "" Recall9Name = "Пусто" endif if Recall10Name == "" Recall10Name = "Пусто" endif if Recall11Name == "" Recall11Name = "Пусто" endif if Recall12Name == "" Recall12Name = "Пусто" endif if Recall13Name == "" Recall13Name = "Пусто" endif if Recall14Name == "" Recall14Name = "Пусто" endif if Recall15Name == "" Recall15Name = "Пусто" endif if Recall16Name == "" Recall16Name = "Пусто" endif EndFunction Function Mark() If (MarkerReturn) MarkerReturn.MoveTo(game.GetPlayer() as objectreference, 0.000000, 0.000000, 0.000000, true) MarkerReturn.SetAngle(0.0,0.0,(Game.GetPlayer() as objectreference).GetAngleZ()) if ((MarkerReturn.GetParentCell().GetName() == "") && (MarkerReturn.GetCurrentLocation().GetName() != "")) debug.notification("Локация: " + MarkerReturn.GetCurrentLocation().GetName() + " помечена") Elseif (MarkerReturn.GetParentCell().GetName() != "") debug.notification("Локация: " + MarkerReturn.GetParentCell().GetName() + " помечена.") ElseIf ((MarkerReturn.GetCurrentLocation().GetName() == "") && (MarkerReturn.GetParentCell().GetName() == "")) Int xcell = math.floor(game.getplayer().getpositionX() / 4096 as Float) Int ycell = math.floor(game.getplayer().getpositionY() / 4096 as Float) Int zcell = math.floor(game.getplayer().getpositionZ()) debug.notification("Локация: " + "Тамриэль " + xcell as String + " , " + ycell as String + " помечена"); Скайрим Endif Else debug.notification("Function Mark: MarkerReturn does not exist") EndIf EndFunction Function Recall() If (MarkerReturn) If MarkerReturn.GetParentCell() == IgnoreCell debug.Notification("Сначала вы должны отметить местоположение.") Else If (MarkerReturn.GetParentCell() != Game.GetPlayer().GetParentCell()) Game.ForceFirstPerson() Game.DisablePlayerControls(true, true, true, true, true, true, true) Utility.Wait(1) If (MarkerReturn) Game.GetPlayer().MoveTo(MarkerReturn) Game.EnableFastTravel() Game.FastTravel(MarkerReturn) EndIf Game.EnablePlayerControls() Utility.Wait(0.5) _MarkAndRecall_AlterationAlt_VFX_Teleport.Play(Game.GetPlayer() as ObjectReference, 3.50000, none) _MarkAndRecall_AlterationAlt_VFX_Collapse.Play(Game.GetPlayer() as ObjectReference, 3.50000, none) Game.GetPlayer().PlaceAtMe(_MarkAndRecall_AlterationAlt_Explosion as form, 1, false, false) ElseIf ((MarkerReturn.GetParentCell() == Game.GetPlayer().GetParentCell()) && (MarkAndRecallQuest.IsMarkerNearPlayer(MarkerReturn) == true)) ; Calculates the ceiling of the passed in value - the smallest integer greater than or equal to the value ;int Function Ceiling(float afValue) global native debug.MessageBox("Вы уже в этой локации. Дистанция до маркера: " + "\n" + math.Ceiling((Game.GetPlayer() as Actor).GetDistance(MarkerReturn)) + ". \n" + " Для телепортации вы должны быть от маркерана на растоянии свыше " + (MarkAndRecallQuest.Distance as String)) ElseIf ((MarkerReturn.GetParentCell() == Game.GetPlayer().GetParentCell()) && (MarkAndRecallQuest.IsMarkerNearPlayer(MarkerReturn) == false)) debug.notification("Дистанция до Маркера: " + "\t" + math.Ceiling((Game.GetPlayer() as Actor).GetDistance(MarkerReturn))) Game.ForceFirstPerson() Game.DisablePlayerControls(true, true, true, true, true, true, true) Utility.Wait(1) If (MarkerReturn) Game.GetPlayer().MoveTo(MarkerReturn) Game.EnableFastTravel() Game.FastTravel(MarkerReturn) EndIf Game.EnablePlayerControls() Utility.Wait(0.5) _MarkAndRecall_AlterationAlt_VFX_Teleport.Play(Game.GetPlayer() as ObjectReference, 3.50000, none) _MarkAndRecall_AlterationAlt_VFX_Collapse.Play(Game.GetPlayer() as ObjectReference, 3.50000, none) Game.GetPlayer().PlaceAtMe(_MarkAndRecall_AlterationAlt_Explosion as form, 1, false, false) ; MessageError.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) EndIf EndIf Else debug.notification("Function Recall: MarkerReturn does not exist") EndIf EndFunction Event OnEffectStart(Actor akTarget, Actor akCaster) ; debug.notification("GetFormID = " + MarkAndRecall_Recall_Name_1_Ref.GetFormID() as String) ; debug.notification("GetFormID: " + "MarkAndRecall_Recall_Name_1_Ref " + (Game.GetFormEx(MarkAndRecall_Recall_Name_1_Ref.GetFormID()).GetName()) as String) Quest MARQuest = ((Game.GetFormFromFile(0x5E79, "MarkAndRecall.esp")) as Quest) if !MARQuest.IsRunning() MARQuest.Start() debug.notification("Quest: " + MARQuest.GetName() + " Запускается.") endIf if MARQuest.IsRunning() MarkAndRecallQuest.LoadSettingsAtStart() ; debug.notification("Quest: " + MARQuest.GetName() + " Запущен.") endIf InitNames() ;======================================================================================= If ((Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() != "") Recall1Name = (Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).GetName() debug.notification("Recall1Name = " + Recall1Name) EndIf If ((Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() != "") Recall2Name = (Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() != "") Recall3Name = (Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() != "") Recall4Name = (Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() != "") Recall5Name = (Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() != "") Recall6Name = (Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() != "") Recall7Name = (Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() != "") Recall8Name = (Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() != "") Recall9Name = (Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() != "") Recall10Name = (Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() != "") Recall11Name = (Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() != "") Recall12Name = (Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() != "") Recall13Name = (Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() != "") Recall14Name = (Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() != "") Recall15Name = (Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).GetName() EndIf If ((Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() != "") Recall16Name = (Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).GetName() EndIf ;======================================================================================= ; Return Int i = _MarkAndRecallMenu.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) if i == 1 debug.MessageBox("Меню Возврата " + "\n\n" + "В 1 - " + Recall1Name as String + "\n" + "В 2 - " + Recall2Name as String + "\n" + "В 3 - " + Recall3Name as String + "\n" + "В 4 - " + Recall4Name as String + "\n" + "В 5 - " + Recall5Name as String + "\n" + "В 6 - " + Recall6Name as String + "\n" + "В 7 - " + Recall7Name as String + "\n" + "В 8 - " + Recall8Name as String) Int r = _RecallMenu.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) if r == 0 MarkerReturn=Recall1 Recall() elseIf r == 1 MarkerReturn=Recall2 Recall() elseIf r == 2 MarkerReturn=Recall3 Recall() elseIf r == 3 MarkerReturn=Recall4 Recall() elseIf r == 4 MarkerReturn=Recall5 Recall() elseIf r == 5 MarkerReturn=Recall6 Recall() elseIf r == 6 MarkerReturn=Recall7 Recall() elseIf r == 7 MarkerReturn=Recall8 Recall() elseIf r == 8 debug.MessageBox("Меню Возврата 2 " + "\n\n" + "В 9 - " + Recall9Name as String + "\n" + "В 10 - " + Recall10Name as String + "\n" + "В 11 - " + Recall11Name as String + "\n" + "В 12 - " + Recall12Name as String + "\n" + "В 13 - " + Recall13Name as String + "\n" + "В 14 - " + Recall14Name as String + "\n" + "В 15 - " + Recall15Name as String + "\n" + "В 16 - " + Recall16Name as String) Int r2 = _RecallMenu_Next.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) if r2 == 0 MarkerReturn=Recall9 Recall() elseIf r2 == 1 MarkerReturn=Recall10 Recall() elseIf r2 == 2 MarkerReturn=Recall11 Recall() elseIf r2 == 3 MarkerReturn=Recall12 Recall() elseIf r2 == 4 MarkerReturn=Recall13 Recall() elseIf r2 == 5 MarkerReturn=Recall14 Recall() elseIf r2 == 6 MarkerReturn=Recall15 Recall() elseIf r2 == 7 MarkerReturn=Recall16 Recall() elseIf r2 == 8 debug.MessageBox("Меню Возврата " + "\n\n" + "В 1 - " + Recall1Name as String + "\n" + "В 2 - " + Recall2Name as String + "\n" + "В 3 - " + Recall3Name as String + "\n" + "В 4 - " + Recall4Name as String + "\n" + "В 5 - " + Recall5Name as String + "\n" + "В 6 - " + Recall6Name as String + "\n" + "В 7 - " + Recall7Name as String + "\n" + "В 8 - " + Recall8Name as String) r = _RecallMenu.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); Back elseIf r2 == 9 ; Cancel endIf elseIf r == 9 ; Cancel endIf elseIf i == 0 debug.MessageBox("Меню Пометки " + "\n\n" + "П 1 - " + Recall1Name as String + "\n" + "П 2 - " + Recall2Name as String + "\n" + "П 3 - " + Recall3Name as String + "\n" + "П 4 - " + Recall4Name as String + "\n" + "П 5 - " + Recall5Name as String + "\n" + "П 6 - " + Recall6Name as String + "\n" + "П 7 - " + Recall7Name as String + "\n" + "П 8 - " + Recall8Name as String) Int m = _MarkMenu.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) if m == 0 MarkerReturn=Recall1 Mark() ; Recall1Displayed() elseIf m == 1 MarkerReturn=Recall2 Mark() elseIf m == 2 MarkerReturn=Recall3 Mark() elseIf m == 3 MarkerReturn=Recall4 Mark() elseIf m == 4 MarkerReturn=Recall5 Mark() elseIf m == 5 MarkerReturn=Recall6 Mark() elseIf m == 6 MarkerReturn=Recall7 Mark() elseIf m == 7 MarkerReturn=Recall8 Mark() elseIf m == 8 debug.MessageBox("Меню Пометки 2 " + "\n\n" + "П 9 - " + Recall9Name as String + "\n" + "П 10 - " + Recall10Name as String + "\n" + "П 11 - " + Recall11Name as String + "\n" + "П 12 - " + Recall12Name as String + "\n" + "П 13 - " + Recall13Name as String + "\n" + "П 14 - " + Recall14Name as String + "\n" + "П 15 - " + Recall15Name as String + "\n" + "П 16 - " + Recall16Name as String) Int m2 = _MarkMenu_Next.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) if m2 == 0 MarkerReturn=Recall9 Mark() elseIf m2 == 1 MarkerReturn=Recall10 Mark() elseIf m2 == 2 MarkerReturn=Recall11 Mark() elseIf m2 == 3 MarkerReturn=Recall12 Mark() elseIf m2 == 4 MarkerReturn=Recall13 Mark() elseIf m2 == 5 MarkerReturn=Recall14 Mark() elseIf m2 == 6 MarkerReturn=Recall15 Mark() elseIf m2 == 7 MarkerReturn=Recall16 Mark() elseIf m2 == 8 debug.MessageBox("Меню Пометки " + "\n\n" + "П 1 - " + Recall1Name as String + "\n" + "П 2 - " + Recall2Name as String + "\n" + "П 3 - " + Recall3Name as String + "\n" + "П 4 - " + Recall4Name as String + "\n" + "П 5 - " + Recall5Name as String + "\n" + "П 6 - " + Recall6Name as String + "\n" + "П 7 - " + Recall7Name as String + "\n" + "П 8 - " + Recall8Name as String) m = _MarkMenu.Show(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); Back elseIf m2 == 9 ; Cancel endIf elseIf m == 9 ; Cancel endIf elseIf i == 2 ; Cancel endIf ;======================================================================================= debug.notification("Инициализация имен...") if (Recall1.GetParentCell().IsInterior() == 0) S_1 = Recall1.GetCurrentLocation().GetName() ElseIf (Recall1.GetParentCell().IsInterior() == 1) S_1 = Recall1.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall1, S_1, Recall1Name) == false) Recall1Name = MarkAndRecallQuest.GetCellName(Recall1, S_1, Recall1Name) if Recall1Name == "Mark And Recall Markers Cell" Recall1Name = "Пусто" endif (Game.GetFormFromFile(0x12484, "MarkAndRecall.esp")).SetName(Recall1Name) Else EndIf if (Recall2.GetParentCell().IsInterior() == 0) S_1 = Recall2.GetCurrentLocation().GetName() ElseIf (Recall2.GetParentCell().IsInterior() == 1) S_1 = Recall2.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall2, S_1, Recall2Name) == false) Recall2Name = MarkAndRecallQuest.GetCellName(Recall2, S_1, Recall2Name) if Recall2Name == "Mark And Recall Markers Cell" Recall2Name = "Пусто" endif (Game.GetFormFromFile(0x12485, "MarkAndRecall.esp")).SetName(Recall2Name) Else EndIf if (Recall3.GetParentCell().IsInterior() == 0) S_1 = Recall3.GetCurrentLocation().GetName() ElseIf (Recall3.GetParentCell().IsInterior() == 1) S_1 = Recall3.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall3, S_1, Recall3Name) == false) Recall3Name = MarkAndRecallQuest.GetCellName(Recall3, S_1, Recall3Name) if Recall3Name == "Mark And Recall Markers Cell" Recall3Name = "Пусто" endif (Game.GetFormFromFile(0x12486, "MarkAndRecall.esp")).SetName(Recall3Name) Else EndIf if (Recall4.GetParentCell().IsInterior() == 0) S_1 = Recall4.GetCurrentLocation().GetName() ElseIf (Recall4.GetParentCell().IsInterior() == 1) S_1 = Recall4.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall4, S_1, Recall4Name) == false) Recall4Name = MarkAndRecallQuest.GetCellName(Recall4, S_1, Recall4Name) if Recall4Name == "Mark And Recall Markers Cell" Recall4Name = "Пусто" endif (Game.GetFormFromFile(0x12487, "MarkAndRecall.esp")).SetName(Recall4Name) Else EndIf if (Recall5.GetParentCell().IsInterior() == 0) S_1 = Recall5.GetCurrentLocation().GetName() ElseIf (Recall5.GetParentCell().IsInterior() == 1) S_1 = Recall5.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall5, S_1, Recall5Name) == false) Recall5Name = MarkAndRecallQuest.GetCellName(Recall5, S_1, Recall5Name) if Recall5Name == "Mark And Recall Markers Cell" Recall5Name = "Пусто" endif (Game.GetFormFromFile(0x12488, "MarkAndRecall.esp")).SetName(Recall5Name) Else EndIf if (Recall6.GetParentCell().IsInterior() == 0) S_1 = Recall6.GetCurrentLocation().GetName() ElseIf (Recall6.GetParentCell().IsInterior() == 1) S_1 = Recall6.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall6, S_1, Recall6Name) == false) Recall6Name = MarkAndRecallQuest.GetCellName(Recall6, S_1, Recall6Name) if Recall6Name == "Mark And Recall Markers Cell" Recall6Name = "Пусто" endif (Game.GetFormFromFile(0x12489, "MarkAndRecall.esp")).SetName(Recall6Name) Else EndIf if (Recall7.GetParentCell().IsInterior() == 0) S_1 = Recall7.GetCurrentLocation().GetName() ElseIf (Recall7.GetParentCell().IsInterior() == 1) S_1 = Recall7.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall7, S_1, Recall7Name) == false) Recall7Name = MarkAndRecallQuest.GetCellName(Recall7, S_1, Recall7Name) if Recall7Name == "Mark And Recall Markers Cell" Recall7Name = "Пусто" endif (Game.GetFormFromFile(0x1248A, "MarkAndRecall.esp")).SetName(Recall7Name) Else EndIf if (Recall8.GetParentCell().IsInterior() == 0) S_1 = Recall8.GetCurrentLocation().GetName() ElseIf (Recall8.GetParentCell().IsInterior() == 1) S_1 = Recall8.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall8, S_1, Recall8Name) == false) Recall8Name = MarkAndRecallQuest.GetCellName(Recall8, S_1, Recall8Name) if Recall8Name == "Mark And Recall Markers Cell" Recall8Name = "Пусто" endif (Game.GetFormFromFile(0x1248B, "MarkAndRecall.esp")).SetName(Recall8Name) Else EndIf if (Recall9.GetParentCell().IsInterior() == 0) S_1 = Recall9.GetCurrentLocation().GetName() ElseIf (Recall9.GetParentCell().IsInterior() == 1) S_1 = Recall9.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall9, S_1, Recall9Name) == false) Recall9Name = MarkAndRecallQuest.GetCellName(Recall9, S_1, Recall9Name) if Recall9Name == "Mark And Recall Markers Cell" Recall9Name = "Пусто" endif (Game.GetFormFromFile(0x1248C, "MarkAndRecall.esp")).SetName(Recall9Name) Else EndIf if (Recall10.GetParentCell().IsInterior() == 0) S_1 = Recall10.GetCurrentLocation().GetName() ElseIf (Recall10.GetParentCell().IsInterior() == 1) S_1 = Recall10.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall10, S_1, Recall10Name) == false) Recall10Name = MarkAndRecallQuest.GetCellName(Recall10, S_1, Recall10Name) if Recall10Name == "Mark And Recall Markers Cell" Recall10Name = "Пусто" endif (Game.GetFormFromFile(0x1248D, "MarkAndRecall.esp")).SetName(Recall10Name) Else EndIf if (Recall11.GetParentCell().IsInterior() == 0) S_1 = Recall11.GetCurrentLocation().GetName() ElseIf (Recall11.GetParentCell().IsInterior() == 1) S_1 = Recall11.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall11, S_1, Recall11Name) == false) Recall11Name = MarkAndRecallQuest.GetCellName(Recall11, S_1, Recall11Name) if Recall11Name == "Mark And Recall Markers Cell" Recall11Name = "Пусто" endif (Game.GetFormFromFile(0x1248E, "MarkAndRecall.esp")).SetName(Recall11Name) Else EndIf if (Recall12.GetParentCell().IsInterior() == 0) S_1 = Recall12.GetCurrentLocation().GetName() ElseIf (Recall12.GetParentCell().IsInterior() == 1) S_1 = Recall12.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall12, S_1, Recall12Name) == false) Recall12Name = MarkAndRecallQuest.GetCellName(Recall12, S_1, Recall12Name) if Recall12Name == "Mark And Recall Markers Cell" Recall12Name = "Пусто" endif (Game.GetFormFromFile(0x1248F, "MarkAndRecall.esp")).SetName(Recall12Name) Else EndIf if (Recall13.GetParentCell().IsInterior() == 0) S_1 = Recall13.GetCurrentLocation().GetName() ElseIf (Recall13.GetParentCell().IsInterior() == 1) S_1 = Recall13.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall13, S_1, Recall13Name) == false) Recall13Name = MarkAndRecallQuest.GetCellName(Recall13, S_1, Recall13Name) if Recall13Name == "Mark And Recall Markers Cell" Recall13Name = "Пусто" endif (Game.GetFormFromFile(0x12490, "MarkAndRecall.esp")).SetName(Recall13Name) Else EndIf if (Recall14.GetParentCell().IsInterior() == 0) S_1 = Recall14.GetCurrentLocation().GetName() ElseIf (Recall14.GetParentCell().IsInterior() == 1) S_1 = Recall14.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall14, S_1, Recall14Name) == false) Recall14Name = MarkAndRecallQuest.GetCellName(Recall14, S_1, Recall14Name) if Recall14Name == "Mark And Recall Markers Cell" Recall14Name = "Пусто" endif (Game.GetFormFromFile(0x12491, "MarkAndRecall.esp")).SetName(Recall14Name) Else EndIf if (Recall15.GetParentCell().IsInterior() == 0) S_1 = Recall15.GetCurrentLocation().GetName() ElseIf (Recall15.GetParentCell().IsInterior() == 1) S_1 = Recall15.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall15, S_1, Recall15Name) == false) Recall15Name = MarkAndRecallQuest.GetCellName(Recall15, S_1, Recall15Name) if Recall15Name == "Mark And Recall Markers Cell" Recall15Name = "Пусто" endif (Game.GetFormFromFile(0x12492, "MarkAndRecall.esp")).SetName(Recall15Name) Else EndIf if (Recall16.GetParentCell().IsInterior() == 0) S_1 = Recall16.GetCurrentLocation().GetName() ElseIf (Recall16.GetParentCell().IsInterior() == 1) S_1 = Recall16.GetParentCell().GetName() EndIf If (MarkAndRecallQuest.GetCellNameIdentical(Recall16, S_1, Recall16Name) == false) Recall16Name = MarkAndRecallQuest.GetCellName(Recall16, S_1, Recall16Name) if Recall16Name == "Mark And Recall Markers Cell" Recall16Name = "Пусто" endif (Game.GetFormFromFile(0x12493, "MarkAndRecall.esp")).SetName(Recall16Name) Else EndIf debug.notification("Инициализация имен завершена.") Utility.Wait(0.5) debug.notification("Сохранени меток.") MarkAndRecallQuest.SaveUserSettingsPapyrus() MarkAndRecallQuest.SaveUserSettings() EndEvent Event OnEffectFinish(Actor akTarget, Actor akCaster) EndEvent Изменено 18 октября, 2021 пользователем aaa112aaa
aaa112aaa Опубликовано 18 октября, 2021 Опубликовано 18 октября, 2021 (изменено) С сохранением и загрузкой разобрался, всё работает. Теперь другой вопрос, он в посте выше, пост я отредактировал под новый вопрос. И текст скриптов скопировал сюда новый. Изменено 18 октября, 2021 пользователем aaa112aaa
Azazellz Опубликовано 18 октября, 2021 Опубликовано 18 октября, 2021 17.10.2021 11:52:11, aaa112aaa сказал(-а):Возможно ли оптимизировать время выполнения этой функции? Я так думаю, что дело не в самой функции, а в том, что ты вызываешь ее по 16 (?) раз. Не проще ли при установке метки делать это один раз, писать результат в проперти типа стринг, и потом уже оттуда его в меню подтягивать? Ну или вообще без проперти обойтись, тупо переменной. Квестовые скрипты активны постоянно, поэтому оно все равно никуда не пропадет.
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти