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:
ririchiyo
2014-09-22 16:24:15 -04:00
parent 44038ca5b9
commit d96ca9c64b
4 changed files with 307 additions and 229 deletions

97
SQL/players2.sql Normal file
View 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
);

View File

@@ -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>"

View File

@@ -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

Binary file not shown.