设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 10327|回复: 16
打印 上一主题 下一主题

[原创发布] 【教程】让汝的游戏多一个属性(类似于HP、SP)

[复制链接]

Lv1.梦旅人

小小的百鬼夜行<

梦石
0
星屑
54
在线时间
579 小时
注册时间
2010-7-29
帖子
2682

贵宾

跳转到指定楼层
1
发表于 2010-10-10 10:49:13 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 退屈£无聊 于 2010-10-24 14:39 编辑

本来想把这功能放的将要发布的游戏当中的说- - 也不知道是否曾经有人发布过这类的教程。
我还是厚颜无耻地发表一下。
这有什么用处呢。?主要是能为你的游戏增加一个除了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
  2. @maxtp_plus = 0
复制代码
由于在原脚本中本就定义了HP和MAXTP_PLUS,我们也要照做。
二、仿照HP、MP设置设定TP的最大值及其变动
继续翻啊翻,我们可以翻到这么一处脚本
  1. #--------------------------------------------------------------------------
  2.   # ● 获取 MaxSP
  3.   #--------------------------------------------------------------------------
复制代码
把其复制一遍,或手动敲入,改成
  1. #--------------------------------------------------------------------------
  2.   # ● 获取 MaxTP
  3.   #--------------------------------------------------------------------------
  4.   def maxtp
  5.     n = [[base_maxtp + @maxtp_plus, 0].max, 9999].min
  6.     n = [[Integer(n), 0].max, 9999].min
  7.     return n
  8.   end
复制代码
类似的,找到设置MAXSP的地方,照样的。。。
  1. #--------------------------------------------------------------------------
  2.   # ● 设置 MaxTP
  3.   #     maxtp : 新的 MaxTP
  4.   #--------------------------------------------------------------------------
  5.   def maxtp=(maxtp)
  6.     @maxtp_plus += maxtp - self.maxtp
  7.     @maxtp_plus = [[@maxtp_plus, -9999].max, 9999].min
  8.     @tp = [@tp, self.maxtp].min
  9.   end
复制代码
再增加控制TP改变的地方。
  1. #--------------------------------------------------------------------------
  2.   # ● 更改 TP
  3.   #     tp : 新的 TP
  4.   #--------------------------------------------------------------------------
  5.   def tp=(tp)
  6.     @tp = [[tp, maxtp].min, 0].max
  7.   end
复制代码
如果汝还需要在全恢复时增加TP,在全恢复(recover_all)里增加这么一行
  1. @tp = maxtp
复制代码
设置到这里还不够,回到脚本选择框。
找到Game_Actor
在设置中跟 HP、SP一样增加
  1. @tp = maxtp
复制代码
  1. @maxtp_plus = 0
复制代码
找到
  1. #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxSP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxsp
  5.     return $data_actors[@actor_id].parameters[1, @level]
  6.   end
复制代码
这段有什么用呢?这段是获取当前角色最大SP值用的。如果这里设置错了那么整个系统就全部报废了哦。
跟上面一样,复制一遍再把所有的SP改为TP,但是这里要注意了,默认的档案里是没有TP的曲线的。我们需要自己动手增加一条直线(只能是直线- -)
  1. $data_actors[@actor_id].parameters[1, @level]
复制代码
改为
  1. @level * 40 + 20
  2. # 40为你每级增加的数,20为0级的初始值
  3. #照此,1级为60,2级为100
复制代码
当然了,你也可以把它设置的不同一点。比如说,根据职业的不同- -
  1. case @class_id
  2. when 1
  3. return @level * 50 + 1
  4. when 2
  5. when 3
  6. when 4
  7. ...
  8. end
复制代码
这段怎么用呢?case 比较直白的说是获取某个变量的值,在..的情况下,执行什么脚本
例如,在职业为1的情况下,角色的TP初始值为1,每级增加50哦。
在改变等级时,也要改变TP的大小- -
找到
  1. #--------------------------------------------------------------------------
  2.   # ● 更改 EXP
  3.   #     exp : 新的 EXP
  4.   #--------------------------------------------------------------------------
  5.   def exp=(exp)
复制代码
,在END前填加
  1. @tp = [@tp, self.maxtp].min
复制代码
这样就在游戏里彻底增加了这么一个变量。
三、TP的显示
太简单了,仿照Window_Base 里的显示HP、MP,自己敲进去这么一段
  1. #--------------------------------------------------------------------------
  2.   #     actor : 角色
  3.   #     x     : 描画目标 X 坐标
  4.   #     y     : 描画目标 Y 坐标
  5.   #     width : 描画目标的宽
  6.   #--------------------------------------------------------------------------
  7.   def draw_actor_tp(actor, x, y, width = 144)
  8.     # 描绘字符串 "TP"
  9.     self.contents.font.color = system_color
  10.     self.contents.draw_text(x, y, 32, 32, "TP")
  11.     # 计算描绘 MaxTP 所需的空间
  12.     if width - 32 >= 108
  13.       sp_x = x + width - 108
  14.       flag = true
  15.     elsif width - 32 >= 48
  16.       sp_x = x + width - 48
  17.       flag = false
  18.     end
  19.     # 描绘 TP
  20.     self.contents.font.color = actor.tp == 0 ? knockout_color :
  21.       actor.tp <= actor.maxtp / 4 ? crisis_color : normal_color
  22.     self.contents.draw_text(sp_x, y, 48, 32, actor.tp.to_s, 2)
  23.     # 描绘 MaxTP
  24.     if flag
  25.       self.contents.font.color = normal_color
  26.       self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
  27.       self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxtp.to_s)
  28.     end
  29.   end
