Project1

标题: 求一个类似火纹的升级加点脚本 [打印本页]

作者: wu2671437    时间: 2011-8-22 15:38
标题: 求一个类似火纹的升级加点脚本
列如角色的职业是战士,那么升级时有60%加力量,30%加敏捷。不同职业的百分比都不一样。dsu_plus_rewardpost_czw
作者: wsmyzc    时间: 2011-8-22 16:01
其实可以用事件来做。。脚本的话以前没见过。。悬赏吧
作者: wu2671437    时间: 2011-8-22 16:07
wsmyzc 发表于 2011-8-22 16:01
其实可以用事件来做。。脚本的话以前没见过。。悬赏吧

事件怎样写?
作者: MSQ    时间: 2011-8-22 16:17
这个用脚本会好些,但我不会的说~~{:nm_2:},所以我有个超麻烦的公共事件。
公共事件——并行处理——开关XX被开启(当然,你要先打开它)——变数的操作——代入——主角AA的等级(麻烦一,有很多人时超麻烦)——之后不断条件的分歧——变数——等于——常数(0~99都要考虑,依旧麻烦,不过复制粘贴解决了大问题)——之后还是变数的操作(先以力量为例,你说的是60%)——代入——随机(例如1~10)——条件的分歧——变数——小于等于(6)——接着为主角参数值的增减(力量+1)(麻烦三,每个属性都要设,不过幸好有复制粘贴的说)
好吧,我知道超麻烦,所以仅供参考。
作者: wu2671437    时间: 2011-8-22 18:37
MSQ 发表于 2011-8-22 16:17
这个用脚本会好些,但我不会的说~~,所以我有个超麻烦的公共事件。
公共事件——并行处理——开关X ...

按你这样说即是假如我满级是99,我要由1级做到99级?
作者: MSQ    时间: 2011-8-22 18:54
wu2671437 发表于 2011-8-22 18:37
按你这样说即是假如我满级是99,我要由1级做到99级?

的确,但只要做好升一级的,接着一直复制粘贴,记得要倍数复制,即1->2->4->8...复制八次,接着改等级就行,我说过很麻烦的。不过我见过一个事件党,他做了一个事件转职,超长的事件,很厉害的说。不过我记得有人做过火纹的,但不知是不是rm的,你可以搜素一下试试。
作者: wu2671437    时间: 2011-8-22 19:13
MSQ 发表于 2011-8-22 18:54
的确,但只要做好升一级的,接着一直复制粘贴,记得要倍数复制,即1->2->4->8...复制八次,接着改等级就 ...

我写了升级加1点,但是当它升级时所加的点数却是随机的……这是为什么?
作者: MSQ    时间: 2011-8-22 19:32
wu2671437 发表于 2011-8-22 19:13
我写了升级加1点,但是当它升级时所加的点数却是随机的……这是为什么?

嗯?该不会是公共事件不断执行吧,加上事件进程的中止试试。
作者: wu2671437    时间: 2011-8-22 19:59
MSQ 发表于 2011-8-22 19:32
嗯?该不会是公共事件不断执行吧,加上事件进程的中止试试。

你可以说一下那个并行处理的开关是怎样设置的吗?
是直接将开关就可以吗?
作者: MSQ    时间: 2011-8-22 20:16
在游戏一开始就做个自动执行的事件,事件内容为打开那个开关,之后自用开关就行了。
那个升级加点随机加的弄好了没有。
作者: wu2671437    时间: 2011-8-22 20:26
MSQ 发表于 2011-8-22 20:16
在游戏一开始就做个自动执行的事件,事件内容为打开那个开关,之后自用开关就行了。
那个升级加点随机加的 ...

没有,它不断加下去…
作者: MSQ    时间: 2011-8-22 20:42
wu2671437 发表于 2011-8-22 20:26
没有,它不断加下去…

你的事件列表是如何排列的,并排还是不断嵌入?
试一试标签。在每一级加点后加个跳转至标签,其中标签加在事件底部,再加上事件进程的中止,看看行不行。
作者: 冰舞蝶恋    时间: 2011-8-22 22:04
没看懂问题。
不过http://rpg.blue/thread-83054-1-1.html这里有手动加点脚本。

