From 048ac0994da54ea89ef1aeb9e2a5dda7b482f04d Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Tue, 3 Jun 2014 03:31:06 -0400 Subject: [PATCH] 2nd commit of MySQL conversion. So close to the finish line. --- code/game/jobs/job_controller.dm | 2 +- code/modules/admin/admin_verbs.dm | 16 +- code/modules/client/client procs.dm | 3 +- code/modules/client/preferences.dm | 62 +++---- code/modules/client/preferences_mysql.dm | 192 +++++++++++---------- code/modules/client/preferences_toggles.dm | 30 ++-- code/modules/media/mediamanager.dm | 2 +- 7 files changed, 158 insertions(+), 149 deletions(-) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 5702e68cefc..86331b0e28b 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -261,7 +261,7 @@ var/global/datum/controller/occupations/job_master for(var/mob/new_player/player in player_list) if(player.ready && player.mind && !player.mind.assigned_role) unassigned += player - if(player.client.prefs.randomslot) player.client.prefs.random_character() + if(player.client.prefs.randomslot) player.client.prefs.random_character(player.client) Debug("DO, Len: [unassigned.len]") if(unassigned.len == 0) return 0 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 6c680c1334e..7cd2c68823b 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -450,7 +450,7 @@ var/list/admin_verbs_mentor = list( var/new_ooccolor = input(src, "Please select your OOC colour.", "OOC colour") as color|null if(new_ooccolor) prefs.ooccolor = new_ooccolor - prefs.save_preferences() + prefs.save_preferences(src) feedback_add_details("admin_verb","OC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return @@ -559,22 +559,22 @@ var/list/admin_verbs_mentor = list( feedback_add_details("admin_verb","GD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] gave [key_name(T)] the disease [D].") message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] the disease [D].", 1) - + /client/proc/give_disease2(mob/T as mob in mob_list) // -- Giacom set category = "Fun" set name = "Give Disease" set desc = "Gives a Disease to a mob." - + var/datum/disease2/disease/D = new /datum/disease2/disease() - + var/greater = ((input("Is this a lesser or greater disease?", "Give Disease") in list("Lesser", "Greater")) == "Greater") - + D.makerandom(greater) if (!greater) D.infectionchance = 1 - + D.infectionchance = input("How virulent is this disease? (1-100)", "Give Disease", D.infectionchance) as num - + if(istype(T,/mob/living/carbon/human)) var/mob/living/carbon/human/H = T if (H.species) @@ -583,7 +583,7 @@ var/list/admin_verbs_mentor = list( var/mob/living/carbon/monkey/M = T D.affected_species = list(M.greaterform) infect_virus2(T,D,1) - + feedback_add_details("admin_verb","GD2") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].") message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].", 1) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index b96f806c32c..3be89252bb3 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -218,9 +218,10 @@ send_resources() +/* if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. winset(src, "rpane.changelog", "background-color=#eaeaea;font-style=bold") - +*/ ////////////// //DISCONNECT// diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8a0dee2abc7..c666b1390a7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -30,9 +30,9 @@ var/const/MAX_SAVE_SLOTS = 10 datum/preferences //doohickeys for savefiles - var/path +// var/path var/default_slot = 1 //Holder so it doesn't default to slot 1, rather the last one used - var/savefile_version = 0 +// var/savefile_version = 0 //non-preference stuff var/warns = 0 @@ -41,7 +41,7 @@ datum/preferences var/last_id //game-preferences - var/lastchangelog = "" //Saved changlog filesize to detect if there was a change +// var/lastchangelog = "" //Saved changlog filesize to detect if there was a change var/ooccolor = "#b82e00" var/be_special = 0 //Special role selection var/UI_style = "Midnight" @@ -108,10 +108,10 @@ datum/preferences var/list/organ_data = list() var/list/player_alt_titles = new() // the default name of a job like "Medical Doctor" - var/accent = "en-us" - var/voice = "m1" - var/pitch = 50 - var/talkspeed = 175 +// var/accent = "en-us" +// var/voice = "m1" +// var/pitch = 50 +// var/talkspeed = 175 var/flavor_text = "" var/med_record = "" var/sec_record = "" @@ -137,8 +137,8 @@ datum/preferences if(istype(C)) if(!IsGuestKey(C.key)) // load_path(C.ckey) - if(load_preferences()) - if(load_character()) + if(load_preferences(C)) + if(load_character(C)) return gender = pick(MALE, FEMALE) real_name = random_name(gender) @@ -153,21 +153,17 @@ datum/preferences dat += "Character Settings" dat += "Game Preferences" - if(!path) - dat += "Please create an account to save your preferences." - dat += "" dat += "
" switch(current_tab) if (0) // Character Settings# - if(path) - dat += "
" - dat += "Slot [slot_name] - " - dat += "Load slot - " - dat += "Save slot - " - dat += "Reload slot" - dat += "
" + dat += "
" + dat += "Slot [slot_name] - " + dat += "Load slot - " + dat += "Save slot - " + dat += "Reload slot" + dat += "
" dat += "

