Difference between revisions of "Talk:Activate"
imported>Tegid |
imported>Tegid (Clarified scripting questions) |
||
Line 17: | Line 17: | ||
* As long as I've used PlaceAtMe to create this object, the second section shouldn't apply correct? | * As long as I've used PlaceAtMe to create this object, the second section shouldn't apply correct? | ||
*:--[[User:Kkuhlmann|Kkuhlmann]] 08:49, 14 April 2006 (EDT): Rephrase the question to be more specific. I don't understand what you're asking. | *:--[[User:Kkuhlmann|Kkuhlmann]] 08:49, 14 April 2006 (EDT): Rephrase the question to be more specific. I don't understand what you're asking. | ||
*:--[[User:Tegid|Tegid]] 09:32, 14 April 2006 (EDT):Since I'm using PlaceAtMe, the object will always be in my cell and therefore will always run it's activate script. | |||
* Are script blocks atomic? | * Are script blocks atomic? | ||
*:--[[User:Kkuhlmann|Kkuhlmann]] 08:49, 14 April 2006 (EDT): I don't know that I understand what you're asking. You CAN have more than one script block of the same type in a script -- since the flags are cleared at the end of the script, any number of blocks of the same type can exist in the script just fine. Why you'd want to do this, I don't know. But you could. If that's what you were asking. | *:--[[User:Kkuhlmann|Kkuhlmann]] 08:49, 14 April 2006 (EDT): I don't know that I understand what you're asking. You CAN have more than one script block of the same type in a script -- since the flags are cleared at the end of the script, any number of blocks of the same type can exist in the script just fine. Why you'd want to do this, I don't know. But you could. If that's what you were asking. | ||
--[[User:Tegid|Tegid]] 09:27, 14 April 2006 (EDT): | *:--[[User:Tegid|Tegid]] 09:27, 14 April 2006 (EDT): By Atomic I mean, does the entire script block (or script) execute without interruption by another script, or can it be interrupted by another script mid-run and then come back and finish later? | ||
Revision as of 08:32, 14 April 2006
This page is unclear, does player.Activate doorID mean the player activates the door, or the door activates the player?
--Kkuhlmann 12:04, 6 April 2006 (EDT): What you wrote means the door is activating the player. If you want to simulate the player activating a door: DoorID.Activate player
Scripting Issues
--Mrflippy 12:59, 12 April 2006 (EDT) I've been having some issues with this command in scripts. Sometimes, "object.activate me, 1" just doesn't work. The OnActivate block in the script attached to object isn't run at all. Most of the activators I work with are dynamically created using PlaceAtMe. Is this the source of the problem?
--Tegid 13:37, 12 April 2006 (EDT) I too am having this problem. Is there some kind of time constraint on activation? What causes them to just not activate? If they are already inside their OnActivate block and someone calls Activate on them, what happens then?
--Kkuhlmann 14:01, 12 April 2006 (EDT): Some things to keep in mind which could be causing your issues:
- All "action" block types (OnActivate, OnEquip, OnAdd, etc.) work by setting a flag on the script when the action occurs. The next time the script runs, if the appropriate block flag is set, that block is executed, and the flag is reset (so it doesn't run it more than once for a single action).
- Object scripts only run if the object is in the currently loaded area -- where the player is. So calling Activate on something that isn't loaded will set the flag for that action, but won't actually trigger the script (it will trigger the next time the object's script is run). NPC scripts (on persistent NPCs) do run when they're not loaded, but only when their AI is updated, which can happen as infrequently as every 15 game minutes.
--Tegid 15:13, 12 April 2006 (EDT) So three questions.
- That reset happens when the OnActivate block starts or stops? (So if I send another activate before it is finished with its block, will it be cleared when its block ends and therefore never happen?)
- --Kkuhlmann 08:49, 14 April 2006 (EDT): Reset happens when the script is finished processing. So calling Activate on an object from within its own script won't work.
- As long as I've used PlaceAtMe to create this object, the second section shouldn't apply correct?
- Are script blocks atomic?
- --Kkuhlmann 08:49, 14 April 2006 (EDT): I don't know that I understand what you're asking. You CAN have more than one script block of the same type in a script -- since the flags are cleared at the end of the script, any number of blocks of the same type can exist in the script just fine. Why you'd want to do this, I don't know. But you could. If that's what you were asking.
- --Tegid 09:27, 14 April 2006 (EDT): By Atomic I mean, does the entire script block (or script) execute without interruption by another script, or can it be interrupted by another script mid-run and then come back and finish later?