public static function createAccount($ninja_name, $email, $class_identity)
 {
     $found = Player::findByName($ninja_name);
     if ($found) {
         throw new Exception("Test user found [{$found}] with name [{$ninja_name}] already exists");
     }
     $ip = isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1';
     // Create test user, unconfirmed, whatever the default is for activity.
     $confirm = rand(1000, 9999);
     //generate confirmation code
     $class_id = query_item('SELECT class_id FROM class WHERE identity = :class_identity', [':class_identity' => $class_identity]);
     $ninja = new Player();
     $ninja->uname = $ninja_name;
     $ninja->verification_number = $confirm;
     $ninja->active = 1;
     $ninja->_class_id = $class_id;
     $ninja->save();
     Account::create($ninja->id(), $email, TestAccountCreateAndDestroy::$test_password, $confirm, 0, 1, $ip);
     if ($confirm) {
         $ninja->active = 1;
         $ninja->save();
         $account = Account::findByChar($ninja);
         $account->confirmed = 1;
         $account->setOperational(true);
         $account->save();
     }
     return $ninja->id();
 }
Example #2
0
 /**
  * Perform the effects of a clonekill.
  * @return string outcome or false
  */
 public static function kill(Player $self, Player $clone1, Player $clone2)
 {
     if (self::canKill($clone1, $clone2)) {
         $today = date("F j, Y, g:i a");
         $clone1_health = $clone1->health;
         $clone2_health = $clone2->health;
         $clone1_turns = $clone1->turns;
         $clone2_turns = $clone2->turns;
         $clone1->changeTurns(-1 * $clone1->turns);
         $clone1->death();
         $clone2->changeTurns(-1 * $clone2->turns);
         $clone2->death();
         $clone1->save();
         $clone2->save();
         $result_message = "You obliterate the clone {$clone1->name()} for {$clone1_health} health, {$clone1_turns} turns\n                     and the clone {$clone2->name()} for {$clone2_health} health, {$clone2_turns} turns.";
         Event::create($self->id(), $clone1->id(), "You and {$clone2->name()} were Clone Killed at {$today}.");
         Event::create($self->id(), $clone2->id(), "You and {$clone1->name()} were Clone Killed at {$today}.");
         return $result_message;
     } else {
         return false;
     }
 }
 /**
  * Drop a certain enemy from the list.
  *
  * @param Player $p_player
  * @param Player $p_enemy
  * @return void
  */
 private function removeEnemyFromPlayer(Player $p_player, Player $p_enemy)
 {
     DatabaseConnection::getInstance();
     $query = 'DELETE FROM enemies WHERE _player_id = :pid AND _enemy_id = :eid';
     $statement = DatabaseConnection::$pdo->prepare($query);
     $statement->bindValue(':pid', $p_player->id());
     $statement->bindValue(':eid', $p_enemy->id());
     $statement->execute();
 }
Example #4
0
 /**
  * Tests whether the specified player is a leader of the specified clan
  *
  * @param Player $p_objPlayer The player in question
  * @param Clan $p_objClan The clan to check against
  * @return boolean
  */
 private function playerIsLeader(Player $p_objPlayer, Clan $p_objClan)
 {
     $leaders = $p_objClan->getAllClanLeaders();
     foreach ($leaders as $leader) {
         if ($leader['player_id'] == $p_objPlayer->id()) {
             return true;
         }
     }
     return false;
 }
Example #5
0
 /**
  * Just update the last attack attempt of a player in the database.
  */
 private function updateLastAttack(Player $attacker)
 {
     // updates the timestamp of the last_attacked column to slow excessive attacks.
     $update_last_attacked = "UPDATE players SET last_started_attack = now() WHERE player_id = :pid";
     $updated = update_query($update_last_attacked, [':pid' => $attacker->id()]);
     return (bool) $updated;
 }
Example #6
0
 /**
  * mark all messages of a type for a ninja as read
  */
 public static function markAsRead(Player $char, $type)
 {
     return self::where(['send_to' => $char->id(), 'type' => $type])->update(['unread' => 0]);
 }
Example #7
0
 /**
  * Actual login!  Performs the login of a user using pre-vetted info!
  *
  * Creates the cookie and session stuff for the login process.
  *
  * @param Account $account
  * @param Player $player
  * @return void
  */
 private function createGameSession(Account $account, Player $player)
 {
     $_COOKIE['username'] = $player->name();
     $session = SessionFactory::getSession();
     $session->set('username', $player->name());
     $session->set('player_id', $player->id());
     $session->set('account_id', $account->id());
     $session->set('authenticated', true);
     $request = RequestWrapper::$request;
     $user_ip = $request->getClientIp();
     query('UPDATE players SET active = 1, days = 0 WHERE player_id = :player', [':player' => [$player->id(), PDO::PARAM_INT]]);
     query('UPDATE accounts SET last_ip = :ip, last_login = now() WHERE account_id = :account', [':ip' => $user_ip, ':account' => [$account->id(), PDO::PARAM_INT]]);
 }
Example #8
0
 /**
  * Get an account for a character
  *
  * @param Character $char
  * @return Account|null
  */
 public static function findByChar(Player $char)
 {
     $query = 'SELECT account_id FROM accounts
         JOIN account_players ON _account_id = account_id
         JOIN players ON _player_id = player_id
         WHERE players.player_id = :pid';
     return self::findById(query_item($query, [':pid' => $char->id()]));
 }
Example #9
0
 /**
  * Find the clan belonging to a player, if any
  *
  * @param Player $player
  * @return Clan|null
  */
 public static function findByMember(Player $player)
 {
     $clan_info = query_row('select clan_id, clan_name, clan_created_date, clan_founder, clan_avatar_url, description from clan JOIN clan_player ON clan_id = _clan_id where _player_id = :pid', [':pid' => $player->id()]);
     if (empty($clan_info)) {
         return null;
     } else {
         return new Clan($clan_info['clan_id'], $clan_info['clan_name'], $clan_info);
     }
 }
 /**
  * Get the count of how many of an item a player has.
  *
  * @return int
  */
 private function itemCount(Player $player, Item $item)
 {
     $statement = query("SELECT sum(amount) FROM inventory WHERE item_type = :item AND owner = :owner", [':owner' => $player->id(), ':item' => $item->item_id]);
     return $statement->fetchColumn();
 }