finish second step, move first step

This commit is contained in:
Sky Johnson 2025-05-10 18:19:06 -05:00
parent 9a00ba700a
commit 5cdaa45247
5 changed files with 155 additions and 134 deletions

Binary file not shown.

BIN
moonshark

Binary file not shown.

View File

@ -1,14 +0,0 @@
http.set_content_type("text/html")
return [[
<html>
<head>
<title>Dragon Knight Installation</title>
</head>
<body>
<b>Dragon Knight Installation: Page One</b><br><br>
Installation for Dragon Knight is a simple two-step process: set up the database tables, then create the admin user. After that, you're done.<br><br>
<a href="install.php?page=2"><button>Install</button></a>
</body>
</html>
]]

14
routes/install/get.lua Normal file
View File

@ -0,0 +1,14 @@
http.set_content_type("text/html")
return [[
<html>
<head>
<title>Dragon Knight Installation</title>
</head>
<body>
<h1>Dragon Knight Installation</h1>
<p>Installation for Dragon Knight is a simple two-step process: set up the database tables, then create the admin user. After that, you're done.</p>
<a href="/install/second"><button>Install</button></a>
</body>
</html>
]]

View File

@ -1,6 +1,8 @@
local start = microtime(true)
local db = sqlite("dk")
db:begin()
db:create_table("babble",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"posted TEXT NOT NULL DEFAULT '00:00:00'",
@ -24,6 +26,130 @@ db:create_table("control",
"show_online INTEGER NOT NULL DEFAULT 0"
)
db:create_table("drops",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"level INTEGER NOT NULL DEFAULT 0",
"type INTEGER NOT NULL DEFAULT 0",
"attribute_1 TEXT NOT NULL DEFAULT ''",
"attribute_2 TEXT NOT NULL DEFAULT ''"
)
db:create_table("forum",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"author INTEGER NOT NULL",
"parent INTEGER NOT NULL DEFAULT 0",
"replies INTEGER NOT NULL DEFAULT 0",
"title TEXT NOT NULL",
"content TEXT NOT NULL",
"posted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"latest DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP"
)
db:create_table("items",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"type INTEGER NOT NULL DEFAULT 0",
"name TEXT NOT NULL",
"value INTEGER NOT NULL DEFAULT 0",
"attribute INTEGER NOT NULL DEFAULT 0",
"special TEXT NOT NULL DEFAULT ''"
)
db:create_table("monsters",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"max_hp INTEGER NOT NULL DEFAULT 1",
"max_dmg INTEGER NOT NULL DEFAULT 0",
"armor INTEGER NOT NULL DEFAULT 0",
"level INTEGER NOT NULL DEFAULT 0",
"max_exp INTEGER NOT NULL DEFAULT 0",
"max_gold INTEGER NOT NULL DEFAULT 0",
"immune INTEGER NOT NULL DEFAULT 0"
)
db:create_table("news",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"author TEXT NOT NULL DEFAULT 'Guild Master'",
"postdate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"content TEXT NOT NULL"
)
db:create_table("spells",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"mp INTEGER NOT NULL DEFAULT 0",
"power INTEGER NOT NULL DEFAULT 0",
"type INTEGER NOT NULL DEFAULT 0"
)
db:create_table("towns",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"lat INTEGER NOT NULL DEFAULT 0",
"lon INTEGER NOT NULL DEFAULT 0",
"inn_price INTEGER NOT NULL DEFAULT 0",
"map_price INTEGER NOT NULL DEFAULT 0",
"tp_cost INTEGER NOT NULL DEFAULT 0",
"items TEXT NOT NULL"
)
db:create_table("users",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"username TEXT NOT NULL",
"password TEXT NOT NULL",
"email TEXT NOT NULL",
"verified INTEGER NOT NULL DEFAULT 0",
"verify_token TEXT NOT NULL DEFAULT ''",
"registered DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"last_login DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"auth INTEGER NOT NULL DEFAULT 0",
"lat INTEGER NOT NULL DEFAULT 0",
"lon INTEGER NOT NULL DEFAULT 0",
"class_id INTEGER NOT NULL DEFAULT 1",
"currently TEXT NOT NULL DEFAULT 'In Town'",
"fighting INTEGER NOT NULL default 0",
"monster_id INTEGER NOT NULL default 0",
"monster_hp INTEGER NOT NULL default 0",
"monster_sleep INTEGER NOT NULL default 0",
"monster_immune INTEGER NOT NULL default 0",
"uber_dmg INTEGER NOT NULL default 0",
"uber_def INTEGER NOT NULL default 0",
"hp INTEGER NOT NULL default 15",
"mp INTEGER NOT NULL default 0",
"tp INTEGER NOT NULL default 10",
"max_hp INTEGER NOT NULL default 15",
"max_mp INTEGER NOT NULL default 0",
"max_tp INTEGER NOT NULL default 10",
"level INTEGER NOT NULL default 1",
"gold INTEGER NOT NULL default 100",
"exp INTEGER NOT NULL default 0",
"gold_bonus INTEGER NOT NULL default 0",
"exp_bonus INTEGER NOT NULL default 0",
"strength INTEGER NOT NULL default 5",
"dexterity INTEGER NOT NULL default 5",
"attack INTEGER NOT NULL default 5",
"defense INTEGER NOT NULL default 5",
"weapon_id INTEGER NOT NULL default 0",
"armor_id INTEGER NOT NULL default 0",
"shield_id INTEGER NOT NULL default 0",
"slot_1_id INTEGER NOT NULL default 0",
"slot_2_id INTEGER NOT NULL default 0",
"slot_3_id INTEGER NOT NULL default 0",
"weapon_name TEXT NOT NULL default 'None'",
"armor_name TEXT NOT NULL default 'None'",
"shield_name TEXT NOT NULL default 'None'",
"slot_1_name TEXT NOT NULL default 'None'",
"slot_2_name TEXT NOT NULL default 'None'",
"slot_3_name TEXT NOT NULL default 'None'",
"drop_code INTEGER NOT NULL default 0",
"spells TEXT NOT NULL default '0'",
"maps TEXT NOT NULL default '0'"
)
db:commit()
db:begin()
db:insert("control", {
game_name = "Dragon Knight",
game_size = 250,
@ -39,15 +165,6 @@ db:insert("control", {
show_online = 1
})
db:create_table("drops",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"level INTEGER NOT NULL DEFAULT 0",
"type INTEGER NOT NULL DEFAULT 0",
"attribute_1 TEXT NOT NULL DEFAULT ''",
"attribute_2 TEXT NOT NULL DEFAULT ''"
)
db:insert("drops", {
{"Life Pebble", 1, 1, "maxhp,10", ""},
{"Life Stone", 10, 1, "maxhp,25", ""},
@ -83,26 +200,6 @@ db:insert("drops", {
{"Fortune Drop", 5, 1, "goldbonus,10", ""}
}, {"name", "level", "type", "attribute_1", "attribute_2"})
db:create_table("forum",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"author INTEGER NOT NULL",
"parent INTEGER NOT NULL DEFAULT 0",
"replies INTEGER NOT NULL DEFAULT 0",
"title TEXT NOT NULL",
"content TEXT NOT NULL",
"posted DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"latest DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP"
)
db:create_table("items",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"type INTEGER NOT NULL DEFAULT 0",
"name TEXT NOT NULL",
"value INTEGER NOT NULL DEFAULT 0",
"attribute INTEGER NOT NULL DEFAULT 0",
"special TEXT NOT NULL DEFAULT ''"
)
db:insert("items", {
{1, "Stick", 10, 2, ""},
{1, "Branch", 30, 4, ""},
@ -139,18 +236,6 @@ db:insert("items", {
{3, "Destiny Aegis", 25000, 100, "maxhp,50"}
}, {"type", "name", "value", "attribute", "special"})
db:create_table("monsters",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"max_hp INTEGER NOT NULL DEFAULT 1",
"max_dmg INTEGER NOT NULL DEFAULT 0",
"armor INTEGER NOT NULL DEFAULT 0",
"level INTEGER NOT NULL DEFAULT 0",
"max_exp INTEGER NOT NULL DEFAULT 0",
"max_gold INTEGER NOT NULL DEFAULT 0",
"immune INTEGER NOT NULL DEFAULT 0"
)
db:insert("monsters", {
{"Blue Slime", 4, 3, 1, 1, 1, 1, 0},
{"Red Slime", 6, 5, 1, 1, 2, 1, 0},
@ -305,23 +390,8 @@ db:insert("monsters", {
{"Lucifuge", 600, 600, 400, 50, 10000, 10000, 2}
}, {"name", "max_hp", "max_dmg", "armor", "level", "max_exp", "max_gold", "immune"})
db:create_table("news",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"author TEXT NOT NULL DEFAULT 'Guild Master'",
"postdate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"content TEXT NOT NULL"
)
db:insert("news", {content = "This is the first news post. Please use the admin control panel to add another one and make this one go away."})
db:create_table("spells",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"mp INTEGER NOT NULL DEFAULT 0",
"power INTEGER NOT NULL DEFAULT 0",
"type INTEGER NOT NULL DEFAULT 0"
)
db:insert("spells", {
{"Heal", 5, 10, 1},
{"Revive", 10, 25, 1},
@ -344,17 +414,6 @@ db:insert("spells", {
{"Barrier", 30, 50, 5}
}, {"name", "mp", "power", "type"})
db:create_table("towns",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"name TEXT NOT NULL",
"lat INTEGER NOT NULL DEFAULT 0",
"lon INTEGER NOT NULL DEFAULT 0",
"inn_price INTEGER NOT NULL DEFAULT 0",
"map_price INTEGER NOT NULL DEFAULT 0",
"tp_cost INTEGER NOT NULL DEFAULT 0",
"items TEXT NOT NULL"
)
db:insert("towns", {
{"Midworld", 0, 0, 5, 0, 0, "1,2,3,17,18,19,28,29"},
{"Roma", 30, 30, 10, 25, 5, "2,3,4,18,19,29"},
@ -366,58 +425,20 @@ db:insert("towns", {
{"Endworld", -250, -250, 125, 9000, 160, "16,27,33"}
}, {"name", "lat", "lon", "inn_price", "map_price", "tp_cost", "items"})
db:create_table("users",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
"username TEXT NOT NULL",
"password TEXT NOT NULL",
"email TEXT NOT NULL",
"verified INTEGER NOT NULL DEFAULT 0",
"verify_token TEXT NOT NULL DEFAULT ''",
"registered DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"last_login DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP",
"auth INTEGER NOT NULL DEFAULT 0",
"lat INTEGER NOT NULL DEFAULT 0",
"lon INTEGER NOT NULL DEFAULT 0",
"class_id INTEGER NOT NULL DEFAULT 1",
"currently TEXT NOT NULL DEFAULT 'In Town'",
"fighting INTEGER NOT NULL default 0",
"monster_id INTEGER NOT NULL default 0",
"monster_hp INTEGER NOT NULL default 0",
"monster_sleep INTEGER NOT NULL default 0",
"monster_immune INTEGER NOT NULL default 0",
"uber_dmg INTEGER NOT NULL default 0",
"uber_def INTEGER NOT NULL default 0",
"hp INTEGER NOT NULL default 15",
"mp INTEGER NOT NULL default 0",
"tp INTEGER NOT NULL default 10",
"max_hp INTEGER NOT NULL default 15",
"max_mp INTEGER NOT NULL default 0",
"max_tp INTEGER NOT NULL default 10",
"level INTEGER NOT NULL default 1",
"gold INTEGER NOT NULL default 100",
"exp INTEGER NOT NULL default 0",
"gold_bonus INTEGER NOT NULL default 0",
"exp_bonus INTEGER NOT NULL default 0",
"strength INTEGER NOT NULL default 5",
"dexterity INTEGER NOT NULL default 5",
"attack INTEGER NOT NULL default 5",
"defense INTEGER NOT NULL default 5",
"weapon_id INTEGER NOT NULL default 0",
"armor_id INTEGER NOT NULL default 0",
"shield_id INTEGER NOT NULL default 0",
"slot_1_id INTEGER NOT NULL default 0",
"slot_2_id INTEGER NOT NULL default 0",
"slot_3_id INTEGER NOT NULL default 0",
"weapon_name TEXT NOT NULL default 'None'",
"armor_name TEXT NOT NULL default 'None'",
"shield_name TEXT NOT NULL default 'None'",
"slot_1_name TEXT NOT NULL default 'None'",
"slot_2_name TEXT NOT NULL default 'None'",
"slot_3_name TEXT NOT NULL default 'None'",
"drop_code INTEGER NOT NULL default 0",
"spells TEXT NOT NULL default '0'",
"maps TEXT NOT NULL default '0'"
)
db:commit()
local time = math.roundto(microtime(true) - start, 4)
return "Complete! Took "..time.." seconds!"
http.set_content_type("text/html")
return [[
<html>
<head>
<title>Dragon Knight Installation</title>
</head>
<body>
<h1>Dragon Knight Installation</h1>
<p>Database setup complete in ]]..time..[[ seconds.</p>
<a href="/install/third"><button>Continue</button></a>
</body>
</html>
]]