Advertisement
NmChris

Notes

Sep 19th, 2019
1,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.38 KB | None | 0 0
  1. --------------------------------------------------------------------------------
  2. -- Constants and variables
  3. --------------------------------------------------------------------------------
  4. local player_notes  = database.read("player_notes") or {}
  5. local player_list   = ui.reference("PLAYERS", "Players", "Player list")
  6. local callbacks     = {}
  7.  
  8. --------------------------------------------------------------------------------
  9. -- Utility functions
  10. --------------------------------------------------------------------------------
  11. local function update_players()
  12.     for i=0, 64 do
  13.         local steamid = entity.get_steam64(i)
  14.         if steamid ~= 0 and steamid ~= nil then
  15.             if player_notes[steamid] == nil then
  16.                 player_notes[steamid] = string.format("Player added at: %d:%d:%d", client.system_time())
  17.             end
  18.         end
  19.     end
  20. end
  21.  
  22. local function set_callback(reference, func)
  23.     if callbacks[reference] == nil then
  24.         callbacks[reference] = {ui.get(reference)}
  25.     end
  26.     table.insert(callbacks[reference], func)
  27. end
  28.  
  29. local function handle_callbacks()
  30.     for reference, data in pairs(callbacks) do
  31.         local value = ui.get(reference)
  32.         local call = value ~= data[1]
  33.         if call then
  34.             for i=2, #data do
  35.                 xpcall(data[i], client.error_log, reference)
  36.             end
  37.         end
  38.         data[1] = value
  39.     end
  40.     client.delay_call(0.01, handle_callbacks)
  41. end
  42.  
  43. handle_callbacks()
  44. --------------------------------------------------------------------------------
  45. -- Menu handling
  46. --------------------------------------------------------------------------------
  47. local enabled   = ui.new_checkbox("PLAYERS", "Adjustments", "Player notes")
  48. local note_text = ui.new_textbox("PLAYERS", "Adjustments", "\nNote textbox")
  49.  
  50. local function handle_menu()
  51.     local state = ui.get(enabled)
  52.     ui.set_visible(note_text, state)
  53. end
  54.  
  55. handle_menu()
  56. ui.set_callback(enabled, handle_menu)
  57.  
  58. local function update_note_text(ref)
  59.     if not ui.get(enabled) then
  60.         return
  61.     end
  62.     local entindex = ui.get(ref)
  63.     local ent_steam64 = entity.get_steam64(entindex)
  64.     if ent_steam64 == nil then
  65.         return
  66.     end
  67.     if player_notes[ent_steam64] == nil then update_players() end
  68.     ui.set(note_text, player_notes[ent_steam64])
  69. end
  70.  
  71. local function update_textbox(ref)
  72.     if not ui.get(enabled) then
  73.         return
  74.     end
  75.     local note = ui.get(ref)
  76.     local entindex = ui.get(player_list)
  77.     local ent_steam64 = entity.get_steam64(entindex)
  78.     if ent_steam64 == nil then
  79.         return
  80.     end
  81.     player_notes[ent_steam64] = note
  82. end
  83.  
  84. set_callback(note_text, update_textbox)
  85. set_callback(player_list, update_note_text)
  86.  
  87. --------------------------------------------------------------------------------
  88. -- Game event handling
  89. --------------------------------------------------------------------------------
  90. local function player_connect()
  91.     if not ui.get(enabled) then
  92.         return
  93.     end
  94.     update_players()
  95. end
  96.  
  97. local function round_start()
  98.     if not ui.get(enabled) then
  99.         return
  100.     end
  101.     update_players()
  102. end
  103.  
  104. local function shutdown()
  105.     database.write("player_notes", player_notes)
  106. end
  107.  
  108. client.set_event_callback("shutdown", shutdown)
  109. client.set_event_callback("round_start", round_start)
  110. client.set_event_callback("player_connect", player_connect)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement