Download

How to get Kismet Events with parameters.

Overview: SeqenceEvents Events are so far the only way to communicate unrealscript with Kismet, and I would love to get em working so I can engineer more functionality for video games I develop with Unreal Development Kit.

Context: I want to develope a **quest **system, and so far a quest system requires for sure, if you want quests to be context dependent, " so they need to be coherent with the level ", you need to use kismet for sure.
Instance: Timmius Sweenius, lol, has the quest to get to a place where there is a trigger!, and whenever that happends he completes the quest, and whenever that quest is completed you want an event in kismet to happened, to perhaps " Run a nice matinee cutscene or even create a new quest.

Problem: How do you send parameters to an event, when you call it by for instance A.TriggerEventClass( class’SeqEvent_SeeDeath’ , killedPawn); Ok how do I tell go get param 1
param 2 param 3 assigned and let’s see if something happends.

Instance: QuestCompletedEvent. ok now go send the params, this is ansewered in other posts, but let’s see if anyone can tell me the direct way to get it as older posts are kinda dirty and confusing perhaps even outdated, thanks.

But any help is good thanks.

Hello, for many useful kismet hacks (even undocumented ones) I suggest you to check my “UMG” for UDK.

http://kiscan.ondrejhrusovsky.com/

If I understand correctly then I think you will be especially interested in KISSeqEvent_LinkedTag, KISHUD classes:


/**
 * TriggerGlobalTagEvent
 * Declaration
 * Triggers any instance of the InEventClass node in the kismet which contains same Tag as ReqTag.
 * See more in the KISSeqEvent_LinkedTag class. Optionally we can specify an index of the output.
 * Works similar to the TriggerGlobalEventClass() function.
 * 
 *  @param InEventClass Class of the event.
 *  @param ReqTag Tag to look for.
 *  @param ActivateIndex Index to activate. Default is -1.
 *  
 *  @Return True if successfully trigerred.
 */
simulated function bool TriggerGlobalTagEvent(class<KISSeqEvent_LinkedTag> InEventClass, name ReqTag, optional int ActivateIndex = INDEX_NONE)
{
	local array<SequenceObject> EventsToActivate;
	local array<int> ActivateIndices;
	local Sequence GameSeq;
	local bool bResult;
	local int i;

	if(ActivateIndex >= 0)
	{
		ActivateIndices[0] = ActivateIndex;
	}

	GameSeq = WorldInfo.GetGameSequence();
	if(GameSeq != None)
	{
		GameSeq.FindSeqObjectsByClass(InEventClass, true, EventsToActivate);
		for(i=0;i<EventsToActivate.Length;i++)
		{
			if(KISSeqEvent_LinkedTag(EventsToActivate*) != none && KISSeqEvent_LinkedTag(EventsToActivate*).CheckTag(ReqTag) && SequenceEvent(EventsToActivate*).CheckActivate(self, self,, ActivateIndices))
			{
				bResult = true;
			}
		}
	}

	return bResult;
}



class KISSeqEvent_LinkedTag extends KISSequenceEvent
	abstract;

var(Linked_Tag) array<string> Tag;

function bool CheckTag(name ReqTag)
{
	local string FoundTag;
	local bool bResult;

	PublishLinkedVariableValues();

	foreach Tag(FoundTag)
	{
		if(name(FoundTag) == ReqTag)
		{
			bResult = true;
			break;
		}
	}

	return bResult;
}

defaultproperties
{
	VariableLinks.Empty
	VariableLinks(0)=(ExpectedType=class'SeqVar_String',LinkDesc="Tags",PropertyName=Tag)
}


I belive you can use same trick to set some variable in event.

And does later on your event gets triggered ? Ok cool I can try this if my own ways don’t get nice results, for now actually I do pretty fine with the instigator node but could be better really.

I am not sure what you mean by later but my event works absolutly fine. What I do here is that I have many events of same class and I want to trigger only some with specific Tag variable connected as variable to event. So I check all events of my class and trigger only ones with valid tag.