--- t2matchlog/logpositiondata.cs 2003/12/18 00:52:50 44 +++ t2matchlog/logpositiondata.cs 2003/12/21 00:09:21 45 @@ -12,6 +12,19 @@ function DefaultGame::startMatch(%game) { + if (ClientGroup.getCount() == 0) { + $logpos_wait = true; + } else { + $logpos_wait = false; + logpos_start(); + } + + Parent::startMatch(%game); +} + + +function logpos_start() +{ $logpos_flag_count = 0; %file = "positiondata/" @ $missionSequence @ "_" @ $CurrentMissionType @ @@ -42,14 +55,17 @@ $logpos_vehicle_count = 0; $logpos_gameover = false; schedule(1000, 0, logpos_write_position_data); - - Parent::startMatch(%game); } //////////////////////////////////////////////////////////////////////////////// function DefaultGame::gameOver(%game) { + if ($logpos_wait) { + Parent::gameOver(%game); + return; + } + for (%ci = 0; %ci != ClientGroup.getCount(); %ci++) { %client = ClientGroup.getObject(%ci); logpos_file.writeLine("L " @ %client SPC %client.score); @@ -136,15 +152,10 @@ //////////////////////////////////////////////////////////////////////////////// -function serverCmdSuicide(%client) -{ - logpos_file.writeLine("serverCmdSuicide " @ %client); - Parent::serverCmdSuicide(%client); -} - function vehicleListAdd(%blockName, %obj) { - logpos_file.writeLine("V " @ %obj SPC %obj.team SPC %blockName); + if (!$logpos_wait) + logpos_file.writeLine("V " @ %obj SPC %obj.team SPC %blockName); $logpos_vehicle[$logpos_vehicle_count] = %obj; $logpos_vehicle_count++; Parent::vehicleListAdd(%blockName, %obj); @@ -152,7 +163,8 @@ function vehicleListRemove(%data, %obj) { - logpos_file.writeLine("W " @ %obj); + if (!$logpos_wait) + logpos_file.writeLine("W " @ %obj); for (%i = 0; %i != $logpos_vehicle_count; %i++) if ($logpos_vehicle[%i] == %obj) $logpos_vehicle[%i] = 0; @@ -161,9 +173,14 @@ function DefaultGame::playerSpawned(%game, %player) { - %name = stripChars(detag(getTaggedString(%player.client.name)), - "\cp\co\c6\c7\c8\c9"); - logpos_file.writeLine("S " @ %player.client SPC %player.team SPC %name); + if ($logpos_wait) { + $logpos_wait = false; + logpos_start(); + } else { + %name = stripChars(detag(getTaggedString(%player.client.name)), + "\cp\co\c6\c7\c8\c9"); + logpos_file.writeLine("S " @ %player.client SPC %player.team SPC %name); + } Parent::playerSpawned(%game, %player); } @@ -176,7 +193,8 @@ %implement.getClassName() $= "FlyingVehicle"))) if (%controller = %implement.getControllingClient()) %clKiller = %controller; - logpos_file.writeLine("K " @ %clVictim SPC %clKiller SPC %damageType); + if (!$logpos_wait) + logpos_file.writeLine("K " @ %clVictim SPC %clKiller SPC %damageType); Parent::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement, %damageLocation); } @@ -184,42 +202,62 @@ function DefaultGame::onClientDamaged(%game, %clVictim, %clAttacker, %damageType, %sourceObject) { - logpos_file.writeLine("D " @ %clVictim SPC %clAttacker SPC %damageType); + if (!$logpos_wait) + logpos_file.writeLine("D " @ %clVictim SPC %clAttacker SPC %damageType); Parent::onClientDamaged(%game, %clVictim, %clAttacker, %damageType, %sourceObject); } function DefaultGame::onClientLeaveGame(%game, %client) { - logpos_file.writeLine("L " @ %client SPC %client.score); + if (!$logpos_wait) + logpos_file.writeLine("L " @ %client SPC %client.score); Parent::onClientLeaveGame(%game, %client); } function Player::setArmor(%this, %size) { - logpos_file.writeLine("A " @ %this.client SPC %size); + if (!$logpos_wait) + logpos_file.writeLine("A " @ %this.client SPC %size); Parent::setArmor(%this, %size); } function ShapeBase::setInventory(%this, %data, %value, %force) { - logpos_file.writeLine("I " @ %this.client SPC %data.getName() SPC %value); + if (!$logpos_wait) + logpos_file.writeLine("I " @ %this.client SPC %data.getName() SPC %value); Parent::setInventory(%this, %data, %value, %force); } function AIDeployObject(%client, %object) { - logpos_file.writeLine("O " @ %object SPC %client SPC - %object.getDataBlock().getName() SPC %object.position); + if (!$logpos_wait) + logpos_file.writeLine("O " @ %object SPC %client SPC + %object.getDataBlock().getName() SPC %object.position); Parent::AIDeployObject(%client, %object); } function ShapeBaseData::onDestroyed(%data, %obj, %prevstate) { - logpos_file.writeLine("P " @ %obj SPC %obj.lastDamagedBy); + if (!$logpos_wait) + logpos_file.writeLine("P " @ %obj SPC %obj.lastDamagedBy); Parent::onDestroyed(%data, %obj, %prevstate); } +function CTFGame::flagCap(%game, %player) +{ + if (!$logpos_wait) + logpos_file.writeLine("C " @ %player.holdingFlag.team SPC %player.client); + Parent::flagCap(%game, %player); +} + +function CTFGame::flagReturn(%game, %flag, %player) +{ + if (!$logpos_wait) + logpos_file.writeLine("R " @ %flag.team SPC %player.client); + Parent::flagReturn(%game, %flag, %player); +} + }; activatePackage(t2matchlog);