diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 3f5713f295f..5da3d8cad2d 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -252,7 +252,8 @@ 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(player.client) + if(player.client.prefs.randomslot) + player.client.prefs.load_random_character_slot(player.client) Debug("DO, Len: [unassigned.len]") if(unassigned.len == 0) return 0 diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index 09cef84894c..ba51996f4e7 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -1963,6 +1963,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts if("randomslot") randomslot = !randomslot + if(isnewplayer(usr)) + var/mob/new_player/N = usr + N.new_player_panel_proc() if("hear_midis") sound ^= SOUND_MIDI @@ -2188,26 +2191,26 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts /datum/preferences/proc/open_load_dialog(mob/user) var/DBQuery/query = dbcon.NewQuery("SELECT slot,real_name FROM [format_table_name("characters")] WHERE ckey='[user.ckey]' ORDER BY slot") + var/list/slotnames[max_save_slots] + + 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 + while(query.NextRow()) + slotnames[text2num(query.item[1])] = query.item[2] var/dat = "" dat += "
" dat += "Select a character slot to load
" var/name - for(var/i=1, i<=max_save_slots, i++) - 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 - while(query.NextRow()) - if(i==text2num(query.item[1])) - name = query.item[2] - if(!name) name = "Character[i]" - if(i==default_slot) + for(var/i in 1 to max_save_slots) + name = slotnames[i] || "Character [i]" + if(i == default_slot) name = "[name]" dat += "[name]
" - name = null dat += "
" dat += "Close
" diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm index 581daf222d3..2713ae2dd7c 100644 --- a/code/modules/client/preference/preferences_mysql.dm +++ b/code/modules/client/preference/preferences_mysql.dm @@ -500,21 +500,24 @@ return return 1 -/* -/datum/preferences/proc/random_character(client/C) +/datum/preferences/proc/load_random_character_slot(client/C) var/DBQuery/query = dbcon.NewQuery("SELECT slot FROM [format_table_name("characters")] WHERE ckey='[C.ckey]' ORDER BY slot") + var/list/saves = list() + + if(!query.Execute()) + var/err = query.ErrorMsg() + log_game("SQL ERROR during random character slot picking. Error : \[[err]\]\n") + message_admins("SQL ERROR during random character slot picking. Error : \[[err]\]\n") + return while(query.NextRow()) - var/list/saves = list() - for(var/i=1, i<=MAX_SAVE_SLOTS, i++) - if(i==text2num(query.item[1])) - saves += i + saves += text2num(query.item[1]) if(!saves.len) load_character(C) return 0 load_character(C,pick(saves)) - return 1*/ + return 1 /datum/preferences/proc/SetChangelog(client/C,hash) lastchangelog=hash diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 20640edce66..bccd7990de9 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -25,6 +25,8 @@ /mob/new_player/proc/new_player_panel_proc() var/real_name = client.prefs.real_name + if(client.prefs.randomslot) + real_name = "Random Character Slot" var/output = "

Setup Character
[real_name]

" if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) @@ -169,6 +171,9 @@ to_chat(usr, "\blue There is an administrative lock on entering the game!") return + if(client.prefs.randomslot) + client.prefs.load_random_character_slot(client) + if(client.prefs.species in whitelisted_species) if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species]."))