Enhanced Economy - script errors in MessageLogger

Post » Mon Aug 31, 2015 3:55 pm

I've been messing around with http://www.nexusmods.com/oblivion/mods/45870/, bit of info on it:
There've been some errors which it has logged that I've been able to fix myself but there's this one for Enhanced Economy which has me stumped. Mainly because I'm a complete novice at scripting.

Error:
Unknown reference object for function 'SetBarterGold'. Execution of script 'EEresetBarterGold' stopped.


The EEresetBarterGold script:
Spoiler

ScriptName EEresetBarterGoldref merchantBegin Function {}	AlvesUvenimRef.SetBarterGold 800 	AngalmoRef.SetBarterGold 800 	ArdalineRef.SetBarterGold 800 	ClaudettePerrickRef.SetBarterGold 1200 	EilonwyRef.SetBarterGold 800 	EngormRef.SetBarterGold 5 	FalanuHlaaluRef.SetBarterGold 800 	FelenRelasRef.SetBarterGold 600 	JulienneFanisRef.SetBarterGold 15 	OgierGeorickRef.SetBarterGold 800 	SdrassaRef.SetBarterGold 10 	SelenaOraniaRef.SetBarterGold 800 	SigridRef.SetBarterGold 200 	SinderionRef.SetBarterGold 400 	DiramSerethiRef.SetBarterGold 200 	ErnestManisRef.SetBarterGold 50 	MargarteRef.SetBarterGold 5 	BugakgroBolRef.SetBarterGold 1000 	EstelleRenoitRef.SetBarterGold 600 	MachNaRef.SetBarterGold 1200 	PhintiasRef.SetBarterGold 1200 	PaloniryaRef.SetBarterGold 1200 	SkjortaRef.SetBarterGold 1000 	AymarDouarRef.SetBarterGold 5 	CalindilRef.SetBarterGold 1000 	DelmarRef.SetBarterGold 1200 	EdgarVautrineRef.SetBarterGold 800 	UngarionRef.SetBarterGold 800 	DarJeeRef.SetBarterGold 800 	FathisUlesRef.SetBarterGold 1500 	LucianaGalenaRef.SetBarterGold 1000 	OngartheWorldWearyRef.SetBarterGold 600 	OrrinRef.SetBarterGold 1200 	JensineRef.SetBarterGold 600 	AgnetethePickledRef.SetBarterGold 1200 	BatulgraSharobRef.SetBarterGold 200 	DaenlinRef.SetBarterGold 1000 	EnilrothRef.SetBarterGold 600 	FjotreidRef.SetBarterGold 800 	MaroRufusRef.SetBarterGold 800 	OlfandRef.SetBarterGold 1000 	RashedaRef.SetBarterGold 1200 	RohssanRef.SetBarterGold 1200 	SabineLaulRef.SetBarterGold 600 	TertiaViduciaRef.SetBarterGold 1000 	TunZeeusRef.SetBarterGold 800 	UrbulgroOrkulgRef.SetBarterGold 800 	VarelMorvaynRef.SetBarterGold 1200 	VarnadoRef.SetBarterGold 1000 	ViatorAcciusRef.SetBarterGold 1000 	BorbagraUzgashRef.SetBarterGold 1000 	ElsyniaRef.SetBarterGold 1000 	EtiraMoslinRef.SetBarterGold 200 	GundalasRef.SetBarterGold 1000 	GunderRef.SetBarterGold 800 	MaenlornRef.SetBarterGold 600 	NilawenRef.SetBarterGold 800 	NorbertLellesRef.SetBarterGold 800 	NordinorRef.SetBarterGold 400 	RindirRef.SetBarterGold 600 	SergiusVerusRef.SetBarterGold 1000 	ShadySamRef.SetBarterGold 400 	SuurootanRef.SetBarterGold 600 	TertullianVerusRef.SetBarterGold 1000 	ThoronirRef.SetBarterGold 800 	SeedNeeusRef.SetBarterGold 800 	AbhukiRef.SetBarterGold 50 	AndreasDraconisRef.SetBarterGold 50 	AugustaCalidiaRef.SetBarterGold 50 	BogrumGroGalashRef.SetBarterGold 50 	ChristopheMaraneRef.SetBarterGold 50 	DavelaHlarenRef.SetBarterGold 50 	DelosFandasRef.SetBarterGold 50 	DerveraRomalenRef.SetBarterGold 50 	EmfridRef.SetBarterGold 50 	ErinaJeranusRef.SetBarterGold 50 	ForochRef.SetBarterGold 50 	GilgondorinRef.SetBarterGold 50 	HafidHollowlegRef.SetBarterGold 50 	KirstenRef.SetBarterGold 50 	LeyMarillinRef.SetBarterGold 50 	LutherBroadRef.SetBarterGold 50 	MaleneRef.SetBarterGold 50 	ManheimMaulhandRef.SetBarterGold 50 	MarianaAnchariaRef.SetBarterGold 50 	MoggraMogakhRef.SetBarterGold 50 	NerussaRef.SetBarterGold 50 	OlavRef.SetBarterGold 50 	OrmilRef.SetBarterGold 50 	ShuraviRef.SetBarterGold 50 	SthasaRef.SetBarterGold 50 	TalasmaRef.SetBarterGold 50 	VelusHosidiusRef.SetBarterGold 50 	VlanhonderMoslinRef.SetBarterGold 50 	WilburRef.SetBarterGold 50 	WilletRef.SetBarterGold 50 	WitseidutseiRef.SetBarterGold 50 	if IsModLoaded "DLCShiveringIsles.esp"		let merchant := GetFormFromMod "Oblivion.esm" "015868"		merchant.SetBarterGold 1200		let merchant := GetFormFromMod "Oblivion.esm" "013BB6"		merchant.SetBarterGold 3		let merchant := GetFormFromMod "Oblivion.esm" "01586D"		merchant.SetBarterGold 1200		let merchant := GetFormFromMod "Oblivion.esm" "013BBA"		merchant.SetBarterGold 1000		let merchant := GetFormFromMod "Oblivion.esm" "015866"		merchant.SetBarterGold 1000		let merchant := GetFormFromMod "Oblivion.esm" "013B47"		merchant.SetBarterGold 1200		let merchant := GetFormFromMod "Oblivion.esm" "015869"		merchant.SetBarterGold 1000		let merchant := GetFormFromMod "Oblivion.esm" "01586C"		merchant.SetBarterGold 5		let merchant := GetFormFromMod "Oblivion.esm" "0131F9"		merchant.SetBarterGold 300	endifEnd

