mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Adding a clean database file, including the sql needed to create sqlite database.
Outstanding issues should have been fixed and so it should be ready for testing now.
This commit is contained in:
97
SQL/players2.sql
Normal file
97
SQL/players2.sql
Normal file
@@ -0,0 +1,97 @@
|
||||
CREATE TABLE `body` (
|
||||
`ID` INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
`player_ckey` TEXT NOT NULL,
|
||||
`player_slot` INTEGER NOT NULL,
|
||||
`hair_red` INTEGER,
|
||||
`hair_green` INTEGER,
|
||||
`hair_blue` INTEGER,
|
||||
`facial_red` INTEGER,
|
||||
`facial_green` INTEGER,
|
||||
`facial_blue` INTEGER,
|
||||
`skin_tone` INTEGER,
|
||||
`hair_style_name` TEXT,
|
||||
`facial_style_name` TEXT,
|
||||
`eyes_red` INTEGER,
|
||||
`eyes_green` INTEGER,
|
||||
`eyes_blue` INTEGER,
|
||||
`underwear` INTEGER,
|
||||
`backbag` INTEGER,
|
||||
`b_type` TEXT,
|
||||
FOREIGN KEY(player_ckey, player_slot) REFERENCES players(player_ckey, player_slot) ON DELETE CASCADE,
|
||||
UNIQUE(player_ckey, player_slot)
|
||||
);
|
||||
|
||||
CREATE TABLE `jobs` (
|
||||
`ID` INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
`player_ckey` TEXT NOT NULL,
|
||||
`player_slot` INTEGER NOT NULL,
|
||||
`alternate_option` INTEGER,
|
||||
`job_civilian_high` INTEGER,
|
||||
`job_civilian_med` INTEGER,
|
||||
`job_civilian_low` INTEGER,
|
||||
`job_medsci_high` INTEGER,
|
||||
`job_medsci_med` INTEGER,
|
||||
`job_medsci_low` INTEGER,
|
||||
`job_engsec_high` INTEGER,
|
||||
`job_engsec_med` INTEGER,
|
||||
`job_engsec_low` INTEGER,
|
||||
FOREIGN KEY(player_ckey, player_slot) REFERENCES players(player_ckey, player_slot) ON DELETE CASCADE,
|
||||
UNIQUE(player_ckey, player_slot)
|
||||
);
|
||||
|
||||
CREATE TABLE `limbs` (
|
||||
`ID` INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
`player_ckey` TEXT NOT NULL,
|
||||
`player_slot` INTEGER NOT NULL,
|
||||
`l_arm` TEXT,
|
||||
`r_arm` TEXT,
|
||||
`l_leg` TEXT,
|
||||
`r_leg` TEXT,
|
||||
`l_foot` TEXT,
|
||||
`r_foot` TEXT,
|
||||
`l_hand` TEXT,
|
||||
`r_hand` TEXT,
|
||||
`heart` TEXT,
|
||||
`eyes` TEXT,
|
||||
FOREIGN KEY(player_ckey, player_slot) REFERENCES players(player_ckey, player_slot) ON DELETE CASCADE,
|
||||
UNIQUE(player_ckey, player_slot)
|
||||
);
|
||||
|
||||
CREATE TABLE `players` (
|
||||
`ID` INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
`player_ckey` TEXT NOT NULL,
|
||||
`player_slot` INTEGER NOT NULL,
|
||||
`ooc_notes` TEXT,
|
||||
`real_name` TEXT,
|
||||
`random_name` INTEGER,
|
||||
`gender` TEXT,
|
||||
`age` INTEGER,
|
||||
`species` TEXT,
|
||||
`language` TEXT,
|
||||
`flavor_text` TEXT,
|
||||
`med_record` TEXT,
|
||||
`sec_record` TEXT,
|
||||
`gen_record` TEXT,
|
||||
`player_alt_titles` TEXT,
|
||||
`be_special` TEXT,
|
||||
`disabilities` INTEGER,
|
||||
`nanotrasen_relation` TEXT,
|
||||
UNIQUE(player_ckey, player_slot)
|
||||
);
|
||||
|
||||
CREATE TABLE `client` (
|
||||
`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
`ckey` INTEGER UNIQUE,
|
||||
`ooc_color` TEXT,
|
||||
`lastchangelog` TEXT,
|
||||
`UI_style` TEXT,
|
||||
`default_slot` INTEGER,
|
||||
`toggles` INTEGER,
|
||||
`UI_style_color`TEXT,
|
||||
`UI_style_alpha`INTEGER,
|
||||
`randomslot` INTEGER,
|
||||
`volume` INTEGER,
|
||||
`special` INTEGER,
|
||||
`warns` INTEGER,
|
||||
`warnbans` INTEGER
|
||||
);
|
||||
@@ -129,118 +129,17 @@ datum/preferences
|
||||
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||
if(istype(C))
|
||||
if(!IsGuestKey(C.key))
|
||||
if(!load_preferences_sqlite(C.ckey))
|
||||
if(!load_save_sqlite(C, C.ckey, default_slot))
|
||||
var/load_pref = load_preferences_sqlite(C.ckey)
|
||||
if(load_pref)
|
||||
if(load_save_sqlite(C.ckey, src, default_slot))
|
||||
return
|
||||
gender = pick(MALE, FEMALE)
|
||||
else
|
||||
save_preferences_sqlite(src, C.ckey)
|
||||
randomize_appearance_for()
|
||||
real_name = random_name(gender)
|
||||
save_character_sqlite(src, C.ckey, default_slot)
|
||||
|
||||
/datum/preferences
|
||||
proc/ZeroSkills(var/forced = 0)
|
||||
for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V])
|
||||
if(!skills.Find(S.ID) || forced)
|
||||
skills[S.ID] = SKILL_NONE
|
||||
proc/CalculateSkillPoints()
|
||||
used_skillpoints = 0
|
||||
for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V])
|
||||
var/multiplier = 1
|
||||
switch(skills[S.ID])
|
||||
if(SKILL_NONE)
|
||||
used_skillpoints += 0 * multiplier
|
||||
if(SKILL_BASIC)
|
||||
used_skillpoints += 1 * multiplier
|
||||
if(SKILL_ADEPT)
|
||||
// secondary skills cost less
|
||||
if(S.secondary)
|
||||
used_skillpoints += 1 * multiplier
|
||||
else
|
||||
used_skillpoints += 3 * multiplier
|
||||
if(SKILL_EXPERT)
|
||||
// secondary skills cost less
|
||||
if(S.secondary)
|
||||
used_skillpoints += 3 * multiplier
|
||||
else
|
||||
used_skillpoints += 6 * multiplier
|
||||
|
||||
proc/GetSkillClass(points)
|
||||
// skill classes describe how your character compares in total points
|
||||
var/original_points = points
|
||||
points -= min(round((age - 20) / 2.5), 4) // every 2.5 years after 20, one extra skillpoint
|
||||
if(age > 30)
|
||||
points -= round((age - 30) / 5) // every 5 years after 30, one extra skillpoint
|
||||
if(original_points > 0 && points <= 0) points = 1
|
||||
switch(points)
|
||||
if(0)
|
||||
return "Unconfigured"
|
||||
if(1 to 3)
|
||||
return "Terrifying"
|
||||
if(4 to 6)
|
||||
return "Below Average"
|
||||
if(7 to 10)
|
||||
return "Average"
|
||||
if(11 to 14)
|
||||
return "Above Average"
|
||||
if(15 to 18)
|
||||
return "Exceptional"
|
||||
if(19 to 24)
|
||||
return "Genius"
|
||||
if(24 to 1000)
|
||||
return "God"
|
||||
|
||||
proc/SetSkills(mob/user)
|
||||
if(SKILLS == null)
|
||||
setup_skills()
|
||||
|
||||
if(skills.len == 0)
|
||||
ZeroSkills()
|
||||
|
||||
|
||||
var/HTML = "<body>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:185: HTML += "<b>Select your Skills</b><br>"
|
||||
HTML += {"<b>Select your Skills</b><br>
|
||||
Current skill level: <b>[GetSkillClass(used_skillpoints)]</b> ([used_skillpoints])<br>
|
||||
<a href=\"byond://?src=\ref[user];preference=skills;preconfigured=1;\">Use preconfigured skillset</a><br>
|
||||
<table>"}
|
||||
// END AUTOFIX
|
||||
for(var/V in SKILLS)
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:190: HTML += "<tr><th colspan = 5><b>[V]</b>"
|
||||
HTML += {"<tr><th colspan = 5><b>[V]</b>
|
||||
</th></tr>"}
|
||||
// END AUTOFIX
|
||||
for(var/datum/skill/S in SKILLS[V])
|
||||
var/level = skills[S.ID]
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:194: HTML += "<tr style='text-align:left;'>"
|
||||
HTML += {"<tr style='text-align:left;'>
|
||||
<th><a href='byond://?src=\ref[user];preference=skills;skillinfo=\ref[S]'>[S.name]</a></th>
|
||||
<th><a href='byond://?src=\ref[user];preference=skills;setskill=\ref[S];newvalue=[SKILL_NONE]'><font color=[(level == SKILL_NONE) ? "red" : "black"]>\[Untrained\]</font></a></th>"}
|
||||
// END AUTOFIX
|
||||
// secondary skills don't have an amateur level
|
||||
if(S.secondary)
|
||||
HTML += "<th></th>"
|
||||
else
|
||||
HTML += "<th><a href='byond://?src=\ref[user];preference=skills;setskill=\ref[S];newvalue=[SKILL_BASIC]'><font color=[(level == SKILL_BASIC) ? "red" : "black"]>\[Amateur\]</font></a></th>"
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:202: HTML += "<th><a href='byond://?src=\ref[user];preference=skills;setskill=\ref[S];newvalue=[SKILL_ADEPT]'><font color=[(level == SKILL_ADEPT) ? "red" : "black"]>\[Trained\]</font></a></th>"
|
||||
HTML += {"<th><a href='byond://?src=\ref[user];preference=skills;setskill=\ref[S];newvalue=[SKILL_ADEPT]'><font color=[(level == SKILL_ADEPT) ? "red" : "black"]>\[Trained\]</font></a></th>
|
||||
<th><a href='byond://?src=\ref[user];preference=skills;setskill=\ref[S];newvalue=[SKILL_EXPERT]'><font color=[(level == SKILL_EXPERT) ? "red" : "black"]>\[Professional\]</font></a></th>
|
||||
</tr>"}
|
||||
// END AUTOFIX
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:205: HTML += "</table>"
|
||||
HTML += {"</table>
|
||||
<a href=\"byond://?src=\ref[user];preference=skills;cancel=1;\">\[Done\]</a>"}
|
||||
// END AUTOFIX
|
||||
user << browse(null, "window=preferences")
|
||||
user << browse(HTML, "window=show_skills;size=600x800")
|
||||
return
|
||||
|
||||
proc/ShowChoices(mob/user)
|
||||
if(!user || !user.client) return
|
||||
@@ -249,8 +148,7 @@ datum/preferences
|
||||
user << browse_rsc(preview_icon_side, "previewicon2.png")
|
||||
var/dat = "<html><body><center>"
|
||||
|
||||
if(load_preferences_sqlite(user.ckey))
|
||||
|
||||
if(!IsGuestKey(user.key))
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:220: dat += "<center>"
|
||||
dat += {"<center>
|
||||
@@ -407,8 +305,7 @@ datum/preferences
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:325: dat += "\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b> (<i>[GetSkillClass(used_skillpoints)][used_skillpoints > 0 ? " [used_skillpoints]" : "0"])</i></a><br>"
|
||||
dat += {"\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b> (<i>[GetSkillClass(used_skillpoints)][used_skillpoints > 0 ? " [used_skillpoints]" : "0"])</i></a><br>
|
||||
<a href='byond://?src=\ref[user];preference=flavor_text;task=input'><b>Set Flavor Text</b></a><br>"}
|
||||
dat += {"<a href='byond://?src=\ref[user];preference=flavor_text;task=input'><b>Set Flavor Text</b></a><br>"}
|
||||
// END AUTOFIX
|
||||
if(lentext(flavor_text) <= 40)
|
||||
if(!lentext(flavor_text))
|
||||
@@ -821,40 +718,6 @@ datum/preferences
|
||||
else
|
||||
SetDisabilities(user)
|
||||
return 1
|
||||
else if(href_list["preference"] == "skills")
|
||||
if(href_list["cancel"])
|
||||
user << browse(null, "window=show_skills")
|
||||
ShowChoices(user)
|
||||
else if(href_list["skillinfo"])
|
||||
var/datum/skill/S = locate(href_list["skillinfo"])
|
||||
var/HTML = "<b>[S.name]</b><br>[S.desc]"
|
||||
user << browse(HTML, "window=\ref[user]skillinfo")
|
||||
else if(href_list["setskill"])
|
||||
var/datum/skill/S = locate(href_list["setskill"])
|
||||
var/value = text2num(href_list["newvalue"])
|
||||
skills[S.ID] = value
|
||||
CalculateSkillPoints()
|
||||
SetSkills(user)
|
||||
else if(href_list["preconfigured"])
|
||||
var/selected = input(user, "Select a skillset", "Skillset") as null|anything in SKILL_PRE
|
||||
if(!selected) return
|
||||
|
||||
ZeroSkills(1)
|
||||
for(var/V in SKILL_PRE[selected])
|
||||
if(V == "field")
|
||||
skill_specialization = SKILL_PRE[selected]["field"]
|
||||
continue
|
||||
skills[V] = SKILL_PRE[selected][V]
|
||||
CalculateSkillPoints()
|
||||
|
||||
SetSkills(user)
|
||||
else if(href_list["setspecialization"])
|
||||
skill_specialization = href_list["setspecialization"]
|
||||
CalculateSkillPoints()
|
||||
SetSkills(user)
|
||||
else
|
||||
SetSkills(user)
|
||||
return 1
|
||||
|
||||
else if(href_list["preference"] == "records")
|
||||
if(text2num(href_list["record"]) >= 1)
|
||||
@@ -1283,12 +1146,12 @@ datum/preferences
|
||||
|
||||
if("save")
|
||||
save_preferences_sqlite(user, user.ckey)
|
||||
save_character_sqlite(user.ckey, user, slot)
|
||||
save_character_sqlite(user.ckey, user, default_slot)
|
||||
//random_character_sqlite(user, user.ckey)
|
||||
|
||||
if("reload")
|
||||
//load_preferences_sqlite(user.ckey)
|
||||
//load_save_sqlite(user.ckey, user, default_slot)
|
||||
load_preferences_sqlite(user, user.ckey)
|
||||
load_save_sqlite(user.ckey, user, default_slot)
|
||||
|
||||
if("open_load_dialog")
|
||||
if(!IsGuestKey(user.key))
|
||||
@@ -1298,9 +1161,9 @@ datum/preferences
|
||||
close_load_dialog(user)
|
||||
|
||||
if("changeslot")
|
||||
load_save_sqlite(user.ckey, user, text2num(href_list["num"]))
|
||||
//user << "You have no character created here, change your preferences and save."
|
||||
slot = text2num(href_list["num"])
|
||||
var/num = text2num(href_list["num"])
|
||||
load_save_sqlite(user.ckey, user, num)
|
||||
default_slot = num
|
||||
close_load_dialog(user)
|
||||
|
||||
ShowChoices(user)
|
||||
@@ -1403,23 +1266,32 @@ datum/preferences
|
||||
|
||||
proc/open_load_dialog(mob/user)
|
||||
|
||||
var/database/query/q = new
|
||||
var/list/name_list[MAX_SAVE_SLOTS]
|
||||
|
||||
q.Add("select real_name, player_slot from players where player_ckey=?", user.ckey)
|
||||
if(q.Execute(db))
|
||||
while(q.NextRow())
|
||||
name_list[q.GetColumn(2)] = q.GetColumn(1)
|
||||
else
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:1283: var/dat = "<body>"
|
||||
var/dat = {"<body>
|
||||
<tt><center>"}
|
||||
var/dat = {"<body><tt><center>"}
|
||||
// END AUTOFIX
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(S)
|
||||
dat += "<b>Select a character slot to load</b><hr>"
|
||||
var/name
|
||||
for(var/i=1, i<=MAX_SAVE_SLOTS, i++)
|
||||
S.cd = "/character[i]"
|
||||
S["real_name"] >> name
|
||||
if(!name) name = "Character[i]"
|
||||
if(i==default_slot)
|
||||
name = "<b>[name]</b>"
|
||||
dat += "<a href='?_src_=prefs;preference=changeslot;num=[i];'>[name]</a><br>"
|
||||
|
||||
dat += "<b>Select a character slot to load</b><hr>"
|
||||
var/counter = 1
|
||||
while(counter <= MAX_SAVE_SLOTS)
|
||||
if(counter==default_slot)
|
||||
dat += "<a href='?_src_=prefs;preference=changeslot;num=[counter];'><b>[name_list[counter]]</b></a><br>"
|
||||
else
|
||||
if(!name_list[counter])
|
||||
dat += "<a href='?_src_=prefs;preference=changeslot;num=[counter];'>Character[counter]</a><br>"
|
||||
else
|
||||
dat += "<a href='?_src_=prefs;preference=changeslot;num=[counter];'>[name_list[counter]]</a><br>"
|
||||
counter++
|
||||
|
||||
// AUTOFIXED BY fix_string_idiocy.py
|
||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:1228: dat += "<hr>"
|
||||
|
||||
@@ -42,21 +42,20 @@
|
||||
check.Add("select ckey from client")
|
||||
if(check.Execute(db))
|
||||
if(!check.NextRow())
|
||||
if(!save_preferences_sqlite(ckey))
|
||||
world << " An error has occured."
|
||||
return 0
|
||||
return 0
|
||||
else
|
||||
message_admins("Error #: [check.Error()] - [check.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
q.Add("SELECT * FROM client where ckey = ?", ckey)
|
||||
q.Add("SELECT * FROM client WHERE ckey = ?", ckey)
|
||||
if(q.Execute(db))
|
||||
while(q.NextRow())
|
||||
var/list/row = q.GetRowData()
|
||||
for(var/a in row)
|
||||
//world << "[a] = [row[a]]"
|
||||
preference_list_client[a] = row[a]
|
||||
else
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
|
||||
ooccolor = preference_list_client["ooc_color"]
|
||||
@@ -142,15 +141,18 @@
|
||||
ckey, ooccolor, lastchangelog, UI_style, default_slot, toggles, UI_style_color, UI_style_alpha, warns, warnbans, randomslot, volume, special_popup)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
else
|
||||
q.Add("UPDATE client SET ooc_color=?,lastchangelog=?,UI_style=?,default_slot=?,toggles=?,UI_style_color=?,UI_style_alpha=?,warns=?,warnbans=?,randomslot=?,volume=?,special=? WHERE ckey = ?",\
|
||||
ooccolor, lastchangelog, UI_style, default_slot, toggles, UI_style_color, UI_style_alpha, warns, warnbans, randomslot, volume, special_popup, ckey)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
else
|
||||
message_admins("Error #: [check.Error()] - [check.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Preferences Updated."
|
||||
return 1
|
||||
@@ -193,77 +195,168 @@
|
||||
var/database/query/q = new
|
||||
var/database/query/check = new
|
||||
|
||||
check.Add("select ckey from players where ckey = ? and slot = ?", ckey, slot)
|
||||
check.Add("SELECT player_ckey FROM players WHERE player_ckey = ? AND player_slot = ?", ckey, slot)
|
||||
if(check.Execute(db))
|
||||
if(!check.NextRow())
|
||||
user << "You have no character file to load, please save one first."
|
||||
return 0
|
||||
else
|
||||
message_admins("Error #: [check.Error()] - [check.ErrorMsg()]")
|
||||
message_admins("load_save_sqlite Check Error #: [check.Error()] - [check.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
|
||||
q.Add("select * from players, body, limbs, jobs WHERE players.ckey = ? AND players.slot = ?", ckey, slot)
|
||||
q.Add({"
|
||||
SELECT
|
||||
limbs.player_ckey,
|
||||
limbs.player_slot,
|
||||
limbs.l_arm,
|
||||
limbs.r_arm,
|
||||
limbs.l_leg,
|
||||
limbs.r_leg,
|
||||
limbs.l_foot,
|
||||
limbs.r_foot,
|
||||
limbs.l_hand,
|
||||
limbs.r_hand,
|
||||
limbs.heart,
|
||||
limbs.eyes,
|
||||
players.player_ckey,
|
||||
players.player_slot,
|
||||
players.ooc_notes,
|
||||
players.real_name,
|
||||
players.random_name,
|
||||
players.gender,
|
||||
players.age,
|
||||
players.species,
|
||||
players.language,
|
||||
players.flavor_text,
|
||||
players.med_record,
|
||||
players.sec_record,
|
||||
players.gen_record,
|
||||
players.player_alt_titles,
|
||||
players.be_special,
|
||||
players.disabilities,
|
||||
players.nanotrasen_relation,
|
||||
jobs.player_ckey,
|
||||
jobs.player_slot,
|
||||
jobs.alternate_option,
|
||||
jobs.job_civilian_high,
|
||||
jobs.job_civilian_med,
|
||||
jobs.job_civilian_low,
|
||||
jobs.job_medsci_high,
|
||||
jobs.job_medsci_med,
|
||||
jobs.job_medsci_low,
|
||||
jobs.job_engsec_high,
|
||||
jobs.job_engsec_med,
|
||||
jobs.job_engsec_low,
|
||||
body.player_ckey,
|
||||
body.player_slot,
|
||||
body.hair_red,
|
||||
body.hair_green,
|
||||
body.hair_blue,
|
||||
body.facial_red,
|
||||
body.facial_green,
|
||||
body.facial_blue,
|
||||
body.skin_tone,
|
||||
body.hair_style_name,
|
||||
body.facial_style_name,
|
||||
body.eyes_red,
|
||||
body.eyes_green,
|
||||
body.eyes_blue,
|
||||
body.underwear,
|
||||
body.backbag,
|
||||
body.b_type
|
||||
FROM
|
||||
players
|
||||
INNER JOIN
|
||||
limbs
|
||||
ON
|
||||
(
|
||||
players.player_ckey = limbs.player_ckey)
|
||||
AND (
|
||||
players.player_slot = limbs.player_slot)
|
||||
INNER JOIN
|
||||
jobs
|
||||
ON
|
||||
(
|
||||
limbs.player_ckey = jobs.player_ckey)
|
||||
AND (
|
||||
limbs.player_slot = jobs.player_slot)
|
||||
INNER JOIN
|
||||
body
|
||||
ON
|
||||
(
|
||||
jobs.player_ckey = body.player_ckey)
|
||||
AND (
|
||||
jobs.player_slot = body.player_slot)
|
||||
WHERE
|
||||
players.player_ckey = ?
|
||||
AND players.player_slot = ? ;"}, ckey, slot)
|
||||
if(q.Execute(db))
|
||||
while(q.NextRow())
|
||||
var/list/row = q.GetRowData()
|
||||
for(var/a in row)
|
||||
//world << "[a] = [row[a]]"
|
||||
preference_list[a] = row[a]
|
||||
else
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
message_admins("load_save_sqlite Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
|
||||
metadata = preference_list["ooc_notes"]
|
||||
real_name = preference_list["real_name"]
|
||||
be_random_name = preference_list["random_name"]
|
||||
gender = preference_list["gender"]
|
||||
age = preference_list["age"]
|
||||
species = preference_list["species"]
|
||||
language = preference_list["language"]
|
||||
flavor_text = preference_list["flavor_text"]
|
||||
med_record = preference_list["med_record"]
|
||||
sec_record = preference_list["sec_record"]
|
||||
gen_record = preference_list["gen_record"]
|
||||
player_alt_titles = preference_list["player_alt_titles"]
|
||||
be_special = preference_list["be_special"]
|
||||
disabilities = preference_list["disabilities"]
|
||||
nanotrasen_relation = preference_list["nanotrasen_relation"]
|
||||
metadata = preference_list["ooc_notes"]
|
||||
real_name = preference_list["real_name"]
|
||||
be_random_name = preference_list["random_name"]
|
||||
gender = preference_list["gender"]
|
||||
age = preference_list["age"]
|
||||
species = preference_list["species"]
|
||||
language = preference_list["language"]
|
||||
flavor_text = preference_list["flavor_text"]
|
||||
med_record = preference_list["med_record"]
|
||||
sec_record = preference_list["sec_record"]
|
||||
gen_record = preference_list["gen_record"]
|
||||
player_alt_titles = preference_list["player_alt_titles"]
|
||||
be_special = preference_list["be_special"]
|
||||
disabilities = preference_list["disabilities"]
|
||||
nanotrasen_relation = preference_list["nanotrasen_relation"]
|
||||
|
||||
r_hair = preference_list["hair_red"]
|
||||
g_hair = preference_list["hair_green"]
|
||||
b_hair = preference_list["hair_blue"]
|
||||
r_facial = preference_list["facial_red"]
|
||||
g_facial = preference_list["facial_green"]
|
||||
b_facial = preference_list["facial_blue"]
|
||||
underwear = preference_list["underwear"]
|
||||
backbag = preference_list["backbag"]
|
||||
b_type = preference_list["b_type"]
|
||||
r_hair = preference_list["hair_red"]
|
||||
g_hair = preference_list["hair_green"]
|
||||
b_hair = preference_list["hair_blue"]
|
||||
h_style = preference_list["hair_style_name"]
|
||||
|
||||
r_facial = preference_list["facial_red"]
|
||||
g_facial = preference_list["facial_green"]
|
||||
b_facial = preference_list["facial_blue"]
|
||||
f_style = preference_list["facial_style_name"]
|
||||
|
||||
underwear = preference_list["underwear"]
|
||||
backbag = preference_list["backbag"]
|
||||
b_type = preference_list["b_type"]
|
||||
|
||||
organ_data["l_arm"] = preference_list["l_arm"]
|
||||
organ_data["r_arm"] = preference_list["r_arm"]
|
||||
organ_data["l_leg"] = preference_list["l_leg"]
|
||||
organ_data["r_leg"] = preference_list["r_leg"]
|
||||
organ_data["l_foot"] = preference_list["l_foot"]
|
||||
organ_data["r_foot"] = preference_list["r_foot"]
|
||||
organ_data["l_hand"] = preference_list["l_hand"]
|
||||
organ_data["r_hand"] = preference_list["r_hand"]
|
||||
organ_data["l_foot"]= preference_list["l_foot"]
|
||||
organ_data["r_foot"]= preference_list["r_foot"]
|
||||
organ_data["l_hand"]= preference_list["l_hand"]
|
||||
organ_data["r_hand"]= preference_list["r_hand"]
|
||||
organ_data["heart"] = preference_list["heart"]
|
||||
organ_data["eyes"] = preference_list["eyes"]
|
||||
organ_data["eyes"] = preference_list["eyes"]
|
||||
|
||||
alternate_option = preference_list["alternate_option"]
|
||||
job_civilian_high = preference_list["job_civilian_high"]
|
||||
job_civilian_med = preference_list["job_civilian_med"]
|
||||
job_civilian_low = preference_list["job_civilian_low"]
|
||||
job_medsci_high = preference_list["job_medsci_high"]
|
||||
job_medsci_med = preference_list["job_medsci_med"]
|
||||
job_medsci_low = preference_list["job_medsci_low"]
|
||||
job_engsec_high = preference_list["job_engsec_high"]
|
||||
job_engsec_med = preference_list["job_engsec_med"]
|
||||
job_engsec_low = preference_list["job_engsec_low"]
|
||||
alternate_option = preference_list["alternate_option"]
|
||||
job_civilian_high = preference_list["job_civilian_high"]
|
||||
job_civilian_med = preference_list["job_civilian_med"]
|
||||
job_civilian_low = preference_list["job_civilian_low"]
|
||||
job_medsci_high = preference_list["job_medsci_high"]
|
||||
job_medsci_med = preference_list["job_medsci_med"]
|
||||
job_medsci_low = preference_list["job_medsci_low"]
|
||||
job_engsec_high = preference_list["job_engsec_high"]
|
||||
job_engsec_med = preference_list["job_engsec_med"]
|
||||
job_engsec_low = preference_list["job_engsec_low"]
|
||||
|
||||
|
||||
metadata = sanitize_text(metadata, initial(metadata))
|
||||
real_name = reject_bad_name(real_name)
|
||||
metadata = sanitize_text(metadata, initial(metadata))
|
||||
real_name = reject_bad_name(real_name)
|
||||
|
||||
if(isnull(species)) species = "Human"
|
||||
if(isnull(language)) language = "None"
|
||||
if(isnull(nanotrasen_relation)) nanotrasen_relation = initial(nanotrasen_relation)
|
||||
@@ -271,16 +364,20 @@
|
||||
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
|
||||
gender = sanitize_gender(gender)
|
||||
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
|
||||
|
||||
r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair))
|
||||
g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair))
|
||||
b_hair = sanitize_integer(b_hair, 0, 255, initial(b_hair))
|
||||
|
||||
r_facial = sanitize_integer(r_facial, 0, 255, initial(r_facial))
|
||||
g_facial = sanitize_integer(g_facial, 0, 255, initial(g_facial))
|
||||
|
||||
b_facial = sanitize_integer(b_facial, 0, 255, initial(b_facial))
|
||||
s_tone = sanitize_integer(s_tone, -185, 34, initial(s_tone))
|
||||
h_style = sanitize_inlist(h_style, hair_styles_list, initial(h_style))
|
||||
f_style = sanitize_inlist(f_style, facial_hair_styles_list, initial(f_style))
|
||||
r_eyes = sanitize_integer(r_eyes, 0, 255, initial(r_eyes))
|
||||
|
||||
g_eyes = sanitize_integer(g_eyes, 0, 255, initial(g_eyes))
|
||||
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
|
||||
underwear = sanitize_integer(underwear, 1, underwear_m.len, initial(underwear))
|
||||
@@ -305,6 +402,8 @@
|
||||
if(!player_alt_titles) player_alt_titles = new()
|
||||
if(!organ_data) src.organ_data = list()
|
||||
|
||||
user << "Sucessfully loaded [real_name]."
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -414,17 +513,17 @@
|
||||
|
||||
/datum/preferences/proc/random_character_sqlite(var/user, var/ckey)
|
||||
var/database/query/q = new
|
||||
var/i = 0
|
||||
q.Add("SELECT slot FROM players WHERE ckey=?", ckey)
|
||||
var/list/slot_list = new
|
||||
q.Add("SELECT player_slot FROM players WHERE player_ckey=?", ckey)
|
||||
if(q.Execute(db))
|
||||
while(q.NextRow())
|
||||
i++
|
||||
slot_list.Add(q.GetColumn(1))
|
||||
else
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
var/random_slot = rand(1,i)
|
||||
world << "This is random_slot : [random_slot]"
|
||||
load_save_sqlite(user, ckey, random_slot)
|
||||
var/random_slot = pick(slot_list)
|
||||
load_save_sqlite(ckey, user, random_slot)
|
||||
return 1
|
||||
|
||||
/datum/preferences/proc/random_character()
|
||||
@@ -474,36 +573,37 @@
|
||||
var/database/query/q = new
|
||||
var/database/query/check = new
|
||||
|
||||
check.Add("select ckey from players where ckey = ? and slot = ?", ckey, slot)
|
||||
check.Add("select player_ckey from players where player_ckey = ? and player_slot = ?", ckey, slot)
|
||||
if(check.Execute(db))
|
||||
if(!check.NextRow()) //1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
||||
q.Add("INSERT INTO players (ckey,slot,ooc_notes,real_name,random_name,gender,age,species,language,flavor_text,med_record,sec_record,gen_record,player_alt_titles,be_special,disabilities,nanotrasen_relation) \
|
||||
q.Add("INSERT INTO players (player_ckey,player_slot,ooc_notes,real_name,random_name,gender,age,species,language,flavor_text,med_record,sec_record,gen_record,player_alt_titles,be_special,disabilities,nanotrasen_relation) \
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", ckey, slot, metadata, real_name, be_random_name, gender, age, species, language, flavor_text, med_record, sec_record, gen_record, player_alt_titles, be_special, disabilities, nanotrasen_relation)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Created Character"
|
||||
else
|
||||
q.Add("UPDATE players SET ooc_notes=?,real_name=?,random_name=?,gender=?,age=?,species=?,language=?,flavor_text=?,med_record=?,sec_record=?,gen_record=?,player_alt_titles=?,be_special=?,disabilities=?,nanotrasen_relation=? WHERE ckey = ? AND slot = ?",\
|
||||
q.Add("UPDATE players SET ooc_notes=?,real_name=?,random_name=?,gender=?,age=?,species=?,language=?,flavor_text=?,med_record=?,sec_record=?,gen_record=?,player_alt_titles=?,be_special=?,disabilities=?,nanotrasen_relation=? WHERE player_ckey = ? AND player_slot = ?",\
|
||||
metadata, real_name, be_random_name, gender, age, species, language, flavor_text, med_record, sec_record, gen_record, player_alt_titles, be_special, disabilities, nanotrasen_relation, ckey, slot)
|
||||
world << "Players Query : [q]"
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Updated Character"
|
||||
else
|
||||
message_admins("Error #:[check.Error()] - [check.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
|
||||
check.Add("select player_ckey from body where player_ckey = ? and player_slot = ?", ckey, slot)
|
||||
world << "Check Query : [check]"
|
||||
if(check.Execute(db))
|
||||
if(!check.NextRow())
|
||||
q.Add("INSERT INTO body (player_ckey,player_slot,hair_red,hair_green,hair_blue,facial_red,facial_green,facial_blue,skin_tone,hair_style_name,facial_style_name,eyes_red,eyes_green,eyes_blue,underwear,backbag,b_type) \
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", ckey, slot, r_hair, g_hair, b_hair, r_facial, g_facial, b_facial, s_tone, h_style, f_style, r_eyes, g_eyes, b_eyes, underwear, backbag, b_type)
|
||||
world << "Body Query : [q]"
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Created Body"
|
||||
else
|
||||
@@ -511,10 +611,12 @@
|
||||
r_hair, g_hair, b_hair, r_facial, g_facial, b_facial, s_tone, h_style, f_style, r_eyes, g_eyes, b_eyes, underwear, backbag, b_type, ckey, slot)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Updated Body"
|
||||
else
|
||||
message_admins("Error #: [check.Error()] - [check.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
|
||||
check.Add("select player_ckey from jobs where player_ckey = ? and player_slot = ?", ckey, slot)
|
||||
@@ -524,6 +626,7 @@
|
||||
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", ckey, slot, alternate_option, job_civilian_high, job_civilian_med, job_civilian_low, job_medsci_high, job_medsci_med, job_medsci_low, job_engsec_high, job_engsec_med, job_engsec_low)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Created Job list"
|
||||
else
|
||||
@@ -531,10 +634,12 @@
|
||||
job_civilian_high, job_civilian_med, job_civilian_low, job_medsci_high, job_medsci_med, job_medsci_low, job_engsec_high, job_engsec_med, job_engsec_low, ckey, slot)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Updated Job List"
|
||||
else
|
||||
message_admins("Error #: [check.Error()] - [check.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
|
||||
check.Add("select player_ckey from limbs where player_ckey = ? and player_slot = ?", ckey, slot)
|
||||
@@ -543,11 +648,13 @@
|
||||
q.Add("INSERT INTO limbs (player_ckey, player_slot) VALUES (?,?)", ckey, slot)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
for(var/stuff in organ_data)
|
||||
q.Add("UPDATE limbs SET [stuff]=? WHERE player_ckey = ? AND player_slot = ?", organ_data[stuff], ckey, slot)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #; [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Created Limbs"
|
||||
else
|
||||
@@ -555,10 +662,12 @@
|
||||
q.Add("UPDATE limbs SET [stuff] = ? WHERE player_ckey = ? AND player_slot = ?", organ_data[stuff], ckey, slot)
|
||||
if(!q.Execute(db))
|
||||
message_admins("Error #: [q.Error()] - [q.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
user << "Updated Limbs"
|
||||
else
|
||||
message_admins("Error #: [check.Error()] - [check.ErrorMsg()]")
|
||||
warning("Error #:[q.Error()] - [q.ErrorMsg()]")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
BIN
players2.sqlite
Normal file
BIN
players2.sqlite
Normal file
Binary file not shown.
Reference in New Issue
Block a user