Quick Questions -- Quick Answers, The 25th

Post » Tue May 17, 2011 5:51 am

If I make a mod with functions from an OBSE plugin, do the mod users simply need OBSE or do they need the OBSE plugin as well?


They will need the obse plugin as well.
User avatar
Samantha Wood
 
Posts: 3286
Joined: Sun Oct 15, 2006 5:03 am

Post » Mon May 16, 2011 11:17 pm

How do you make it so that when an animation loops it doesn't jump immediately back to the regular idle animation?
User avatar
Laura Simmonds
 
Posts: 3435
Joined: Wed Aug 16, 2006 10:27 pm

Post » Tue May 17, 2011 3:30 pm

I'm trying to add bits of armor to creatures/skeleton/skellie.nif but they won't display in the CS (it says I need to hide the skeleton before exporting). Is there any way to adjust iether the armor nif or skellie nif to allow this only using NifSkope? I'm trying to achieve something along the lines of http://tesnexus.com/downloads/images/25050-1-1244658054.jpg
User avatar
Justin
 
Posts: 3409
Joined: Sun Sep 23, 2007 12:32 am

Post » Tue May 17, 2011 10:11 am

I'm trying to add bits of armor to creatures/skeleton/skellie.nif but they won't display in the CS (it says I need to hide the skeleton before exporting). Is there any way to adjust iether the armor nif or skellie nif to allow this only using NifSkope? I'm trying to achieve something along the lines of http://tesnexus.com/downloads/images/25050-1-1244658054.jpg

I'm trying to add bits of armor to creatures/skeleton/skellie.nif but they won't display in the CS (it says I need to hide the skeleton before exporting). Is there any way to adjust iether the armor nif or skellie nif to allow this only using NifSkope? I'm trying to achieve something along the lines of http://tesnexus.com/downloads/images/25050-1-1244658054.jpg

Do you have an extra NiNode in NifSkope?

Like http://i53.tinypic.com/1ic0f7.jpg?

Or something like that? That's what happened to me. Now, I'm not positive, but I think I got rid of the SceneRoot.00 and it worked... a little better.



Or it could have been choosing "Pad and Sort Bones" when exporting in Blender.

I did so many things to try to figure out why things weren't working it was ridiculous.
User avatar
Brandon Bernardi
 
Posts: 3481
Joined: Tue Sep 25, 2007 9:06 am

Post » Tue May 17, 2011 2:04 pm

Do you have an extra NiNode in NifSkope?

Like http://i53.tinypic.com/1ic0f7.jpg?

Yeah, I've got the extra NiNode, but it's not helping. Is there a way I can edit the Cuirass mesh (in NifSkope) before I copy/paste it to the Skellie.nif so that it matches the NiNodes of the Skellie?
User avatar
Monika Krzyzak
 
Posts: 3471
Joined: Fri Oct 13, 2006 11:29 pm

Post » Mon May 16, 2011 11:35 pm

Yeah, I've got the extra NiNode, but it's not helping. Is there a way I can edit the Cuirass mesh (in NifSkope) before I copy/paste it to the Skellie.nif so that it matches the NiNodes of the Skellie?

