Перейти к содержанию

Рекомендуемые сообщения

Опубликовано
05.07.2021 15:04:42, angel-deff сказал(-а):
Это тот самый скрипт который делает игрока невидимым в скайриме

Этот скрипт сам по себе почти ничего не делает.

Он только кастует какие-то заклинания и вызывает функции из квестовых скриптов.

Весь основной функционал лежит в другом месте.

 

Как я понимаю, на Солстейме это все не работает, потому что автор забыл вставить в функционал соответствующую фракцию, которая за преступления на Солстейме отвечает.

Ну или просто когда мод разрабатывался, Солстейма еще не было, а потом автор поленился это все обновлять.

 

А это значит, что функционал там посложнее, чем всего одна команда.

Опубликовано
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
Опубликовано
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

Опубликовано
06.07.2021 03:46:45, angel-deff сказал(-а):

добавив под каждый столбец это-DLC2CrimeRavenRock

Ну, можешь протестировать. С первого взгляда вроде все норм.

Но я детально эту портянку не разбирал, так что всякое может быть =)

Возможно, еще надо будет Property в .esp-файле назначить.

 

Новая игра только потребуется, скорее всего.

Или полное удаление мода, и создание "чистого сейва".

Квестовые скрипты в сейвы пишутся.

 

И неужели нет уже готового патча на нексусе?

Трудно поверить.

Опубликовано
06.07.2021 12:51:35, Azazellz сказал(-а):

Ну, можешь протестировать. С первого взгляда вроде все норм.

Но я детально эту портянку не разбирал, так что всякое может быть =)

Возможно, еще надо будет Property в .esp-файле назначить.

 

Новая игра только потребуется, скорее всего.

Или полное удаление мода, и создание "чистого сейва".

Квестовые скрипты в сейвы пишутся.

 

И неужели нет уже готового патча на нексусе?

Трудно поверить.

Уже протестил. Без новой игры правда, короче не пашет так. С новой игрой проверю позже. И да, патча нет ибо нынешний автор злюка а прежней забыл добавить скалу как признался.

И я ароде написал скрипт функцию

Scriptname Crime_gold   
Function SetPlayerReportCrime(bool abReportCrime = true)
Game.SetPlayerReportCrime(false)

EndFunction

он даже скомпелировался, теперь думаю как его нацепить на шлем шоб работал

Опубликовано
06.07.2021 12:51:35, Azazellz сказал(-а):

.

 

И неужели нет уже готового патча на нексусе?

Трудно поверить.

У мода есть версия для SE но там уже все длс вшиты. Я скачал на легендарку и эффект тот же. В скале 0 эффекта. И никто не хочет делать патчи и подгонять под легенду мод

Опубликовано
06.07.2021 13:12:20, angel-deff сказал(-а):
И я ароде написал скрипт функцию

Одной функции мало. Скрипты так не работают.

 

Во-первых, им нужен объект, с которого они будут срабатывать. Скрипт для квеста не будет работать для персонажа.

В заголовке скрипта это должно быть, у тебя этого нет.

 

Во-вторых, скриптам нужно событие, с которого они будут запускаться. Event. У тебя этого тоже нет.

Сам код функции вне эвентов записан (или даже в другом скрипте), но функция все равно будет вызываться только в каком-то эвенте. Без эвента это все бесполезно.

 

Я ж говорил - изучай туториалы, Там все это объясняется.

 

Применительно к скрипту выше - сам видишь, там только функции, без эвентов.

Но теперь вспомни первый скрипт, со шлема (с магического эффекта на шлеме). Вот там как раз эвенты есть, и они ко всем этим функциям и обращаются.

Опубликовано (изменено)
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 дней=)

Изменено пользователем angel-deff
Опубликовано
06.07.2021 14:59:35, angel-deff сказал(-а):
надеюсь, я правельно всё сделал?

Нет.

 

06.07.2021 14:59:35, angel-deff сказал(-а):
Или хоть чуток ближе к правельному?

Чуток ближе, да.

Но все равно - ерунда ерундой.

 

Изучай туториалы, в последний раз повторяю.

Если бы ты потратил 2-3 часа на изучение - уже бы все сделал.

  • 2 месяца спустя...
Опубликовано

Всем привет, помогите пожалуйста с простым скриптом, уже часов 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
Опубликовано
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 и проверяй его с НПСа, а не с предмета.

Опубликовано
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 не компилится скрипт. Дело в том, что очень много брони попадает через лвл листы почти всем нпц и делать мужскую версию брони я не буду. И чтобы не было модников-мужск. нпц с бархатным бельем например мне проще на многие предметы повесить скрипт. Вешать его на всех нпц просто не вариант. Не могу понять неужели нельзя никак обратиться в скрипте к его источнику, на который его поцепили? 

Опубликовано
12.09.2021 21:55:37, ScottMontgomery сказал(-а):
а должен REF брони

Так броня то удаляется, или нет? Мессаджбокс тебе зачем?

 

12.09.2021 21:55:37, ScottMontgomery сказал(-а):
Не могу понять неужели нельзя никак обратиться в скрипте к его источнику, на который его поцепили? 

Вообще, self для этого и нужен. Но как он точно работает я уже и не помню. Использовал пару раз всего, вроде бы как раз как в примере выше описал, через двойной "as".

