TeamLMS mod, I need help,

The best and quickest support by a group of top-notch editing specialists, guaranteed!

Moderator: Forum Guards

TeamLMS mod, I need help,

Postby bambi » Sun Jul 17, 11 1:32 am

Hi,

I ran into some problems. They are as follows:

1. I can't figure out how to force players into spectate mode when they login. So, people that have been eliminated just reconnect and can have infinite lives that way.

2. When a player is AFK or a player is a spectator, the match will not end.

3. Its also very buggy.

Here is the code for the mod:

[spoiler="Code"]
Code: Select all
//=============================================================================
// team elimination
//=============================================================================

class mtlTeamElim expands MTLTeam;

var int TeamScore[2];

var localized String EnemiesString, AlliesString, VictoryConString1, VictoryConString2, TimeLimitString1, TimeLimitString2;
var localized String TeamScoreString;
var ScoreElement teamSE[32];   
var localized String StrKilled, StrSpree, StrRampage, StrDominating, StrUnstoppable, StrGodlike, StrEndSpree;
var int Lives;
var localized String LivesString;
var class<playerpawn> UnatcoClass;
var class<playerpawn> NsfClass;
var name UnatcoClassName;
var name NsfClassName;

var   int NumUNATCO;
var   int NumNSF;
var   int TotalKills;

event InitGame( string Options, out string Error )
{
   local Weapon Other;
   local string InOpt;

   Super.InitGame(Options, Error);
   if ( ScoreToWin == 0 )
      Lives = 10;
   else
      Lives = ScoreToWin;

        VictoryCondition = "Frags";


      
   foreach AllActors(class'Weapon', Other)
   {   

      if ( Other.IsA('DeusExWeapon') )
      {
      Other.Destroy();
      }
   }
}

event PlayerPawn Login(string Portal, string Options, out string Error, class<playerpawn> SpawnClass)
{

   local DeusExPlayer player;
   local NavigationPoint StartSpot;
   local byte InTeam;
   local DumpLocation dump;
   local int TeamOption;

   TeamOption = TEAM_UNATCO;

   if (HasOption(Options,"Team"))
   {
      TeamOption = int(ParseOption(Options,"Team"));
   }

   // if more than 15% of the game is over, must join as spectator.
       
   if ( TotalKills > 0.15 * (NumPlayers) * Lives )
   SpawnClass = class'Spectator'; //Does this do anything? NO! Darn you!
 
   if ( (NumSpectators >= MaxSpectators) && ((Level.NetMode != NM_ListenServer) || (NumPlayers > 0)) )
   {
   MaxSpectators++;
   }


      if (TeamOption == TEAM_AUTO)
      {
            TeamOption = GetAutoTeam();
      }
         if (TeamOption == TEAM_UNATCO)
      {
            SpawnClass = UnatcoClass;
            //ClientMessage("A Terorrist Has Joined - $player$ - ");
      }
         else if (TeamOption == TEAM_NSF)
      {
              SpawnClass = NsfClass;
           //ClientMessage("A SEAL Has Joined - $player$ - ");
      }
   

   ChangeOption(Options, "Team", string(TeamOption));

   // Can't call Super.Login here since that forces a particular class, so
   //  we cut and paste the code (horribly breaks compatibility, but we
   //  really have no choice)

   ///////////////////////////////////////////////////////////////////////////
   // Login from DeusExMPGame
   
   player = DeusExPlayer(Super(GameInfo).Login(Portal, Options, Error, SpawnClass));

   // If we're traveling across a map on the same mission,
   // nuke the player's crap and
   
   if ((player != None) && (!HasOption(Options, "Loadgame")))
   {
     player.ResetPlayerToDefaults();
     
     dump = player.CreateDumpLocationObject();

     if ((dump != None) && (dump.HasLocationBeenSaved()))
     {
       dump.LoadLocation();

       player.Pause();
       player.SetLocation(dump.currentDumpLocation.Location);
       player.SetRotation(dump.currentDumpLocation.ViewRotation);
       player.ViewRotation = dump.currentDumpLocation.ViewRotation;
       player.ClientSetRotation(dump.currentDumpLocation.ViewRotation);
       
       CriticalDelete(dump);
     }
     else
     {
       // Multiplayer now, defaults to Team_Unatco=0
       InTeam    = GetIntOption( Options, "Team", 0 );

       if (Level.NetMode == NM_Standalone)         
    StartSpot = FindPlayerStart( None, InTeam, Portal );
       else
    StartSpot = FindPlayerStart( Player, InTeam, Portal );

       player.SetLocation(StartSpot.Location);
       player.SetRotation(StartSpot.Rotation);
       player.ViewRotation = StartSpot.Rotation;
       player.ClientSetRotation(player.Rotation);
       player.GotoState('PlayerSpectating');
   }
     }

   if((player != None) && !player.IsA('Spectator'))
   {
   player.PlayerReplicationInfo.Score = Lives;
   }



   player.bAutoActivate = true;

   return player;
}