------------------------------------
在game_actor里有一个def level_up,
在里面判断角色职业。
加相应的能力点。


----------PS:你是需要自动加点吗?直接修改数据库角色升级加成好了。
作者: MSQ    时间: 2011-8-22 22:21
冰舞蝶恋 发表于 2011-8-22 22:04
没看懂问题。
不过http://rpg.blue/thread-83054-1-1.html这里有手动加点脚本。

大大,楼主的意思是像火纹一样升级随机加点。例如升级了,有可能加力量,但也可能不加,这是因为升级加力量是有概率的。这样的话,战士升级有80%的概率加力量,而魔法师升级加力量的概率只有10%,这样就把职业的差距显现出来了。这种升级方式比较适合那些游戏练级狂人(例如我),不停地凹点——读档存档致力于把人物练成满属性{:nm_7:}——因为这种游戏正常情况下是不可能满属性的。想当初我玩索菲亚的复苏时,全军满力量,一半满属性,看着最后一关的敌人在我面前第一回合就扑倒在地时,就有一种功夫不负有心人的成就感。
等等,我好像跑题了~~该不会扣分吧~~{:nm_3:}~~
作者: II冰话II    时间: 2011-8-22 22:35
数据库不就能直接设置等级成长!!!有几个职业你就复制几个角色!不就Ok啦

作者: wu2671437    时间: 2011-8-23 14:01
MSQ 发表于 2011-8-22 20:42
你的事件列表是如何排列的,并排还是不断嵌入?
试一试标签。在每一级加点后加个跳转至标签,其中标签加 ...

◆变量操作:[0061:主角的等级]=[小明]的等级
◆条件分支:变量[0061:主角的等级]==2
    ◆变量操作:[0062:随机]=随机数(1…10)
    ◆条件分支:变量[0062:随机]<=6
        ◆增减能力值:[小明],最大HP+1
        ◆
     :除此以外的场合
        ◆
     :分支结束
    ◆
:除此以外场合
    ◆
:分支结束

因为暂时没网上,只能用手机打出来……
我写成这样只要一直两级就会不断加下去……但我不知怎样改…求高人解决
作者: wu2671437    时间: 2011-8-23 14:10
冰舞蝶恋 发表于 2011-8-22 22:04
没看懂问题。
不过http://rpg.blue/thread-83054-1-1.html这里有手动加点脚本。

我不是要手动加点,而是不同职业升级时按一定几率增加属性点,有可能加或者不加
作者: MSQ    时间: 2011-8-23 14:11
昨天又想了一下,发现再加一个变量就可解决。就是在:
◆条件分支:变量[0061:主角的等级]==2
之后加上——条件的分歧:变数【0001:小明的变数】 等于 2
之后在
◆增减能力值:[小明],最大HP+1
后加上——变数的操作:【0001:小明的变数】(加)运算域:1

这样就可以解决了,不过这样除了LV外还要改一个变数,变得更麻烦了{:nm_9:}
作者: wu2671437    时间: 2011-8-23 14:56
MSQ 发表于 2011-8-23 14:11
昨天又想了一下,发现再加一个变量就可解决。就是在:
◆条件分支:变量[0061:主角的等级]==2
之后加上—— ...

不知是不是我不理解你的意思,我照你做还是不行
作者: MSQ    时间: 2011-8-23 14:59
本帖最后由 MSQ 于 2011-8-23 14:59 编辑
wu2671437 发表于 2011-8-23 14:56
不知是不是我不理解你的意思,我照你做还是不行


怎么可能?对了
◆条件分支:变量[0061:主角的等级]==2
之后加上——条件的分歧:变数【0001:小明的变数】 等于 2
之后在
◆增减能力值:[小明],最大HP+1
后加上——变数的操作:【0001:小明的变数】(加)运算域:1

两个变量不一样。