Using CSE I've hovered the cursor over all of the objects like "WitseidutseiRef" and there aren't any errors flagged in the ToolTip text.

Using TES4Edit I've checked the FormIDs (e.g. 0131F9) for the Shivering Isles and they all seem to be valid NPCs.

I thought I'd try using CSE's to compile Enhanced Economy's scripts to see if that flagged any errors. No errors were flagged in the EEresetBarterGold script but three other scripts showed errors in the CSE console. From my limited understanding I think these other script errors are in bits of the scripts reserved for debugging.

[CSE] Script 'EElocalEconomyMenus' {0103BCC8}:
[CS] Script 'EElocalEconomyMenus', line 354: Script command "SetString" not found.
[CS] Script 'EElocalEconomyMenus', line 355: Script command "FindFirstFile" not found.
[CS] Script 'EElocalEconomyMenus', line 360: Script command "FindNextFile" not found.
[CS] Script 'EElocalEconomyMenus', line 356: Invalid operands for operator -.
[CS] Script 'EElocalEconomyMenus', line 356: Could not parse this line.
[CS] Script 'EElocalEconomyMenus', line 357: Syntax Error. Unknown command 'ToOBSE'.
[CS] Script 'EElocalEconomyMenus', line 357: Syntax Error. Missing expression in set command.

ScriptName EElocalEconomyMenus
Spoiler

