Help needed, my float variables are not behaving

Post » Wed Aug 14, 2013 8:57 am

In short, I want to do some simple calculations on a float variable using +=, *=, etc. and I keep failing to compile. Not sure what I am doing wrong, my integer functions were similar and they all compiled fine...

I pasted the function below. I've been testing each section of the script individually and all three if statements fail.

Int OMZkeyInt Property OMZstage AutoActor Property PlayerREF AutoFloat fOMZkeyFunction RitualKeys()fOMZkey = 50.0If akTarget.GetItemCount() < 50 fOMZkey -= ((1.0)*(akTarget.GetItemCount(OMZritualAFormlist) as float)) fOMZkey -= ((0.3)*(akTarget.GetItemCount(OMZritualBFormlist) as float)) fOMZkey -= ((0.2)*(akTarget.GetItemCount(OMZritualCFormlist) as float)) fOMZkey -= ((0.1)*(akTarget.GetItemCount(OMZritualDFormlist) as float)) fOMZkey += ((0.1)*(akTarget.GetItemCount(OMZritualEFormlist) as float)) fOMZkey += ((0.2)*(akTarget.GetItemCount(OMZritualFFormlist) as float)) fOMZkey += ((0.3)*(akTarget.GetItemCount(OMZritualGFormlist) as float)) fOMZkey += ((1.0)*(akTarget.GetItemCount(OMZritualHFormlist) as float))endIfIf akTarget.GetRace() == NordRace  fOMZkey *= 1.00 Elseif akTarget.GetRace() == ImperialRace fOMZkey *= 1.05 Elseif akTarget.GetRace() == RedguardRace fOMZkey *= 1.10 Elseif akTarget.GetRace() == KhajiitRace fOMZkey *= 1.15 Elseif akTarget.GetRace() == ArgonianRace fOMZkey *= 1.20 Elseif akTarget.GetRace() == OrcRace fOMZkey *= 1.25 Elseif akTarget.GetRace() == BretonRace fOMZkey *= 1.30 Elseif akTarget.GetRace() == WoodElfRace fOMZkey *= 1.35 Elseif akTarget.GetRace() == DarkElfRace fOMZkey *= 1.40 Elseif akTarget.GetRace() == FalmerRace fOMZkey *= 1.45 Elseif akTarget.GetRace() == HighElfRace fOMZkey *= 1.55 Elseif akTarget.GetRace() == GiantRace fOMZkey *= 1.85endIfIf fOMZkey > 100.0 fOMZkey = 100.0 Elseif fOMZkey < 0.0 fOMZkey = 0.0endIfOMZkey = fOMZkey as intOMZstage = 7Debug.notification("OMZkey: " + OMZkey + " (Ritual)")endFunction
User avatar
Bryanna Vacchiano
 
Posts: 3425
Joined: Wed Jan 31, 2007 9:54 pm

Post » Wed Aug 14, 2013 4:56 am

Scriptname _test_testscript extends Questfloat fCount = 10.0Function SomeFunction()    fCount += 1.0    fCount -= 2.5    fCount *= 5.0    fCount /= 2.0endFunction

This compiles fine.

Post your whole script as well as the compile errors. Your races and akTarget appear to be undefined.

User avatar
Nana Samboy
 
Posts: 3424
Joined: Thu Sep 14, 2006 4:29 pm

Post » Wed Aug 14, 2013 12:23 pm

Fail how?

Please post the compiler error.
User avatar
Adam Kriner
 
Posts: 3448
Joined: Mon Aug 06, 2007 2:30 am

Post » Wed Aug 14, 2013 11:13 am

Compiles...
Spoiler

;Actor Property PlayerREF AutoInt Property iOMZkey AutoInt Property iOMZstage AutoFloat Property fOMZkey AutoFormList Property OMZritualAFormlist AutoFormList Property OMZritualBFormlist AutoFormList Property OMZritualCFormlist AutoFormList Property OMZritualDFormlist AutoFormList Property OMZritualEFormlist AutoFormList Property OMZritualFFormlist AutoFormList Property OMZritualGFormlist AutoFormList Property OMZritualHFormlist AutoRace[] Property kRaceArray Auto ; NordRace, ImperialRace, RedguardRace, KhajiitRace, ArgonianRace, OrcRace, BretonRace, WoodElfRace, DarkElfRace, FalmerRace, HighElfRace, GiantRaceFloat[] Property fMultArray Auto ; 1.00, 1.05, 1,10, 1.15, 1.20, 1.25, 1.30, 1.35, 1.40, 1.45, 1.55, 1.85Function RitualKeys(Actor akTarget)	fOMZkey = 50.0	If akTarget.GetItemCount(<>) < 50		fOMZkey -= (1.0 * akTarget.GetItemCount(OMZritualAFormlist))		fOMZkey -= (0.3 * akTarget.GetItemCount(OMZritualBFormlist))		fOMZkey -= (0.2 * akTarget.GetItemCount(OMZritualCFormlist))		fOMZkey -= (0.1 * akTarget.GetItemCount(OMZritualDFormlist))		fOMZkey += (0.1 * akTarget.GetItemCount(OMZritualEFormlist))		fOMZkey += (0.2 * akTarget.GetItemCount(OMZritualFFormlist))		fOMZkey += (0.3 * akTarget.GetItemCount(OMZritualGFormlist))		fOMZkey += (1.0 * akTarget.GetItemCount(OMZritualHFormlist))	EndIf	Int iElement = kRaceArray.Length ; 12	While iElement		iElement -= 1		If akTarget.GetRace() == kRaceArray[iElement]			fOMZKey *= fMultArray[iElement]		EndIf	EndWhile	If fOMZkey > 100.0		fOMZkey = 100.0	ElseIf fOMZkey < 0.0		fOMZkey = 0.0	EndIf	iOMZkey = fOMZkey As Int	iOMZstage = 7	Debug.Notification("OMZkey: " + iOMZkey + " (Ritual)")EndFunction
but as others have said, please post the entire script (preferably indented). You have to define and fill properties before they'll have any meaning. Also, GetItemCount needs an akForm.
User avatar
Natalie Taylor
 
Posts: 3301
Joined: Mon Sep 11, 2006 7:54 pm


Return to V - Skyrim