diff --git a/system/libs/CreateCharacter.php b/system/libs/CreateCharacter.php
index 8a57d604..f2e7687e 100644
--- a/system/libs/CreateCharacter.php
+++ b/system/libs/CreateCharacter.php
@@ -35,6 +35,13 @@ class CreateCharacter
}
}
+ $player = new OTS_Player();
+ $player->find($name);
+ if($player->isLoaded()) {
+ $errors['name'] = 'Character with this name already exist.';
+ return false;
+ }
+
if(empty($sex) && $sex != "0")
$errors['sex'] = 'Please select the sex for your character!';
@@ -214,4 +221,4 @@ class CreateCharacter
$account->logAction('Created character ' . $name . '.');
return true;
}
-}
\ No newline at end of file
+}
diff --git a/system/libs/validator.php b/system/libs/validator.php
index 421d5fe6..484f1854 100644
--- a/system/libs/validator.php
+++ b/system/libs/validator.php
@@ -180,14 +180,17 @@ class Validator
return false;
}
+ $minLength = config('character_name_min_length');
+ $maxLength = config('character_name_max_length');
+
$length = strlen($name);
- if($length < 3)
+ if($length < $minLength)
{
self::$lastError = 'Character name is too short. Min. length 3 characters.';
return false;
}
- if($length > 25)
+ if($length > $maxLength)
{
self::$lastError = 'Character name is too long. Max. length 25 characters.';
return false;
@@ -201,7 +204,7 @@ class Validator
if(preg_match('/ {2,}/', $name))
{
- self::$lastError = 'Invalid character name format. Use only A-Z and numbers 0-9 and no double spaces.';
+ self::$lastError = 'Invalid character name format. Use only A-Z and no double spaces.';
return false;
}
@@ -289,13 +292,6 @@ class Validator
}
}
- $player = new OTS_Player();
- $player->find($name);
- if($player->isLoaded()) {
- self::$lastError = 'Character with this name already exist.';
- return false;
- }
-
//check if was namelocked previously
if($db->hasTable('player_namelocks') && $db->hasColumn('player_namelocks', 'name')) {
$namelock = $db->query('SELECT `player_id` FROM `player_namelocks` WHERE `name` = ' . $db->quote($name));
diff --git a/system/pages/account/create_character.php b/system/pages/account/create_character.php
index f3a82568..c25b8ea6 100644
--- a/system/pages/account/create_character.php
+++ b/system/pages/account/create_character.php
@@ -15,6 +15,10 @@ $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;
+if (!admin() && !empty($character_name)) {
+ $character_name = ucwords(strtolower($character_name));
+}
+
$character_created = false;
$save = isset($_POST['save']) && $_POST['save'] == 1;
$errors = array();
diff --git a/tools/validate.php b/tools/validate.php
index 48536c72..b805778e 100644
--- a/tools/validate.php
+++ b/tools/validate.php
@@ -13,6 +13,7 @@
require '../common.php';
require SYSTEM . 'functions.php';
require SYSTEM . 'init.php';
+require SYSTEM . 'login.php';
$error = '';
if(isset($_GET['account']))
@@ -54,14 +55,24 @@ else if(isset($_GET['email']))
}
else if(isset($_GET['name']))
{
- $name = strtolower(stripslashes($_GET['name']));
+ $name = $_GET['name'];
+ if(!admin()) {
+ $name = strtolower(stripslashes($name));
+ }
+
if(!Validator::characterName($name))
error_(Validator::getLastError());
- if(!Validator::newCharacterName($name))
+ if(!admin() && !Validator::newCharacterName($name))
error_(Validator::getLastError());
- success_('Good. Your name will be:
' . ucwords($name) . '');
+ $player = new OTS_Player();
+ $player->find($name);
+ if($player->isLoaded()) {
+ error_('Character with this name already exist.');
+ }
+
+ success_('Good. Your name will be:
' . (admin() ? $name : ucwords($name)) . '');
}
else if(isset($_GET['password']) && isset($_GET['password2'])) {
$password = $_GET['password'];