Jump to content

Notepad++ config for Papyrus


Recommended Posts

I'm not sure how to get this to work, but can you please help me out with error.

 

Error

 

 

C:\Program Files (x86)\Steam\steamapps\common\skyrim\Papyrus Compiler\NPPScriptCompile.bat
Process started >>>

C:\Program Files (x86)\Notepad++>cd "C:\Program Files (x86)\Steam\steamapps\common\Skyrim\Mod Organizer\mods\"
The system cannot find the path specified.

C:\Program Files (x86)\Notepad++>"C:\Program Files (x86)\Steam\steamapps\common\skyrim\Papyrus Compiler\PapyrusCompiler.exe" "" -f="C:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\scripts\Source\TESV_Papyrus_Flags.flg" -i="C:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\scripts\source\;source" -o="\"
Starting 1 compile threads for 1 files...
Cannot set output folder to """ - Illegal characters in path.
Compiling ""...
No output generated for , compilation failed.

Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on
<<< Process finished. (Exit code -1)
================ READY ================

 

 

Also I'm confused by this step...

 

"C:\Program Files (x86)\Steam\steamapps\common\skyrim\Papyrus Compiler\NPPScriptCompile.bat" "$(FILE_NAME)" "$(CURRENT_DIRECTORY)"

 

This line... "$(FILE_NAME)" "$(CURRENT_DIRECTORY)"

 

I've added the directory, but I prefer not to use steam because it likes to reset my game... either or I have to sets of Skyrim installed.

 

 

Link to comment
  • 1 month later...

Very useful tools. Though I don't use a white background editor :dodgy: . So I made my own color set to use with the dark Zenburn theme of NPP.

 
Color SS and import profile


Also added some (new?) FO4 words to the lists


Folding code 2:
Open: Struct Group
Close: EndStruct EndGroup
 
1st Group:
ApplyToRef CallGlobalFunctionNoWait CallGlobalFunction CancelTimerGameTime CancelTimer AddKeyword AddTextReplacementData ApplyConveyorBelt ApplyFanMotor IsFanMotorOn AttachMod AttachModToInventoryItem AttachTo CanProduceForWorkshop ClearFromOldLocations ConveyorBeltOn CountActorsLinkedToMe CountLinkedRefChain CountRefsLinkedToMe DamageValue DisableLinkChain Drop DropFirstObject EnableLinkChain FindAllReferencesOfType FindAllReferencesWithKeyword GetActorRefOwner GetActorsLinkedToMe GetBaseValue GetEncounterZone GetInventoryValue GetComponentCount GetLinkedRefChain GetLinkedRefChildren GetLocRefTypes GetRadioFrequency GetRadioVolume GetResourceDamage GetSafePosition GetRefsLinkedToMe GetWorkshopOwnedObjects GetWorkshopResourceDamage GetWorkshopResourceObjects GetTeleportCell GetTransitionCell GetTransmitterDistance GetValuePercentage HasActorRefOwner HasDirectLOS HasKeywordInFormList HasLocRefType HasSharedPowerGrid IsConveyorBeltOn IsCreated IsDeleted IsDestroyed IsOwnedBy IsPowered IsQuestItem IsRadioOn IsRefInTransitionCell IsTeleportAreaLoaded IsWithinBuildableArea MakeRadioReceiver MakeTransmitterRepeater ModValue MoveToNearestNavmeshLocation OpenWorkshopSettlementMenuEx OpenWorkshopSettlementMenu RaidTargetsAvailable PlaceAtNode PauseAudio PreloadExteriorCell PreloadTargetArea RecalculateResources RemoveComponents RemoveItemByComponent RemoveKeyword RemoveAllMods RemoveAllModsFromInventoryItem RemoveMod RemoveModFromInventoryItem Repair ResetKeyword RestoreValue ResumeAudio ReverseConveyorBelt SayCustom SetActivateTextOverride SetActorRefOwner SetAttractionActive SetConveyorBeltVelocity SetDirectAtTarget SetHarvested SetLinkedRef SetLocRefType SetPersistLoc SetPlayerHasTaken SetRadioOn SetRadioFrequency SetRadioVolume StartWorkshop StoreInWorkshop WaitFor3DLoad WaitForWorkshopResourceRecalc Unlock rampRumble IsNearPlayer MoveToIfUnloaded getLinkedRefArray AddKeyIfNeeded FanMotorOn GetSelfAsActor HasOwner IsEnabled SellItem SplineTranslateToRef TranslateToRef IsInLocation ModObjectiveGlobal SetAllStages SetQuestStage GetQuestStageDone SetObjectiveSkipped ResetSpeechChallenges HasObjective GetActorAt GetFirstOwnedObject EnableAll DisableAll EvaluateAll MoveAllTo IsOwnedObjectInList KillAll StartCombatAll ResetAll AddRefCollection AddArray LinkCollectionTo AddRef GetCount RemoveAll RemoveRef ForceRefIfEmpty GetRef GetActorRef RemoveFromRef TryToDisableNoWait TryToEnableNoWait TryToEnable TryToEvaluatePackage TryToClear TryToGetActorValue TryToGetValue TryToSetActorValue TryToSetValue GetPropertyValue CallFunctionNoWait CallFunction CastAs IsBoundGameObjectAvailable RegisterForCustomEvent RegisterForDetectionLOSGain RegisterForDetectionLOSLost RegisterForDirectLOSGain RegisterForDirectLOSLost RegisterForDistanceLessThanEvent RegisterForDistanceGreaterThanEvent RegisterForHitEvent RegisterForMagicEffectApplyEvent RegisterForMenuOpenCloseEvent RegisterForPlayerSleep RegisterForPlayerTeleport RegisterForPlayerWait RegisterForRadiationDamageEvent RegisterForRemoteEvent RegisterForLooksMenuEvent RegisterForTutorialEvent SendCustomEvent SetPropertyValueNoWait SetPropertyValue StartTimerGameTime StartTimer UnregisterForAllEvents UnregisterForAllCustomEvents UnregisterForAllHitEvents UnregisterForAllMagicEffectApplyEvents UnregisterForAllMenuOpenCloseEvents UnregisterForAllRadiationDamageEvents UnregisterForAllRemoteEvents UnregisterForAllTrackedStatsEvents UnregisterForCustomEvent UnregisterForDistanceEvents UnregisterForHitEvent UnregisterForMagicEffectApplyEvent UnregisterForMenuOpenCloseEvent UnregisterForPlayerSleep UnregisterForPlayerTeleport UnregisterForPlayerWait UnregisterForRadiationDamageEvent UnregisterForRemoteEvent UnregisterForLooksMenuEvent UnregisterForTutorialEvent HasEverBeenCleared IsLinkedLocation ModifyKeywordData ForceDisableSSRGodraysDirLight GivePlayerCaps InitializeMarkerDistances IsVATSControlsEnabled IsVATSPlaybackActive IsFastTravelControlsEnabled IsFavoritesControlsEnabled IsJumpingControlsEnabled IsPluginInstalled IsPlayerInRadioRange IsPlayerListening IsPlayerRadioOn PassTime RewardPlayerXP TurnPlayerRadioOn IsPlayerEnemy DumpEventRegistrations MakePlayerFriend AttemptAnimationSetSwitch CanFlyHere ChangeAnimArchetype ChangeAnimFlavor ChangeHeadPart Dismount EndDeferredKill FollowerWait FollowerFollow FollowerSetDistanceNear FollowerSetDistanceMedium FollowerSetDistanceFar HasDetectionLOS IsAIEnabled IsBeingRidden IsBeingRiddenBy IsDismembered IsInIronSights IsInPowerArmor IsInScene IsOverEncumbered IsOwner IsSeatOccupied IsTalking Dismember MarkItemAsFavorite DisallowCompanion AllowCompanion ChangeAnimFaceArchetype SwitchToPowerArmor SnapIntoInteraction WouldBeStealing WouldRefuseCommand DrawWeapon DogPlaceInMouth DogDropItems IsRadio
 
 
2nd Group:
OnTimer OnTimerGameTime OnPlayerFireWeapon OnPlayerFallLongDistance OnPlayerHealTeammate OnCripple OnPlayerEnterVertibird OnPlayerUseWorkBench OnPlayerSwimming OnRadiationDamage OnPlayerModArmorWeapon OnItemEquipped OnPlayerSleepStart OnPlayerSleepStop OnPlayerTeleport OnPipboyRadioDetection OnPlayerDialogueTarget OnPowerOn OnPowerOff OnSpellCast OnWorkshopMode OnWorkshopObjectDestroyed OnWorkshopObjectGrabbed OnWorkshopObjectMoved OnWorkshopObjectPlaced OnWorkshopNPCTransfer OnWorkshopObjectRepaired OnCommandModeCompleteCommand OnCommandModeEnter OnCommandModeExit OnCommandModeGiveCommand OnCompanionDismiss OnConsciousnessStateChanged OnDeferredKill OnDifficultyChanged OnEnterSneaking OnEscortWaitStart OnEscortWaitStop OnHolotapeChatter OnHolotapePlay OnItemUnequipped OnKill OnPartialCripple OnPickpocketFailed OnPlayerCreateRobot OnPlayerLoadGame OnPlayerModRobot OnSit OnSpeechChallengeAvailable OnExitFurniture OnEntryRun OnQuestInit OnQuestShutdown OnStageSet OnStoryActorAttach OnStoryIronSights OnStoryLocationLoaded OnStoryMineExplosion OnStoryPickPocket OnAnimationEventUnregistered OnDistanceLessThan OnDistanceGreaterThan OnMenuOpenCloseEvent OnPlayerWaitStart OnPlayerWaitStop OnLooksMenuEvent OnTutorialEvent OnLocationCleared OnLocationLoaded OnAliasInit OnAliasReset OnAliasShutdown
 
 
4th Group:
const

 
Also wanted to note that the function list code doesn't properly get the State. At least not in NPP 7.0. It looks like it only parses the first "function" node inside "parser". I fixed the comment matching and I merged them to a dirty looking combo and added group and struct also (see screenshots in spoiler)

 

            <parser id="papyrus_function" displayName="Papyrus" commentExpr="(;/.*?/;)|(;.*?$)|(\{.*?\})">
                <function displayMode="$functionName"
                        mainExpr="(^[\t ]*([\w]+[\t ]+)?(function|event)[\t ]+\w+[\t ]*\(.*?\))|(^[\t ]*?(state|group|struct)[\t ]+\w+[\t ]*)">
                        <functionName>
                                <nameExpr expr="(\w+[\t ]*\(.*?\))|((state|group|struct)[\t ]+\w+)"/>
                        </functionName>
                </function>
            </parser>

post-516911-0-53518000-1476249945_thumb.pngpost-516911-0-23577100-1476249947_thumb.png

 


Though it has limited uses that I can see.

 

Did I mention how much I hate RegEx's sometimes  ;)

Link to comment

Thanks for this. I got as far as entering the code into the NPPExec. But when I run it, it throws this error:

 

"C:\Program Files (x86)\Steam\steamapps\common\skyrim\Papyrus Compiler\NPPScriptCompile.bat" "new 1" ""

Process started >>>

 

C:\Program Files (x86)\Notepad++>cd "C:\Program Files (x86)\Steam\steamapps\common\Skyrim\Mod Organizer\mods\"

The system cannot find the path specified.

 

C:\Program Files (x86)\Notepad++>"C:\Program Files (x86)\Steam\steamapps\common\skyrim\Papyrus Compiler\PapyrusCompiler.exe" "new 1" -f="C:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\scripts\Source\TESV_Papyrus_Flags.flg" -i="C:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\scripts\source\;source" -o="\"

Starting 1 compile threads for 1 files...

Cannot set output folder to """ - Illegal characters in path.

