The forum has been set to read-only mode. For community discussion and questions, head over to our Discord: https://discord.taleoftwowastelands.com

Request for tutorial - Recompiling Scripts

General discussion of Tale of Two Wastelands
Befo
Posts: 44
Joined: Thu Jan 24, 2013 3:59 am

Request for tutorial - Recompiling Scripts

Post by Befo » Thu Feb 07, 2013 5:34 am

I know there is a thread here with some basic info on how to recompile the scripts in FO3 mods (FOSE) but I was wondering if someone would be willing to do a video tutorial on exactly how to do this, or maybe a sticky'd thread with a screenshot walkthrough. I think it would help a lot of us who have very limited modding experience to transfer our favorite FO3 mods to TTW to test, while at the same time give us a chance to contribute to the TTW experience. Besides, as TTW grows, the more of us there are who can pass along the proper way to do this will go a long way to freeing up others to work on new content and bug fixes.



If this has been asked and answered before, and something is already out there, my apologies. 


/befo

TJ
Posts: 2181
Joined: Mon Sep 17, 2012 1:06 pm

My apologies for not doing

Post by TJ » Thu Feb 07, 2013 12:34 pm

My apologies for not doing pics or video, I'm about to leave for work. So you've got this esm/p file with a script in it. Can be a FO3 Fose mod, can be a straight NV mod with a script that you merged into a new esp. Doesn't matter where it came from, all that matters is the esm/p is set up for NV and the script needs recompiled.


Step 1: You have NVSE in your game? Good, you need it to mess with am (EDIT: FOSE) script. In your FNV folder you have a file called nvse_loader.exe. Make a shortcut to it and place it where you want it. You're set? OK Right click the shortcut and select properties on the "Shortcut" tab under the line target go to the very end after the " and place a space and "-editor". Use this shortcut to boot GECK from now on. Congratulations your GECK is infinately more powerful now.


Step 2: Open your new more powerful Geck and set your file as active. You can use TESSnip to also open the same esm/p to check the scpt line for what needs recompiled and just go down the line one at a time. Find the name of the first one in TESSnip- GECK Object Window> Miscellanious> Script then click the filter box and start typing the name of the script. It also will have an asterisk under count I believe to show that the active esm/p modifies this script. When you find it double click the script on the right side of object window and the script will open up. At this point all you have to do is click the floppy disk icon on that window. NOT the one that's half red. If it recompiles successfully it wont tell you anything. X out of that window and go to the next one. If not, it'll tell you what line needs to be fixed before you try again. After that it's just trial and error.  Do all the scripts in your esp NOT all scripts in the game. Do NOT recompile all scripts either.


Step 3: Save, exit GECK, go make sure it works right!


My project Dash is on Kickstarter!



Befo
Posts: 44
Joined: Thu Jan 24, 2013 3:59 am

Thanks for the guide, TJ.

Post by Befo » Thu Feb 07, 2013 5:25 pm

Thanks for the guide, TJ.


 


A few issues I'm running in to:


1) TESSnip - I was only able to find TESSnip for Oblivion through a Google search, and it gives me an error when trying to load up a FO3 file. Is there a Fallout specific version? If so, where would I find it?



2) I was able to successfully open Amy Wong.esm and start recompiling the scripts. On occasion, after I would click the disk icon then go to click X to close, certain of the scripts i would ask me if I wanted to save. I would hit Yes, then attempt to close the window again, and the same menu would pop up, asking if I wanted to save. If I clicked No, then the window would close as it should. Even if I clicked No, the file would show with an asterisk in the count column, so I'm guessing it recompiled. Is that right?



3) After recompiling all fifty or so scripts (all that began with AW for Amy Wong), I tried to Save the file so I could exit. Unfortunately, Amy Wong is an .esm and it only wants me to save in the .esp format. How do I address that?



Thanks for the help!



EDIT: One other thing. I know I need to change my GECK so that I can allow multiple masters by changing/adding bAllowMultipleMasterLoad=1 the GECKCustom.ini. My issue is that I can't seem to find the GECKCustom.ini file. I have the NV GECK installed directly into my main FNV directory. 


/befo

Befo
Posts: 44
Joined: Thu Jan 24, 2013 3:59 am

Solved two of these I think.

Post by Befo » Thu Feb 07, 2013 5:56 pm

Solved two of these I think.


I found the GECKCustom.ini in my Documents\My Games\FalloutNV directory with the other .ini files. I updated the FO3 one while I was at it.



I saved the recompiled scripts as a separate .esp that I'll load after the AmyWong.esm master. I think that's how it was done for the scripts Shadow did for Mothership Zeta Crew, so I'm trying it here. 



How do permissions work here? Can I upload my recompiled scripts here or do I need permission from the original author?