event PostLogin(playerpawn NewPlayer)
{
   local DeusExPlayer DXPlayer;

   DXPlayer = DeusExPlayer(NewPlayer);

   DXPlayer.ClientMessage("WELCOME TO THE COUNTERSTRIKE MOD");
   DXPlayer.ClientMessage("Visit our Website");
   DXPlayer.ClientMessage("http://dxmp.freeforums.org");

   SetTeam( DXPlayer );

   Super.PostLogin(NewPlayer);
}

function CheckEndGame()
{
   local Pawn PawnLink;
   local int teamUNATCO;
   local int teamNSF;
           
        teamUNATCO = 0;
   teamNSF = 0;

        for ( PawnLink=Level.PawnList; PawnLink!=None; PawnLink=PawnLink.nextPawn )
        {
      if (!Pawnlink.IsA('Spectator'))
      {
         if(PawnLink.PlayerReplicationInfo.Team == TEAM_UNATCO)
         {
            teamUNATCO++;
         }
         if(PawnLink.PlayerReplicationInfo.Team == TEAM_NSF)
         {
            teamNSF++;
         }
      }
        }
       
        if (teamUNATCO < 1)
   {
      GameOver();
   }
   if (teamNSF <1> 0)
      Other.PlayerReplicationInfo.Score -= 1;
            TotalKills++;
            NotifyDeath = True;
   }
 
        if ((Killer.bIsPlayer) && (Other.bIsPlayer))
        {
            BroadcastDeathMessage(Killer, Other, damageType);

                             
            if ( CheckVictoryConditions(Killer, Other, "") )
            {
                 bFreezeScores = True;
                 NotifyDeath = False;
            }
            if ( NotifyDeath )
       HandleDeathNotification( Killer, Other );
   }

        else
        {
       if ( NotifyDeath )
            HandleDeathNotification( Killer, Other );
        }

}

function BroadcastDeathMessage (Pawn Killer, Pawn Other, Name damageType)
{
       /*if ( (damageType == 'PoisonGas') || (damageType == 'Poison') || (damageType == 'PoisonEffect') )
              BroadcastMessage(Killer.PlayerReplicationInfo.PlayerName$" killed "$Other.PlayerReplicationInfo.PlayerName$" with deadly Poison", false, 'DeathMessage');
       else if ( damageType == 'Flamed' )
              BroadcastMessage(Killer.PlayerReplicationInfo.PlayerName$" killed "$Other.PlayerReplicationInfo.PlayerName$" with excessive burning", false, 'DeathMessage');
       else if ( (damageType == 'Shot') && (Killer.Weapon != None) )
              BroadcastMessage(Killer.PlayerReplicationInfo.PlayerName$" killed "$Other.PlayerReplicationInfo.PlayerName$" with the "$Killer.Weapon.ItemName, false, 'DeathMessage');
       else if ( damageType == 'Burned' )
              BroadcastMessage(Other.PlayerReplicationInfo.PlayerName$" ate "$Killer.PlayerReplicationInfo.PlayerName$"'s burning plasma death", false, 'DeathMessage');
       else if ( damageType == 'Exploded' )
              BroadcastMessage(Other.PlayerReplicationInfo.PlayerName$" was smacked down by "$Killer.PlayerReplicationInfo.PlayerName$"'s explosive round", false, 'DeathMessage');
       else if ( damageType == 'SniperDeath' )
              BroadcastMessage(Killer.PlayerReplicationInfo.PlayerName$" inflicted mortal damage upon "$Other.PlayerReplicationInfo.PlayerName$" with the Enhanced Plasma Rifle", false, 'DeathMessage');
       else if ( damageType == 'Sabot' )
              BroadcastMessage(Other.PlayerReplicationInfo.PlayerName$" was ripped to shreds by "$Killer.PlayerReplicationInfo.PlayerName$"'s Sabot Cannon", false, 'DeathMessage');
       else if ( damageType == 'GrenadeDeath' )
              BroadcastMessage(Other.PlayerReplicationInfo.PlayerName$" was smacked down by "$Killer.PlayerReplicationInfo.PlayerName$"'s 20mm Assault Grenade", false, 'DeathMessage');
       
       //else if ( damageType == 'Decapitated' )
       //{
        //      BroadcastMessage(Killer.PlayerReplicationInfo.PlayerName$" put a bullet through "$Other.PlayerReplicationInfo.PlayerName$"'s head", false, 'DeathMessage');
        //      if ( Killer.IsA('DeusExPlayer') )
        //             DeusExPlayer(Killer).MultiplayerNotifyMsg( DeusExPlayer(Killer).MPMSG_HeadShot, , HeadShotString );
       }
       
   else*/
   
   BroadcastMessage(Killer.PlayerReplicationInfo.PlayerName$StrKilled$Other.PlayerReplicationInfo.PlayerName, false, 'DeathMessage');

}

function HandleDeathNotification( Pawn killer, Pawn killee )
{
   local bool killedSelf, valid;

   killedSelf = (killer == killee);

   if (( killee != None ) && killee.IsA('DeusExPlayer'))
   {
      valid = DeusExPlayer(killee).killProfile.bValid;

      if ( killedSelf )
         valid = False;

      DeusExPlayer(killee).MultiplayerDeathMsg( killer, killedSelf, valid, DeusExPlayer(killee).killProfile.name, DeusExPlayer(killee).killProfile.methodStr );
   }
}

function bool ApproveTeam(int CheckTeam)
{
   if (CheckTeam == TEAM_UNATCO)
      return true;
   if (CheckTeam == TEAM_NSF)
      return true;
   if (CheckTeam == TEAM_AUTO)
      return true;

   return false;
}


function int GetAutoTeam()
{
   local int NumUNATCO;
   local int NumNSF;
   local int CurTeam;
   local Pawn CurPawn;

   NumUNATCO = 0;
   NumNSF = 0;

   for (CurPawn = Level.Pawnlist; CurPawn != None; CurPawn = CurPawn.NextPawn)
   {
      if ((CurPawn != None) && (CurPawn.PlayerReplicationInfo != None))
      {

         CurTeam = CurPawn.PlayerReplicationInfo.Team;
         if (CurTeam == TEAM_UNATCO)
         {
            NumUNATCO++;
         }
         else if (CurTeam == TEAM_NSF)
         {
            NumNSF++;
         }
      }
   }

   if (NumUNATCO <NumNSF> NumNSF)
      return TEAM_NSF;
   else
      return TEAM_UNATCO;
}

