imma post the 3 scripts i created....maybe someone is seeing something im not
Code:
class UTAssaultGame extends UTTeamGame;
var UTAssaultMapInfo MapInfo;
//******* FUNCTION FOR PRE BEGIN PLAY *******
function PreBeginPlay()
{
MapInfo = UTAssaultMapInfo(WorldInfo.GetMapInfo());
if (MapInfo != None)
{
TimeLimit = MapInfo.TimeLimit;
}
else
{
TimeLimit = 2;
}
Super.PreBeginPlay();
}
//******* END FUNCTION FOR PRE BEGIN PLAY *******
//******* FUNCTION FOR POST BEGIN PLAY *******
function PostBeginPlay()
{
Super.PostBeginPlay();
MapInfo.Initialize();
}
//******* END FUNCTION FOR POST BEGIN PLAY *******
//******* FUNCTION FOR CHECK SCORE *******
function bool CheckScore(PlayerReplicationInfo Scorer)
{
if (MapInfo.GameOver)
{
GameReplicationInfo.Teams[0].Score = 1;
GameReplicationInfo.Teams[1].Score = 0;
EndGame(Scorer, "triggered");
return true;
}
GameReplicationInfo.Teams[0].Score = 0;
GameReplicationInfo.Teams[1].Score = MapInfo.NumObjectivesLeft();
return false;
}
//******* END FUNCTION FOR CHECK SCORE *******
//******* FUNCTION FOR SCORE KILL *******
function ScoreKill(Controller Killer, Controller Other)
{
Super(GameInfo).ScoreKill(Killer, Other);
}
//******* END FUNCTION FOR SCORE KILL *******
//******* default PROPERTIES *******
defaultproperties
{
Acronym="AS"
MapPrefixes[0]="AS"
Description="Defend or defeat a number of objectives."
EndOfMatchRulesTemplateStr_Scoring="Defend or defeat a number of objectives."
EndOfMatchRulesTemplateStr_Time="Defend or defeat a number of objectives."
GameName="Assault"
}
Code:
class UTAssaultMapInfo extends UTMapInfo;
struct AssaultObjective
{
var() String Name;
var() int Points;
var() String AttackNext;
var() String DefendNext;
var bool Completed;
};
var() array<AssaultObjective> AssaultObjectives;
var() int TimeLimit;
var bool GameOver;
function Initialize()
{
local int i;
for(i=0; i<AssaultObjectives.Length; i++)
{
AssaultObjectives[i].Completed = false;
}
GameOver = false;
}
function CompleteObjective(String ObjName, PlayerReplicationInfo PRI)
{
local int ObjIndex;
ObjIndex = AssaultObjectives.Find('Name', ObjName);
if (ObjIndex != -1)
{
if (!AssaultObjectives[ObjIndex].Completed)
{
AssaultObjectives[ObjIndex].Completed = true;
//SendMessage(AssaultObjectives[ObjIndex]);
}
if (PRI != None)
{
PRI.Score += AssaultObjectives[ObjIndex].Points;
}
}
if (ObjName == "Win")
{
GameOver = true;
}
WorldInfo(Outer).Game.CheckScore(PRI);
}
function SendMessage(AssaultObjective Obj, PlayerReplicationInfo PRI)
{
local UTPlayerController PC;
foreach WorldInfo(Outer).AllControllers(class'UTPlayerController', PC)
{
if (PC.PlayerReplicationInfo.Team.TeamIndex == 1)
{
PC.ClientMessage(Obj.DefendNext);
}
else
{
PC.ClientMessage(Obj.AttackNext);
}
}
}
function int NumObjectivesLeft()
{
local int i;
local int Num;
Num = 0;
for (i=0; i<AssaultObjectives.Length; i++)
{
if (!AssaultObjectives[i].Completed)
{
Num++;
}
}
return Num;
}
defaultproperties
{
TimeLimit=2
}
Code:
class UTAssaultSeqAct extends SequenceAction;
var() String CompleteObjective;
function Activated()
{
local UTAssaultMapInfo MapInfo;
local SeqVar_Object ObjVar;
local Pawn P;
local Controller C;
local PlayerReplicationInfo PRI;
foreach LinkedVariables(class'SeqVar_Object', ObjVar, "Target")
{
C = Controller(ObjVar.GetObjectValue());
if (C == None)
{
P = Pawn(ObjVar.GetObjectValue());
if (P != None)
{
C = P.Controller;
}
}
if (C != None)
{
PRI = C.PlayerReplicationInfo;
if (PRI != None)
{
break;
}
}
}
MapInfo = UTAssaultMapInfo(GetWorldInfo().GetMapInfo());
if (MapInfo != None)
{
MapInfo.CompleteObjective(CompleteObjective, PRI);
}
Super.Activated();
}
defaultproperties
{
ObjName="Complete Assault Objective"
}
Bookmarks