搜索附件  

新的属性范例.rar

 

【教程】让汝的游戏多一个属性(类似于HP、SP):
本来想把这功能放的将要发布的游戏当中的说- - 也不知道是否曾经有人发布过这类的教程。
我还是厚颜无耻地发表一下。
这有什么用处呢。?主要是能为你的游戏增加一个除了HPSP以外的另外一个P。(这里暂时盗用TP)
方便那些想做点什么的人 - -,本教程纯属渣物,有一定脚本功底的人慎入。
通过这个教程可以任由汝增加多少P哦。从AP-ZP都可以 ( - -!
教程前言:
在更改脚本之前要先备份哦!小心餐具。
一、增加TP的变量
我们都知道,游戏中HPMP相关的变量基本上是HP、SP或者MAXHP、MAXSP,所以要填加一个TP,也必须添上与其相同的变量。
控制战斗者的部分主要是Game_Battler,于是大家可以打开脚本编辑器找到Game_Battler 1,在一开始的变量设置里增加一个变量。
  1. attr_reader   :tp            #TP复制代码
复制代码
再在初始化对象里增加几行字
  1. @tp = 0@maxtp_plus = 0复制代码
复制代码
由于在原脚本中本就定义了HP和MAXTP_PLUS,我们也要照做。
二、仿照HP、MP设置设定TP的最大值及其变动
继续翻啊翻,我们可以翻到这么一处脚本
  1. #--------------------------------------------------------------------------  # ● 获取 MaxSP  #--------------------------------------------------------------------------复制代码
复制代码
把其复制一遍,或手动敲入,改成
  1. #--------------------------------------------------------------------------  # ● 获取 MaxTP  #--------------------------------------------------------------------------  def maxtp    n = [[base_maxtp + @maxtp_plus, 0].max, 9999].min    n = [[Integer(n), 0].max, 9999].min    return n  end复制代码
复制代码
类似的,找到设置MAXSP的地方,照样的。。。
  1. #--------------------------------------------------------------------------  # ● 设置 MaxTP  #     maxtp : 新的 MaxTP  #--------------------------------------------------------------------------  def maxtp=(maxtp)    @maxtp_plus += maxtp - self.maxtp    @maxtp_plus = [[@maxtp_plus, -9999].max, 9999].min    @tp = [@tp, self.maxtp].min  end复制代码
复制代码
再增加控制TP改变的地方。
  1. #--------------------------------------------------------------------------  # ● 更改 TP  #     tp : 新的 TP  #--------------------------------------------------------------------------  def tp=(tp)    @tp = [[tp, maxtp].min, 0].max  end复制代码
复制代码
如果汝还需要在全恢复时增加TP,在全恢复(recover_all)里增加这么一行
  1. @tp = maxtp复制代码
复制代码
设置到这里还不够,回到脚本选择框。
找到Game_Actor
在设置中跟 HP、SP一样增加
  1. @tp = maxtp复制代码
复制代码
  1. @maxtp_plus = 0复制代码
复制代码
找到
  1. #--------------------------------------------------------------------------  # ● 获取基本 MaxSP  #--------------------------------------------------------------------------  def base_maxsp    return $data_actors[@actor_id].parameters[1, @level]  end复制代码
复制代码
这段有什么用呢?这段是获取当前角色最大SP值用的。如果这里设置错了那么整个系统就全部报废了哦。
跟上面一样,复制一遍再把所有的SP改为TP,但是这里要注意了,默认的档案里是没有TP的曲线的。我们需要自己动手增加一条直线(只能是直线- -)
  1. $data_actors[@actor_id].parameters[1, @level]复制代码
复制代码
改为
  1. @level * 40 + 20# 40为你每级增加的数,20为0级的初始值#照此,1级为60,2级为100复制代码
复制代码
当然了,你也可以把它设置的不同一点。比如说,根据职业的不同- -
  1. case @class_idwhen 1return @level * 50 + 1when 2when 3when 4...end复制代码
复制代码
这段怎么用呢?case 比较直白的说是获取某个变量的值,在..的情况下,执行什么脚本
例如,在职业为1的情况下,角色的TP初始值为1,每级增加50哦。
在改变等级时,也要改变TP的大小- -
找到
  1. #--------------------------------------------------------------------------  # ● 更改 EXP  #     exp : 新的 EXP  #--------------------------------------------------------------------------  def exp=(exp)复制代码
复制代码
,在END前填加
  1. @tp = [@tp, self.maxtp].min复制代码
复制代码
这样就在游戏里彻底增加了这么一个变量。
三、TP的显示
太简单了,仿照Window_Base 里的显示HP、MP,自己敲进去这么一段[code] #--------------------------------------------------------------------------  #     actor : 角色  #     x     : 描画目标 X 坐标  #     y     : 描画目标 Y 坐标  #     width : 描画目标的宽  #--------------------------------------------------------------------------  def draw_actor_tp(actor, x, y, width = 144)    # 描绘字符串 "TP"     self.contents.font.color = system_color    self.contents.draw_text(x, y, 32, 32, "TP")    # 计算描绘 MaxTP 所需的空间    if width - 32 >= 108      sp_x = x + width - 108      flag = true    elsif width - 32 >= 48      sp_x = x + width - 48      flag = false    end    # 描绘 TP    self.contents.font.color = actor.tp == 0 ? knockout_color :      actor.tp

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2024-9-21 16:34 , Processed in 0.039298 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.