[Alpha] NifSE v1.0 α:4

Post » Wed Jul 14, 2010 9:41 am

Odd. Niflib gave me no trouble. What'd you do to get zlib linked?
Nothing at all. Or at least nothing beyond what I'd suggested earlier - Tell the linker to look through it at link-time.
User avatar
Neil
 
Posts: 3357
Joined: Sat Jul 14, 2007 5:08 am

Post » Wed Jul 14, 2010 2:18 pm

hmm, my script is crashing the game.

Im trying to use it to scan a mesh to find any parts where the material is named 'skin'. however I cant even get to that part yet because it crashes at the first bit. Thisi s no doubt a problem with the way ive structured it, but I figured thise would be the best place to ask.

if player.GetIssix Male	let filepath := GetBipedModelPath 0 upperbodyrefelseif player.GetIssix Female	let filepath := GetBipedModelPath 1 upperbodyrefendiflet nifID := NifOpen $filepath 1let filepath := NifGetPath nifIDset tempvalue to 1while tempvalue <= NifGetNumChildren nifID ;<--------- This is the line where it crashes;	if NifGetNthChildMaterial tempvalue nifID == skin;		set upperbodystep to 2;		message "Yes skin found";	endif	set tempvalue to tempvalue + 1loop

User avatar
Eoh
 
Posts: 3378
Joined: Sun Mar 18, 2007 6:03 pm

Post » Thu Jul 15, 2010 12:38 am

I'll need at least NifSE.log for this. The nif you were testing might also be useful.
User avatar
Avril Louise
 
Posts: 3408
Joined: Thu Jun 15, 2006 10:37 pm

Post » Wed Jul 14, 2010 11:27 pm

I'll need at least NifSE.log for this. The nif you were testing might also be useful.


EDIT:
I did testing, yes it was an issue with the OBSE saving the string, i obviously didnt do it right, not a NifSE problem.

I solved that other issue, but here is one involing NifClose, once it gets to that linei n my code the game crashes.

let nifID := NifOpen $filepath 1let filepath := NifGetPath nifIDset tempvalue to 1while tempvalue <= NifGetNumChildren nifID	set material to NifGetNthChildMaterial tempvalue nifID	if sv_Compare skin material == 0		set upperbodystep to 2		messagebox "Yes skin found"	endif	set tempvalue to tempvalue + 1loopNifClose nifID


the relvent lines from the NifSE log:
NifClose - Closing nif #32-0getRegNif - Finding nif registered as #32-0.getRegNif - Nif #32-0 found.getRegNif - Nif root is good.


any ideas?
User avatar
candice keenan
 
Posts: 3510
Joined: Tue Dec 05, 2006 10:43 pm

Post » Wed Jul 14, 2010 6:37 pm

Not able to test ingame, because my code has some errors in it. Maybe sometimes the next days.


Finally got some time for testing.

Results:
  • My calculations are crap. :D
  • Change nif seems to show up correctly; can't tell for sure because of the first point. :P
  • NifClose crashes the game.