function ChangeOption(out string Options, string OptionKey, string NewValue)
{
   local string NewOptions;//new option string
   local string CurOption;
   local string CurKey;
   local string CurValue;

   NewOptions = "";

   while (GrabOption(Options,CurOption))
   {
      GetKeyValue(CurOption, CurKey, CurValue);
      if (CurKey ~= OptionKey)
         CurValue = NewValue;
      NewOptions = NewOptions $ "?" $ CurKey $ "=" $ CurValue;
   }

   Options = NewOptions;
}

simulated function bool ArePlayersAllied(DeusExPlayer FirstPlayer, DeusExPlayer SecondPlayer)
{
   if ((FirstPlayer == None) || (SecondPlayer == None))
      return false;
   return (FirstPlayer.PlayerReplicationInfo.team == SecondPlayer.PlayerReplicationInfo.team);
}



simulated function TeamWinScreen( DeusExPlayer thisPlayer, GC gc, float screenWidth, float screenHeight, int winningTeam,
                                 String killerStr, String killeeStr, String methodStr )
{
   local String str;
   local float x, y, w, h;

   // Show who won the match
   if ( thisPlayer.PlayerReplicationInfo.team == winningTeam )
      gc.SetTextColor( GreenColor );
   else
      gc.SetTextColor( RedColor );

   gc.SetFont(Font'FontMenuExtraLarge');

   switch( winningTeam )
   {
      case TEAM_NSF:
         str = TeamNsfString $ WonMatchString;
         break;
      case TEAM_UNATCO:
         str = TeamUnatcoString $ WonMatchString;
         break;
      case TEAM_DRAW:
         str = TeamDrawString;
         break;
   }

   gc.GetTextExtent( 0, w, h, str );
   x = (screenWidth * 0.5) - (w * 0.5);
   y = screenHeight * WinY;
   gc.DrawText( x, y, w, h, str );

   y += h;

   // Show who won it and who got killed
   if ( VictoryCondition ~= "Frags" )
   {
      gc.SetFont(Font'FontMenuTitle');
      if (( killerStr ~= "" ) || (killeeStr ~= ""))
         log( "Warning:Bad kill string in final death message." );
      else
      {
         str = MatchEnd1String $ killerStr $ MatchEnd2String $ killeeStr $ methodStr;
         gc.GetTextExtent( 0, w, h, str );
         if ( w >= screenWidth )
         {
            y -= (h * 0.5);
            str = MatchEnd1String $ killerStr $ MatchEnd2String $ killeeStr;
            gc.GetTextExtent( 0, w, h, str );
            x = (screenWidth * 0.5) - (w * 0.5);
            gc.DrawText( x, y, w, h, str );
            y += h;
            str = methodStr;
            gc.GetTextExtent( 0, w, h, str );
            x = (screenWidth * 0.5) - (w * 0.5);
            gc.DrawText( x, y, w, h, str );

         }
         else
         {
            x = (screenWidth * 0.5) - (w * 0.5);
            gc.DrawText( x, y, w, h, str );
         }
      }
   }

   // Show the scoreboard for all to see
   ShowTeamDMScoreboard( thisPlayer, gc, screenWidth, screenHeight );

   // Press fire to continue message
   ContinueMsg( gc, screenWidth, screenHeight );
}

function SetTeam( DeusExPlayer player )
{
   if ( player.IsA(UnatcoClassName))
   {
      player.PlayerReplicationInfo.Team = TEAM_UNATCO;
      player.MultiplayerNotifyMsg( player.MPMSG_TeamUnatco );
   }
   else if ( player.IsA(NsfClassName))
   {
      player.PlayerReplicationInfo.Team = TEAM_NSF;
      player.MultiplayerNotifyMsg( player.MPMSG_TeamNsf );
   }
   else
      log( "Warning: Player:"$player$" has chosen an invalid team!" );

}

