mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-07-11 08:16:17 +01:00
[MIRROR] reimplements attack and player logs (#12553)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
bb90e792ca
commit
99afe463dc
@@ -4,7 +4,6 @@
|
||||
|
||||
if(!check_rights(R_MOD,0) && !check_rights(R_BAN)) return
|
||||
|
||||
establish_db_connection()
|
||||
if(!SSdbcore.IsConnected())
|
||||
return
|
||||
|
||||
@@ -126,7 +125,6 @@
|
||||
if(job)
|
||||
sql += " AND job = '[job]'"
|
||||
|
||||
establish_db_connection()
|
||||
if(!SSdbcore.IsConnected())
|
||||
return
|
||||
|
||||
@@ -224,7 +222,6 @@
|
||||
|
||||
var/sql = "SELECT ckey FROM erro_ban WHERE id = [id]"
|
||||
|
||||
establish_db_connection()
|
||||
if(!SSdbcore.IsConnected())
|
||||
return
|
||||
|
||||
@@ -276,7 +273,6 @@
|
||||
if(!check_rights_for(user, R_BAN))
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if(!SSdbcore.IsConnected())
|
||||
to_chat(usr, span_filter_adminlog("[span_red("Failed to establish database connection")]"))
|
||||
return
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
var/ckeytext = ckey(key)
|
||||
|
||||
if(!establish_db_connection())
|
||||
if(!SSdbcore.IsConnected())
|
||||
var/msg = "Ban database connection failure. Key [ckeytext] not checked"
|
||||
log_world(msg)
|
||||
message_admins(msg)
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/atom/var/lastattacker = null
|
||||
/mob/var/lastattacked = null
|
||||
/mob/var/attack_log = list( )
|
||||
/mob/var/dialogue_log = list( )
|
||||
|
||||
/proc/log_and_message_admins(var/message as text, var/mob/user = usr)
|
||||
log_admin(user ? "[key_name(user)] [message]" : "EVENT [message]")
|
||||
@@ -17,30 +15,3 @@
|
||||
|
||||
log_admin("[english_list(user_keys)] [message]")
|
||||
message_admins("[english_list(user_keys)] [message]")
|
||||
/* Old procs
|
||||
/proc/admin_attack_log(var/mob/attacker, var/mob/victim, var/attacker_message, var/victim_message, var/admin_message)
|
||||
if(victim)
|
||||
victim.attack_log += text("\[[time_stamp()]\]" + span_orange(" [key_name(attacker)] - [victim_message]"))
|
||||
if(attacker)
|
||||
attacker.attack_log += text("\[[time_stamp()]\]" + span_red(" [key_name(victim)] - [attacker_message]"))
|
||||
|
||||
msg_admin_attack("[key_name(attacker)] [admin_message] [key_name(victim)] (INTENT: [attacker? uppertext(attacker.a_intent) : "N/A"]) (<A href='byond://?_src_=holder;adminplayerobservecoodjump=1;X=[attacker.x];Y=[attacker.y];Z=[attacker.z]'>JMP</a>)")
|
||||
|
||||
/proc/admin_attacker_log_many_victims(var/mob/attacker, var/list/mob/victims, var/attacker_message, var/victim_message, var/admin_message)
|
||||
if(!victims || !victims.len)
|
||||
return
|
||||
|
||||
for(var/mob/victim in victims)
|
||||
admin_attack_log(attacker, victim, attacker_message, victim_message, admin_message)
|
||||
|
||||
/proc/admin_inject_log(mob/attacker, mob/victim, obj/item, reagents, amount_transferred, violent=0)
|
||||
if(violent)
|
||||
violent = "violently "
|
||||
else
|
||||
violent = ""
|
||||
admin_attack_log(attacker,
|
||||
victim,
|
||||
"used \the [weapon] to [violent]inject - [reagents] - [amount_transferred]u transferred",
|
||||
"was [violent]injected with \the [weapon] - [reagents] - [amount_transferred]u transferred",
|
||||
"used \the [weapon] to [violent]inject [reagents] ([amount_transferred]u transferred) into")
|
||||
*/
|
||||
|
||||
@@ -1,65 +1,84 @@
|
||||
/client/proc/cmd_admin_check_player_logs(mob/living/M as mob in GLOB.mob_list)
|
||||
set category = "Admin.Logs"
|
||||
set name = "Check Player Attack Logs"
|
||||
set desc = "Check a player's attack logs."
|
||||
|
||||
show_cmd_admin_check_player_logs(M)
|
||||
ADMIN_VERB_ONLY_CONTEXT_MENU(cmd_admin_check_player_logs, R_ADMIN|R_MOD, "Check Mob Logs", mob/living/player in GLOB.mob_list)
|
||||
user.show_cmd_admin_check_player_logs(player.logging, player.name, player.ckey, player.mind?.special_role)
|
||||
|
||||
//Views specific attack logs belonging to one player.
|
||||
/client/proc/show_cmd_admin_check_player_logs(mob/living/M)
|
||||
var/dat = span_bold("[M]'s Attack Log:<HR>")
|
||||
dat += span_bold("Viewing attack logs of [M]") + " - (Played by ([key_name(M)]).<br>"
|
||||
if(M.mind)
|
||||
dat += span_bold("Current Antag?:") + " [(M.mind.special_role)?"Yes":"No"]<br>"
|
||||
dat += "<br>" + span_bold("Note:") + " This is arranged from earliest to latest. <br><br>"
|
||||
/client/proc/show_cmd_admin_check_player_logs(list/mob_data, target_name, target_ckey, target_special)
|
||||
if(CONFIG_GET(flag/database_logging))
|
||||
var/datum/db_query/query = SSdbcore.NewQuery("SELECT mid,time,ckey,mob,area,color,type,message from erro_dialog WHERE ckey = :t_ckey", list("t_ckey" = ckey))
|
||||
if(!query.Execute())
|
||||
to_chat(src, span_admin("Database query error"))
|
||||
qdel(query)
|
||||
return
|
||||
|
||||
var/list/data = list()
|
||||
while(query.NextRow())
|
||||
var/list/timestamped_message = list(
|
||||
"event_id" = query.item[1],
|
||||
"time" = query.item[2],
|
||||
"ckey" = query.item[3],
|
||||
"name" = query.item[4],
|
||||
"loc" = query.item[5],
|
||||
"color" = query.item[6],
|
||||
"message" = query.item[8]
|
||||
)
|
||||
var/entry_type = query.item[7]
|
||||
if(!islist(data[entry_type]))
|
||||
data[entry_type] = list()
|
||||
UNTYPED_LIST_ADD(data[entry_type], timestamped_message)
|
||||
qdel(query)
|
||||
if(!length(data))
|
||||
to_chat(src, span_admin("No data found."))
|
||||
return
|
||||
admin_log_view_target(data, target_name, target_ckey, target_special)
|
||||
return
|
||||
if(!length(mob_data))
|
||||
to_chat(src, span_admin("No data found."))
|
||||
return
|
||||
admin_log_view_target(mob_data, target_name, target_ckey, target_special)
|
||||
|
||||
if(!isemptylist(M.attack_log))
|
||||
dat += "<fieldset style='border: 2px solid white; display: inline'>"
|
||||
for(var/l in M.attack_log)
|
||||
dat += "[l]<br>"
|
||||
ADMIN_VERB(persistent_client_logs, R_ADMIN|R_MOD, "Check Player Logs", "Displays the client logs of the selected ckey.", ADMIN_CATEGORY_LOGS)
|
||||
var/mob/living/selected_key = tgui_input_list(user, "Select a ckey to check their logs", "Ckey", GLOB.persistent_clients_by_ckey)
|
||||
if(!selected_key)
|
||||
return
|
||||
|
||||
dat += "</fieldset>"
|
||||
var/datum/persistent_client/selected = GLOB.persistent_clients_by_ckey[selected_key]
|
||||
|
||||
else
|
||||
dat += span_italics("No attack logs found for [M].")
|
||||
user.show_cmd_admin_check_player_logs(selected.logging, selected.mob?.name, selected_key, selected.mob?.mind?.special_role)
|
||||
|
||||
var/datum/browser/popup = new(usr, "admin_attack_log", "[src]", 650, 650, src)
|
||||
popup.set_content(jointext(dat,null))
|
||||
popup.open()
|
||||
/client/proc/admin_log_view_target(list/log_data, name, ckey, special, use_db)
|
||||
var/datum/player_log_viwer/log_view = new(log_data, name, ckey, special)
|
||||
log_view.tgui_interact(mob)
|
||||
|
||||
onclose(usr, "admin_attack_log")
|
||||
/datum/player_log_viwer
|
||||
var/list/log_data
|
||||
var/target_name
|
||||
var/target_ckey
|
||||
var/special_role
|
||||
|
||||
feedback_add_details("admin_verb","PL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/player_log_viwer/tgui_close(mob/user)
|
||||
. = ..()
|
||||
log_data = null
|
||||
|
||||
/client/proc/cmd_admin_check_dialogue_logs(mob/living/M as mob in GLOB.mob_list)
|
||||
set category = "Admin.Logs"
|
||||
set name = "Check Player Dialogue Logs"
|
||||
set desc = "Check a player's dialogue logs."
|
||||
show_cmd_admin_check_dialogue_logs(M)
|
||||
/datum/player_log_viwer/New(list/data, name, ckey, special)
|
||||
. = ..()
|
||||
log_data = data
|
||||
target_name = name
|
||||
target_ckey = ckey
|
||||
special_role = special
|
||||
|
||||
//Views specific dialogue logs belonging to one player.
|
||||
/client/proc/show_cmd_admin_check_dialogue_logs(mob/living/M)
|
||||
var/dat = span_bold("[M]'s Dialogue Log:<HR>")
|
||||
dat += span_bold("Viewing say and emote logs of [M]") + " - (Played by ([key_name(M)]).<br>"
|
||||
if(M.mind)
|
||||
dat += span_bold("Current Antag?:") + " [(M.mind.special_role)?"Yes":"No"]<br>"
|
||||
dat += "<br>" + span_bold("Note:") + " This is arranged from earliest to latest. <br><br>"
|
||||
/datum/player_log_viwer/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "PlayerLogViewer")
|
||||
ui.open()
|
||||
|
||||
if(!isemptylist(M.dialogue_log))
|
||||
dat += "<fieldset style='border: 2px solid white; display: inline'>"
|
||||
/datum/player_log_viwer/tgui_state(mob/user)
|
||||
return ADMIN_STATE(R_ADMIN|R_MOD)
|
||||
|
||||
for(var/d in M.dialogue_log)
|
||||
dat += "[d]<br>"
|
||||
|
||||
dat += "</fieldset>"
|
||||
else
|
||||
dat += span_italics("No dialogue logs found for [M].")
|
||||
var/datum/browser/popup = new(usr, "admin_dialogue_log", "[src]", 650, 650, src)
|
||||
popup.set_content(jointext(dat,null))
|
||||
popup.open()
|
||||
|
||||
onclose(usr, "admin_dialogue_log")
|
||||
|
||||
|
||||
feedback_add_details("admin_verb","PDL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/player_log_viwer/tgui_static_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
|
||||
return list(
|
||||
"entries" = log_data,
|
||||
"name" = target_name,
|
||||
"ckey" = target_ckey,
|
||||
"special" = special_role
|
||||
)
|
||||
|
||||
@@ -20,8 +20,6 @@ GLOBAL_LIST_INIT(admin_verbs_admin, list(
|
||||
/client/proc/cmd_admin_pm_context, //right-click adminPM interface,
|
||||
/client/proc/cmd_admin_pm_panel, //admin-pm list,
|
||||
/client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head',
|
||||
/client/proc/cmd_admin_check_player_logs, //checks a player's attack logs,
|
||||
/client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs,
|
||||
/datum/admins/proc/access_news_network, //allows access of newscasters,
|
||||
/client/proc/jumptocoord, //we ghost and jump to a coordinate,
|
||||
/client/proc/Getmob, //teleports a mob to our location,
|
||||
@@ -174,8 +172,6 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list(
|
||||
/datum/admins/proc/toggleguests,
|
||||
/datum/admins/proc/announce,
|
||||
/client/proc/cmd_admin_subtle_message,
|
||||
/client/proc/cmd_admin_check_player_logs,
|
||||
/client/proc/cmd_admin_check_dialogue_logs,
|
||||
/datum/admins/proc/access_news_network,
|
||||
/client/proc/cmd_admin_direct_narrate,
|
||||
/client/proc/cmd_admin_world_narrate,
|
||||
@@ -277,8 +273,6 @@ GLOBAL_LIST_INIT(admin_verbs_event_manager, list(
|
||||
/client/proc/cmd_admin_pm_context, //right-click adminPM interface,
|
||||
/client/proc/cmd_admin_pm_panel, //admin-pm list,
|
||||
/client/proc/cmd_admin_subtle_message, //send an message to somebody as a 'voice in their head',
|
||||
/client/proc/cmd_admin_check_player_logs, //checks a player's attack logs,
|
||||
/client/proc/cmd_admin_check_dialogue_logs, //checks a player's dialogue logs,
|
||||
/datum/admins/proc/access_news_network, //allows access of newscasters,
|
||||
/client/proc/jumptocoord, //we ghost and jump to a coordinate,
|
||||
/client/proc/Getmob, //teleports a mob to our location,
|
||||
|
||||
@@ -683,7 +683,6 @@ ADMIN_VERB(removetickets, R_ADMIN, "Security Tickets", "Allows one to remove tic
|
||||
|
||||
var/dat = "<HEAD><TITLE>Book Inventory Management</TITLE></HEAD><BODY>\n"
|
||||
dat += "<h3>ADMINISTRATIVE MANAGEMENT</h3>"
|
||||
establish_db_connection()
|
||||
|
||||
if(!SSdbcore.IsConnected())
|
||||
dat += span_red(span_bold("ERROR") + ": Unable to contact External Archive. Please contact your system administrator for assistance.")
|
||||
|
||||
@@ -69,7 +69,7 @@ DEBUG
|
||||
GLOB.jobban_keylist=list()
|
||||
log_admin("jobban_keylist was empty")
|
||||
else
|
||||
if(!establish_db_connection())
|
||||
if(!SSdbcore.IsConnected())
|
||||
log_sql("Database connection failed. Reverting to the legacy ban system.")
|
||||
CONFIG_SET(flag/ban_legacy_system, TRUE)
|
||||
jobban_loadbanfile()
|
||||
|
||||
@@ -39,4 +39,4 @@
|
||||
if((M.mind && M.mind.special_role && A && A.can_hear_aooc) || isobserver(M)) // Antags must have their type be allowed to AOOC to see AOOC. This prevents, say, ERT from seeing AOOC.
|
||||
to_chat(M, span_ooc(span_aooc("[create_text_tag("aooc", "Antag-OOC:", M.client)] <EM>[player_display]:</EM> " + span_message("[msg]"))))
|
||||
|
||||
src.mob.log_talk("(AOOC) [msg]", LOG_OOC)
|
||||
src.mob.log_talk("(AOOC) [msg]", LOG_OOC, color="#ff0000")
|
||||
|
||||
@@ -31,7 +31,6 @@ GLOBAL_VAR_INIT(inactive_keys, "None<br>")
|
||||
if(GLOB.checked_for_inactives)
|
||||
return
|
||||
|
||||
establish_db_connection()
|
||||
if(!SSdbcore.IsConnected())
|
||||
return
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
else
|
||||
log_admin("Database already disconnected")
|
||||
|
||||
establish_db_connection()
|
||||
var/errno = SSdbcore.ErrorMsg()
|
||||
if(errno)
|
||||
log_admin("Database connection returned error message `[errno]`. Aborting.")
|
||||
|
||||
Reference in New Issue
Block a user