ScriptName EElocalEconomyMenusshort menushort buttonshort ishort eeTempref eeMerchantfloat eeTempFarray_var item_listarray_var item_relationsshort menu_indexshort menu_sub_indexshort menu_index_topshort menu_modearray_var a1array_var a2array_var menu_arrayarray_var menu_array_namesstring_var menu_namestring_var sub_menu_namestring_var s1string_var s2short price_selectorarray_var merchant_listshort priceDataIndexarray_var item_listarray_var repriced_refsarray_var repriced_valsref itemfloat pricefloat fQuestDelayTimeBegin MenuMode	let fQuestDelayTime := 0.01	if MenuMode 1002		if IsConsoleOpen==0			if OnKeyDown tnoEE.menuKey				if tnoEE.resetKey || tnoEE.useLocationPrices > 0 || tnoEE.useMerchantPrices > 0 || tnoEEM.priceReadingEnabled					let menu := -1				endif			endif		endif	endif			if menu > 0		let button := GetButtonPressed	else		let button := -1	endif		if menu == -1			SetDebugMode tnoEE.debug				let s1 := "Enhanced Economy options"		if tnoEE.resetKey			let s1 += "|Reset merchants"			let i := 1			let priceDataIndex := 1		else			let i := 0			let priceDataIndex := 0		endif		if tnoEE.useLocationPrices > 0			let s1 += "|Location prices"			let priceDataIndex += 1		endif		if tnoEE.useMerchantPrices > 0			let s1 += "|Merchant prices"			let priceDataIndex += 1		endif		if tnoEEM.priceReadingEnabled			let s1 += "|Read price data"		else			let priceDataIndex := -1		endif		let s1 += "|Cancel"		MessageBoxEx $s1		let menu := 1		elseif menu == 1		if button == -1			return		endif		if button == 0 && tnoEE.resetKey			let menu := -10		else			if tnoEE.useLocationPrices > 0				if button == i					let menu := -20					let menu_mode := 0					let menu_name := "Location"					let menu_array := tnoEE.location_prices					return				endif				let i += 1			endif			if tnoEE.useMerchantPrices > 0 && button == i				let menu := -20				let menu_mode := 1				let menu_name := "Merchant"				let menu_array := tnoEE.merchant_prices				return			endif			if button == priceDataIndex				let menu := -60				return			endif						let menu := 0		endif	elseif menu == -10		let s1 := "Enhanced Economy will now reset all merchants' barter gold"		if tnoEE.autoHaggle == 0 && tnoEE.haggleLimit > 0			let s1 += " and haggle count"		endif		let s1 += ".%rAre you sure?|OK|Cancel"		MessageBoxEx $s1		let menu := 10	elseif menu == 10		if button == 0			let tnoEEM.merchant_list := ar_Construct Array			DebugPrint "EE:Resetting merchant list"			let menu := 0		elseif button == 1			let menu := 0		endif	elseif menu == -20		MessageBoxEx "Enhanced Economy %z dependent prices:|Reset all|Edit|Close", menu_name		let menu := 20	elseif menu == 20		if button == 0			let menu := -21		elseif button == 1			let menu_index := 0			let menu_index_top := 0			let menu_array_names := ar_Construct Array			ForEach a1 <- menu_array				let menu_array_names[menu_index_top] := a1["Key"]				let menu_index_top += 1			Loop			let item_list := ar_Construct Array			let item_list[0] := "All"		  	let item_list[1] := "Armor"			let item_list[2] := "LiShield"			let item_list[3] := "LiArmor"			let item_list[4] := "HeShield"			let item_list[5] := "HeArmor"			let item_list[6] := "RprHammer"			let item_list[7] := "Weapon"			let item_list[8] := "Blade"			let item_list[9] := "Blunt"			let item_list[10] := "Bow"			let item_list[11] := "Arrow"			let item_list[12] := "Magic"			let item_list[13] := "Staff"			let item_list[14] := "Scroll"			let item_list[15] := "SoulGem"			let item_list[16] := "Ayleid"			let item_list[17] := "Furniture"			let item_list[18] := "Book"			let item_list[19] := "Ingredient"			let item_list[20] := "Food"			let item_list[21] := "Drink"			let item_list[22] := "Potion"			let item_list[23] := "Apparatus"			let item_list[24] := "Jewelry"			let item_list[25] := "Clothes"			let item_list[26] := "ClothesLo"			let item_list[27] := "ClothesMi"			let item_list[28] := "ClothesUp"			let item_list[29] := "Misc"			let item_list[30] := "LockPick"			let item_list[31] := "Gems"			let item_list[32] := "Cloth"			let item_list[33] := "MiscLower"			let item_list[34] := "MiscMiddle"			let item_list[35] := "MiscUpper"			let item_list[36] := "Pelt"			let item_list[37] := "Enchanted"						let menu := -30        		elseif button == 2			let menu := 0		endif	elseif menu == -21		MessageBoxEx "Enhanced Economy will now reset all %z dependent prices to default.%rAre you sure?|OK|Cancel", menu_name		let menu := 21	elseif menu == 21		if button == 0			let a1 := ar_Null			ForEach a1 <- menu_array				let a2 := a1["Value"]				let eeTemp := ar_Size a2				ar_Erase a2 "-":"aaa"				let i := ar_Size a2				if i != eeTemp					let s1 := a1["Key"]					DebugPrint "EE:%z reduced from %.0f to %.0f elements", s1, eeTemp, i				endif			Loop			let a2 := ar_Null			let menu := 0		elseif button == 1			let menu := 0		endif	elseif menu == -30		let s1 := "Enhanced Economy " + menu_name + "s.%rClick to edit."		let i := menu_index		While i < menu_index + 7			let s1 += "|" + menu_array_names[i]			let i += 1		Loop		if menu_index > 0			let s1 += "|< Previous"		endif		if menu_index + 7 < menu_index_top			let s1 += "|> Next"		endif		let s1 += "|Close"		MessageBoxEx $s1		let menu := 30	elseif menu == 30		if button >= 0 && button < 7			let i := menu_index + button			let sub_menu_name := menu_array_names[i]			let menu_sub_index := 0			let menu_index_top := ar_Size item_list			if menu_mode == 0				let menu_index_top -= 1			endif			let menu_array := menu_array[$sub_menu_name]			let menu := -40		elseif button == 7 && menu_index > 0			let menu_index -= 7			if menu_index < 0				let menu_index := 0			endif			let menu := -30		elseif (button == 7 && menu_index == 0) || (button == 8 && menu_index > 0 && menu_index + 7 < menu_index_top)			let menu_index += 7			if menu_index + 7 > menu_index_top				let menu_index := menu_index_top - 7			endif			let menu := -30		elseif button > 0			let menu := -100 ; cleanup		endif	elseif menu == -40		let s1 := "Enhanced Economy " + menu_name + " settings: " + sub_menu_name + "%rClick to edit."		let i := menu_sub_index		While i < menu_sub_index + 7			let s2 := item_list[i]			let eeTempF := Call EElocalEconomyFindPrice menu_array ar_Null s2 1			if price_selector < 2				let s1 += sv_Construct "|%z - %.2f", s2, eeTempF				if price_selector == 0					let s1 += "*"				endif			else				let s1 += sv_Construct "|%z - (%.2f)", s2, eeTempF			endif			let i += 1		Loop		if menu_sub_index > 0			let s1 += "|< Previous"		endif		if menu_sub_index + 7 < menu_index_top			let s1 += "|> Next"		endif		let s1 += sv_Construct "|^Up to %zs", menu_name		MessageBoxEx $s1		let menu := 40			elseif menu == 40		if button >= 0 && button < 7			let i := menu_sub_index + button			let s2 := item_list[i]			let menu := -50		elseif button == 7 && menu_sub_index > 0			let menu_sub_index -= 7			if menu_sub_index < 0				let menu_sub_index := 0			endif			let menu := -40		elseif (button == 7 && menu_sub_index == 0) || (button == 8 && menu_sub_index > 0 && menu_sub_index + 7 < menu_index_top)			let menu_sub_index += 7			if menu_sub_index + 7 > menu_index_top				let menu_sub_index := menu_index_top - 7			endif			let menu := -40		elseif button > 0			let menu_index_top := ar_Size menu_array_names			if menu_mode == 0				let menu_array := tnoEE.location_prices			else				let menu_array := tnoEE.merchant_prices			endif			let menu := -30		endif	elseif menu == -50		if IsTextInputInUse			MessageBox "Text Input box is busy!"			let menu := 0			return		endif		let eeTempF := Call EElocalEconomyFindPrice menu_array ar_Null s2 1		let s1 := sv_Construct "New value for %z %z, with current effective value %.2f%rEmpty means value is inherited by parent.%r", menu_name, sub_menu_name, eeTempF		if price_selector == 0			let s1 += "|Reset"		endif		let s1 += "|OK|Cancel"		OpenTextInput $s1 0 6		if price_selector < 2			if (Floor eeTempF) == eeTempF				InsertInInputText "%.0f" eeTempF			else				let eeTemp := eeTempF * 10				if (Floor eeTemp) == eeTempF*10					InsertInInputText "%.1f" eeTempF				else					InsertInInputText "%.2f" eeTempF				endif			endif		endif		let menu := 50			elseif menu == 50		if button == -1			UpdateTextInput		else			if button == 0 && price_selector == 0				let s1 := "-" + s2				ar_Erase menu_array $s1			elseif button == 0 || (button == 1 && price_selector == 0)				set s1 to GetInputText				if sv_Length s1 == 0					let s1 := "-" + s2					ar_Erase menu_array $s1				else					let eeTempF := sv_ToNumeric s1					let s2 := "-" + s2					let menu_array[$s2] := eeTempF				endif			endif				CloseTextInput			let menu := -40		endif	elseif menu == -60		let item_list := ar_Construct Array		let i := 0		SetString -2010 "Enhanced Economy\*.txt"		FindFirstFile -2011 -2010 1		While (StringLen -2011) > 0			Set s1 to ToOBSE -2011			let item_list[i] := s1			let i += 1			FindNextFile -2011		Loop		if i == 0			MessageBox "No price files are found in 'Data\Enhanced Economy\!"			let menu := 0			return		endif		Call EElocalEconomyResetPrices		let menu_index := 0		let menu_index_top := i		let menu := -61			elseif menu == -61		let s1 := "Choose Price file"		let i := menu_index		While i < menu_index + 7 && i < menu_index_top			let s2 := item_list[i]			let s2 := s2[0:-5]			let s1 += "|" + s2			let i += 1		Loop		let priceDataIndex := i - menu_index		if menu_index > 0			let s1 += "|< Previous"		endif		if menu_index + 7 < menu_index_top			let s1 += "|> Next"		endif		let s1 += "|Close"		MessageBoxEx $s1		let menu := 61			elseif menu == 61		if button == -1			return					elseif button < priceDataIndex			let i := menu_index + button			let sub_menu_name := item_list[i]			let menu := -62		elseif button == priceDataIndex && menu_index > 0			let menu_index -= 7			if menu_index < 0				let menu_index := 0			endif			let menu := -61		elseif (button == priceDataIndex || (button == 8 && menu_index > 0)) && menu_index + 7 < menu_index_top			let menu_index += 7			if menu_index + 7 > menu_index_top				let menu_index := menu_index_top - 7			endif			let menu := -61		else			let menu := -100 ; cleanup		endif	elseif menu == -62		let eeTemp := Call EEreadPrices sub_menu_name		if eeTemp == -2			MessageBox "Unable to read the file!"			let menu := 63		elseif eeTemp == -1			MessageBox "Invalid price file!"			let menu := 63		else			let s2 := sv_Construct "%0.f items will change prices. Continue?|OK|Cancel", eeTemp			let s1 := s1 + "%r" + s2			MessageBoxEx $s1			let menu := 62		endif	elseif menu == 62		if button == -1			return		elseif button == 0			let i := 0			While i < eeTemp				let item := repriced_refs[i]				let price := repriced_vals[i]				let eeTempF := GetGoldValue item				SetGoldValue price item				DebugPrint "EE:Change val of %n (%i) from %.0f to %.0f", item, item, eeTempF, price				let i += 1			Loop			MessageBox "Changed price of %.0f items!", eeTemp			let button := -1			let menu := 63		else			let menu := -61		endif	elseif menu == 63		if button == 0			let menu := -61		endif	elseif menu == -100		sv_Destruct menu_name		sv_Destruct sub_menu_name		sv_Destruct s1		sv_Destruct s2		let menu_array := ar_Null		let menu_array_names := ar_Null		let item_list := ar_Null		let menu := 0		let repriced_refs := ar_Null		let repriced_vals := ar_Null	endifEnd


