Jump to content

[LE] I need fresh eyes on this simple script.


maxarturo

Recommended Posts

The issue with this script is that some russian players are reporting that they have problem retrieving the "Last Skull Key".

They press "E" and nothing happens...


The script as you can see is as simple as it can be !.


Except for the hundreds of testings that i did through the mod's development, after the russian reports, i've done at least another 25 test to that part of the quest testing different scenarios, and it fires EVERY TIME !!.


I just don't get it !!!!.... am i missing something that is in front of me and i can't see it ???!!!.


This is only happening to russian players, or at least they are the only ones that have reported it.


Could this be an issue cause by the esp been translated to russian ?, or the russian version of the game?, or something else that i'm not aware of ?.


Here is the script:




Scriptname aXMDparaplanisiSkullKeySCRIPT01 extends ObjectReference
{Set stage on Quest - Adds Skull Key to inventory - Disables STATIC Key - Self disable Trigger Box Activator}

ObjectReference Property Activate01 Auto
{Activate Activator01}

Actor Property ActorPlayer Auto
{The Player}

EffectShader Property DamageAVvisualFX Auto
{Visual FX to play when AV damage gets triggered}

Sound property DamageAVsoundFX auto
{Sound FX to play when AV damage gets triggered}

Quest Property myQuest auto
{The quest we will be setting stages on}

Int Property MyQuestSetStage auto
{The stage that will be set when the player Triggered this}

MiscObject Property Key01 Auto
{assign key the item to add to inventory}

MiscObject Property Key02 Auto
{The required key to unlock Skull Key Deception}

MiscObject Property Key03 Auto
{The required key to unlock Skull Key Deception}

MiscObject Property Key04 Auto
{The required key to unlock Skull Key Deception}

MiscObject Property Key05 Auto
{The required key to unlock Skull Key Deception}

ObjectReference Property StaticKey Auto
{object - item to disable}

ObjectReference Property SoundFX Auto
{soundFX to enable}

Message PROPERTY Message01 auto
{Message to show after Activated}

Message Property NoKeysMSG Auto


Auto State WaitingPlayer
EVENT OnActivate(ObjectReference akActionRef)
If (akActionRef == ActorPlayer)
GoToState("Activated")
If (ActorPlayer.GetItemCount(Key02) >= 1) && (ActorPlayer.GetItemCount(Key03) >= 1) && (ActorPlayer.GetItemCount(Key04) >= 1) && (ActorPlayer.GetItemCount(Key05) >= 1)
ActorPlayer.AddItem(Key01 as Form, 1)
StaticKey.Disable()
SoundFX.Enable()
myQuest.setStage(MyQuestSetStage)

Utility.Wait(6.0)
Message01.show()
Activate01.Activate(Self)

Utility.wait(7.0)
Game.ForceThirdPerson()
DamageAVsoundFX.Play(ActorPlayer)
DamageAVvisualFX.Play(ActorPlayer)
ActorPlayer.DamageActorValue("Health", ActorPlayer.GetActorValue("Health") * 0.5)
ActorPlayer.DamageActorValue("Stamina", ActorPlayer.GetActorValue("Stamina") * 0.8)
ActorPlayer.DamageActorValue("Magicka", ActorPlayer.GetActorValue("Magicka") * 0.8)
Game.TriggerScreenBlood(20)

Utility.Wait(15.0)
DamageAVvisualFX.Stop(ActorPlayer)
GoToState("SelfRemove")
Else
NoKeysMSG.Show()
Utility.Wait(2.0)
Self.PushActorAway(ActorPlayer , 10)
GoToState("WaitingPlayer")
EndIf
EndIf
EndEvent
EndState


State Activated
EVENT OnActivate(ObjectReference akActionRef)
;
EndEvent
EndState


State SelfRemove
Event OnCellDetach()
Activate01.Activate(Self)
Self.Disable()
Self.Delete()
EndEvent
EndState



* Some of them have also problems with vanilla scripts and activators, for example:

- A lever activates / opens a Dwemer door, they pull the lever and nothing happens... No custom scripts all default vanilla assets !.

What the f*** !!!...

The one thing that most of them have in common is the heavy load order, like 250 mods.


* All japanese players and other that had send me messages, they say how stable and free of bugs and ctds the mod is, and that they completed the whole mod without a single issue, i just don't get it !!.

The same goes for all my testings.


Thank you very much !.

Edited by maxarturo
Link to comment
Share on other sites

I don't see anything wrong, but I'd suggest having them (if possible) stash one or more of the other keys. See if they can get the NoKeyMsg to show up. If they cannot it could be possible that the script is stuck in the Activated state.

 

There is also the possibility that something is different due to the translation.

 

Heavy mod loads especially scripted ones can cause unforeseen issues as well.

 

I'd almost suggest having them turn on papyrus logging and see if there is anything there. Then again that might be a can of worms best left unopened.

Link to comment
Share on other sites

Thank you IsharaMeradin once again for your interest !.


It took me a few days to resolve it, especially since players are not sincere, but i was able to track down 99% of the issues.

And all issues return to the players themself !, inexperienced and irresponsible players !.


I will not bother you too much with the issues, i'll just mention the 2 most common (90% of them).


1) Players updated the mod from v1.1 to v 1.2 midplay without reading and doing all the posted requirements for updating the mod.


2) Players downloaded and installed only the translated updated russian esp without downloading and installing the updated "Core Files", from v1.1 to v1.2 a lot of scripts were modified and some other were added that didn't exist in v1.1, the same applies for the extra added assets, meshes, textures, sounds...etc.