复制代码
在所有draw_acotr_hp后都增加draw_actor_tp,注意x\y的值哦。
四、使用TP
变量做出来了不用可不行。但默认的游戏编辑器没有办法执行啊。?怎么办呢。?
比方说我在用第一个技能(治疗)时,要求必须有50点体力。
找到Game_Actor的可以使用特技判定,增加
  1. if $data_skills[skill_id].id == 1
  2.       return false if @tp < 50
  3.     end
复制代码
这样就能保证在TP低于50时不能使用该技能。
如果要在使用后减少体力,则  = =
找到Scene_Battle 4 中的● 生成特技行动结果
在扣除SP后增加
  1. if @skill.id == 1
  2.       @active_battler.tp -= 50
  3.     end
复制代码
这样就能在使用时扣除50点体力了。
(喂,你可别告诉我只能在ID为1情况下才能用哦。)
最终效果图


物品同理。光耗费体力不恢复也是不行的。至于这个……基本上把skill改为item就大功告成了- -

编辑哟==给伸手党的福音==以下是工程
新的属性范例.rar (285.49 KB, 下载次数: 1638)
但还是鼓励各位自己动手试试。
=================编辑一之敌人TP的设定====================
我到现在还没想好敌人弄那么复杂干什么。
不过既然有人问了,那我就告诉你好了。
敌人的设定是在Game_Enemy中的。
  1. #--------------------------------------------------------------------------
  2.   # ● 获取基本 MaxSP
  3.   #--------------------------------------------------------------------------
  4.   def base_maxsp
  5.     return $data_enemies[@enemy_id].maxsp
  6.   end
复制代码
同样的,我们复制一遍并作相应改动。
但是呢,敌人没有等级这一个属性。。
所以你也可以直接把SP搬过来用。
或者对SPHP作加法减法乘法除法随汝的便了。
同样的,按照技能的方法设定就可以了。

点评

怎么回复没懂,求指点  发表于 2013-5-26 10:19
。。。随你自己编写。  发表于 2010-10-17 13:20
不错。对了,TP是干什么吃的?VIP+66  发表于 2010-10-17 13:12
赞一个!VIP + NaN  发表于 2010-10-10 14:31

评分

参与人数 4星屑 +802 收起 理由
clande + 40 塞糖 几角钱的糖,不过是上限哦.
奶油小胖 + 2 找到了仙剑四的感觉…………
仲秋启明 + 60 终于又找到了
后知后觉 + 700 很不错的教程.鼓励III

查看全部评分

某只PHP/HTML小白鼠→退屈の间


Cause I knew you were trouble when you walked in
So shame is on me now
I flow me to place i ve never been
till you put me down oh
Now Im lying on the cold hard ground

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2009-6-12
帖子
73
17
发表于 2011-3-17 16:38:29 | 只看该作者
跟伤害处理有关就不行了,没有计算公式:Q
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2010-10-27
帖子
13
16
发表于 2010-11-9 05:09:24 | 只看该作者
你的范例等级上升了。并不增加TP上限?因为在状态窗口中开不到TP这项。不知道我说错没?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小小的百鬼夜行<

梦石
0
星屑
54
在线时间
579 小时
注册时间
2010-7-29
帖子
2682

贵宾

15
 楼主| 发表于 2010-11-7 09:33:50 | 只看该作者
回复 bbaugle 的帖子

嘛。汝想说什么。 - -?
某只PHP/HTML小白鼠→退屈の间


Cause I knew you were trouble when you walked in
So shame is on me now
I flow me to place i ve never been
till you put me down oh
Now Im lying on the cold hard ground
回复 支持 反对

使用道具 举报

Lv1.梦旅人

尽头

梦石
0
星屑
119
在线时间
278 小时
注册时间
2010-6-20
帖子
1280
14
发表于 2010-11-7 06:44:13 | 只看该作者
退屈£无聊 发表于 2010-10-21 18:18
补充说明:

如果....如果你认为特技界面只显示法术消耗不美观的话,可以在显示消耗时增加判断.

我不是纯引.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰の妖精

梦石
0
星屑
75
在线时间
352 小时
注册时间
2007-2-9
帖子
3560
13
发表于 2010-11-3 23:45:58 | 只看该作者
很好,受教了。看起来应该挺兼容的?
不知道是不是可以用这个做出怒气值一类的东西,比如挨打时增加什么的?
暂时还没打算复活。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
50
在线时间
52 小时
注册时间
2010-9-18
帖子
87
12
发表于 2010-10-27 18:09:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
175
在线时间
0 小时
注册时间
2010-10-23
帖子
2
11
发表于 2010-10-23 23:19:01 | 只看该作者
都是人才呀!!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

小小的百鬼夜行<

梦石
0
星屑
54
在线时间
579 小时
注册时间
2010-7-29
帖子
2682

贵宾

10
 楼主| 发表于 2010-10-21 18:18:41 | 只看该作者
补充说明:

如果....如果你认为特技界面只显示法术消耗不美观的话,可以在显示消耗时增加判断.
然后再显示你想要的特定数字.

呵呵,个人感觉蛮麻烦的. - -
某只PHP/HTML小白鼠→退屈の间


Cause I knew you were trouble when you walked in
So shame is on me now
I flow me to place i ve never been
till you put me down oh
Now Im lying on the cold hard ground
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
381
在线时间
1398 小时
注册时间
2010-9-23
帖子
557
9
发表于 2010-10-20 19:30:36 | 只看该作者
谢谢,终于找到了,个人感觉蛮难。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-30 22:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表