From line numbers the CSE errors seem to be in this bit of code:
	elseif menu == -60		let item_list := ar_Construct Array		let i := 0		SetString -2010 "Enhanced Economy\*.txt"		FindFirstFile -2011 -2010 1		While (StringLen -2011) > 0			Set s1 to ToOBSE -2011			let item_list[i] := s1			let i += 1			FindNextFile -2011		Loop		if i == 0			MessageBox "No price files are found in 'Data\Enhanced Economy\!"			let menu := 0			return		endif		Call EElocalEconomyResetPrices		let menu_index := 0		let menu_index_top := i		let menu := -61
[CSE] Script 'EElootTarget' {01018630}:
[CS] Script 'EElootTarget', line 305: Script command "SetString" not found.
[CS] Script 'EElootTarget', line 306: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 307: Script command "FMTSTring" not found.
[CS] Script 'EElootTarget', line 308: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 309: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 310: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 311: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 320: Script command "FMTString" not found.
[CS] Script 'EElootTarget', line 321: Script command "DelTxtFile" not found.
[CS] Script 'EElootTarget', line 322: Script command "RenTxtFile" not found.
[CS] Script 'EElootTarget', line 323: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 324: Script command "FMTSTring" not found.
[CS] Script 'EElootTarget', line 325: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 326: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 327: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 328: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 330: Script command "FMTString" not found.
[CS] Script 'EElootTarget', line 331: Script command "StringToTxtFile" not found.
[CS] Script 'EElootTarget', line 314: Syntax Error. Unknown command 'GetFileSize'.
[CS] Script 'EElootTarget', line 314: Invalid condition expression.

Script EElootTarget
Spoiler