My Script:
scn Scriptshort mtbInvalidint Stageint ReEquipint Switchedint iNifIDint ixNiffloat fQuestDelayTimefloat mtfM11float mtfM12float mtfM13float mtfM21float mtfM22float mtfM23float mtfM31float mtfM32float mtfM33float mtfVXfloat mtfVYfloat mtfVZref Shieldref rScriptstring_var mtsShieldPathstring_var mtsBackshieldPathstring_var mttPercentifiedPatharray_var mtaMatrixRotation	;3x3 array of floatsarray_var mtaVectorTranslation	;length 3 array of floats, with the format [x y z]Begin Gamemode	let rScript := Script	let Shield := ReverseShield	SetDebugMode 1	if ( Stage == -1 )		PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Nif reportet as invalid."		NifClose iNifID		PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " UnequipItem Shield."		if ( Player.GetEquipped Shield )			Player.UnequipItemNS Shield		endif		PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Restore Path."		let mttPercentifiedPath := ( sv_Percentify mtsShieldPath )		SetBipedModelPathEx $mttPercentifiedPath, 0, Shield		PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Reset Variables."		sv_Destruct mtsShieldPath, mtsBackshieldPath, mttPercentifiedPath		let mtaMatrixRotation := mtaVectorTranslation := ar_Null		ResetAllVariables		PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " StopQuest."		StopQuest Quest		Return	elseif ( Player.GetEquipped Shield )		if ( Player.IsWeaponOut == Switched )			Player.UnequipItemNS Shield			let ReEquip := 1			if Eval ( !( Switched := ( !Player.IsWeaponOut ) ) )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Switch to normal mode."				let mttPercentifiedPath := ( sv_Percentify mtsShieldPath )			else				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Switch to backshield mode."				let mttPercentifiedPath := ( sv_Percentify mtsBackshieldPath )			endif			SetBipedModelPathEx $mttPercentifiedPath, 0, Shield			sv_Destruct mttPercentifiedPath		endif		Return	elseif ( ReEquip )		PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " ReEquip Shield."		Player.EquipItemNS Shield		let ReEquip := 0		Return	elseif ( Stage < 5 ) && ( Stage > -1 )		let Stage += 1		if ( Stage == 1 )			PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Set fQuestDelayTime."			let fQuestDelayTime := 0.1			Return		elseif ( Stage == 2 )			PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " AddItem Shield."			Player.AddItemNS Shield 1			Return		elseif ( Stage == 3 )			let mtsShieldPath := ( GetBipedModelPath, 0, Shield )			PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " ShieldPath: %q" + mtsShieldPath + "%q"			Return		elseif ( Stage == 4 )			PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " NifOpen."			let iNifID := ( NifOpen $mtsShieldPath, 1 )			;Change Slot			let ixNif := -1			While ( ( ixNif += 1 ) < ( NifGetNumExtraData iNifID ) )				if Eval ( "NiStringExtraData" == ( NifGetNthExtraDataType ixNif, iNifID ) )					PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Corrct ExtraDataType."					if Eval ( "Prn" == ( NifGetNthExtraDataName ixNif, iNifID ) )						PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Correct ExtraDataName."						Break					endif				endif			Loop			let mtbInvalid := ( ( ixNif == ( NifGetNumExtraData iNifID ) ) || ( "Bip01 L ForearmTwist" != ( NifGetNthExtraDataString ixNif, iNifID ) ) )			if Eval ( !mtbInvalid )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Change ExtraDataString."				let mtbInvalid := ( !NifSetNthExtraDataString "Bip01 L Shoulder Helper", ixNif, iNifID )			else				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Error before changing ExtraDataString."			endif			;Adjust Rotation & Translation			if Eval ( !mtbInvalid )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Searching Shield:2."				let mtbInvalid := ( ( ixNif := ( NifGetChildIndexByName "Shield:2", iNifID ) ) == -1 )			else				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Error before searching Shield:2."			endif			if Eval ( !mtbInvalid )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Checking Type."				let mtbInvalid := ( "NiTriStrips" != ( NifGetNthChildType ixNif, iNifID ) )			else				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Error before checking Type."			endif			if Eval ( !mtbInvalid )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Get Rotation Matrix & Translation Vector."				let mtaMatrixRotation := ( NifGetNthChildLocalRotation ixNif, iNifID )				let mtaVectorTranslation := ( NifGetNthChildLocalTranslation ixNif, iNifID )				let mtbInvalid := ( ( !LPSoBGlmcbTranslationNonDefaultShields ) && ( ( ( mtaVectorTranslation[0] ) || ( mtaVectorTranslation[1] ) || ( mtaVectorTranslation[2] ) ) || ( ( mtaMatrixRotation[0][0] ) || ( mtaMatrixRotation[0][1] ) || ( mtaMatrixRotation[0][2] ) || ( mtaMatrixRotation[1][0] ) || ( mtaMatrixRotation[1][1] ) || ( mtaMatrixRotation[1][2] ) || ( mtaMatrixRotation[2][0] ) || ( mtaMatrixRotation[2][1] ) || ( mtaMatrixRotation[2][2] ) ) ) )			else				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Error before retrieving Rotation Matrix & Translation Vector."			endif			if Eval ( !mtbInvalid )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Adjust Rotation."				;Rotation				;	-0.0249	-0.1966	-0.3256				;	-0.1247	 0.9655	-0.2287				;	 0.3593	-0.1710	-0.9174				let mtfM11 := ( mtaMatrixRotation[0][0] -= 1.0249 )				let mtfM12 := ( mtaMatrixRotation[0][1] -= 0.1966 )				let mtfM13 := ( mtaMatrixRotation[0][2] -= 0.3256 )				let mtfM21 := ( mtaMatrixRotation[1][0] -= 0.1247 )				let mtfM22 := ( mtaMatrixRotation[1][1] -= 0.0345 )				let mtfM23 := ( mtaMatrixRotation[1][2] -= 0.2287 )				let mtfM21 := ( mtaMatrixRotation[2][0] += 0.3593 )				let mtfM22 := ( mtaMatrixRotation[2][1] -= 0.1710 )				let mtfM33 := ( mtaMatrixRotation[2][2] -= 1.9174 )				let mtbInvalid := ( !NifSetNthChildLocalRotationTEMP mtfM11, mtfM12, mtfM13, mtfM21, mtfM22, mtfM23, mtfM31, mtfM32, mtfM33, ixNif, iNifID )			else				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Error before adjusting Rotation."			endif			if Eval ( !mtbInvalid )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Adjust Translation."				;Translation				;	x: 25	y: -11	z: -20				let mtfVX := ( mtaVectorTranslation[0] += 25 )				let mtfVY := ( mtaVectorTranslation[1] -= 11 )				let mtfVZ := ( mtaVectorTranslation[2] -= 20 )				let mtbInvalid := ( !NifSetNthChildLocalTranslationTEMP mtfVX, mtfVY, mtfVZ, ixNif, iNifID )			else				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Error before adjusting Translation."			endif			;Unknown Shield Format			if ( mtbInvalid )				PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Unknown shield format."				let Stage := -1				MessageBox "Mesh ist nicht zu gebrauchen."				Return			endif			let mtsBackshieldPath := ( NifGetPath iNifID )			PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " Backshield path: %q" + mtsBackshieldPath + "%q"			Return		else			PrintD ( ASCIIToChar 2 ) + "LPRS (" + ( GetFormIDString rScript ) + "):" + ( ASCIIToChar 3 ) + " EquipItem Shield."			Player.EquipItemNS Shield			Return		endif	endifEnd


