Skip to content

Commit

Permalink
Correction RC
Browse files Browse the repository at this point in the history
  • Loading branch information
Itori committed Jan 24, 2017
1 parent 618b5a0 commit 1f7f71e
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 73 deletions.
138 changes: 68 additions & 70 deletions _xtense.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Attaques_Callback extends Callback
* @param $rapport
* @return int
*/
public function attack_rc ($rapport)
public function attack_rc($rapport)
{
global $io;
if (attack_rc($rapport)) return Io::SUCCESS; else
Expand All @@ -35,7 +35,7 @@ public function attack_rc ($rapport)
* @param $rapport
* @return int
*/
public function attack_rr ($rapport)
public function attack_rr($rapport)
{
global $io;
if (attack_rr($rapport)) return Io::SUCCESS; else
Expand All @@ -45,7 +45,7 @@ public function attack_rr ($rapport)
/**
* @return array
*/
public function getCallbacks ()
public function getCallbacks()
{
return array(array('function' => 'attack_rc', 'type' => 'rc'), array('function' => 'attack_rr', 'type' => 'rc_cdr'));
}
Expand All @@ -61,97 +61,95 @@ public function getCallbacks ()
* @param $rapport
* @return bool
*/
function attack_rc ($rapport)
function attack_rc($rapport)
{
global $db, $table_prefix, $attack_config, $user_data;
//$rapport = remove_htm($rapport["content"]);
//definition de la table attaques
define("TABLE_ATTAQUES_ATTAQUES", $table_prefix . "attaques_attaques");
read_config();

if (!$rapport['date']) {
if (!isset($rapport['json']))
return FALSE;
} else {

if ($rapport['win'] != 'A') //Si l'attaquant ne gagne pas alors il ne prend pas de ressources !
{
$winmetal = 0;
$wincristal = 0;
$windeut = 0;
} else {
$winmetal = isset($rapport['result']['win_metal']) ? $rapport['result']['win_metal'] : 0;
$wincristal = isset($rapport['result']['win_cristal']) ? $rapport['result']['win_cristal'] : 0;
$windeut = isset($rapport['result']['win_deut']) ? $rapport['result']['win_deut'] : 0;
}
//On regarde dans les coordonnées de l'espace personnel du joueur qui insère les données via le plugin si il fait partie des attaquants et/ou des défenseurs
$query = "SELECT coordinates FROM " . TABLE_USER_BUILDING . " WHERE user_id='" . $user_data['user_id'] . "'";
$result = $db->sql_query($query);
$coordinates = array();
while ($coordinate = $db->sql_fetch_row($result))
$coordinates[] = $coordinate[0];

$pertes = $rapport['result']['a_lost'];
$timestamp = $rapport['date'];
$rc = json_decode($rapport['json']);

//Récupération des coordonnées des attaquants
$coords_attaquants = array();
$coords_defenseurs = array();
for($i = 0; $i < count($rapport['n']); $i++)
{
if($rapport['n'][$i]['type'] == 'A')
$coords_attaquants[] = $rapport['n'][$i]['coords'];
else if($rapport['n'][$i]['type'] == 'D')
$coords_defenseurs[] = $rapport['n'][$i]['coords'];
//Coordonnées où a eu lieu l'attaque
$coord_attaque = "{$rc->coordinates->galaxy}:{$rc->coordinates->system}:{$rc->coordinates->position}";

}
if ($rc->result != 'attacker') //Si l'attaquant ne gagne pas alors il ne prend pas de ressources !
{
$winmetal = 0;
$wincristal = 0;
$windeut = 0;
} else {
$winmetal = $rc->loot->metal;
$wincristal = $rc->loot->crystal;
$windeut = $rc->loot->deuterium;
}

//Coordonnées où a eu lieu l'attaque
$coord_attaque = $coords_defenseurs['0'];
$pertes = $rc->statistic->lostUnitsAttacker;
$timestamp = $rc->event_timestamp;

//Récupération des coordonnées des attaquants
$coords_attaquants = array();
$coords_defenseurs = array();
foreach ($rc->attacker as $attacker)
$coords_attaquants[] = $attacker->ownerCoordinates;
foreach ($rc->defender as $defender)
$coords_defenseurs[] = $defender->ownerCoordinates;

$attaquant = 0;
$defenseur = 0;

if (count(array_intersect($coords_attaquants, $coordinates)) > 0)
$attaquant = 1;
if (count(array_intersect($coords_defenseurs, $coordinates)) > 0)
$defenseur = 1;

// le rapport ne concerne pas l'utilisateur, ou que l'on ne tiens pas compte des attaques subies
// On ne va pas plus loin
if ($attaquant != 1 && ($defenseur != 1 || $attack_config['defenseur'] != 1)) {
return false;
} else {
if ($defenseur == 1 && $attack_config['defenseur'] == 1) {
//Récupération des pertes défenseurs
$pertes = $rc->statistic->lostUnitsDefender;
//On soustrait les ressources volées
$winmetal = -$winmetal;
$wincristal = -$wincristal;
$windeut = -$windeut;
}

//On regarde dans les coordonnées de l'espace personnel du joueur qui insère les données via le plugin si il fait partie des attaquants et/ou des défenseurs
$query = "SELECT coordinates FROM " . TABLE_USER_BUILDING . " WHERE user_id='" . $user_data['user_id'] . "'";
//On vérifie que cette attaque n'a pas déja été enregistrée
$query = "SELECT attack_id FROM " . TABLE_ATTAQUES_ATTAQUES . " WHERE attack_user_id='" . $user_data['user_id'] . "' AND attack_date='$timestamp' AND attack_coord='$coord_attaque' ";
$result = $db->sql_query($query);
$attaquant = 0;
$defenseur = 0;
$coordinates = array();
while ($coordinate = $db->sql_fetch_row($result))
$coordinates[] = $coordinate[0];

if (count(array_intersect ($coords_attaquants, $coordinates)) > 0)
$attaquant = 1;
if (count(array_intersect ($coords_defenseurs, $coordinates)) > 0)
$defenseur = 1;

// le rapport ne concerne pas l'utilisateur, ou que l'on ne tiens pas compte des attaques subies
// On ne va pas plus loin
if ($attaquant != 1 && ($defenseur != 1 || $attack_config['defenseur'] != 1)) {
return false;
} else {
if ($defenseur == 1 && $attack_config['defenseur'] == 1) {
//Récupération des pertes défenseurs
$pertes = $rapport['result']['d_lost'];
//On soustrait les ressources volées
$winmetal = -$winmetal;
$wincristal = -$wincristal;
$windeut = -$windeut;
}

//On vérifie que cette attaque n'a pas déja été enregistrée
$query = "SELECT attack_id FROM " . TABLE_ATTAQUES_ATTAQUES . " WHERE attack_user_id='" . $user_data['user_id'] . "' AND attack_date='$timestamp' AND attack_coord='$coord_attaque' ";
$result = $db->sql_query($query);
$nb = $db->sql_numrows($result);

if ($nb == 0) {
//On insere ces données dans la base de données
$query = "INSERT INTO " . TABLE_ATTAQUES_ATTAQUES . " ( `attack_id` , `attack_user_id` , `attack_coord` , `attack_date` , `attack_metal` , `attack_cristal` , `attack_deut` , `attack_pertes` )
$nb = $db->sql_numrows($result);

if ($nb == 0) {
//On insere ces données dans la base de données
$query = "INSERT INTO " . TABLE_ATTAQUES_ATTAQUES . " ( `attack_id` , `attack_user_id` , `attack_coord` , `attack_date` , `attack_metal` , `attack_cristal` , `attack_deut` , `attack_pertes` )
VALUES (
NULL , '" . $user_data['user_id'] . "', '" . $coord_attaque . "', '" . $timestamp . "', '" . $winmetal . "', '" . $wincristal . "', '" . $windeut . "', '" . $pertes . "')";
$db->sql_query($query);
}
$db->sql_query($query);
}
}

return TRUE;
}

/**
* @param $rapport
* @return bool
*/
function attack_rr ($rapport)
function attack_rr($rapport)
{
global $db, $table_prefix, $attack_config, $user_data;

Expand Down Expand Up @@ -182,7 +180,7 @@ function attack_rr ($rapport)
* @param $rapport
* @return mixed|string
*/
function remove_htm ($rapport)
function remove_htm($rapport)
{
$rapport = stripslashes($rapport);
$rapport = html_entity_decode($rapport);
Expand All @@ -191,7 +189,7 @@ function remove_htm ($rapport)
return $rapport;
}

function read_config ()
function read_config()
{
global $attack_config, $db;
//récupération des paramètres de config
Expand Down
5 changes: 2 additions & 3 deletions install.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,12 @@
$query = "CREATE TABLE `" . $table_prefix . "mod_user_config` (
`mod` VARCHAR(50) NOT NULL,
`config` VARCHAR(255) NOT NULL,
`user_id` INT(10) NOT NULL,
`user_id` INT(11) NOT NULL,
`value` VARCHAR(255) NOT NULL,
PRIMARY KEY (`mod`, `config`, `user_id`),
INDEX `fk_user_userid` (`user_id`),
CONSTRAINT `fk_user_userid` FOREIGN KEY (`user_id`) REFERENCES `ogspy_user` (`user_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB";
COLLATE='utf8_general_ci'";
$db->sql_query($query);
}

0 comments on commit 1f7f71e

Please sign in to comment.