ScriptName EElootTargetref lootTargetref lootItemlong removedGoldlong currentGoldlong itemCountlong itemTypeshort lastTargetIndexarray_var lastTargetshort hasRemovedItemshort addedBackRemovedItemsarray_var loot_dataarray_var item_varshort itemRemovalshort tempshort removeItemsshort questContainershort broken_typeshort illegalDeadNPCBegin Function {lootTarget}	let loot_data := ar_Construct Array	let loot_data[0] := 0	SetFunctionValue loot_data	SetDebugMode tnoEE.debug		let hasRemovedItem := 0	let addedBackRemovedItems := 0	let removeItems := 0	let removedGold := 0	let questContainer := 0	if IsActor		let currentGold := GetItemCount Gold001		if GetDead			if isOwner				DebugPrint "EE:Don't remove from owned creature"			else				let removedGold := currentGold - (currentGold * tnoEE.deadActorAdjustment / 100)				if removedGold != 0					DebugPrint "EE:Remove %.0f gold from dead %n", removedGold, lootTarget				endif				let removeItems := tnoEE.removeFromDeadActors								if tnoEE.illegalLootingEnabled >= 2					if isCreature == 0						let illegalDeadNPC := 1					endif				endif			endif		; Not dead actor		elseif isCreature == 0 && player.isSneaking			let removedGold := currentGold - (currentGold * tnoEE.npcAdjustment / 100)			if removedGold != 0				DebugPrint "EE:Remove %.0f gold from NPC %n", removedGold, lootTarget			endif		else			; Merchant or other alive actor			return		endif	; Not actor	elseif IsContainer			if isOwner || player.IsInMyOwnedCell			DebugPrint "EE:Don't remove from owned container"		elseif GetContainerRespawns == 0			DebugPrint "EE:%n is non-respawnable", lootTarget			let removeItems := tnoEE.removeFromContainers && tnoEE.removeFromNonSpawnable		else			; OK remove gold			let currentGold := GetItemCount Gold001			if currentGold && tnoEE.containerAdjustment != 100				let removedGold := currentGold - (currentGold * tnoEE.containerAdjustment / 100)				if removedGold != 0					DebugPrint "EE:Remove %.0f gold from %n", removedGold, lootTarget				endif			endif			let removeItems :=  tnoEE.removeFromContainers		endif		if tnoEEQ.active_questId > 0			if player.isInInterior				; May find quest item here				let questContainer := 1			endif		endif	else		; Not actor or container - nothing to loot		return	endif	if removedGold != 0		if removedGold > 0			removeItemNS Gold001 removedGold		else			let temp := 0 - removedGold			addItemNS Gold001 temp		endif		let hasRemovedItem := 2		let loot_data[0] := 1		let loot_data[1] := ar_Null		let loot_data[2] := removedGold		let loot_data[3] := hasRemovedItem		let loot_data[4] := 0	endif		Call EElocalEconomy This 0	;If target has a eeCheckedToken, there is nothing to do - but check if a quest item can be there, or if it is illegal to loot first.	if GetItemCount eeCheckedToken		DebugPrint "EE:%n has already been ransacked" lootTarget		if questContainer			Call EEquestContainer lootTarget		endif		if illegalDeadNPC			Call EEdeadNpcOwnership lootTarget 0		endif		return	endif	;Some targets are not to be ransacked at all	if Call EEisImmune lootTarget		return	endif	if removeItems		; Check if target is stored in the tnoEE.removedItems array:		let lastTarget := ar_Null		let lastTargetIndex := ar_Size tnoEE.removedItems		While eval (!lastTarget) && lastTargetIndex > 0			let lastTargetIndex -= 1			let lastTarget := tnoEE.removedItems[lastTargetIndex]			if eval (lastTarget[0] == lootTarget)				DebugPrint "EE:found previous target %n at pos %0.f", lootTarget, lastTargetIndex			else				let lootItem := lastTarget[0] 				let lastTarget := ar_Null			endif		Loop			if tnoEE.immuneKey && IsKeyPressed3 tnoEE.immuneKey			DebugPrint "EE:don't remove anything with immuneKey held down."			if eval lastTarget				let temp := 1 ; 1 means not yet found				ForEach item_var <- lastTarget					if temp						let temp := 0 ; skip first entrance, since that is the actor					else						let lootItem := item_var["value"]						if (IsPlayable lootItem) == 0							DebugPrint "EE:Adding back %n", lootItem							addItemNs lootItem 1							let addedBackRemovedItems := 1							let hasRemovedItem := 1						else							DebugPrint "EE:%n is already visible", lootItem						endif					endif				loop				let item_var := ar_Null			endif		elseif eval lastTarget && GetItemCount eeRemovalToken			DebugPrint "EE:has already removed equipment from %n", lootTarget			; Hide "removed" items			let temp := 1 			ForEach item_var <- lastTarget				if temp					let temp := 0 ; skip first entrance, since that is the actor				else					let lootItem := item_var["value"]					if (IsPlayable lootItem)						DebugPrint "EE:Hiding %n", lootItem						let hasRemovedItem := 1						SetIsPlayable 0 lootItem					else						DebugPrint "EE:%n is already removed", lootItem					endif				endif			loop			let item_var := ar_Null		else			; Actor without eeRemovalToken or not found in tnoEE.removedItems. Apply new removal			if eval lastTarget 				DebugPrint "EE:Actor ID found, but no token. Zero index %0.f", lastTargetIndex				let lastTarget := ar_Null				let tnoEE.removedItems[lastTargetIndex][0] := 0			endif			let itemCount := GetNumItems			While itemCount > 0				let itemCount := itemCount - 1				let lootItem := GetInventoryObject itemCount								; Check that the item is playable, not scripted and not a quest item				if IsPlayable2 lootItem == 0					Continue				elseif IsScripted lootItem					Continue				elseif IsQuestItem lootItem					Continue				else					let itemType := GetObjectType lootItem					if itemType != 26							; Not light						if GetFullGoldValue lootItem == 0							if tnoEE.removeWorthlessItems == 0								Continue							endif						endif					endif				endif								let broken_type := 1				; weapons				if itemType == 33					if (tnoEE.removeUnEnchanted || GetEnchantment lootItem)						let itemType := GetWeaponType lootItem						if itemType == 4							let itemRemoval := (tnoEE.staffAdjustment <= GetRandomPercent)						else							let itemRemoval := (tnoEE.weaponAdjustment <= GetRandomPercent)						endif					endif				; Armor				elseif itemType == 20					if (tnoEE.removeUnEnchanted || GetEnchantment lootItem)						let itemRemoval := (tnoEE.armorAdjustment <= GetRandomPercent)					endif				; Clothing				elseif itemType == 22					if (tnoEE.removeUnEnchanted || GetEnchantment lootItem)						if (CompareName "ring" lootItem) || (CompareMaleIconPath "ring" lootItem)							if lootItem == MG02RingofBurden								DebugPrint "EE:Did not attempt := remove %n",lootItem							else								let itemRemoval := (tnoEE.ringAdjustment <= GetRandomPercent)							endif						elseif (CompareName "amulet" lootItem) || (CompareName "necklace" lootItem) || (CompareMaleIconPath "amulet" lootItem)							let itemRemoval := (tnoEE.amuletAdjustment <= GetRandomPercent)						else							let itemRemoval := (tnoEE.clothingAdjustment <= GetRandomPercent)						endif					endif				; Soulgems				elseif itemType == 38					if (CompareName "black" lootItem) == 0						let itemRemoval := (tnoEE.soulgemAdjustment <= GetRandomPercent)					endif				; Potions				elseif itemType == 40					let itemRemoval := (tnoEE.potionAdjustment <= GetRandomPercent)					let broken_type := 2				; Books				elseif itemType == 21					if GetBookIsScroll lootItem						if GetEnchantment lootItem							let itemRemoval := (tnoEE.scrollAdjustment <= GetRandomPercent)						endif						let broken_type := 2					endif				; Ingredients				elseif itemType == 25					if IsFood lootItem						let itemRemoval := (tnoEE.foodAdjustment <= GetRandomPercent)					else						let itemRemoval := (tnoEE.ingredientAdjustment <= GetRandomPercent)					endif					let broken_type := 2				; Misc				elseif itemType == 27					if lootItem != Lockpick && lootItem != RepairHammer && lootItem != Gold001						let itemRemoval := (tnoEE.miscItemsAdjustment <= GetRandomPercent)					endif					let broken_type := 2				; Light				elseif itemType == 26					let itemRemoval := (tnoEE.lightAdjustment <= GetRandomPercent)					let broken_type := 2				endif				if itemRemoval					PrintC "EE:delete %n (%i) of type %.0f from %n", lootItem, lootItem, itemType, lootTarget					if (IsPlayable lootItem)						SetIsPlayable 0 lootItem					else						RemoveItemNS lootItem 1					endif					if tnoEE.useBrokenItem >= broken_type						AddItemNS EEbrokenItem 1					endif					; Check if actor already is stored in tnoEE.removedItems array. If not, add him					if lastTarget == 0						let temp := ar_Size tnoEE.removedItems						if temp >= tnoEE.removedMaxSize							if tnoEE.removedIndex >= tnoEE.removedMaxSize								DebugPrint "EE:overwriting first processed actor"								let tnoEE.removedIndex := 0							endif						endif						let tnoEE.removedItems[tnoEE.removedIndex] := ar_Construct Array						let lastTarget := tnoEE.removedItems[tnoEE.removedIndex]						let lastTarget[0] := lootTarget						let tnoEE.removedIndex += 1					endif					let temp := ar_Size lastTarget 					let lastTarget[temp] := lootItem					let hasRemovedItem := 1					if tnoEE.logEnabled && tnoEE.logInitiated						if tnoEE.loggedLoadTime == 0							SetString -2047 "EnhancedEconomyLog.txt" 0							StringToTxtFile -2047 -1310 0							FMTSTring -2048 0 "EE Log time started "							StringToTxtFile -2047 -2048 0							StringToTxtFile -2047 -9000 0							StringToTxtFile -2047 -32 0							StringToTxtFile -2047 -9001							let tnoEE.loggedLoadTime := 1						endIf						if (GetFileSize -2047 0) >= tnoEE.logMaxSize							; Log file is full. Now rename the old and start a new							let tnoEE.logFileIndex += 1							if tnoEE.logFileIndex >= tnoEE.logMaxFiles								let tnoEE.logFileIndex := 1							endif							FMTString -2048 0 "EnhancedEconomyLog%0.f.txt" tnoEE.logFileIndex							DelTxtFile -2048							RenTxtFile -2047 -2048							StringToTxtFile -2047 -1310 0							FMTSTring -2048 0 "EE started new log file "							StringToTxtFile -2047 -2048 0							StringToTxtFile -2047 -9000 0							StringToTxtFile -2047 -32 0							StringToTxtFile -2047 -9001						endif						FMTString -2048 0 "Remove %n (%i) from %n" lootItem lootItem lootTarget						StringToTxtFile -2047 -2048					endif									endif			Loop			if hasRemovedItem == 1				AddItemNS eeRemovalToken 1				DebugPrint "EE:Adding removal token"			else				AddItemNS eeCheckedToken 1				DebugPrint "EE:Adding checked token"			endif		endif	else		AddItemNS eeCheckedToken 1		DebugPrint "EE:Adding checked token"	endif		if questContainer		Call EEquestContainer lootTarget	endif	if illegalDeadNPC		Call EEdeadNpcOwnership lootTarget 0	endif		if removeItems		let loot_data[0] := 1		let loot_data[1] := lastTarget		let loot_data[2] := removedGold		let loot_data[3] := hasRemovedItem		let loot_data[4] := addedBackRemovedItems	endifEnd


