Difference between revisions of "Bug list"

2,024 bytes removed ,  07:43, 18 June 2012
imported>Black RL
imported>Black RL
Line 9: Line 9:
**[http://forums.bethsoft.com/topic/1384861-yet-another-huge-bug-interior-cell-as-a-static-limit/ Forum discussion]
**[http://forums.bethsoft.com/topic/1384861-yet-another-huge-bug-interior-cell-as-a-static-limit/ Forum discussion]
**'''''One of the solutions for this problem:'''''
**'''''One of the solutions for this problem:'''''
Create a new global variable (Object window -> global), see picture:


[[File:CKTUTLoadBug01.jpg]]
Create a new small cell (duplicate interior cell), this is important, make it small and put a XMarkerHeading in the middle, name it SafeXMarkerHeading, see picture:


Create a new small cell (duplicate interior cell), this is important, make it small and put a bucket in the middle, that's right, a bucket! Name the bucket SafeObject
[[File:CKTUTLoadBug07.jpg]]


[[File:CKTUTLoadBug02.jpg]]
Put 2 load doors in your interior cell and 2 load doors in your worldspace. Let's consider the front door the one that we can see the door texture, the other is the back door. Link your back door from the interior cell with the back door of your worldspace with teleport, don't flag the teleport marker of your front doors. Don't forget to put your teleport markers in front of the front door, final work should look like this:


Put the load doors as you normally do but don't check the teleport flag, put a XMarkerHeading in front of the doors (object window -> static), name one XMarkerHeading Objective001 and the other one Objective001A (that way you know that they are connected). Another set of load doors should be called for example Objective002 and Objective002A. See pictures:
[[File:CKTUTLoadBug08.jpg]]


[[File:CKTUTLoadBug03.jpg]]
Now you just have to put this script in the front door of your interior cell, no need to put it in the worldspace front door, just in the interior cell one, edit properties in the ck, DoorRef it's the interior cell back door (this is important, the script is inside the front door but DoorRef property is the back door), press auto-fill for the SafeXMarkerHeading if you name it right it should appear, see script and image:
 
[[File:CKTUTLoadBug04.jpg]]
 
Put the following script into the doors, edit properties (NOT in the script, in CK), safe object is the bucket (you can auto-fill if you name it like I said), one door has to have 1 in TravelTo and the other has to have 2:
<source lang="papyrus">
<source lang="papyrus">
Scriptname ACHSafeLoadScript extends ObjectReference
Scriptname ACHDCVR_AH_PurgeExitScript extends ObjectReference


;Written by Black RL, I'm no expert so don't bash
;Script author Amethyst Deceiver
;Works with script ACHSafeLoadCHILDScript
;TravelTo defines objective and writes into the global, you can expand to suite your needs
;Objective001 is the first objective for the load door, Objective001A it's the way back so you keep track of things
;You can expand objective to suite your needs


GlobalVariable Property SafeLoadGlobal Auto
ObjectReference Property SafeXMarkerHeading  Auto
{The global that controls travel objective}
ObjectReference Property DoorRef  Auto
Float Property TravelTo Auto
{1 = Objective001, 2 = Objective001A, 3 = Objective002, 4 = Objective002A, etc....}
ImageSpaceModifier Property ImageSpaceToApply Auto
{Use FAdeToBlackBackImod}
ObjectReference Property SafeObject Auto
{Our object in the safe cell, I use a bucket}


Event OnActivate(ObjectReference akActionRef)
Event OnCellAttach()
  ;Debug.Notification("Activated by " + akActionRef)
If (GetOpenState() == 1)
  SafeLoadGlobal.SetValue(TravelTo)
GoToState("Busy")
  ImageSpaceToApply.Apply()
Activate(Self)
  akActionRef.MoveTo(SafeObject)
EndIf
GoToState("Idle")
EndEvent
EndEvent
</source>
Put this script in our awesome bucket, edit properties, select the global, then press auto fill, it will fill all your objectives if you name them like I said:
<source lang="papyrus">
Scriptname ACHSafeLoadCHILDScript extends ObjectReference


;Written by Black RL, I'm no expert so don't bash
State Idle
;Called it CHILD but it isn't a real child, works with script ACHSafeLoadScript
Event OnActivate(ObjectReference akActionRef)
 
  Actor Player = Game.GetPlayer()
ObjectReference PlaceToGo
If (akActionRef == Player)
Float GlobalValue
GoToState("Busy")
GlobalVariable Property SafeLoadGlobal Auto
Utility.Wait(0.8)
{The global that controls travel objective}
Player.MoveTo(SafeXMarkerHeading)
ObjectReference Property Objective001 Auto
DoorRef.Activate(Player)
{Our objective, you can extend this}
  EndIf
ObjectReference Property Objective001A Auto
ObjectReference Property Objective002 Auto
ObjectReference Property Objective002A Auto
Actor ClosestActor
 
Event OnLoad()
;Debug.Notification("I'm loaded!")
TravelTo()
ClosestActor = Game.FindClosestActorFromRef(Self, 300.0)
ClosestActor.MoveTo(PlaceToGo)
EndEvent
EndEvent
EndState


Function TravelTo()
State Busy
GlobalValue = SafeLoadGlobal.GetValue()
EndState
If GlobalValue == 1
PlaceToGo = Objective001
ElseIf GlobalValue == 2
PlaceToGo = Objective001A
ElseIf GlobalValue == 3
PlaceToGo = Objective002
ElseIf GlobalValue == 4
PlaceToGo = Objective002A
;ElseIf
;Extend here
EndIf
EndFunction
</source>
</source>


Done! Go test ingame! ^^
[[File:CKTUTLoadBug09.jpg]]
 
You can extend the scripts for how many doors you need, you just have to do this in the second script:


Add objectives for your loads (2 for load) and extend the ElseIf (2 for load)
Don't forget to finalize navmesh in your interior cell and worldspace or else it won't work for the NPC's! Final should look something like this:
<source lang="papyrus">
ObjectReference Property Objective003 Auto
ObjectReference Property Objective003A Auto


[[File:CKTUTLoadBug10.jpg]]


ElseIf GlobalValue == 5
Done! Go test ingame! ^^
PlaceToGo = Objective003
ElseIf GlobalValue == 6
PlaceToGo = Objective003A
</source>
Don't forget to edit properties of the bucket and press auto-fill so he recognizes the new loads.
 
If you need NPC's to use this, you need to duplicate both doors and put the doors before the original ones. Link the duplicated doors by teleport like you normally do, don't forget to finish navmesh, it should look something like this:
 
[[File:CKTUTLoadBug05.jpg]]
 
[[File:CKTUTLoadBug06.jpg]]


There may be other solutions, check the forums for them!
For other load doors you just have to repeat this process. There may be other solutions, check the forums for them!
Anonymous user