Compiling "new 1"...

No output generated for new 1, compilation failed.

 

Batch compile of 1 files finished. 0 succeeded, 1 failed.

Failed on new 1

<<< Process finished. (Exit code -1)

================ READY ================

Any ideas?

Link to comment

Thanks for this. I got as far as entering the code into the NPPExec. But when I run it, it throws this error:

 

Any ideas?

 

 

Post the content of the .bat file you are using.

Probably there is an error inside.

Link to comment

 

"C:\Projects\TESV\Build\PC\Papyrus compiler\PapyrusCompiler.exe" %1 -f="TESV_Papyrus_Flags.flg" -i="C:\Projects\TESV\Build\Source\DLC01\Scripts" -o="C:\Projects\TESV\Build\PC\Data\Scripts"
pause

 

 

Looking at your result lines and your bat command I suppose that the Exec is pointing to the wrong bat file.

Link to comment

Either that or he pasted the contents of the wrong file. The looks of it is that he pasted the contents of the Skyrim CK provided file. However, from the previous posting of the "error" message it appears to be running a different file as the displayed paths are different (as they should be).

Link to comment

to me, it seems like the error is that it thinks I'm using Mod Organizer, which I'm not. Question is, how do I fix this?

 

Are you using NMM and is skyrim in the default path of "C:\Program Files (x86)\Steam\steamapps\common\Skyrim"?

 