simulated function int GetTeamList( DeusExPlayer player, bool Allies )
{
   local int i, numTeamList;

   if ( player == None )
      return( 0 );

   numTeamList = 0;

   for ( i = 0; i <scorePlayers>= 10 ))
         NotifyGameStatus( ScoreToWin/5, TeamUnatcoString, False, False );
      if (( TeamScore[TEAM_UNATCO] == ScoreToWin - 1 ) && (ScoreTowin >= 2 ))
         NotifyGameStatus( 1, TeamUnatcoString, False, True );
      if (( TeamScore[TEAM_NSF] == ScoreToWin-(ScoreToWin/5)) && ( ScoreToWin >= 10 ))
         NotifyGameStatus( ScoreToWin/5, TeamNsfString, False, False );
      if (( TeamScore[TEAM_NSF] == ScoreToWin-1 ) && (ScoreTowin >= 2 ))
         NotifyGameStatus( 1, TeamNsfString, False, True );
      

      if (numnsfplayers==numnsfgone)
      {
         TeamHasWon( TEAM_UNATCO, Killer, Killee, Method );
         return true;
      }
           if (numunatcoplayers==numunatcogone)
      {
         TeamHasWon( TEAM_NSF, Killer, Killee, Method );
         return true;
      }
   }
   else if ( VictoryCondition ~= "Time" )
   {
      timeLimit = float(ScoreToWin)*60.0;

      if (( Level.Timeseconds >= (timeLimit-NotifyMinutes*60.0) ) && ( timeLimit >= NotifyMinutes*60.0*2.0 ))
      {
         if ( TeamScore[TEAM_UNATCO] > TeamScore[TEAM_NSF] )
            NotifyGameStatus( int(NotifyMinutes), TeamUnatcoString, True, True );
         else if ( TeamScore[TEAM_UNATCO] == TeamScore[TEAM_NSF] )
            NotifyGameStatus( int(NotifyMinutes), "Tied", True, True );
         else
            NotifyGameStatus( int(NotifyMinutes), TeamNsfString, True, True );
      }

      if ( Level.Timeseconds >= timeLimit )
      {
         if ( TeamScore[TEAM_UNATCO] > TeamScore[TEAM_NSF] )
         {
            TeamHasWon( TEAM_UNATCO, Killer, Killee, Method );
            return true;
         }
         else if ( TeamScore[TEAM_UNATCO] < TeamScore[TEAM_NSF] )
         {
            TeamHasWon( TEAM_NSF, Killer, Killee, Method );
            return true;
         }
         else
         {
            TeamHasWon( TEAM_DRAW, Killer, Killee, Method );
            return true;
         }
      }
   }
   else
      log( "Warning: Unknown victory type:"$VictoryCondition$" " );

   return false;
}

simulated function ShowVictoryConditions( GC gc, float screenWidth, float yoffset, DeusExPlayer thisPlayer )
{
   local String str, secStr;
   local float x, y, w, h;
   local int minutesLeft, secondsLeft, timeLeft;
   local float ftimeLeft;

   if ( VictoryCondition ~= "Frags" )
      str = VictoryConString1 $ ScoreToWin $ VictoryConString2;
   else if ( VictoryCondition ~= "Time" )
   {
      timeLeft = ScoreToWin * 60 - Level.Timeseconds - thisPlayer.ServerTimeDiff;
      if ( timeLeft < 0 )
         timeleft = 0;
      minutesLeft = timeLeft/60;
      ftimeLeft = float(timeLeft);
      secondsLeft = int(ftimeLeft%60);
      if ( secondsLeft < 10 )
         secStr = "0" $ secondsLeft;
      else
         secStr = "" $ secondsLeft;

      str = TimeLimitString1 $ minutesLeft $ ":" $ secStr $ TimeLimitString2;
   }
   else
      log( "Warning: Unknown victory type:"$VictoryCondition$" " );

   gc.GetTextExtent( 0, w, h, str );
   x = (screenWidth * 0.5) - (w * 0.5);
   gc.DrawText( x, yoffset, w, h, str );
}

