Start dialogue from activating object

Post » Wed Jun 20, 2012 6:57 am

Hi all,

I am curently working on a big mod for crafting. Is it possible to start a dialogue when the player is activating a furniture (to start a dialogue when the player activates the forge, for example)

Tx in advance.
User avatar
gary lee
 
Posts: 3436
Joined: Tue Jul 03, 2007 7:49 pm

Post » Wed Jun 20, 2012 8:02 am

Yea it should be possible, I think you need a fake actor for the voice though, you may need to search for a better answer or clue if no one here can help.
User avatar
Emilie Joseph
 
Posts: 3387
Joined: Thu Mar 15, 2007 6:28 am

Post » Wed Jun 20, 2012 11:24 am

I guess I will partly do with message boxes, as they can have multiple choices...
User avatar
Kay O'Hara
 
Posts: 3366
Joined: Sun Jan 14, 2007 8:04 pm

Post » Wed Jun 20, 2012 7:16 am

Ok, I tried message boxes, but this is very bulky and inneficient for a big multiple layer craft system. Do any of you have any ideas on how to start a dialogue from activating an object please ?
User avatar
Arnold Wet
 
Posts: 3353
Joined: Fri Jul 07, 2006 10:32 am

Post » Wed Jun 20, 2012 4:14 am

All you need is to use http://www.creationkit.com/TalkingActivator
User avatar
Paul Rice
 
Posts: 3430
Joined: Thu Jun 14, 2007 11:51 am

Post » Wed Jun 20, 2012 4:27 am

make a talking activator, if you want that then you will possibly want to extract some meshes and textures from the BSA file.
User avatar
Gracie Dugdale
 
Posts: 3397
Joined: Wed Jun 14, 2006 11:02 pm

Post » Wed Jun 20, 2012 10:04 am

Thanks a lot guys. Another question please. If I want to make all the tanning racks in the game start a dialogue, do I have to create a new rack "talking activator", make it speak the stuff, and change every single current vanilla rack with my new one, or is there a way to turn the vanilla racks into talking activator ones, through scripting. You bet I hope this is feasible....
Maybe a bit of code here could help me start the process, as everything else is ready, as you can see here, from my "message box " solution, that is really not nice in my opinion....:


 Scriptname css_tanning_script extends ObjectReference import utilityimport fron_utility_functions message property css_craftingtanning_base automessage property css_tanning_LeatherStrips automessage property css_peltandhidesintoleather automiscobject Property leather01 automiscobject Property badleather automiscobject Property LeatherStrips autoglobalvariable property css_tanning_skill autoEvent OnActivate(ObjectReference triggerRef)string sSkillLevel = Fron_GetSkillLevelName(css_tanning_skill.getvalueint())debug.notification("you are "+ sSkillLevel + " in tanning.")string sResultint xp_gained_4int myState = 1 while myState > 0int ibutton = css_craftingtanning_base.Show() if iButton == 0 myState = 0  int ibuttonleatherstrips = css_tanning_LeatherStrips.Show() ;craft leather strips from bad leather or from normal leather   if ibuttonleatherstrips == 0 ;craft leather strips from bad leather	myState = 0	sResult = css_check_success(5,12,20,css_tanning_skill,-4)	debug.notification(sResult)	game.getPlayer().RemoveItem(badleather)	if sResult == "echec critique"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	 elseif sResult == "echec"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	 elseif sResult == "reussite"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	  game.getPlayer().addItem(LeatherStrips,1)	 elseif sResult == "reussite critique"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	  int critsucc_badLeather_number = utility.randomint(1,3)	  game.getPlayer().addItem(LeatherStrips,critsucc_badLeather_number)	endif   elseif ibuttonleatherstrips == 1 ;craft leather strips from normal leather	myState = 0	sResult = css_check_success(5,12,20,css_tanning_skill,-4)	debug.notification(sResult)	game.getPlayer().RemoveItem(leather01)	if sResult == "echec critique"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	 elseif sResult == "echec"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	  game.getPlayer().addItem(LeatherStrips,1)	 elseif sResult == "reussite"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	  int succ_Leather_number = utility.randomint(2,4)	  game.getPlayer().addItem(LeatherStrips,succ_Leather_number)	 elseif sResult == "reussite critique"	  xp_gained_4 = XP_gain(sResult,3,6,2,4,1,3,0,1)	  Improve_skill_from_experience(css_tanning_skill,xp_gained_4)	  int critsucc_badLeather_number = utility.randomint(3,6)	  game.getPlayer().addItem(LeatherStrips,critsucc_badLeather_number)	endif     elseif ibuttonleatherstrips == 2 ;exit rack	myState = 0   endif  elseif iButton == 1   myState = 0   int ibuttonleatherfromhides = css_peltandhidesintoleather.Show() ;craft leather from animal hides 1                   endifendWhileEndEvent  
User avatar
jessica robson
 
Posts: 3436
Joined: Mon Oct 09, 2006 11:54 am

Post » Wed Jun 20, 2012 7:20 am

Well you could use FindClosestRefOfType functions to locate racks near the player, then create your talking rack at the existing rack with it's alpha set to zero (making it invisible), then have it do a MoveTo to the existing rack so you can match the rotation, then turn the alpha back on (1.0), disable the existing rack, and wait.

When the player leaves range of the Talking Rack, have the rack Re-enable the vanilla rack, and then delete itself.
User avatar
Lucie H
 
Posts: 3276
Joined: Tue Mar 13, 2007 11:46 pm

Post » Wed Jun 20, 2012 8:12 am

Tx for the answer. I wish the CK was more straightforward....
User avatar
Emily abigail Villarreal
 
Posts: 3433
Joined: Mon Aug 27, 2007 9:38 am


Return to V - Skyrim