diff --git a/TODO b/TODO index 2215131b..3f2d4b30 100644 --- a/TODO +++ b/TODO @@ -95,6 +95,5 @@ x.x - At any time between (version not specified) * some interface for this would be nice to have (phpmyadmin commands/queries) * https://otland.net/threads/phpmyadmin-commands-to-edit-database.7751/ * migrations: option to downgrade the database - * create account: create character * suggest name option in create character: * https://github.com/nubs/random-name-generator \ No newline at end of file diff --git a/config.php b/config.php index 40c283a5..415a9b0f 100644 --- a/config.php +++ b/config.php @@ -91,6 +91,7 @@ $config = array( // account 'account_management' => true, // disable if you're using other method to manage users (fe. tfs account manager) 'account_create_auto_login' => false, // auto login after creating account? + 'account_create_character_create' => true, // allow directly to create character on create account page? 'account_mail_verify' => false, // force users to confirm their email addresses when registering account 'account_mail_unique' => true, // email addresses cannot be duplicated? (one account = one email) 'account_premium_days' => 0, // default premium days on new account diff --git a/system/libs/CreateCharacter.php b/system/libs/CreateCharacter.php new file mode 100644 index 00000000..309a6db0 --- /dev/null +++ b/system/libs/CreateCharacter.php @@ -0,0 +1,222 @@ + + * @author Slawkens + * @copyright 2019 MyAAC + * @link https://my-aac.org + */ + +class CreateCharacter +{ + /** + * @param string $name + * @param int $sex + * @param int $vocation + * @param int $town + * @param array $errors + * @return bool + */ + public function check($name, $sex, &$vocation, &$town, &$errors) { + $minLength = config('character_name_min_length'); + $maxLength = config('character_name_max_length'); + + if(empty($name)) + $errors['name'] = 'Please enter a name for your character!'; + else if(strlen($name) > $maxLength) + $errors['name'] = 'Name is too long. Max. lenght '.$maxLength.' letters.'; + else if(strlen($name) < $minLength) + $errors['name'] = 'Name is too short. Min. lenght '.$minLength.' letters.'; + else { + if(!admin() && !Validator::newCharacterName($name)) { + $errors['name'] = Validator::getLastError(); + } + + $exist = new OTS_Player(); + $exist->find($name); + if($exist->isLoaded()) { + $errors['name'] = 'Character with this name already exist.'; + } + } + + if(empty($sex) && $sex != "0") + $errors['sex'] = 'Please select the sex for your character!'; + + if(count(config('character_samples')) > 1) + { + if(!isset($vocation)) + $errors['vocation'] = 'Please select a vocation for your character.'; + } + else + $vocation = config('character_samples')[0]; + + if(count(config('character_towns')) > 1) { + if(!isset($town)) + $errors['town'] = 'Please select a town for your character.'; + } + else { + $town = config('character_towns')[0]; + } + + if(empty($errors)) { + if(!isset(config('genders')[$sex])) + $errors['sex'] = 'Sex is invalid.'; + if(!in_array($town, config('character_towns'), false)) + $errors['town'] = 'Please select valid town.'; + if(count(config('character_samples')) > 1) + { + $newchar_vocation_check = false; + foreach((array)config('character_samples') as $char_vocation_key => $sample_char) + if($vocation === $char_vocation_key) + $newchar_vocation_check = true; + if(!$newchar_vocation_check) + $errors['vocation'] = 'Unknown vocation. Please fill in form again.'; + } + else + $vocation = 0; + } + + return empty($errors); + } + + /** + * @param string $name + * @param int $sex + * @param int $vocation + * @param int $town + * @param OTS_Account $account + * @param array $errors + * @return bool + * @throws E_OTS_NotLoaded + * @throws Twig_Error_Loader + * @throws Twig_Error_Runtime + * @throws Twig_Error_Syntax + */ + public function doCreate($name, $sex, $vocation, $town, $account, &$errors) + { + if(!$this->check($name, $sex, $vocation, $town, $errors)) { + return false; + } + + if(empty($errors)) + { + $number_of_players_on_account = $account->getPlayersList()->count(); + if($number_of_players_on_account >= config('characters_per_account')) + $errors[] = 'You have too many characters on your account ('.$number_of_players_on_account.'/'.config('characters_per_account').')!'; + } + + if(empty($errors)) + { + $char_to_copy_name = config('character_samples')[$vocation]; + $char_to_copy = new OTS_Player(); + $char_to_copy->find($char_to_copy_name); + if(!$char_to_copy->isLoaded()) + $errors[] = 'Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config.php and set valid characters to copy names. Character to copy: '.$char_to_copy_name.' doesn\'t exist.'; + } + + if(!empty($errors)) { + return false; + } + + global $db, $twig; + + if($sex == "0") + $char_to_copy->setLookType(136); + + $player = new OTS_Player(); + $player->setName($name); + $player->setAccount($account); + $player->setGroupId(1); + $player->setSex($sex); + $player->setVocation($char_to_copy->getVocation()); + if($db->hasColumn('players', 'promotion')) + $player->setPromotion($char_to_copy->getPromotion()); + + if($db->hasColumn('players', 'direction')) + $player->setDirection($char_to_copy->getDirection()); + + $player->setConditions($char_to_copy->getConditions()); + $rank = $char_to_copy->getRank(); + if($rank->isLoaded()) { + $player->setRank($char_to_copy->getRank()); + } + + if($db->hasColumn('players', 'lookaddons')) + $player->setLookAddons($char_to_copy->getLookAddons()); + + $player->setTownId($town); + $player->setExperience($char_to_copy->getExperience()); + $player->setLevel($char_to_copy->getLevel()); + $player->setMagLevel($char_to_copy->getMagLevel()); + $player->setHealth($char_to_copy->getHealth()); + $player->setHealthMax($char_to_copy->getHealthMax()); + $player->setMana($char_to_copy->getMana()); + $player->setManaMax($char_to_copy->getManaMax()); + $player->setManaSpent($char_to_copy->getManaSpent()); + $player->setSoul($char_to_copy->getSoul()); + + for($skill = POT::SKILL_FIRST; $skill <= POT::SKILL_LAST; $skill++) + $player->setSkill($skill, 10); + + $player->setLookBody($char_to_copy->getLookBody()); + $player->setLookFeet($char_to_copy->getLookFeet()); + $player->setLookHead($char_to_copy->getLookHead()); + $player->setLookLegs($char_to_copy->getLookLegs()); + $player->setLookType($char_to_copy->getLookType()); + $player->setCap($char_to_copy->getCap()); + $player->setBalance(0); + $player->setPosX(0); + $player->setPosY(0); + $player->setPosZ(0); + + if($db->hasColumn('players', 'stamina')) { + $player->setStamina($char_to_copy->getStamina()); + } + + if($db->hasColumn('players', 'loss_experience')) { + $player->setLossExperience($char_to_copy->getLossExperience()); + $player->setLossMana($char_to_copy->getLossMana()); + $player->setLossSkills($char_to_copy->getLossSkills()); + } + if($db->hasColumn('players', 'loss_items')) { + $player->setLossItems($char_to_copy->getLossItems()); + $player->setLossContainers($char_to_copy->getLossContainers()); + } + + $player->save(); + $player->setCustomField("created", time()); + + $player = new OTS_Player(); + $player->find($name); + + if(!$player->isLoaded()) { + error("Error. Can't create character. Probably problem with database. Please try again later or contact with admin."); + return false; + } + + if($db->hasTable('player_skills')) { + for($i=0; $i<7; $i++) { + $skillExists = $db->query('SELECT `skillid` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' AND `skillid` = ' . $i); + if($skillExists->rowCount() <= 0) { + $db->query('INSERT INTO `player_skills` (`player_id`, `skillid`, `value`, `count`) VALUES ('.$player->getId().', '.$i.', 10, 0)'); + } + } + } + + $loaded_items_to_copy = $db->query("SELECT * FROM player_items WHERE player_id = ".$char_to_copy->getId().""); + foreach($loaded_items_to_copy as $save_item) + $db->query("INSERT INTO `player_items` (`player_id` ,`pid` ,`sid` ,`itemtype`, `count`, `attributes`) VALUES ('".$player->getId()."', '".$save_item['pid']."', '".$save_item['sid']."', '".$save_item['itemtype']."', '".$save_item['count']."', '".$save_item['attributes']."');"); + + $twig->display('success.html.twig', array( + 'title' => 'Character Created', + 'description' => 'The character ' . $name . ' has been created.
+ Please select the outfit when you log in for the first time.