Static.log from ConScribe:
===============================================Game Instance : 1 | Time : 05-21-2010 14-22-49===============================================NifSE::NifLoad - loading saved NifFilesNifSE::NifLoad - Clearing previous RegList.NifSE::NifLoad - Previous RegList cleared.NifSE::NifLoad - Load complete.LPRS (01000803): Set fQuestDelayTime.LPRS (01000803): AddItem Shield.LPRS (01000803): ShieldPath: "ReverseShield.nif"LPRS (01000803): NifOpen.NifSE::NifOpen - "ReverseShield.nif" opened for editing.NifSE::NifFile c'tor - NifFile created for editing.NifSE::NifFile.setRoot - Setting root to root of "ReverseShield.nif"!NifSE::CheckFileLocation - File "ReverseShield.nif" found in folders!NifSE::NifFile.setRoot - Nif read from stream of file "ReverseShield.nif".NifSE::NifFile.setRoot - Nif is good; v20.0.0.5. Loaded 3 ExtraData nodes, collision, 1 Children nodes, and 0 Effects nodes.NifSE::NifFile.setRoot - Editable nif, setting basePath and determining filePath.NifSE::NifFile.reg - Registering "ni\Test-Rohfile_0.nif" on RegList.NifSE::NifFile.reg - Registered as #1-0.NifSE::NifOpen - "ReverseShield.nif" registered as #1-0.NifSE::NifGetNumExtraData - Getting number of ExtraData nodes in nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNumExtraData - Returning 3 ExtraData nodes.NifSE::NifGetNthExtraDataType - Getting the type of ExtraData #0 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNthExtraDataType - Returning "BSXFlags".NifSE::NifGetNumExtraData - Getting number of ExtraData nodes in nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNumExtraData - Returning 3 ExtraData nodes.NifSE::NifGetNthExtraDataType - Getting the type of ExtraData #1 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNthExtraDataType - Returning "NiStringExtraData".LPRS (01000803): Corrct ExtraDataType.NifSE::NifGetNthExtraDataName - Getting the name of ExtraData #1 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNthExtraDataName - Returning "Prn".LPRS (01000803): Correct ExtraDataName.NifSE::NifGetNumExtraData - Getting number of ExtraData nodes in nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNumExtraData - Returning 3 ExtraData nodes.NifSE::NifGetNthExtraDataString - Getting string value of ExtraData #1 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNthExtraDataString - Returning "Bip01 L ForearmTwist".LPRS (01000803): Change ExtraDataString.NifSE::NifSetNthExtraDataString - Setting the string value of ExtraData #1 of nif #1-0 to "Bip01 L Shoulder Helper".NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifSetNthExtraDataString - ExtraData value set successfully.LPRS (01000803): Searching Shield:2.NifSE::NifGetChildIndexByName - Getting the index of Child "Shield:2" of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifFile.getChildIndexByName - Getting NiAVObject Node "Shield:2".NifSE::NifGetChildIndexByName - Child found.LPRS (01000803): Checking Type.NifSE::NifGetNthChildType - Getting the type of Child #0 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNthChildType - Returning "NiTriStrips".LPRS (01000803): Get Rotation Matrix & Translation Vector.NifSE::NifGetNthChildLocalRotation - Getting local Rotation of Child #0 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNthChildLocalRotation - Returning child's local rotation.NifSE::NifGetNthChildLocalTranslation - Getting local Translation of Child #0 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetNthChildLocalTranslation - Returning child's local translation.LPRS (01000803): Adjust Rotation.NifSE::NifSetNthChildLocalRotation - Setting local Rotation of Child #0 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifSetNthChildLocalRotation - Local Rotation of Child #0 of nif #1-0 has been set.LPRS (01000803): Adjust Translation.NifSE::NifSetNthChildLocalTranslation - Setting local Translation of Child #0 of nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifSetNthChildLocalTranslation - Local Translation of Child #0 of nif #1-0 has been set.NifSE::NifGetPath - Getting the path to nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifGetPath - Returning "ni\Test-Rohfile_0.nif".LPRS (01000803): Backshield path: "ni\Test-Rohfile_0.nif"LPRS (01000803): EquipItem Shield.LPRS (01000803): Switch to backshield mode.LPRS (01000803): ReEquip Shield.NifSE::CreateNifFile - FileFinder requesting nifScript file "Meshes\ni\Test-Rohfile_0.nif".NifSE::getRefNif - Finding nif with filename "Test-Rohfile_0.nif".NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifFile.commitChanges - Writing to "ni\Test-Rohfile_0.nif".NifSE::CreateNifFile - Nif created.NifSE::DeleteNifFile - FileFinder has finished with nifScript file "ni\Test-Rohfile_0.nif".NifSE::getRefNif - Finding nif with filename "Test-Rohfile_0.nif".NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::DeleteNifFile - Nif deleted.LPRS (01000803): Switch to normal mode.LPRS (01000803): ReEquip Shield.LPRS (01000803): Switch to backshield mode.LPRS (01000803): ReEquip Shield.NifSE::CreateNifFile - FileFinder requesting nifScript file "Meshes\ni\Test-Rohfile_0.nif".NifSE::getRefNif - Finding nif with filename "Test-Rohfile_0.nif".NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifFile.commitChanges - Writing to "ni\Test-Rohfile_0.nif".NifSE::CreateNifFile - Nif created.NifSE::DeleteNifFile - FileFinder has finished with nifScript file "ni\Test-Rohfile_0.nif".NifSE::getRefNif - Finding nif with filename "Test-Rohfile_0.nif".NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::DeleteNifFile - Nif deleted.LPRS (01000803): Switch to normal mode.LPRS (01000803): ReEquip Shield.LPRS (01000803): Switch to backshield mode.LPRS (01000803): ReEquip Shield.NifSE::CreateNifFile - FileFinder requesting nifScript file "Meshes\ni\Test-Rohfile_0.nif".NifSE::getRefNif - Finding nif with filename "Test-Rohfile_0.nif".NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::NifFile.commitChanges - Writing to "ni\Test-Rohfile_0.nif".NifSE::CreateNifFile - Nif created.NifSE::DeleteNifFile - FileFinder has finished with nifScript file "ni\Test-Rohfile_0.nif".NifSE::getRefNif - Finding nif with filename "Test-Rohfile_0.nif".NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.NifSE::DeleteNifFile - Nif deleted.set quest.stage to -1set Stage >> -1LPRS (01000803): Nif reportet as invalid.NifSE::NifClose - Closing nif #1-0NifSE::getRegNif - Finding nif registered as #1-0.NifSE::getRegNif - Nif #1-0 found.NifSE::getRegNif - Nif root is good.


