123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- <?PHP
-
- class TriggeredHandler {
-
- /*-------------------------------------------------------------------------*\
- * Handles triggered events. *
- \*-------------------------------------------------------------------------*/
-
- public function parseLine($date, $player, $playerdetails, $line) {
- $type = Parser::parseString($line);
-
- switch($type) {
- case 'chargedeployed':
- $this->chargeDeployed($date, $player);
- break;
- case 'domination':
- $this->domination($date, $player, $line, 'domination');
- break;
- case 'revenge':
- $this->domination($date, $player, $line, 'revenge');
- break;
- case 'kill assist':
- $this->assist($date, $player, $line);
- break;
- case 'builtobject':
- $this->builtObject($date, $player, $line);
- break;
- case 'killedobject':
- $this->killedObject($date, $player, $line);
- break;
- case 'flagevent':
- $this->flagEvent($date, $player, $line);
- break;
- default:
- //echo "No support for trigger type $type\n";
- }
- }
-
- private function flagEvent($date, $player, $line) {
- $props = Parser::parseProps($line);
-
- switch ($props['event']) {
- case 'defended':
- $this->doFlagEvent($date, $player, $line, 'intel defended', $props);
- $player->addScore(2);
- break;
- case 'picked up':
- $this->doFlagEvent($date, $player, $line, 'intel picked up', $props);
- $player->addScore(2);
- break;
- case 'dropped':
- $this->doFlagEvent($date, $player, $line, 'intel dropped', $props);
- $player->addScore(-2);
- break;
- case 'captured':
- $this->doFlagEvent($date, $player, $line, 'intel captured', $props);
- $player->addScore(5);
- break;
- default:
- // echo ...
- }
- }
-
- private function doFlagEvent($date, $player, $line, $type, $props) {
- if ($player->getOpenSession() == null || $player->getOpenSession()->getRolePeriod() == null) {
- echo "Player ", $player->getSteamID(), " has no session/roleperiod. Dropping flag event\n";
- return;
- }
-
- $playerID = $player->getOpenSession()->getRolePeriod()->getID();
-
- $sql = 'INSERT INTO events (event_timestamp, roleperiod_id, event_type, ';
- $sql .= 'event_location) VALUES (FROM_UNIXTIME(' . $date . '), ' . $playerID;
- $sql .= ', \'' . $type . '\', \'' . s($props['position']) . '\')';
- mysql_query($sql);
- }
-
- private function killedObject($date, $player, $line) {
- $props = Parser::parseProps($line);
-
- if (isset($props['assist'])) {
- // TODO!
- return;
- }
-
- $arg = s($props['object']);
- $victim = Parser::parsePlayer($props['objectowner'], false);
- $victim = Player::getBySteamID($victim['steamid']);
-
- if ($victim == null || $victim->getOpenSession() == null
- || $victim->getOpenSession()->getRolePeriod() == null) {
- echo "Victim invalid\n";
- return;
- }
-
- if ($player == null || $player->getOpenSession() == null
- || $player->getOpenSession()->getRolePeriod() == null) {
- echo "Player invalid\n";
- return;
- }
-
-
- $victimID = $victim->getOpenSession()->getRolePeriod()->getID();
- $playerID = $player->getOpenSession()->getRolePeriod()->getID();
- $location = s($props['attacker_position']);
- $weapon = Weapon::getID($props['weapon']);
-
- $sql = 'INSERT INTO events (event_timestamp, roleperiod_id, event_type, ';
- $sql .= 'event_location, event_arg, event_victim, event_weapon) VALUES (';
- $sql .= 'FROM_UNIXTIME(' . $date . '), ' . $playerID . ', \'object killed\', ';
- $sql .= '\'' . $location . '\', \'' . $arg . '\', ' . $victimID . ', ';
- $sql .= $weapon . ')';
- mysql_query($sql) or die(mysql_error());
-
- $player->addScore( 2);
- $victim->addScore(-1);
- }
-
- private function builtObject($date, $player, $line) {
- $props = Parser::parseProps($line);
-
- if ($player == null || $player->getOpenSession() == null
- || $player->getOpenSession()->getRolePeriod() == null) {
- echo "Player invalid\n";
- return;
- }
-
- $sql = 'INSERT INTO events (event_timestamp, roleperiod_id, event_type, ';
- $sql .= 'event_arg, event_location) VALUES (FROM_UNIXTIME(' . $date . '), ';
- $sql .= $player->getOpenSession()->getRolePeriod()->getID() . ', ';
- $sql .= '\'object built\', \'' . s($props['object']) . '\', \'';
- $sql .= s($props['position']) . '\')';
- $res = mysql_query($sql);
-
- $player->addScore(2);
- }
-
- private function assist($date, $player, $line) {
- $line = substr($line, 8); // against
- $victim = Parser::parsePlayer($line);
- $victim = Player::getBySteamID($victim['steamid']);
- $props = Parser::parseProps($line);
-
- if ($victim == null || $victim->getOpenSession() == null
- || $victim->getOpenSession()->getRolePeriod() == null) {
- echo "Victim invalid\n";
- return;
- }
-
- if ($player == null || $player->getOpenSession() == null
- || $player->getOpenSession()->getRolePeriod() == null) {
- echo "Player invalid\n";
- return;
- }
-
- $sql = 'SELECT kill_id FROM kills WHERE kill_victim = ';
- $sql .= $victim->getOpenSession()->getRolePeriod()->getID() . ' ORDER BY kill_timestamp DESC LIMIT 0,1';
- $res = mysql_query($sql);
-
- if (mysql_num_rows($res) == 0) {
- echo "Couldn't find kill for assist\n";
- return;
- }
-
- $num = mysql_result($res, 0);
-
- $sql = 'UPDATE kills SET kill_assist = ';
- $sql .= $player->getOpenSession()->getRolePeriod()->getID();
- $sql .= ', kill_assist_position = \'' . $props['assister_position'] . '\' WHERE kill_id = ' . $num;
- $res = mysql_query($sql);
-
- $score = ($victim->getScore() / $player->getScore())
- * PlayerClass::getModifier($victim->getOpenSession()->getRolePeriod()->getClass(),
- $player->getOpenSession()->getRolePeriod()->getClass());
- $player->addScore($score);
- }
-
- private function chargeDeployed($date, $player) {
- if ($player == null || $player->getOpenSession() == null
- || $player->getOpenSession()->getRolePeriod() == null) {
- echo "Player invalid\n";
- return;
- }
-
- $sql = 'INSERT INTO events (event_timestamp, roleperiod_id, event_type) ';
- $sql .= 'VALUES (FROM_UNIXTIME(' . $date . '), ' . $player->getOpenSession()->getRolePeriod()->getID() . ', \'ubercharge\')';
- $res = mysql_query($sql);
-
- $player->addScore(2);
- }
-
- private function domination($date, $player, $line, $type) {
- $line = substr($line, 8); // against
-
- $victim = Parser::parsePlayer($line);
- $victim = Player::getBySteamID($victim['steamid']);
-
- if ($victim == null || $victim->getOpenSession() == null
- || $victim->getOpenSession()->getRolePeriod() == null) {
- echo "Victim invalid\n";
- return;
- }
-
- if ($player == null || $player->getOpenSession() == null
- || $player->getOpenSession()->getRolePeriod() == null) {
- echo "Player invalid\n";
- return;
- }
-
- $sql = 'INSERT INTO events (event_timestamp, roleperiod_id, event_type, ';
- $sql .= 'event_victim) VALUES (FROM_UNIXTIME(' . $date . '), ';
- $sql .= $player->getOpenSession()->getRolePeriod()->getID() . ', \'' . $type;
- $sql .= '\', ' . $victim->getOpenSession()->getRolePeriod()->getID() . ')';
- $res = mysql_query($sql);
-
- $player->addScore(5);
- }
-
- }
-
- ?>
|