Fallout 3
0 of 0

File information

Last updated

Original upload

Created by

DaveLessnau

Uploaded by

DaveLessnau

Virus scan

Safe to use

10 comments

  1. KainThePheonix
    KainThePheonix
    • premium
    • 52 kudos
    I just started modding Fallout 3 - 2 months ago (again) and I never really added a ton, this time with textures, EVE, some visual improvements, Fellout and a weather mod I wasn't sure I set FOSE up correctly - I'm checking other FOSE functions to make sure. Exactly as described, installed and uninstalled manually and through FOMM after using it - DO NOT SAVE after using it. Simply uninstall it. Thank you, endorsed and a nice utility.
  2. trog69
    trog69
    • premium
    • 0 kudos
    How long after starting the game does it take for this to show up? I just installed it, started via the FOSE launcher, and it didn't show anything for 5 minutes of play.
  3. DaveLessnau
    DaveLessnau
    • member
    • 9 kudos
    My apologies, but I'm going to post the Programming Notes section of my Description on the forum version of this thread.  I want to make sure it's in a modding readable version somewhere:
     
    - I'm going to be especially verbose here since this might be the only way for others to get this functionality into their own mods.  The mod consists of one Quest (DALCOFCCheckQuest and DALCOFOSECheckIsolatedQuest) that run at the start of the game, two Messages to display (DALCOFOSECheckPresent and DALCOFOSECheckAbsent), and two Quest Scripts (DALCOFOSECheckScript and DALCOFOSECheckCheckScript) attached to the Quests.  These are as follows:

    -- DALCOFCGameRestartedGlobal: Under Gameplay | Globals, I set up a new global variable of type Short, with a default value of 0, and checked the Constant box.  No matter how the variable is changed during a game session, when the game next restarts, the variable will be reset to it's default value.

    -- DALCOFCFosePresentMessage: A standard Message that appears at the top left corner of the screen if FOSE is found.  It accepts three parameters (the FOSE version, revision, and beta number) and looks like this:
     

    FOSE v%.0f.%.0f b%.0f found (latest is v1.2 b2)


    -- DALCOFCFoseAbsentMessage: A standard Message box that appears if FOSE is not found.  It accepts no parameters and looks like this:
     

    FOSE is either not present or not configured properly. If you have mods that require FOSE, you MUST either install FOSE or remove those mods.

    If you haven't installed FOSE yet, visit the FOSE home page:

    http://fose.silverlock.org/

    If you have installed it, check that the FOSE files are in your game directory (where Fallout3.exe is located) and not in your game's Data directory (where your .esm and .esp files are located).

    If all of that is true and it's still not working, make sure you're launching the game with fose_loader.exe. See the fose_readme.txt in your game directory.

    -- DALCOFCDriverScript:  A Quest Script attached to DALCOFCDriverQuest.  This quest does most of the work in the mod.  It declares the variable to hold the status of whether FOSE is on or off.  Depending on that, either it puts the FOSE version, revision, and beta into some variables and displays them via the DALCOFCFosePresentMessage (if FOSE is present), or, if FOSE is absent, it displays a warning via DALCOFCFoseAbsentMessage.  It only does the work once per game session because it checks (and sets) the global constant variable.  It looks like:
     

    ScriptName DALCOFCDriverScript

    ;This script is attached to the DALCOFCDriverQuest.
    ;It declares a variable (bIsFoseOn) and leaves it at the default of 0 (FALSE) and expects a script in a stage of the calling quest to change it if FOSE is not running.
    ;If FOSE is NOT running, that other script will fail, the variable won't be changed, and this script will display messages depending on whether it is on or not.

    short bIsFoseOn ;this is defaulting to FALSE (0) and will be set (or not) in the script attached to Stage 10 of this script's calling quest
    short iFOSEVersion
    short iFOSERevision
    short iFOSEBeta

    Begin GameMode
    if DALCOFCGameRestartedGlobal == 0 ;this checks a global constant variable defaulting to 0 at start of a game session (reverts to 0 at end of session)
    set DALCOFCGameRestartedGlobal to 1 ;after first game session run-through, set this so this block won't process until next game session starts
    SetStage DALCOFCDriverQuest 10 ;goes to Stage 10 of this quest to do the isolated FOSE function checks -- if it returns, bIsFoseOn will be set to true, if it doesn't, FOSE isn't on and it will remain false
    if bIsFoseOn ;checks to see if FOSE is present

    set iFOSEVersion to GetFOSEVersion
    set iFOSERevision to GetFOSERevision
    set iFOSEBeta to GetFOSEBeta

    ShowMessage DALCOFCFosePresentMessage iFOSEVersion iFOSERevision iFOSEBeta

    else ;FOSE isn't running

    ShowMessage DALCOFCFoseAbsentMessage

    endif ;done with displaying the appropriate message for the state of FOSE

    endif ;done with the check for FOSE for this game session
    End

    -- DALCOFCIsolatedScript: The quest isn't really name this.  I've just attached a handle to it for ease of use.  It's just a result quest attached to a Quest Stage for the main DALCOFCDriverQuest.  Its purpose is to isolate the FOSE function from everything else so that when it fails, the rest of the mod can display the needed information.  It consists of two lines and looks like this:
     

    set DALCOFCDriverQuest.bIsFoseOn to 0 ;just to make sure it assumes FOSE is missing
    set DALCOFCDriverQuest.bIsFoseOn to GetFOSEVersion ;if FOSE is present, that FOSE function will set the variable to 1. Otherwise, the whole statement (and script) will fail without changing anything

    -- DALCOFCDriverQuest: I set up a new quest, named it "Is FOSE Running?" and gave it the noted ID.  I saved it and re-opened it, checked the "Start Game Enabled" and "Allow Repeated Stages" boxes.  In the script area, I selected DALCOFCDriverScript from the list.  I then went to the Quest Stages tab, entered a stage of 10, added an empty log entry, opened its Result Script box and entered those two line of DALCOFCIsolatedScript.  I closed the script entry box, hit the Compile button, and then the OK button.

    - ***Note: this mod checks for FOSE at the game level. Most of the work is here to drive that FOSE check.  If, instead, you want to use checks just within some of your scripts (i.e., you want your mod to work at a reduced level if FOSE isn't present and just want to let the player know whenever they try to use a FOSE-specific activity), that's very similar to what's shown here except there's no need for the global (delete it or don't add it) or a quest stage (remove it or don't add it).  Instead, the quest script (DALCOFCDriverScript in this mod) consists of just the two lines that were put in the quest stage result script (artificially called DALCOFCIsolatedScript here) with one addition (a declaration).  IOW:

    short bIsFoseOn

    set bIsFoseOn to 0
    set bIsFoseOn to GetFOSEVersion


    and, in your script where you need to make the check, you would add the line:

    if DALCOFCDriverQuest.bIsFoseOn


    No state is saved (well, bIsFoseOn is, but it's reset to 0 each time), so each run will give current results.  Most of the work goes away because your mod's script that's actually doing something is what's driving the check.

    - After working through this, I realized that the key to the whole thing is that I had to isolate that FOSE function someplace where it could fail without taking down the script that needed it.  Since the GECK doesn't have subroutines or user-defined functions, quests scripts need to be used to do that.  I searched the web in vain for that information.  Hopefully, by documenting it here, when someone else needs it, they can find it.

     
  4. DaveLessnau
    DaveLessnau
    • member
    • 9 kudos
    DALCO FOSE Check 1.2 is up:

    - 1.2, 19 December 2013: luthienanarion informed me that my method would only display the message once. Once the game had been saved, any future loads would not display any message. This would be bad if the player had run the mod with FOSE loaded, saved, exited, unloaded FOSE, and restored from that save. He suggested a different method that uses only the main, driving quest, a result script in a quest stage for that quest, and a global constant variable (a global variable that's marked Constant and returns to it's default value the next time the game is loaded). I revised the mod as he suggested.

    EDIT: In the Description area, the ReadMe, and the Change Log, I manage to forget the word "NOT" in the phrase "...any future loads would not display any message..." (I corrected it above). I'll fix it in later builds.
  5. insaneplumber
    insaneplumber
    • premium
    • 257 kudos
    01 run fallout 3 (fose_loader.exe)
    02 when the game starts in the main menu press ~
    03 write (getfoseversion) press enter
    it's all in the subject.
    1. DaveLessnau
      DaveLessnau
      • member
      • 9 kudos
      Yes. I'm aware of that. The reason I wrote this mod, though, is because the checks I had added to my scripts in other mods weren't working: even though a message was supposed to pop-up when FOSE was missing, it wasn't. I needed to find out why. This mod was the result. Since, I'd done the work, I figured others might be able to use the method to make sure their own checks in their own scripts worked. Or, if they wanted, they could just recommend it to their users to help troubleshoot problems. Heck, it caught me once without FOSE running -- I started the game with the wrong command.

      But, thanks for bringing this up. I modified the Description and ReadMe on this site to reflect all that.
  6. DaveLessnau
    DaveLessnau
    • member
    • 9 kudos
    DALCO FOSE Check version 1.1 is up:

    - 1.1, 17 December 2013: Thanks to pkleiss, the mod now displays the message when FOSE is not present. It does this by isolating the code that uses the FOSE function GetFOSEVersion in its own Quest Script so that when it fails because FOSE isn't present, the still functioning rest of the mod can display the message. I've also replaced the message box that displayed when FOSE was present to a short message at the upper left corner of the screen that shows the full FOSE version.

    See the following thread for more information: http://forums.nexusmods.com/index.php?/topic/1271071-getfoseversion-not-working-as-expected/

    As far as I can see, this is now working as expected. What I need to do now is include its functionality in my other mods that use FOSE. Thinking about it, I assume other modders could also use that functionality. What's the best way to do that? Do I have to manually re-enter the coding? Is it possible to open this mod and one of my other mods in the GECK at the same time and just copy everything from here that starts with DALCOFOSECheck into that mod? Should this mod be a master in that case (to support the multiple master flag)? Or, would it be better if whoever wants to use it just notes it as a prerequisite to their mod?

    A bajillion people aren't all going to leap at the chance to use this, but maybe it will help a few people.

    EDIT:
    - To get the functionality of this mod in one of my others, I tried doing a simple "Copy as new record into..." from FO3Edit. This did not work. This next thing to try is loading both into the GECK with the other mod as Active and see if I can somehow copy it there.
    1. acelogan
      acelogan
      • supporter
      • 4 kudos
      Awesome. I'm certainly going to give it a shot. I'm a fan of your work.
  7. crazyman101
    crazyman101
    • member
    • 1 kudos
    Thanks for this one.
  8. DaveLessnau
    DaveLessnau
    • member
    • 9 kudos
    DALCO FOSE Check 1.0 is up.

    This is a dead simple mod designed solely to display what's happening with FOSE on the system (I made it to try to figure out why the warning message I programmed into my other mods doesn't show up when FOSE is not present). As with my other FOSE-based mods,it works as designed with FOSE present (nicely showing the version, revision and beta numbers). But, without FOSE, the message saying it's not present doesn't show up (nothing bad happens -- the message just doesn't display). I can't figure out why and am looking for input. Please see the Programming Notes area of the mod Description or the Readme.

    EDIT: It looks like I've got an answer to why the message doesn't display if FOSE isn't present:

    http://forums.nexusmods.com/index.php?/topic/1271071-getfoseversion-not-working-as-expected/

    In that thread, pkleiss told me what was really happening in my script. My assumption was that without FOSE, the call to GetFOSEVersion would fail and return either garbage or a null value. My assumption was wrong. Since GetFOSEVersion is a FOSE function (which I knew), if FOSE isn't present, the script aborts at that point: the game basically sees an IF statement with garbage as a condition. So, it throws up its hands and goes home.

    He kindly provided me with his work-around. Once I get his permission, I'll try to implement it here.

    A big thanks to pkleiss.