Jump to content

Bad Coder Confessions


Recommended Posts

Posted

Hi My name is Tentacus and I was writing (self taught) Papyrus scripts for half a year before I knew "!="  was a thing. Six months later I found out about "||" and "&&" and it blew my fucking mind. What are your shameful amateur coder admissions.

Posted

I'll just drop this here, then I'll back out gently, pretending I never shared this piece of code...

I tried putting this in a spoiler tag but the forum software is bugged and doesn't allow code inside a spoiler tag.

And I'm forced to use the CODE tag, otherwise it makes smilies out of half of this code, regardless of 'plain text' settings.. so PUH.

 

What this does is.. set a global variable to a magazine number, so Ivy could remark on magazine pickups by the player.


Scriptname _ivyMagFollower extends ReferenceAlias

ReferenceAlias Property p_IvyCompQAlias Auto Const

Scene Property _ivy_PornMagsQuest_InstallerPatch Auto Const
Scene Property p_ivy_PornMagsQuest_Dialogue Auto Const

Bool Property IvyIsWaitingToSpeak = False Auto
Topic Property _IvysMagazineResponses Auto Const

Keyword Property _IvyPornMagKeyword Auto Const
Keyword Property _IvyPornMagKeyword_01 Auto Const
Keyword Property _IvyPornMagKeyword_02 Auto Const
Keyword Property _IvyPornMagKeyword_03 Auto Const
Keyword Property _IvyPornMagKeyword_04 Auto Const
Keyword Property _IvyPornMagKeyword_05 Auto Const
Keyword Property _IvyPornMagKeyword_06 Auto Const
Keyword Property _IvyPornMagKeyword_07 Auto Const
Keyword Property _IvyPornMagKeyword_08 Auto Const
Keyword Property _IvyPornMagKeyword_09 Auto Const
Keyword Property _IvyPornMagKeyword_10 Auto Const
Keyword Property _IvyPornMagKeyword_11 Auto Const
Keyword Property _IvyPornMagKeyword_12 Auto Const
Keyword Property _IvyPornMagKeyword_13 Auto Const
Keyword Property _IvyPornMagKeyword_14 Auto Const
Keyword Property _IvyPornMagKeyword_15 Auto Const
Keyword Property _IvyPornMagKeyword_16 Auto Const
Keyword Property _IvyPornMagKeyword_17 Auto Const
Keyword Property _IvyPornMagKeyword_18 Auto Const
Keyword Property _IvyPornMagKeyword_19 Auto Const
Keyword Property _IvyPornMagKeyword_20 Auto Const
Keyword Property _IvyPornMagKeyword_21 Auto Const
Keyword Property _IvyPornMagKeyword_22 Auto Const
Keyword Property _IvyPornMagKeyword_23 Auto Const
Keyword Property _IvyPornMagKeyword_24 Auto Const
Keyword Property _IvyPornMagKeyword_25 Auto Const
Keyword Property _IvyPornMagKeyword_26 Auto Const
Keyword Property _IvyPornMagKeyword_27 Auto Const
Keyword Property _IvyPornMagKeyword_28 Auto Const
Keyword Property _IvyPornMagKeyword_29 Auto Const
Keyword Property _IvyPornMagKeyword_30 Auto Const
Keyword Property _IvyPornMagKeyword_31 Auto Const
Keyword Property _IvyPornMagKeyword_32 Auto Const
Keyword Property _IvyPornMagKeyword_33 Auto Const
Keyword Property _IvyPornMagKeyword_34 Auto Const
Keyword Property _IvyPornMagKeyword_35 Auto Const
Keyword Property _IvyPornMagKeyword_36 Auto Const
Keyword Property _IvyPornMagKeyword_37 Auto Const
Keyword Property _IvyPornMagKeyword_38 Auto Const
Keyword Property _IvyPornMagKeyword_39 Auto Const
Keyword Property _IvyPornMagKeyword_40 Auto Const
Keyword Property _IvyPornMagKeyword_41 Auto Const
Keyword Property _IvyPornMagKeyword_42 Auto Const
Keyword Property _IvyPornMagKeyword_43 Auto Const
Keyword Property _IvyPornMagKeyword_44 Auto Const
Keyword Property _IvyPornMagKeyword_45 Auto Const
Keyword Property _IvyPornMagKeyword_46 Auto Const
Keyword Property _IvyPornMagKeyword_47 Auto Const
Keyword Property _IvyPornMagKeyword_48 Auto Const
Keyword Property _IvyPornMagKeyword_49 Auto Const
Keyword Property _IvyPornMagKeyword_50 Auto Const
Keyword Property _IvyPornMagKeyword_51 Auto Const
Keyword Property _IvyPornMagKeyword_52 Auto Const
Keyword Property _IvyPornMagKeyword_53 Auto Const
Keyword Property _IvyPornMagKeyword_54 Auto Const
Keyword Property _IvyPornMagKeyword_55 Auto Const
Keyword Property _IvyPornMagKeyword_56 Auto Const
Keyword Property _IvyPornMagKeyword_57 Auto Const
Keyword Property _IvyPornMagKeyword_58 Auto Const
Keyword Property _IvyPornMagKeyword_59 Auto Const
Keyword Property _IvyPornMagKeyword_60 Auto Const
Keyword Property _IvyPornMagKeyword_61 Auto Const
Keyword Property _IvyPornMagKeyword_62 Auto Const
Keyword Property _IvyPornMagKeyword_63 Auto Const
Keyword Property _IvyPornMagKeyword_64 Auto Const
Keyword Property _IvyPornMagKeyword_65 Auto Const
Keyword Property _IvyPornMagKeyword_66 Auto Const
Keyword Property _IvyPornMagKeyword_67 Auto Const
Keyword Property _IvyPornMagKeyword_68 Auto Const
Keyword Property _IvyPornMagKeyword_69 Auto Const
Keyword Property _IvyPornMagKeyword_70 Auto Const
Keyword Property _IvyPornMagKeyword_71 Auto Const
Keyword Property _IvyPornMagKeyword_72 Auto Const

GlobalVariable Property _ivy_LasFoundMag Auto Const

Event oninit()
    Addinventoryeventfilter(_IvyPornMagKeyword)
Endevent

Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
    Actor Ivy = p_IvyCompQAlias.GetActorRef()
    ;Debug.Trace("Ivy sees you picking up a porn magazine")
    ;'reset' global to -1 as a reset.

    if akBaseItem.HasKeyword(_IvyPornMagKeyword)
        Debug.Trace("Ivy is ready to speak about the porn magazine")

        _ivy_LasFoundMag.SetValueInt(-1)

        if akBaseItem.HasKeyword(_IvyPornMagKeyword_01)
            _ivy_LasFoundMag.SetValueInt(1)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_02)
            _ivy_LasFoundMag.SetValueInt(2)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_03)
            _ivy_LasFoundMag.SetValueInt(3)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_04)
            _ivy_LasFoundMag.SetValueInt(4)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_05)
            _ivy_LasFoundMag.SetValueInt(5)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_06)
            _ivy_LasFoundMag.SetValueInt(6)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_07)
            _ivy_LasFoundMag.SetValueInt(7)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_08)
            _ivy_LasFoundMag.SetValueInt(8)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_09)
            _ivy_LasFoundMag.SetValueInt(9)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_10)
            _ivy_LasFoundMag.SetValueInt(10)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_11)
            _ivy_LasFoundMag.SetValueInt(11)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_12)
            _ivy_LasFoundMag.SetValueInt(12)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_13)
            _ivy_LasFoundMag.SetValueInt(13)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_14)
            _ivy_LasFoundMag.SetValueInt(14)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_15)
            _ivy_LasFoundMag.SetValueInt(15)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_16)
            _ivy_LasFoundMag.SetValueInt(16)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_17)
            _ivy_LasFoundMag.SetValueInt(17)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_18)
            _ivy_LasFoundMag.SetValueInt(18)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_19)
            _ivy_LasFoundMag.SetValueInt(19)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_20)
            _ivy_LasFoundMag.SetValueInt(20)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_21)
            _ivy_LasFoundMag.SetValueInt(21)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_22)
            _ivy_LasFoundMag.SetValueInt(22)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_23)
            _ivy_LasFoundMag.SetValueInt(23)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_24)
            _ivy_LasFoundMag.SetValueInt(24)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_25)
            _ivy_LasFoundMag.SetValueInt(25)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_26)
            _ivy_LasFoundMag.SetValueInt(26)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_27)
            _ivy_LasFoundMag.SetValueInt(27)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_28)
            _ivy_LasFoundMag.SetValueInt(28)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_29)
            _ivy_LasFoundMag.SetValueInt(29)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_30)
            _ivy_LasFoundMag.SetValueInt(30)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_31)
            _ivy_LasFoundMag.SetValueInt(31)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_32)
            _ivy_LasFoundMag.SetValueInt(32)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_33)
            _ivy_LasFoundMag.SetValueInt(33)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_34)
            _ivy_LasFoundMag.SetValueInt(34)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_35)
            _ivy_LasFoundMag.SetValueInt(35)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_36)
            _ivy_LasFoundMag.SetValueInt(36)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_37)
            _ivy_LasFoundMag.SetValueInt(37)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_38)
            _ivy_LasFoundMag.SetValueInt(38)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_39)
            _ivy_LasFoundMag.SetValueInt(39)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_40)
            _ivy_LasFoundMag.SetValueInt(40)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_41)
            _ivy_LasFoundMag.SetValueInt(41)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_42)
            _ivy_LasFoundMag.SetValueInt(42)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_43)
            _ivy_LasFoundMag.SetValueInt(43)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_44)
            _ivy_LasFoundMag.SetValueInt(44)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_45)
            _ivy_LasFoundMag.SetValueInt(45)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_46)
            _ivy_LasFoundMag.SetValueInt(46)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_47)
            _ivy_LasFoundMag.SetValueInt(47)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_48)
            _ivy_LasFoundMag.SetValueInt(48)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_49)
            _ivy_LasFoundMag.SetValueInt(49)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_50)
            _ivy_LasFoundMag.SetValueInt(50)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_51)
            _ivy_LasFoundMag.SetValueInt(51)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_52)
            _ivy_LasFoundMag.SetValueInt(52)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_53)
            _ivy_LasFoundMag.SetValueInt(53)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_54)
            _ivy_LasFoundMag.SetValueInt(54)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_55)
            _ivy_LasFoundMag.SetValueInt(55)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_56)
            _ivy_LasFoundMag.SetValueInt(56)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_57)
            _ivy_LasFoundMag.SetValueInt(57)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_58)
            _ivy_LasFoundMag.SetValueInt(58)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_59)
            _ivy_LasFoundMag.SetValueInt(59)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_60)
            _ivy_LasFoundMag.SetValueInt(60)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_61)
            _ivy_LasFoundMag.SetValueInt(61)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_62)
            _ivy_LasFoundMag.SetValueInt(62)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_63)
            _ivy_LasFoundMag.SetValueInt(63)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_64)
            _ivy_LasFoundMag.SetValueInt(64)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_65)
            _ivy_LasFoundMag.SetValueInt(65)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_66)
            _ivy_LasFoundMag.SetValueInt(66)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_67)
            _ivy_LasFoundMag.SetValueInt(67)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_68)
            _ivy_LasFoundMag.SetValueInt(68)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_69)
            _ivy_LasFoundMag.SetValueInt(69)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_70)
            _ivy_LasFoundMag.SetValueInt(70)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_71)
            _ivy_LasFoundMag.SetValueInt(71)
        endif
        if akBaseItem.HasKeyword(_IvyPornMagKeyword_72)
            _ivy_LasFoundMag.SetValueInt(72)
        endif

        IvyIsWaitingToSpeak = True
        Utility.Wait(2)

        p_ivy_PornMagsQuest_Dialogue.Start()

        IvyIsWaitingToSpeak = False

    endif

