Project1

标题: 有关TP与MP、HP之间的问题 [打印本页]

作者: ljxis008    时间: 2014-2-22 23:22
标题: 有关TP与MP、HP之间的问题
有没有什么办法让TP变成另一种MP、HP的样子,或者直接加一种新的MP或HP条
就是TP最大值会随等级改变,可以通过物品恢复、使用等等
作者: sh0016    时间: 2014-2-23 03:40
本帖最后由 sh0016 于 2014-2-23 04:25 编辑

最大HP跟最大MP是param,这个需要用脚本,谷歌下vx ace new param可以找到很多相关脚本。

简单点的方式就是指定最大TP = 6项数值中的一个(比如幸运什么的),或以数值为基础计算(像 MTP = LUK*2 之类的算式)。
下面这脚本基本算完整了(大概),已经内附在主菜单画面绘制TP条的功能。在第20行可修改公式。
  1. #==============================================================================
  2. # ▼ 修改TP,将其变为与HP、MP类似的数值
  3. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  4. # 注:请在第 20 行修改计算公式。
  5. #==============================================================================

  6. #==============================================================================
  7. # ■ Game_BattlerBase
  8. #------------------------------------------------------------------------------
  9. #  管理战斗者的类。主要含有能力值计算的方法。Game_Battler 类的父类。
  10. #==============================================================================

  11. class Game_BattlerBase
  12.   #--------------------------------------------------------------------------
  13.   # OverWrite: 获取 TP 的最大值
  14.   #               (注意在所有数值前附加“self.”)
  15.   #--------------------------------------------------------------------------
  16.   def max_tp
  17.     #计算公式。例子:幸运的2倍
  18.     self.luk * 2
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # OverWrite: 获取 TP 的比率
  22.   #--------------------------------------------------------------------------
  23.   def tp_rate
  24.     @tp.to_f / max_tp
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # OverWrite: 完全恢复
  28.   #--------------------------------------------------------------------------
  29.   def recover_all
  30.     clear_states
  31.     @hp = mhp
  32.     @mp = mmp
  33.     @tp = max_tp
  34.   end
  35. end
  36.   
  37. #==============================================================================
  38. # ■ Game_Battler
  39. #------------------------------------------------------------------------------
  40. #  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
  41. #==============================================================================

  42. class Game_Battler < Game_BattlerBase
  43.   #--------------------------------------------------------------------------
  44.   # OverWrite: 战斗开始处理
  45.   #--------------------------------------------------------------------------
  46.   def on_battle_start
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # OverWrite: 战斗结束处理
  50.   #--------------------------------------------------------------------------
  51.   def on_battle_end
  52.     @result.clear
  53.     remove_battle_states
  54.     remove_all_buffs
  55.     clear_actions
  56.     appear
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # OverWrite: 被伤害时的处理
  60.   #--------------------------------------------------------------------------
  61.   def on_damage(value)
  62.     remove_states_by_damage
  63.   end
  64. end

  65. #==============================================================================
  66. # ■ Game_Enemy
  67. #------------------------------------------------------------------------------
  68. #  管理敌人的类。本类在 Game_Troop 类 ($game_troop) 的内部使用。
  69. #==============================================================================

  70. class Game_Enemy < Game_Battler
  71.   #--------------------------------------------------------------------------
  72.   # Alias: 初始化对象
  73.   #--------------------------------------------------------------------------
  74.   alias orig_initialize initialize
  75.   def initialize(index, enemy_id)
  76.     orig_initialize(index, enemy_id)
  77.     @tp = max_tp # 设置敌人的TP,可以无视
  78.   end
  79. end

  80. #==============================================================================
  81. # ■ Window_Base
  82. #------------------------------------------------------------------------------
  83. #  游戏中所有窗口的父类
  84. #==============================================================================

  85. class Window_Base < Window
  86.   #--------------------------------------------------------------------------
  87.   # OverWrite: 绘制 TP
  88.   #--------------------------------------------------------------------------
  89.   def draw_actor_tp(actor, x, y, width = 124)
  90.     draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
  91.     change_color(system_color)
  92.     draw_text(x, y, 30, line_height, Vocab::tp_a)
  93.     draw_current_and_max_values(x, y, width, actor.tp.to_i, actor.max_tp.to_i,
  94.       tp_color(actor), normal_color)
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # OverWrite: 绘制简单的状态
  98.   #--------------------------------------------------------------------------
  99.   def draw_actor_simple_status(actor, x, y)
  100.     y -= line_height / 2
  101.     draw_actor_name(actor, x, y)
  102.     draw_actor_class(actor, x, y + line_height * 1)
  103.     draw_actor_level(actor, x, y + line_height * 2)
  104.     draw_actor_icons(actor, x, y + line_height * 3)
  105.     draw_actor_hp(actor, x + 120, y)
  106.     draw_actor_mp(actor, x + 120, y + line_height * 1)
  107.     draw_actor_tp(actor, x + 120, y + line_height * 2)
  108.   end
  109. end
复制代码
里面还对怪物的TP也进行设置了,使用的时候注意这点(不需要的话可以删掉那一段)。
其他使用方式基本和原本一样,应该不会造成太多麻烦。

顺便说下这是自己写的(虽然不是什么厉害的脚本,但请允许我宣称自己的劳动结果{:2_253:})。




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