CheatingDeathManager.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using CommonAI.Zone.Instance;
  2. using CommonLang;
  3. using CommonLang.Protocol;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using XmdsCommonServer.Message;
  10. using XmdsCommonServer.Plugin.Units;
  11. using XmdsServerNode.Node;
  12. namespace XmdsServerNode.CheatingDeath
  13. {
  14. public static class CheatingDeathManager
  15. {
  16. public static void Init(Properties cfg_prop)
  17. {
  18. CheatingDeathConfig.Load(cfg_prop);
  19. }
  20. private const string MOVE_SPEED_CHECKER_KEY = "__MoveSpeedChecker";
  21. /// <summary>
  22. /// 玩家进入场景时,绑定反作弊
  23. /// </summary>
  24. /// <param name="player"></param>
  25. public static void OnPlayerEnter(InstancePlayer player)
  26. {
  27. if (CheatingDeathConfig.ENABLE_MOVE_SPEED_CHECKER)
  28. {
  29. var mc = player.GetAttributeAs<MoveSpeedChecker>(MOVE_SPEED_CHECKER_KEY);
  30. if (mc == null)
  31. {
  32. mc = new MoveSpeedChecker(player);
  33. player.SetAttribute(MOVE_SPEED_CHECKER_KEY, mc);
  34. }
  35. }
  36. }
  37. /// <summary>
  38. /// 发送单位异常到服务器
  39. /// </summary>
  40. /// <param name="actor"></param>
  41. /// <param name="reason"></param>
  42. public static void SendPlayerException(InstancePlayer actor, string reason)
  43. {
  44. var exp = new PlayerExceptionEventB2R();
  45. exp.playerId = actor.PlayerUUID;
  46. exp.instanceId = actor.Parent.UUID;
  47. exp.reason = reason;
  48. actor.queueEvent(exp);
  49. }
  50. }
  51. }