• Announcements

    • Ashal

      SITE MOVED - IN READ ONLY MODE   12/08/2015

      Please use http://www.loverslab.com moving forward. Site has been restored to a previous version, and this one placed into a read-only mode. This is available for a limited time so users may reference/copy content that has been lost in the transition. This will no longer be accessible by December 22nd, 2015.

luthienanarion

Members
  • Content count

    113
  • Joined

  • Last visited

Posts posted by luthienanarion


  1. On 11/9/2015, 10:26:13, j245 said:
    On 11/17/2015, 9:48:29, Dinosaurus said:

    to the best of my knowledge *all* the armour swapper does it make it so an armour is able to be equipped by a child... however it does not modify the mesh or "shrink it to child size" or (in the case of girls) "get rid of the breasts and make it flat chested".

     

    Try and see?

    I was wondering if you could possibly make the source for the armor swapper dll available?  I'm using RS children and I'd like to see if I can adapt the armor swap to work with that.  I know the body mesh isn't quite the same, but it would be better than a huge neck gap.  I'm also just curious as to how it works.  

     

    The DLL does more than just make armor equippable; it builds the armature records from scratch with modified mesh paths based on existing replacement meshes for each racial configuration and attaches them to the armor records from all loaded plugins.

     

    The source code for it will not be made available, as the entire point of replacing the cumbersome SkyProc patcher was to remove one of the hurdles to using SkyKids instead of another child race mod.

    1

  2. It's also astronomically faster.

     

    I use it on getgameloaded on a mod, god I can't really notice the load difference with or without the mod.

     

    Now we only need a function that calms down users and convince them that installing an extension won't destroy their life.

    There are still people who refuse to install NVSE, citing various half-baked reasons, but I think most of them are just too lazy to install something that isn't a one-click process in NXMM.
    0

  3. I see, I wasn't aware such a function existed. I haven't kept up to date with that plugin. Been too busy with a lot of other stuff. Regardless, that will make it a lot easier to retrieve, instead of having to iterate through a bunch of lists to get everything. Thanks.

    It's also astronomically faster. Before I delved into writing my own script functions, I once wrote a script similar to the one above that took 20 minutes to generate a list of all weapon forms in a load order comprised only of the DLCs. (FormIDs are not necessarily contiguous, so you must attempt to build a reference to all 16.7 million possible values for each plugin.)

    GetLoadedType and GetLoadedTypeArray instead iterate over an already-existing linked list in the game's memory containing the necessary data and return a result in mere milliseconds.

    1

  4. That particular armor set is indeed meant to be worn all at once. The chest armor does not have arms or legs:

    post-14340-0-46307500-1430500002_thumb.p

    Also, the gloves include the left hand, which may look weird when playing a child character:

    post-14340-0-92817700-1430500011_thumb.p

     

     

    I cannot reproduce any errors regarding the boots, which show up just fine on my test character:

    post-14340-0-29416500-1430500017_thumb.p

     

     

     

     

     

    Make sure that you are using the new build of Skykids en_hawk linked to a few posts earlier: https://mega.co.nz/#!Dc0iUaDI!qZWSDAwEkUQG-KCtWPtSkbkc9bVPDQQdlkyIuhns148 (Install it over the old Skykids.)

    I added a fix to the code regarding ARMA priority settings in that build, which may help with items that go missing when you equip additional armors.

     

     

     

    In other news, I have a routine in my internal build that mirrors the racial abilities and powers of the vanilla races onto their Skykids counterparts. This should enable compatibility with mods such as EnaiSiaion's Imperious - Races of Skyrim  or Skyrim Redone's race module without needing a patch. If we don't discover any errors in testing, that functionality may be included in the next update.

    0

  5. By default, Skyrim autosaves before each loading screen and after a set length of time whenever you open the menu, and it keeps a rotation of three such saves. CASM was created because the autosave system was buggy in Fallout and produced corrupted save files; the same doesn't appear to be true for Skyrim, eliminating the need for such a mod.


    0

  6. Scn SexoutOffSpring0RenameTokenScriptref rPlayerref rMsgAref rMsgBref rTargetint bMenuint sAddedint iRemovingBegin OnAdd    Set rTarget to GetContainer    Set rPlayer to PlayerREF    Set rMsgA to SexoutOffSpringNameMsgA    Set rMsgB to SexoutOffSpringNameMsgB    SetNameEx "%n" rPlayer rMsgA    SetNameEx "%n" rTarget rPlayer    GetPlayerName    Set sAdded to 1EndBegin GameMode    if (0 == sAdded)        Return    endif    if (1 == bMenu) && iRemoving < 1        SetNameEx "%n" rPlayer rMsgB        rTarget.SetActorFullName SexoutOffSpringNameMsgB        PlayerREF.SetActorFullName SexoutOffSpringNameMsgA        rTarget.NX_SetEVFo "SOF:rOffSpringName" SexoutOffSpringNameMsgB        RemoveMe        Set iRemoving to 1    endifEndBegin MenuMode 1051    Set bMenu to 1End

     

    Here's the original version of that script (with comments intact) from my Renamer Rifle mod:

    scn lutRenamerTokenOSref playernameref itemname1ref itemname2ref actornameshort namemenushort invalidrefshort removeshort removedbegin gamemode    if(remove)                                       ; Prevent RemoveMe being called more than once.        if(removed)        else            set removed to 1            removeme        endif    endif    if(invalidref)                                   ; Abort the script and set the token for removal if the target is invalid.        set remove to 1        return    endif    if(namemenu == 1)                                ; Wait for the text input to close before renaming actors.        setnameex "%n" playername itemname2          ; Copy the new player name to the "name" of MSG2.        actorname.setactorfullname lutRenamerMSG2    ; Set the actor's name to the "name" of MSG2.        player.setactorfullname lutRenamerMSG1       ; Set the player's name back to what we saved in MSG1.        set remove to 1                              ; Set the token for removal.    else        set playername to player        set itemname1 to lutRenamerMSG1              ; SetNameEx requires a ref variable for input, while SetActorFullName requires a MESG object.        set itemname2 to lutRenamerMSG2              ; Point our ref variables to our MESG objects.        set actorname to getcontainer                ; Get the actor the token is on.        if(actorname)            if(gettype actorname != 42 && gettype actorname != 43)                set invalidref to 1                  ; Don't rename non-actor containers.                return            endif            setnameex "%n" playername itemname1      ; Copy the player's name to the "name" of MSG1.            setnameex "%n" actorname playername      ; Copy the actor's name to the player so that GetPlayerName shows the name of the actor.            getplayername                            ; Open the player-name input box. This uses MenuMode 1051        endif    endifend ; gamemodebegin menumode 1051                                  ; "Text-Edit" mode used by GetPlayerName.    set namemenu to 1end ; menumode 1051
    It could probably be simplified, but it predates NVSE4. The player's name displayed in the Pip-Boy stats menu is updated by GetPlayerName but not by SetActorFullName; that's why the displayed name changes until the game is reloaded. (SetActorFullName is used instead of SetNameEx for renaming the actor because the change is permanent.) The correct name is used everywhere else. The extra guard against calling RemoveMe twice is included because an object script that calls it may or may not run an extra time and hit the RemoveMe call again, which crashes the game.
    1

  7.  

     

    I have used the "inv" console command on her, and quite frankly, the output puzzles me...

     

    Here is the entire output:

    inv

    Sofie (05004031) has 5 items:

    143 - Flower Basket (000D955A)

    1 - Child's Clothes (0703C819) (100,100.00%)

     ---> BAD EDITOR ID (0703C816)

     ---> BAD EDITOR ID (BE00178E)

    1 - Shoes (0703C81A) (100,100.00%)

     ---> BAD EDITOR ID (0703C818)

     ---> BAD EDITOR ID (BE003322)

    6 - Septim (0000000F)

     

    Thos "arrow" symbols are ARMA (armature) records attached to the ARMO (armor) form shown above them. They show as "BAD EDITOR ID" because they don't have real names and the game doesn't load EditorID data. The fact that they show up in the console output is simply stupidity on the part of Bethesda, and they are not errors at all. Similarly, the console also shows the health of ARMO forms (the "100" and "100%" values) , even though such data isn't used at all in Skyrim.

     

    If Dragonborn is at index 07 in your load order, that output only signifies that the "Child's Clothes" item is from the Dragonborn ESM and that it has two armatures: one from the Dragonborn ESM, and one from another plugin loaded at index BE (the armor patch ESP). The same goes for the "Shoes" item.

     

     

    If an NPC tends to wear its default clothing instead of items you gave them in the CK, they probably have one or more "outfits" defined. Delete those, and the NPC should stop questioning your fashion sense. You'll likely have to remove any existing copies of those items in their inventory if you've already encountered that NPC in a save.

    0

  8. Thank you very much Luthien, I really missed that one.

     

    I take the occasion to ask you about another of your functions.

    I solved all the other issues and only remains the SetMapMarkerName, I can't make it work

     

    rMarkerREF.SetMapMarkerName "something"

    rMarkerREF.SetMapMarkerName something

    rMarkerREF.SetMapMarkerName sMyStringVar

    rMarkerREF.SetMapMarkerName $sMyStringVar

     

    They all compile, but noone gives a result in game, GetMapMarkerName returns empty everytime. The marker passes from having a name (the one I decided prior) to be empty, on the map it appears as çZ or something like that.

     

    The issue is surely in the syntax, the variables are all fine.

    0

  9.  

    Sorry, it looks like it has been overlooked. Looks easy to add though.

     

    It makes me feel guilty... but yeah if it was possible it would be wondrous :)

    I also checked all the Actor Values in NVSE documentation but the aggro radius seems really unexistent, except maybe when it comes of package functions

     

     

    My NVSE plugin has actor.LNGetAggroRadius and actor.LNSetAggroRadius if you need them for something before NVSE adds them.

    0

  10.  

    Speaking of cleaning up the wiki page, does anyone know if this still applies, or ever has:

    • GetSelf will return 0 if called on a reference that has been created dynamically (for example, created via PlaceAtMe, or dropped from an inventory into the game world).

    I have no idea, but it sounds bogus, like much of what's been copied over from the oblivion wiki.

     

    In my experience, this is correct: GetSelf will not return a dynamically-generated reference.  However, PlaceAtMe returns a reference to the created object. In order to do something with a PlaceAtMe-created object:

    let refVar := someRef.PlaceAtMe someObject 1

    This is outlined in the wiki page, as I recall.

    0