simulated function SortTeamScores( int PlayerCount )
{
   local ScoreElement tmpSE;
   local int i, j, max;
   
   for ( i = 0; i < PlayerCount-1; i++ )
   {
      max = i;
      for ( j = i+1; j <PlayerCount> teamSE[max].Score )
            max = j;
         else if (( teamSE[j].Score == teamSE[max].Score) && (teamSE[j].Deaths < teamSE[max].Deaths))
            max = j;
      }
      tmpSE = teamSE[max];
      teamSE[max] = teamSE[i];
      teamSE[i] = tmpSE;
   }
}

simulated function LocalGetTeamTotals( int teamSECnt, out float score, out float deaths, out float streak )
{
   local int i;

   score = 0; deaths = 0; streak = 0;
   for ( i = 0; i < teamSECnt; i++ )
   {
      score += teamSE[i].Score;
      deaths += teamSE[i].Deaths;
      streak += teamSE[i].Streak;
   }
}

simulated function ShowTeamDMScoreboard( DeusExPlayer thisPlayer, GC gc, float screenWidth, float screenHeight )
{
   local float yoffset, ystart, xlen, ylen, w, h, w2;
   local bool bLocalPlayer;
   local int i, allyCnt, enemyCnt, barLen;
   local ScoreElement fakeSE;
   local String str, teamStr;

   if ( !thisPlayer.PlayerIsClient() && (Level.NetMode != NM_Standalone))
      return;

   // Always use this font
   gc.SetFont(Font'FontMenuSmall');
   str = "TEST";
   gc.GetTextExtent( 0, xlen, ylen, str );

   // Refresh out local array
   RefreshScoreArray( thisPlayer );

   // Just allies
   allyCnt = GetTeamList( thisPlayer, True );
   SortTeamScores( allyCnt );

   ystart = screenHeight * PlayerY;
   yoffset = ystart;

   // Headers
   gc.SetTextColor( WhiteColor );
   ShowVictoryConditions( gc, screenWidth, ystart, thisPlayer );
   yoffset += (ylen * 2.0);
   DrawHeaders( gc, screenWidth, yoffset );
   yoffset += (ylen * 1.5);

   if ( thisPlayer.PlayerReplicationInfo.team == TEAM_UNATCO )
      teamStr = TeamUnatcoString;
   else
      teamStr = TeamNsfString;

   // Allies
   gc.SetTextColor( GreenColor );
   fakeSE.PlayerName = AlliesString $ " (" $ teamStr $ ")";
   LocalGetTeamTotals( allyCnt, fakeSE.score, fakeSE.deaths, fakeSE.streak );
   DrawNameAndScore( gc, fakeSE, screenWidth, yoffset );
   gc.GetTextExtent( 0, w, h, StreakString );
   barLen = (screenWidth * StreakX + w)-(PlayerX*screenWidth);
   gc.SetTileColorRGB(0,255,0);
   gc.DrawBox( PlayerX * screenWidth, yoffset+h, barLen, 1, 0, 0, 1, Texture'Solid');
   yoffset += ( h * 0.25 );
   for ( i = 0; i < allyCnt; i++ )
   {
      bLocalPlayer = (teamSE[i].PlayerID == thisPlayer.PlayerReplicationInfo.PlayerID);
      if ( bLocalPlayer )
         gc.SetTextColor( GoldColor );
      else
         gc.SetTextColor( GreenColor );
      yoffset += ylen;
      DrawNameAndScore( gc, teamSE[i], screenWidth, yoffset );
   }

   yoffset += (ylen*2);

   if ( thisPlayer.PlayerReplicationInfo.Team == TEAM_UNATCO )
      teamStr = TeamNsfString;
   else
      teamStr = TeamUnatcoString;

   // Enemies
   enemyCnt = GetTeamList( thisPlayer, False );
   SortTeamScores( enemyCnt );
   gc.SetTextColor( RedColor );
   gc.GetTextExtent( 0, w, h, EnemiesString );
   gc.DrawText( PlayerX * screenWidth, yoffset, w, h, EnemiesString );
   fakeSE.PlayerName = EnemiesString $ " (" $ teamStr $ ")";
   LocalGetTeamTotals( enemyCnt, fakeSE.score, fakeSE.deaths, fakeSE.streak );
   DrawNameAndScore( gc, fakeSE, screenWidth, yoffset );
   gc.SetTileColorRGB(255,0,0);
   gc.DrawBox( PlayerX * screenWidth, yoffset+h, barLen, 1, 0, 0, 1, Texture'Solid');
   yoffset += ( h * 0.25 );

   for ( i = 0; i < enemyCnt; i++ )
   {
      yoffset += ylen;
      DrawNameAndScore( gc, teamSE[i], screenWidth, yoffset );
   }
}

