找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 56|回复: 0

魔兽世界sf服务端mangos端中强制限制玩家速度的代码

[复制链接]
发表于 2024-11-12 19:27:51 | 显示全部楼层 |阅读模式
魔兽世界sf服务端mangos端中强制限制玩家速度的代码
比较老的代码了。现在已经有了很多其他的方式来实现玩家速度的控制,所以下面的代码只是以个参考
(供研究和学习MANGOS使用)
  1. Index: src/game/Player.cpp
  2. ===================================================================
  3. --- src/game/Player.cpp (revision 6564)
  4. +++ src/game/Player.cpp (working copy)
  5. @@ -416,6 +416,15 @@
  6. m_miniPet = 0;
  7. m_bgAfkReportedTimer = 0;

  8. + baseMoveSpeed[MOVE_WALK] = 2.5f * sWorld.getRate(RATE_CHARSPEED);
  9. + baseMoveSpeed[MOVE_RUN] = 7.0f * sWorld.getRate(RATE_CHARSPEED);
  10. + baseMoveSpeed[MOVE_WALKBACK] = 1.25f * sWorld.getRate(RATE_CHARSPEED);
  11. + baseMoveSpeed[MOVE_SWIM] = 4.722222f * sWorld.getRate(RATE_CHARSPEED);
  12. + baseMoveSpeed[MOVE_SWIMBACK] = 4.5f * sWorld.getRate(RATE_CHARSPEED);
  13. + baseMoveSpeed[MOVE_TURN] = 3.141594f * sWorld.getRate(RATE_CHARSPEED);
  14. + baseMoveSpeed[MOVE_FLY] = 7.0f * sWorld.getRate(RATE_CHARSPEED);
  15. + baseMoveSpeed[MOVE_FLYBACK] = 4.5f * sWorld.getRate(RATE_CHARSPEED);
  16. +
  17. m_declinedname = NULL;
  18. }

  19. Index: src/game/Unit.cpp
  20. ===================================================================
  21. --- src/game/Unit.cpp (revision 6564)
  22. +++ src/game/Unit.cpp (working copy)
  23. @@ -46,18 +46,6 @@

  24. #include <math.h>

  25. -float baseMoveSpeed[MAX_MOVE_TYPE] =
  26. -{
  27. - 2.5f, // MOVE_WALK
  28. - 7.0f, // MOVE_RUN
  29. - 1.25f, // MOVE_WALKBACK
  30. - 4.722222f, // MOVE_SWIM
  31. - 4.5f, // MOVE_SWIMBACK
  32. - 3.141594f, // MOVE_TURN
  33. - 7.0f, // MOVE_FLY
  34. - 4.5f, // MOVE_FLYBACK
  35. -};
  36. -
  37. // auraTypes contains attacker auras capable of proc'ing cast auras
  38. static Unit::AuraTypeSet GenerateAttakerProcCastAuraTypes()
  39. {
  40. @@ -226,6 +214,16 @@
  41. // remove aurastates allowing special moves
  42. for(int i=0; i < MAX_REACTIVE; ++i)
  43. m_reactiveTimer = 0;
  44. +
  45. + baseMoveSpeed[MOVE_WALK] = 2.5f;
  46. + baseMoveSpeed[MOVE_RUN] = 7.0f;
  47. + baseMoveSpeed[MOVE_WALKBACK] = 1.25f;
  48. + baseMoveSpeed[MOVE_SWIM] = 4.722222f;
  49. + baseMoveSpeed[MOVE_SWIMBACK] = 4.5f;
  50. + baseMoveSpeed[MOVE_TURN] = 3.141594f;
  51. + baseMoveSpeed[MOVE_FLY] = 7.0f;
  52. + baseMoveSpeed[MOVE_FLYBACK] = 4.5f;
  53. +
  54. }

  55. Unit::~Unit()
  56. Index: src/game/Unit.h
  57. ===================================================================
  58. --- src/game/Unit.h (revision 6564)
  59. +++ src/game/Unit.h (working copy)
  60. @@ -1267,6 +1267,8 @@

  61. uint32 m_reactiveTimer[MAX_REACTIVE];

  62. + float baseMoveSpeed[MAX_MOVE_TYPE];
  63. +
  64. private:
  65. void SendAttackStop(Unit* victim); // only from AttackStop(Unit*)
  66. void SendAttackStart(Unit* pVictim); // only from Unit::AttackStart(Unit*)
  67. Index: src/game/World.cpp
  68. ===================================================================
  69. --- src/game/World.cpp (revision 6564)
  70. +++ src/game/World.cpp (working copy)
  71. @@ -386,6 +386,12 @@
  72. sLog.outError("Rate.Talent (%f) mustbe > 0. Using 1 instead.",rate_values[RATE_TALENT]);
  73. rate_values[RATE_TALENT] = 1;
  74. }
  75. + rate_values[RATE_CHARSPEED] = sConfig.GetFloatDefault("Rate.CharSpeed",1);
  76. + if(rate_values[RATE_CHARSPEED] < 0)
  77. + {
  78. + sLog.outError("Rate.CharSpeed (%f) mustbe > 0. Using 1 instead.",rate_values[RATE_CHARSPEED]);
  79. + rate_values[RATE_CHARSPEED] = 1;
  80. + }
  81. rate_values[RATE_CORPSE_DECAY_LOOTED] = sConfig.GetFloatDefault("Rate.Corpse.Decay.Looted",0.1f);

  82. rate_values[RATE_TARGET_POS_RECALCULATION_RANGE] = sConfig.GetFloatDefault("TargetPosRecalculateRange",1.5f);
  83. Index: src/game/World.h
  84. ===================================================================
  85. --- src/game/World.h (revision 6564)
  86. +++ src/game/World.h (working copy)
  87. @@ -204,6 +204,7 @@
  88. RATE_DURABILITY_LOSS_PARRY,
  89. RATE_DURABILITY_LOSS_ABSORB,
  90. RATE_DURABILITY_LOSS_BLOCK,
  91. + RATE_CHARSPEED,
  92. MAX_RATES
  93. };

  94. Index: src/mangosd/mangosd.conf.in
  95. ===================================================================
  96. --- src/mangosd/mangosd.conf.in (revision 6564)
  97. +++ src/mangosd/mangosd.conf.in (working copy)
  98. @@ -831,6 +831,9 @@
  99. # Talent Point rates
  100. # Default: 1
  101. #
  102. +# Rate.CharSpeed
  103. +# Multiply the Default Player Speed (1 - Default, 1.4 - 40% faster, 0.5 - Half Movement Speed)
  104. +#
  105. # Rate.Reputation.Gain
  106. # Reputation Gain rate
  107. # Default: 1
  108. @@ -912,6 +915,7 @@
  109. Rate.Mining.Amount = 1
  110. Rate.Mining.Next = 1
  111. Rate.Talent = 1
  112. +Rate.CharSpeed = 1
  113. Rate.Reputation.Gain = 1
  114. Rate.InstanceResetTime = 1
  115. SkillGain.Crafting = 1
复制代码

Archiver|手机版|小黑屋|网单游戏

GMT+8, 2026-11-6 15:54 , Processed in 0.036744 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表