From 4eb4d29a5bc0e9bf69fabd6964b7b11e088d1365 Mon Sep 17 00:00:00 2001 From: Sky Johnson Date: Tue, 2 Jul 2024 10:04:20 -0500 Subject: [PATCH] Finish install 2 --- public/install/index.php | 95 +++++++++++++++++++---------- server/bootstrap.php | 2 +- server/database/dragon.db-shm | Bin 32768 -> 32768 bytes server/database/dragon.db-wal | Bin 65952 -> 185432 bytes server/{lib.php => library.php} | 62 ++++++++++++------- server/templates/install/done.php | 5 +- server/templates/install/first.php | 2 +- 7 files changed, 107 insertions(+), 59 deletions(-) rename server/{lib.php => library.php} (91%) diff --git a/public/install/index.php b/public/install/index.php index 5cfe0d6..1fe0053 100644 --- a/public/install/index.php +++ b/public/install/index.php @@ -34,9 +34,6 @@ if ($step == 'second') { "admin_email TEXT DEFAULT ''", 'forum_type INTEGER DEFAULT 1', "forum_addr TEXT DEFAULT ''", - "class_1_name TEXT DEFAULT 'Mage'", - "class_2_name TEXT DEFAULT 'Warrior'", - "class_3_name TEXT DEFAULT 'Paladin'", 'verify_email INTEGER DEFAULT 1', 'show_news INTEGER DEFAULT 1', 'show_online INTEGER DEFAULT 1', @@ -46,6 +43,37 @@ if ($step == 'second') { // Insert default control row $db->insertDefaultValues(); + // Create classes table + $db->table('classes')->create([ + 'id INTEGER PRIMARY KEY', + 'name TEXT NOT NULL', + 'start_hp INTEGER DEFAULT 0', + 'start_mp INTEGER DEFAULT 0', + 'start_str INTEGER DEFAULT 0', + 'start_atk INTEGER DEFAULT 0', + 'start_def INTEGER DEFAULT 0', + 'start_dex INTEGER DEFAULT 0', + 'growth_hp INTEGER DEFAULT 0', + 'growth_mp INTEGER DEFAULT 0', + 'growth_str INTEGER DEFAULT 0', + 'growth_atk INTEGER DEFAULT 0', + 'growth_def INTEGER DEFAULT 0', + 'growth_dex INTEGER DEFAULT 0', + "spells TEXT DEFAULT ''" + ]); + + // Add default classes if complete install + if ($complete) { + $db->insert([ + ['name' => 'Mage', 'start_hp' => 10, 'start_mp' => 10, 'start_str' => 5, 'start_atk' => 5, 'start_def' => 5, 'start_dex' => 5, 'growth_hp' => 3, 'growth_mp' => 5, 'growth_str' => 1, 'growth_atk' => 3, 'growth_def' => 1, 'growth_dex' => 3, 'spells' => '1:6,18'], + ['name' => 'Warrior', 'start_hp' => 20, 'start_mp' => 0, 'start_str' => 10, 'start_atk' => 5, 'start_def' => 10, 'start_dex' => 5, 'growth_hp' => 6, 'growth_mp' => 2, 'growth_str' => 3, 'growth_atk' => 1, 'growth_def' => 3, 'growth_dex' => 1, 'spells' => ''], + ['name' => 'Paladin', 'start_hp' => 15, 'start_mp' => 5, 'start_str' => 5, 'start_atk' => 5, 'start_def' => 10, 'start_dex' => 10, 'growth_hp' => 4, 'growth_mp' => 4, 'growth_str' => 2, 'growth_atk' => 2, 'growth_def' => 2, 'growth_dex' => 2, 'spells' => '1:1,15,18'] + ]); + } else { + // There must be at least one class, for user creation to work + $db->insert(['name' => 'Adventurer']); + } + // Create Babble table $db->table('babble')->create([ 'id INTEGER PRIMARY KEY', @@ -374,34 +402,34 @@ if ($step == 'second') { if ($complete) { $db->table('spells')->insert([ // Type 1 = healing - ['name' => 'Heal', 'type' => 1, 'mp' => 5, 'effect' => 'heal:self,10', 'icon' => 'heal.png' ], - ['name' => 'Cure', 'type' => 1, 'mp' => 10, 'effect' => 'heal:self,25', 'icon' => 'cure.png' ], - ['name' => 'Breath', 'type' => 1, 'mp' => 25, 'effect' => 'heal:self,50', 'icon' => 'breath.png'], - ['name' => 'Revive', 'type' => 1, 'mp' => 50, 'effect' => 'heal:self,100', 'icon' => 'revive.png'], - ['name' => 'Gaia', 'type' => 1, 'mp' => 75, 'effect' => 'heal:self,150', 'icon' => 'gaia.png' ], + ['name' => 'Heal', 'type' => 1, 'mp' => 5, 'effect' => 'heal:self,10', 'icon' => 'heal.png' ], // 1 + ['name' => 'Cure', 'type' => 1, 'mp' => 10, 'effect' => 'heal:self,25', 'icon' => 'cure.png' ], // 2 + ['name' => 'Breath', 'type' => 1, 'mp' => 25, 'effect' => 'heal:self,50', 'icon' => 'breath.png'], // 3 + ['name' => 'Revive', 'type' => 1, 'mp' => 50, 'effect' => 'heal:self,100', 'icon' => 'revive.png'], // 4 + ['name' => 'Gaia', 'type' => 1, 'mp' => 75, 'effect' => 'heal:self,150', 'icon' => 'gaia.png' ], // 5 // Type 2 = damage - ['name' => 'Slash', 'type' => 2, 'mp' => 5, 'effect' => 'damage:opp,10', 'icon' => 'slash.png' ], - ['name' => 'Magic Missile', 'type' => 2, 'mp' => 12, 'effect' => 'damage:opp,35', 'icon' => 'missile.png' ], - ['name' => 'Fireball', 'type' => 2, 'mp' => 25, 'effect' => 'damage:opp,70', 'icon' => 'fireball.png' ], - ['name' => 'Pain', 'type' => 2, 'mp' => 40, 'effect' => 'damage:opp,100', 'icon' => 'pain.png' ], - ['name' => 'Lightning', 'type' => 2, 'mp' => 50, 'effect' => 'damage:opp,130', 'icon' => 'lightning.png'], - ['name' => 'Chaos', 'type' => 2, 'mp' => 75, 'effect' => 'damage:opp,200', 'icon' => 'chaos.png' ], + ['name' => 'Slash', 'type' => 2, 'mp' => 5, 'effect' => 'damage:opp,10', 'icon' => 'slash.png' ], // 6 + ['name' => 'Magic Missile', 'type' => 2, 'mp' => 12, 'effect' => 'damage:opp,35', 'icon' => 'missile.png' ], // 7 + ['name' => 'Fireball', 'type' => 2, 'mp' => 25, 'effect' => 'damage:opp,70', 'icon' => 'fireball.png' ], // 8 + ['name' => 'Pain', 'type' => 2, 'mp' => 40, 'effect' => 'damage:opp,100', 'icon' => 'pain.png' ], // 9 + ['name' => 'Lightning', 'type' => 2, 'mp' => 50, 'effect' => 'damage:opp,130', 'icon' => 'lightning.png'], // 10 + ['name' => 'Chaos', 'type' => 2, 'mp' => 75, 'effect' => 'damage:opp,200', 'icon' => 'chaos.png' ], // 11 // Type 3 = sleep - ['name' => 'Sleep', 'type' => 3, 'mp' => 10, 'effect' => 'sleep:opp,3', 'icon' => 'sleep.png' ], - ['name' => 'Dream', 'type' => 3, 'mp' => 30, 'effect' => 'sleep:opp,6', 'icon' => 'dream.png' ], - ['name' => 'Nightmare', 'type' => 3, 'mp' => 60, 'effect' => 'sleep:opp,13', 'icon' => 'nightmare.png'], + ['name' => 'Sleep', 'type' => 3, 'mp' => 10, 'effect' => 'sleep:opp,3', 'icon' => 'sleep.png' ], // 12 + ['name' => 'Dream', 'type' => 3, 'mp' => 30, 'effect' => 'sleep:opp,6', 'icon' => 'dream.png' ], // 13 + ['name' => 'Nightmare', 'type' => 3, 'mp' => 60, 'effect' => 'sleep:opp,13', 'icon' => 'nightmare.png'], // 14 // Type 4 = rage - ['name' => 'Craze', 'type' => 4, 'mp' => 10, 'effect' => 'rage:self,3', 'icon' => 'craze.png'], - ['name' => 'Rage', 'type' => 4, 'mp' => 30, 'effect' => 'rage:self,6', 'icon' => 'rage.png' ], - ['name' => 'Fury', 'type' => 4, 'mp' => 60, 'effect' => 'rage:self,13', 'icon' => 'fury.png' ], + ['name' => 'Craze', 'type' => 4, 'mp' => 10, 'effect' => 'rage:self,3', 'icon' => 'craze.png'], // 15 + ['name' => 'Rage', 'type' => 4, 'mp' => 30, 'effect' => 'rage:self,6', 'icon' => 'rage.png' ], // 16 + ['name' => 'Fury', 'type' => 4, 'mp' => 60, 'effect' => 'rage:self,13', 'icon' => 'fury.png' ], // 17 // Type 5 = protect - ['name' => 'Ward', 'type' => 5, 'mp' => 10, 'effect' => 'protect:self,3', 'icon' => 'ward.png' ], - ['name' => 'Guard', 'type' => 5, 'mp' => 30, 'effect' => 'protect:self,6', 'icon' => 'guard.png' ], - ['name' => 'Barrier', 'type' => 5, 'mp' => 60, 'effect' => 'protect:self,13', 'icon' => 'barrier.png'], + ['name' => 'Ward', 'type' => 5, 'mp' => 10, 'effect' => 'protect:self,3', 'icon' => 'ward.png' ], // 18 + ['name' => 'Guard', 'type' => 5, 'mp' => 30, 'effect' => 'protect:self,6', 'icon' => 'guard.png' ], // 19 + ['name' => 'Barrier', 'type' => 5, 'mp' => 60, 'effect' => 'protect:self,13', 'icon' => 'barrier.png'] // 20 ]); } @@ -443,10 +471,11 @@ if ($step == 'second') { 'last_online DATETIME DEFAULT CURRENT_TIMESTAMP', 'currently INTEGER DEFAULT 0', 'role INTEGER DEFAULT 1', - 'class INTEGER DEFAULT 1', + 'class_id INTEGER DEFAULT 1', 'level INTEGER DEFAULT 1', 'exp INTEGER DEFAULT 0', 'gold INTEGER DEFAULT 0', + 'stat_points INTEGER DEFAULT 0', 'hp INTEGER DEFAULT 0', 'max_hp INTEGER DEFAULT 0', 'mp INTEGER DEFAULT 0', @@ -493,6 +522,7 @@ if ($step == 'second') { if ($step == 'third') { $errors = []; + // Make sure our info is at least mostly valid if (!required(['username', 'password', 'email'])) { $errors[] = 'All fields are required.'; } else { @@ -505,21 +535,22 @@ if ($step == 'third') { } } - $class = isset($_POST['class']) && in_array($_POST['class'], [1, 2, 3]) ? $_POST['class'] : 0; + // Make sure the class selection is valid + $class = isset($_POST['class']) && in_array($_POST['class'], [1, 2, 3]) ? $_POST['class'] : 1; + // If we have any errors, bail to the form and let the user know if (!empty($errors)) { echo render('install/layout', ['title' => 'Admin Account', 'step' => 'third', 'errors' => $errors, 'complete' => $_POST['complete'] ?? false]); exit; } - $db->table('players')->insert([ - 'username' => trim($_POST['username']), - 'password' => password_hash($_POST['password'], PASSWORD_ARGON2ID), - 'email' => trim($_POST['email']), - 'class' => $class, - 'role' => 5 - ]); + // Create the .installed file in the server folder + file_put_contents(SERVER.'/.installed', 'Installed on '.date('Y-m-d H:i:s')); + // Create the admin account + createUser($_POST['username'], $_POST['password'], $_POST['email'], $class, ['role' => 5, 'verified' => 1]); + + // Render the finished page! echo render('install/layout', ['title' => 'Finished!', 'step' => 'done', 'name' => $_POST['username'], 'complete' => $_POST['complete'] ?? false]); exit; } diff --git a/server/bootstrap.php b/server/bootstrap.php index 8b54b52..4a94dcc 100644 --- a/server/bootstrap.php +++ b/server/bootstrap.php @@ -11,5 +11,5 @@ const VERSION = '1.1.11'; const BUILD = ''; const DB = SERVER.'/database/dragon.db'; -require_once SERVER.'/lib.php'; +require_once SERVER.'/library.php'; require_once SERVER.'/database.php'; \ No newline at end of file diff --git a/server/database/dragon.db-shm b/server/database/dragon.db-shm index b38007b0d758f3e774fe4c808295df7d98ddabbd..a9352cbc4a7d6e25b7418d072ceef09178baa9dc 100644 GIT binary patch delta 394 zcmZo@U}|V!s+V}A%K!orK+MR%AOPZl@E$*&jQsZpZ0s8Ti8mgbXz^FSr4bb#c4BmfnjSnrw21Y`rPW{?A7O(<4_im?G{B_P&<^4Wp3IuL6EF~~>_AXWup z86XCk1JV!Di>w}`PIu$ZT6;#hjTeKNCjWC{V;5o&XOL!4pLlUDvpj?5#*2YWtc(nT z49XKPE@jjLa#=V3@czTfD6#S4Wkyy3pc8aAUQ}gdE0t1k_|B(Pxcw)WhW*f#l`^^E2CzvMxb7I@<#Q1}Wk#Vyl<8Ri@KfM320%fi+ vG710%G#ME=fYf>R&4*(CZ~ztlVcNVa;~y)S#mEYj`pd+~1)=zWls^Xm6Yfbf diff --git a/server/database/dragon.db-wal b/server/database/dragon.db-wal index 4e119a0e3b19ec638eeaf0c4e5a2c01aab19af23..5680f1a6f133b9d341efb7fd14a42538b4da4ccd 100644 GIT binary patch delta 9445 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 z zWFGUhWG?fxq=b1|GRMy`&hzuMq?mbHGMjl?GRrTT8$2y3VxE@FWS*AH@T+%&rzM5V z(~<(+(~{}T(~^AVX-OXQv}79dv}7vtv?P~#T9V@zp}(gkQ<$eE+287EiHmt!;$)td zWcisIe@{y?nWrTg%+r!|=4r{~3BUGLPfOC6rzNS((~=bCX-P8kv?PgnT9U{-ElHSY zR#4}Gz;xtc7VwtBU4!;QfJuQi0o|eFn{Weca!1^<5|20obBAKTp;Qhbd(~=10 zX-PQqw8Y>3`+HhqW1g0TGEYlF{N&x}X-P2iv}6+Vv?PdmS`z4|&)?IM0Oo0l$~-Mm zn5QK&^Rz_r6a5uWOGH0SU-Ps?V4jxn%+nI9-_89!EwM09OU%sE5)*jZh#Ue0;2U8q z;U-Sp2xAFmFqR+&V~GJ$^NldpJEXzbNH6e!Z-lY`ODgM zv`IHvIA;L%eOA3s9bo)7Souh~pd43jQW}+FaPgnYuL1czD0j-`u=*&#eP58iC+(3M zfci#=e-i&$d_+7Xc8W{HR8fRg=iI2fUEpGT!OZacCNabB3u1=f7sw31FMt_-pUMos zPhp1NCo{wElbGT6iOlf(1ZMbsJTv@0D>M8)3p4yaGc)`?6EpliBN%=M_Hm5k`Y_|T zKEyb#&%ih?f$jm0OLj1hOSWsh{cRkV3^I;OwlR)Nwla=O1{lXBTNuYB{fy(1&5Yxc zKE`oLFXOnRhjCoe%{VUUVjP!rGLB0+7{?{;z;W$E&;=TynCKh)j^k(dl*SEfeUrxb z{Z)iQYLga9@#5#uC#T>C)(SCQ_(J%Fa1!u)oiGi4V7vX8GR)-pH1~nRV zsIf+e8mo1vQLjUd|6^ojqDwB-JbjpK4_m2qNrX_Rkrl^R$%^KSRNW2B{)k(L@pTBE0%6pKfkzSL+6T?DRZ0q6LNF5^i);1l{MvL z&C6d_yf)j_le^ftabxfD9%tv&asgFA`}$~C??zWH9C{+GW{(n G(7yxkz_5w{ delta 11 Scmcbyf_p(TOT!k%1&jb6hXjcL diff --git a/server/lib.php b/server/library.php similarity index 91% rename from server/lib.php rename to server/library.php index dd66d9c..0d5c9a7 100644 --- a/server/lib.php +++ b/server/library.php @@ -1,33 +1,43 @@ -'; @@ -53,22 +68,23 @@ function dd(mixed $var, bool $r = false) exit; } +/** + * Creates a new user. Optionally pass an array of additional fields to add. Returns the user ID, or 0 if failed. + */ +function createUser(string $username, string $password, string $email, int $class = 1, array $addtl = []): int +{ + // @BAD Yes, this is bad, but it works. + global $db; -function gettemplate($templatename) { // SQL query for the template. + $data = [ + 'username' => trim($username), + 'password' => password_hash($password, PASSWORD_ARGON2ID), + 'email' => trim($email), + 'class_id' => $class + ]; - $filename = "templates/" . $templatename . ".php"; - include("$filename"); - return $template; - -} - -function parsetemplate($template, $array) { // Replace template with proper content. - - foreach($array as $a => $b) { - $template = str_replace("{{{$a}}}", $b, $template); - } - return $template; - + $db->table('players')->insert(array_merge($data, $addtl)); + return $db->lastInsertId(); } function getmicrotime() { // Used for timing script operations. diff --git a/server/templates/install/done.php b/server/templates/install/done.php index e0e5929..00184ab 100644 --- a/server/templates/install/done.php +++ b/server/templates/install/done.php @@ -1,7 +1,8 @@

Congratulations, ! Your installation is complete. Dragon Knight is ready to go. - All that's left is to log in and start playing. Once you've set the - classes in the admin panel, you can assign yourself one. + All that's left is to log in and start playing. Once you've logged in, + you can create some classes and assign your character one. By default you are a useless Adventurer. + 😜

diff --git a/server/templates/install/first.php b/server/templates/install/first.php index f2c654c..3fc8f3a 100644 --- a/server/templates/install/first.php +++ b/server/templates/install/first.php @@ -17,7 +17,7 @@

  • Partial Setup only creates the table structure, it does not populate the tables - use this if you are - going to be creating and importing your own customized + going to be creating or importing your own customized game data later.