Thursday, May 3, 2012

So Embarassing to Admit How Cool This Is



Wow. Just … wow.

CK: Mark and Recall Spell

RandomNoob: I made and tested this script for someone's Mark and Recall spell. The markers I used were XmarkerHeading objects. I was able to move them to and from whatever cell they were in, whether or not they were loaded, with no problems.
Scriptname Example extends ActiveMagicEffect

GlobalVariable Property MyGlobal Auto
ObjectReference Property Marker01 Auto
ObjectReference Property Marker02 Auto
Activator Property Portal Auto

Event OnEffectStart(Actor akTarget, Actor akCaster)
    if (akTarget.IsInInterior())
            Debug.MessageBox("You cannot use this spell inside an interior cell.")
            Return
    endif
    ObjectReference PortalRef = akTarget.PlaceAtMe(Portal)
    Utility.Wait(2)
    if (MyGlobal.Value)
            MyGlobal.SetValue(0.0)
            Marker01.MoveTo(akTarget)
            akTarget.MoveTo(Marker02)
    else
            MyGlobal.SetValue(1.0)
            Marker02.MoveTo(akTarget)
            akTarget.MoveTo(Marker01)
    endif
    PortalRef.MoveTo(akTarget)
    Utility.Wait(3.5)
    PortalRef.Disable()
    PortalRef.Delete()
EndEvent
This script was posted to make a point yet it's handy in it's own respect. Source: Anyone know how to move objects from non-parented cells?

CK: Controlling Actor Casting Frequency

Two methods of getting an actor not to spam their most powerful spell: Il Ducey: Just put [this] as one of your effect scripts, and blammo you're done.
Scriptname SpellCoolDown extends ActiveMagicEffect

Int Property time Auto

SPELL Property Move Auto

event OnEffectStart(Actor akTarget, Actor akCaster)
     akCaster.removespell(Move)
     Utility.Wait(time)
     akCaster.addspell(Move)
endEvent
Redwood Elf: You could Only give them the low power abilities, and use states to "build up" to the high power attacks
Int BuildUpLevel = 0

Function AdToBuildup(int Powerlevel)
EndFunction

Auto State OutOfCombat
    event OnStateBegin()
        BuildUpLevel = 0
        ; Code to disable all but "Starter" abilities here.
    EndEvent

    Function AddToBuildUp(int PowerLevel) ; Needs to be defined in all states.
    EndFunction

    Event OnCombatStateChanged(Actor Who, Int What)
       BuildUpLevel = 3 - What ; Gets +2 if entering combat, but only +1 if "searching"
       GoToState("CombatStart")
    EndEvent
EndState

State CombatStart

    Function AddToBuildUp(int PowerLevel) ; Call this from each of the High (3) low (1) and mid(2) level effects.
       BuildUpState += PowerLevel
       If BuildUpState >= 5
           GoToState("CombatLevel5")
       EndIf
    EndFunction

EndState

State CombatLevel5
    event OnStateBegin()
       ; Code to enable mid level abilities here.
    EndEvent

    Function AddToBuildUp(int PowerLevel)
       BuildUpState += PowerLevel
       If BuildUpState >= 15
           GoToState("CombatLevel15")
       EndIf
    EndFunction
EndState

State CombatLevel15
    event OnStateBegin()
       ; Code to enable High level abilities here.
    EndEvent

    Function AddToBuildUp(int PowerLevel)
       BuildUpState += PowerLevel
       If BuildUpState >= 20
           GoToState("CombatStart")
       EndIf
    EndFunction

EndState
The first method does seem pretty easy. Yet as stated it would affect the use of that spell game-wide. I like the second method's attachment directly to an actor that you want to influence. Source: How to get NPCs to not spam one spell

CK: Creating Plants and Building a Worldspace

A few people on the forums mentioned the Hoddminir Mod Development blog… wow! Some great tutorials and lots of interesting reading. The mod I'm working on now could really use a new worldspace to play in so this will be quite helpful.

Forum: Need Help with a Scripting Issue

Someone on the forums was asking for help making a dialog box. They were familiar with Oblivion but still learning Skyrim's CK, so they posted Oblivion code and asked for the Skyrim equivalent.
ScriptName SpecialSackScript

Short button

Begin OnActivate
        MessageBox "What you want to do?", "Take", "Open"
End

Begin on gamemode
        Set button to GetButtonPressed
        If ( button == 0 )
                Activate
        ElseIf ( button == 1)
                Specialsack.Activate player 1
        EndIf
End
JustinOther provided the new script:
ScriptName SpecialSackScript extends ObjectReference

Message Property YourMESG Auto

Event OnActivate(ObjectReference akActionRef)

        Int iButton = YourMESG.Show()
        If iButton == 0
                ; Take
        ElseIf iButton == 1
                ; Open
        EndIf

EndEvent
I went the extra mile and pointed out that a Message object needed to be created, as follows:

Tuesday, May 1, 2012

The Definitive XSplit Guide

Question came up in Lore's chat about what he uses to stream. One of the admins threw out a link that I need to check into.

Pretty Busy Elder Scrolls Day

Dawnguard was announced on the BethBlog today. No details beyond the teaser image and stating the fact it will initially be an the XBOX 360 exclusive. While that's a slight marketing annoyance, whatever. PC has had Mods for months so let them have there little headstart. The real meat is being saved for E3 in June. Bethesda also mentioned that it's been ten years since the release of Morrowind.
Insanity! That group of people really did something for Bethesda and RPGs imo. I was way into Morrowind for years and my love for their series didn't diminish with Oblivion or Skyrim. In fact, I still consider the best purchase I ever made was both the Morrowind GOTY and the Oblivion GOTY for $15. It was a special sale when the Skyrim hype started. Now that I'm finally off my ass and learning to mod Skyrim I think I will go back and learn how to do all three. It's surprising how much interest is still out there. Read an article about a Morrowind Overhaul project. Wonder if I can help out in some way…