public function buy($id, $money){
// JSONAPI
$informations = $this->Informations->find('first');
$api = new JSONAPI($informations['Informations']['jsonapi_ip'], $informations['Informations']['jsonapi_port'], $informations['Informations']['jsonapi_username'], $informations['Informations']['jsonapi_password'], $informations['Informations']['jsonapi_salt']);
// On test si le joueur est en ligne
$playersOnline = $api->call('players.online.names'); // Tableau des joueurs en lignes
$testPlayerOnline = in_array($this->Auth->user('username'), $playersOnline[0]['success']); // On cherche dans ce tableau
// Si on a trouvé le pseudo du joueur dans le tableau des joueurs en ligne
if($testPlayerOnline){
$testPlayerOnline = 'online';
}
// Sinon... il n'est pas connecté IG
else{
$testPlayerOnline = 'offline';
}
// Si l'utlisateur est co au site
if($this->Auth->user()){
// Si l'item existe
if($this->Shop->find('first', ['conditions' => ['Shop.id' => $id]])){
// Si l'utlisateur est co en jeu
if($testPlayerOnline == 'online'){
// Si l'utilisateur paye avec la monnaie du site
if($money == 'site'){
$user = $this->User->find('first', ['conditions' => ['User.username' => $this->Auth->user('username')]]); // On recup les infos de l'utlisateur
$userMoneySite = $user['User']['tokens']; // Le nombre de tokens de l'utilisateur
$item = $this->Shop->find('first', ['conditions' => ['Shop.id' => $id]]); // On recup les infos de l'item
$price = $item['Shop']['price_money_site']; // Cout de l'achat avec la monnaie du site
// Historique d'achat
$this->shopHistory->create;
$this->shopHistory->saveField('username', $this->Auth->user('username'));
$this->shopHistory->saveField('item', $item['Shop']['name']);
$this->shopHistory->saveField('price', $price);
$this->shopHistory->saveField('money', $money);
// Si l'utilisateur a assez
if($userMoneySite >= $price){
// On définit son nv nb de tokens
$newUserMoneySite = $userMoneySite - $price;
$this->User->id = $this->Auth->user('id');
$this->User->saveField('tokens', $newUserMoneySite);
// On execute la commande
$command = str_replace('{{player}}', $this->Auth->user('username'), $item['Shop']['command']);
$api->call('server.run_command', [$command]);
// On redirige avec un message
$this->Session->setFlash('Achat effectué, vous avez depensé '.$price.' '.$informations['Informations']['site_money'].'', 'success');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
// Si l'utilisateur n'a pas assez
else{
$this->Session->setFlash('Vous n\'avez pas assez de '.$informations['Informations']['site_money'].'', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
}
// L'utilisateur paye avec la monnaie du serveur
else{
$user = $this->User->find('first', ['conditions' => ['User.username' => $this->Auth->user('username')]]); // On recup les infos de l'utlisateur
$userMoneyServer = $api->call('players.name.bank.balance', [$this->Auth->user('username')])[0]['success']; // Le nombre d'argent, sur le serveur
$item = $this->Shop->find('first', ['conditions' => ['Shop.id' => $id]]); // On recup les infos de l'item
$price = $item['Shop']['price_money_server']; // Cout de l'achat avec la monnaie du site
// Historique d'achat
$this->shopHistory->create;
$this->shopHistory->saveField('username', $this->Auth->user('username'));
$this->shopHistory->saveField('item', $item['Shop']['name']);
$this->shopHistory->saveField('price', $price);
$this->shopHistory->saveField('money', $money);
// Si l'utilisateur a assez
if($userMoneyServer >= $price){
// On définit son nv nb de tokens
$newUserMoneyServer = $userMoneyServer - $price;
$api->call('players.name.bank.withdraw', [$this->Auth->user('username'), $price]);
// On execute la commande
$command = str_replace('{{player}}', $this->Auth->user('username'), $item['Shop']['command']);
$api->call('server.run_command', [$command]);
// On redirige avec un message
$this->Session->setFlash('Achat effectué, vous avez depensé '.$price.' '.$informations['Informations']['money_server'].'', 'success');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
// Si l'utilisateur n'a pas assez
else{
$this->Session->setFlash('Vous n\'avez pas assez de '.$informations['Informations']['site_money'].'', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
}
// Si l'utlisateur n'est pas co en jeu
}
else{
$this->Session->setFlash('Vous devez être connecté en jeu avant de faire des achats', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
}
// Si l'item n'existe pas
else{
$this->Session->setFlash('Cet article n\'existe pas !', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
// Si l'utlisateur n'est pas co au site
}
else{
$this->Session->setFlash('Vous devez être connecté pour accéder à cette page', 'error');
return $this->redirect(['controller' => 'users', 'action' => 'login']);
}
}
public function buy($id, $money){
// JSONAPI
$informations = $this->Informations->find('first');
$api = new JSONAPI($informations['Informations']['jsonapi_ip'], $informations['Informations']['jsonapi_port'], $informations['Informations']['jsonapi_username'], $informations['Informations']['jsonapi_password'], $informations['Informations']['jsonapi_salt']);
// On test si le joueur est en ligne
$playersOnline = $api->call('players.online.names'); // Tableau des joueurs en lignes
$testPlayerOnline = in_array($this->Auth->user('username'), $playersOnline[0]['success']); // On cherche dans ce tableau
// Si on a trouvé le pseudo du joueur dans le tableau des joueurs en ligne
if($testPlayerOnline){
$testPlayerOnline = 'online';
}
// Sinon... il n'est pas connecté IG
else{
$testPlayerOnline = 'offline';
}
// Si l'utlisateur est co au site
if($this->Auth->user()){
// Si l'item existe
if($this->Shop->find('first', ['conditions' => ['Shop.id' => $id]])){
// Si l'utlisateur est co en jeu
if($testPlayerOnline == 'online'){
// Si l'utilisateur paye avec la monnaie du site
if($money == 'site'){
$user = $this->User->find('first', ['conditions' => ['User.username' => $this->Auth->user('username')]]); // On recup les infos de l'utlisateur
$userMoneySite = $user['User']['tokens']; // Le nombre de tokens de l'utilisateur
$item = $this->Shop->find('first', ['conditions' => ['Shop.id' => $id]]); // On recup les infos de l'item
$price = $item['Shop']['price_money_site']; // Cout de l'achat avec la monnaie du site
// Historique d'achat
$this->shopHistory->create;
$this->shopHistory->saveField('username', $this->Auth->user('username'));
$this->shopHistory->saveField('item', $item['Shop']['name']);
$this->shopHistory->saveField('price', $price);
$this->shopHistory->saveField('money', $money);
// Si l'utilisateur a assez
if($userMoneySite >= $price){
// On définit son nv nb de tokens
$newUserMoneySite = $userMoneySite - $price;
$this->User->id = $this->Auth->user('id');
$this->User->saveField('tokens', $newUserMoneySite);
// On execute la commande
$command = str_replace('{{player}}', $this->Auth->user('username'), $item['Shop']['command']);
$api->call('server.run_command', [$command]);
// On redirige avec un message
$this->Session->setFlash('Achat effectué, vous avez depensé '.$price.' '.$informations['Informations']['site_money'].'', 'success');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
// Si l'utilisateur n'a pas assez
else{
$this->Session->setFlash('Vous n\'avez pas assez de '.$informations['Informations']['site_money'].'', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
}
// L'utilisateur paye avec la monnaie du serveur
else{
$user = $this->User->find('first', ['conditions' => ['User.username' => $this->Auth->user('username')]]); // On recup les infos de l'utlisateur
$userMoneyServer = $api->call('players.name.bank.balance', [$this->Auth->user('username')])[0]['success']; // Le nombre d'argent, sur le serveur
$item = $this->Shop->find('first', ['conditions' => ['Shop.id' => $id]]); // On recup les infos de l'item
$price = $item['Shop']['price_money_server']; // Cout de l'achat avec la monnaie du site
// Historique d'achat
$this->shopHistory->create;
$this->shopHistory->saveField('username', $this->Auth->user('username'));
$this->shopHistory->saveField('item', $item['Shop']['name']);
$this->shopHistory->saveField('price', $price);
$this->shopHistory->saveField('money', $money);
// Si l'utilisateur a assez
if($userMoneyServer >= $price){
// On définit son nv nb de tokens
$newUserMoneyServer = $userMoneyServer - $price;
$api->call('players.name.bank.withdraw', [$this->Auth->user('username'), $price]);
// On execute la commande
$command = str_replace('{{player}}', $this->Auth->user('username'), $item['Shop']['command']);
$api->call('server.run_command', [$command]);
// On redirige avec un message
$this->Session->setFlash('Achat effectué, vous avez depensé '.$price.' '.$informations['Informations']['money_server'].'', 'success');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
// Si l'utilisateur n'a pas assez
else{
$this->Session->setFlash('Vous n\'avez pas assez de '.$informations['Informations']['site_money'].'', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
}
// Si l'utlisateur n'est pas co en jeu
}
else{
$this->Session->setFlash('Vous devez être connecté en jeu avant de faire des achats', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
}
// Si l'item n'existe pas
else{
$this->Session->setFlash('Cet article n\'existe pas !', 'error');
return $this->redirect(['controller' => 'shops', 'action' => 'index']);
}
// Si l'utlisateur n'est pas co au site
}
else{
$this->Session->setFlash('Vous devez être connecté pour accéder à cette page', 'error');
return $this->redirect(['controller' => 'users', 'action' => 'login']);
}
}