Edit: Should also ask if you're trying to compile for Skyrim or Fallout 4?

Link to comment

 

to me, it seems like the error is that it thinks I'm using Mod Organizer, which I'm not. Question is, how do I fix this?

Are you using NMM and is skyrim in the default path of "C:\Program Files (x86)\Steam\steamapps\common\Skyrim"?

 

Edit: Should also ask if you're trying to compile for Skyrim or Fallout 4?

yes, yes, and skyrim.
Link to comment

Maybe CPU can explain why if you use MO you'd need to change the path to the MO folder. The papyrus command contains all absolute paths.

It makes perfect sense that if I use MO I'd need to change the path to the MO folder. However, it seems to be pointing to the MO folder somehow even though I don't use it. 

Link to comment

...

Just added and tested your improvements.

 

FunctionList works way better.

And the new functions from FO4 are just good.

 

I am try to add a secondary compiler bat script for FO4, and then I will release the new version, with full credits on your work.

 

Link to comment

The last batch file I posted had a little bug that prevented it from working properly with FO4. This takes care of that. I removed the file from the last post as it only had 1 download.

99.999999% I will add this too.

Link to comment

I deleted my other 3 posts since they contained erroneous information in parts. This has my latest script which works with FO4 with some caveats detailed in the README file.

 

README here and in the archive

 

 

This README will try to explain all the usage scenarios and caveats around
compiling Skyrim and Fallout 4 papyrus with this script.
 
********
Basic usage parameters
********
 
    dm_NPPScriptCompile.bat {-fo4|-sk} [psc script file] {output folder}
     
    Surround paths with double quotes or parsing errors may occur.
     
        {-fo4}   optional - Tells script to use Fallout 4 options.
        {-sk}    optional - Tells script to use Skyrim options.
        {-skse}  optional - Tells script to use Skyrim Special Edition options.
        [psc script file] is required. This should be full path and filename.
            If only a filename is specified, the batch will search the output
            folder, if still not found also the game source folder.
        {output folder} is optional. If not specified then output is
            sent to the game's default scripts folder.
 
********
Editing default settings inside the script
********
 
The batch file uses a few environment variables to do its job. Some of these
require that you modify them to fit the settings of your computer. I will
show the default line as shipped with the script and then detail an
explanation of how to properly set it.
 
    set GAME_MODE=SK
        Sets the default game compile mode if no parameter on the command
        line is set { -fo4 | -sk | -skse }
    
    set CUSTOM_IMPORTS="C:\Some\Path;C:\Some\Other\Path"
        Commented out by default. If you have additional import paths that you
        need, uncomment it and edit the paths appropriately. Use a semi-colon
        to separate the paths just as the papyrus compiler expects.
    
    set SK_GAME_PATH="C:\Program Files (x86)\Steam\SteamApps\common\Skyrim\"
    set SKSE_GAME_PATH="C:\Program Files (x86)\Steam\SteamApps\common\Skyrim Special Edition\"
    set FO4_GAME_PATH="C:\Program Files (x86)\Steam\SteamApps\common\Fallout 4\"
        Tells the script where to find the game files as well as the Papyrus
        compiler. This will need to be changed if you have a non default
        installation path.
    
    set SK_FLAG_FILE=TESV_Papyrus_Flags.flg
        The filename of the Skyrim Papyrus flag file. Normally the default
        is ok, but some users may have a customized one. You may change the
        name here. This file is expected to be found in one of the import
        folders.
    
    set FO4_FLAG_FILE=Institute_Papyrus_Flags.flg
        The filename of the Fallout 4 Papyrus flag file. Normally the default
        is ok, but some users may have a customized one. You may change the
        name here. This file is expected to be found in one of the import
        folders.
    
    set SPAM_ME=no
        A debugging variable. Should normally be left to "no". Changing it to
        anything else will cause the script to show every line as it is
        executed. This includes all the comments in the script file. This will
        generate lots of spam in the console.
 
 