* Not to mention that a lot of them, despite the huge warning to not use 'Cheats', they still use them and they intentionally skipped crucial parts of the mod.

If they have no intentions to play the mod, why the f*** they download it !.


Anyway, i think i will just stop bothering with any issues reported, since 90% of the players and 100% of my testers have confirmed me that the mod has no issues.



Thank you very much, once again.

Link to comment
Share on other sites

Well I see you found the issue. The patch was not installed right.

 

Be warned with states, in case there is a running instance of a script ingame, a new script version won't work as intend!

next is for studying only: aXMDparaplanisiSkullKeySCRIPT01

 

Scriptname aXMDparaplanisiSkullKeySCRIPT01 extends ObjectReference  
{Set stage on Quest - Adds Skull Key to inventory - Disables STATIC Key - Self disable Trigger Box Activator}
; https://forums.nexusmods.com/index.php?/topic/9074848-i-need-fresh-eyes-on-this-simple-script/

  Quest PROPERTY myQuest auto
{The quest we will be setting stages on}
 
  Int PROPERTY MyQuestSetStage auto
{The stage that will be set when the player Triggered this}

  Message PROPERTY NoKeysMSG auto
  Message PROPERTY Message01 auto        ; {Message to show after Activated}
 
  EffectShader PROPERTY DamageAVvisualFX  auto
{Visual FX to play when AV damage gets triggered}
 
  Sound PROPERTY DamageAVsoundFX auto
{Sound FX to play when AV damage gets triggered}
 
  MiscObject PROPERTY Key01 auto        ; {assign key or item to add to inventory}
  MiscObject PROPERTY Key02 auto        ; {The required key to unlock Skull Key Deception}    --- wrong description --- should be key01 description !!!
  MiscObject PROPERTY Key03 auto        ; {assign key or item to add to inventory}
  MiscObject PROPERTY Key04 auto        ; {assign key or item to add to inventory}
  MiscObject PROPERTY Key05 auto        ; {assign key or item to add to inventory}

  ObjectReference PROPERTY StaticKey auto
{object - item to disable}
 
  ObjectReference PROPERTY SoundFX auto
{soundFX to enable}

  ObjectReference PROPERTY Activate01 auto
{Activate Activator01}


; -- EVENTs --  

EVENT OnActivate(ObjectReference akActionRef)
IF (akActionRef as Actor == Game.GetPlayer())
ELSE
    RETURN    ; - STOP -    safety first, not player activated!
ENDIF
;---------------------
    gotoState("Busy")                ; ### STATE ###    busy with activation process

    IF myF_IsOK(akActionRef as Actor)
        gotoState("SelfRemove")      ; ### STATE ###    all done just wait for unload 3D through cell detach
    ELSE
        gotoState("")                ; ### STATE ###    back to this (now empty) state to start activation once more
    ENDIF
ENDEVENT

 

;===============================
State Busy
;=========
    EVENT OnActivate(ObjectReference akActionRef)
    ENDEVENT
;=======
endState
 

;===============================
State SelfRemove
;===============
    EVENT OnActivate(ObjectReference akActionRef)
    ENDEVENT

    EVENT OnCellDetach()
        Activate01.Activate(self as ObjectReference)            ; *** ACTIVATE ***  ????
        SoundFX.DisableNoWait()            ; *** objectRef
        self.DisableNoWait()
        self.Delete()
    ENDEVENT
;=======
endState


; -- FUNCTION --

;-----------------------------------
Bool FUNCTION myF_IsOK(Actor player)
;-----------------------------------
IF (player.GetItemCount(Key02) > 0)
    IF (player.GetItemCount(Key03) > 0)
        IF (player.GetItemCount(Key04) > 0)
            IF (player.GetItemCount(Key05) > 0)

                player.AddItem(Key01 as Form, 1)         ; give player the final key !!
                StaticKey.Disable()
                SoundFX.Enable()        ; *E* objectRef
                myQuest.setStage(MyQuestSetStage)        ; advance quest to higher stage
                Utility.Wait(6.0)                                                    ; 6.0 sec

                Message01.show()
                Activate01.Activate(self as ObjectReference)    ; *** ACTIVATE ***
                Utility.Wait(7.0)                                                    ; 7.0 sec

                Game.ForceThirdPerson()
                DamageAVsoundFX.Play(player as ObjectReference)
                DamageAVvisualFX.Play(player as ObjectReference)    ; >> FX

                float f
                
                f = player.GetActorValue("Health")
                player.DamageActorValue("Health", f * 0.5)

                f =player.GetActorValue("Stamina")
                 player.DamageActorValue("Stamina", f * 0.8)

                f = player.GetActorValue("Magicka")
                player.DamageActorValue("Magicka", f * 0.8)

                Game.TriggerScreenBlood(20)        ; 20 droplets of blood to put on the screen
                Utility.Wait(15.0)                                                    ; 15.0 sec

                DamageAVvisualFX.Stop(player as ObjectReference)    ; << FX
;;;                DamageAVsoundFX.Stop(player as ObjectReference)        ; if looping sound you have to stop them here !!!

                Return TRUE            ; OK!
            ENDIF
        ENDIF
    ENDIF
ENDIF

                NoKeysMSG.show()
                Utility.Wait(2.0)                                                    ; 2.0 sec
                self.PushActorAway(player, 10.0)
                Return False        ; not all keys collected
ENDFUNCTION

 

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

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