Problems seem to be in this bit:
					if tnoEE.logEnabled && tnoEE.logInitiated						if tnoEE.loggedLoadTime == 0							SetString -2047 "EnhancedEconomyLog.txt" 0							StringToTxtFile -2047 -1310 0							FMTSTring -2048 0 "EE Log time started "							StringToTxtFile -2047 -2048 0							StringToTxtFile -2047 -9000 0							StringToTxtFile -2047 -32 0							StringToTxtFile -2047 -9001							let tnoEE.loggedLoadTime := 1						endIf						if (GetFileSize -2047 0) >= tnoEE.logMaxSize							; Log file is full. Now rename the old and start a new							let tnoEE.logFileIndex += 1							if tnoEE.logFileIndex >= tnoEE.logMaxFiles								let tnoEE.logFileIndex := 1							endif							FMTString -2048 0 "EnhancedEconomyLog%0.f.txt" tnoEE.logFileIndex							DelTxtFile -2048							RenTxtFile -2047 -2048							StringToTxtFile -2047 -1310 0							FMTSTring -2048 0 "EE started new log file "							StringToTxtFile -2047 -2048 0							StringToTxtFile -2047 -9000 0							StringToTxtFile -2047 -32 0							StringToTxtFile -2047 -9001						endif						FMTString -2048 0 "Remove %n (%i) from %n" lootItem lootItem lootTarget						StringToTxtFile -2047 -2048					endif