/befo

JaxFirehart
Posts: 3003
Joined: Wed Sep 12, 2012 12:33 am

Far as I'm concerned, so long

Post by JaxFirehart » Thu Feb 07, 2013 6:51 pm

Far as I'm concerned, so long as all you did was recompile the scripts, and you aren't trying to take credit for it, its fine.


The script that wouldn't save was doing that because there was an error in it. It is not recompiled and MAY still cause issues. If you post the trouble script here I can take a look at it and see if its anything obvious.


Finally, as for saving it as an esp: The GECK won't let you save .esm files or create new .esm files. You have to use FNVEdit or TESnip or Wrye Flash to change it from an esm to an esp, recompile the scripts, save and close the geck, and finally use one of those programs to change it back into an esm.



TJ
Posts: 2181
Joined: Mon Sep 17, 2012 1:06 pm

TESSnip comes packaged with

Post by TJ » Thu Feb 07, 2013 7:03 pm

TESSnip comes packaged with FOMM. If you're using that you've already got it. Once you have it if you use windows to try to open an esm/p it'll pop up a box saying it doesn't know how to open this file, you can click open with browse to FOMM.exe and from then on Windows will open esm/p files with TESSnip. Even if you use  NMM for your mods it's handy to have FOMM installed for the features it comes packed with.


 


The asterisk in the count column just shows that that script is modified by the active file. I should've included this in my last post but install GECK Powerup and instead of acting wonky when a script has an error it'll tell you what line the error is on and a brief description of what's wrong.


My project Dash is on Kickstarter!



Befo
Posts: 44
Joined: Thu Jan 24, 2013 3:59 am

Here is the first one I tried

Post by Befo » Thu Feb 07, 2013 11:02 pm

Here is the first one I tried that wouldn't recompile. Sorry for the long post, but I don't know how to hide this as a spoiler.


 


[collapsed title=Script]


 



Scriptname AWActorAmyScript

 



 


ref xREF


short a


short b


float f


short intel


 


BEGIN OnStartCombat


set xREF to getCombatTarget


if xREF.getInFaction AWFactionAmy == 1


xREF.stopCombat


stopCombat


else


if AWQShareXP.level > 0


if xREF != Player


if xREF.hasMagicEffect AWBaseEffShareXP == 0


xREF.castImmediateOnSelf AWEffShareXP


endif


endif


endif


 


if hasMagicEffect AWBaseEffUseDrug1 == 0


castImmediateOnSelf AWEffUseDrug1


endif


if hasMagicEffect AWBaseEffUseDrug2 == 0


castImmediateOnSelf AWEffUseDrug2


endif


if hasMagicEffect AWBaseEffUseDrug3 == 0


castImmediateOnSelf AWEffUseDrug3


endif


endif


END


 


BEGIN OnCombatEND


; ########################## Reset Hit Points ##########################


set f to getAV Health / getPermanentActorValue Health


 


set a to (20 * getAV Endurance) + (10 * getLevel)


if a < 150


set a to 150


endif


setAV Health a


restoreAV Health a


forceAV Health a


 


set a to a - (a * f)


if a > 0


damageAV Health a


endif


; ########################## Player Relationship ##########################


if getInSameCell Player


if AWContExpAmyREF.getItemCount AWTokenFriendlyFire == 0


set AWQAmy.Relationship to AWQAmy.Relationship + AWQConst.ARelModerateGain


elseif AWContExpAmyREF.getItemCount AWTokenFriendlyFire == 1


set AWQAmy.Relationship to AWQAmy.Relationship + AWQConst.ARelMinorGain


endif


if AWQAmy.Relationship > AWQConst.ARelMaxCap


set AWQAmy.Relationship to AWQConst.ARelMaxCap


endif


endif


AWContExpAmyREF.removeItem AWTokenFriendlyFire 99999


; ########################## Accumlate Combat Experience ##########################


AWContExpAmyREF.addItem AWTokenCombat 1


if AWContExpAmyREF.getItemCount AWTokenCombat > AWQConst.ALvlCombat


set a to 1 + getAV Confidence


if a <= 4


setAV Confidence a


endif


 


set a to 1 + getAV Strength


if a <= 10


forceAV Strength a


endif


 


set a to 1 + getAV Perception


if a <= 10


forceAV Perception a


endif


 


set a to 1 + getAV Agility


if a <= 10


forceAV Agility a


endif


 


resetHealth


restoreav perceptioncondition 100


restoreav endurancecondition 100


restoreav leftattackcondition 100


restoreav leftmobilitycondition 100


restoreav rightattackcondition 100


restoreav rightmobilitycondition 100


 


AWContExpAmyREF.removeItem AWTokenCombat AWQConst.ALvlCombat


endif