+ See you on ' . configLua('serverName') . '!' + )); + + $account->logAction('Created character ' . $name . '.'); + return true; + } +} \ No newline at end of file diff --git a/system/pages/account/change_name.php b/system/pages/account/change_name.php index 1506d545..aec153e6 100644 --- a/system/pages/account/change_name.php +++ b/system/pages/account/change_name.php @@ -10,8 +10,6 @@ */ defined('MYAAC') or die('Direct access not allowed!'); -echo ''; - $player_id = isset($_POST['player_id']) ? (int)$_POST['player_id'] : NULL; $name = isset($_POST['name']) ? stripslashes(ucwords(strtolower($_POST['name']))) : NULL; if((!$config['account_change_character_name'])) diff --git a/system/pages/account/create_character.php b/system/pages/account/create_character.php index 0c743961..f3a82568 100644 --- a/system/pages/account/create_character.php +++ b/system/pages/account/create_character.php @@ -10,206 +10,32 @@ */ defined('MYAAC') or die('Direct access not allowed!'); -echo ''; -$newchar_name = isset($_POST['name']) ? stripslashes(ucwords(strtolower($_POST['name']))) : NULL; -$newchar_sex = isset($_POST['sex']) ? $_POST['sex'] : NULL; -$newchar_vocation = isset($_POST['vocation']) ? $_POST['vocation'] : NULL; -$newchar_town = isset($_POST['town']) ? $_POST['town'] : NULL; +$character_name = isset($_POST['name']) ? stripslashes(ucwords(strtolower($_POST['name']))) : null; +$character_sex = isset($_POST['sex']) ? (int)$_POST['sex'] : null; +$character_vocation = isset($_POST['vocation']) ? (int)$_POST['vocation'] : null; +$character_town = isset($_POST['town']) ? (int)$_POST['town'] : null; -$newchar_created = false; +$character_created = false; $save = isset($_POST['save']) && $_POST['save'] == 1; +$errors = array(); if($save) { - $minLength = $config['character_name_min_length']; - $maxLength = $config['character_name_max_length']; + require_once LIBS . 'CreateCharacter.php'; + $createCharacter = new CreateCharacter(); - if(empty($newchar_name)) - $errors['name'] = 'Please enter a name for your character!'; - else if(strlen($newchar_name) > $maxLength) - $errors['name'] = 'Name is too long. Max. lenght '.$maxLength.' letters.'; - else if(strlen($newchar_name) < $minLength) - $errors['name'] = 'Name is too short. Min. lenght '.$minLength.' letters.'; - else { - if(!admin() && !Validator::newCharacterName($newchar_name)) { - $errors['name'] = Validator::getLastError(); - } - - $exist = new OTS_Player(); - $exist->find($newchar_name); - if($exist->isLoaded()) { - $errors['name'] = 'Character with this name already exist.'; - } - } - - if(empty($newchar_sex) && $newchar_sex != "0") - $errors[] = 'Please select the sex for your character!'; - - if(count($config['character_samples']) > 1) - { - if(!isset($newchar_vocation)) - $errors[] = 'Please select a vocation for your character.'; - } - else - $newchar_vocation = $config['character_samples'][0]; - - if(count($config['character_towns']) > 1) { - if(!isset($newchar_town)) - $errors[] = 'Please select a town for your character.'; - } - else { - $newchar_town = $config['character_towns'][0]; - } - - if(empty($errors)) { - if(!isset($config['genders'][$newchar_sex])) - $errors[] = 'Sex is invalid.'; - if(!in_array($newchar_town, $config['character_towns'])) - $errors[] = 'Please select valid town.'; - if(count($config['character_samples']) > 1) - { - $newchar_vocation_check = false; - foreach($config['character_samples'] as $char_vocation_key => $sample_char) - if($newchar_vocation == $char_vocation_key) - $newchar_vocation_check = true; - if(!$newchar_vocation_check) - $errors[] = 'Unknown vocation. Please fill in form again.'; - } - else - $newchar_vocation = 0; - } - - if(empty($errors)) - { - $number_of_players_on_account = $account_logged->getPlayersList()->count(); - if($number_of_players_on_account >= $config['characters_per_account']) - $errors[] = 'You have too many characters on your account ('.$number_of_players_on_account.'/'.$config['characters_per_account'].')!'; - } - - if(empty($errors)) - { - $char_to_copy_name = $config['character_samples'][$newchar_vocation]; - $char_to_copy = new OTS_Player(); - $char_to_copy->find($char_to_copy_name); - if(!$char_to_copy->isLoaded()) - $errors[] = 'Wrong characters configuration. Try again or contact with admin. ADMIN: Edit file config/config.php and set valid characters to copy names. Character to copy: '.$char_to_copy_name.' doesn\'t exist.'; - } - - if(empty($errors)) - { - if($newchar_sex == "0") - $char_to_copy->setLookType(136); - - $player = new OTS_Player(); - $player->setName($newchar_name); - $player->setAccount($account_logged); - //$player->setGroupId($char_to_copy->getGroup()->getId()); - $player->setGroupId(1); - $player->setSex($newchar_sex); - $player->setVocation($char_to_copy->getVocation()); - if($db->hasColumn('players', 'promotion')) - $player->setPromotion($char_to_copy->getPromotion()); - - if($db->hasColumn('players', 'direction')) - $player->setDirection($char_to_copy->getDirection()); - - $player->setConditions($char_to_copy->getConditions()); - $rank = $char_to_copy->getRank(); - if($rank->isLoaded()) { - $player->setRank($char_to_copy->getRank()); - } - - if($db->hasColumn('players', 'lookaddons')) - $player->setLookAddons($char_to_copy->getLookAddons()); - - $player->setTownId($newchar_town); - $player->setExperience($char_to_copy->getExperience()); - $player->setLevel($char_to_copy->getLevel()); - $player->setMagLevel($char_to_copy->getMagLevel()); - $player->setHealth($char_to_copy->getHealth()); - $player->setHealthMax($char_to_copy->getHealthMax()); - $player->setMana($char_to_copy->getMana()); - $player->setManaMax($char_to_copy->getManaMax()); - $player->setManaSpent($char_to_copy->getManaSpent()); - $player->setSoul($char_to_copy->getSoul()); - - for($skill = POT::SKILL_FIRST; $skill <= POT::SKILL_LAST; $skill++) - $player->setSkill($skill, 10); - - $player->setLookBody($char_to_copy->getLookBody()); - $player->setLookFeet($char_to_copy->getLookFeet()); - $player->setLookHead($char_to_copy->getLookHead()); - $player->setLookLegs($char_to_copy->getLookLegs()); - $player->setLookType($char_to_copy->getLookType()); - $player->setCap($char_to_copy->getCap()); - $player->setBalance(0); - $player->setPosX(0); - $player->setPosY(0); - $player->setPosZ(0); - - if($db->hasColumn('players', 'stamina')) { - $player->setStamina($char_to_copy->getStamina()); - } - - if($db->hasColumn('players', 'loss_experience')) { - $player->setLossExperience($char_to_copy->getLossExperience()); - $player->setLossMana($char_to_copy->getLossMana()); - $player->setLossSkills($char_to_copy->getLossSkills()); - } - if($db->hasColumn('players', 'loss_items')) { - $player->setLossItems($char_to_copy->getLossItems()); - $player->setLossContainers($char_to_copy->getLossContainers()); - } - - $player->save(); - $player->setCustomField("created", time()); - - $newchar_created = true; - $account_logged->logAction('Created character ' . $player->getName() . '.'); - unset($player); - - $player = new OTS_Player(); - $player->find($newchar_name); - - if($player->isLoaded()) { - if($db->hasTable('player_skills')) { - for($i=0; $i<7; $i++) { - $skillExists = $db->query('SELECT `skillid` FROM `player_skills` WHERE `player_id` = ' . $player->getId() . ' AND `skillid` = ' . $i); - if($skillExists->rowCount() <= 0) { - $db->query('INSERT INTO `player_skills` (`player_id`, `skillid`, `value`, `count`) VALUES ('.$player->getId().', '.$i.', 10, 0)'); - } - } - } - - $loaded_items_to_copy = $db->query("SELECT * FROM player_items WHERE player_id = ".$char_to_copy->getId().""); - foreach($loaded_items_to_copy as $save_item) - $db->query("INSERT INTO `player_items` (`player_id` ,`pid` ,`sid` ,`itemtype`, `count`, `attributes`) VALUES ('".$player->getId()."', '".$save_item['pid']."', '".$save_item['sid']."', '".$save_item['itemtype']."', '".$save_item['count']."', '".$save_item['attributes']."');"); - - $twig->display('success.html.twig', array( - 'title' => 'Character Created', - 'description' => 'The character ' . $newchar_name . ' has been created.
- Please select the outfit when you log in for the first time.

- See you on ' . $config['lua']['serverName'] . '!' - )); - } - else - { - error("Error. Can't create character. Probably problem with database. Please try again later or contact with admin."); - return; - } - } + $character_created = $createCharacter->doCreate($character_name, $character_sex, $character_vocation, $character_town, $account_logged, $errors); } if(count($errors) > 0) { $twig->display('error_box.html.twig', array('errors' => $errors)); } -if(!$newchar_created) { +if(!$character_created) { $twig->display('account.create_character.html.twig', array( - 'name' => $newchar_name, - 'sex' => $newchar_sex, - 'vocation' => $newchar_vocation, - 'town' => $newchar_town, + 'name' => $character_name, + 'sex' => $character_sex, + 'vocation' => $character_vocation, + 'town' => $character_town, 'save' => $save, 'errors' => $errors )); -} -?> \ No newline at end of file +} \ No newline at end of file diff --git a/system/pages/createaccount.php b/system/pages/createaccount.php index 1ed7050b..a2e8c464 100644 --- a/system/pages/createaccount.php +++ b/system/pages/createaccount.php @@ -20,6 +20,16 @@ if($logged) return; } +if(config('account_create_character_create')) { + require_once LIBS . 'CreateCharacter.php'; + $createCharacter = new CreateCharacter(); +} + +$account_type = 'number'; +if(USE_ACCOUNT_NAME) { + $account_type = 'name'; +} + $errors = array(); $save = isset($_POST['save']) && $_POST['save'] == 1; if($save) @@ -27,8 +37,9 @@ if($save) if(USE_ACCOUNT_NAME) { $account_name = $_POST['account']; } - else + else { $account_id = $_POST['account']; + } $email = $_POST['email']; $password = $_POST['password']; @@ -86,33 +97,39 @@ if($save) $errors['password'] = 'Password may not be the same as account name.'; } - if(empty($errors)) + if($config['account_mail_unique']) { - if($config['account_mail_unique']) - { - $test_email_account = new OTS_Account(); - $test_email_account->findByEMail($email); - if($test_email_account->isLoaded()) - $errors['email'] = 'Account with this e-mail address already exist.'; - } - - $account_db = new OTS_Account(); - if(USE_ACCOUNT_NAME) - $account_db->find($account_name); - else - $account_db->load($account_id); - - if($account_db->isLoaded()) { - if(USE_ACCOUNT_NAME) - $errors['account'] = 'Account with this name already exist.'; - else - $errors['account'] = 'Account with this id already exist.'; - } + $test_email_account = new OTS_Account(); + $test_email_account->findByEMail($email); + if($test_email_account->isLoaded()) + $errors['email'] = 'Account with this e-mail address already exist.'; } - if(!isset($_POST['accept_rules']) || $_POST['accept_rules'] != 'true') + $account_db = new OTS_Account(); + if(USE_ACCOUNT_NAME) + $account_db->find($account_name); + else + $account_db->load($account_id); + + if($account_db->isLoaded()) { + if(USE_ACCOUNT_NAME) + $errors['account'] = 'Account with this name already exist.'; + else + $errors['account'] = 'Account with this id already exist.'; + } + + if(!isset($_POST['accept_rules']) || $_POST['accept_rules'] !== 'true') $errors['accept_rules'] = 'You have to agree to the ' . $config['lua']['serverName'] . ' Rules in order to create an account!'; + if(config('account_create_character_create')) { + $character_name = isset($_POST['name']) ? stripslashes(ucwords(strtolower($_POST['name']))) : null; + $character_sex = isset($_POST['sex']) ? (int)$_POST['sex'] : null; + $character_vocation = isset($_POST['vocation']) ? (int)$_POST['vocation'] : null; + $character_town = isset($_POST['town']) ? (int)$_POST['town'] : null; + + $createCharacter->check($character_name, $character_sex, $character_vocation, $character_town, $errors); + } + if(empty($errors)) { $new_account = new OTS_Account(); @@ -171,8 +188,13 @@ if($save) if(_mail($email, 'New account on ' . $config['lua']['serverName'], $body_html)) { - $twig->display('account.created.verify.html.twig', array( - 'account' => $tmp_account + echo 'Your account has been created.

'; + $twig->display('success.html.twig', array( + 'title' => 'Account Created', + 'description' => 'Your account ' . $account_type . ' is ' . $tmp_account . '
You will need the account ' . $account_type . ' and your password to play on ' . configLua('serverName') . '. + Please keep your account ' . $account_type . ' and password in a safe place and + never give your account ' . $account_type . ' or password to anybody.', + 'custom_buttons' => config('account_create_character_create') ? '' : null )); } else @@ -192,8 +214,26 @@ if($save) header('Location: ' . getLink('account/manage')); } - $twig->display('account.created.html.twig', array( - 'account' => $tmp_account + echo 'Your account'; + if(config('account_create_character_create')) { + echo ' and character have'; + } + else { + echo ' has'; + } + + echo ' been created.'; + if(!config('account_create_character_create')) { + echo ' Now you can login and create your first character.'; + } + + echo ' See you in Tibia!

'; + $twig->display('success.html.twig', array( + 'title' => 'Account Created', + 'description' => 'Your account ' . $account_type . ' is ' . $tmp_account . '
You will need the account ' . $account_type . ' and your password to play on ' . configLua('serverName') . '. + Please keep your account ' . $account_type . ' and password in a safe place and + never give your account ' . $account_type . ' or password to anybody.', + 'custom_buttons' => config('account_create_character_create') ? '' : null )); if($config['mail_enabled'] && $config['account_welcome_mail']) @@ -209,6 +249,14 @@ if($save) log_append('error.log', '[createaccount.php] An error occorred while sending email: ' . $mailer->ErrorInfo . '. Error: ' . print_r(error_get_last(), true)); } } + + if(config('account_create_character_create')) { + // character creation + $character_created = $createCharacter->doCreate($character_name, $character_sex, $character_vocation, $character_town, $new_account, $errors); + if (!$character_created) { + error('There was an error creating your character. Please create your character later in account management page.'); + } + } } return; @@ -244,7 +292,8 @@ if($config['account_country']) { } $twig->display('account.create.js.html.twig'); -$twig->display('account.create.html.twig', array( + +$params = array( 'account' => isset($_POST['account']) ? $_POST['account'] : '', 'email' => isset($_POST['email']) ? $_POST['email'] : '', 'countries' => isset($countries) ? $countries : null, @@ -253,5 +302,15 @@ $twig->display('account.create.html.twig', array( 'country' => isset($country) ? $country : null, 'errors' => $errors, 'save' => $save -)); -?> \ No newline at end of file +); + +if($save && config('account_create_character_create')) { + $params = array_merge($params, array( + 'name' => $character_name, + 'sex' => $character_sex, + 'vocation' => $character_vocation, + 'town' => $character_town + )); +} + +$twig->display('account.create.html.twig', $params); \ No newline at end of file diff --git a/system/templates/account.change_name.html.twig b/system/templates/account.change_name.html.twig index 2438ae2f..255689e3 100644 --- a/system/templates/account.change_name.html.twig +++ b/system/templates/account.change_name.html.twig @@ -73,4 +73,5 @@ To change a name of character select player and choose a new name.
- \ No newline at end of file + + \ No newline at end of file diff --git a/system/templates/account.create.html.twig b/system/templates/account.create.html.twig index f2053ea9..21f04e8d 100644 --- a/system/templates/account.create.html.twig +++ b/system/templates/account.create.html.twig @@ -3,7 +3,7 @@ All you have to do to create your new account is to enter an account {% if const Also you have to agree to the terms presented below. If you have done so, your account {% if constant('USE_ACCOUNT_NAME') %}name{% else %}number{% endif %} will be shown on the following page and your account password will be sent to your email address along with further instructions. If you do not receive the email with your password, please check your spam filter.

- +
@@ -22,94 +22,250 @@ Also you have to agree to the terms presented below. If you have done so, your a
- - + {% if (not config.mail_enabled or not config.account_mail_verify) and config.account_create_character_create %} - - - - - {% if config.account_country %} - - - - {% if errors.country is defined %} - - {% endif %} - {% endif %} - - - - - - - - - - - {% if config.recaptcha_enabled %} - - - - - {% if errors.verification is defined %} - - {% endif %} - {% endif %} - - - - - - - - - - {% if errors.accept_rules is defined %} - - {% endif %} + + +
- Account {% if constant('USE_ACCOUNT_NAME') %}Name{% else %}Number{% endif %}: - - - +
+
+
+ + + + + + + + + + + + + {% if config.account_country %} + + + + + {% if errors.country is defined %} + + {% endif %} + {% endif %} + + + + + + + + + + + {% if config.recaptcha_enabled %} + + + + + {% if errors.verification is defined %} + + {% endif %} + {% endif %} + +
+ Account {% if constant('USE_ACCOUNT_NAME') %}Name{% else %}Number{% endif %}: + + + +
{% if errors.account is defined %}{{ errors.account }}{% endif %}
+ Email Address: + + + +
{% if errors.email is defined %}{{ errors.email }}{% endif %}
+ Country: + + + +
{{ errors.country }}
+ Password: + + + +
{% if errors.password is defined %}{{ errors.password }}{% endif %}
+ Repeat password: + + + +
{% if errors.password is defined %}{{ errors.password }}{% endif %}
+ Verification: + +
+
{{ errors.verification }}
+
+
+
+
{% if errors.account is defined %}{{ errors.account }}{% endif %}
- Email Address: - - - -
{% if errors.email is defined %}{{ errors.email }}{% endif %}
- Country: - - - -
{{ errors.country }}
- Password: - - - -
{% if errors.password is defined %}{{ errors.password }}{% endif %}
- Repeat password: - - - -
{% if errors.password is defined %}{{ errors.password }}{% endif %}
- Verification: - -
-
{{ errors.verification }}

Please select all of the following check boxes:
- -
- {{ errors.accept_rules }} +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + {% if config.character_samples|length > 1 %} + + + + + + + + + {% endif %} + {% if config.character_towns|length > 1 %} + + + + + {% endif %} + +
+ Character Name: + + + +
+
+ {% if errors.name is defined %}{{ errors.name }}{% endif %} +
+ Sex: + + + + + + + + +
+ {% set i = 0 %} + {% for id, gender in config.genders|reverse(true) %} + {% set i = i + 1 %} + + + + + {% endfor %} + +
+
+ {% if errors.sex is defined %}{{ errors.sex }}{% endif %} +
+ Vocation: + + + + + + + +
+ {% for key, sample_char in config.character_samples %} + + + + + {% endfor %} +
+
+ {% if errors.vocation is defined %}{{ errors.vocation }}{% endif %} +
+ Select your city: + + + + + + + +
+ {% for town_id in config.character_towns %} + + + + + {% endfor %} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + {% if errors.accept_rules is defined %} + + + + {% endif %} + +
Please select the following check box:
+ +
+ {{ errors.accept_rules }} +
+
+
+
+
+
+
+
@@ -131,4 +287,5 @@ Also you have to agree to the terms presented below. If you have done so, your a -
\ No newline at end of file + + \ No newline at end of file diff --git a/system/templates/account.create_character.html.twig b/system/templates/account.create_character.html.twig index db8b2d19..f8796a94 100644 --- a/system/templates/account.create_character.html.twig +++ b/system/templates/account.create_character.html.twig @@ -144,4 +144,5 @@ In any case the name must not violate the naming conventions stated in the - \ No newline at end of file + + \ No newline at end of file diff --git a/system/templates/account.created.html.twig b/system/templates/account.created.html.twig deleted file mode 100644 index 7abffef5..00000000 --- a/system/templates/account.created.html.twig +++ /dev/null @@ -1,25 +0,0 @@ -Your account has been created. Now you can login and create your first character. See you in Tibia!

- - - - - - - -
Account Created
- - - - -
- {% if constant('USE_ACCOUNT_NAME') %} - {% set account_type = 'name' %} - {% else %} - {% set account_type = 'number' %} - {% endif %} -
Your account {{ account_type }} is {{ account }}
You will need the account {{ account_type }} and your password to play on {{ config.lua.serverName }}. - Please keep your account {{ account_type }} and password in a safe place and - never give your account {{ account_type }} or password to anybody.

-
-
-

\ No newline at end of file diff --git a/system/templates/account.created.verify.html.twig b/system/templates/account.created.verify.html.twig deleted file mode 100644 index 657f55ea..00000000 --- a/system/templates/account.created.verify.html.twig +++ /dev/null @@ -1,27 +0,0 @@ -Your account has been created.

- - - - - - - -
Account Created
- - - - -
- {% if constant('USE_ACCOUNT_NAME') %} - {% set account_type = 'name' %} - {% else %} - {% set account_type = 'number' %} - {% endif %} -
Your account {{ account_type }} is {{ account }}. - - You will need the account {{ account_type }} and your password to play on {{ config.lua.serverName }}. - Please keep your account {{ account_type }} and password in a safe place and - never give your account {{ account_type }} or password to anybody.

-
-
-

\ No newline at end of file