********
Compiling Skyrim/Skyrim Special Edition Scripts
********
There are no special things to be aware of for compiling skyrim files. Just
run the script with the proper parameters and things get done.
 
 
********
Comping Fallout 4 Scripts
********
There are a few things to note about compiling scripts for Fallout 4.
 
1) If the script has a sub folder structure then they must be in the format
    scripts\source\folder\my_script.psc
 
    If you created the original script in the Creation Kit it should have
    handled all of that for you. The ScriptName in the file should also have
    the proper format of "folder:my_script".
 
2) If the script does not have a sub folder structure it can be anywhere.
 
3) Source input file cannot be on a network path that is not mapped as a drive
    letter if they use a sub folder structure.
    
    The path: \\pc-nas\share\mod_work\scripts\source\my_mod\my_script.psc
    Will not compile. The papyrus compiler requires the working directory
    to be the parent of the "my_mod" folder in this example. The Windows
    CMD interpreter running the script will not do that.
    
    The path: \\pc-nas\share\mod_work\scripts\source\my_script.psc
    Will compile provided it doesn't use the sub folder structure in it's
    "ScriptName" header line. This script will spit out an error
    "CMD does not support UNC paths as current directories." Which can be
    ignored in this case.
 
 

 

 

 

Known issues: Compiling Fallout 4 scripts in Data\Scripts\Source\anything except Base or User (i.e. Data\Scripts\Source\DLC01) will fail. The batch file has to do some path parsing tricks and it doesn't play nice with that. Solution is to copy them to the appropriate folder inside User i.e. Data\Scripts\Source\User\DLC01\WorkshopRobotScript.psc (you should be doing that to edit vanilla scripts anyway).

 

*Edit: Updated 2017/04/15 to fix typo in custom imports variable expansion causing hang. Also changed order so it will use custom imports before vanilla files in case of duplicate script names.

dm_NPPScriptCompile_v5.zip

Link to comment
  • 2 weeks later...

Updated post with new batch file to add SKSE support. Using this post as a pseudo bump to notify watchers of such.

 

Thank you for taking care of the improvements.

I had no time to integrated all the changes you did (that I am using for myself) inside the main file.

Link to comment

I'm still confused why they moved the source folder. Oh well.

 

Next on the TODO list is make it generate an xml for compiling because the command line can quickly get too large. I think that requires using full paths though not relative ones. So trying to get the custom imports when there's a lot might be tricky. Unless I have it read a plain text file of 1 path per line and generate the xml that way. Any suggestions?

Link to comment

I'm still confused why they moved the source folder. Oh well.

 

 

Just did a mod for SSE (just for test.)

All the items go in the "Mods" folder.

So the Data folder is now clean.

Link to comment

 

I'm still confused why they moved the source folder. Oh well.

 

Just did a mod for SSE (just for test.)

All the items go in the "Mods" folder.

So the Data folder is now clean.

That sort of makes sense then. Something tells me I'll have another revision of the compiler batch after I get to do some testing.

Link to comment

CPU, on 31 Oct 2016 - 3:29 PM, said:snapback.png

 

SlapMeSilly, on 31 Oct 2016 - 3:19 PM, said:snapback.png

I'm still confused why they moved the source folder. Oh well.


Just did a mod for SSE (just for test.)
All the items go in the "Mods" folder.
So the Data folder is now clean.

 

I know this is getting a little off topic, but I'm following your comment above.

 

Hmm I see a mods folder as Skyrim Special Edition\Mods but it just stores the manifest files for mods downloaded in game there. Was there some trick you did for it to put them elsewhere?

 

I tried making a mod and the CK saved it to the Data folder like it always has. When it packed a bsa it saved it there too. Packing an XB1 bsa it put it in Data\XB1 like the FO4 CK does.

Link to comment
  • 2 months later...

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...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use