function bool ChangeTeam(Pawn PawnToChange, int NewTeam)
{
   local DeusExPlayer player;

   player.ClientMessage(player.PlayerReplicationInfo.PlayerName$ ", To Change Teams You Must Exit The Game, Change, Then Come Back");

   return true;
}



function ScoreKill(pawn Killer, pawn Other)
{
   Other.DieCount++;

   if ( killer != None )
   {
      killer.killCount++;

   }

   BaseMutator.ScoreKill(Killer, Other);
}

function bool RestartPlayer( pawn aPlayer )   
{
   local NavigationPoint startSpot;
   local bool foundStart;
        local DeusExPlayer PlayerToRestart;
   local Pawn P;

   if( bRestartLevel && Level.NetMode!=NM_DedicatedServer && Level.NetMode!=NM_ListenServer )
      return true;

   if ( aPlayer.PlayerReplicationInfo.Score < 1 )
   {
      NotifyOut (aPlayer.PlayerReplicationInfo.PlayerName);

   }

   startSpot = FindPlayerStart(aPlayer, 255);
   if( startSpot == None )
      return false;
      
   foundStart = aPlayer.SetLocation(startSpot.Location);
   if( foundStart )
   {
      startSpot.PlayTeleportEffect(aPlayer, true);
      aPlayer.SetRotation(startSpot.Rotation);
      aPlayer.ViewRotation = aPlayer.Rotation;
                aPlayer.GroundSpeed = aPlayer.Default.GroundSpeed;
      aPlayer.Acceleration = vect(0,0,0);
      aPlayer.Velocity = vect(0,0,0);
      aPlayer.Health = aPlayer.Default.Health;
      aPlayer.ClientSetRotation( startSpot.Rotation );
      aPlayer.bHidden = false;
      aPlayer.SoundDampening = aPlayer.Default.SoundDampening;
                aPlayer.DamageScaling = aPlayer.Default.DamageScaling;
      if ( aPlayer.PlayerReplicationInfo.Score < 1 )
      {
         aPlayer.bHidden = true;
         aPlayer.PlayerRestartState = 'PlayerSpectating';
      }
      else
      {
         aPlayer.SetCollision( true, true, true );
                        AddDefaultInventory(aPlayer);
         if (aPlayer.IsA('DeusExPlayer'))
                        {
                             PlayerToRestart = DeusExPlayer(aPlayer);
                             PlayerToRestart.ShowHud(True);
                             PlayerToRestart.SkillSystem.ResetSkills();   
                             PlayerToRestart.ResetPlayerToDefaults();
                             PlayerToRestart.SkillSystem.CreateSkills(PlayerToRestart);
                             PlayerToRestart.myProjKiller = None;

                        }
      }
   }
       
   return foundStart;
}

