Prevents players from joining with unackd warnings (#7509)

This commit is contained in:
Werner
2019-12-01 14:03:32 +01:00
committed by GitHub
parent d788aeff3a
commit 45bab622d9
5 changed files with 70 additions and 4 deletions
+14
View File
@@ -222,6 +222,7 @@
query.Execute(list("warning_id" = warning_id))
warnings_check()
fetch_unacked_warning_count()
/client/proc/notifications_acknowledge(var/id)
if(!id)
@@ -275,6 +276,19 @@
return data
/*
* A proc used to gather if someone has Unacknowledged Warnings
*/
/client/proc/fetch_unacked_warning_count()
establish_db_connection(dbcon)
if (!dbcon.IsConnected())
return
var/DBQuery/warning_count_query = dbcon.NewQuery("SELECT COUNT(*) FROM ss13_warnings WHERE (visible = 1 AND acknowledged = 0 AND expired = 0) AND (ckey = :ckey: OR computerid = :computer_id: OR ip = :address:)")
warning_count_query.Execute(list("ckey" = ckey, "computer_id" = computer_id, "address" = address))
if(warning_count_query.NextRow())
unacked_warning_count = text2num(warning_count_query.item[1])
return unacked_warning_count
/*
* A proc for an admin/moderator to look up a member's warnings.
*/
+1
View File
@@ -57,6 +57,7 @@
var/need_saves_migrated = "Requires database" //Used to determine whether or not the ckey needs their saves migrated over to the database. Default is 0 upon successful connection.
var/account_age = -1 // Age on the BYOND account in days.
var/account_join_date = null // Date of the BYOND account creation in ISO 8601 format.
var/unacked_warning_count = 0
preload_rsc = 1
+6 -4
View File
@@ -380,6 +380,10 @@
if(SStheming)
SStheming.apply_theme_from_perfs(src)
// Server greeting shenanigans.
if (server_greeting.find_outdated_info(src, 1))
server_greeting.display_to_client(src)
/client/proc/InitClient()
if(initialized)
return
@@ -436,15 +440,13 @@
send_resources()
// Server greeting shenanigans.
if (server_greeting.find_outdated_info(src, 1))
server_greeting.display_to_client(src)
// Check code/modules/admin/verbs/antag-ooc.dm for definition
add_aooc_if_necessary()
check_ip_intel()
fetch_unacked_warning_count()
initialized = TRUE
//////////////
@@ -106,6 +106,9 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
if (config.sql_saves && !client.prefs.current_character)
alert(src, "You have not saved your character yet. Please do so before readying up.")
return
if(client.unacked_warning_count > 0)
to_chat(src, alert("You can not ready up, because you have unacknowledged warnings. Acknowledge your warnings in OOC->Warnings and Notifications."))
return
ready = text2num(href_list["ready"])
else
@@ -193,6 +196,10 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
to_chat(usr, "<span class='danger'>The station is currently exploding. Joining would go poorly.</span>")
return
if(client.unacked_warning_count > 0)
to_chat(src, alert("You can not join the game, because you have unacknowledged warnings. Acknowledge your warnings in OOC->Warnings and Notifications."))
return
var/datum/species/S = all_species[client.prefs.species]
if((S.spawn_flags & IS_WHITELISTED) && !is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist)
to_chat(src, alert("You are currently not whitelisted to play [client.prefs.species]."))