; ########################## Accumlate Weapon Experience ##########################


set intel to getAV Intelligence


if IsWeaponInList AWLstWeapSmGuns == 1


AWContExpAmyREF.addItem AWTokenSmGuns intel


elseif IsWeaponInList AWLstWeapBgGuns == 1


AWContExpAmyREF.addItem AWTokenBgGuns intel


elseif IsWeaponInList AWLstWeapEnergy == 1


AWContExpAmyREF.addItem AWTokenEnergy intel


elseif IsWeaponInList AWLstWeapMelee == 1


AWContExpAmyREF.addItem AWTokenMelee intel


elseif IsWeaponInList AWLstWeapExplosives == 1


AWContExpAmyREF.addItem AWTokenExplosives intel


elseif IsWeaponInList AWLstWeapUnarmed == 1


AWContExpAmyREF.addItem AWTokenUnarmed intel


elseif IsWeaponInList AWLstWeapMedic == 1


AWContExpAmyREF.addItem AWTokenMedic intel


elseif getItemCount AWTokenTagSmGuns != 0


AWContExpAmyREF.addItem AWTokenSmGuns intel


elseif getItemCount AWTokenTagBgGuns != 0


AWContExpAmyREF.addItem AWTokenBgGuns intel


elseif getItemCount AWTokenTagEnergy != 0


AWContExpAmyREF.addItem AWTokenEnergy intel


elseif getItemCount AWTokenTagMelee != 0


AWContExpAmyREF.addItem AWTokenMelee intel


elseif getItemCount AWTokenTagExplosives != 0


AWContExpAmyREF.addItem AWTokenExplosives intel


elseif getItemCount AWTokenTagUnarmed != 0


AWContExpAmyREF.addItem AWTokenUnarmed intel


else


; Unknown weapon, try to guess what kind of weapon by its anim


; IsWeaponSkillType doesn't seems to work


if getWeaponAnimType == 2 || getWeaponAnimType == 3


AWContExpAmyREF.addItem AWTokenMelee intel


elseif getWeaponAnimType == 7 || getWeaponAnimType == 8


AWContExpAmyREF.addItem AWTokenBgGuns intel


elseif getWeaponAnimType == 4 || getWeaponAnimType == 5 || getWeaponAnimType == 6


set a to intel / 2


AWContExpAmyREF.addItem AWTokenSmGuns a


AWContExpAmyREF.addItem AWTokenEnergy a


elseif getWeaponAnimType == 9 || getWeaponAnimType == 10 || getWeaponAnimType == 11


AWContExpAmyREF.addItem AWTokenExplosives intel


elseif getWeaponAnimType == 1


AWContExpAmyREF.addItem AWTokenUnarmed intel


endif


endif


if AWContExpAmyREF.getItemCount AWTokenSmGuns > AWQConst.ALvlSmGuns


set a to 1 + getAV SmallGuns


if a > 100


set a to 100


endif


forceAV SmallGuns a


AWContExpAmyREF.removeItem AWTokenSmGuns AWQConst.ALvlSmGuns


endif


if AWContExpAmyREF.getItemCount AWTokenBgGuns > AWQConst.ALvlBgGuns


set a to 1 + getAV BigGuns


if a > 100


set a to 100


endif


forceAV BigGuns a


AWContExpAmyREF.removeItem AWTokenBgGuns AWQConst.ALvlBgGuns


endif


if AWContExpAmyREF.getItemCount AWTokenEnergy > AWQConst.ALvlEnergy


set a to 1 + getAV EnergyWeapons


if a > 100


set a to 100


endif


forceAV EnergyWeapons a


AWContExpAmyREF.removeItem AWTokenEnergy AWQConst.ALvlEnergy


endif


if AWContExpAmyREF.getItemCount AWTokenMelee > AWQConst.ALvlMelee


set a to 1 + getAV MeleeWeapons


if a > 100


set a to 100


endif


forceAV MeleeWeapons a


AWContExpAmyREF.removeItem AWTokenMelee AWQConst.ALvlMelee


endif


if AWContExpAmyREF.getItemCount AWTokenExplosives > AWQConst.ALvlExplosives


set a to 1 + getAV Explosives


if a > 100


set a to 100


endif


forceAV Explosives a


AWContExpAmyREF.removeItem AWTokenExplosives AWQConst.ALvlExplosives


endif


if AWContExpAmyREF.getItemCount AWTokenUnarmed > AWQConst.ALvlUnarmed


set a to 1 + getAV Unarmed


if a > 100


set a to 100


endif


forceAV Unarmed a


AWContExpAmyREF.removeItem AWTokenUnarmed AWQConst.ALvlUnarmed


endif


; ########################## Weapon Repair ##########################


set a to getWeaponHealthPerc