Опубликовано
13.09.2021 07:28:29, Azazellz сказал(-а):

Так броня то удаляется, или нет? Мессаджбокс тебе зачем?

 

Вообще, self для этого и нужен. Но как он точно работает я уже и не помню. Использовал пару раз всего, вроде бы как раз как в примере выше описал, через двойной "as".

Мессаджбокс для фидбека, чтобы убедиться в правильности переменной. Ничего не удаляется, там или None, или пусто, или [AaaScriptName <Item 1 in container (00000014)>] (если обратиться напрямую к self он даст такой же результат). Сдается мне это все потому, что у объекта нет REF тк он лежит в инвентаре и нужно это как-то реализовывать через пустой квест или типо того.

  • 2 недели спустя...
Опубликовано

Добрый день.

Хочу сделать скрипт в котором при активации кнопки исчезала/появлялась определенная стена, однако не просто disable/enable, а чтобы была анимация исчезновения/появления. например через "effectshader property"

Знающие скриптеры подскажите как можно такое реализовать? Нечто похожее с исчезновением есть в Апокрифе у расширяющихся коридоров.

Опубликовано
25.09.2021 21:24:37, ломгом сказал(-а):

Добрый день.

Хочу сделать скрипт в котором при активации кнопки исчезала/появлялась определенная стена, однако не просто disable/enable, а чтобы была анимация исчезновения/появления. например через "effectshader property"

Знающие скриптеры подскажите как можно такое реализовать? Нечто похожее с исчезновением есть в Апокрифе у расширяющихся коридоров.

Ну так если есть коридоры - посмотри, как они устроены. Я в детали не лазил, но скорее всего там в самой стене это закодировано, через анимацию. Скриптом она только вызывается.

 

Самый простой способ добавить эффект - скастовать какой-нибудь визуальный explosion на нужный объект. Через PlaceAtMe, или как там этот аналог в папирусе прописан.

Опубликовано (изменено)

Добрый день. Я снова по своему скрипту, теперь по детальней.

 

У меня есть активатор на основе сокета под парагон (на него я и вешаю скрипт) и кристалл который в него вставляется и активирует его. Так же есть стена, которая должна исчезнуть при активации сокета.

 

Вот мой код, который я сумел реализовать.

 

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.09.2021 12:52:06, ломгом сказал(-а):

Собственно мой вопрос, что и где мне добавить чтобы на стену применялись эффекты исчезновения или появления подскажите плиз.

Я плохо разбираюсь в папирусе, поэтому не знаю переменных которые надо вписать

Ну, собственно, команда вот:

https://www.creationkit.com/index.php?title=Play_-_EffectShader

Подставляешь свою стену и эффект туда. Вписываешь в скрипт перед Disable (и после enable).

Возможно, потребуется использовать utility.wait после каста эффекта, чтоб дверь не сразу исчезла, а немного постояла.

Опубликовано (изменено)
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.09.2021 14:30:57, ломгом сказал(-а):

Эффекты не проигрываются

Может что то неправильно вписал, но компиляцию скрипт прошел

Скорее в эффектах дело. Возможно, не все из них можно применять к статичным объектам.

Поэкспериментируй с разными эффектами.

Потому что если ты указываешь в проперти совершенно конкретную стену из окна рендера, то я не вижу, где тут еще может быть что-то не так.

Опубликовано
26.09.2021 15:45:37, Azazellz сказал(-а):

Скорее в эффектах дело. Возможно, не все из них можно применять к статичным объектам.

Поэкспериментируй с разными эффектами.

Потому что если ты указываешь в проперти совершенно конкретную стену из окна рендера, то я не вижу, где тут еще может быть что-то не так.

Накостылил в общем через активацию кнопок а с них уже эффекты. Немного непонятно почему но заработало. Если кто-нибудь знает как все реализовать через мою заготовку буду признателен подсказке.

  • 3 недели спустя...
Опубликовано (изменено)
помогите с скриптом как сделать чтоб при убийстве нпс его труп автоматически исчез и удалился ну те которые сам создал и второе какой скрипт нужен для того чтоб игрок при смерти оживилься чтоб только в внутри маркера сработал Изменено пользователем Dragon055
Опубликовано (изменено)

Обновлено! 

Кто шарит в скриптописании?
С этим уже разобрался: 

(а именно как с помощью 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

Изменено пользователем aaa112aaa
Опубликовано (изменено)

С сохранением и загрузкой разобрался, всё работает. Теперь другой вопрос, он в посте выше, пост я отредактировал под новый вопрос. И текст скриптов скопировал сюда новый.

Изменено пользователем aaa112aaa
Опубликовано
17.10.2021 11:52:11, aaa112aaa сказал(-а):
Возможно ли оптимизировать время выполнения этой функции?

 

Я так думаю, что дело не в самой функции, а в том, что ты вызываешь ее по 16 (?) раз.

Не проще ли при установке метки делать это один раз, писать результат в проперти типа стринг, и потом уже оттуда его в меню подтягивать?

Ну или вообще без проперти обойтись, тупо переменной. Квестовые скрипты активны постоянно, поэтому оно все равно никуда не пропадет.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...