Endevent

 

Interesting to note that all that became this:

 


Scriptname _ivy_Mag_Pickup extends ObjectReference Const

Scene Property p_ivy_PornMagsQuest_Dialogue Auto Const Mandatory
{AutoFill}
GlobalVariable Property p_ivy_LasFoundMag Auto Const Mandatory
{AutoFill}
Int Property MagazineNumber Auto Const Mandatory
{SET THE MAGAZINE NUMBER HERE}

Event OnActivate(ObjectReference akActionRef)
    p_ivy_LasFoundMag.SetValueInt(MagazineNumber)
    p_ivy_PornMagsQuest_Dialogue.Start()
EndEvent

 

Posted

@Reginald_001
Length: 13276
Lines: 327

Into

Length: 448
Lines: 14





My god
I mean I recently effectively made the Auto-Staged Animations Please's SavageCabbage patch, minus the transition stuff, before checking it again, and realising it's nearly identical. That kinda hurt...

That's on a whole 'nother level.
I sympathised already, with how much damn script work must have gone into Ivy in her current iteration
At least it works consistently now?...

Posted
3 minutes ago, Nebuchadnezzer2 said:

@Reginald_001
Length: 13276
Lines: 327

Into

Length: 448
Lines: 14

My god
I mean I recently effectively made the Auto-Staged Animations Please's SavageCabbage patch, minus the transition stuff, before checking it again, and realising it's nearly identical. That kinda hurt...

That's on a whole 'nother level.
I sympathised already, with how much damn script work must have gone into Ivy in her current iteration
At least it works consistently now?...

This? Oh this was NUTS..

 

So 'OnActivate' just doesn't fire 50% of the time when you pick up a magazine.. PERIOD.

(It fires when there's no previous container only).

 

It does fire 100% when you 'pick it up from a display' (e.g. you put it in a rack and are reading them). The PickUp is fired 100% when you follow the players inventory, but isn't fired when the magazine is Displayed. I wanted Ivy to speak when users have it on display, or when they pick it up so I was simply forced to hook into both events.

 

Then the worst part of this all.. you should be able to simply grab a ref to the item that was picked up, but nooo.. it's always 'none'.. so you can't get the keyword in a generic fashion (the only way to distinguish these from each other).

Posted
3 minutes ago, Reginald_001 said:

Then the worst part of this all.. you should be able to simply grab a ref to the item that was picked up, but nooo.. it's always 'none'.. so you can't get the keyword in a generic fashion (the only way to distinguish these from each other).

What's that saying?

"My kingdom for a proper programming language"? :P

Posted
2 hours ago, Nebuchadnezzer2 said:

What's that saying?

"My kingdom for a proper programming language"? :P

I don't really see the script parts of the CK as a programming language. It's more of a console type interface that has rudimentary object programming options. (I'm sure many will disagree with me). The function parts are pretty solid, but the interface towards the kernel and underlying engine are difficult to grasp as it simply lacks proper documentation. This forces developers to try experimentation and with the slowness of loading, the inability to re-initialize scripts in a loaded game and the sheer opaqueness of the engine and it's events and handlers makes it a pretty tough journey for any modder to plow through.

 

In the Doom and Quake engines I had these lovely console commands, which meant you could develop your scripts while playing the game, reload your save, retry with the new scripts in place..

 

ReloadModels <-- reloaded all changed/updated meshes

ReloadTextures <-- Dito

ReloadScripts <-- just bloody awesome

ReloadEngine <-- a quick reload of all engine related things.

ReloadSounds <-- reload all sounds..

 

I still miss these commands in the CE to this day.

Posted
56 minutes ago, Reginald_001 said:

I don't really see the script parts of the CK as a programming language. It's more of a console type interface that has rudimentary object programming options. (I'm sure many will disagree with me). The function parts are pretty solid, but the interface towards the kernel and underlying engine are difficult to grasp as it simply lacks proper documentation. This forces developers to try experimentation and with the slowness of loading, the inability to re-initialize scripts in a loaded game and the sheer opaqueness of the engine and it's events and handlers makes it a pretty tough journey for any modder to plow through.

 

In the Doom and Quake engines I had these lovely console commands, which meant you could develop your scripts while playing the game, reload your save, retry with the new scripts in place..

 

ReloadModels <-- reloaded all changed/updated meshes

ReloadTextures <-- Dito

ReloadScripts <-- just bloody awesome

ReloadEngine <-- a quick reload of all engine related things.

ReloadSounds <-- reload all sounds..

 

I still miss these commands in the CE to this day.

Yeah, in War Thunder it's something like ALT+F9 to reload/refresh the UI/User content, so you can sit in the test drive with a vehicle and fuck around adding/removing various sights and testing them there and then.

sad trombone

 

Quote

interface towards the kernel and underlying engine are difficult to grasp as it simply lacks proper documentation. This forces developers to try experimentation and with the slowness of loading, the inability to re-initialize scripts in a loaded game and the sheer opaqueness of the engine and it's events and handlers makes it a pretty tough journey for any modder to plow through.

Precisely why I get [too] irritated with Bethedsa. "Here, we used this, this and this. Good luck, bye"
Most basic of shit's documented and that's about it, the rest is up to experimentation and your own documentation/assistance from others.
I've seen in the CK "Save and Push Plugin to PC", which, while I've not fucked with it, would seem to be the closest you'd get to 'hot-loading', except it seems to be the inverse of that...

Posted
54 minutes ago, Reginald_001 said:

I still miss these commands in the CE to this day.

You can kind of do those in console in F4, but it isn't super stable.

 

fcf - force close files.  This closes open plugin file handles, allowing you to save a plugin in the CK or xEdit while the game is running.

hlp - hot load plugin.  hlp "foo.esp" will reload it.  The hot-loaded plugin is now last in the load order, so if it was losing conflicts before it will win them now, so beware of that.

reloadscript - like it says.  You use the script name, not the script filename.  Generally, stopquest XYZQuest -> reloadscript XYZQuestScript -> resetquest XYZQuest

 

Somewhat less hair-pulling than constantly reloading the game.

Posted
13 hours ago, EgoBallistic said:

You can kind of do those in console in F4, but it isn't super stable.

 

fcf - force close files.  This closes open plugin file handles, allowing you to save a plugin in the CK or xEdit while the game is running.

hlp - hot load plugin.  hlp "foo.esp" will reload it.  The hot-loaded plugin is now last in the load order, so if it was losing conflicts before it will win them now, so beware of that.

reloadscript - like it says.  You use the script name, not the script filename.  Generally, stopquest XYZQuest -> reloadscript XYZQuestScript -> resetquest XYZQuest

 

Somewhat less hair-pulling than constantly reloading the game.

Going to give this a shot in the weekend. Awesome. :)

Posted

Not knowing about the modulo operator. It's not an over exaggeration to say that it changed my life. Similarly, realising there were functions like floor, ceiling, abs already in the math script. You mean I can do all these things with a simple function call?

  • 2 weeks later...
Posted

I made a hud widget a year ago that just absolutely sucked monkey balls. It could track some stats for the player and like one companion, but because I had no clue how flash actually worked, it was all ham fisted into one class object and I was using papyrus calls through Hud framework to hide certain bits and pieces through changing the alpha level of the symbols.

 

The absurd amount of different papyrus commands I made to action and toggle specific items in the wodget was absurd. I think I had like 6 or 7 functions and each passed some kind of flag variable to target the player part or the companion part.

 

i recently remade the whole thing and cut it down to three papyrus functions in total, and made the widget much cleaner and easy to work on. Who knew understanding object oriented programming was a good step to making fetish huds?

Posted
On 6/27/2019 at 3:08 PM, EgoBallistic said:

You can kind of do those in console in F4, but it isn't super stable.

 

fcf - force close files.  This closes open plugin file handles, allowing you to save a plugin in the CK or xEdit while the game is running.

hlp - hot load plugin.  hlp "foo.esp" will reload it.  The hot-loaded plugin is now last in the load order, so if it was losing conflicts before it will win them now, so beware of that.

reloadscript - like it says.  You use the script name, not the script filename.  Generally, stopquest XYZQuest -> reloadscript XYZQuestScript -> resetquest XYZQuest

 

Somewhat less hair-pulling than constantly reloading the game.

You may have just shaved hours off my workflow. Constant game loads and exits to make changes to the plugin eat up a major chunk of my time

  • 2 months later...
Posted

My biggest nemesis are typos that will compile. You look over the blocks and loops and functions several times and just can't find them, wondering why the hell something isn't working.

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

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