Quick Questions, Quick Answers Thread #7

Post » Mon Nov 19, 2012 2:03 am

Is there a way to see if your mod has deleted records from the game? I had 1 apparently, although the CELL itself didn't show as edited in the Details section. I want to see if I've deleted anything else by mistake :S P.S. Wrye Bash reports no dirty edits in my mod.

I'm not sure if anyone ever answered this. If they did, I didn't see it in the posts. Items actually deleted from the master by a plugin are noted as such in the Details view of the plugin. There is a column for Deleted (just left of Ignored) and there is a D in the column for any form ID that has been deleted by the plugin. If you want to put it back as I assume you would, just "ingnore" it and go through the save and reload sequence. I hope that is what you are looking for BigDaddy.
User avatar
Jani Eayon
 
Posts: 3435
Joined: Sun Mar 25, 2007 12:19 pm

Post » Mon Nov 19, 2012 10:46 am

I'm not sure if anyone ever answered this. If they did, I didn't see it in the posts. Items actually deleted from the master by a plugin are noted as such in the Details view of the plugin. There is a column for Deleted (just left of Ignored) and there is a D in the column for any form ID that has been deleted by the plugin. If you want to put it back as I assume you would, just "ingnore" it and go through the save and reload sequence. I hope that is what you are looking for BigDaddy.

Thanks mate. I picked this up afterwards :)

But my missing object (edit mistake) wasn't showing as D in Details. Maybe it was moved somewhere rather than deleted by me. Either way I sorted it :)
User avatar
KRistina Karlsson
 
Posts: 3383
Joined: Tue Jun 20, 2006 9:22 pm

Post » Mon Nov 19, 2012 12:57 pm

I recently confirmed that the werewolf race does use the actual backwards swimming animation as opposed to the "reversed forwards" swimming animation that anyone who has ever swam in the third person perspective would know and hate. Does anyone know how one can go about replacing all offending backwards swimming animations for the playable races with the backwards swimming animation that werewolves use, or is that impossible due to hardcoding issues?

I know that at least some stuff like that can be done, since there is http://skyrim.nexusmods.com/mods/22604 mod that allows Khajiit to have a different sprinting animation, but that might not be set up the same or similar way as swimming animations.

I think I can definitely say that the awful "reversed forwards" backwards animation in vanilla Skyrim is a bug after all, and not actually an intended feature.

Testing out the backwards swimming animation files, it looks like they did have the backwards swimming animation set up for all races, but they never actually finished rigging it to the normal humanoid skeleton, yet they managed to rig it for the werewolf skeleton for some reason or another. I'm pretty sure Argonians used to use an animation similar to what the werewolf race uses, but that file may have been overwritten as a result of patch 1.5. Not sure if it would be possible to modify the werewolf backwards swimming animation so that it works on the skeletons for the other races. I don't know if we have access to the tools necessary to do that.
User avatar
Bitter End
 
Posts: 3418
Joined: Fri Sep 08, 2006 11:40 am

Post » Mon Nov 19, 2012 7:16 am

Hi!
I started learning Papyrus and I would like to use Notepad++ as a script editor. Creation Kit wiki has an XML file for syntax highlighting but I can't import it. Does not matter if I save it in UTF-8 format or ANSI I always get "failed to import" message. Do you have any idea what should I do? (Already installed the latest version of Notepad++.)

Ok, XML file is broken, that is why I couldn't import it.
User avatar
Rachyroo
 
Posts: 3415
Joined: Tue Jun 20, 2006 11:23 pm

Post » Mon Nov 19, 2012 9:12 am

The first Event OnActivate() in the code above is in the empty state, while the Event OnUpdate isn't. So if you go back into the empty state, nothing will happen when the update fires, but the player can activate the object and start the process again.




Thanks, already tried out the code but isnt working, i get the message when i pick it up but i dont get any message after waiting 3 days

my script is as follows






Event OnActivate(ObjectReference akActionRef)

Debug.MessageBox("xxxxxx")

GoToState ("update")

RegisterForSingleUpdateGameTime(24 * 3)

endEvent


State update


Event OnUpdate()

GotoState("")

Debug.MessageBox("xxxxxx")

endEvent


EndState

User avatar
abi
 
Posts: 3405
Joined: Sat Nov 11, 2006 7:17 am

Post » Mon Nov 19, 2012 12:18 pm

Event OnUpdate()

Oops, that should be OnUpdateGameTime().
User avatar
Prue
 
Posts: 3425
Joined: Sun Feb 11, 2007 4:27 am

Post » Mon Nov 19, 2012 7:57 am

Oops, that should be OnUpdateGameTime().