if a < AWQConst.AEquipMinHealth


set b to getAV Repair


if a < b


setWeaponHealthPerc b


endif


AWContExpAmyREF.addItem AWTokenRepair intel


endif


if AWContExpAmyREF.getItemCount AWTokenRepair > AWQConst.ALvlRepair


set a to 1 + getAV Repair


if a > 100


set a to 100


endif


forceAV Repair a


AWContExpAmyREF.removeItem AWTokenRepair AWQConst.ALvlRepair


endif


; ########################## Get Aids ##########################


if getItemCount Stimpak < AWQConst.AMinStimpak && AWContTHREF.getItemCount Stimpak >= 2


AWContTHREF.removeItem Stimpak 2


addItem Stimpak 2


endif


; ########################## Use Medicine Skill ##########################


set f to getAV Health / getPermanentActorValue Health


if f < AWQConst.ALvlEndurance


set b to 1 + getAV Endurance


if b <= 10


forceAV Endurance b


endif


endif


 


if f < 1.0


set a to getAV Medicine


if a > 100


set a to 100


endif


 


restoreAV Health a


restoreAV perceptionCondition a


restoreAV enduranceCondition a


restoreAV leftAttackCondition a


restoreAV leftMobilityCondition a


restoreAV rightAttackCondition a


restoreAV rightMobilityCondition a


 


AWContExpAmyREF.addItem AWTokenMedic intel


endif


 


if AWContExpAmyREF.getItemCount AWTokenMedic > AWQConst.ALvlMedic


set a to 1 + getAV Medicine


if a > 100


set a to 100


endif


forceAV Medicine a


AWContExpAmyREF.removeItem AWTokenMedic AWQConst.ALvlMedic


endif


; ########################## Reset Health if is teammate ##########################


if getPlayerTeammate == 1


resetHealth


restoreav perceptioncondition 100


restoreav endurancecondition 100


restoreav leftattackcondition 100


restoreav leftmobilitycondition 100


restoreav rightattackcondition 100


restoreav rightmobilitycondition 100


endif


; ########################## Use Stimpak ##########################


if getAV Health < getPermanentActorValue Health


if getAV Health < AWQConst.AMinHPtoStimpak


if getItemCount Stimpak != 0


removeItem Stimpak 1


resetHealth


endif


endif


endif


; ########################## Disarm Weapon ##########################


if AWQAmy.disarm == 1


if hasMagicEffect AWBaseEffDisarm == 0


castImmediateOnSelf AWEffDisarm


endif


endif


END


 


BEGIN OnHit Player


AWContExpAmyREF.addItem AWTokenFriendlyFire 1


if AWContExpAmyREF.getItemCount AWTokenFriendlyFire == 1


set AWQAmy.Relationship to AWQAmy.Relationship - AWQConst.ARelMinorLost


elseif AWContExpAmyREF.getItemCount AWTokenFriendlyFire == 2


set AWQAmy.Relationship to AWQAmy.Relationship - AWQConst.ARelModerateLost


else


set AWQAmy.Relationship to AWQAmy.Relationship - AWQConst.ARelMajorLost


endif


if AWQAmy.Relationship < AWQConst.ARelMinCap


set AWQAmy.Relationship to AWQConst.ARelMinCap


endif


if AWQAmy.hintHitAmy != 1


set AWQAmy.hintHitAmy to 1


showMessage AWMsgHint1001


endif


END


 


BEGIN OnDeath


AWContTHREF.removeAllItems AWAmyREF


AWContTHFoodREF.removeAllItems AWAmyREF


AWAmyREF.setPlayerTeammate 0


AWAmyREF.removeFromFaction FollowerFaction


ShowMessage AWMsgDead


END

[/collapsed] 


/befo

Befo
Posts: 44
Joined: Thu Jan 24, 2013 3:59 am

Bah, I figure out how to do

Post by Befo » Thu Feb 07, 2013 11:06 pm

Bah, I figure out how to do it as a spoiler, but it doesn't want to save the formatting with copy and paste...


/befo

TJ
Posts: 2181
Joined: Mon Sep 17, 2012 1:06 pm

Please let that be a

Post by TJ » Thu Feb 07, 2013 11:56 pm

 I'm gonna download this mod after dinner to take a look at that script. No promises but I'll see what I can do.


My project Dash is on Kickstarter!



Befo
Posts: 44
Joined: Thu Jan 24, 2013 3:59 am

Well, that was just one of

Post by Befo » Fri Feb 08, 2013 12:20 am

Well, that was just one of the ones that didn't recompile. The mod has a few dozen scripts (maybe around 50 or so) and about a third had issues recompiling. That is unless I was doing it wrong, but your instructions seemed pretty clear. 


/befo

Post Reply