If you use Blender, when you export just use "Pad and Sort Bones" if that doesn't solve it then I've got no idea. :( Sorry.
User avatar
Angus Poole
 
Posts: 3594
Joined: Fri Aug 03, 2007 9:04 pm

Post » Tue May 17, 2011 2:05 pm

Is there any way to make an activator cast a summon spell?

Thanks
User avatar
SamanthaLove
 
Posts: 3565
Joined: Mon Dec 11, 2006 3:54 am

Post » Tue May 17, 2011 1:20 pm

Is there any way to make an activator cast a summon spell?

Thanks

If the activator is always present in the same location (like the Atronach altar in Frostcrag Spire), you can script it to enable an initially disabled actor and play one of the summon effect shaders. If it's a summoned activator, you can have it cast a scripted spell at whatever target you want the summon to go to (or attack) by using a modified version of the following script:

Spoiler
scn CustomPlayerSummonGenericScriptfloat timerfloat fadeshort playonceref SUMNBegin ScriptEffectStart        set SUMN to SummonRefID ; The refernce to summon        SUMN.disable        SUMN.moveto PLayer 30 30 10 ; here comes the Summon        SUMN.enable        set fade to 1EndBegin ScriptEffectUpdate       if timer > 240 ; This moves it back after four minutes           SUMN.moveto BSXRef ; The XMarker to move it to and from           SUMN.resurrect           SUMN.disable       endif       if SUMN.getdead && timer < 238             set timer to 238       endif       if timer > 0.1 && playonce == 0           SUMN.pms effectSummonMythicDawn 1           set playonce to 1       endif       set timer to timer + ScriptEffectElapsedSeconds       if timer > 238 && playonce == 1           SUMN.pms effectSummonMythicDawn 2           set playonce to 2       endif       if playonce == 2            set fade to fade - 0.03            SUMN.saa fade       endifEndBegin ScriptEffectFinish        SUMN.moveto BSXRef 0 0 10        SUMN.resurrect ; Heals the Summon if it's injured and revives it if it's dead        SUMN.disableEnd


That should get you what you're after.
User avatar
Max Van Morrison
 
Posts: 3503
Joined: Sat Jul 07, 2007 4:48 pm

Post » Tue May 17, 2011 11:22 am

Hi, just wondering why this script doesn't work. Six crystals are supposed to disappear and reappear alternately, casting a spell as they do so but they just sit there. Thanks.

scn aacrystalpfloat timerfloat fQuestDelayTimeshort time = 0begin gamemodeset fQuestDelayTime to 0.001set timer to time + getsecondspassedif (timer % 2 == 0)aacrystalp1.disableaacrystalp2.disableaacrystalp3.disableaacrystalp4.enableaacrystalp5.enableaacrystalp6.enableaacrystalp4.cast aaStandardDrainAttribAgility1Novice aacrystalp0aacrystalp5.cast aaStandardDrainAttribAgility1Novice aacrystalp0aacrystalp6.cast aaStandardDrainAttribAgility1Novice aacrystalp0endifif timer % 2 == 1aacrystalp1.enableaacrystalp2.enableaacrystalp3.enableaacrystalp4.disableaacrystalp5.disableaacrystalp6.disableaacrystalp1.cast aaStandardDrainAttribAgility1Novice aacrystalp0aacrystalp2.cast aaStandardDrainAttribAgility1Novice aacrystalp0aacrystalp3.cast aaStandardDrainAttribAgility1Novice aacrystalp0endifIf getdistance player < 500aacrystalp0.cast aaStandardDrainAttribAgility1Novice playerIf getdistance player < 250player.movetomarker 01011175endifendifend

User avatar
Manny(BAKE)
 
Posts: 3407
Joined: Thu Oct 25, 2007 9:14 am

Post » Tue May 17, 2011 1:55 pm

First, do yourself and us a favor
When posting a script, show your indentation by using code and /code (don't forget the brackets - [ ])

scn aacrystalpfloat timerfloat fQuestDelayTimeshort time = 0begin gamemode	set fQuestDelayTime to 0.001	set timer to time + getsecondspassed	if (timer % 2 == 0)		aacrystalp1.disable		aacrystalp2.disable		aacrystalp3.disable		aacrystalp4.enable		aacrystalp5.enable		aacrystalp6.enable		aacrystalp4.cast aaStandardDrainAttribAgility1Novice aacrystalp0		aacrystalp5.cast aaStandardDrainAttribAgility1Novice aacrystalp0		aacrystalp6.cast aaStandardDrainAttribAgility1Novice aacrystalp0	endif	if timer % 2 == 1		aacrystalp1.enable		aacrystalp2.enable		aacrystalp3.enable		aacrystalp4.disable		aacrystalp5.disable		aacrystalp6.disable		aacrystalp1.cast aaStandardDrainAttribAgility1Novice aacrystalp0		aacrystalp2.cast aaStandardDrainAttribAgility1Novice aacrystalp0		aacrystalp3.cast aaStandardDrainAttribAgility1Novice aacrystalp0	endif	If getdistance player < 500		aacrystalp0.cast aaStandardDrainAttribAgility1Novice player		If getdistance player < 250			player.movetomarker 01011175		endif	endifend


I think your "time" var is not necessary. Besides, adding a short and a float is not a good practice.

Floats go to 6 decimals (I think it's that many...)
Doing XXXX == YYYY when XXXX is a short (integer) and YYYY is a float almost never is true.
It's better to use < or > to check.


I'm sure % means something, but I don't know what (atm, I may look it up later - i've never used it... not that that means anything...)


I do know though, your GetDistance statements are a problem. GetDistance from what?

They should be one of the two statements below:
player.GetDistance ref
ref.GetDistance player

According to the Wiki, the ref.GetDistance is more reliable when checking distance across cell boundries.
User avatar
Jinx Sykes
 
Posts: 3501
Joined: Sat Jan 20, 2007 11:12 pm

Post » Tue May 17, 2011 1:44 am

If the activator is always present in the same location (like the Atronach altar in Frostcrag Spire), you can script it to enable an initially disabled actor and play one of the summon effect shaders. If it's a summoned activator, you can have it cast a scripted spell at whatever target you want the summon to go to (or attack) by using a modified version of the following script:

That should get you what you're after.


Is there any way to script in the summon effects you get with the undead summon spells?
User avatar
Ella Loapaga
 
Posts: 3376
Joined: Fri Mar 09, 2007 2:45 pm

Post » Tue May 17, 2011 1:52 pm

First, do yourself and us a favor
When posting a script, show your indentation by using code and /code (don't forget the brackets - [ ])


I think your "time" var is not necessary. Besides, adding a short and a float is not a good practice.

Floats go to 6 decimals (I think it's that many...)
Doing XXXX == YYYY when XXXX is a short (integer) and YYYY is a float almost never is true.
It's better to use < or > to check.


I'm sure % means something, but I don't know what (atm, I may look it up later - i've never used it... not that that means anything...)


I do know though, your GetDistance statements are a problem. GetDistance from what?

They should be one of the two statements below:
player.GetDistance ref
ref.GetDistance player

According to the Wiki, the ref.GetDistance is more reliable when checking distance across cell boundries.


Sorry about the messy code. The modulus (%) divides the variable by a certain number (in this case 2) and gets the remainder, so when the timer reaches an odd number, 3 crystals deactivate, 3 activate and when the timer reaches an even number the same happens. I removed the variable time (more of an oversight than anything else) and now 3 crystals just sit there casting the spell continuously. I had difficulty with this elsewhere trying to get things to disable then enable after a short delay. Any further help would be much appreciated, it would help my other scripts too.

Edit: The getdistance function is working perfectly so I probably shouldn't have posted it.
User avatar
luke trodden
 
Posts: 3445
Joined: Sun Jun 24, 2007 12:48 am

Post » Tue May 17, 2011 2:23 pm

Sorry about the messy code. The modulus (%) divides the variable by a certain number (in this case 2) and gets the remainder, so when the timer reaches an odd number, 3 crystals deactivate, 3 activate and when the timer reaches an even number the same happens. I removed the variable time (more of an oversight than anything else) and now 3 crystals just sit there casting the spell continuously. I had difficulty with this elsewhere trying to get things to disable then enable after a short delay. Any further help would be much appreciated, it would help my other scripts too.

Edit: The getdistance function is working perfectly so I probably shouldn't have posted it.

If getDistance is working then fQuestDelayTime is useless (it's only meaningful in quest scripts).
% is an integer operator, but timer is a float.
Consider something more like:
scn scriptfloat timershort statebegin gamemode  set timer to timer + getsecondspassed  if timer >= 1.0 ; swap between the two sets of crystals every second    set timer to 0    set state to (state != 1) ; if 0, sets it to 1. if 1, sets it to 0.    if state == 0      enable one set of 3 crystals and have them cast. disable the other 3    else      enable the other set of 3 and have them cast instead    endif  endifend

User avatar
Susan
 
Posts: 3536
Joined: Sun Jun 25, 2006 2:46 am

Post » Tue May 17, 2011 9:00 am

I've cracked it! The game seems to have trouble with enables/disables in the same script. I created two control objects, one with disables/enables for crystals 1-3 the other for crystals 4-6, they are regulated by a global variable set by the timer script. The game handles mixed expressions much the same as C++ so the modulus operator works fine on variables of data type float, baffled as to why I needed 3 different scripts though. Thanks for the help.
User avatar
:)Colleenn
 
Posts: 3461
Joined: Thu Aug 31, 2006 9:03 am

Post » Tue May 17, 2011 11:47 am

Is there any way to script in the summon effects you get with the undead summon spells?

If you mean the "portal" that appears right above them when the appear, you can select that in the "Visual Effects" field of the script effect spell. You can also replace the SUMN.pms effectSummonMythicDawn line with another effect shader, although I can't find one specifically for undead.


I have a quick question of my own: How do I make an existing texture partially transparent?
User avatar
Naomi Lastname
 
Posts: 3390
Joined: Mon Sep 25, 2006 9:21 am

Post » Tue May 17, 2011 11:49 am

If I use kill and disable in an OnLoad block on an actor that is spawned by a leveled list the actor will be deleted and replaced as usual when the cell resets even though he is disabled, right?

I have a quick question of my own: How do I make an existing texture partially transparent?


You need to use the alpha channel of the diffuse texture for that. The TriStips that use the texture also need an alpha property. Best is if you look at a cobweb to see how it's done (look at the alpha channel of the texture and the alpha property in the nif).
User avatar
Logan Greenwood
 
Posts: 3416
Joined: Mon Jul 30, 2007 5:41 pm

Post » Tue May 17, 2011 6:28 am

If I use kill and disable in an OnLoad block on an actor that is spawned by a leveled list the actor will be deleted and replaced as usual when the cell resets even though he is disabled, right?

You're killing and disabling only the spawned the actor instance (which should have an "FF" id as generated in-game) as long as you use the implied run-time reference, and the leveled list spawn point (with your mod's load order byte first) should spit out another, unless you disable that by using an explicit compile-time reference.
User avatar
Vincent Joe
 
Posts: 3370
Joined: Wed Sep 26, 2007 1:13 pm

Post » Tue May 17, 2011 1:28 am

Is there a way to show the player characters head when using SetFeMaleBipedPath (and for male of course)? The following example will show the PC wearing a fur helmet, but with no head what so ever:

set myitem to player.GetEquippedObject 0SetFeMaleBipedPath "Armor\Fur\F\Helmet.NIF" myitem

User avatar
Nikki Lawrence
 
Posts: 3317
Joined: Sat Jul 01, 2006 2:27 am

Post » Tue May 17, 2011 10:54 am

You're killing and disabling only the spawned the actor instance (which should have an "FF" id as generated in-game) as long as you use the implied run-time reference, and the leveled list spawn point (with your mod's load order byte first) should spit out another, unless you disable that by using an explicit compile-time reference.


Ah ok...no wait, I didn't understand a thing. Bascially I'm doing the same thing they did in Crowded Roads (kill and disable unwanted actors that spawn from leveled lists), just want to make sure it doesn't cause problems. I have a few actors in a leveled list, each of these actors has a script with an OnLoad block. Depending on a certain percentage the actors will either spawn normally when the cell gets loaded or they will be removed instantly (they still spawn, but are killed and disabled immediately on load). What I want to achieve can't be done with the regular 'chance none' thing in leveled lists, that's why I need to go the kill+disable route. All I want to know is whether these actors will respawn normally on cell reset like dead actors that are not disabled (they get removed and new ones spawn from the leveled list).
User avatar
Julia Schwalbe
 
Posts: 3557
Joined: Wed Apr 11, 2007 3:02 pm

Post » Tue May 17, 2011 7:09 am

If you mean the "portal" that appears right above them when the appear, you can select that in the "Visual Effects" field of the script effect spell. You can also replace the SUMN.pms effectSummonMythicDawn line with another effect shader, although I can't find one specifically for undead.


I have a quick question of my own: How do I make an existing texture partially transparent?


the problem is that the undead portal effect isnt an effect shader, if you look at a summon undead magic effect its actually a linked nif file.

I have a quick question of my own: How do I make an existing texture partially transparent?


Depends what you mean, if you want the entire thing to be half see-through then you just have to modify the material settings in nifskope. If you only want bits to be transparent then you can either add an alpha channel or use an ersarer tool (llike in paint.net) to delete parts from the texture. Either way you will also have to add a niAlphaProperty to each of the niTriStripes/NiTriShapes.
User avatar
Skivs
 
Posts: 3550
Joined: Sat Dec 01, 2007 10:06 pm

Post » Tue May 17, 2011 4:17 am

You need to use the alpha channel of the diffuse texture for that. The TriStips that use the texture also need an alpha property. Best is if you look at a cobweb to see how it's done (look at the alpha channel of the texture and the alpha property in the nif).


Depends what you mean, if you want the entire thing to be half see-through then you just have to modify the material settings in nifskope. If you only want bits to be transparent then you can either add an alpha channel or use an ersarer tool (llike in paint.net) to delete parts from the texture. Either way you will also have to add a niAlphaProperty to each of the niTriStripes/NiTriShapes.


Thanks! :D That got it, although I ran into what you might call a "gotcha". In the Block Details of the NiAlpha Property, there is a listing named "Flags". If the number in the "Value" column is not set to 237, the transparency effect will not occur.

Here is an image where the texture doesn't appear transparent. Note that the Flags value is 236.

http://img72.imageshack.us/img72/700/notransparency.jpg

Here is an image where the very same texture does appear transparent. Note that the Flags value is 237.

http://img693.imageshack.us/img693/6776/transparentd.jpg

I tried multiple values and 237 was the only one that provided transparency.

Ah ok...no wait, I didn't understand a thing. Basically I'm doing the same thing they did in Crowded Roads (kill and disable unwanted actors that spawn from leveled lists), just want to make sure it doesn't cause problems. I have a few actors in a leveled list, each of these actors has a script with an OnLoad block. Depending on a certain percentage the actors will either spawn normally when the cell gets loaded or they will be removed instantly (they still spawn, but are killed and disabled immediately on load). What I want to achieve can't be done with the regular 'chance none' thing in leveled lists, that's why I need to go the kill+disable route. All I want to know is whether these actors will respawn normally on cell reset like dead actors that are not disabled (they get removed and new ones spawn from the leveled list).

What Ghastley is saying is, as long as the script is on the actor and not the leveled list, then the leveled list will continue to spawn actors as normal.
User avatar
Alexis Estrada
 
Posts: 3507
Joined: Tue Aug 29, 2006 6:22 pm

Post » Tue May 17, 2011 8:01 am

Okay, got a new question: If I want to remove the collision properties of an object (like a bookshelf) so that I can walk through it, what do I need to do?
User avatar
jennie xhx
 
Posts: 3429
Joined: Wed Jun 21, 2006 10:28 am

Post » Mon May 16, 2011 11:05 pm

Thanks! :D That got it, although I ran into what you might call a "gotcha". In the Block Details of the NiAlpha Property, there is a listing named "Flags". If the number in the "Value" column is not set to 237, the transparency effect will not occur.


The flag value is a code. If you click on the flag you will see a menu that pops up. There you can define the settings of the alpha property. Each of these settings has a number and all settings together make up the flag value. That is why some values work while others don't. 237 is the default setting, others that work and are often used are 4845 and 4333. There are lots of possible other combinations that work though, although the result might look strange. It's the same as with bsx flags, where you can see the code values behind the check boxes.

Okay, got a new question: If I want to remove the collision properties of an object (like a bookshelf) so that I can walk through it, what do I need to do?


Open the mesh in Nifskope, right-click on bhkCollisionObject and choose 'remove branch'. You could also uncheck 'enable collision' in bsx flags or remove bsx flags completely if the object isn't animated, although that isn't needed (but may improve performance by 0.000001% :P).

What Ghastley is saying is, as long as the script is on the actor and not the leveled list, then the leveled list will continue to spawn actors as normal.


Thanks!
User avatar
Dark Mogul
 
Posts: 3438
Joined: Tue Feb 20, 2007 11:51 am

Post » Mon May 16, 2011 11:53 pm

Lo, all. Is it possible to see the cell coordinates ingame? I seem to remember it is possible....
User avatar
hannaH
 
Posts: 3513
Joined: Tue Aug 15, 2006 4:50 am

Post » Tue May 17, 2011 7:49 am

Lo, all. Is it possible to see the cell coordinates ingame? I seem to remember it is possible....

Open the console, type sdt 0, press Enter, then type tdt. The cell coordinate will be among the information on the right side of your screen.
User avatar
hannaH
 
Posts: 3513
Joined: Tue Aug 15, 2006 4:50 am

PreviousNext

Return to IV - Oblivion