Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------------------------------
- -- Constants and variables
- --------------------------------------------------------------------------------
- local player_notes = database.read("player_notes") or {}
- local player_list = ui.reference("PLAYERS", "Players", "Player list")
- local callbacks = {}
- --------------------------------------------------------------------------------
- -- Utility functions
- --------------------------------------------------------------------------------
- local function update_players()
- for i=0, 64 do
- local steamid = entity.get_steam64(i)
- if steamid ~= 0 and steamid ~= nil then
- if player_notes[steamid] == nil then
- player_notes[steamid] = string.format("Player added at: %d:%d:%d", client.system_time())
- end
- end
- end
- end
- local function set_callback(reference, func)
- if callbacks[reference] == nil then
- callbacks[reference] = {ui.get(reference)}
- end
- table.insert(callbacks[reference], func)
- end
- local function handle_callbacks()
- for reference, data in pairs(callbacks) do
- local value = ui.get(reference)
- local call = value ~= data[1]
- if call then
- for i=2, #data do
- xpcall(data[i], client.error_log, reference)
- end
- end
- data[1] = value
- end
- client.delay_call(0.01, handle_callbacks)
- end
- handle_callbacks()
- --------------------------------------------------------------------------------
- -- Menu handling
- --------------------------------------------------------------------------------
- local enabled = ui.new_checkbox("PLAYERS", "Adjustments", "Player notes")
- local note_text = ui.new_textbox("PLAYERS", "Adjustments", "\nNote textbox")
- local function handle_menu()
- local state = ui.get(enabled)
- ui.set_visible(note_text, state)
- end
- handle_menu()
- ui.set_callback(enabled, handle_menu)
- local function update_note_text(ref)
- if not ui.get(enabled) then
- return
- end
- local entindex = ui.get(ref)
- local ent_steam64 = entity.get_steam64(entindex)
- if ent_steam64 == nil then
- return
- end
- if player_notes[ent_steam64] == nil then update_players() end
- ui.set(note_text, player_notes[ent_steam64])
- end
- local function update_textbox(ref)
- if not ui.get(enabled) then
- return
- end
- local note = ui.get(ref)
- local entindex = ui.get(player_list)
- local ent_steam64 = entity.get_steam64(entindex)
- if ent_steam64 == nil then
- return
- end
- player_notes[ent_steam64] = note
- end
- set_callback(note_text, update_textbox)
- set_callback(player_list, update_note_text)
- --------------------------------------------------------------------------------
- -- Game event handling
- --------------------------------------------------------------------------------
- local function player_connect()
- if not ui.get(enabled) then
- return
- end
- update_players()
- end
- local function round_start()
- if not ui.get(enabled) then
- return
- end
- update_players()
- end
- local function shutdown()
- database.write("player_notes", player_notes)
- end
- client.set_event_callback("shutdown", shutdown)
- client.set_event_callback("round_start", round_start)
- client.set_event_callback("player_connect", player_connect)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement