Jump to content

Fallout New Vegas GECK & Scripting Help 101


Recommended Posts

Posted

On the whole, pride's correct in that any if-line that compares something to string vars, array vars or UDFs has to have an eval.

 

if eval somearrayvar[somekey] < somevalue

if eval somestringvar == "somestring"

if eval something == call someUDF

 

I suppose you can do

 

let somevariable := call someUDF

or

let somevariable := somearrayvar[somekey]

 

then check

if somevariable == somevalue

; etc

 

instead of

if eval somevalue == call someUDF

if eval somevalue == somearrayvar[somekey]

 

(provided 'somevariable' isn't a string var)

While a bit more circumspect, it is a bit more reliable in complex if-lines & of course passing it to a var first is better if you're checking that multiple times in a script.

Guest carywinton
Posted

Well so much for "101" scripting, you completely lost me after the first page and if you lost me, no one is going to hardly get any of it. I attempted scripting in FO3/FNV a couple of times and when I realized it was nothing like what I did years ago with the Aurora, I threw in the towel.

 

I again attempted today to try and understand how to have an NPC move through a door , in this case a sewer manhole cover when the PC enters the area. I wanted the NPC to have a surprised look and the camera (FOV) for the PC zoom in to see this before the NPC disappears. Followed by an on screen message of some kind , "What was that?" , etc. And got about as far as naming the script in the script window and the message, lol.

 

scn BBBunnyRunsScript

 

    Begin OnTriggerEnter Player

    ShowMessage "What was that?"

End

 

 

 

 

 

 

Posted

Well, I think if you ask a simple question you'll still get a reply ;)

 

I don't think your code will work, ShowMessage accepts a message form (in Messages section of GECK), but swap it for MessageEx and it will work. Tomm343 and me have intro tutorials in the tutorial section...

Posted

That 's probably gonna take a few packages. A 'travel' one, a stand-still 'wander' or maybe a 'use item at' with a heading marker, and another 'travel' one to the cell beyond the door. Or better still, a 'patrol' one that uses the heading marker as one of its stops. With the package result script triggering the message.

 

Not sure about the FOV - the only related function I know of is a console one, not a script one. (SetCameraFOV) You could fake it with a startconversation that sends you into dialog, doing the zoom-in that way, and park "What was that" in the topic for it, flagging it as "goodbye" so that it exits immediately. You can adapt FOV in the widget for the dialog line too, hand-pick an anim for the NPC while you're at it.

Guest tomm434
Posted

carywinton, also consider using Bethesda way of moving actor between cells - add "MoveToMarkerWithFade MyMarker" in Travel Package result script  and set door as destination. That emulates actor entering door\hatch.

 

Just so you know - before playing with FOV you need to store original FOV (not everyone plays with 75). I don't remember the exact function.

 

But I recommend DoctaSax's way but only with Dialogue package with a good distance( so actor can initiate fake zoom with any distance you want). Create a topic with GetIsid condition of Sunny Smiles and give that dialogue package to NPC to receive fake zoom instead of conversation. You can add MovetoMarkerWithFade just after showMessage function and actor will dissapear after player clicked "OK" (not before!)

"showmessage mymessage" or "MessageBox Ex "Message text""
ActorRef.movetomarkerwithfade MyMarker

PS> oh and to make sure player is looking in right direction use SetANgle function. FIrst you need to Get appropriate angle for player

float MyAngle

let MyAngle:= Player.GetAngle Z + Player.GetHeadingAngle ActorRef
Player.setAngle Z MyAngle

place it just before "show message" line . This code will make player  look exactly at the actor.

 

 

 

 

 

 

Posted

Not sure about the FOV - the only related function I know of is a console one, not a script one.

 

FOV works pretty fine, I use it for cutscenes and I change it gradually, or with mouse wheel to emulate a zoom. However, after the script, when I go back to my default, I need to refresh ini settings because it messes up the view.

 

Only problem is there's no function to store the original fov and not everyone plays on default 75

Guest carywinton
Posted

Well, I think if you ask a simple question you'll still get a reply ;)

 

I don't think your code will work, ShowMessage accepts a message form (in Messages section of GECK), but swap it for MessageEx and it will work. Tomm343 and me have intro tutorials in the tutorial section...

 

Oh I was pretty sure that snippet of well whatever it is, was definitely not going to work. I will try to read up more, I just have really poor vision, I get tired after just reading half an hour and my health has not been great lately, pancreatitis, so my focus is terrible right now.

 

Posted

 

No, that's not right.

 

You must always use eval if any of the things you're comparing with if are not native GECK types -- unless you use the compiler override.

 

You must use let instead of set for assigning NVSE types like string vars and arrays.

 

The bottom line is this: If you're doing something with a variable type introduced by NVSE, you must use functions provided by NVSE -- or the compiler override.

 

 

Alright, I can understand that better. So basically use If Eval when comparing things like Arrays and string vars, which are introduced by NVSE. Thankfully, I don't have any of those comparisons, yet. 

Posted

Isn't there a way to adjust gravity so you slowly fall down? Globally maybe? I could swear I've played a mod where they did that at some point but I can't remember which one! :blush:

 

EDIT: Alright it was Oblivion. That Dwemer Airship mod has a parachute. (I shouldn't have looked either. The Extended CS beats the living #(*&$# out of the GECK...  I'll hopefully finish before I get the Oblivion modding bug! :-/

 

Anyway, it uses a really nasty and arcane looking script to do... something. Which apparently lets the player gently fall. I'll have a look but does anyone else have an idea on how to accomplish this in an easier way? :angel:

Posted

Is there a way to have a long list of elements in multiple lines? Sort of like this: 

 

 

 

Let AllWeapons := ar_List WeapMB92FSMMP,WeapMM1911MMP,WeapMC96MMP,WeapC1849MMP,WeapMP412RMMP,WeapTokarevMMP,
	WeapMMM6UMMP,WeapRBullMMP,WeapSW38SMMPB,WeapMMakarovMMP,WeapMHKUSPMMP,WeapMGyrojetMMP,WeapMGSh18MMP,
	WeapMPB6P9MMP,WeapMLegMMP,WeapMStenMMP,WeapHMSMGMMP,WeapMUZIMMP,WeapMPPSh41MMP,WeapMM14MMP,WeapML96MMP,WeapMVSSMMP,
	WeapKABARMMP,WeapFBSykesMMP,WeapMG36KMMP,WeapMAUGA1MMP,WeapMFNCMMP,WeapBM4A1MMP,WeapMCM4A1MMP,WeapMAK47MMP,
	WeapMAK74MMP,WeapAKS74uNMMP,WeapMAN94MMP,WeapMAEK972MMP,WeapMVALMMP,WeapM9A91MMP,WeapMMG3SG1MMP,WeapIth37MMP,
	WeapDupletMMP,WeapMCAWSMMP,WeapPancorJHMMP,WeapR870SOMMP,WeapCShotgunBMMP,WeapCShotgun12GBMMP,WeapMKS23MMP,
	WeapMKS2312GMMP,WeapMTOZ34MMP,WeapTLR300,WeapNSR556, WeapMM16A2

 

 

 

GECK keeps complaining about it, but if there is a way to not have all that in one line, I'd like to do it that way. Otherwise it'll look too messy, especially because this isn't the only array I have of that size. 

Posted

You can use ar_insertrange to append the contents of an array to another.
Alternatively, the next nvse version will have a function that'll allow you to populate an array with the contents of a formlist.

Posted

I'll check that out then, thanks. 

 

Unfortunately, though, these weapons are not in any formlist, the plan is to add them to a formlist through ListAddForm.

 

EDIT: seems like there will be problems, with this, even with insert range I'm exceeding the character limit per line. 

Posted

Does anyone know for sure if HasPerk does or doesn't return the perk rank when used in-script?

The wiki kinda suggests it only returns a boolean.

 

 

Lutana NVSE plugin just got updated to V5, now it has "HasPerkRank" function.

 

(rank:int) playerref.HasPerkRank perk:ref

It'll return the rank of the perk you pass to it and zero if you don't have it, so you can use it as a general replacement for HasPerk.

 

also take a look at this info:

 

 

I also found and defined the "alternate" perk list, which is used with AddPerk, RemovePerk, and HasPerk when you pass "1" as a second argument, so HasPerkRank will search that list if you pass the same to it.

 

In case you're wondering about the little-known "alternate" perk list:

Perks in this list don't apply their effects to the player, but to other actors that are set as followers using SetPlayerTeammate.

 

For example:

player.AddPerk Toughness 1

This will add the Toughness perk's +3 DT effect to all of the player's followers and not to the player.

To get rid of this effect on followers:

player.RemovePerk Toughness 1
Of course, you can check for perks in this list with:
player.HasPerk Toughness 1
or newly:
player.HasPerkRank 1
which will return the rank.

 

 

Posted

I was wondering if someone could eye up one of my scripts, one I'm not particularly happy with, but I had to do it this way because the alternative was to spam ListAddForm like a thousand times. Anyway here it is: 

 

 

 

array_var WeaponArray
array_var ListOfAllWeaponLists 
array_var ListOfAllFormLists 
array_var Entry

int iCounter
int iSize
int bUpdate 
ref refFormList
ref refWeapon

Begin GameMode
	Let AllWeapons := ar_construct Array 
	Let AllWeapons1 := ar_construct Array
	Let AllWeapons2 := ar_construct Array
	Let AllWeapons3 := ar_construct Array
	Let ProfessionalWeapons := ar_construct Array
    Let HoldoutWeapons := ar_construct Array
	Let HoldoutWeapons1 := ar_construct Array
	Let RangedWeapons := ar_construct Array
	Let RangedWeapons1 := ar_construct Array
	Let RangedWeapons2 := ar_construct Array
	Let CowboyWeapons := ar_construct Array
	Let MachineGuns := ar_construct Array
	Let Rifles := ar_construct Array
	Let PoisonWeapons := ar_construct Array
	Let Shotguns := ar_construct Array
	Let ShotgunSurgeonWeapons := ar_construct Array 
	Let DemolitionsExpertWeapons := ar_construct Array
	Let GruntWeapons := ar_construct Array
	Let WeaponArray := ar_construct Array 
	Let ListOfAllWeaponLists := ar_construct Array
	Let ListOfAllFormLists  := ar_construct Array 

	
	;All weapons formlist 
	Let AllWeapons := ar_List WeapMB92FSMMP,WeapMM1911MMP,WeapMC96MMP,WeapC1849MMP,WeapMP412RMMP,WeapTokarevMMP,WeapMMM6UMMP,WeapRBullMMP,WeapSW38SMMPB,WeapMMakarovMMP,WeapMHKUSPMMP,WeapMGyrojetMMP,WeapMGSh18MMP,WeapMPB6P9MMP 
	ar_InsertRange AllWeapons1  0 AllWeapons 
	Let AllWeapons1 := ar_List WeapMLegMMP,WeapMStenMMP,WeapHMSMGMMP,WeapMUZIMMP,WeapMPPSh41MMP,WeapMM14MMP,WeapML96MMP,WeapMVSSMMP,WeapKABARMMP,WeapFBSykesMMP,WeapMG36KMMP,WeapMAUGA1MMP,WeapMFNCMMP,WeapBM4A1MMP,WeapMCM4A1MMP
	ar_InsertRange AllWeapons2 0 AllWeapons1
	Let AllWeapons2 := ar_List WeapMAK47MMP,WeapMAK74MMP,WeapAKS74uNMMP,WeapMAN94MMP,WeapMAEK972MMP,WeapMVALMMP,WeapM9A91MMP,WeapMMG3SG1MMP,WeapIth37MMP,WeapDupletMMP,WeapMCAWSMMP,WeapPancorJHMMP,WeapR870SOMMP,WeapCShotgunBMMP
	ar_InsertRange AllWeapons3 0 AllWeapons2
	Let AllWeapons3 := ar_List WeapCShotgun12GBMMP,WeapMKS23MMP,WeapMKS2312GMMP,WeapMTOZ34MMP,WeapTLR300,WeapNSR556,WeapMM16A2
	
	;The Profesional perk formlist 
	Let ProfessionalWeapons := ar_List WeapMB92FSMMP,WeapMM1911MMP,WeapMC96MMP,WeapC1849MMP,WeapMP412RMMP,WeapTokarevMMP,WeapMMM6UMMP,WeapRBullMMP,WeapSW38SMMPB,WeapMMakarovMMP,WeapMHKUSPMMP,WeapMGyrojetMMP,WeapMGSh18MMP WeapMPB6P9MMP,WeapMStenMMP,WeapHMSMGMMP,WeapMUZIMMP 
    
	;Holdout weapons formlist
	Let HoldoutWeapons := ar_List WeapMB92FSMMP,WeapMM1911MMP,WeapMC96MMP,WeapC1849MMP,WeapMP412RMMP,WeapTokarevMMP,WeapMMM6UMMP,WeapRBullMMP,WeapSW38SMMPB,WeapMMakarovMMP,WeapMHKUSPMMP,WeapMGyrojetMMP,WeapMGSh18MMP
	ar_InsertRange HoldoutWeapons1 0 HoldoutWeapons
	Let HoldoutWeapons := ar_List WeapMPB6P9MMP,WeapMLegMMP,WeapMStenMMP,WeapMUZIMMP,WeapKABARMMP,WeapFBSykesMMP,WeapDupletMMP,WeapR870SOMMP
	
	;Ranged weapons formlist 
	Let RangedWeapons := ar_List WeapMB92FSMMP,WeapMM1911MMP,WeapMC96MMP,WeapC1849MMP,WeapMP412RMMP,WeapTokarevMMP,WeapMMM6UMMP,WeapRBullMMP,WeapSW38SMMPB,WeapMMakarovMMP,WeapMHKUSPMMP,WeapMGyrojetMMP,WeapMLegMMP,WeapMStenMMP 
	ar_InsertRange RangedWeapons1 0 RangedWeapons
	Let RangedWeapons1 := ar_List WeapHMSMGMMP,WeapMUZIMMP,WeapMPPSh41MMP,WeapMM14MMP,WeapML96MMP,WeapMVSSMMP,WeapMG36KMMP,WeapMGSh18MMP,WeapMAUGA1MMP,WeapMFNCMMP,WeapBM4A1MMP,WeapMCM4A1MMP,WeapMAK47MMP,WeapMAK74MMP
	ar_InsertRange RangedWeapons2 0 RangedWeapons1
	Let RangedWeapons2 := ar_List WeapAKS74uNMMP,WeapMAN94MMP,WeapMAEK972MMP,WeapMVALMMP,WeapM9A91MMP,WeapMMG3SG1MMP,WeapMKS23MMP,WeapMKS2312GMMP,WeapMTOZ34MMP,WeapTLR300,WeapNSR556,WeapMM16A2
	
	;Cowboy perk weapons formlist 
	Let CowboyWeapons := ar_List WeapC1849MMP,WeapMP412RMMP,WeapMMM6UMMP,WeapRBullMMP,WeapKABARMMP,WeapFBSykesMMP,WeapDupletMMP,WeapR870SOMMP
	
	;Machinegun weapons formlist 
	Let MachineGuns:= ar_List WeapMStenMMP,WeapHMSMGMMP,WeapMUZIMMP,WeapMPPSh41MMP
	
	;Rifle weapons formlist 
	Let Rifles := ar_List WeapMM14MMP,WeapML96MMP,WeapMVSSMMP,WeapMG36KMMP,WeapMAUGA1MMP,WeapMFNCMMP,WeapBM4A1MMP,WeapMCM4A1MMP,WeapMAK47MMP,WeapMAK74MMP,WeapAKS74uNMMP,WeapMAN94MMP,WeapMAEK972MMP,WeapMVALMMP,WeapM9A91MMP,WeapMMG3SG1MMP,WeapTLR300,WeapNSR556,WeapMM16A2
	
	;Poison weapons formlist 
	Let PoisonWeapons := ar_List WeapKABARMMP, WeapFBSykesMMP
	
	;Shotgun weapons formlist 
	Let Shotguns := ar_List WeapIth37MMP,WeapDupletMMP,WeapDupletMMP,WeapPancorJHMMP,WeapCShotgunBMMP,WeapCShotgun12GBMMP,WeapMKS2312GMMP,WeapMTOZ34MMP
	
	;Shotgun weapons formlist 
	Let ShotgunSurgeonWeapons := ar_List WeapIth37MMP,WeapDupletMMP,WeapDupletMMP,WeapPancorJHMMP,WeapCShotgunBMMP,WeapCShotgun12GBMMP,WeapMKS2312GMMP,WeapMTOZ34MMP
	
	;Demolitions expert perk weapons formlist 
	Let DemolitionsExpertWeapons := ar_List WeapMKS23MMP
	
	;Grunt Perk  weapons formlist 
	Let GruntWeapons  := ar_List WeapMStenMMP,WeapMM1911MMP,WeapTokarevMMP,WeapMC96MMP,WeapMAK74MMP,WeapMAK74MMP,WeapMAK47MMP,WeapKABARMMP,WeapFBSykesMMP,WeapBM4A1MMP,WeapMCM4A1MMP,WeapMG36KMMP,WeapMFNCMMP,WeapMAUGA1MMP
	
	;The arrays of different weapon categories are added here
	Let ListOfAllWeaponLists := ar_List AllWeapons3,ProfessionalWeapons,HoldoutWeapons1,RangedWeapons2,CowboyWeapons,MachineGuns,Rifles,PoisonWeapons,Shotguns,ShotgunSurgeonWeapons,DemolitionsExpertWeapons,GruntWeapons
	
	;This is an array with all the formlists 
	Let ListOfAllFormLists := ar_List NVAllWeapons,TheProfessionalWeaponsList,NVImprovedHoldoutWeapons,WeaponListRangedALL,PerkCowboyWeapons,WeaponMachinegunList,WeaponRiflesList,VPoisonWeapons,WeaponShotgunList,ShotgunSurgeonWeaponsList,PerkDemolitionExpertWeapons,NVDLC02PerkGruntWeapons
	
	If (bUpdate == 0)
		While(iCounter <= 11)
			Let WeaponArray := ar_DeepCopy ListOfAllWeaponLists[iCounter]
			Let refFormList := ListOfAllFormLists[iCounter]
			
			ForEach Entry <- WeaponArray
				Let refWeapon := Entry["value"]
				Call WotnMWeaponFunction refWeapon, WeaponArray, 1
			Loop
		Loop
		
		Let bUpdate := 1
	ElseIf (bUpdate == 1)
		StopQuest WotnMFormListsMod
	EndIf
End 

 

 

 

This is the function I used to add the stuff. 

 

 

 

scn WotnMWeaponFunction 

array_var ReferencedArray 
array_var Entry 
ref refItemToAdd
ref refList
int bFormList  

Begin Function {refItemToAdd, ReferencedArray, bFormList}

	ForEach Entry <- ReferencedArray
		Let refList := Entry["value"]
		If(bFormList == 0)
			AddItemToLeveledList  refList refItemToAdd 1 1 100
		Else 
			ListAddForm refList refItemToAdd 
		EndIf 
	Loop 
End  

 

 

 

What I don't like about it, is the bunch of arrays. However all those weapons have to go into specific formlists, if I knew a way to reduce the number of arrays I would do it. 

Posted

@ArgusSCCT

What's the ultimate goal of your code? Fill-up leveled list with listed weapons from arrays? If you can explain what exactly you need - maybe I can come up with something useful.

Posted

Spamming ListAddForm is the current way of doing this. Personally I prepare the lines in excel and copy paste into a script.

 

Guest tomm434
Posted

"Get mod name" is very useful - now you can see load order of player in his export debug

Posted

I'll check that out then, thanks.

 

Unfortunately, though, these weapons are not in any formlist, the plan is to add them to a formlist through ListAddForm.

 

EDIT: seems like there will be problems, with this, even with insert range I'm exceeding the character limit per line.

I was wondering if someone could eye up one of my scripts, one I'm not particularly happy with, but I had to do it this way because the alternative was to spam ListAddForm like a thousand times. ..

 

What I don't like about it, is the bunch of arrays. However all those weapons have to go into specific formlists, if I knew a way to reduce the number of arrays I would do it.

I'm not sure why you couldn't park those weapons in custom formlists in the geck, and convert those formlists to other formlists & lev lists in a while loop. Seems like a lot less typing.

 

Also, for future reference, if you're populating arrays with ar_list or ar_map, you don't need to ar_construct them first.

Posted

That sounds like a better idea to do it that, way, just seems redundant. I actually thought of that before, I think I'll do it. The reason I don't want to spam stuff is that new weapons get added to this thing, I don't want to have to repeat ten lines every time a new one gets in. 

 

Which is precisely why I didn't like this, because it also becoming a huge mess. The script with leveled lists wasn't such a big deal, but in here its not so flexible to which places I can add them to. 

Guest luthienanarion
Posted

I just use my ListToArray function, which is getting an analogue in NVSE according to DoctaSax.

 

 

"Get mod name" is very useful - now you can see load order of player in his export debug

I stripped the file extension from the string, so it might look a little odd to see the same name multiple times in a full load order listing. I'll add an optional parameter to preserve the extension.

Guest tomm434
Posted

Odessa, oh. is there a reason you didn't add that to your debug log export?

Posted

Yeah I used ListToArray, well when I found out about it anyway. 

 

Remade those scripts into these ones: 

 

Form Lists 

 

 

array_var WeaponLists 
array_var FormLists
array_var Weapons
array_var Entry

ref refList 
ref refWeaponList
ref refWeapon
int bUpdate
int iCounter

Begin GameMode 
	Let WeaponLists := ar_List WotnMAllWeapons,WotnMProfessionalWeapons,WotnMHoldoutWeapons,WotnMRangedWeapons,WotnMMachineguns,WotnMRifles,WotnMCowboyWeapons,WotnMShotguns,WotnMShotgunSurgeonWeapons,WotnMGruntWeapons
	Let FormLists := ar_List NVAllWeapons,TheProfessionalWeaponsList,NVImprovedHoldoutWeapons,WeaponListRangedALL,WeaponMachinegunList,WeaponRiflesList,PerkCowboyWeapons,WeaponShotgunList,ShotgunSurgeonWeaponsList,NVDLC02PerkGruntWeapons

	If (bUpdate == 0)
		ListAddForm WeaponListMeleeALL WeapFBSykesMMP
		ListAddForm VPoisonWeapons WeapFBSykesMMP
		ListAddForm WeaponListMeleeALL WeapKABARMMP
		ListAddForm VPoisonWeapons WeapKABARMMP
		ListAddForm PerkDemolitionExpertWeapons WeapMKS23MMP
		
		While (iCounter <= 9)
			Let refWeaponList := WeaponLists[iCounter]
			Let refList := FormLists[iCounter]
			Let Weapons := ListToArray refWeaponList
			ForEach Entry <- Weapons 
				Let refWeapon := Entry["value"]
				ListAddForm refWeapon refList 
			Loop 
			Let iCounter += 1
		Loop 
		
		Let bUpdate := 1
	ElseIf (bUpdate == 1)
		StopQuest WotnMFormListsMod
	EndIf
End 

 

 

 

Leveled Lists 

 

 

array_var LeveledLists 
array_var LeveledItems
array_var List
array_var Entry 

int bUpdate
int bDoOnce 
int iCounter1
int iCounter2 
ref refItem
ref refLeveledList 
ref refFormList 


Begin GameMode 
	
	Let LeveledItems := ar_List WotnMWeaponsTier1,WotnMWeaponsTier2,WotnMWeaponsTier3,WotnMAttachmentsTier1,WotnMAttachmentsTier2,WotnMAttachmentsTier3
	Let LeveledLists := ar_List WotnMNPCTier1,WotnMNPCTier2,WotnMNPCTier3,WotnMVendorsTier1,WotnMVendorsTier2,WotnMVendorsTier3,WotnMAttachmentsVendorsTier1,WotnMAttachmentsVendorsTier2,WotnMAttachmentsVendorsTier3
	
	If (bUpdate == 0)
		While(iCounter2 <= 8)
			Let refItem := LeveledItems[iCounter1]
			Let refFormList := LeveledLists[iCounter2]
			Let List := ListToArray refFormList 
			ForEach Entry <- List 
				Let refLeveledList := Entry["value"]
				AddItemToLeveledList refLeveledList refItem  1 1 100
			Loop 
			Let iCounter1 += 1
			Let iCounter2 += 1
			If (iCounter1 == 2 && bDoOnce == 0) 
				Let iCounter1 := 0
				Let bDoOnce := 1
			EndIf 
		Loop
		Let bUpdate := 1
	ElseIf (bUpdate == 1) 
		StopQuest WotnMLeveledListsMod  
	EndIf 
End
	 

 

 

 

They look way better than that monstrosity from before. Only thing that I don't like is using AddItemToLeveledList, but it's being done with that thing about it being nested into another list. I don't suppose, there's a way to check that all this stuff got into the proper form lists? The leveled list part will be working  once I see enemies and vendors carrying these things around. 

 

The good thing now is that, if another weapon was to be added, all I need to do is add one more thing to those form lists/leveled lists through GECK. 

 

Posted

Odessa, oh. is there a reason you didn't add that to your debug log export?

 

Odessa's already mentioned it in the debug dumps section on the wiki. Very handy overview, that, switching spunk over to use most of that too, get all professional-like.

Guest tomm434
Posted

Nice! Thk DoctaSax. And Odessa too for her contribution to bethesda wiki.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...