[CSE] Script 'EEreadPrices' {010526AC}:
[CS] Script 'EEreadPrices', line 22: Script command "SetString" not found.
[CS] Script 'EEreadPrices', line 31: Script command "FileToString" not found.
[CS] Script 'EEreadPrices', line 43: Script command "SetString" not found.
[CS] Script 'EEreadPrices', line 46: Script command "CopyString" not found.
[CS] Script 'EEreadPrices', line 56: Script command "CopyString" not found.
[CS] Script 'EEreadPrices', line 24: Syntax Error. Unknown command 'UserFileExists'.
[CS] Script 'EEreadPrices', line 24: Invalid condition expression.
[CS] Script 'EEreadPrices', line 25: Syntax Error. Unknown command 'ToOBSE'.
[CS] Script 'EEreadPrices', line 25: Syntax Error. Missing expression in set command.
[CS] Script 'EEreadPrices', line 32: Syntax Error. Unknown command 'StringLen'.
[CS] Script 'EEreadPrices', line 32: Syntax Error. Missing expression in set command.
[CS] Script 'EEreadPrices', line 44: Syntax Error. Unknown command 'StringPos'.
[CS] Script 'EEreadPrices', line 44: Syntax Error. Missing expression in set command.
[CS] Script 'EEreadPrices', line 48: Syntax Error. Unknown command 'ToOBSE'.
[CS] Script 'EEreadPrices', line 48: Syntax Error. Missing expression in set command.
[CS] Script 'EEreadPrices', line 59: Syntax Error. Unknown command 'StringLen'.
[CS] Script 'EEreadPrices', line 59: Syntax Error. Missing expression in set command.
[CS] Script 'EEreadPrices', line 62: Syntax Error. Unknown command 'ToOBSE'.
[CS] Script 'EEreadPrices', line 62: Syntax Error. Missing expression in set command.

Script EEreadPrices
Spoiler

