赞 | 3 |
VIP | 32 |
好人卡 | 0 |
积分 | 1 |
经验 | 14756 |
最后登录 | 2021-5-30 |
在线时间 | 579 小时 |
Lv1.梦旅人 小小的百鬼夜行<
- 梦石
- 0
- 星屑
- 54
- 在线时间
- 579 小时
- 注册时间
- 2010-7-29
- 帖子
- 2682
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 退屈£无聊 于 2010-10-24 14:39 编辑
本来想把这功能放的将要发布的游戏当中的说- - 也不知道是否曾经有人发布过这类的教程。
我还是厚颜无耻地发表一下。
这有什么用处呢。?主要是能为你的游戏增加一个除了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
- #--------------------------------------------------------------------------
复制代码 把其复制一遍,或手动敲入,改成- #--------------------------------------------------------------------------
- # ● 获取 MaxTP
- #--------------------------------------------------------------------------
- def maxtp
- n = [[base_maxtp + @maxtp_plus, 0].max, 9999].min
- n = [[Integer(n), 0].max, 9999].min
- return n
- end
复制代码 类似的,找到设置MAXSP的地方,照样的。。。- #--------------------------------------------------------------------------
- # ● 设置 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改变的地方。- #--------------------------------------------------------------------------
- # ● 更改 TP
- # tp : 新的 TP
- #--------------------------------------------------------------------------
- def tp=(tp)
- @tp = [[tp, maxtp].min, 0].max
- end
复制代码 如果汝还需要在全恢复时增加TP,在全恢复(recover_all)里增加这么一行设置到这里还不够,回到脚本选择框。
找到Game_Actor
在设置中跟 HP、SP一样增加和找到- #--------------------------------------------------------------------------
- # ● 获取基本 MaxSP
- #--------------------------------------------------------------------------
- def base_maxsp
- return $data_actors[@actor_id].parameters[1, @level]
- end
复制代码 这段有什么用呢?这段是获取当前角色最大SP值用的。如果这里设置错了那么整个系统就全部报废了哦。
跟上面一样,复制一遍再把所有的SP改为TP,但是这里要注意了,默认的档案里是没有TP的曲线的。我们需要自己动手增加一条直线(只能是直线- -)
把- $data_actors[@actor_id].parameters[1, @level]
复制代码 改为- @level * 40 + 20
- # 40为你每级增加的数,20为0级的初始值
- #照此,1级为60,2级为100
复制代码 当然了,你也可以把它设置的不同一点。比如说,根据职业的不同- -- case @class_id
- when 1
- return @level * 50 + 1
- when 2
- when 3
- when 4
- ...
- end
复制代码 这段怎么用呢?case 比较直白的说是获取某个变量的值,在..的情况下,执行什么脚本。
例如,在职业为1的情况下,角色的TP初始值为1,每级增加50哦。
在改变等级时,也要改变TP的大小- -
找到- #--------------------------------------------------------------------------
- # ● 更改 EXP
- # exp : 新的 EXP
- #--------------------------------------------------------------------------
- def exp=(exp)
复制代码 ,在END前填加- @tp = [@tp, self.maxtp].min
复制代码 这样就在游戏里彻底增加了这么一个变量。
三、TP的显示
太简单了,仿照Window_Base 里的显示HP、MP,自己敲进去这么一段- #--------------------------------------------------------------------------
- # 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
复制代码 在所有draw_acotr_hp后都增加draw_actor_tp,注意x\y的值哦。
四、使用TP
变量做出来了不用可不行。但默认的游戏编辑器没有办法执行啊。?怎么办呢。?
比方说我在用第一个技能(治疗)时,要求必须有50点体力。
找到Game_Actor的可以使用特技判定,增加- if $data_skills[skill_id].id == 1
- return false if @tp < 50
- end
复制代码 这样就能保证在TP低于50时不能使用该技能。
如果要在使用后减少体力,则 = =
找到Scene_Battle 4 中的● 生成特技行动结果
在扣除SP后增加- if @skill.id == 1
- @active_battler.tp -= 50
- end
复制代码 这样就能在使用时扣除50点体力了。
(喂,你可别告诉我只能在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作加法减法乘法除法随汝的便了。
同样的,按照技能的方法设定就可以了。 |
评分
-
查看全部评分
|