NifSe.log:
queryloadoblivion root = D:\Programme\Spiele\Oblivion\List of BSA files: (excluding BSA files known to contain non-NIF data)	D:\Programme\Spiele\Oblivion\Data\Clean Spellbook.bsa	D:\Programme\Spiele\Oblivion\Data\DLCBattlehornCastle.bsa	D:\Programme\Spiele\Oblivion\Data\DLCFrostcrag.bsa	D:\Programme\Spiele\Oblivion\Data\DLCHorseArmor.bsa	D:\Programme\Spiele\Oblivion\Data\DLCOrrery.bsa	D:\Programme\Spiele\Oblivion\Data\DLCShiveringIsles - Meshes.bsa	D:\Programme\Spiele\Oblivion\Data\dlcthievesden.bsa	D:\Programme\Spiele\Oblivion\Data\DLCVileLair.bsa	D:\Programme\Spiele\Oblivion\Data\Knights.bsa	D:\Programme\Spiele\Oblivion\Data\LP's Shield On Back.bsa	D:\Programme\Spiele\Oblivion\Data\Oblivion - Meshes.bsa	D:\Programme\Spiele\Oblivion\Data\Raceenabler.bsa	D:\Programme\Spiele\Oblivion\Data\Unarmored Skill for Everyone.bsa		13 total.Registering String Interface.Registering Serialization Interface.Registering NifSE Hooks.	Initialization complete.NifLoad - loading saved NifFilesNifLoad - Clearing previous RegList.NifLoad - Previous RegList cleared.NifLoad - Load complete.NifOpen - "ReverseShield.nif" opened for editing.NifFile c'tor - NifFile created for editing.NifFile.setRoot - Setting root to root of "ReverseShield.nif"!CheckFileLocation - File "ReverseShield.nif" found in folders!NifFile.setRoot - Nif read from stream of file "ReverseShield.nif".NifFile.setRoot - Nif is good; v20.0.0.5. Loaded 3 ExtraData nodes, collision, 1 Children nodes, and 0 Effects nodes.NifFile.setRoot - Editable nif, setting basePath and determining filePath.NifFile.reg - Registering "ni\Test-Rohfile_0.nif" on RegList.NifFile.reg - Registered as #1-0.NifOpen - "ReverseShield.nif" registered as #1-0.NifGetNumExtraData - Getting number of ExtraData nodes in nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNumExtraData - Returning 3 ExtraData nodes.NifGetNthExtraDataType - Getting the type of ExtraData #0 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNthExtraDataType - Returning "BSXFlags".NifGetNumExtraData - Getting number of ExtraData nodes in nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNumExtraData - Returning 3 ExtraData nodes.NifGetNthExtraDataType - Getting the type of ExtraData #1 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNthExtraDataType - Returning "NiStringExtraData".NifGetNthExtraDataName - Getting the name of ExtraData #1 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNthExtraDataName - Returning "Prn".NifGetNumExtraData - Getting number of ExtraData nodes in nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNumExtraData - Returning 3 ExtraData nodes.NifGetNthExtraDataString - Getting string value of ExtraData #1 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNthExtraDataString - Returning "Bip01 L ForearmTwist".NifSetNthExtraDataString - Setting the string value of ExtraData #1 of nif #1-0 to "Bip01 L Shoulder Helper".getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifSetNthExtraDataString - ExtraData value set successfully.NifGetChildIndexByName - Getting the index of Child "Shield:2" of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifFile.getChildIndexByName - Getting NiAVObject Node "Shield:2".NifGetChildIndexByName - Child found.NifGetNthChildType - Getting the type of Child #0 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNthChildType - Returning "NiTriStrips".NifGetNthChildLocalRotation - Getting local Rotation of Child #0 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNthChildLocalRotation - Returning child's local rotation.NifGetNthChildLocalTranslation - Getting local Translation of Child #0 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetNthChildLocalTranslation - Returning child's local translation.NifSetNthChildLocalRotation - Setting local Rotation of Child #0 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifSetNthChildLocalRotation - Local Rotation of Child #0 of nif #1-0 has been set.NifSetNthChildLocalTranslation - Setting local Translation of Child #0 of nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifSetNthChildLocalTranslation - Local Translation of Child #0 of nif #1-0 has been set.NifGetPath - Getting the path to nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifGetPath - Returning "ni\Test-Rohfile_0.nif".CreateNifFile - FileFinder requesting nifScript file "Meshes\ni\Test-Rohfile_0.nif".getRefNif - Finding nif with filename "Test-Rohfile_0.nif".getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifFile.commitChanges - Writing to "ni\Test-Rohfile_0.nif".CreateNifFile - Nif created.DeleteNifFile - FileFinder has finished with nifScript file "ni\Test-Rohfile_0.nif".getRefNif - Finding nif with filename "Test-Rohfile_0.nif".getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.DeleteNifFile - Nif deleted.CreateNifFile - FileFinder requesting nifScript file "Meshes\ni\Test-Rohfile_0.nif".getRefNif - Finding nif with filename "Test-Rohfile_0.nif".getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifFile.commitChanges - Writing to "ni\Test-Rohfile_0.nif".CreateNifFile - Nif created.DeleteNifFile - FileFinder has finished with nifScript file "ni\Test-Rohfile_0.nif".getRefNif - Finding nif with filename "Test-Rohfile_0.nif".getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.DeleteNifFile - Nif deleted.CreateNifFile - FileFinder requesting nifScript file "Meshes\ni\Test-Rohfile_0.nif".getRefNif - Finding nif with filename "Test-Rohfile_0.nif".getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.NifFile.commitChanges - Writing to "ni\Test-Rohfile_0.nif".CreateNifFile - Nif created.DeleteNifFile - FileFinder has finished with nifScript file "ni\Test-Rohfile_0.nif".getRefNif - Finding nif with filename "Test-Rohfile_0.nif".getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.DeleteNifFile - Nif deleted.NifClose - Closing nif #1-0getRegNif - Finding nif registered as #1-0.getRegNif - Nif #1-0 found.getRegNif - Nif root is good.

User avatar
Kathryn Medows
 
Posts: 3547
Joined: Sun Nov 19, 2006 12:10 pm

Post » Wed Jul 14, 2010 9:33 am

Hmm... Must have broken NifClose somewhere along the way and not noticed. Sorry. Will look into that.
User avatar
Victoria Vasileva
 
Posts: 3340
Joined: Sat Jul 29, 2006 5:42 pm

Post » Wed Jul 14, 2010 8:48 pm

Im just wondering if in later versions I can get a function to add a NiAlphaProperty to nif and some way to check for one. Is this a crazy request? Its not really important because Im still far from finishing my mod, but it is something I would like in the future.
User avatar
BEl J
 
Posts: 3397
Joined: Tue Feb 13, 2007 8:12 am

Post » Wed Jul 14, 2010 6:27 pm

Very possible; might even be in v1.0, since I want something similar for ARES. However, last time I checked the Alpha property did not work very well in Nifs. It would be really helpful if you could play with it (just in NifSkope) to see how it does and doesn't work. On a weapon, anyway, it kept flickering to opaque...
User avatar
Christine Pane
 
Posts: 3306
Joined: Mon Apr 23, 2007 2:14 am

Post » Wed Jul 14, 2010 10:21 am

oh? Ive never had an issue with it.....i think vertext colors can make it go a bit funny but :shrug:

I just remembered another one of those properties, more importnat then the alpha,a NiStencilProperty, which can be put onto a nitristrips/nitrishapes to make it double sided. Very useful f you delete part of a nif that both sides are showing on the other parts.
User avatar
Jaylene Brower
 
Posts: 3347
Joined: Tue Aug 15, 2006 12:24 pm

Post » Wed Jul 14, 2010 12:38 pm

Any updates on this? :)
User avatar
Amy Smith
 
Posts: 3339
Joined: Mon Feb 05, 2007 10:04 pm

Post » Wed Jul 14, 2010 4:26 pm

I finally have my computer working again. Yes, this took like a month.

Still struggling with setting up Visual C++ for working on this, though. I can't seem to find a simple executable installer of the Windows Platform SDK anywhere. Does anyone know of a place to get it, or if the latest Windows SDK (not-platform) is suitable for my purposes?

I hate the stupid background work to get this set-up. Has easily been the biggest hurdle in this entire project...
User avatar
Jaylene Brower
 
Posts: 3347
Joined: Tue Aug 15, 2006 12:24 pm

Post » Wed Jul 14, 2010 9:16 pm

I finally have my computer working again. Yes, this took like a month.

Still struggling with setting up Visual C++ for working on this, though. I can't seem to find a simple executable installer of the Windows Platform SDK anywhere. Does anyone know of a place to get it, or if the latest Windows SDK (not-platform) is suitable for my purposes?

I hate the stupid background work to get this set-up. Has easily been the biggest hurdle in this entire project...

Do you have an MSDN subscription?

Come on the chat on the wiki, and I can try to help you in real-time.
User avatar
Prisca Lacour
 
Posts: 3375
Joined: Thu Mar 15, 2007 9:25 am

Post » Wed Jul 14, 2010 6:02 pm

On the chat thingy, sent you a PM. PM me back and we'll chat. I really appreciate the offer.

