Jump to content
ℹ️ Intermittent Download History issues ×

RomanR

Members
  • Posts

    515
  • Joined

  • Last visited

Posts posted by RomanR

  1. You have small mismatch of if and endif commands:

    scn GhoulExitTriggerSCRIPT

    ; 5.4.09 JF
    ; This script is attached to the hatch in the room overlooking the rocket pad in the REPCON basement. It teleports the ghouls to the tunnel
    ; leading to the rocket pad and gives them a package to make their way there.

    ref EnteringActor

    begin OnTriggerEnter

        Set EnteringActor to GetActionRef
        
        ; Only teleport a creature if it's Jason Bright
        if EnteringActor.GetIsReference JasonBright == 1
            if VMS01.JasonGoodbye > 0
                EnteringActor.Disable 1                                                 ; Make Jason fade out
                EnteringActor.MoveTo JasonEntranceMarker
                EnteringActor.Enable 1                                                 ; Make Jason fade in
                Set VMS01.JasonGoodbye to 2
                EnteringActor.evp
            endif

        ; Or Harland (if not hired)
        elseif EnteringActor.GetIsReference HarlandREF == 1
            if aaaQHarlandFollowerQuest.bHarlandHasBeenHired == 0
                EnteringActor.Disable 1                                                 ; Make Harland fade out
                EnteringActor.MoveTo JasonEntranceMarker
                EnteringActor.Enable 1                                                 ; Make Harland fade in
                Set HarlandREF.HarlandState to 1
                EnteringActor.evp

           endif

        ; Or any of the other ghouls
        elseif EnteringActor.GetInFaction GhoulFaction && EnteringActor.GetInFaction REPCONBrightBrotherhoodFaction
            EnteringActor.Disable 1
            EnteringActor.MoveTo JasonEntranceMarker
            EnteringActor.Enable 1
            EnteringActor.evp
        endif

    end

    Edit: Assuming that these ghouls aren't Harland's company.

  2. Though I understand your frustration, you're pointing the wrong way. It is a author of this patch who decided to be this way, so Nexus staff isn't a culprit here. I don't know what version you used, but version 2.1.1a is still available to download at Internet Archive and looking at its docs it seems is matching your version too. Its modgroup file also shows some DLC:

    [Unofficial Fallout 4 Patch - All]
    DLCRobot.esm
    DLCworkshop01.esm
    DLCCoast.esm
    DLCworkshop02.esm
    DLCworkshop03.esm
    DLCNukaWorld.esm
    Unofficial Fallout 4 Patch.esp

    Normaly I wouldn't recommend to download something from unofficial sites, but seeing your desperation... https://archive.org/download/unofficial-fallout-4-patch-version-2.1.1a. I hope it will help in some way. 

  3. Is it content of obse.log you show before install of Blockhead or after? It seems it doesn't detect any plugins installed, the rest seems OK. For now it's look like insufficient rights to access files in Oblivion directory, as AndalaBay mentions. Here is mine log file:

    Spoiler

    OBSE: initialize (version = 21.4 010201A0)
    oblivion root = G:\Hry\Oblivion\
    config path = G:\Hry\Oblivion\Data\OBSE\obse.ini
    plugin directory = G:\Hry\Oblivion\Data\OBSE\Plugins\
    checking plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\AveSithisEngineFixes.dll
    plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\AveSithisEngineFixes.dll (00000003 AveSithisEngineFixes 00000001) loaded correctly
    checking plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\BA_EngineFixes.dll
    plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\BA_EngineFixes.dll (00000002 BA_EngineFixes 00010000) loaded correctly
    checking plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\Blockhead.dll
    SetOpcodeBase 000027F0
    RegisterCommand SetBodyAssetOverride (27F0)
    RegisterCommand GetBodyAssetOverride (27F1)
    RegisterCommand ResetBodyAssetOverride (27F2)
    RegisterCommand GetFaceGenAge (27F3)
    RegisterCommand SetFaceGenAge (27F4)
    RegisterCommand SetHeadAssetOverride (27F5)
    RegisterCommand GetHeadAssetOverride (27F6)
    RegisterCommand ResetHeadAssetOverride (27F7)
    RegisterCommand RefreshAnimData (27F8)
    RegisterCommand SetAgeTextureOverride (27F9)
    RegisterCommand ResetAgeTextureOverride (27FA)
    RegisterCommand ToggleAnimOverride (27FB)
    RegisterCommand RegisterEquipmentOverrideHandler (27FC)
    RegisterCommand UnregisterEquipmentOverrideHandler (27FD)
    plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\Blockhead.dll (00000002 Blockhead 0B014C55) loaded correctly

    checking plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\EngineBugFixes.dll
    SetOpcodeBase 00002860
    RegisterCommand EBFGetVersion (2860)
    RegisterCommand EBFGetEnableState (2861)
    plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\EngineBugFixes.dll (00000002 EngineBugFixes 000000DE) loaded correctly
    checking plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\ListMissingModsOnLoad.dll
    plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\ListMissingModsOnLoad.dll (00000002 List Missing Mods On Load 00000064) loaded correctly
    checking plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\SkyBSA.dll
    plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\SkyBSA.dll (00000002 SkyBSA 01010000) loaded correctly
    checking plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\sr_Oblivion_Stutter_Remover.dll
    plugin G:\Hry\Oblivion\Data\OBSE\Plugins\\sr_Oblivion_Stutter_Remover.dll (00000002 sr_Oblivion_Stutter_Remover 00004125) loaded correctly
    patched
    loading from G:\Uživatelé-Win7\Kdokoliv\Dokumenty\My Games\Oblivion\Saves\Save 3523 - Karsst - Sewers, Level 1, Playing Time 01.29.33.obse
    Reading mod list from co-save
    Loading strings
    Loading array variables
    DoLoadGameHook: G:\Uživatelé-Win7\Kdokoliv\Dokumenty\My Games\Oblivion\Saves\Save 3523 - Karsst - Sewers, Level 1, Playing Time 01.29.33.ess
    loading from G:\Uživatelé-Win7\Kdokoliv\Dokumenty\My Games\Oblivion\Saves\Save 3523 - Karsst - Sewers, Level 1, Playing Time 01.29.33.obse
    Reading globals

    The yellow lines show what you must see for Blockhead plugin (I installed version 11.1). 

  4. @LenaWolfBravil: Yes, but sometimes there is a confusion and beginners often mistaking OBSE plugins for regular mods, as various mod managers are in wide use now. Unfortunately without more info I can't give more answers. In theory he also can try if OBSE is working this way - by entering "print" command into a console. After hitting an enter a console should respond with "This command can not be called from the console." If he get this, his OBSE is working and problem lies elsewhere. Still, even if regular mod needs OBSE only, all requirements such this or another ones should be mentioned on description page of the mod. Also for me it's very strange - sure there are mods requiring newer xOBSE and its functions, but not be able to run single one?

  5. Just for sure - all OBSE plugins need to be installed to Data\OBSE\Plugins\ directory to be recognised by OBSE. Most of their authors give a hint by path created in the archive, but sometimes not. Viewing obse.log file can give you a hint if something went wrong, as LenaWolfBravil said. Another reason for plugin not working is it can need extra libraries or frameworks to be installed, like Oblivion Reloaded or Construction Set Extender, but such extra needs should be mentioned in their docs.

  6. OnAttack and OnRelease aren't functions, they're events defined by SetEventHandler command. By using it you specify type of event you want and a script which will handle it. However script functions made as event handlers aren't made to return values, so if you need such thing (and you propably will), use shared quest or global variable. You must also define SetEventHandler events again at every restart of Oblivion. Handler function can be like this:

    scn FnMyOnReleaseHandler
    ref actor
    ref weapon
    
    begin function {actor}
    	if actor == PlayerRef ;It was player...
    		let weapon := actor.GetEquippedObject 16
    		if weapon == MyMagicWeapon ;...who done swing with wanted weapon?
    			if MyQuest.canCast == 0
    				set MyQuest.canCast to 1 ;inform another part via this quest flag
    			endif
    		endif
    	endif
    end

     

  7. On 5/2/2024 at 2:53 AM, CHASE6 said:

    Did you disable joystick in oblivion.ini?

    Hey, good thinking. If NorthernUI adds support for gamepads through its own NorthernUI.dll, setting "bUse Joystick" to zero in [Controls] section would work. At least it's a good start.

  8. The last part with timer is also very messy. Was it supposed to show a message and after some time teleport player somewhere?

        If ( GetStage WaV001 == 1 )  &&  ( GetStage WaV001 < 2 )
          	;first play sound and show a message
          	if GameTimer == 0 
           	 PlaySound AMBWhiteout2D
           	 message "As you abide about your day, you suddenly feel dizzy and then the world begins spinning around you in white light!"
           	 Set GameTimer to 1
          	endif
            ;wait a moment
            if GameTimer >= 1
           	 Set GameTimer to ( GameTimer + GetSecondsPassed )
            endif
            if (GameTimer >= 6) ;after 6 seconds
               Set GameTimer to -1 ;deactivate timer
               PlayerRef.MoveToMarker WaVLadyGreetingMarkerRef ;move player
            endif
        Endif

     

  9. Yes, books in Oblivion can only teach skills by default, but you can assign script to a book to add a spell of your choice.  The simplest one would be like this:

    scn RomRBookTeachSpell
    ;if book was activated in a world
    begin OnActivate
    	if GetActionRef == player
    		player.AddSpell MySpell			
    		Activate
    	else
    		Activate
    	endif
    end
    ;activated in inventory
    begin OnEquip player
    	player.AddSpell MySpell
    end

    With OBSE you can add condition using HasSpell function to not try to add a spell every time, but it will work without it too.

    • Like 1
  10. I suspect that this summon script isn't prepared for situation when summon spell is cast in rapid succession and is working right only when you wait until the spell finish itself. If not, the script will skip some phases because measured time for them didn't come. 

    Regarding problem with fast travel/waiting/sleeping - after this the spell is no longer active, so there is nothing to control your creature anymore with script as it is. You will need to add ScriptEffectFinish (preferable choice) part or external source script must be running which can handle both situations.

  11. The summon script you mention is clearly made for persistent references, in short it simulates summoning by moving a creature from its "cage" (propably located in dedicated cell) to you and back. Is your summon persistent? Also with "No level processing" flag ticked (many creatures has) such creature will not run any AI package or script (so creatures made for summoning have this flag off and "Quest Item" flag on - makes them updated more often and their bodies will not be removed on cell reset) if you aren't in same cell. Regarding Spriggan's death I'm not sure, maybe it's something in summon script again.

     

  12. You're using Dispel command at a wrong time. Timer conditions are mismatched too, making a "fade phase" never to occur.

    Spoiler

    ScriptName AAASummonWolfApprenticeScript

    float timer
    float fade
    short playonce
    short killed
    ref SUMN

    Begin ScriptEffectStart

        set SUMN to SummonWolf1REF                                           
        SUMN.disable        
        SUMN.moveto Player 30 30 10        
        SUMN.enable    

         
        set fade to 1    
        set timer to 0   
        set playonce to 0
        set killed to 0

    End

    Begin ScriptEffectUpdate
     
        set timer to timer + GetSecondsPassed

        ;first play a summon effect     
        if ( timer > 0.1 ) && ( playonce == 0 )
            SUMN.pms effectSummonMythicDawn 1            
            set playonce to 1
        endif
             
        ;if creature was killed too early
        ;move timer ahead and set a flag   
        if ( SUMN.getdead == 1 ) && ( timer < 34 )                
            set timer to 34
            set killed to 1
        endif
        
        ;begin a "kill phase"  
        if ( timer >= 34 ) && ( playonce == 1 )
            ;if creature was not killed already, kill it
            if killed == 0
                SUMN.kill
            endif
            set playonce to 2 ;begin "fade phase"
        endif

        ;make creature transparent      
        if ( playonce == 2 )    
            set fade to fade - 0.03
            SUMN.saa fade
        endif

        ;prepare creature for next summon     
        if ( timer > 35 ) ;give some time to creature become transparent
            SUMN.moveto CreatureCageREF 0 0 10
            SUMN.resurrect                                    
            SUMN.disable
            ;if timer was moved forward, dispel this spell
            if killed != 0
               set killed to 0
               dispel AAASummomWolfApprenticeSpell
            endif                                   
        endif
                  
    End

     

  13. Propably inserting "Dispel" command would help, if it's really the only problem:

    	if ( timer > 30 )    ;Creature is dead and fade timer passed
    		;Move our creature back to its holding cell
    		if killed == 0
    			SUMN.kill
    		endif
    		SUMN.moveto CreatureCageREF 0 0 10 
    		;Reset our creature if dead
    		SUMN.resurrect    
    		;Set our creature to an unprocessed state                            
    		SUMN.disable
    		;If creature was killed by something else, dispel a summon spell
    		if killed != 0
    			set killed to 0
    			dispel {Editor ID of this spell}
    		endif
    	endif
    
    	;Adjust timer state for early fade/disable upon death
    	if ( SUMN.getdead == 1 ) && ( timer < 28 )                
    		set timer to 28
    		set killed to 1	;new short "flag" variable
    	endif

     

  14. After some research and tests I'm positive it can be done. For ranged spells you can use invisible activators positioned in front of you - first one will shoot spell of your choice, second will serve as a target in which direction the first one will shoot. For positioning you will need OBSE, as vanilla doesn't have needed functions. Also positioning them at right direction is quite tricky in first person, but for races scaled near 1 doable. However using activator will bring some small disadvantages:

    1. By default this won't raise any skill, but it can be arranged using OBSE function.

    2. Doesn't trigger a crime when hitting friendly NPC (if you care of course).

    3. Friendly fire (you can be hit by your "own" spell if not carefull).

    4. On my computer projectile from activator doesn't light surrounding enviroment for some reason (but as I named my test power Mind Projectile, it's propably fitting).

    I can upload my test mod, if there's still interest, but bear in mind it's largely experimental - reasonably tested though.

  15. On 3/29/2024 at 2:41 PM, ArtemSHikoff said:

    Get it now 🙂

    Thank you, yeah I often tick "must complete" box to make sure it WILL be done :))

     

    On 3/29/2024 at 3:04 PM, Striker879 said:

    The trick with flags is to only use those that are absolutely needed (and the same goes for conditions).

    Yes, flags like "Must Complete", "Continue If PC Near" and "Must Reach Location" are blocking other packages to start if conditions to finish such flagged package aren't met, resulting in seemingly wrong behaviour of NPCs. If you want speed up your travel package a little, you can tick "Skip Fallout Behavior" (NPC will not engage other activities like conversations) or "Defensive Combat" (NPC will not engage in combat until attacked first). 

    Propably the best is to link something for study: https://cs.uesp.net/wiki/Flags_on_Packages

    • Like 1
  16. I would suspect something with network, since problem persist through different devices. If you can play your own recordings (music, sounds, video with sounds) on all these devices just fine, I would assume that PC, TV and smartphone is OK. Also many people are listening to music with too high volume, intesifing any imperfection of record and damaging their own hearing in the process. In this case just one linked video is propably not enough example.

    Perhaps your internet connection is the culprit and not your PC in the end?

  17. SMT stands for Simultenous Multi Threading. It allows modern CPU handle more than one HW thread (mostly two) and can boost overall speed when SW is written for it (high parallel tasks like rendering etc.) Speed gain can be about 20%. System sees such CPU with more cores than it really has. 

    MSI mode is another interupt handling style. I practically know nothing about it. From googling it speeds up interrupt handling by writing directly into mapped memory. However such interrupt is unshared, so don't use this mode for devices with shared IRQs.

    But as I listen to music in video you linked, I don't hear anything wrong (except short sound drop on about 12:00, but it could be caused by anything as it's online) and load of my CPU was mostly at 2%. If you have problems while playing music and sound saved locally too, something seems slowing processing so much that sound buffer is drained too early before is filled with next sound data.

  18. Well, if my memory serves right, if you have too high infamy for starting Knights of the Nine questline - it should be enough to make pilgrimage to all wayshrines of the Nine and it should reset your infamy to 0 (without Knights of the Nine it wasn't possible before). After this you speak to the prophet and after you answer "You are right, I'm not worthy..." he should respond with that gods will decides for themselves and he will give you a map with wayshrines you must visit. After visits and return to him the questline should start.

  19. If the driver or codec used used isn't a problem I would try to switch off the efficient cores and also SMT in UEFI Bios, if it's possible. Efficient cores are still something new and scheduler in Windows isn't much good. Also running Task Manager while playing something could show if some core is overloaded to 100%. Windows 10/11 loads CPU much more than older systems, so switching some unecessary programs/services/schedule tasks off can improve things, but in this case you must know what you're doing.

    Edit: It's also good to check yor sound card capabilities and settings according to sound specs. If system or codec must resample a sound, it adds time to sound playing/processing. Regarding SoundBlaster - I disposed of my SoundBlaster X-Fi and returned to integrated RealTek Codec, because of various problems with drivers. At least on paper any external sound card isn't much better than capabilities of integrated one and if all effect are now computed by CPU so what? We have plenty of cores now.

     

  20. In my opinion, I would make these changes:

    Begin ScriptEffectStart
    
        ;Set temp reference for scripting. 
        ;Allows faster transition of script as template. Also allows for leveled summon.
        set SUMN to SummonRat1REF
        ;Reset our creature if re-summoned before time runs out on spell                                            
        SUMN.disable        
    
        ;Now we move our creature to the Player
        ;Move the creature reference to the worldspace of the Player
        SUMN.moveto Player 30 30 10    
        ;Make our creature visible and active    
        SUMN.enable    
    
        ;Set variables 
        set fade to 1    ;Resets the alpha fade variable to 1
        set timer to 0   ;Reset timer
        set playonce to 0 ;Reset stage
    
    End

    On second part I would change order of commands:

    Begin ScriptEffectUpdate
        ;Increment timer
        set timer to timer + GetSecondsPassed
      
        ;Play introducing effect first 
        if ( timer > 0.1 ) && ( playonce == 0 )
            ;Play effect for creature entrance
            SUMN.pms effectSummonMythicDawn 1            
            set playonce to 1
        endif
              
        ;If something kills a creature before a time out, move a timer ahead
        if ( SUMN.getdead == 1 ) && ( timer < 28 )                
            set timer to 28
        endif
          
        ;kill a creature and set it to fade
        if ( timer > 28 ) && ( playonce == 1 )
            if SUMN.GetDead == 0
                SUMN.kill
            endif
            set playonce to 2
        endif
              
        ;Fade creature
        if ( playonce == 2 )    
            set fade to fade - 0.03
            SUMN.saa fade
        endif
              
        ;once creature faded or was a time out, prepare it for next summon
        if ( timer > 30 )    ;Creature is dead and fade timer passed
            ;Move our creature back to its holding cell
            SUMN.moveto CreatureCageREF 0 0 10 
            ;Reset our creature if dead
            SUMN.resurrect            
            ;Set our creature to an unprocessed state                            
            SUMN.disable                                    
        endif
                  
    End

    Now it should be clear: you need to adjust timers in three parts - "moving timer ahead" part, "killing a creature" part and "prepare next summon" part.

  21. @GamerRick

    Well, that comment pointed out to this topic. It got me thinking that under some conditions the DXT1 compression could be used to decrease size of texture even further without significant visual loss of quality. Still as I'm not a graphician of any sort, so I had an idea to ask you, as you brought it up recommending that Optimizer Textures program and you have more experience.  I hope you didn't mind. 

     Perhaps with today's GBs of VRAM available, such discussion doesn't matter much anyway.

  22. Guessing from your favourite it's for Oblivion, right? In that case for returning exact AI package you can use OBSE, precisely GetCurrentPackage/GetCurrentEditorPackage. 

    In vanilla you can use GetIsCurrentPackage function.

    Also it's good to check if your NPC is actually doing the action you want using GetCurrentAIProcedure. Maybe it will be enough using this function alone, if such precission isn't needed.

  23. @GamerRick

    Interesting program, however link to discussion in most recent comment which is discussing differences between DXT1-5 compressions raises some questions. Did you try using this program for textures using some sort of transparency or smooth gradiends of color, GameRick? How they did look like after?

    @IcelandicPsychotic

    Propably no need to use Paint.Net if the one you're using gives enough options how the resulting DDS file will be saved (pixel format, compression/transparency type etc).

×
×
  • Create New...