//-------------------------------------------------------------------------------------------------
// ShowScores()
//-------------------------------------------------------------------------------------------------
simulated function DrawHeaders( GC gc, float screenWidth, float yoffset )
{
   local float x, w, h, barLen;

   // Player header
   gc.GetTextExtent( 0, w, h, PlayerString );
   x = screenWidth * PlayerX;
   gc.DrawText( x, yoffset, w, h, PlayerString );

   // Kills header
   gc.GetTextExtent( 0, w, h, KillsString );
   x = screenWidth * KillsX;
   gc.DrawText( x, yoffset, w, h, KillsString );

   // Deaths header
   gc.GetTextExtent( 0, w, h, DeathsString );
   x = screenWidth * DeathsX;
   gc.DrawText( x, yoffset, w, h, DeathsString );

   // Deaths header
   gc.GetTextExtent( 0, w, h, StreakString );
   x = screenWidth * StreakX;
   gc.DrawText( x, yoffset, w, h, StreakString );

   gc.SetTileColorRGB(255,255,255);
   gc.DrawBox( PlayerX * screenWidth, yoffset+h, (x + w)-(PlayerX*screenWidth), 1, 0, 0, 1, Texture'Solid');
}


function NotifyOut(String name)
{
  local Pawn curPawn;

  for ( curPawn = Level.PawnList; curPawn != None; curPawn = curPawn.nextPawn )
      if ( curPawn.IsA('DeusExPlayer') )
           curPawn.ClientMessage(name$" has been eliminated.");
}

function GameOver()
{
   Super.GameOver();
}

defaultproperties
{
     EnemiesString="Hostiles"
     AlliesString="Allies"
     VictoryConString1="Objective: Eliminate each opposing team member's "
     VictoryConString2=" lives."
     TimeLimitString1="Objective: Score the most kills before the clock ( "
     TimeLimitString2=" ) runs out!"
     TeamScoreString=" Team Score:"
     StrKilled=" killed "
     StrSpree=" is on a killing spree!"
     StrRampage=" is on a rampage!!"
     StrDominating=" is dominating!"
     StrUnstoppable=" is unstoppable!"
     StrGodlike=" is Godlike!"
     StrEndSpree="'s killing spree was ended by "
     LivesString="Lives"
     UnatcoClass=Class'mtlTeamElim.Terrorist'
     NsfClass=Class'mtlTeamElim.SEAL'
     UnatcoClassName=Terrorist
     NsfClassName=SEAL
     bAugsAllowed=False
     KillsString="Lives"
     TeamNsfString="SEAL"
     TeamUnatcoString="Terrorist"
}
[/spoiler]
Last edited by bambi on Sun Jul 17, 11 1:33 am, edited 1 time in total.
Image
bambi
Regular
 
Posts: 476
Joined: Sun Nov 27, 05 7:26 pm

Postby bambi » Thu Jul 21, 11 12:52 am

It's ok. Just keep working on the mod, don't give up.
Image
bambi
Regular
 
Posts: 476
Joined: Sun Nov 27, 05 7:26 pm

Postby Poor » Thu Jul 21, 11 1:11 am

Can you email me the source?
Poor
Poster
 
Posts: 190
Joined: Tue Jan 04, 11 7:42 pm

Postby Kaiden » Thu Jul 21, 11 1:59 am

bambi wrote:It's ok. Just keep working on the mod, don't give up.


I'd help if I could D:
------
Kaiden
Alpha
 
Posts: 7003
Joined: Wed Jan 18, 06 11:21 pm
Location: England

Postby bambi » Thu Jul 21, 11 3:58 am

hey, what is BaseMutator??

I can't find any info on BaseMutator.
Image
bambi
Regular
 
Posts: 476
Joined: Sun Nov 27, 05 7:26 pm

Postby Poor » Thu Jul 21, 11 5:30 am

Mutators are stored in a linked list. BaseMutator is the first mutator in the list, which you need to get the other mutators.
Poor
Poster
 
Posts: 190
Joined: Tue Jan 04, 11 7:42 pm


Return to Editing issues

Who is online

Users browsing this forum: No registered users and 8 guests
cron