作者: wu2671437    时间: 2011-8-23 15:46
◆变量操作:[0061:主角的等级]=[小明]的等级
◆变量操作:[0063:小明的变量]=2
◆条件分支:变量[0061:主角的等级]==2
  ◆条件分支:变量[小明的变量]==2
    ◆变量操作:[0062:随机]=随机数(1…10)
    ◆条件分支:变量[0062:随机]<=6
        ◆增减能力值:[小明],最大HP+1
        ◆变量操作:[0063:小明的变量]+=1
     :除此以外的场合
        ◆
     :分支结束
    ◆
:除此以外场合
    ◆
:分支结束

这样?
作者: MSQ    时间: 2011-8-23 15:52
wu2671437 发表于 2011-8-23 15:46
◆变量操作:[0061:主角的等级]=[小明]的等级
◆变量操作:[0063:小明的变量]=2
◆条件分支:变量[0061:主角的 ...

恩,就是这样。感觉逻辑上没问题。
作者: wu2671437    时间: 2011-8-23 16:55
MSQ 发表于 2011-8-23 15:52
恩,就是这样。感觉逻辑上没问题。

我试过不行啊……
作者: MSQ    时间: 2011-8-23 17:39
抱歉,首先,又看了一遍。先是有个逻辑错误。(对不起,把我上边的话无视掉吧~~)在:

◆条件分支:变量[小明的变量]==2
    ◆变量操作:[0062:随机]=随机数(1…10)
    ◆条件分支:变量[0062:随机]<=6
        ◆增减能力值:[小明],最大HP+1
        ◆变量操作:[0063:小明的变量]+=1


这一块,要把
◆变量操作:[0063:小明的变量]+=1


放到
◆条件分支:变量[小明的变量]==2

下面,否则当随机数《=6时,还会再度循环,这样就变成一升级必加hp了。

还有,一开始的
◆变量操作:[0063:小明的变量]=2


要重新建立一个事件,否则一旦执行这个公共事件,就会让变量重新赋值为2。

真的很抱歉,没有认真看,浪费了楼主不少时间和精力。{:nm_2:}
作者: 红颜泪别    时间: 2011-8-23 22:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: MSQ    时间: 2011-8-23 23:31
wu2671437 发表于 2011-8-23 16:55
我试过不行啊……

不过我有一个顾虑,就是我们用的随机变量到底是不是真的随机数,我怕就怕在系统的默认是这样——假设力量成长为40%,那么如果这次没提升力量,那么下次力量的提升率就变成80%,这导致属性升级还是保持接近线性曲线。这样之前做过的一切都成了无用功,充其量只能满足眼前而已。

所以我先开个贴讨论一下吧。
作者: 黑之翅膀    时间: 2011-8-23 23:41
事件变量等级 代入 主角等级
作者: 红颜泪别    时间: 2011-8-24 00:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亿万星辰    时间: 2011-8-24 06:58
本帖最后由 亿万星辰 于 2011-8-24 07:14 编辑

从网上找了一下火纹升级系统的介绍

关键的一点是:在火焰纹章里,每升一级都会有属性点数,而这些点数都是随机加的,运气好可以满加(除移动),运气不好可能一点也不会加。

换个角度来理解吧,根据等级给每个属性设置一个最高值,当一个属性已经到达这个这个属性的最高值以后,自然就不能继续再给当前属性来增加点数了。每次升级的时候,都可以用一个随机数字来判断是否给当前属性增加点数,如果满足前面的条件,再看当前属性是否已经达到了当前等级对于此属性的最大值限定,如果没有达到则增加;否则就不能增加了。而至于这个最大值的限定,则可以运用到数据库里的各个属性的设置,方便又省事。
作者: wu2671437    时间: 2011-8-25 09:29
MSQ 发表于 2011-8-23 23:31
不过我有一个顾虑,就是我们用的随机变量到底是不是真的随机数,我怕就怕在系统的默认是这样——假设力量 ...

我试过了,真的可以随机,不过真的很麻烦……

版主的话看不明……

版主的话我手机上回复不了,顺便一起回复,不会扣分吧…
作者: MSQ    时间: 2011-8-25 21:19
wu2671437 发表于 2011-8-25 09:29
我试过了,真的可以随机,不过真的很麻烦……

版主的话看不明……

哦?那就是随机数可以喽、那么问题解决了吗?
作者: wu2671437    时间: 2011-8-25 23:08
MSQ 发表于 2011-8-25 21:19
哦?那就是随机数可以喽、那么问题解决了吗?

问题是每个属性都要开一个公共事件,假如我有8个职业就要开40个公共事件……好麻烦……有没有简单点的方法,没就算了…
作者: 亿万星辰    时间: 2011-8-25 23:12
本帖最后由 亿万星辰 于 2011-8-25 23:15 编辑
wu2671437 发表于 2011-8-25 23:08
问题是每个属性都要开一个公共事件,假如我有8个职业就要开40个公共事件……好麻烦……有没有简单点的方 ...


一个属性开一个公共事件,里面加上对职业的判断就可以了~
可以先用一个变量存储角色的ID,比如变量100,然后条件分歧里判断这个为对应的职业ID就好了。
  1. $game_actors[$game_variables[1]].class_id
复制代码

作者: MSQ    时间: 2011-8-25 23:14
wu2671437 发表于 2011-8-25 23:08
问题是每个属性都要开一个公共事件,假如我有8个职业就要开40个公共事件……好麻烦……有没有简单点的方 ...

为什么?一个职业全能力条件分歧不行吗?喵~~
PS:这贴快火了~~~{:nm_7:}
作者: wu2671437    时间: 2011-8-25 23:47
MSQ 发表于 2011-8-25 23:14
为什么?一个职业全能力条件分歧不行吗?喵~~
PS:这贴快火了~~~

我实在想不到一事件全属性……家里电脑上不了网,发不了截图真麻烦……不然都不会拖这么久
作者: MSQ    时间: 2011-8-26 00:17
本帖最后由 MSQ 于 2011-8-26 00:19 编辑
wu2671437 发表于 2011-8-25 23:47
我实在想不到一事件全属性……家里电脑上不了网,发不了截图真麻烦……不然都不会拖这么久 ...


只不过在你设计那个:
◆条件分支:变量[小明的变量]==2
    ◆变量操作:[0063:小明的变量]+=1
    ◆变量操作:[0062:随机]=随机数(1…10)
    ◆条件分支:变量[0062:随机]<=6
        ◆增减能力值:[小明],最大HP+1
        ◆变量操作:[0063:小明的变量]+=1
     :除此以外的场合
        ◆
     :分支结束
    ◆


中继续并列条件分歧就行了,但变量还得要6个,否则不理想。
作者: a123669520    时间: 2011-8-26 12:30
类似火焰文章加点.rar (236.69 KB, 下载次数: 41)
给你个范例,这是设置一个人战士的,要设置其他职业同第一个共用事件
升级随机获得4~7属性点
40%力量20%防20%敏20精力自动加点
跟图中人物说话升级
作者: wu2671437    时间: 2011-8-26 13:07
MSQ 发表于 2011-8-26 00:17
只不过在你设计那个:

看不明。。。。。
作者: 亿万星辰    时间: 2011-8-26 13:09
本帖最后由 亿万星辰 于 2011-8-26 13:42 编辑

我一直不解的事情其实有很多……
比如一个公共事件就可以完成的事情,怎么会出现40个……
楼主的工程可以上传吗?对于楼主的游戏里的整体结构表示有点晕~

升级.rar (239.63 KB, 下载次数: 38)


作者: wu2671437    时间: 2011-8-26 14:08
亿万星辰 发表于 2011-8-26 13:09
我一直不解的事情其实有很多……
比如一个公共事件就可以完成的事情,怎么会出现40个……
楼主的工程可以上 ...


问题是我不是很会事件,一个属性就占用一个公共事件
工程太大。。。。所以不上传了。。。
作者: feizhaodan    时间: 2011-8-26 15:25
脚本行不?
  1. #==============================================================================
  2. # ■ FE_Param
  3. #------------------------------------------------------------------------------
  4. # 设置各职业用的各数据
  5. #==============================================================================
  6. module FE_Param
  7.   
  8.     CLASSPER = {}   # 不要改
  9.    
  10.    
  11.     # 在这里设置各职业的提升几率
  12.     # 格式:
  13.     # CLASSPER[id] = {
  14.     # :para => n%,
  15.     #}
  16.     # id 输入职业ID
  17.     # para 代入属性标识(hp, mp, atk, def, spi, agi)
  18.     # n 代入属性提升几率
  19.     CLASSPER[1] ={
  20.     :hp         =>  60, # 血
  21.     :mp         =>  40, # 魔
  22.     :atk        =>  70, # 攻
  23.     :def        =>  60, # 防
  24.     :spi        =>  20, # 精神
  25.     :agi        =>  50, # 敏
  26.     }
  27.    
  28.     CLASSUP = {}    # 不要改
  29.    
  30.    
  31.     # 在这里设置各职业的提升量
  32.     # 格式:
  33.     # CLASSUP[id] = [mi, ma]
  34.     # id 输入职业ID
  35.     # mi 代入提升量最小值
  36.     # ma 代入提升量最大值
  37.     CLASSUP[1] = [5, 9]
  38. end



  39. #==============================================================================
  40. # ■ Game_Actor
  41. #------------------------------------------------------------------------------
  42. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
  43. # Game_Party 类请参考 ($game_party) 。
  44. #==============================================================================

  45. class Game_Actor < Game_Battler
  46.   #--------------------------------------------------------------------------
  47.   # ● 初始化对像
  48.   #     actor_id : 角色 ID
  49.   #--------------------------------------------------------------------------
  50.   alias fe_param_initialize initialize
  51.   def initialize(actor_id)
  52.     @class_id = $data_actors[actor_id].class_id
  53.    
  54.     fe_param_initialize(actor_id)
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 获取提升量
  58.   #--------------------------------------------------------------------------
  59.   def param_up
  60.     param_up = FE_Param::CLASSUP[@class_id]
  61.     up = param_up[0] + rand(param_up[1] - param_up[0] + 1)
  62.     return up
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取提升率
  66.   #    param : 属性
  67.   #--------------------------------------------------------------------------
  68.   def param_per(param)
  69.     param_per = FE_Param::CLASSPER[@class_id][param]
  70.     per = rand(100) + 1
  71.     suc = (per >= param_per)
  72.     return suc
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取已提升量
  76.   #    param : 属性
  77.   #--------------------------------------------------------------------------
  78.   def param_gained(param)
  79.     return 0 if @param_gained == nil
  80.     return 0 if @param_gained[param] == nil
  81.     return @param_gained[param]
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 获取基本体力最大值
  85.   #--------------------------------------------------------------------------
  86.   alias fe_base_maxhp base_maxhp
  87.   def base_maxhp
  88.     n = fe_base_maxhp + param_gained(:hp)
  89.     return n
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 获取基本体力最大值
  93.   #--------------------------------------------------------------------------
  94.   alias fe_base_maxmp base_maxmp
  95.   def base_maxmp
  96.     n = fe_base_maxmp + param_gained(:mp)
  97.     return n
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 获取基本攻击力
  101.   #--------------------------------------------------------------------------
  102.   alias fe_base_atk base_atk
  103.   def base_atk
  104.     n = fe_base_atk + param_gained(:atk)
  105.     return n
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 获取基本防御力
  109.   #--------------------------------------------------------------------------
  110.   alias fe_base_def base_def
  111.   def base_def
  112.     n = fe_base_def + param_gained(:def)
  113.     return n
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 获取基本精神力
  117.   #--------------------------------------------------------------------------
  118.   alias fe_base_spi base_spi
  119.   def base_spi
  120.     n = fe_base_spi + param_gained(:spi)
  121.     return n
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 获取基本敏捷
  125.   #--------------------------------------------------------------------------
  126.   alias fe_base_agi base_agi
  127.   def base_agi
  128.     n = fe_base_agi + param_gained(:agi)
  129.     return n
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 升级
  133.   #--------------------------------------------------------------------------
  134.   alias fe_level_up level_up
  135.   def level_up
  136.     fe_level_up
  137.     gain_param
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 提升属性
  141.   #--------------------------------------------------------------------------
  142.   def gain_param
  143.     @param_gained = {} if @param_gained == nil
  144.     point = param_up
  145.     loop do
  146.     if point == 0
  147.       break
  148.     end
  149.     if param_per(:hp)
  150.       @param_gained[:hp] = 0 if @param_gained[:hp] == nil
  151.       @param_gained[:hp] += 1
  152.       point -= 1
  153.     elsif param_per(:mp)
  154.       @param_gained[:mp] = 0 if @param_gained[:mp] == nil
  155.       @param_gained[:mp] += 1
  156.       point -= 1
  157.     elsif param_per(:atk)
  158.       @param_gained[:atk] = 0 if @param_gained[:atk] == nil
  159.       @param_gained[:atk] += 1
  160.       point -= 1
  161.     elsif param_per(:def)
  162.       @param_gained[:def] = 0 if @param_gained[:def] == nil
  163.       @param_gained[:def] += 1
  164.       point -= 1
  165.     elsif param_per(:spi)
  166.       @param_gained[:spi] = 0 if @param_gained[:spi] == nil
  167.       @param_gained[:spi] += 1
  168.       point -= 1
  169.     elsif param_per(:agi)
  170.       @param_gained[:agi] = 0 if @param_gained[:agi] == nil
  171.       @param_gained[:agi] += 1
  172.       point -= 1
  173.     end
  174.     end
  175.   end
  176. end
  177.    
复制代码
不知道是不是这样
没玩过火纹
作者: MSQ    时间: 2011-8-26 15:35
非常感谢,FE就是火纹的缩写。
虽然我脚本不咋地,但还能看懂一点简单的,应该没问题,不过更可能是因为看到了那个打头的FE~~{:nm_8:}
话说如果早有人拿脚本的话就能解决了~~
PS:楼主来看看吧~~这楼应该解决了~~
作者: wu2671437    时间: 2011-8-26 15:42
本帖最后由 wu2671437 于 2011-8-26 16:06 编辑
亿万星辰 发表于 2011-8-26 13:09
我一直不解的事情其实有很多……
比如一个公共事件就可以完成的事情,怎么会出现40个……
楼主的工程可以上 ...


...我试过了,但没反应,我上传工程给你看看吧。。。我这里是回复我用版本升级事件没反应的问题
123[1].part2.rar (4.14 MB, 下载次数: 28)
123[1].part1.rar (5 MB, 下载次数: 30)

作者: feizhaodan    时间: 2011-8-26 15:59
把加点脚本里第50行左右的def level_up 到end为止的地方全都删了,改成这样
  1.   alias jia_dian_level_up level_up
  2.   def level_up
  3.     $game_variables[self.id + LEVEL_UP_VARIABLE] += LEVEL_UP_POINT
  4.     jia_dian_level_up
  5.   end
复制代码
最后来一句:
万恶的加点啊啊啊啊啊...
作者: wu2671437    时间: 2011-8-26 16:03
feizhaodan 发表于 2011-8-26 15:59
把加点脚本里第50行左右的def level_up 到end为止的地方全都删了,改成这样最后来一句:
万恶的加点啊啊啊 ...

。。。。我整个加点都删了。。。都出现错误
。。请问我图片之前上传到吗?我这里看不到我上传图片。。。
作者: feizhaodan    时间: 2011-8-26 16:04
图片?
没图片...
至少我自己用新工程没问题。
作者: wu2671437    时间: 2011-8-26 16:06
本帖最后由 wu2671437 于 2011-8-26 16:12 编辑
feizhaodan 发表于 2011-8-26 16:04
图片?
没图片...
至少我自己用新工程没问题。



这个是脚本错误
无论是事件或者是脚本。。。能搞掂就OK了。。
我那工程脚本多到眼都花。。。是不是冲突了

QQ截图20110826155331.png (5.42 KB, 下载次数: 11)

QQ截图20110826155331.png

作者: feizhaodan    时间: 2011-8-26 16:13
你先试试把初始队友的职业都改成1,或者把刚开始的设置部分补完。
作者: wu2671437    时间: 2011-8-26 16:21
feizhaodan 发表于 2011-8-26 16:13
你先试试把初始队友的职业都改成1,或者把刚开始的设置部分补完。

.....可以了,之前主角是职业2。。。所以无反应,但问题又出现了除了HP和MP会提高。。。。其余都不会提高。。。
作者: feizhaodan    时间: 2011-8-26 16:32
wu2671437 发表于 2011-8-26 16:21
.....可以了,之前主角是职业2。。。所以无反应,但问题又出现了除了HP和MP会提高。。。。其余都 ...

试试把HP和MP的几率调低点吧。
这个是当HP没增加的时候增加MP,MP没增加的时候增加攻击,攻击没增加的时候增加防御以下略

作者: wu2671437    时间: 2011-8-26 16:35
feizhaodan 发表于 2011-8-26 16:32
试试把HP和MP的几率调低点吧。
这个是当HP没增加的时候增加MP,MP没增加的时候增加攻击,攻击没增加的时 ...

能不能同时加的。。。。
作者: feizhaodan    时间: 2011-8-26 16:47
本帖最后由 feizhaodan 于 2011-8-26 16:51 编辑
wu2671437 发表于 2011-8-26 16:35
能不能同时加的。。。。
  1. #==============================================================================
  2. # ■ FE_Param
  3. #------------------------------------------------------------------------------
  4. # 设置各职业用的各数据
  5. #==============================================================================
  6. module FE_Param
  7.   
  8.     CLASSPER = {}   # 不要改
  9.    
  10.    
  11.     # 在这里设置各职业的提升几率
  12.     # 格式:
  13.     # CLASSPER[id] = {
  14.     # :para => n%,
  15.     #}
  16.     # id 输入职业ID
  17.     # para 代入属性标识(hp, mp, atk, def, spi, agi)
  18.     # n 代入属性提升几率
  19.     CLASSPER[1] ={
  20.     :hp         =>  60, # 血
  21.     :mp         =>  40, # 魔
  22.     :atk        =>  70, # 攻
  23.     :def        =>  60, # 防
  24.     :spi        =>  20, # 精神
  25.     :agi        =>  50, # 敏
  26.     }
  27.    
  28.     CLASSUP = {}    # 不要改
  29.    
  30.    
  31.     # 在这里设置各职业的提升量
  32.     # 格式:
  33.     # CLASSUP[id] = [mi, ma]
  34.     # id 输入职业ID
  35.     # mi 代入提升量最小值
  36.     # ma 代入提升量最大值
  37.     CLASSUP[1] = [5, 9]
  38. end



  39. #==============================================================================
  40. # ■ Game_Actor
  41. #------------------------------------------------------------------------------
  42. #  处理角色的类。本类在 Game_Actors 类 ($game_actors) 的内部使用、
  43. # Game_Party 类请参考 ($game_party) 。
  44. #==============================================================================

  45. class Game_Actor < Game_Battler
  46.   #--------------------------------------------------------------------------
  47.   # ● 初始化对像
  48.   #     actor_id : 角色 ID
  49.   #--------------------------------------------------------------------------
  50.   alias fe_param_initialize initialize
  51.   def initialize(actor_id)
  52.     @class_id = $data_actors[actor_id].class_id
  53.    
  54.     fe_param_initialize(actor_id)
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 获取提升量
  58.   #--------------------------------------------------------------------------
  59.   def param_up
  60.     param_up = FE_Param::CLASSUP[@class_id]
  61.     up = param_up[0] + rand(param_up[1] - param_up[0] + 1)
  62.     return up
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取提升率
  66.   #    param : 属性
  67.   #--------------------------------------------------------------------------
  68.   def param_per
  69.     @param_per = FE_Param::CLASSPER[@class_id] if @param_per == nil
  70.     return @param_per
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 获取已提升量
  74.   #    param : 属性
  75.   #--------------------------------------------------------------------------
  76.   def param_gained(param)
  77.     return 0 if @param_gained == nil
  78.     return 0 if @param_gained[param] == nil
  79.     return @param_gained[param]
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 获取基本体力最大值
  83.   #--------------------------------------------------------------------------
  84.   alias fe_base_maxhp base_maxhp
  85.   def base_maxhp
  86.     n = fe_base_maxhp + param_gained(:hp)
  87.     return n
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取基本体力最大值
  91.   #--------------------------------------------------------------------------
  92.   alias fe_base_maxmp base_maxmp
  93.   def base_maxmp
  94.     n = fe_base_maxmp + param_gained(:mp)
  95.     return n
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 获取基本攻击力
  99.   #--------------------------------------------------------------------------
  100.   alias fe_base_atk base_atk
  101.   def base_atk
  102.     n = fe_base_atk + param_gained(:atk)
  103.     return n
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 获取基本防御力
  107.   #--------------------------------------------------------------------------
  108.   alias fe_base_def base_def
  109.   def base_def
  110.     n = fe_base_def + param_gained(:def)
  111.     return n
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 获取基本精神力
  115.   #--------------------------------------------------------------------------
  116.   alias fe_base_spi base_spi
  117.   def base_spi
  118.     n = fe_base_spi + param_gained(:spi)
  119.     return n
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 获取基本敏捷
  123.   #--------------------------------------------------------------------------
  124.   alias fe_base_agi base_agi
  125.   def base_agi
  126.     n = fe_base_agi + param_gained(:agi)
  127.     return n
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 升级
  131.   #--------------------------------------------------------------------------
  132.   alias fe_level_up level_up
  133.   def level_up
  134.     fe_level_up
  135.     gain_param
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 提升属性
  139.   #--------------------------------------------------------------------------
  140.   def gain_param
  141.     @param_gained = {} if @param_gained == nil
  142.     param_per if @param_per == nil
  143.     percentage = 0
  144.     @param_per.each_value{|v|
  145.     percentage += v
  146.     }
  147.     point = param_up
  148.     hpper = @param_per[:hp]
  149.     mpper = @param_per[:mp] + @param_per[:hp]
  150.     atkper = @param_per[:mp] + @param_per[:hp] + @param_per[:atk]
  151.     defper = @param_per[:mp] + @param_per[:hp] + @param_per[:atk] + @param_per[:def]
  152.     spiper = defper + @param_per[:spi]
  153.     agiper = spiper + @param_per[:agi]
  154.     loop do
  155.     if point == 0
  156.       break
  157.     end
  158.     per = rand(percentage) + 1
  159.     case per
  160.     when 1...hpper
  161.       @param_gained[:hp] = 0 if @param_gained[:hp] == nil
  162.       @param_gained[:hp] += 1
  163.       point -= 1
  164.     when (hpper + 1)...mpper
  165.       @param_gained[:mp] = 0 if @param_gained[:mp] == nil
  166.       @param_gained[:mp] += 1
  167.       point -= 1
  168.     when (mpper + 1)...atkper
  169.       @param_gained[:atk] = 0 if @param_gained[:atk] == nil
  170.       @param_gained[:atk] += 1
  171.       point -= 1
  172.     when (atkper + 1)...defper
  173.       @param_gained[:def] = 0 if @param_gained[:def] == nil
  174.       @param_gained[:def] += 1
  175.       point -= 1
  176.     when (defper + 1)...spiper
  177.       @param_gained[:spi] = 0 if @param_gained[:spi] == nil
  178.       @param_gained[:spi] += 1
  179.       point -= 1
  180.     when (spiper + 1)...agiper
  181.       @param_gained[:agi] = 0 if @param_gained[:agi] == nil
  182.       @param_gained[:agi] += 1
  183.       point -= 1
  184.     end
  185.     end
  186.   end
  187. end
  188.    
复制代码
改了下。
应该可以了。
用法和刚才一样。
作者: wu2671437    时间: 2011-8-26 18:16
feizhaodan 发表于 2011-8-26 15:25
脚本行不?不知道是不是这样
没玩过火纹

现在我不是电脑上网…你脚本那帖子我回复不了。
我按照你修改后的脚本出现148行错误……可能我打错了.你能上传工程吗
作者: feizhaodan    时间: 2011-8-26 18:21
wu2671437 发表于 2011-8-26 18:16
现在我不是电脑上网…你脚本那帖子我回复不了。
我按照你修改后的脚本出现148行错误……可能我打错了.你 ...

tset.zip (252.99 KB, 下载次数: 35)

试试。
作者: wu2671437    时间: 2011-8-26 19:06
可以了,明天我用电脑上网给你认可




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