| 
 
| 赞 | 3 |  
| VIP | 32 |  
| 好人卡 | 0 |  
| 积分 | 1 |  
| 经验 | 14756 |  
| 最后登录 | 2021-5-30 |  
| 在线时间 | 579 小时 |  
 Lv1.梦旅人 小小的百鬼夜行< 
	梦石0 星屑54 在线时间579 小时注册时间2010-7-29帖子2682 
 | 
| 
本帖最后由 退屈£无聊 于 2010-10-24 14:39 编辑
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
  本来想把这功能放的将要发布的游戏当中的说- - 也不知道是否曾经有人发布过这类的教程。 我还是厚颜无耻地发表一下。
 这有什么用处呢。?主要是能为你的游戏增加一个除了HPSP以外的另外一个P。(这里暂时盗用TP)
 方便那些想做点什么的人 - -,本教程纯属渣物,有一定脚本功底的人慎入。
 通过这个教程可以任由汝增加多少P哦。从AP-ZP都可以 ( - -!
  ) 教程前言:
 在更改脚本之前要先备份哦!小心餐具。
 一、增加TP的变量
 我们都知道,游戏中HPMP相关的变量基本上是HP、SP或者MAXHP、MAXSP,所以要填加一个TP,也必须添上与其相同的变量。
 控制战斗者的部分主要是Game_Battler,于是大家可以打开脚本编辑器找到Game_Battler 1,在一开始的变量设置里增加一个变量。再在初始化对象里增加几行字由于在原脚本中本就定义了HP和MAXTP_PLUS,我们也要照做。
   二、仿照HP、MP设置设定TP的最大值及其变动
 继续翻啊翻,我们可以翻到这么一处脚本
 把其复制一遍,或手动敲入,改成复制代码#--------------------------------------------------------------------------
  # ● 获取 MaxSP
  #--------------------------------------------------------------------------
类似的,找到设置MAXSP的地方,照样的。。。复制代码#--------------------------------------------------------------------------
  # ● 获取 MaxTP
  #--------------------------------------------------------------------------
  def maxtp
    n = [[base_maxtp + @maxtp_plus, 0].max, 9999].min
    n = [[Integer(n), 0].max, 9999].min
    return n
  end
再增加控制TP改变的地方。复制代码#--------------------------------------------------------------------------
  # ● 设置 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,在全恢复(recover_all)里增加这么一行设置到这里还不够,回到脚本选择框。复制代码#--------------------------------------------------------------------------
  # ● 更改 TP
  #     tp : 新的 TP
  #--------------------------------------------------------------------------
  def tp=(tp)
    @tp = [[tp, maxtp].min, 0].max
  end
找到Game_Actor
 在设置中跟 HP、SP一样增加和找到
 这段有什么用呢?这段是获取当前角色最大SP值用的。如果这里设置错了那么整个系统就全部报废了哦。复制代码#--------------------------------------------------------------------------
  # ● 获取基本 MaxSP
  #--------------------------------------------------------------------------
  def base_maxsp
    return $data_actors[@actor_id].parameters[1, @level]
  end
跟上面一样,复制一遍再把所有的SP改为TP,但是这里要注意了,默认的档案里是没有TP的曲线的。我们需要自己动手增加一条直线(只能是直线- -)
 把
 改为复制代码$data_actors[@actor_id].parameters[1, @level]
当然了,你也可以把它设置的不同一点。比如说,根据职业的不同- -复制代码@level * 40 + 20
# 40为你每级增加的数,20为0级的初始值
#照此,1级为60,2级为100
 这段怎么用呢?case 比较直白的说是获取某个变量的值,在..的情况下,执行什么脚本。复制代码case @class_id
when 1
return @level * 50 + 1
when 2
when 3
when 4
...
end
  例如,在职业为1的情况下,角色的TP初始值为1,每级增加50哦。
 在改变等级时,也要改变TP的大小- -
   找到
 ,在END前填加复制代码#--------------------------------------------------------------------------
  # ● 更改 EXP
  #     exp : 新的 EXP
  #--------------------------------------------------------------------------
  def exp=(exp)
这样就在游戏里彻底增加了这么一个变量。复制代码@tp = [@tp, self.maxtp].min
三、TP的显示
 太简单了,仿照Window_Base 里的显示HP、MP,自己敲进去这么一段
 在所有draw_acotr_hp后都增加draw_actor_tp,注意x\y的值哦。复制代码 #--------------------------------------------------------------------------
  #     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 <= actor.maxtp / 4 ? crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.tp.to_s, 2)
    # 描绘 MaxTP
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxtp.to_s)
    end
  end
四、使用TP
 变量做出来了不用可不行。但默认的游戏编辑器没有办法执行啊。?怎么办呢。?
 比方说我在用第一个技能(治疗)时,要求必须有50点体力。
 找到Game_Actor的可以使用特技判定,增加
 这样就能保证在TP低于50时不能使用该技能。复制代码if $data_skills[skill_id].id == 1
      return false if @tp < 50
    end
如果要在使用后减少体力,则  = =
 找到Scene_Battle 4 中的● 生成特技行动结果
 在扣除SP后增加
 这样就能在使用时扣除50点体力了。复制代码if @skill.id == 1
      @active_battler.tp -= 50
    end
(喂,你可别告诉我只能在ID为1情况下才能用哦。)
 最终效果图
 
   
   物品同理。光耗费体力不恢复也是不行的。至于这个……基本上把skill改为item就大功告成了- -
   编辑哟==给伸手党的福音==以下是工程
 
  新的属性范例.rar
(285.49 KB, 下载次数: 1638) 但还是鼓励各位自己动手试试。
 =================编辑一之敌人TP的设定====================
 我到现在还没想好敌人弄那么复杂干什么。
 不过既然有人问了,那我就告诉你好了。
 敌人的设定是在Game_Enemy中的。
 同样的,我们复制一遍并作相应改动。复制代码#--------------------------------------------------------------------------
  # ● 获取基本 MaxSP
  #--------------------------------------------------------------------------
  def base_maxsp
    return $data_enemies[@enemy_id].maxsp
  end
但是呢,敌人没有等级这一个属性。。
 所以你也可以直接把SP搬过来用。
 或者对SPHP作加法减法乘法除法随汝的便了。
 同样的,按照技能的方法设定就可以了。
 | 
 评分
查看全部评分
 |