Project1

标题: MZ明雷式敌人的问题 [打印本页]

作者: 南瓜阿呆    时间: 2022-10-26 23:31
标题: MZ明雷式敌人的问题
单纯的事件靠近玩家然后开始战斗我会做

我想要的增加效果是这样的:

1.玩家靠近敌人(事件)后,敌人头顶出现一个感叹号,然后开始追击玩家
2.当玩家等级达到一定程度后,这些敌人就不好主动追击玩家,甚至开始逃跑
作者: 古树旋律    时间: 2022-10-26 23:31
参考脚本 MOG_EventSensor.js。这个是当玩家距离事件步数为X时,事件将自动开启独立开关Y,X在事件中设置,Y在脚本插件中设置。
  1. //=============================================================================
  2. // MOG_EventSensor.js
  3. //=============================================================================

  4. /*:
  5. * @target MZ
  6. * @plugindesc (v1.0) Sistema de distância de eventos.
  7. * @author Moghunter
  8. *
  9. * @param Self Switch Key
  10. * @desc Definição da Letra da SelfSwitch
  11. * @default D
  12. *
  13. * @help  
  14. * =============================================================================
  15. * +++ MOG - Event Sensor (v1.0) +++
  16. * By Moghunter
  17. * https://atelierrgss.wordpress.com/
  18. * =============================================================================
  19. * Sistema de distância de eventos.
  20. * Dependendo da distância entre o jogador e o evento a página pré determinada
  21. * do evento poderá ser ativada ou não.
  22. * =============================================================================
  23. * Para definir a distância do sensor do evento coloque este comentário no
  24. * evento.
  25. *
  26. * event sensor : X
  27. *
  28. */

  29. //=============================================================================
  30. // ** PLUGIN PARAMETERS
  31. //=============================================================================
  32.   var Imported = Imported || {};
  33.   Imported.MOG_EventSensor = true;
  34.   var Moghunter = Moghunter || {};

  35.    Moghunter.parameters = PluginManager.parameters('MOG_EventSensor');
  36.     Moghunter.sensor_range_key = String(Moghunter.parameters['Self Switch Key'] || "D");

  37. //=============================================================================
  38. // ** Character Base
  39. //=============================================================================

  40. //==============================
  41. // * Init Members
  42. //==============================
  43. var _alias_mog_evensensor_cbase_initMembers = Game_CharacterBase.prototype.initMembers;
  44. Game_CharacterBase.prototype.initMembers = function() {
  45.     _alias_mog_evensensor_cbase_initMembers.call(this);
  46.         this._sensor_range = [false,0];
  47. };

  48. //=============================================================================
  49. // ** Sprite Character
  50. //=============================================================================

  51. //==============================
  52. // * Initialize
  53. //==============================
  54. var _alias_mog_evensensor_schar_initialize = Sprite_Character.prototype.initialize;
  55. Sprite_Character.prototype.initialize = function(character) {
  56.     _alias_mog_evensensor_schar_initialize.call(this,character);
  57.         if (this._character && this._character._eventId) {this._character.check_event_sensor()};
  58. };

  59. //=============================================================================
  60. // ** Scene Map
  61. //=============================================================================

  62. //==============================
  63. // * Terminate
  64. //==============================
  65. var _alias_mog_evensensor_terminate = Scene_Map.prototype.terminate;
  66. Scene_Map.prototype.terminate = function() {
  67.         _alias_mog_evensensor_terminate.call(this);
  68.     $gameMap.events().forEach(function(event) {
  69.         if (event._sensor_range[0]) {$gameSelfSwitches.setValue(event.sensor_key(),false)};
  70.     }, this);       
  71. };

  72. //=============================================================================
  73. // ** Game Event
  74. //=============================================================================

  75. //==============================
  76. // * Setup Page
  77. //==============================
  78. var _alias_mog_evensensor_gevent_setupPage = Game_Event.prototype.setupPage;
  79. Game_Event.prototype.setupPage = function() {
  80.         _alias_mog_evensensor_gevent_setupPage.call(this);
  81.     this.check_event_sensor();
  82. };

  83. //==============================
  84. // * Check Event Sensor
  85. //==============================
  86. Game_Event.prototype.check_event_sensor = function() {
  87.         if (!this._erased && this.page()) {this.list().forEach(function(l) {
  88.                if (l.code === 108) {var comment = l.parameters[0].split(' : ');
  89.                            if (comment[0].toLowerCase() == "event sensor"){
  90.                  this._sensor_range = [true,Number(Math.abs(comment[1]))];
  91.                                  this._need_clear_sensor = false;                          
  92.                            };
  93.                 };
  94.         }, this);};
  95. };

  96. //==============================
  97. // * Update
  98. //==============================
  99. var _mog_event_sensor_gev_update = Game_Event.prototype.update;
  100. Game_Event.prototype.update = function() {
  101.         _mog_event_sensor_gev_update.call(this);
  102.         if (this.needUpdateSensor()) {this.update_sensor()};
  103. };

  104. //==============================
  105. // * Need Update Sensor
  106. //==============================
  107. Game_Event.prototype.needUpdateSensor = function() {
  108.         if (!this._sensor_range[0]) {return false};       
  109.         return true;
  110. };

  111. //==============================
  112. // * Sensor Dis
  113. //==============================
  114. Game_Event.prototype.sensor_dis = function() {
  115.   return Math.abs($gamePlayer.x - this.x) + Math.abs($gamePlayer.y - this.y);
  116. };

  117. //==============================
  118. // * Sensor Key
  119. //==============================
  120. Game_Event.prototype.sensor_key = function() {
  121.    return [this._mapId, this._eventId, Moghunter.sensor_range_key];
  122. };

  123. //==============================
  124. // * Update Sensor
  125. //==============================
  126. Game_Event.prototype.update_sensor = function() {
  127.       var enable   = (this.sensor_dis() <=  this._sensor_range[1]);
  128.       var last_enable = $gameSelfSwitches.value(this.sensor_key());
  129.       if (enable != last_enable) {this.sensor_effect(enable)};
  130. };

  131. //==============================
  132. // * Sensor Effect
  133. //==============================
  134. Game_Event.prototype.sensor_effect = function(enable) {
  135.         $gameSelfSwitches.setValue(this.sensor_key(),enable);
  136. };
复制代码

作者: 古树旋律    时间: 2022-10-27 13:53




简单举例,【事件页1】就是普通事件,然后加个注释 event sensor : 4   代表距离玩家4步时切换为独立开关D(D是我在脚本插件中设定的)
然后【事件页2】就是玩家距离4步的时候,这个页面就可以设置成 靠近主角 或者是其他移动路径了。

核心就是这样。
作者: 南瓜阿呆    时间: 2022-10-27 15:27
古树旋律 发表于 2022-10-27 13:53
简单举例,【事件页1】就是普通事件,然后加个注释 event sensor : 4   代表距离玩家4步时切换为独立开 ...

明白了!感谢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1