OK, sort of fixed that, but now I get this:
1>tes4_bsa.obj : error LNK2001: unresolved external symbol _inflateInit_1>tes4_bsa.obj : error LNK2001: unresolved external symbol _inflate1>tes4_bsa.obj : error LNK2001: unresolved external symbol _inflateEnd1>D:\Bethesda Softworks\Oblivion\OBSE Source Code\NifSE\Debug - Static\NifSE.dll : fatal error LNK1120: 3 unresolved externals

So... I'm back to where I was before. Same problems I had last time. shadeMe said he'd gotten it working, but I don't see how.
User avatar
helen buchan
 
Posts: 3464
Joined: Wed Sep 13, 2006 7:17 am

Post » Wed Jul 14, 2010 11:38 pm

OK. I think I'm in business. As in, it just compiled and the compiled DLL seemed to work. I just sent it to shadeMe for confirmation that it works on machines-that-are-not-mine. Assuming this is the case, I can get to work on this tomorrow, start churning out bugfixes, and we'll see what we can do about a very brief alpha 1.2, followed by some kind of a beta, which hopefully will not last particularly long either.

Those waiting for UV2, I suspect that beta will be what you're looking for. That's up to HeX_0ff, though.
User avatar
Chelsea Head
 
Posts: 3433
Joined: Thu Mar 08, 2007 6:38 am

Post » Wed Jul 14, 2010 11:44 am

:foodndrink:

That's great news DW. Can't wait to get my grubby mitts on the next alpha :)

Just on the vague off chance you're not keeping track what with all the computer based disasters you've been having, here are the issues I'm aware of:

Array of meshes always returns the 0th element.
Rotation matrix always returns the top left element.
Probably worth checking that translation matrices aren't doing the same thing...
Autoupdate the 3d for any NifSE edited meshes when loading - though I'm not sure if that's going to require OBSE19?

Anyway, best of luck :)

HeX
User avatar
*Chloe*
 
Posts: 3538
Joined: Fri Jul 07, 2006 4:34 am

Post » Wed Jul 14, 2010 3:26 pm

:foodndrink:

That's great news DW. Can't wait to get my grubby mitts on the next alpha :)

Hehe, I can't wait for you to have it!

Just on the vague off chance you're not keeping track what with all the computer based disasters you've been having, here are the issues I'm aware of:

Array of meshes always returns the 0th element.
Rotation matrix always returns the top left element.
Probably worth checking that translation matrices aren't doing the same thing...
Autoupdate the 3d for any NifSE edited meshes when loading - though I'm not sure if that's going to require OBSE19?

Thanks! As you'll note, though, I have a "Known Issues" list in the OP - pretty sure I covered everything here. Pretty sure I checked NifGetNthChildLocalTranslation, but I'll double-check anyway.

EDIT: Double-checked, and you have that a little wrong - NifGetNthChildLocalRotation returned the top left 3x3 matrix from the 4x4 Transform matrix, while Translation doesn't use a matrix at all, just a 3 vector.

Anyway, best of luck :)

HeX

Thanks!
User avatar
natalie mccormick
 
Posts: 3415
Joined: Fri Aug 18, 2006 8:36 am

Post » Thu Jul 15, 2010 1:52 am

Thanks! As you'll note, though, I have a "Known Issues" list in the OP - pretty sure I covered everything here. Pretty sure I checked NifGetNthChildLocalTranslation, but I'll double-check anyway.

EDIT: Double-checked, and you have that a little wrong - NifGetNthChildLocalRotation returned the top left 3x3 matrix from the 4x4 Transform matrix, while Translation doesn't use a matrix at all, just a 3 vector.


Oops, haven't been back to the OP for a while... :blush:

One thing I seem to recall. When I read in the rotation (even though it was wrong) and wrote it back again, it massively scaled the object. That suggests to me that it was writing to scale rather than to rotation? Could be an issue to check with the setrotation command.

edit:

NifGetAltGrip and NifGetOffHand are both broken. They will be fixed by the beta.


This appears not to be the case, as long as you compile them as "set" rather than "let" I've been using them with NifSE, not nifscript for testing for the last month and they work just fine. I suspect all you have to do is register their return types with OBSE and they'll be dandy.

HeX
User avatar
Kira! :)))
 
Posts: 3496
Joined: Fri Mar 02, 2007 1:07 pm

Post » Thu Jul 15, 2010 1:52 am

OK. I think I'm in business. As in, it just compiled and the compiled DLL seemed to work. I just sent it to shadeMe for confirmation that it works on machines-that-are-not-mine. Assuming this is the case, I can get to work on this tomorrow, start churning out bugfixes, and we'll see what we can do about a very brief alpha 1.2, followed by some kind of a beta, which hopefully will not last particularly long either.
Downloading it right now (net's rather shaky at the moment).
User avatar
Helen Quill
 
Posts: 3334
Joined: Fri Oct 13, 2006 1:12 pm

Post » Wed Jul 14, 2010 11:13 pm

very nice to see you back :)
User avatar
XPidgex Jefferson
 
Posts: 3398
Joined: Fri Sep 08, 2006 4:39 pm

Post » Wed Jul 14, 2010 5:24 pm

Whoo, fixed the CS incompatibility thing. My messaging interface initialization was occurring in the !editor block, which obviously wasn't being run for the editor.
User avatar
Glu Glu
 
Posts: 3352
Joined: Sun Apr 01, 2007 5:39 am

Post » Wed Jul 14, 2010 4:16 pm

Whoo, fixed the CS incompatibility thing. My messaging interface initialization was occurring in the !editor block, which obviously wasn't being run for the editor.


This is good news I think :D

I'm delighted you're back able to work on this...
User avatar
Beth Belcher
 
Posts: 3393
Joined: Tue Jun 13, 2006 1:39 pm

Post » Wed Jul 14, 2010 7:14 pm

Yeah, you can get the "actual" alpha 1.1 version http://code.google.com/p/nifse/downloads/list?saved=1&ts=1277234482. This download also has any fixes listed as "fixed in the source" in the OP, such as the rotation matrix thing, but not (for example) the fixes to NifOpen/NifClose (which I haven't done yet). Since I haven't gotten confirmation yet that the DLL works for others, I haven't made it the "Featured" download yet, though. Anyone who wants to confirm that, I'd appreciate it.

It seems the "new way" of doing zlib may have massively increased the size of NifSE. This bothers me; I'll have to figure out what the hell is going on here. I don't honestly know, though...
User avatar
Robert Bindley
 
Posts: 3474
Joined: Fri Aug 03, 2007 5:31 pm

Post » Wed Jul 14, 2010 5:30 pm

I think I'll just hang about for the NifOpen/NifClose fix, since that's the most immediate problem for me, and the version I have isn't giving me any gyp right at the moment ;)
User avatar
Sunnii Bebiieh
 
Posts: 3454
Joined: Wed Apr 11, 2007 7:57 pm

Post » Thu Jul 15, 2010 3:12 am

Totally fine. Those two are next on my list, obviously.

Looks like you're registering the plugin with the messaging API inside OBSE_PluginQuery(). While it might work in this case (where the target plugin, CSE, loads before NifSE) , it is recommended in the pluginAPI that RegisterListener calls be deferred to a MessagingInterface::kMessage_PostLoad callback.

Issue here: OBSE doesn't seem to send that message in Editor mode. :unsure2:
User avatar
Danny Warner
 
Posts: 3400
Joined: Fri Jun 01, 2007 3:26 am

Post » Wed Jul 14, 2010 10:49 pm

Issue here: OBSE doesn't seem to send that message in Editor mode. :unsure2:
It does - That's how CSE sends the CSEL message to registered plugins. Here's my code:
Plugin_Load()
	g_msgIntfc = (OBSEMessagingInterface*)obse->QueryInterface(kInterface_Messaging);	g_msgIntfc->RegisterListener(g_pluginHandle, "OBSE", OBSEMessageHandler);
void OBSEMessageHandler(OBSEMessagingInterface::Message* Msg){	if (Msg->type == OBSEMessagingInterface::kMessage_PostLoad) {														// initialize script editor components		CLIWrapper::InitializeComponents(g_CommandTableData);		delete g_CommandTableData;														// register known plugins with the messaging API		g_msgIntfc->RegisterListener(g_pluginHandle, "NifSE", CSEInteropHandler);			g_msgIntfc->RegisterListener(g_pluginHandle, "ConScribe", CSEInteropHandler);	 														// dispatch message to all listeners		_D_PRINT("Plugin interop initialized; Message dispatched\n");		g_msgIntfc->Dispatch(g_pluginHandle, 'CSEL', NULL, 0, NULL);	}}

User avatar
Chris BEvan
 
Posts: 3359
Joined: Mon Jul 02, 2007 4:40 pm

PreviousNext

Return to IV - Oblivion