Occupation Choices

" dat += "Set Occupation Preferences
" dat += "

Identity

" @@ -1308,12 +1304,12 @@ datum/preferences toggles ^= CHAT_GHOSTRADIO if("save") - save_preferences() - save_character() + save_preferences(user) + save_character(user) if("reload") - load_preferences() - load_character() + load_preferences(user) + load_character(user) if("open_load_dialog") if(!IsGuestKey(user.key)) @@ -1323,7 +1319,7 @@ datum/preferences close_load_dialog(user) if("changeslot") - load_character(text2num(href_list["num"])) + load_character(user,text2num(href_list["num"])) close_load_dialog(user) if("tab") @@ -1432,7 +1428,8 @@ datum/preferences character.gender = MALE proc/open_load_dialog(mob/user) - var/DBQuery/query = dbcon.NewQuery("SELECT slot,real_name FROM character WHERE ckey='[user.key]' ORDER BY slot") + + var/DBQuery/query = dbcon.NewQuery("SELECT slot,real_name FROM characters WHERE ckey='[user.ckey]' ORDER BY slot") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during character slot loading. Error : \[[err]\]\n") @@ -1445,18 +1442,21 @@ datum/preferences var/name for(var/i=1, i<=MAX_SAVE_SLOTS, i++) - if(i==query.item[1]) - name = query.item[2] - query.NextRow() + while(query.NextRow()) + if(i==text2num(query.item[1])) + name = query.item[2] if(!name) name = "Character[i]" if(i==default_slot) name = "[name]" dat += "[name]
" + name = null dat += "
" dat += "Close
" dat += "" - user << browse(dat, "window=saves;size=300x390") - +// user << browse(dat, "window=saves;size=300x390") + var/datum/browser/popup = new(user, "saves", "
Character Saves
", 300, 390) + popup.set_content(dat) + popup.open(0) proc/close_load_dialog(mob/user) - user << browse(null, "window=saves") + user << browse(null, "window=saves") \ No newline at end of file diff --git a/code/modules/client/preferences_mysql.dm b/code/modules/client/preferences_mysql.dm index ba8c4072d81..5e42466621f 100644 --- a/code/modules/client/preferences_mysql.dm +++ b/code/modules/client/preferences_mysql.dm @@ -1,6 +1,6 @@ -/datum/preferences/proc/load_preferences() +/datum/preferences/proc/load_preferences(client/C) - var/DBQuery/query = dbcon.NewQuery("SELECT ooccolor,UI_style,UI_style_color,UI_style_alpha,be_special,default_slot,toggles,sound,randomslot,volume FROM erro_player WHERE ckey='[usr.key]'") + var/DBQuery/query = dbcon.NewQuery("SELECT ooccolor,UI_style,UI_style_color,UI_style_alpha,be_special,default_slot,toggles,sound,randomslot,volume FROM erro_player WHERE ckey='[C.ckey]'") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during loading player preferences. Error : \[[err]\]\n") @@ -9,20 +9,21 @@ //general preferences - ooccolor = query.item[1] - UI_style = query.item[2] - UI_style_color = query.item[3] - UI_style_alpha = query.item[4] - be_special = query.item[5] - default_slot = query.item[6] - toggles = query.item[7] - sound = query.item[8] - randomslot = query.item[9] - volume = query.item[10] + while(query.NextRow()) + ooccolor = query.item[1] + UI_style = query.item[2] + UI_style_color = query.item[3] + UI_style_alpha = query.item[4] + be_special = query.item[5] + default_slot = query.item[6] + toggles = query.item[7] + sound = query.item[8] + randomslot = query.item[9] + volume = query.item[10] //Sanitize ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor)) - lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog)) +// lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog)) UI_style = sanitize_inlist(UI_style, list("White", "Midnight"), initial(UI_style)) be_special = sanitize_integer(be_special, 0, 65535, initial(be_special)) default_slot = sanitize_integer(default_slot, 1, MAX_SAVE_SLOTS, initial(default_slot)) @@ -34,9 +35,9 @@ volume = sanitize_integer(volume, 0, 100, initial(volume)) return 1 -/datum/preferences/proc/save_preferences() +/datum/preferences/proc/save_preferences(client/C) - var/DBQuery/query = dbcon.NewQuery("UPDATE error_player (ooccolor,UI_style,UI_style_color,UI_style_alpha,be_special,default_slot,toggles,sound,randomslot,volume) VALUES ('[ooccolor]','[UI_style]','[UI_style_color]','[UI_style_alpha]','[be_special]','[default_slot]','[toggles]','[sound]','[randomslot]','[volume]') WHERE ckey='[usr.key]'") + var/DBQuery/query = dbcon.NewQuery("UPDATE erro_player SET ooccolor='[ooccolor]',UI_style='[UI_style]',UI_style_color='[UI_style_color]',UI_style_alpha='[UI_style_alpha]',be_special='[be_special]',default_slot='[default_slot]',toggles='[toggles]',sound='[sound]',randomslot='[randomslot]',volume='[volume]' WHERE ckey='[C.ckey]'") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during saving player preferences. Error : \[[err]\]\n") @@ -44,79 +45,80 @@ return return 1 -/datum/preferences/proc/load_character(slot) +/datum/preferences/proc/load_character(client/C,slot) if(!slot) slot = default_slot slot = sanitize_integer(slot, 1, MAX_SAVE_SLOTS, initial(default_slot)) if(slot != default_slot) default_slot = slot - var/DBQuery/firstquery = dbcon.NewQuery("UPDATE error_player (default_slot) VALUES ('[slot]') WHERE ckey='[usr.key]'") + var/DBQuery/firstquery = dbcon.NewQuery("UPDATE erro_player SET default_slot=[slot] WHERE ckey='[C.ckey]'") firstquery.Execute() - var/DBQuery/query = dbcon.NewQuery("SELECT * FROM character WHERE ckey='[usr.key]' AND slot='[slot]'") + var/DBQuery/query = dbcon.NewQuery("SELECT * FROM characters WHERE ckey='[C.ckey]' AND slot='[slot]'") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during character slot loading. Error : \[[err]\]\n") message_admins("SQL ERROR during character slot loading. Error : \[[err]\]\n") return - //Character - metadata = query.item[4] - real_name = query.item[5] - be_random_name = query.item[6] - gender = query.item[7] - age = query.item[8] - species = query.item[9] - language = query.item[10] + while(query.NextRow()) + //Character + metadata = query.item[4] + real_name = query.item[5] + be_random_name = query.item[6] + gender = query.item[7] + age = query.item[8] + species = query.item[9] + language = query.item[10] - //colors to be consolidated into hex strings (requires some work with dna code) - r_hair = query.item[11] - g_hair = query.item[12] - b_hair = query.item[13] - r_facial = query.item[14] - g_facial = query.item[15] - b_facial = query.item[16] - s_tone = query.item[17] - r_skin = query.item[18] - g_skin = query.item[19] - b_skin = query.item[20] - h_style = query.item[21] - f_style = query.item[22] - r_eyes = query.item[23] - g_eyes = query.item[24] - b_eyes = query.item[25] - underwear = query.item[26] - undershirt = query.item[27] - backbag = query.item[28] - b_type = query.item[29] + //colors to be consolidated into hex strings (requires some work with dna code) + r_hair = query.item[11] + g_hair = query.item[12] + b_hair = query.item[13] + r_facial = query.item[14] + g_facial = query.item[15] + b_facial = query.item[16] + s_tone = query.item[17] + r_skin = query.item[18] + g_skin = query.item[19] + b_skin = query.item[20] + h_style = query.item[21] + f_style = query.item[22] + r_eyes = query.item[23] + g_eyes = query.item[24] + b_eyes = query.item[25] + underwear = query.item[26] + undershirt = query.item[27] + backbag = query.item[28] + b_type = query.item[29] - //Jobs - alternate_option = query.item[30] - job_civilian_high = query.item[31] - job_civilian_med = query.item[32] - job_civilian_low = query.item[33] - job_medsci_high = query.item[34] - job_medsci_med = query.item[35] - job_medsci_low = query.item[36] - job_engsec_high = query.item[37] - job_engsec_med = query.item[38] - job_engsec_low = query.item[39] - job_karma_high = query.item[40] - job_karma_med = query.item[41] - job_karma_low = query.item[42] + //Jobs + alternate_option = query.item[30] + job_civilian_high = query.item[31] + job_civilian_med = query.item[32] + job_civilian_low = query.item[33] + job_medsci_high = query.item[34] + job_medsci_med = query.item[35] + job_medsci_low = query.item[36] + job_engsec_high = query.item[37] + job_engsec_med = query.item[38] + job_engsec_low = query.item[39] + job_karma_high = query.item[40] + job_karma_med = query.item[41] + job_karma_low = query.item[42] - //Miscellaneous - flavor_text = query.item[43] - med_record = query.item[44] - sec_record = query.item[45] - gen_record = query.item[46] - be_special = query.item[47] - disabilities = query.item[48] - player_alt_titles = query.item[49] - organ_data = query.item[50] + //Miscellaneous + flavor_text = query.item[43] + med_record = query.item[44] + sec_record = query.item[45] + gen_record = query.item[46] + be_special = query.item[47] + disabilities = query.item[48] + player_alt_titles = text2list(query.item[49],",") + organ_data = text2list(query.item[50],",") - nanotrasen_relation = query.item[51] + nanotrasen_relation = query.item[51] //Sanitize metadata = sanitize_text(metadata, initial(metadata)) @@ -161,30 +163,35 @@ job_karma_high = sanitize_integer(job_karma_high, 0, 65535, initial(job_karma_high)) job_karma_med = sanitize_integer(job_karma_med, 0, 65535, initial(job_karma_med)) job_karma_low = sanitize_integer(job_karma_low, 0, 65535, initial(job_karma_low)) + disabilities = sanitize_integer(disabilities, 0, 65535, initial(disabilities)) + be_special = sanitize_integer(be_special, 0, 65535, initial(be_special)) - if(isnull(disabilities)) disabilities = 0 +// if(isnull(disabilities)) disabilities = 0 if(!player_alt_titles) player_alt_titles = new() if(!organ_data) src.organ_data = list() return 1 -/datum/preferences/proc/save_character() - var/DBQuery/firstquery = dbcon.NewQuery("SELECT slot FROM character WHERE ckey='[usr.key]' ORDER BY slot") +/datum/preferences/proc/save_character(client/C) + var/organlist + var/playertitlelist + if(!isemptylist(organ_data)) + organlist = tg_list2text(organ_data) + if(!isemptylist(player_alt_titles)) + playertitlelist = tg_list2text(player_alt_titles) + + var/DBQuery/firstquery = dbcon.NewQuery("SELECT slot FROM characters WHERE ckey='[C.ckey]' ORDER BY slot") firstquery.Execute() - var/numRow = firstquery.RowsAffected() - if(numRow) - for(var/i = 1,i <= numRow, i++) - if(default_slot != firstquery.item[1]) - firstquery.NextRow() - else - var/DBQuery/query = dbcon.NewQuery("UPDATE character (OOC_Notes,real_name,name_is_always_random,gender,age,species,language,hair_red,hair_green,hair_blue,facial_red,facial_green,facial_blue,skin_tone,skin_red,skin_green,skin_blue,hair_style_name,facial_style_name,eyes_red,eyes_green,eyes_blue,underwear,undershirt,backbag,b_type,alternate_option,job_civ_high,job_civ_med,job_civ_low,job_medsci_high,job_medsci_med,job_medsci_low,job_engsec_high,job_engsec_med,job_engsec_low,job_karma_high,job_karma_med,job_karma_low,flavor_text,med_record,sec_record,gen_record,player_alt_titles,be_special,disabilities,organ_data,nanotrasen_relation) VALUES ('[metadata]','[real_name]','[be_random_name]','[gender]','[age]','[species]','[language]','[r_hair]','[g_hair]','[b_hair]','[r_facial]','[g_facial]','[b_facial]','[s_tone]',[r_skin]','[g_skin]','[b_skin]','[h_style]','[f_style]','[r_eyes]','[g_eyes]','[b_eyes]','[underwear]','[undershirt]','[backbag]','[b_type]','[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]','[job_karma_high]','[job_karma_med]','[job_karma_low]','[flavor_text]','[med_record]','[sec_record]','[gen_record]','[player_alt_titles]','[be_special]','[disabilities]','[organ_data]','[nanotrasen_relation]') WHERE ckey='[usr.key]' AND slot='[default_slot]'") - if(!query.Execute()) - var/err = query.ErrorMsg() - log_game("SQL ERROR during character slot saving. Error : \[[err]\]\n") - message_admins("SQL ERROR during character slot saving. Error : \[[err]\]\n") - return - return 1 - var/DBQuery/query = dbcon.NewQuery("INSERT INTO character (ckey,slot,OOC_Notes,real_name,name_is_always_random,gender,age,species,language,hair_red,hair_green,hair_blue,facial_red,facial_green,facial_blue,skin_tone,skin_red,skin_green,skin_blue,hair_style_name,facial_style_name,eyes_red,eyes_green,eyes_blue,underwear,undershirt,backbag,b_type,alternate_option,job_civ_high,job_civ_med,job_civ_low,job_medsci_high,job_medsci_med,job_medsci_low,job_engsec_high,job_engsec_med,job_engsec_low,job_karma_high,job_karma_med,job_karma_low,flavor_text,med_record,sec_record,gen_record,player_alt_titles,be_special,disabilities,organ_data,nanotrasen_relation) VALUES ('[usr.key],'[default_slot]','[metadata]','[real_name]','[be_random_name]','[gender]','[age]','[species]','[language]','[r_hair]','[g_hair]','[b_hair]','[r_facial]','[g_facial]','[b_facial]','[s_tone]',[r_skin]','[g_skin]','[b_skin]','[h_style]','[f_style]','[r_eyes]','[g_eyes]','[b_eyes]','[underwear]','[undershirt]','[backbag]','[b_type]','[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]','[job_karma_high]','[job_karma_med]','[job_karma_low]','[flavor_text]','[med_record]','[sec_record]','[gen_record]','[player_alt_titles]','[be_special]','[disabilities]','[organ_data]','[nanotrasen_relation]')") + while(firstquery.NextRow()) + if(firstquery.item[1] == default_slot) + var/DBQuery/query = dbcon.NewQuery("UPDATE characters SET OOC_Notes='[metadata]',real_name='[real_name]',name_is_always_random='[be_random_name]',gender='[gender]',age='[age]',species='[species]',language='[language]',hair_red='[r_hair]',hair_green='[g_hair]',hair_blue='[b_hair]',facial_red='[r_facial]',facial_green='[g_facial]',facial_blue='[b_facial]',skin_tone='[s_tone]',skin_red='[r_skin]',skin_green='[g_skin]',skin_blue='[b_skin]',hair_style_name='[h_style]',facial_style_name='[f_style]',eyes_red='[r_eyes]',eyes_green='[g_eyes]',eyes_blue='[b_eyes]',underwear='[underwear]',undershirt='[undershirt]',backbag='[backbag]',b_type='[b_type]',alternate_option='[alternate_option]',job_civilian_high='[job_civilian_high]',job_civilian_med='[job_civilian_med]',job_civilian_low='[job_civilian_low]',job_medsci_high='[job_medsci_high]',job_medsci_med='[job_medsci_med]',job_medsci_low='[job_medsci_low]',job_engsec_high='[job_engsec_high]',job_engsec_med='[job_engsec_med]',job_engsec_low='[job_engsec_low]',job_karma_high='[job_karma_high]',job_karma_med='[job_karma_med]',job_karma_low='[job_karma_low]',flavor_text='[flavor_text]',med_record='[med_record]',sec_record='[sec_record]',gen_record='[gen_record]',player_alt_titles='[playertitlelist]',be_special='[be_special]',disabilities='[disabilities]',organ_data='[organlist]',nanotrasen_relation='[nanotrasen_relation]' WHERE ckey='[C.ckey]' AND slot='[default_slot]'") + if(!query.Execute()) + var/err = query.ErrorMsg() + log_game("SQL ERROR during character slot saving. Error : \[[err]\]\n") + message_admins("SQL ERROR during character slot saving. Error : \[[err]\]\n") + return + return 1 + var/DBQuery/query = dbcon.NewQuery("INSERT INTO characters (ckey,slot,OOC_Notes,real_name,name_is_always_random,gender,age,species,language,hair_red,hair_green,hair_blue,facial_red,facial_green,facial_blue,skin_tone,skin_red,skin_green,skin_blue,hair_style_name,facial_style_name,eyes_red,eyes_green,eyes_blue,underwear,undershirt,backbag,b_type,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,job_karma_high,job_karma_med,job_karma_low,flavor_text,med_record,sec_record,gen_record,player_alt_titles,be_special,disabilities,organ_data,nanotrasen_relation) VALUES ('[C.ckey]','[default_slot]','[metadata]','[real_name]','[be_random_name]','[gender]','[age]','[species]','[language]','[r_hair]','[g_hair]','[b_hair]','[r_facial]','[g_facial]','[b_facial]','[s_tone]','[r_skin]','[g_skin]','[b_skin]','[h_style]','[f_style]','[r_eyes]','[g_eyes]','[b_eyes]','[underwear]','[undershirt]','[backbag]','[b_type]','[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]','[job_karma_high]','[job_karma_med]','[job_karma_low]','[flavor_text]','[med_record]','[sec_record]','[gen_record]','[playertitlelist]','[be_special]','[disabilities]','[organlist]','[nanotrasen_relation]')") if(!query.Execute()) var/err = query.ErrorMsg() log_game("SQL ERROR during character slot saving. Error : \[[err]\]\n") @@ -192,16 +199,17 @@ return return 1 -/datum/preferences/proc/random_character() - var/DBQuery/query = dbcon.NewQuery("SELECT slot FROM character WHERE ckey='[usr.key]' ORDER BY slot") +/datum/preferences/proc/random_character(client/C) + var/DBQuery/query = dbcon.NewQuery("SELECT slot FROM characters WHERE ckey='[C.ckey]' ORDER BY slot") + while(query.NextRow()) var/list/saves = list() for(var/i=1, i<=MAX_SAVE_SLOTS, i++) if(i==query.item[1]) saves += i - query.NextRow() + if(!saves.len) - load_character() + load_character(C) return 0 - load_character(pick(saves)) + load_character(C,pick(saves)) return 1 \ No newline at end of file diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 91694e4fc47..3ce6dd47a9d 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -5,7 +5,7 @@ set desc = ".Toggle Between seeing all mob speech, and only speech of nearby mobs" prefs.toggles ^= CHAT_GHOSTEARS src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"]." - prefs.save_preferences() + prefs.save_preferences(src) feedback_add_details("admin_verb","TGE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggle_ghost_sight() @@ -14,7 +14,7 @@ set desc = ".Toggle Between seeing all mob emotes, and only emotes of nearby mobs" prefs.toggles ^= CHAT_GHOSTSIGHT src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"]." - prefs.save_preferences() + prefs.save_preferences(src) feedback_add_details("admin_verb","TGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggle_ghost_radio() @@ -23,7 +23,7 @@ set desc = ".Toggle between hearing all radio chatter, or only from nearby speakers" prefs.toggles ^= CHAT_GHOSTRADIO src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"]." - prefs.save_preferences() + prefs.save_preferences(src) feedback_add_details("admin_verb","TGR") /client/proc/toggle_hear_radio() @@ -32,7 +32,7 @@ set desc = "Toggle seeing radiochatter from radios and speakers" if(!holder) return prefs.toggles ^= CHAT_RADIO - prefs.save_preferences() + prefs.save_preferences(src) usr << "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers" feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -42,7 +42,7 @@ set desc = "Toggle hearing a notification when admin PMs are recieved" if(!holder) return prefs.sound ^= SOUND_ADMINHELP - prefs.save_preferences() + prefs.save_preferences(src) usr << "You will [(prefs.toggles & SOUND_ADMINHELP) ? "now" : "no longer"] hear a sound when adminhelps arrive." feedback_add_details("admin_verb","AHS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -51,7 +51,7 @@ set category = "Preferences" set desc ="Toggles seeing deadchat" prefs.toggles ^= CHAT_DEAD - prefs.save_preferences() + prefs.save_preferences(src) if(src.holder) src << "You will [(prefs.toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat." @@ -65,7 +65,7 @@ set category = "Preferences" set desc = "Toggles seeing prayers" prefs.toggles ^= CHAT_PRAYER - prefs.save_preferences() + prefs.save_preferences(src) src << "You will [(prefs.toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat." feedback_add_details("admin_verb","TP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -74,7 +74,7 @@ set category = "Preferences" set desc = "Toggles hearing the GameLobby music" prefs.sound ^= SOUND_LOBBY - prefs.save_preferences() + prefs.save_preferences(src) if(prefs.sound & SOUND_LOBBY) src << "You will now hear music in the game lobby." if(istype(mob, /mob/new_player)) @@ -101,7 +101,7 @@ set category = "Preferences" set desc = "Toggles hearing sounds uploaded by admins" prefs.sound ^= SOUND_MIDI - prefs.save_preferences() + prefs.save_preferences(src) if(prefs.sound & SOUND_MIDI) src << "You will now hear any sounds uploaded by admins." else @@ -116,7 +116,7 @@ set category = "Preferences" set desc = "Toggles seeing OutOfCharacter chat" prefs.toggles ^= CHAT_OOC - prefs.save_preferences() + prefs.save_preferences(src) src << "You will [(prefs.toggles & CHAT_OOC) ? "now" : "no longer"] see messages on the OOC channel." feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -126,7 +126,7 @@ set category = "Preferences" set desc = "Toggles seeing Local OutOfCharacter chat" prefs.toggles ^= CHAT_LOOC - prefs.save_preferences() + prefs.save_preferences(src) src << "You will [(prefs.toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel." feedback_add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -136,7 +136,7 @@ set category = "Preferences" set desc = "Toggles hearing ambient sound effects" prefs.sound ^= SOUND_AMBIENCE - prefs.save_preferences() + prefs.save_preferences(src) if(prefs.sound & SOUND_AMBIENCE) src << "You will now hear ambient sounds." else @@ -153,7 +153,7 @@ var/role_flag = be_special_flags[role] if(!role_flag) return prefs.be_special ^= role_flag - prefs.save_preferences() + prefs.save_preferences(src) src << "You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible)." feedback_add_details("admin_verb","TBeSpecial") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -189,7 +189,7 @@ prefs.UI_style = UI_style_new prefs.UI_style_alpha = UI_style_alpha_new prefs.UI_style_color = UI_style_color_new - prefs.save_preferences() + prefs.save_preferences(src) usr << "UI was saved" /client/verb/toggle_media() @@ -198,7 +198,7 @@ set desc = "Toggle hearing streaming media (radios, jukeboxes, etc)" prefs.sound ^= SOUND_STREAMING - prefs.save_preferences() + prefs.save_preferences(src) usr << "You will [(prefs.toggles & SOUND_STREAMING) ? "now" : "no longer"] hear streamed media." // Restart. media.stop_music() diff --git a/code/modules/media/mediamanager.dm b/code/modules/media/mediamanager.dm index b2bdfb20d7c..46103722c68 100644 --- a/code/modules/media/mediamanager.dm +++ b/code/modules/media/mediamanager.dm @@ -135,4 +135,4 @@ function SetMusic(url, time, volume) { media.update_volume(value) if(prefs) prefs.volume = value - prefs.save_preferences() + prefs.save_preferences(src)