=== modified file 'src/engine/ePlayer.cpp' --- src/engine/ePlayer.cpp 2008-08-07 09:13:59 +0000 +++ src/engine/ePlayer.cpp 2008-10-31 04:07:44 +0000 @@ -5502,6 +5502,7 @@ ePlayerNetID *p = se_PlayerNetIDs(i); if(p->Owner() == 0) continue; // ignore AIs + p->SetGotInZone(false); se_onlinePlayerWriter << p->GetLogName(); // add player color to the message === modified file 'src/engine/ePlayer.h' --- src/engine/ePlayer.h 2008-05-12 13:49:08 +0000 +++ src/engine/ePlayer.h 2008-10-31 04:16:45 +0000 @@ -378,7 +378,8 @@ static tString FilterName( tString const & in ); //!< filters a name (removes unprintables, color codes and spaces) bool IsAllowedToRename ( void ); //!< tells if the user can rename or not, takes care about everything void AllowRename( bool allow ); //!< Allows a player to rename (or not) - + bool GetGotInZone() {return wasInZone_;} + void SetGotInZone(bool a) {wasInZone_ = a;} private: tColoredString nameFromClient_; //!< this player's name as the client wants it to be. Avoid using it when possilbe. tColoredString nameFromServer_; //!< this player's name as the server wants it to be. Avoid using it when possilbe. @@ -386,6 +387,7 @@ tColoredString coloredName_; //!< this player's name, cleared by the server. Use this for onscreen screen display. tString name_; //!< this player's name without colors. tString userName_; //!< this player's name, cleared for system logs. Use for writing to files or comparing with admin input. + bool wasInZone_; // flag for winzone #ifdef KRAWALL_SERVER tString rawAuthenticatedName_; //!< the raw authenticated name in user@authority form. === modified file 'src/tron/gGame.cpp' --- src/tron/gGame.cpp 2008-07-28 07:43:10 +0000 +++ src/tron/gGame.cpp 2008-10-31 19:48:07 +0000 @@ -1209,7 +1209,7 @@ void sg_DeclareWinner( eTeam* team, char const * message ) { - if ( team && !winner ) +if ( team && !winner && !wishWinner) { wishWinner = team->TeamID() + 1; wishWinnerMessage = message; === modified file 'src/tron/gWinZone.cpp' --- src/tron/gWinZone.cpp 2008-07-29 18:59:05 +0000 +++ src/tron/gWinZone.cpp 2008-10-31 04:16:16 +0000 @@ -1334,8 +1334,14 @@ //! // ******************************************************************************* +static eLadderLogWriter sg_winzoneEnteredWriter("WINZONE_ENTERED", true); void gWinZoneHack::OnEnter( gCycle * target, REAL time ) { + if(!target->Player()->GetGotInZone()){ + sg_winzoneEnteredWriter << target->Player()->GetLogName() << time; + sg_winzoneEnteredWriter.write(); + target->Player()->SetGotInZone(true); + } static const char* message="$player_win_instant"; sg_DeclareWinner( target->Player()->CurrentTeam(), message ); @@ -1547,6 +1553,9 @@ //! @param time the current time //! // ******************************************************************************* +static eLadderLogWriter sg_deathShotFragWriter("DEATH_SHOT_FRAG", true); +static eLadderLogWriter sg_deathShotSuicideWriter("DEATH_SHOT_SUICIDE", true); +static eLadderLogWriter sg_deathShotTeamkillWriter("DEATH_SHOT_TEAMKILL", true); static eLadderLogWriter sg_deathDeathZoneWriter("DEATH_DEATHZONE", true); void gDeathZoneHack::OnEnter( gCycle * target, REAL time ) { @@ -1591,6 +1600,8 @@ } else { + sg_deathShotSuicideWriter << *target->Player()->GetUserName(); + sg_deathShotSuicideWriter.write(); if (!score_shot_suicide) { tColoredString playerName; @@ -1621,6 +1632,8 @@ if (prey->CurrentTeam() != hunter->CurrentTeam()) { + sg_deathShotFragWriter << prey->GetUserName() << hunter->GetUserName(); + sg_deathShotFragWriter.write(); char const *pWinString = "$player_win_shot"; char const *pFreeString = "$player_free_shot"; int score = score_shot; @@ -1677,6 +1690,8 @@ return; } + sg_deathShotTeamkillWriter << prey->GetUserName() << hunter->GetUserName(); + sg_deathShotTeamkillWriter.write(); tColoredString hunterName; hunterName << *hunter << tColoredString::ColorString(1,1,1); sn_ConsoleOut( tOutput( "$player_teamkill", hunterName, preyName ) );