HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2.  
  3. #define CC_COLORS_TYPE CC_COLORS_SHORT
  4. #include <cromchat>
  5.  
  6. #define PLUGIN_VERSION "2.0"
  7. #define MAX_MESSAGE_LENGTH 192
  8. #define MAX_DEMO_NAME_LENGTH 64
  9. #define MAX_TIME_LENGTH 32
  10. #define DEMO_MESSAGES 2
  11. #define REPLACER_SYMBOL "_"
  12.  
  13. #define ARG_NAME "<name>"
  14. #define ARG_NAME_FULL "<name>.dem"
  15. #define ARG_TIME "<time>"
  16.  
  17. new const g_szSymbols[][] = { " ", ":", ".", "*", "/", "|", "\", "?", ">", "<" }
  18.  
  19. enum _:Cvars
  20. {
  21. dem_delay,
  22. dem_msg_delay,
  23. dem_name,
  24. dem_message,
  25. dem_message2,
  26. dem_time_format
  27. }
  28.  
  29. enum _:CvarValues
  30. {
  31. Float:cv_dem_delay,
  32. Float:cv_dem_msg_delay,
  33. cv_dem_name[MAX_DEMO_NAME_LENGTH],
  34. cv_dem_message[MAX_MESSAGE_LENGTH],
  35. cv_dem_message2[MAX_MESSAGE_LENGTH],
  36. cv_dem_time_format[MAX_TIME_LENGTH]
  37. }
  38.  
  39. new g_eCvars[Cvars], g_eCvarValues[CvarValues]
  40.  
  41. public plugin_init()
  42. {
  43. register_plugin("Simple Demo Recorder", PLUGIN_VERSION, "OciXCrom")
  44. register_cvar("CRXDemoRecorder", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
  45.  
  46. g_eCvars[dem_delay] = register_cvar("dem_delay", "15.0") //Néhány másodperc után jelentkezzen be a kiszolgálóra a bemutató rögzítésének megkezdéséhez.
  47. g_eCvars[dem_msg_delay] = register_cvar("dem_msg_delay", "0.1") //A bemutató néhány másodperces felvétele után a csevegési üzenetek elküldésre kerülnek.
  48. g_eCvars[dem_name] = register_cvar("dem_name", "CRX Auto Demo") //Demó neve
  49. g_eCvars[dem_message] = register_cvar("dem_message", "!g[!tPrefix!g] !nMost felvesszük hogyan játszol, !gcstrike !nmappában található: !t<name>") //Első üzenet.
  50. g_eCvars[dem_message2] = register_cvar("dem_message2", "!g[!tPrefix!g] !nDemo felvétele elkezdödőtt: !t<time>") //Második üzenet
  51. g_eCvars[dem_time_format] = register_cvar("dem_time_format", "%X") //Az idő megjelenítésének módja
  52. }
  53.  
  54. public plugin_cfg()
  55. {
  56. g_eCvarValues[cv_dem_delay] = _:get_pcvar_float(g_eCvars[dem_delay])
  57. g_eCvarValues[cv_dem_msg_delay] = _:get_pcvar_float(g_eCvars[dem_msg_delay])
  58. get_pcvar_string(g_eCvars[dem_name], g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]))
  59. get_pcvar_string(g_eCvars[dem_message], g_eCvarValues[cv_dem_message], charsmax(g_eCvarValues[cv_dem_message]))
  60. get_pcvar_string(g_eCvars[dem_message2], g_eCvarValues[cv_dem_message2], charsmax(g_eCvarValues[cv_dem_message2]))
  61. get_pcvar_string(g_eCvars[dem_time_format], g_eCvarValues[cv_dem_time_format], charsmax(g_eCvarValues[cv_dem_time_format]))
  62.  
  63. for(new i; i < sizeof(g_szSymbols); i++)
  64. replace_all(g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]), g_szSymbols[i], REPLACER_SYMBOL)
  65.  
  66. add(g_eCvarValues[cv_dem_name], charsmax(g_eCvarValues[cv_dem_name]), ".dem")
  67. }
  68.  
  69. public client_putinserver(id)
  70. set_task(g_eCvarValues[cv_dem_delay], "StartRecording", id)
  71.  
  72. public StartRecording(id)
  73. {
  74. if(!is_user_connected(id))
  75. return
  76.  
  77. client_cmd(id, "stop; record ^"%s^"", g_eCvarValues[cv_dem_name])
  78. set_task(g_eCvarValues[cv_dem_msg_delay], "SendMessages", id)
  79. }
  80.  
  81. public SendMessages(id)
  82. {
  83. if(!is_user_connected(id))
  84. return
  85.  
  86. new szMessage[DEMO_MESSAGES][MAX_MESSAGE_LENGTH]
  87. copy(szMessage[0], charsmax(szMessage[]), g_eCvarValues[cv_dem_message])
  88. copy(szMessage[1], charsmax(szMessage[]), g_eCvarValues[cv_dem_message2])
  89.  
  90. for(new i; i < DEMO_MESSAGES; i++)
  91. {
  92. apply_replacements(szMessage[i], charsmax(szMessage[]))
  93. CC_SendMessage(id, szMessage[i])
  94. }
  95. }
  96.  
  97. apply_replacements(szMessage[], const iLen)
  98. {
  99. replace_all(szMessage, iLen, ARG_NAME, g_eCvarValues[cv_dem_name])
  100.  
  101. if(contain(szMessage, ARG_TIME) != -1)
  102. {
  103. new szTime[MAX_TIME_LENGTH]
  104. get_time(g_eCvarValues[cv_dem_time_format], szTime, charsmax(szTime))
  105. replace_all(szMessage, iLen, ARG_TIME, szTime)
  106. }
  107. }
  108.