tried again but nothing yet, after i drop the egg i use showvars and tells me that the state its in update, but wont show the debug.message after waiting 3 days :/
User avatar
Nymph
 
Posts: 3487
Joined: Thu Sep 21, 2006 1:17 pm

Post » Sun Nov 18, 2012 9:43 pm

Quick question... I figured out how to create a new power (the ability that can be used once a day) but I have no idea how to then give that to a PC player. I am trying to re-create the Moonshadow ability of Oblivion that let you turn invisible for 60 sec once a day. I made the power, but I can't seem to link it to my PC. Also, would I need to start a new PC for it to take effect, or will it show up on already existing ones? I am doing an LP of the game, and need to add the ability to an already made character.

Thanks in advance!!

Edit: If anyone wants to answer it will still be helpful to know, but I found a work around. I just made the ability a perk and added it to the stealth skill tree. Works like a charm ;)
User avatar
jodie
 
Posts: 3494
Joined: Wed Jun 14, 2006 8:42 pm

Post » Mon Nov 19, 2012 11:55 am

I want to attach a script to an object the player can activate to start a repeatable quest. I'm trying to figure out whether to use IsRunning or IsStopped for the condition to make sure it's not already running.

If MyQuest is not running, I want this script to start MyQuest. But I'm not sure if I should use "IsStopped" because the very first time the player activates the object, MyQuest has never started before. Should I use "IsRunning" with an "else" to make sure it is not running? Once the player reaches the last stage, it will be shut down, and then later it can be repeated in a linear order by activating the object once more to start MyQuest and set the stage to 0.


Event OnActivate(ObjectReference akActionRef)	 If akActionRef == PlayerREF		  if (MyQuest.IsStopped())			   Int iButtonSelected = Message1.Show() ; Pray to Talos?			   If iButtonSelected == 0 ; if player clicks "Yes"					Message2.Show() ; show message about vision from Talos					MyQuest.Start() ; start quest			   EndIf		  EndIf	 EndIfEndEvent

or should I use IsRunning as follows?

Event OnActivate(ObjectReference akActionRef)	 If akActionRef == PlayerREF		  if (MyQuest.IsRunning())		  ; break		  else		  Int iButtonSelected = Message1.Show() ; Pray to Talos?			   If iButtonSelected == 0 ; if player clicks "Yes"					Message2.Show() ; show message about vision from Talos					MyQuest.Start() ; start quest			   EndIf		  EndIf	 EndIfEndEvent
User avatar
Abel Vazquez
 
Posts: 3334
Joined: Tue Aug 14, 2007 12:25 am

Post » Mon Nov 19, 2012 2:24 am

BootySweat: The latter should work well and could be slightly simplified
Event OnActivate(ObjectReference akActionRef)	If MyQuest.IsRunning()	ElseIf akActionRef == PlayerREF		Int iButtonSelected = Message1.Show() ; Pray to Talos?		If iButtonSelected == 0 ; if player clicks "Yes"			Message2.Show() ; show message about vision from Talos			MyQuest.Start() ; start quest		EndIf	EndIfEndEvent
User avatar
Jeff Turner
 
Posts: 3458
Joined: Tue Sep 04, 2007 5:35 pm

Post » Mon Nov 19, 2012 11:40 am

Booty, I have a series of repeatable quests and the way I found to do it was to run a QuestRunning quest alongside the contract quests every time. This means I can set my dialogue etc conditions that the single QuestRunning quest is not running.

Hope that helps :) depends how many of these quests there are if it'll be beneficial for you.
User avatar
lolli
 
Posts: 3485
Joined: Mon Jan 01, 2007 10:42 am

Post » Mon Nov 19, 2012 12:25 pm

i wanted to create a scripted timer on a object and someone suggested this


Event OnActivate()
GotoState("Waiting")
RegisterForSingleObjectGameTime(24 * 3)
EndEvent

State Waiting
Event OnActivate()
EndEvent

Event OnUpdate()
GotoState("")
Debug.MessageBox(...)
EndEvent
EndState
and it wont work for some reason, after i wait 3 days nothing appears, and when i drop the egg and check variables it tells me that the state = Waiting, any ideas why its not showing any message?
User avatar
Philip Lyon
 
Posts: 3297
Joined: Tue Aug 14, 2007 6:08 am

Post » Sun Nov 18, 2012 11:41 pm

i wanted to create a scripted timer on a object and someone suggested this


Event OnActivate()
GotoState("Waiting")
RegisterForSingleObjectGameTime(24 * 3)
EndEvent

State Waiting
Event OnActivate()
EndEvent

Event OnUpdate()
GotoState("")
Debug.MessageBox(...)
EndEvent
EndState
and it wont work for some reason, after i wait 3 days nothing appears, and when i drop the egg and check variables it tells me that the state = Waiting, any ideas why its not showing any message?

Why have you written "RegisterForSingleObjectGameTime(24 * 3)"??

It should be

RegisterForSingleUpdateGameTime(24 * 3)
User avatar
Lory Da Costa
 
Posts: 3463
Joined: Fri Dec 15, 2006 12:30 pm

Post » Mon Nov 19, 2012 12:27 am

Why have you written "RegisterForSingleObjectGameTime(24 * 3)"??

It should be

RegisterForSingleUpdateGameTime(24 * 3)

oh sorry for that, used the raw one, yeah i fixed that before and still not getting message, just the state Waiting
User avatar
Cagla Cali
 
Posts: 3431
Joined: Tue Apr 10, 2007 8:36 am

Post » Mon Nov 19, 2012 6:10 am

Thanks very much, Justin - that's perfect! :thanks:

B1gbadDaddy, can you explain a bit more about your QuestRunning quest? This particular quest doesn't have any dialogue, it's a very linear quest that sends the player to obtain items from the BossContainers in two random dungeons in a sequence, then the player returns and uses the items to craft an enchanted amulet, and the quest shuts down at the final stage.

I was hoping that I'd be able to use the same statue to activate it again and start the quest from stage 0 each time the player wants to craft a new amulet, and then repeat all the stages in the same sequence.
User avatar
DAVId Bryant
 
Posts: 3366
Joined: Wed Nov 14, 2007 11:41 pm

Post » Sun Nov 18, 2012 9:42 pm

Thanks very much, Justin - that's perfect! :thanks:

B1gbadDaddy, can you explain a bit more about your QuestRunning quest? This particular quest doesn't have any dialogue, it's a very linear quest that sends the player to obtain items from the BossContainers in two random dungeons in a sequence, then the player returns and uses the items to craft an enchanted amulet, and the quest shuts down at the final stage.

I was hoping that I'd be able to use the same statue to activate it again and start the quest from stage 0 each time the player wants to craft a new amulet, and then repeat all the stages in the same sequence.

Basically because I have a fair few radiant repeatable quests, some of which use the same variables (for example quest 1 can have a random npc, object, and amount to find, all based off the same variables. If the same quest is started again, it'll break).

Let's call them jobs.

So each time a Job is started, it starts my JobActive quest. This is then used in conditions. So for my quest giver, if GetQuestRunning JobActive == 1, he won't give out any other jobs. When the Job is complete, it completes and Stop()'s the JobActive quest.

That way, the quest giver will give the player another job :smile:

Like I said, this is only really helpful if you have a few of these and you want only 1 to be completed at a time.
User avatar
Stay-C
 
Posts: 3514
Joined: Sun Jul 16, 2006 2:04 am

Post » Mon Nov 19, 2012 1:59 am

BootySweat: Cool! :)

Necrogaz: Why not just
Spoiler
Bool bMessageShownEvent OnActivate(OnjectReference akActionRef)	If !bMessageShown		bMesageShown = True		Utility.Wait(72.0)		Debug.MessageBox("...")		bMesageShown = False	EndIfEndEvent
?

Edit: Fix'd. You need akActionRef.

Also: [spoiler][code]Indented Code Here[/code][/spoiler]

with your WYSIWYG editor turned off will result in more easily read code which will retain its indentation (reply with WYSIWYG off to copy and retain indentation or tabs will be replaced with spaces).
User avatar
Lavender Brown
 
Posts: 3448
Joined: Tue Jul 25, 2006 9:37 am

Post » Mon Nov 19, 2012 2:12 am

BootySweat: Cool! :smile:

Necrogaz: Why not just
Spoiler
Bool bMessageShownEvent OnActivate(OnjectReference akActionRef)	If !bMessageShown		bMesageShown = True		Utility.Wait(72.0)		Debug.MessageBox("...")		bMesageShown = False	EndIfEndEvent
?

Edit: Fix'd. You need akActionRef.

Also:
Spoiler
Indented Code Here

with your WYSIWYG editor turned off will result in more easily read code which will retain its indentation (reply with WYSIWYG off to copy and retain indentation or tabs will be replaced with spaces).

tried and for some reason i get the messageafter a few secs instead of getting the message after 3 days
User avatar
candice keenan
 
Posts: 3510
Joined: Tue Dec 05, 2006 10:43 pm

Post » Sun Nov 18, 2012 10:48 pm

tried and for some reason i get the messageafter a few secs instead of getting the message after 3 days

Justin put Utility.Wait(72), which makes the game wait 72 seconds. You want Utility.WaitGameTime(72) so it waits 72 in-game hours.
User avatar
Rachael Williams
 