ScriptName EEreadPricesstring_var s1string_var s2string_var modarray_var itemsarray_var item_rowarray_var item_datashort ishort jshort found_modshort str_lenshort str_indexshort repriced_countfloat old_valfloat new_valref itemBegin Function {s1}	SetDebugMode tnoEE.debug		let s1 := "Enhanced Economy\" + s1	DebugPrint "EE:Filename is %z", s1	SetString -2010 $s1		if (UserFileExists -2010 1) == 0 		Set s1 to ToOBSE -2010		DebugPrint "EE:File not found error: %z", s1		SetFunctionValue -2		return	endif		FileToString -2010 -2011 0 1	Set str_len to StringLen -2011	if str_len <= 1		DebugPrint "EE:File too short error: %z", s1		SetFunctionValue -1		return	endif		let tnoEELE.repriced_refs := ar_Construct Array	let tnoEELE.repriced_vals := ar_Construct Array		; Look for description	SetString -2012 "["	Set i to (StringPos -2012 -2011) - 1	if i > 0		CopyString -2010 -2011 1 i		sv_Destruct tnoEELE.s1		Set tnoEELE.s1 to ToOBSE -2010		let str_index := i + 1	else		let str_index := 1	endif	let found_mod := 0	let repriced_count := 0	While str_index <= str_len		CopyString -2010 -2011 str_index 10000		let str_index += 10000				Set i to StringLen -2010;		DebugPrint "EE:New section length %.0f", i				Set s1 to ToOBSE -2010		let items := sv_Split s1 "%r"		let i := ar_Size items		if (i <= 0) && (str_index <= str_len)			let j := sv_Length s1			DebugPrint "EE:Error in file, size: %.0f, items %.0f, str_index %.0f, str_len %.0f", j, i, str_index, str_len			let repriced_count := -1			Break		endif				; Put last element "back" if it is not a complete line		if str_index < str_len			let s2 := s1[-1]			if eval s2 != "%r"				let i := (ar_Size items) -1				if i <= 0					DebugPrint "EE:Error in file at split, items %.0f, str_index %.0f, str_len %.0f", i, str_index, str_len					let repriced_count := -1					Break				endif				let s1 := items[i]				ar_Erase items i				let i := (sv_Length s1) + 1				let str_index -= i;				DebugPrint "EE:Put back %0.f: %z, str_index %.0f, str_len %.0f", i, s1, str_index, str_len			endif		endif					ForEach item_row <- items			let s1 := item_row["Value"]			let i := (sv_Find "[" s1) + 1			if i > 0				let j := (sv_Find "]" s1) - 1				if j > 0 && j > i					let mod := s1[i:j]				elseif j < 0					let mod := s1[i:-2]				else					DebugPrint "EE:Warning: %z was not parsed", s1					Continue				endif				if IsModLoaded $mod					DebugPrint "EE:Found new mod section: %z", mod					let found_mod := 1				else					DebugPrint "EE:Unknown mod section: %z from line %z", mod, s1					let mod := ""					let found_mod := 0				endif			elseif found_mod							let item_data := sv_Split s1 ", "				let s2 := item_data[0]				let i := sv_Length s2				if i >= 6					if i > 6						let i -= 6						sv_Erase s2 0, i					endif					let item := GetFormFromMod $mod $s2					if IsFormValid item						let old_val := GetGoldValue item						let s2 := item_data[1]						let new_val := sv_ToNumeric s2						if old_val != new_val							let tnoEELE.repriced_refs[repriced_count] := item							let tnoEELE.repriced_vals[repriced_count] := new_val							let repriced_count += 1						endif					else						DebugPrint "EE:Line %z did not contain valid formId (%z) for %z", s1, s2, mod					endif				else					DebugPrint "EE:Line %z has incorrect formId (%z)", s1, s2				endif			endif		Loop	Loop		sv_Destruct s1	sv_Destruct s2	sv_Destruct mod	let items := ar_Null	let item_row := ar_Null	let item_data := ar_Null	SetFunctionValue repriced_countEnd


Again, the bit of code where I think the problems are:
	SetDebugMode tnoEE.debug		let s1 := "Enhanced Economy\" + s1	DebugPrint "EE:Filename is %z", s1	SetString -2010 $s1		if (UserFileExists -2010 1) == 0 		Set s1 to ToOBSE -2010		DebugPrint "EE:File not found error: %z", s1		SetFunctionValue -2		return	endif		FileToString -2010 -2011 0 1	Set str_len to StringLen -2011	if str_len <= 1		DebugPrint "EE:File too short error: %z", s1		SetFunctionValue -1		return	endif		let tnoEELE.repriced_refs := ar_Construct Array	let tnoEELE.repriced_vals := ar_Construct Array		; Look for description	SetString -2012 "["	Set i to (StringPos -2012 -2011) - 1	if i > 0		CopyString -2010 -2011 1 i		sv_Destruct tnoEELE.s1		Set tnoEELE.s1 to ToOBSE -2010		let str_index := i + 1	else		let str_index := 1	endif
So. Apologies for the WoT.

I guess my primary question is:

Does anyone know what the problematic object in the EEresetBarterGold script is? That seems to be the most serious error as the whole script is being stopped when the game's running.

Secondarily, are the errors flagged by CSE serious ones? As I say, to my untutored eye, they look to be inside some debugging code blocks. I'm not 100% sure though...
User avatar
victoria gillis
 
Posts: 3329
Joined: Wed Jan 10, 2007 7:50 pm

Post » Mon Aug 31, 2015 7:29 pm

Like you I am not a scripter, but to me, it sounds like you're not using the correct OBSE version, which needs to be the recommended OBSE version for EE-scripts were complied with.

Or your issue might have something to do with CSE, so shadeMe are the one you need help from. Of course there other people here who also knows more about scripting than you and me.

User avatar
oliver klosoff
 
Posts: 3436
Joined: Sun Nov 25, 2007 1:02 am

Post » Mon Aug 31, 2015 11:50 am

The "Unknown command ..." messages refer to http://cs.elderscrolls.com/index.php?title=Category:Functions_(Pluggy)commands. You may not have installed it correctly.

At first glance, the EEresetBarterGold erro does not seem related to Pluggy.

User avatar
Alex [AK]
 
Posts: 3436
Joined: Fri Jun 15, 2007 10:01 pm

Post » Mon Aug 31, 2015 8:13 pm

You can try to do a binary search in the EEresetBarterGold script, by commenting the lines and testing the script, to find out which line(s) cause the problem and halt the script.

User avatar
Bereket Fekadu
 
Posts: 3421
Joined: Thu Jul 12, 2007 10:41 pm

Post » Mon Aug 31, 2015 10:56 pm

Ah! That's probably what's causing the errors flagged by CSE. I don't have Pluggy installed. It's not required for Enhanced Economy. It's used to log items removed (Item Removal section of the readme) so that's probably the errors in the "EElootTarget" script and the errors in the "EElocalEconomyMenus" and "EEreadPrices" scripts are probably due to the "Item Repricing" (as described in the readme), only present for people with Pluggy.

Genius. I've used that method for finding problematic mods but haven't thought of using it here. I'll have to give that a go.

Thanks both.
User avatar
Andrea P
 
Posts: 3400
Joined: Mon Feb 12, 2007 7:45 am


Return to IV - Oblivion