statistic collector improvement, simple stats list continue work
This commit is contained in:
committed by
Steffen Schröder
parent
c4f3cad350
commit
0bdb1a7826
@ -31,9 +31,22 @@ class StatisticCollector implements CallbackListener {
|
||||
const STAT_ON_DEATH = 'Deaths';
|
||||
const STAT_ON_PLAYER_REQUEST_RESPAWN = 'Respawns';
|
||||
const STAT_ON_KILL = 'Kills';
|
||||
const STAT_LASER_SHOT = 'Laser Shots';
|
||||
const STAT_LASER_HIT = 'Laser Hit';
|
||||
const STAT_ROCKET_SHOT = 'Rocket Shots';
|
||||
const STAT_ROCKET_HIT = 'Rocket Hit';
|
||||
const STAT_ARROW_SHOT = 'Arrow Shots';
|
||||
const STAT_ARROW_HIT = 'Arrow Hit';
|
||||
const STAT_NUCLEUS_SHOT = 'Nucleus Shots';
|
||||
const STAT_NUCLEUS_HIT = 'Nucleus Hit';
|
||||
|
||||
const SPECIAL_STAT_KILL_DEATH_RATIO = 'Kill / Death';
|
||||
|
||||
const WEAPON_LASER = 1;
|
||||
const WEAPON_ROCKET = 2;
|
||||
const WEAPON_NUCLEUS = 3;
|
||||
const WEAPON_ARROW = 5;
|
||||
|
||||
/**
|
||||
* Private Properties
|
||||
*/
|
||||
@ -56,8 +69,8 @@ class StatisticCollector implements CallbackListener {
|
||||
|
||||
//Initialize Settings
|
||||
$this->maniaControl->settingManager->initSetting($this, self::SETTING_COLLECT_STATS_ENABLED, true);
|
||||
$this->maniaControl->settingManager->initSetting($this, self::SETTING_COLLECT_STATS_MINPLAYERS, 3);
|
||||
$this->maniaControl->settingManager->initSetting($this, self::SETTING_ON_SHOOT_PRESTORE, 30);
|
||||
$this->maniaControl->settingManager->initSetting($this, self::SETTING_COLLECT_STATS_MINPLAYERS, 2); //TODO just temp on 2
|
||||
$this->maniaControl->settingManager->initSetting($this, self::SETTING_ON_SHOOT_PRESTORE, 20);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -76,6 +89,14 @@ class StatisticCollector implements CallbackListener {
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_ON_DEATH);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_ON_PLAYER_REQUEST_RESPAWN);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_ON_KILL);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_LASER_HIT);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_LASER_SHOT);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_NUCLEUS_HIT);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_NUCLEUS_SHOT);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_ROCKET_HIT);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_ROCKET_SHOT);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_ARROW_HIT);
|
||||
$this->maniaControl->statisticManager->defineStatMetaData(self::STAT_ARROW_SHOT);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,22 +104,84 @@ class StatisticCollector implements CallbackListener {
|
||||
*
|
||||
* @param $login
|
||||
*/
|
||||
private function handleOnShoot($login) {
|
||||
private function handleOnShoot($login, $weaponNumber) {
|
||||
if(!isset($this->onShootArray[$login])) {
|
||||
$this->onShootArray[$login] = 1;
|
||||
$this->onShootArray[$login] = array(self::WEAPON_ROCKET => 0, self::WEAPON_ARROW => 0, self::WEAPON_NUCLEUS => 0, self::WEAPON_LASER => 0);
|
||||
$this->onShootArray[$login][$weaponNumber]++;
|
||||
} else {
|
||||
$this->onShootArray[$login]++;
|
||||
$this->onShootArray[$login][$weaponNumber]++;
|
||||
}
|
||||
|
||||
//Write Shoot Data into database
|
||||
if($this->onShootArray[$login] > $this->maniaControl->settingManager->getSetting($this, self::SETTING_ON_SHOOT_PRESTORE)) {
|
||||
if(array_sum($this->onShootArray[$login]) > $this->maniaControl->settingManager->getSetting($this, self::SETTING_ON_SHOOT_PRESTORE)) {
|
||||
$player = $this->maniaControl->playerManager->getPlayer($login);
|
||||
$this->maniaControl->statisticManager->insertStat(self::STAT_ON_SHOOT, $player, $this->maniaControl->server->index, $this->onShootArray[$login]);
|
||||
$this->onShootArray[$login] = 0;
|
||||
|
||||
$rocketShots = $this->onShootArray[$login][self::WEAPON_ROCKET];
|
||||
$laserShots = $this->onShootArray[$login][self::WEAPON_LASER];
|
||||
$arrowShots = $this->onShootArray[$login][self::WEAPON_ARROW];
|
||||
$nucleusShots = $this->onShootArray[$login][self::WEAPON_NUCLEUS];
|
||||
|
||||
if($rocketShots > 0) {
|
||||
$this->maniaControl->statisticManager->insertStat(self::STAT_ROCKET_SHOT, $player, $this->maniaControl->server->index, $rocketShots);
|
||||
$this->onShootArray[$login][self::WEAPON_ROCKET] = 0;
|
||||
}
|
||||
if($laserShots > 0) {
|
||||
$this->maniaControl->statisticManager->insertStat(self::STAT_LASER_SHOT, $player, $this->maniaControl->server->index, $laserShots);
|
||||
$this->onShootArray[$login][self::WEAPON_LASER] = 0;
|
||||
}
|
||||
if($arrowShots > 0) {
|
||||
$this->maniaControl->statisticManager->insertStat(self::STAT_ARROW_SHOT, $player, $this->maniaControl->server->index, $arrowShots);
|
||||
$this->onShootArray[$login][self::WEAPON_ARROW] = 0;
|
||||
}
|
||||
if($nucleusShots > 0) {
|
||||
$this->maniaControl->statisticManager->insertStat(self::STAT_NUCLEUS_SHOT, $player, $this->maniaControl->server->index, $nucleusShots);
|
||||
$this->onShootArray[$login][self::WEAPON_NUCLEUS] = 0;
|
||||
}
|
||||
|
||||
$this->maniaControl->statisticManager->insertStat(self::STAT_ON_SHOOT, $player, $this->maniaControl->server->index, $rocketShots + $laserShots + $arrowShots + $nucleusShots);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the Weapon stat
|
||||
*
|
||||
* @param $weaponNumber
|
||||
* @return string
|
||||
*/
|
||||
private function getWeaponStat($weaponNumber, $shot = true) {
|
||||
if($shot) {
|
||||
switch($weaponNumber) {
|
||||
case self::WEAPON_ROCKET:
|
||||
return self::STAT_ROCKET_SHOT;
|
||||
case self::WEAPON_LASER:
|
||||
return self::STAT_LASER_SHOT;
|
||||
case self::WEAPON_ARROW:
|
||||
return self::STAT_ARROW_SHOT;
|
||||
case self::WEAPON_NUCLEUS:
|
||||
return self::STAT_NUCLEUS_SHOT;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
switch($weaponNumber) {
|
||||
case self::WEAPON_ROCKET:
|
||||
return self::STAT_ROCKET_HIT;
|
||||
case self::WEAPON_LASER:
|
||||
return self::STAT_LASER_HIT;
|
||||
case self::WEAPON_ARROW:
|
||||
return self::STAT_ARROW_HIT;
|
||||
case self::WEAPON_NUCLEUS:
|
||||
return self::STAT_NUCLEUS_HIT;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Insert OnShoot Statistic when a player leaves
|
||||
*
|
||||
@ -141,11 +224,13 @@ class StatisticCollector implements CallbackListener {
|
||||
|
||||
switch($callbackName) {
|
||||
case 'LibXmlRpc_OnShoot':
|
||||
$this->handleOnShoot($callback[1][1][0]);
|
||||
$this->handleOnShoot($callback[1][1][0], $callback[1][1][1]);
|
||||
break;
|
||||
case 'LibXmlRpc_OnHit':
|
||||
$shooter = $this->maniaControl->playerManager->getPlayer($callback[1][1][0]);
|
||||
$victim = $this->maniaControl->playerManager->getPlayer($callback[1][1][1]);
|
||||
$weapon = $this->maniaControl->playerManager->getPlayer($callback[1][1][3]);
|
||||
$this->maniaControl->statisticManager->incrementStat($this->getWeaponStat($weapon, false), $shooter);
|
||||
$this->maniaControl->statisticManager->incrementStat(self::STAT_ON_HIT, $shooter);
|
||||
$this->maniaControl->statisticManager->incrementStat(self::STAT_ON_GOT_HIT, $victim);
|
||||
break;
|
||||
@ -178,7 +263,7 @@ class StatisticCollector implements CallbackListener {
|
||||
break;
|
||||
case 'OnShoot':
|
||||
$paramsObject = json_decode($callback[1][1]);
|
||||
$this->handleOnShoot($paramsObject->Event->Shooter->Login);
|
||||
$this->handleOnShoot($paramsObject->Event->Shooter->Login, $paramsObject->Event->WeaponNum);
|
||||
break;
|
||||
case 'OnNearMiss':
|
||||
$paramsObject = json_decode($callback[1][1]);
|
||||
@ -194,6 +279,8 @@ class StatisticCollector implements CallbackListener {
|
||||
$paramsObject = json_decode($callback[1][1]);
|
||||
$shooter = $this->maniaControl->playerManager->getPlayer($paramsObject->Event->Shooter->Login);
|
||||
$victim = $this->maniaControl->playerManager->getPlayer($paramsObject->Event->Victim->Login);
|
||||
$weapon = $this->maniaControl->playerManager->getPlayer($paramsObject->Event->WeaponNum);
|
||||
$this->maniaControl->statisticManager->incrementStat($this->getWeaponStat($weapon, false), $shooter);
|
||||
$this->maniaControl->statisticManager->incrementStat(self::STAT_ON_HIT, $shooter);
|
||||
$this->maniaControl->statisticManager->incrementStat(self::STAT_ON_GOT_HIT, $victim);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user