Posts: 3373
Joined: Tue Aug 01, 2006 6:43 pm

Post » Mon Nov 19, 2012 12:33 pm

Justin put Utility.Wait(72), which makes the game wait 72 seconds. You want Utility.WaitGameTime(72) so it waits 72 in-game hours.

Thanks a lot JustinOther and B1gBadDaddy!!! ive been strugglin with this for the entire weekend now, couldnt figure it out, im gonna continue and if i ever get stucked again, now i know where to ask for help, thanks guys :)

also, is there a script for spawning an npc? after an event?
User avatar
Damien Mulvenna
 
Posts: 3498
Joined: Wed Jun 27, 2007 3:33 pm

Post » Mon Nov 19, 2012 3:00 am

Oh, if waiting three days, yeah, you'd want http://www.creationkit.com/WaitGameTime_-_Utility, but you should pass the value as the expected type whenever possible, so Utility.WaitGameTime(72.0) that afHours doesn't have to be auto-casted from Int to Float.
User avatar
Crystal Birch
 
Posts: 3416
Joined: Sat Mar 03, 2007 3:34 pm

Post » Sun Nov 18, 2012 11:37 pm

Oh, if waiting three days, yeah, you'd want http://www.creationkit.com/WaitGameTime_-_Utility, but you should pass the value as the expected type whenever possible, so Utility.WaitGameTime(72.0) that afHours doesn't have to be auto-casted from Int to Float.

This :)
User avatar
Mark
 
Posts: 3341
Joined: Wed May 23, 2007 11:59 am

Post » Mon Nov 19, 2012 6:16 am

Does someone know if the "Custom Destination" Marker used in game can be found as an ObjectReference of a Form (XMarker ?) or something else in the CK ? To be used in a script.
User avatar
Ebou Suso
 
Posts: 3604
Joined: Thu May 03, 2007 5:28 am

Post » Sun Nov 18, 2012 11:22 pm

so yeah i stumbled upon another problem ("Another one? ALREADY?!") yeah i svck without the help of the people, well my script is the next

Spoiler
Scriptname Chickeneggscript extends ObjectReference {script chicken egg hatchtable}Bool messageshownActorBase property EncDraugr02Melee2HHeadF00 autoEvent OnActivate(ObjectReference akActionRef)Debug.MessageBox("You found a Good Chicken Egg!, this egg will hatch in 3 days!")	  if !messageshown	    messageshown = true	    Utility.WaitGameTime (72)	    Debug.MessageBox("The egg is hatching!")	    messageshown = false	    GoToState ("drop")endifendEventState dropEvent OnContainerChanged (ObjectReference akNewContainer,  ObjectReference akOldContainer)if akOldContainer == Game.GetPlayer() && !akNewContainer  Game.GetPlayer(). PlaceActorAtMe (EncDraugr02Melee2HHeadF00 ,4)endifendeventendstate

Want i want to do is that when 3 days have passed and then i drop the egg, a draugr will appear, any idea what i am doing wrong here?
User avatar
Minako
 
Posts: 3379
Joined: Sun Mar 18, 2007 9:50 pm

Post » Sun Nov 18, 2012 9:52 pm

so yeah i stumbled upon another problem ("Another one? ALREADY?!") yeah i svck without the help of the people, well my script is the next

Spoiler
Scriptname Chickeneggscript extends ObjectReference{script chicken egg hatchtable}Bool messageshownActorBase property EncDraugr02Melee2HHeadF00 autoEvent OnActivate(ObjectReference akActionRef)Debug.MessageBox("You found a Good Chicken Egg!, this egg will hatch in 3 days!")	  if !messageshown		messageshown = true		Utility.WaitGameTime (72)		Debug.MessageBox("The egg is hatching!")		messageshown = false		GoToState ("drop")endifendEventState dropEvent OnContainerChanged (ObjectReference akNewContainer,  ObjectReference akOldContainer)if akOldContainer == Game.GetPlayer() && !akNewContainer  Game.GetPlayer(). PlaceActorAtMe (EncDraugr02Melee2HHeadF00 ,4)endifendeventendstate

Want i want to do is that when 3 days have passed and then i drop the egg, a draugr will appear, any idea what i am doing wrong here?

I don't think a state is necessary to be honest for the ContainerChanged event, for what you want. The best thing to do, is have an integer property in the script, and set it to 1. Then put a condition on the OnContainerChanged to only enable the placeatme if the integer = 1.
User avatar
Ysabelle
 
Posts: 3413
Joined: Sat Jul 08, 2006 5:58 pm

PreviousNext

Return to V - Skyrim