Ir para conteúdo

StyflerDrunou

Campones
  • Total de itens

    65
  • Registro em

  • Última visita

6 Seguidores

Sobre StyflerDrunou

Informações

  • Char no Tibia
    Fleps Drunou
  • Forma que conheci o xTibia
    Sites de Busca
  • Sou
    Hoster

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

StyflerDrunou's Achievements

  1. olá pessoas, então eu tava observando a um tempo mais eu tentei arrumar e nao soube entao decidi pedir ajudar. Então o problema é o seguinte, quando eu vou procurar alguem da equipe que sempre tem simbolos tipo {([ no nome não da aparecesse esse erro: The Following Errors Have Occurred: This name contains invalid letters. Please use only A-Z, a-z and space. eu gostaria de corrigir este erro, porque é sempre bom os player visualizarem o novos membros. grato pela ajuda.
  2. Eu já coloquei o acesso do meu personagem 9 (é o acesso do adm) e da account tambem, mas nao consigo acessar o painel do admim, no meu config.php ta assim: $config['site']['access_news'] = 6; // access level needed to edit news $config['site']['access_admin_panel'] = 9; // access level needed to open admin panel e eu nao consigo help-me.
  3. kk ok, obrigado, e por favor nao para abusar mais tem como ser um pouco rapido? OT ta parado a 3 meses por conta disso..
  4. Eu testei, deu para criar account mais tem um problema, no meu character.php tem uma parte assim: /*Reset Status*/ if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD><b>Resets:</b></TD><TD>'.$player->getReset().'</TD>'; que calcula a quantidade de resets na minha database na coluna reset ai quando vou ver algum char mostra esse erro: Fatal error: Call to undefined method OTS_Player::getReset() in C:\xampp\htdocs\characters.php on line 71 eu sei que é só tirar o /*Reset Status*/ if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD><b>Resets:</b></TD><TD>'.$player->getReset().'</TD>'; mais ai nao vai calcular a parte que eu quero tipo, level: ai mostra a quantidade a mesma coisa é Reset quero que mostre a quantidade ai o cara fez isso ai para mim e foi no OTS_Players e mexeu la ai fica com aquele erro la se colocar devolta se nao da esse e da para criar conta.. por favor ajudem
  5. vou passar mais a alteração que o cara fez é oque fez funcionar isso ó: Resets: 0 obrigado. <?php /**#@+ * @version 0.0.1 */ /** * @package POT * @version 0.1.5 * @author Wrzasq <wrzasq@gmail.com> * @copyright 2007 - 2008 (C) by Wrzasq * @license http://www.gnu.org/licenses/lgpl-3.0.txt GNU Lesser General Public License, Version 3 */ /** * OTServ character abstraction. * * @package POT * @version 0.1.5 * @property string $name Character name. * @property OTS_Account $account Account to which character belongs. * @property OTS_Group $group Group of which character is member. * @property int $sex Gender. * @property int $vocation Vocation. * @property int $experience Experience points. * @property int $level Experience level. * @property int $magLevel Magic level. * @property int $health Hit points. * @property int $healthMax Maximum hit points. * @property int $mana Mana. * @property int $manaMax Maximum mana. * @property int $manaSpent Spent mana. * @property int $soul Soul points. * @property int $direction Looking direction. * @property int $lookBody Body color. * @property int $lookFeet Feet color. * @property int $lookHead Hairs color. * @property int $lookLegs Legs color. * @property int $lookType Outfit type. * @property int $lookAddons Addons. * @property int $posX Spawn X coord. * @property int $posY Spawn Y coord. * @property int $posZ Spawn Z coord. * @property int $cap Capacity. * @property int $lastLogin Last login timestamp. * @property int $lastIP Last login IP number. * @property string $conditions Binary conditions. * @property int $redSkullTime Timestamp for which red skull will last. * @property string $guildNick * @property OTS_GuildRank $rank * @property int $townId * @property int $lossExperience * @property int $lossMana * @property int $lossSkills * @property int $lossItems * @property int $balance Bank balance. * @property bool $save Player save flag. * @property bool $redSkull Player red skull flag. * @property bool $banned Player banned state. * @property-read int $id Player ID. * @property-read bool $loaded Loaded state. * @property-read string $townName Name of town in which player residents. * @property-read OTS_House $house House which player rents. * @property-read OTS_Players_List $vipsList List of VIPs of player. * @property-read string $vocationName String vocation representation. * @property-read array $spellsList List of known spells. * @tutorial POT/Players.pkg */ class OTS_Player extends OTS_Row_DAO { /** * Player data. * * @version 0.1.2 * @var array */ private $data = array('sex' => POT::SEX_FEMALE, 'vocation' => 0, 'experience' => 0, 'level' => 1, 'maglevel' => 0, 'health' => 100, 'healthmax' => 100, 'mana' => 100, 'manamax' => 100, 'manaspent' => 0, 'soul' => 0, 'direction' => POT::DIRECTION_NORTH, 'lookbody' => 10, 'lookfeet' => 10, 'lookhead' => 10, 'looklegs' => 10, 'looktype' => 136, 'lookaddons' => 0, 'posx' => 0, 'posy' => 0, 'posz' => 0, 'cap' => 0, 'lastlogin' => 0, 'lastip' => 0, 'save' => true, 'skull' => 0, 'guildnick' => '', 'loss_experience' => 10, 'loss_mana' => 10, 'loss_skills' => 10, 'loss_items' => 10, 'balance' => 0, 'deleted' => 0, 'promotion' => 0, 'online' => 0, 'marriage' => 0, 'comment' => '', 'created' => 0, 'hide_char' => 0, 'old_name' => '', 'world_id' => 0); /** * Player skills. * * @version 0.0.2 * @since 0.0.2 * @var array */ private $skills = array(); /** * Magic PHP5 method. * * Allows object serialisation. * * @return array List of properties that should be saved. * @version 0.0.4 * @since 0.0.4 */ public function __sleep() { return array('data', 'skills'); } /** * Loads player with given id. * * @version 0.1.2 * @param int $id Player's ID. * @throws PDOException On PDO operation error. */ public function load($id) { // SELECT query on database $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('account_id') . ', ' . $this->db->fieldName('group_id') . ', ' . $this->db->fieldName('sex') . ', ' . $this->db->fieldName('vocation') . ', ' . $this->db->fieldName('experience') . ', ' . $this->db->fieldName('level') . ', ' . $this->db->fieldName('maglevel') . ', ' . $this->db->fieldName('health') . ', ' . $this->db->fieldName('healthmax') . ', ' . $this->db->fieldName('mana') . ', ' . $this->db->fieldName('manamax') . ', ' . $this->db->fieldName('manaspent') . ', ' . $this->db->fieldName('soul') . ', ' . $this->db->fieldName('direction') . ', ' . $this->db->fieldName('lookbody') . ', ' . $this->db->fieldName('lookfeet') . ', ' . $this->db->fieldName('lookhead') . ', ' . $this->db->fieldName('looklegs') . ', ' . $this->db->fieldName('looktype') . ', ' . $this->db->fieldName('lookaddons') . ', ' . $this->db->fieldName('posx') . ', ' . $this->db->fieldName('posy') . ', ' . $this->db->fieldName('posz') . ', ' . $this->db->fieldName('cap') . ', ' . $this->db->fieldName('lastlogin') . ', ' . $this->db->fieldName('lastip') . ', ' . $this->db->fieldName('save') . ', ' . $this->db->fieldName('conditions') . ', ' . $this->db->fieldName('skull') . ', ' . $this->db->fieldName('guildnick') . ', ' . $this->db->fieldName('rank_id') . ', ' . $this->db->fieldName('town_id') . ', ' . $this->db->fieldName('loss_experience') . ', ' . $this->db->fieldName('loss_mana') . ', ' . $this->db->fieldName('loss_skills') . ', ' . $this->db->fieldName('loss_items') . ', ' . $this->db->fieldName('balance') . ', ' . $this->db->fieldName('online') . ', ' . $this->db->fieldName('deleted') . ', ' . $this->db->fieldName('promotion') . ', ' . $this->db->fieldName('marriage') . ', ' . $this->db->fieldName('comment') . ', ' . $this->db->fieldName('created') . ', ' . $this->db->fieldName('reset') . ', ' . $this->db->fieldName('hide_char') . ', ' . $this->db->fieldName('old_name') . ', ' . $this->db->fieldName('world_id') . ' FROM ' . $this->db->tableName('players') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); // loads skills if( $this->isLoaded() ) { foreach( $this->db->query('SELECT ' . $this->db->fieldName('skillid') . ', ' . $this->db->fieldName('value') . ', ' . $this->db->fieldName('count') . ' FROM ' . $this->db->tableName('player_skills') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'])->fetchAll() as $skill) { $this->skills[ $skill['skillid'] ] = array('value' => $skill['value'], 'tries' => $skill['count']); } } } /** * Loads player by it's name. * * @version 0.0.5 * @since 0.0.2 * @param string $name Player's name. * @throws PDOException On PDO operation error. */ public function find($name) { // finds player's ID $id = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('players') . ' WHERE ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($name) )->fetch(); // if anything was found if( isset($id['id']) ) { $this->load($id['id']); } else { // finds player's ID $id = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('players') . ' WHERE ' . $this->db->fieldName('old_name') . ' = ' . $this->db->quote($name) . ' AND ' . $this->db->fieldName('nick_verify') .' = 1')->fetch(); // if anything was found if( isset($id['id']) ) { $this->load($id['id']); } } } /** * Checks if object is loaded. * * @return bool Load state. */ public function isLoaded() { return isset($this->data['id']); } /** * Saves player in database. * * <p> * If player is not loaded to represent any existing group it will create new row for it. * </p> * * @version 0.1.2 * @throws PDOException On PDO operation error. */ public function save() { // updates existing player if( isset($this->data['id']) ) { // UPDATE query on database $this->db->query('UPDATE ' . $this->db->tableName('players') . ' SET ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($this->data['name']) . ', ' . $this->db->fieldName('account_id') . ' = ' . $this->data['account_id'] . ', ' . $this->db->fieldName('group_id') . ' = ' . $this->data['group_id'] . ', ' . $this->db->fieldName('sex') . ' = ' . $this->data['sex'] . ', ' . $this->db->fieldName('vocation') . ' = ' . $this->data['vocation'] . ', ' . $this->db->fieldName('experience') . ' = ' . $this->data['experience'] . ', ' . $this->db->fieldName('level') . ' = ' . $this->data['level'] . ', ' . $this->db->fieldName('maglevel') . ' = ' . $this->data['maglevel'] . ', ' . $this->db->fieldName('health') . ' = ' . $this->data['health'] . ', ' . $this->db->fieldName('healthmax') . ' = ' . $this->data['healthmax'] . ', ' . $this->db->fieldName('mana') . ' = ' . $this->data['mana'] . ', ' . $this->db->fieldName('manamax') . ' = ' . $this->data['manamax'] . ', ' . $this->db->fieldName('manaspent') . ' = ' . $this->data['manaspent'] . ', ' . $this->db->fieldName('soul') . ' = ' . $this->data['soul'] . ', ' . $this->db->fieldName('direction') . ' = ' . $this->data['direction'] . ', ' . $this->db->fieldName('lookbody') . ' = ' . $this->data['lookbody'] . ', ' . $this->db->fieldName('lookfeet') . ' = ' . $this->data['lookfeet'] . ', ' . $this->db->fieldName('lookhead') . ' = ' . $this->data['lookhead'] . ', ' . $this->db->fieldName('looklegs') . ' = ' . $this->data['looklegs'] . ', ' . $this->db->fieldName('looktype') . ' = ' . $this->data['looktype'] . ', ' . $this->db->fieldName('lookaddons') . ' = ' . $this->data['lookaddons'] . ', ' . $this->db->fieldName('posx') . ' = ' . $this->data['posx'] . ', ' . $this->db->fieldName('posy') . ' = ' . $this->data['posy'] . ', ' . $this->db->fieldName('posz') . ' = ' . $this->data['posz'] . ', ' . $this->db->fieldName('cap') . ' = ' . $this->data['cap'] . ', ' . $this->db->fieldName('lastlogin') . ' = ' . $this->data['lastlogin'] . ', ' . $this->db->fieldName('lastip') . ' = ' . $this->data['lastip'] . ', ' . $this->db->fieldName('save') . ' = ' . (int) $this->data['save'] . ', ' . $this->db->fieldName('conditions') . ' = ' . $this->db->quote($this->data['conditions']) . ', ' . $this->db->fieldName('skull') . ' = ' . $this->data['skull'] . ', ' . $this->db->fieldName('guildnick') . ' = ' . $this->db->quote($this->data['guildnick']) . ', ' . $this->db->fieldName('rank_id') . ' = ' . $this->data['rank_id'] . ', ' . $this->db->fieldName('town_id') . ' = ' . $this->data['town_id'] . ', ' . $this->db->fieldName('loss_experience') . ' = ' . $this->data['loss_experience'] . ', ' . $this->db->fieldName('loss_mana') . ' = ' . $this->data['loss_mana'] . ', ' . $this->db->fieldName('loss_skills') . ' = ' . $this->data['loss_skills'] . ', ' . $this->db->fieldName('loss_items') . ' = ' . $this->data['loss_items'] . ', ' . $this->db->fieldName('balance') . ' = ' . $this->data['balance'] . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); } // creates new player else { // INSERT query on database $this->db->query('INSERT INTO ' . $this->db->tableName('players') . ' (' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('account_id') . ', ' . $this->db->fieldName('group_id') . ', ' . $this->db->fieldName('sex') . ', ' . $this->db->fieldName('vocation') . ', ' . $this->db->fieldName('experience') . ', ' . $this->db->fieldName('level') . ', ' . $this->db->fieldName('maglevel') . ', ' . $this->db->fieldName('health') . ', ' . $this->db->fieldName('healthmax') . ', ' . $this->db->fieldName('mana') . ', ' . $this->db->fieldName('manamax') . ', ' . $this->db->fieldName('manaspent') . ', ' . $this->db->fieldName('soul') . ', ' . $this->db->fieldName('direction') . ', ' . $this->db->fieldName('lookbody') . ', ' . $this->db->fieldName('lookfeet') . ', ' . $this->db->fieldName('lookhead') . ', ' . $this->db->fieldName('looklegs') . ', ' . $this->db->fieldName('looktype') . ', ' . $this->db->fieldName('lookaddons') . ', ' . $this->db->fieldName('posx') . ', ' . $this->db->fieldName('posy') . ', ' . $this->db->fieldName('posz') . ', ' . $this->db->fieldName('cap') . ', ' . $this->db->fieldName('lastlogin') . ', ' . $this->db->fieldName('lastip') . ', ' . $this->db->fieldName('save') . ', ' . $this->db->fieldName('conditions') . ', ' . $this->db->fieldName('skull') . ', ' . $this->db->fieldName('guildnick') . ', ' . $this->db->fieldName('rank_id') . ', ' . $this->db->fieldName('town_id') . ', ' . $this->db->fieldName('loss_experience') . ', ' . $this->db->fieldName('loss_mana') . ', ' . $this->db->fieldName('loss_skills') . ', ' . $this->db->fieldName('loss_items') . ', ' . $this->db->fieldName('balance') . ', ' . $this->db->fieldName('created') . ', ' . $this->db->fieldName('reset') . ', ' . $this->db->fieldName('promotion') . ') VALUES (' . $this->db->quote($this->data['name']) . ', ' . $this->data['account_id'] . ', ' . $this->data['group_id'] . ', ' . $this->data['sex'] . ', ' . $this->data['vocation'] . ', ' . $this->data['experience'] . ', ' . $this->data['level'] . ', ' . $this->data['maglevel'] . ', ' . $this->data['health'] . ', ' . $this->data['healthmax'] . ', ' . $this->data['mana'] . ', ' . $this->data['manamax'] . ', ' . $this->data['manaspent'] . ', ' . $this->data['soul'] . ', ' . $this->data['direction'] . ', ' . $this->data['lookbody'] . ', ' . $this->data['lookfeet'] . ', ' . $this->data['lookhead'] . ', ' . $this->data['looklegs'] . ', ' . $this->data['looktype'] . ', ' . $this->data['lookaddons'] . ', ' . $this->data['posx'] . ', ' . $this->data['posy'] . ', ' . $this->data['posz'] . ', ' . $this->data['cap'] . ', ' . $this->data['lastlogin'] . ', ' . $this->data['lastip'] . ', ' . (int) $this->data['save'] . ', ' . $this->db->quote($this->data['conditions']) . ', ' . $this->data['skull'] . ', ' . $this->db->quote($this->data['guildnick']) . ', ' . $this->data['rank_id'] . ', ' . $this->data['town_id'] . ', ' . $this->data['loss_experience'] . ', ' . $this->data['loss_mana'] . ', ' . $this->data['loss_skills'] . ', ' . $this->data['loss_items'] . ', ' . $this->data['balance'] . ', ' . time() . ', ' . $this->data['promotion'] . ')'); // ID of new group $this->data['id'] = $this->db->lastInsertId(); } // updates skills - doesn't matter if we have just created character - trigger inserts new skills foreach($this->skills as $id => $skill) { $this->db->query('UPDATE ' . $this->db->tableName('player_skills') . ' SET ' . $this->db->fieldName('value') . ' = ' . $skill['value'] . ', ' . $this->db->fieldName('count') . ' = ' . $skill['tries'] . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('skillid') . ' = ' . $id); } } /** * Player ID. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Player ID. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getId() { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } return $this->data['id']; } public function getWorld() { if( !isset($this->data['world_id']) ) { throw new E_OTS_NotLoaded(); } return $this->data['world_id']; } public function getReset() { if( !isset($this->data['reset']) ) { throw new E_OTS_NotLoaded(); } return $this->data['reset']; } public function getHideChar() { if( !isset($this->data['hide_char']) ) { throw new E_OTS_NotLoaded(); } return $this->data['hide_char']; } public function getMarriage() { if( !isset($this->data['marriage']) ) { throw new E_OTS_NotLoaded(); } return $this->data['marriage']; } /** * Player name. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return string Player's name. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getName() { if( !isset($this->data['name']) ) { throw new E_OTS_NotLoaded(); } return $this->data['name']; } public function getOldName() { if( !isset($this->data['old_name']) ) { throw new E_OTS_NotLoaded(); } return $this->data['old_name']; } /** * Sets players's name. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param string $name Name. */ public function setName($name) { $this->data['name'] = (string) $name; } public function setWorld($id) { $this->data['world_id'] = (int) $id; } /** * Returns account of this player. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.1.0 * @return OTS_Account Owning account. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function getAccount() { if( !isset($this->data['account_id']) ) { throw new E_OTS_NotLoaded(); } $account = new OTS_Account(); $account->load($this->data['account_id']); return $account; } /** * Assigns character to account. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param OTS_Account $account Owning account. * @throws E_OTS_NotLoaded If passed <var>$account</var> parameter is not loaded. */ public function setAccount(OTS_Account $account) { $this->data['account_id'] = $account->getId(); } /** * Returns group of this player. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.1.0 * @return OTS_Group Group of which current character is member. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function getGroup() { if( !isset($this->data['group_id']) ) { throw new E_OTS_NotLoaded(); } return $this->data['group_id']; } /** * Assigns character to group. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param OTS_Group $group Group to be a member. * @throws E_OTS_NotLoaded If passed <var>$group</var> parameter is not loaded. */ public function setGroup($group) { $this->data['group_id'] = $group; } /** * Player's Premium Account expiration timestamp. * * @version 0.1.5 * @since 0.0.3 * @return int Player PACC expiration timestamp. * @throws E_OTS_NotLoaded If player is not loaded. * @deprecated 0.1.5 Use OTS_Account->getPremiumEnd(). */ public function getPremiumEnd() { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } return $this->getAccount()->getPremiumEnd(); } /** * Player gender. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Player gender. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getSex() { if( !isset($this->data['sex']) ) { throw new E_OTS_NotLoaded(); } return $this->data['sex']; } public function isDeleted() { if( !isset($this->data['deleted']) ) { throw new E_OTS_NotLoaded(); } return $this->data['deleted'] > 0; } public function isOnline() { if( !isset($this->data['online']) ) { throw new E_OTS_NotLoaded(); } return $this->data['online'] == 1; } public function getCreated() { if( !isset($this->data['created']) ) { throw new E_OTS_NotLoaded(); } return $this->data['created']; } public function getComment() { if( !isset($this->data['comment']) ) { throw new E_OTS_NotLoaded(); } return $this->data['comment']; } /** * Sets player gender. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $sex Player gender. */ public function setSex($sex) { $this->data['sex'] = (int) $sex; } /** * Player proffesion. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Player proffesion. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getVocation() { if( !isset($this->data['vocation']) ) { throw new E_OTS_NotLoaded(); } return $this->data['vocation']; } public function getPromotion() { if( !isset($this->data['promotion']) ) { throw new E_OTS_NotLoaded(); } return $this->data['promotion']; } /** * Sets player proffesion. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $vocation Player proffesion. */ public function setVocation($vocation) { $this->data['vocation'] = (int) $vocation; } public function setPromotion($promotion) { $this->data['promotion'] = (int) $promotion; } /** * Experience points. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Experience points. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getExperience() { if( !isset($this->data['experience']) ) { throw new E_OTS_NotLoaded(); } return $this->data['experience']; } /** * Sets experience points. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $experience Experience points. */ public function setExperience($experience) { $this->data['experience'] = (int) $experience; } /** * Experience level. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Experience level. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLevel() { if( !isset($this->data['level']) ) { throw new E_OTS_NotLoaded(); } return $this->data['level']; } /** * Sets experience level. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $level Experience level. */ public function setLevel($level) { $this->data['level'] = (int) $level; } /** * Magic level. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Magic level. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getMagLevel() { if( !isset($this->data['maglevel']) ) { throw new E_OTS_NotLoaded(); } return $this->data['maglevel']; } /** * Sets magic level. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $maglevel Magic level. */ public function setMagLevel($maglevel) { $this->data['maglevel'] = (int) $maglevel; } /** * Current HP. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Current HP. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getHealth() { if( !isset($this->data['health']) ) { throw new E_OTS_NotLoaded(); } return $this->data['health']; } /** * Sets current HP. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $health Current HP. */ public function setHealth($health) { $this->data['health'] = (int) $health; } /** * Maximum HP. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Maximum HP. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getHealthMax() { if( !isset($this->data['healthmax']) ) { throw new E_OTS_NotLoaded(); } return $this->data['healthmax']; } /** * Sets maximum HP. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $healthmax Maximum HP. */ public function setHealthMax($healthmax) { $this->data['healthmax'] = (int) $healthmax; } /** * Current mana. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Current mana. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getMana() { if( !isset($this->data['mana']) ) { throw new E_OTS_NotLoaded(); } return $this->data['mana']; } /** * Sets current mana. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $mana Current mana. */ public function setMana($mana) { $this->data['mana'] = (int) $mana; } /** * Maximum mana. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Maximum mana. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getManaMax() { if( !isset($this->data['manamax']) ) { throw new E_OTS_NotLoaded(); } return $this->data['manamax']; } /** * Sets maximum mana. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $manamax Maximum mana. */ public function setManaMax($manamax) { $this->data['manamax'] = (int) $manamax; } /** * Mana spent. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Mana spent. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getManaSpent() { if( !isset($this->data['manaspent']) ) { throw new E_OTS_NotLoaded(); } return $this->data['manaspent']; } /** * Sets mana spent. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $manaspent Mana spent. */ public function setManaSpent($manaspent) { $this->data['manaspent'] = (int) $manaspent; } /** * Soul points. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Soul points. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getSoul() { if( !isset($this->data['soul']) ) { throw new E_OTS_NotLoaded(); } return $this->data['soul']; } /** * Sets soul points. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $soul Soul points. */ public function setSoul($soul) { $this->data['soul'] = (int) $soul; } /** * Looking direction. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Looking direction. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getDirection() { if( !isset($this->data['direction']) ) { throw new E_OTS_NotLoaded(); } return $this->data['direction']; } /** * Sets looking direction. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $direction Looking direction. */ public function setDirection($direction) { $this->data['direction'] = (int) $direction; } /** * Body color. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Body color. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLookBody() { if( !isset($this->data['lookbody']) ) { throw new E_OTS_NotLoaded(); } return $this->data['lookbody']; } /** * Sets body color. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $lookbody Body color. */ public function setLookBody($lookbody) { $this->data['lookbody'] = (int) $lookbody; } /** * Boots color. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Boots color. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLookFeet() { if( !isset($this->data['lookfeet']) ) { throw new E_OTS_NotLoaded(); } return $this->data['lookfeet']; } /** * Sets boots color. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $lookfeet Boots color. */ public function setLookFeet($lookfeet) { $this->data['lookfeet'] = (int) $lookfeet; } /** * Hair color. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Hair color. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLookHead() { if( !isset($this->data['lookhead']) ) { throw new E_OTS_NotLoaded(); } return $this->data['lookhead']; } /** * Sets hair color. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $lookhead Hair color. */ public function setLookHead($lookhead) { $this->data['lookhead'] = (int) $lookhead; } /** * Legs color. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Legs color. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLookLegs() { if( !isset($this->data['looklegs']) ) { throw new E_OTS_NotLoaded(); } return $this->data['looklegs']; } /** * Sets legs color. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $looklegs Legs color. */ public function setLookLegs($looklegs) { $this->data['looklegs'] = (int) $looklegs; } /** * Outfit. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Outfit. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLookType() { if( !isset($this->data['looktype']) ) { throw new E_OTS_NotLoaded(); } return $this->data['looktype']; } /** * Sets outfit. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $looktype Outfit. */ public function setLookType($looktype) { $this->data['looktype'] = (int) $looktype; } /** * Addons. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Addons. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLookAddons() { if( !isset($this->data['lookaddons']) ) { throw new E_OTS_NotLoaded(); } return $this->data['lookaddons']; } /** * Sets addons. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $lookaddons Addons. */ public function setLookAddons($lookaddons) { $this->data['lookaddons'] = (int) $lookaddons; } /** * X map coordinate. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int X map coordinate. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getPosX() { if( !isset($this->data['posx']) ) { throw new E_OTS_NotLoaded(); } return $this->data['posx']; } /** * Sets X map coordinate. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $posx X map coordinate. */ public function setPosX($posx) { $this->data['posx'] = (int) $posx; } /** * Y map coordinate. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Y map coordinate. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getPosY() { if( !isset($this->data['posy']) ) { throw new E_OTS_NotLoaded(); } return $this->data['posy']; } /** * Sets Y map coordinate. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $posy Y map coordinate. */ public function setPosY($posy) { $this->data['posy'] = (int) $posy; } /** * Z map coordinate. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Z map coordinate. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getPosZ() { if( !isset($this->data['posz']) ) { throw new E_OTS_NotLoaded(); } return $this->data['posz']; } /** * Sets Z map coordinate. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $posz Z map coordinate. */ public function setPosZ($posz) { $this->data['posz'] = (int) $posz; } /** * Capacity. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Capacity. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getCap() { if( !isset($this->data['cap']) ) { throw new E_OTS_NotLoaded(); } return $this->data['cap']; } /** * Sets capacity. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $cap Capacity. */ public function setCap($cap) { $this->data['cap'] = (int) $cap; } /** * Last login timestamp. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Last login timestamp. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLastLogin() { if( !isset($this->data['lastlogin']) ) { throw new E_OTS_NotLoaded(); } return $this->data['lastlogin']; } /** * Sets last login timestamp. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $lastlogin Last login timestamp. */ public function setLastLogin($lastlogin) { $this->data['lastlogin'] = (int) $lastlogin; } /** * Last login IP. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Last login IP. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLastIP() { if( !isset($this->data['lastip']) ) { throw new E_OTS_NotLoaded(); } return $this->data['lastip']; } /** * Sets last login IP. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $lastip Last login IP. */ public function setLastIP($lastip) { $this->data['lastip'] = (int) $lastip; } /** * Checks if save flag is set. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.7 * @return bool PACC days. * @throws E_OTS_NotLoaded If player is not loaded. */ public function isSaveSet() { if( !isset($this->data['save']) ) { throw new E_OTS_NotLoaded(); } return $this->data['save']; } /** * Unsets save flag. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @version 0.0.7 */ public function unsetSave() { $this->data['save'] = false; } /** * @version 0.0.7 * @since 0.0.6 * @return int Save counter. * @throws E_OTS_NotLoaded If player is not loaded. * @deprecated 0.0.7 Save field is back as flag not a counter. */ public function getSave() { if( !isset($this->data['save']) ) { throw new E_OTS_NotLoaded(); } return $this->data['save']; } /** * Sets save flag. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @version 0.0.7 * @param int $save Deprecated, unused, optional. */ public function setSave($save = 1) { $this->data['save'] = true; } /** * Conditions. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return string Conditions binary string. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getConditions() { if( !isset($this->data['conditions']) ) { throw new E_OTS_NotLoaded(); } return $this->data['conditions']; } /** * Sets conditions. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param string $conditions Condition binary string. */ public function setConditions($conditions) { $this->data['conditions'] = $conditions; } /** * Red skulled time remained. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Red skulled time remained. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getRedSkullTime() { if( !isset($this->data['redskulltime']) ) { throw new E_OTS_NotLoaded(); } return $this->data['redskulltime']; } /** * Sets red skulled time remained. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $redskulltime Red skulled time remained. */ public function setRedSkullTime($redskulltime) { $this->data['redskulltime'] = (int) $redskulltime; } /** * Checks if player has red skull. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return bool Red skull state. * @throws E_OTS_NotLoaded If player is not loaded. */ public function hasRedSkull() { if( !isset($this->data['redskull']) ) { throw new E_OTS_NotLoaded(); } return $this->data['redskull']; } /** * Unsets red skull flag. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> */ public function unsetRedSkull() { $this->data['redskull'] = false; } /** * Sets red skull flag. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> */ public function setRedSkull() { $this->data['redskull'] = true; } /** * Guild nick. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return string Guild title. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getGuildNick() { if( !isset($this->data['guildnick']) ) { throw new E_OTS_NotLoaded(); } return $this->data['guildnick']; } /** * Sets guild nick. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param string $guildnick Name. */ public function setGuildNick($guildnick) { $this->data['guildnick'] = (string) $guildnick; } /** * @version 0.0.3 * @return int Guild rank ID. * @throws E_OTS_NotLoaded If player is not loaded. * @deprecated 0.0.4 Use getRank(). */ public function getRankId() { if( !isset($this->data['rank_id']) ) { throw new E_OTS_NotLoaded(); } return $this->data['rank_id']; } /** * Assigned guild rank. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.1.0 * @return OTS_GuildRank|null Guild rank (null if not member of any). * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function getRank() { if( !isset($this->data['rank_id']) ) { throw new E_OTS_NotLoaded(); } if($this->data['rank_id'] == 0) { return null; } $guildRank = new OTS_GuildRank(); $guildRank->load($this->data['rank_id']); return $guildRank; } /** * @param int $rank_id Guild rank ID. * @deprecated 0.0.4 Use setRank(). */ public function setRankId($rank_id) { $this->data['rank_id'] = (int) $rank_id; } /** * Assigns guild rank. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param OTS_GuildRank|null Guild rank (null to clear assign). * @throws E_OTS_NotLoaded If passed <var>$guildRank</var> parameter is not loaded. */ public function setRank(OTS_GuildRank $guildRank = null) { if( isset($guildRank) ) { $this->data['rank_id'] = $guildRank->getId(); } else { $this->data['rank_id'] = 0; } } /** * Residence town's ID. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Residence town's ID. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getTownId() { if( !isset($this->data['town_id']) ) { throw new E_OTS_NotLoaded(); } return $this->data['town_id']; } /** * Sets residence town's ID. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $town_id Residence town's ID. */ public function setTownId($town_id) { $this->data['town_id'] = (int) $town_id; } /** * Percentage of experience lost after dead. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Percentage of experience lost after dead. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLossExperience() { if( !isset($this->data['loss_experience']) ) { throw new E_OTS_NotLoaded(); } return $this->data['loss_experience']; } /** * Sets percentage of experience lost after dead. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $loss_experience Percentage of experience lost after dead. */ public function setLossExperience($loss_experience) { $this->data['loss_experience'] = (int) $loss_experience; } /** * Percentage of used mana lost after dead. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Percentage of used mana lost after dead. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLossMana() { if( !isset($this->data['loss_mana']) ) { throw new E_OTS_NotLoaded(); } return $this->data['loss_mana']; } /** * Sets percentage of used mana lost after dead. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $loss_mana Percentage of used mana lost after dead. */ public function setLossMana($loss_mana) { $this->data['loss_mana'] = (int) $loss_mana; } /** * Percentage of skills lost after dead. * * <p> * Note: Since 0.0.3 version this method throws {@link E_OTS_NotLoaded E_OTS_NotLoaded} exception instead of triggering E_USER_WARNING. * </p> * * @version 0.0.3 * @return int Percentage of skills lost after dead. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLossSkills() { if( !isset($this->data['loss_skills']) ) { throw new E_OTS_NotLoaded(); } return $this->data['loss_skills']; } /** * Sets percentage of skills lost after dead. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @param int $loss_skills Percentage of skills lost after dead. */ public function setLossSkills($loss_skills) { $this->data['loss_skills'] = (int) $loss_skills; } /** * Percentage of items lost after dead. * * @version 0.1.4 * @since 0.1.4 * @return int Percentage of items lost after dead. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getLossItems() { if( !isset($this->data['loss_items']) ) { throw new E_OTS_NotLoaded(); } return $this->data['loss_items']; } /** * Sets percentage of items lost after dead. * * @version 0.1.4 * @since 0.1.4 * @param int $loss_items Percentage of items lost after dead. */ public function setLossItems($loss_items) { $this->data['loss_items'] = (int) $loss_items; } /** * Bank balance. * * @version 0.1.2 * @since 0.1.2 * @return int Amount of money stored in bank. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getBalance() { if( !isset($this->data['balance']) ) { throw new E_OTS_NotLoaded(); } return $this->data['balance']; } /** * Sets bank balance value. * * <p> * This method only updates object state. To save changes in database you need to use {@link OTS_Player::save() save() method} to flush changed to database. * </p> * * @version 0.1.2 * @since 0.1.2 * @param int $balance Amount of money to be set in bank. */ public function setBalance($balance) { $this->data['balance'] = (int) $balance; } /** * Reads custom field. * * <p> * Reads field by it's name. Can read any field of given record that exists in database. * </p> * * <p> * Note: You should use this method only for fields that are not provided in standard setters/getters (SVN fields). This method runs SQL query each time you call it so it highly overloads used resources. * </p> * * @version 0.0.5 * @since 0.0.3 * @param string $field Field name. * @return string Field value. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function getCustomField($field) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $value = $this->db->query('SELECT ' . $this->db->fieldName($field) . ' FROM ' . $this->db->tableName('players') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id'])->fetch(); return $value[$field]; } /** * Writes custom field. * * <p> * Write field by it's name. Can write any field of given record that exists in database. * </p> * * <p> * Note: You should use this method only for fields that are not provided in standard setters/getters (SVN fields). This method runs SQL query each time you call it so it highly overloads used resources. * </p> * * <p> * Note: Make sure that you pass $value argument of correct type. This method determinates whether to quote field value. It is safe - it makes you sure that no unproper queries that could lead to SQL injection will be executed, but it can make your code working wrong way. For example: $object->setCustomField('foo', '1'); will quote 1 as as string ('1') instead of passing it as a integer. * </p> * * @version 0.0.5 * @since 0.0.3 * @param string $field Field name. * @param mixed $value Field value. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function setCustomField($field, $value) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } // quotes value for SQL query if(!( is_int($value) || is_float($value) )) { $value = $this->db->quote($value); } $this->db->query('UPDATE ' . $this->db->tableName('players') . ' SET ' . $this->db->fieldName($field) . ' = ' . $value . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); } /** * Returns player's skill. * * @version 0.0.2 * @since 0.0.2 * @param int $skill Skill ID. * @return int Skill value. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getSkill($skill) { if( !isset($this->skills[$skill]) ) { throw new E_OTS_NotLoaded(); } return $this->skills[$skill]['value']; } /** * Sets skill value. * * @version 0.0.2 * @since 0.0.2 * @param int $skill Skill ID. * @param int $value Skill value. */ public function setSkill($skill, $value) { $this->skills[ (int) $skill]['value'] = (int) $value; } /** * Returns player's skill's tries for next level. * * @version 0.0.2 * @since 0.0.2 * @param int $skill Skill ID. * @return int Skill tries. * @throws E_OTS_NotLoaded If player is not loaded. */ public function getSkillTries($skill) { if( !isset($this->skills[$skill]) ) { throw new E_OTS_NotLoaded(); } return $this->skills[$skill]['tries']; } /** * Sets skill's tries for next level. * * @version 0.0.2 * @since 0.0.2 * @param int $skill Skill ID. * @param int $tries Skill tries. */ public function setSkillTries($skill, $tries) { $this->skills[ (int) $skill]['tries'] = (int) $tries; } /** * Returns value of storage record. * * @version 0.1.3 * @since 0.1.2 * @param int $key Storage key. * @return int|null Stored value (null if not set). * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function getStorage($key) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $value = $this->db->query('SELECT ' . $this->db->fieldName('value') . ' FROM ' . $this->db->tableName('player_storage') . ' WHERE ' . $this->db->fieldName('key') . ' = ' . (int) $key . ' AND ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'])->fetch(); if($value !== false) { return null; } return $value['value']; } /** * Sets value of storage record. * * @version 0.1.2 * @since 0.1.2 * @param int $key Storage key. * @param int $value Stored value. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function setStorage($key, $value) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $current = $this->getStorage($key); // checks if there is any row to be updates if( isset($current) ) { $this->db->query('UPDATE ' . $this->db->tableName('player_storage') . ' SET ' . $this->db->fieldName('value') . ' = ' . (int) $value . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('key') . ' = ' . (int) $key); } // inserts new storage record else { $this->db->query('INSERT INTO ' . $this->db->tableName('player_storage') . ' (' . $this->db->fieldName('player_id') . ', ' . $this->db->fieldName('key') . ', ' . $this->db->fieldName('value') . ') VALUES (' . $this->data['id'] . ', ' . (int) $key . ', ' . (int) $value . ')'); } } /** * Deletes item with contained items. * * @version 0.0.5 * @since 0.0.3 * @param int $sid Item unique player's ID. * @throws PDOException On PDO operation error. */ private function deleteItem($sid) { // deletes all sub-items foreach( $this->db->query('SELECT ' . $this->db->fieldName('sid') . ' FROM ' . $this->db->tableName('player_items') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('pid') . ' = ' . $sid)->fetchAll() as $item) { $this->deleteItem($item['sid']); } // deletes item $this->db->query('DELETE FROM ' . $this->db->tableName('player_items') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('sid') . ' = ' . $sid); } /** * Returns items tree from given slot. * * <p> * You need global items list resources loaded in order to use this method. * </p> * * @version 0.1.2 * @since 0.0.3 * @param int $slot Slot to get items. * @return OTS_Item|null Item in given slot (items tree if in given slot there is a container). If there is no item in slot then null value will be returned. * @throws E_OTS_NotLoaded If player is not loaded or there is no global items list resource loaded. * @throws E_OTS_NotAContainer If item which is not of type container contains sub items. * @throws PDOException On PDO operation error. */ public function getSlot($slot) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } // loads current item $item = $this->db->query('SELECT ' . $this->db->fieldName('itemtype') . ', ' . $this->db->fieldName('sid') . ', ' . $this->db->fieldName('count') . ', ' . $this->db->fieldName('attributes') . ' FROM ' . $this->db->tableName('player_items') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName($slot > POT::SLOT_AMMO ? 'sid' : 'pid') . ' = ' . (int) $slot)->fetch(); if( empty($item) ) { return null; } // checks if there are any items under current one $items = array(); foreach( $this->db->query('SELECT ' . $this->db->fieldName('sid') . ' FROM ' . $this->db->tableName('player_items') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('pid') . ' = ' . $item['sid'])->fetchAll() as $sub) { $items[] = $this->getSlot($sub['sid']); } // item type $slot = POT::getInstance()->getItemsList()->getItemType($item['itemtype'])->createItem(); $slot->setCount($item['count']); $slot->setAttributes($item['attributes']); // checks if current item has any contained items if( !empty($items) ) { // checks if item is realy a container if(!$slot instanceof OTS_Container) { throw new E_OTS_NotAContainer(); } // puts items into container foreach($items as $sub) { $slot->addItem($sub); } } return $slot; } /** * Sets slot content. * * @version 0.1.2 * @since 0.0.3 * @param int $slot Slot to save items. * @param OTS_Item $item Item (can be a container with content) for given slot. Leave this parameter blank to clear slot. * @param int $pid Deprecated, not used anymore. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function setSlot($slot, OTS_Item $item = null, $pid = 0) { static $sid; if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } // clears current slot if($slot <= POT::SLOT_AMMO) { $id = $this->db->query('SELECT ' . $this->db->fieldName('sid') . ' FROM ' . $this->db->tableName('player_items') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('pid') . ' = ' . (int) $slot)->fetch(); $this->deleteItem( (int) $id['sid']); } // checks if there is any item to insert if( isset($item) ) { // current maximum sid (over slot sids) if( !isset($sid) ) { $sid = $this->db->query('SELECT MAX(' . $this->db->fieldName('sid') . ') AS `sid` FROM ' . $this->db->tableName('player_items') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'])->fetch(); $sid = $sid['sid'] > POT::SLOT_AMMO ? $sid['sid'] : POT::SLOT_AMMO; } $sid++; // inserts given item $this->db->query('INSERT INTO ' . $this->db->tableName('player_items') . ' (' . $this->db->fieldName('player_id') . ', ' . $this->db->fieldName('sid') . ', ' . $this->db->fieldName('pid') . ', ' . $this->db->fieldName('itemtype') . ', ' . $this->db->fieldName('count') . ', ' . $this->db->fieldName('attributes') . ') VALUES (' . $this->data['id'] . ', ' . $sid . ', ' . (int) $slot . ', ' . $item->getId() . ', ' . $item->getCount() . ', ' . $this->db->quote( $item->getAttributes() ) . ')'); // checks if this is container if($item instanceof OTS_Container) { $pid = $sid; // inserts all contained items foreach($item as $sub) { $this->setSlot($pid, $sub); } } } // clears $sid for next public call if($slot <= POT::SLOT_AMMO) { $sid = null; } } /** * Deletes depot item with contained items. * * @version 0.0.5 * @since 0.0.3 * @param int $sid Depot item unique player's ID. * @throws PDOException On PDO operation error. */ private function deleteDepot($sid) { // deletes all sub-items foreach( $this->db->query('SELECT ' . $this->db->fieldName('sid') . ' FROM ' . $this->db->tableName('player_depotitems') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('pid') . ' = ' . $sid)->fetchAll() as $item) { $this->deleteDepot($item['sid']); } // deletes item $this->db->query('DELETE FROM ' . $this->db->tableName('player_depotitems') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('sid') . ' = ' . $sid); } /** * Returns items tree from given depot. * * <p> * You need global items list resources loaded in order to use this method. * </p> * * @version 0.1.2 * @since 0.0.3 * @param int $depot Depot ID to get items. * @return OTS_Item|null Item in given depot (items tree if in given depot there is a container). If there is no item in depot then null value will be returned. * @throws E_OTS_NotLoaded If player is not loaded or there is no global items list resource loaded. * @throws E_OTS_NotAContainer If item which is not of type container contains sub items. * @throws PDOException On PDO operation error. */ public function getDepot($depot) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } // loads current item $item = $this->db->query('SELECT ' . $this->db->fieldName('itemtype') . ', ' . $this->db->fieldName('sid') . ', ' . $this->db->fieldName('count') . ', ' . $this->db->fieldName('attributes') . ' FROM ' . $this->db->tableName('player_depotitems') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName($depot > POT::DEPOT_SID_FIRST ? 'sid' : 'pid') . ' = ' . (int) $depot)->fetch(); if( empty($item) ) { return null; } // checks if there are any items under current one $items = array(); foreach( $this->db->query('SELECT ' . $this->db->fieldName('sid') . ' FROM ' . $this->db->tableName('player_depotitems') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('pid') . ' = ' . $item['sid'])->fetchAll() as $sub) { $items[] = $this->getDepot($sub['sid']); } // item type $depot = POT::getInstance()->getItemsList()->getItemType($item['itemtype'])->createItem(); $depot->setCount($item['count']); $depot->setAttributes($item['attributes']); // checks if current item has any contained items if( !empty($items) ) { // checks if item is realy a container if(!$depot instanceof OTS_Container) { throw new E_OTS_NotAContainer(); } // puts items into container foreach($items as $sub) { $depot->addItem($sub); } } return $depot; } /** * Sets depot content. * * @version 0.1.2 * @since 0.0.3 * @param int $depot Depot ID to save items. * @param OTS_Item $item Item (can be a container with content) for given depot. Leave this parameter blank to clear depot. * @param int $pid Deprecated, not used anymore. * @param int $depot_id Internal, for further use. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function setDepot($depot, OTS_Item $item = null, $pid = 0, $depot_id = 0) { static $sid; // if no depot_id is specified then it is same as depot slot if($depot_id == 0) { $depot_id = $depot; } if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } // clears current depot if($depot <= POT::DEPOT_SID_FIRST) { $id = $this->db->query('SELECT ' . $this->db->fieldName('sid') . ' FROM ' . $this->db->tableName('player_depotitems') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('pid') . ' = ' . (int) $depot)->fetch(); $this->deleteDepot( (int) $id['sid']); } // checks if there is any item to insert if( isset($item) ) { // current maximum sid (over depot sids) if( !isset($sid) ) { $sid = $this->db->query('SELECT MAX(' . $this->db->fieldName('sid') . ') AS `sid` FROM ' . $this->db->tableName('player_depotitems') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'])->fetch(); $sid = $sid['sid'] > POT::DEPOT_SID_FIRST ? $sid['sid'] : POT::DEPOT_SID_FIRST; } $sid++; // inserts given item $this->db->query('INSERT INTO ' . $this->db->tableName('player_depotitems') . ' (' . $this->db->fieldName('player_id') . ', ' . $this->db->fieldName('depot_id') . ', ' . $this->db->fieldName('sid') . ', ' . $this->db->fieldName('pid') . ', ' . $this->db->fieldName('itemtype') . ', ' . $this->db->fieldName('count') . ', ' . $this->db->fieldName('attributes') . ') VALUES (' . $this->data['id'] . ', ' . $depot_id . ', ' . $sid . ', ' . (int) $depot . ', ' . $item->getId() . ', ' . $item->getCount() . ', ' . $this->db->quote( $item->getAttributes() ) . ')'); // checks if this is container if($item instanceof OTS_Container) { $pid = $sid; // inserts all contained items foreach($item as $sub) { $this->setDepot($pid, $sub, 0, $depot_id); } } } // clears $sid for next public call if($depot <= POT::DEPOT_SID_FIRST) { $sid = null; } } /** * @version 0.1.5 * @since 0.0.5 * @param int $time Time for time until expires (0 - forever). * @throws PDOException On PDO operation error. * @deprecated 0.1.5 Use OTS_PlayerBan class. */ public function ban($time = 0) { // can't ban nothing if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } // creates ban entry $ban = new OTS_PlayerBan(); $ban->setValue($this->data['id']); $ban->setExpires($time); $ban->setAdded( time() ); $ban->activate(); $ban->save(); } /** * @version 0.1.5 * @since 0.0.5 * @throws PDOException On PDO operation error. * @deprecated 0.1.5 Use OTS_PlayerBan class. */ public function unban() { // can't unban nothing if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } // deletes ban entry $ban = new OTS_PlayerBan(); $ban->find($this->data['id']); $ban->delete(); } /** * @version 0.1.5 * @since 0.0.5 * @return bool True if player is banned, false otherwise. * @throws PDOException On PDO operation error. * @deprecated 0.1.5 Use OTS_PlayerBan class. */ public function isBanned() { // nothing can't be banned if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } if( !isset($this->data['banned']) ) $this->loadBan(); return ($this->data['banned'] == 1); } public function getBanTime() { // nothing can't be banned if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } if( !isset($this->data['banned_time']) ) $this->loadBan(); return $this->data['banned_time']; } public function loadBan() { // nothing can't be banned if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } $ban = $this->db->query('SELECT ' . $this->db->fieldName('active') . ', ' . $this->db->fieldName('expires') . ' FROM ' . $this->db->tableName('bans') . ' WHERE (' . $this->db->fieldName('type') . ' = 3 OR ' . $this->db->fieldName('type') . ' = 5) AND ' . $this->db->fieldName('active') . ' = 1 AND ' . $this->db->fieldName('value') . ' = ' . $this->data['account_id'] . ' AND (' . $this->db->fieldName('expires') . ' > ' . time() .' OR ' . $this->db->fieldName('expires') . ' = -1)')->fetch(); $this->data['banned'] = $ban['active']; $this->data['banned_time'] = $ban['expires']; } public function loadNameLock() { // nothing can't be namelocked if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } $ban = $this->db->query('SELECT ' . $this->db->fieldName('active') . ' FROM ' . $this->db->tableName('bans') . ' WHERE ' . $this->db->fieldName('type') . ' = 2 AND ' . $this->db->fieldName('active') . ' = 1 AND ' . $this->db->fieldName('value') . ' = ' . $this->data['id'])->fetch(); $this->data['namelock'] = $ban['active']; } public function addNameLock() { //nothing can't be namelocked if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } $this->db->query('INSERT INTO ' . $this->db->tableName('bans') . ' (' . $this->db->fieldName('type') . ', ' . $this->db->fieldName('value') . ', ' . $this->db->fieldName('param') . ', ' . $this->db->fieldName('active') . ', ' . $this->db->fieldName('expires') . ', ' . $this->db->fieldName('added') . ', ' . $this->db->fieldName('admin_id') . ', ' . $this->db->fieldName('comment') . ', ' . $this->db->fieldName('') . ', ' . $this->db->fieldName('reason') . ', ' . $this->db->fieldName('action') . ') VALUES (2, ' . (int) $this->data['id']. ', 4294967295, 1, -1, ' . time() . ', 0, ' . $this->db->quote('Name lock from site') . ', 1, 1)'); } public function removeNameLock() { //nothing can't be namelocked if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } $this->db->query('UPDATE ' . $this->db->tableName('bans') . ' SET ' . $this->db->fieldName('active') .' = 0 WHERE ' . $this->db->fieldName('value') . ' = ' . (int) $this->data['id'] . ' AND ' . $this->db->fieldName('type') . ' = 2'); } public function isNameLocked() { //nothing can't be namelocked if( !$this->isLoaded() ) { throw new E_OTS_NotLoaded(); } if( !isset($this->data['namelock']) ) $this->loadNameLock(); return ($this->data['namelock'] == 1); } /** * Deletes player. * * @version 0.0.5 * @since 0.0.5 * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function delete() { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } // deletes row from database $this->db->query('UPDATE ' . $this->db->tableName('players') . ' SET ' . $this->db->fieldName('deleted') . ' = 1 WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); // resets object handle unset($this->data['id']); } /** * Player proffesion name. * * <p> * You need global vocations list resource loaded in order to use this method. * </p> * * @version 0.1.0 * @since 0.0.6 * @return string Player proffesion name. * @throws E_OTS_NotLoaded If player is not loaded or global vocations list is not loaded. */ public function getVocationName() { if( !isset($this->data['vocation']) ) { throw new E_OTS_NotLoaded(); } return POT::getInstance()->getVocationsList()->getVocationName($this->data['vocation']); } /** * Player residence town name. * * <p> * You need global map resource loaded in order to use this method. * </p> * * @version 0.1.0 * @since 0.1.0 * @return string Player town name. * @throws E_OTS_NotLoaded If player is not loaded or global map is not loaded. */ public function getTownName() { if( !isset($this->data['town_id']) ) { throw new E_OTS_NotLoaded(); } return POT::getInstance()->getMap()->getTownName($this->data['town_id']); } /** * Returns house rented by this player. * * <p> * You need global houses list resource loaded in order to use this method. * </p> * * @version 0.1.0 * @since 0.1.0 * @return OTS_House|null House rented by player. * @throws E_OTS_NotLoaded If player is not loaded or global houses list is not loaded. * @throws PDOException On PDO operation error. */ public function getHouse() { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } // SELECT query on database $house = $this->db->query('SELECT ' . $this->db->fieldName('id') . ' FROM ' . $this->db->tableName('houses') . ' WHERE ' . $this->db->fieldName('owner') . ' = ' . $this->data['id'])->fetch(); if( !empty($house) ) { return POT::getInstance()->getHousesList()->getHouse($house['id']); } return null; } /** * Returns list of VIPs. * * <p> * It means list of players which this player have on his/her list. * </p> * * @version 0.1.3 * @since 0.1.3 * @return OTS_Players_List List of VIPs. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function getVIPsList() { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $list = new OTS_Players_List(); // foreign table fields identifiers $field1 = new OTS_SQLField('player_id', 'player_viplist'); $field2 = new OTS_SQLField('vip_id', 'player_viplist'); // creates filter $filter = new OTS_SQLFilter(); $filter->addFilter($field1, $this->data['id']); $filter->compareField('id', $field2); // puts filter onto list $list->setFilter($filter); return $list; } /** * Adds player to VIP list. * * @version 0.1.4 * @since 0.1.3 * @param OTS_Player $player Player to be added. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function addVIP(OTS_Player $player) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $this->db->query('INSERT INTO ' . $this->db->tableName('player_viplist') . ' (' . $this->db->fieldName('player_id') . ', ' . $this->db->fieldName('vip_id') . ') VALUES (' . $this->data['id'] . ', ' . $player->getId() . ')'); } /** * Checks if given player is a VIP for current one. * * @version 0.1.5 * @since 0.1.3 * @param OTS_Player $player Player to check. * @return bool True, if given player is on VIP list. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function isVIP(OTS_Player $player) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } return $this->db->query('SELECT COUNT(' . $this->db->fieldName('vip_id') . ') FROM ' . $this->db->tableName('player_viplist') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('vip_id') . ' = ' . $player->getId() )->fetchColumn() > 0; } /** * Deletes player from VIP list. * * @version 0.1.4 * @since 0.1.3 * @param OTS_Player $player Player to be deleted. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function deleteVIP(OTS_Player $player) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $this->db->query('DELETE FROM ' . $this->db->tableName('player_viplist') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('vip_id') . ' = ' . $player->getId() ); } /** * Returns list of known spells. * * <p> * You need global spells list resource loaded in order to use this method. * </p> * * @version 0.1.4 * @since 0.1.4 * @return array List of known spells. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function getSpellsList() { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $spells = array(); $list = POT::getInstance()->getSpellsList(); // reads all known spells foreach( $this->db->query('SELECT ' . $this->db->fieldName('name') . ' FROM ' . $this->db->tableName('player_spells') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id']) as $spell) { // checks if there is rune, instant or conjure spell with given name if( $list->hasRune($spell['name']) ) { $spells[] = $list->getRune($spell['name']); } if( $list->hasInstance($spell['name']) ) { $spells[] = $list->getInstance($spell['name']); } if( $list->hasConjure($spell['name']) ) { $spells[] = $list->getConjure($spell['name']); } } return $spells; } /** * Checks if player knows given spell. * * @version 0.1.5 * @since 0.1.4 * @param OTS_Spell $spell Spell to be checked. * @return bool True if player knows given spell, false otherwise. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function hasSpell(OTS_Spell $spell) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } return $this->db->query('SELECT COUNT(' . $this->db->fieldName('name') . ') FROM ' . $this->db->tableName('player_spells') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('name') . ' = ' . $this->db->quote( $spell->getName() ) )->fetchColumn() > 0; } /** * Adds given spell to player's spell book (makes him knowing it). * * @version 0.1.4 * @since 0.1.4 * @param OTS_Spell $spell Spell to be learned. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function addSpell(OTS_Spell $spell) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $this->db->query('INSERT INTO ' . $this->db->tableName('player_spells') . ' (' . $this->db->fieldName('player_id') . ', ' . $this->db->fieldName('name') . ') VALUES (' . $this->data['id'] . ', ' . $this->db->quote( $spell->getName() ) . ')'); } /** * Removes given spell from player's spell book. * * @version 0.1.4 * @since 0.1.4 * @param OTS_Spell $spell Spell to be removed. * @throws E_OTS_NotLoaded If player is not loaded. * @throws PDOException On PDO operation error. */ public function deleteSpell(OTS_Spell $spell) { if( !isset($this->data['id']) ) { throw new E_OTS_NotLoaded(); } $this->db->query('DELETE FROM ' . $this->db->tableName('player_spells') . ' WHERE ' . $this->db->fieldName('player_id') . ' = ' . $this->data['id'] . ' AND ' . $this->db->fieldName('name') . ' = ' . $this->db->quote( $spell->getName() ) ); } /** * Magic PHP5 method. * * @version 0.1.5 * @since 0.1.0 * @param string $name Property name. * @return mixed Property value. * @throws E_OTS_NotLoaded When player is not loaded. * @throws OutOfBoundsException For non-supported properties. * @throws PDOException On PDO operation error. */ public function __get($name) { switch($name) { case 'id': return $this->getId(); case 'name': return $this->getName(); case 'account': return $this->getAccount(); case 'group': return $this->getGroup(); case 'sex': return $this->getSex(); case 'vocation': return $this->getVocation(); case 'experience': return $this->getExperience(); case 'level': return $this->getLevel(); case 'magLevel': return $this->getMagLevel(); case 'reset': return $this->getReset(); case 'health': return $this->getHealth(); case 'healthMax': return $this->getHealthMax(); case 'mana': return $this->getMana(); case 'manaMax': return $this->getManaMax(); case 'manaSpent': return $this->getManaSpent(); case 'soul': return $this->getSoul(); case 'direction': return $this->getDirection(); case 'lookBody': return $this->getLookBody(); case 'lookFeet': return $this->getLookFeet(); case 'lookHead': return $this->getLookHead(); case 'lookLegs': return $this->getLookLegs(); case 'lookType': return $this->getLookType(); case 'lookAddons': return $this->getLookAddons(); case 'posX': return $this->getPosX(); case 'posY': return $this->getPosY(); case 'posZ': return $this->getPosZ(); case 'cap': return $this->getCap(); case 'lastLogin': return $this->getLastLogin(); case 'lastIP': return $this->getLastIP(); case 'save': return $this->isSaveSet(); case 'conditions': return $this->getConditions(); case 'redSkullTime': return $this->getRedSkullTime(); case 'redSkull': return $this->hasRedSkull(); case 'guildNick': return $this->getGuildNick(); case 'rank': return $this->getRank(); case 'townId': return $this->getTownId(); case 'townName': return $this->getTownName(); case 'house': return $this->getHouse(); case 'lossExperience': return $this->getLossExperience(); case 'lossMana': return $this->getLossMana(); case 'lossSkills': return $this->getLossSkills(); case 'lossItems': return $this->getLossItems(); case 'balance': return $this->getBalance(); case 'loaded': return $this->isLoaded(); case 'banned': return $this->isBanned(); case 'vipsList': return $this->getVIPsList(); case 'vocationName': return $this->getVocationName(); case 'spellsList': return $this->getSpellsList(); default: throw new OutOfBoundsException(); } } /** * Magic PHP5 method. * * @version 0.1.5 * @since 0.1.0 * @param string $name Property name. * @param mixed $value Property value. * @throws E_OTS_NotLoaded When passing object value which represents not-initialised instance. * @throws OutOfBoundsException For non-supported properties. */ public function __set($name, $value) { switch($name) { case 'name': $this->setName($value); break; case 'account': $this->setAccount($value); break; case 'group': $this->setGroup($value); break; case 'sex': $this->setSex($value); break; case 'vocation': $this->setVocation($value); break; case 'experience': $this->setExperience($value); break; case 'level': $this->setLevel($value); break; case 'magLevel': $this->setMagLevel($value); break; case 'health': $this->setHealth($value); break; case 'healthMax': $this->setHealthMax($value); break; case 'mana': $this->setMana($value); break; case 'manaMax': $this->setManaMax($value); break; case 'manaSpent': $this->setManaSpent($value); break; case 'soul': $this->setSoul($value); break; case 'direction': $this->setDirection($value); break; case 'lookBody': $this->setLookBody($value); break; case 'lookFeet': $this->setLookFeet($value); break; case 'lookHead': $this->setLookHead($value); break; case 'lookLegs': $this->setLookLegs($value); break; case 'lookType': $this->setLookType($value); break; case 'lookAddons': $this->setLookAddons($value); break; case 'posX': $this->setPosX($value); break; case 'posY': $this->setPosY($value); break; case 'posZ': $this->setPosZ($value); break; case 'cap': $this->setCap($value); break; case 'lastLogin': $this->setLastLogin($value); break; case 'lastIP': $this->setLastIP($value); break; case 'conditions': $this->setConditions($value); break; case 'redSkullTime': $this->setRedSkullTime($value); break; case 'guildNick': $this->setGuildNick($value); break; case 'rank': $this->setRank($value); break; case 'townId': $this->setTownId($value); break; case 'lossExperience': $this->setLossExperience($value); break; case 'lossMana': $this->setLossMana($value); break; case 'lossSkills': $this->setLossSkills($value); break; case 'lossItems': $this->setLossItems($value); break; case 'balance': $this->setBalance($value); break; case 'redSkull': if($value) { $this->setRedSkull(); } else { $this->unsetRedSkull(); } break; case 'save': if($value) { $this->setSave(); } else { $this->unsetSave(); } break; case 'banned': if($value) { $this->ban(); } else { $this->unban(); } break; default: throw new OutOfBoundsException(); } } /** * Returns string representation of object. * * <p> * If any display driver is currently loaded then it uses it's method. Else it returns character name. * </p> * * @version 0.1.3 * @since 0.1.0 * @return string String representation of object. */ public function __toString() { $ots = POT::getInstance(); // checks if display driver is loaded if( $ots->isDisplayDriverLoaded() ) { return $ots->getDisplayDriver()->displayPlayer($this); } return $this->getName(); } } /**#@-*/ ?> se conseguir me ajudar noss sem coments rep muito +
  6. obrigado sky voce é linda <3 rep+ Pode fexar, resolvido.
  7. OPA e outro erro é um que quando eu seleciono a vocation para criar falar que não existe, nenhuma '----' me ajudem eu acho que começou a dar esse erro porque eu fui resetar o ot e me esqueci das samples e deletou junto, se alguem tiver o código para eu adicionar as samples tudo level e etc.. por favor posta ai... da esse erro The Following Errors Have Occurred: Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copySorcerer Sample doesn't exist. e tipo todas as vocations da esse erro: The Following Errors Have Occurred: Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copyDruid Sample doesn't exist. The Following Errors Have Occurred: Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copyPaladin Sample doesn't exist. The Following Errors Have Occurred: Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copyKnight Sample doesn't exist. The Following Errors Have Occurred: Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copyDrunou Sample doesn't exist. The Following Errors Have Occurred: Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copyInfernalist Sample doesn't exist. POR FAVOR ME AJUDEMMMMMMMMM!
  8. Bem, meu site tava tranquilo até a parte que eu pedi para um colega colocar uma parte que calcula a quantidade de resets na charater page, só que ele mexeu no OTS_Players e adicionou umas coisas la, ai fica mostrando normalmente só que na hora que vai criar um novo personagem não da aparece esse erro olhe: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in C:\xampp\htdocs\pot\OTS_Player.php:187 Stack trace: #0 C:\xampp\htdocs\pot\OTS_Player.php(187): PDO->query('INSERT INTO `pl...') #1 C:\xampp\htdocs\accountmanagement.php(956): OTS_Player->save() #2 C:\xampp\htdocs\index.php(316): include('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\pot\OTS_Player.php on line 187 O cara que mexeu nao sabe me ajudar, gostaria que alguem me ajuda-se, obrigado! REP+ 2 semana. Se precisar ver meu OTS_Players ou algum arquivo do site, me avisem para eu postar.
  9. Por favor, me ajudem preciso urgentemente disto.
  10. Bem, meu site tava tranquilo até a parte que eu pedi para um colega colocar uma parte que calcula a quantidade de resets na charater page, só que ele mexeu no OTS_Players e adicionou umas coisas la, ai fica mostrando normalmente só que na hora que vai criar um novo personagem não da aparece esse erro olhe: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in C:\xampp\htdocs\pot\OTS_Player.php:187 Stack trace: #0 C:\xampp\htdocs\pot\OTS_Player.php(187): PDO->query('INSERT INTO `pl...') #1 C:\xampp\htdocs\accountmanagement.php(956): OTS_Player->save() #2 C:\xampp\htdocs\index.php(316): include('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\pot\OTS_Player.php on line 187 O cara que mexeu nao sabe me ajudar, gostaria que alguem me ajuda-se, obrigado!
  11. Também preciso disso, mas por exemplo, eu consegui só que tem um problema, quando vou criar char da erro, porque foi mexido no OTS_Player, ai quando vai criar char da esse erro ó: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1' in C:\xampp\htdocs\pot\OTS_Player.php:187 Stack trace: #0 C:\xampp\htdocs\pot\OTS_Player.php(187): PDO->query('INSERT INTO `pl...') #1 C:\xampp\htdocs\accountmanagement.php(956): OTS_Player->save() #2 C:\xampp\htdocs\index.php(316): include('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\pot\OTS_Player.php on line 187 mais na character page mostra a quantidade de resets, preciso de ajuda para arrumar isso, meu ot ta off a mó tempao porque ngm consegue arrumar e criar char no site.
  12. PESSOAL MEU SERVIDOR É MAPA RADBR, EU CRIEI UM SITE A POUCOS DIAS MAS EU TAVA PERCEBENDO QUE AS VOCATIONS QUE TEM NO SERVIDOR NAO APAREÇE SÓ MOSTRAVA MS, ED, RP E EK MAIS MEU OT TEM DRUNOU (LORD DRUNOU) E INFERNALIST (MASTER INFERNALIST) E TAMBEM QUERIA UM SISTEMA DE RESETS PARA SITE, EU TENHO UM MAIS É IN-GAME.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...