Project1

标题: 如何设置金钱上限随等级改变而改变?【修改后】 [打印本页]

作者: 77777741    时间: 2011-10-7 13:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冰雨清兰    时间: 2011-10-7 13:29
诶,志同道合诶,我也玩暗黑,不过版规好像不让这样说什么“我玩XX游戏有XX功能……”,楼主,我也在找这个
作者: Wind2010    时间: 2011-10-7 13:33
本帖最后由 Wind2010 于 2011-10-7 13:33 编辑

问题1:多个队员在队怎么办
问题2:没有队员在队怎么办
作者: 冰雨清兰    时间: 2011-10-7 13:37
额,不好依稀,看错了,研究一下
作者: Wind2010    时间: 2011-10-7 13:47
  1. class Game_Party
  2.   alias louse_gain_gold_23333 gain_gold unless defined?(louse_gain_gold_23333)
  3.   alias louse_add_actor_23333 add_actor unless defined?(louse_add_actor_23333)
  4.   alias louse_remove_actor_23333 remove_actor unless defined?(louse_remove_actor_23333)
  5.   def add_actor(actor_id)
  6.     louse_add_actor_23333(actor_id)
  7.     change_gold_23333
  8.   end
  9.   def remove_actor(actor_id)
  10.     louse_remove_actor_23333(actor_id)
  11.     change_gold_23333
  12.   end
  13.   def gain_gold(n)
  14.     louse_gain_gold_23333(n)
  15.     change_gold_23333
  16.   end
  17.   def change_gold_23333
  18.     max_lv = 0
  19.     for i in @actors
  20.       max_lv = @actors.level if @actors.level > max_lv
  21.     end
  22.     break if max_lv==0
  23.     @gold = [@gold,max_lv*(max_lv+2000)].min # 这段是公式
  24.   end
  25. end
复制代码

作者: 竹轩轩    时间: 2011-10-7 13:47
本帖最后由 竹轩轩 于 2011-10-7 15:34 编辑

我认为用变量控制比较好。
G上限变量版.rar (186.76 KB, 下载次数: 25) 等级版2.rar (188.51 KB, 下载次数: 17)
好了,用了脚本触发公共事件来刷新钱数和检测等级



作者: 我不是字母君    时间: 2011-10-7 19:02
本帖最后由 我不是字母君 于 2011-10-8 09:29 编辑

我懒得说明了。看这个范例吧,注意在开始地图中一定要放上那个左上角的事件。以后就不用继续放了。
那个“每级增加的金钱上限”意思是:
如果每级增加的金钱上限是9999
那么1级最多可以携带9999钱,99级可以携带99×9999钱。
刚刚赶工弄了个解决方案2,可以显示钱拿不下的提示。降级时候上限会减少。用公共事件做的

解决方案.7z

176.97 KB, 下载次数: 19

解决方案2.7z

177.11 KB, 下载次数: 23


作者: 77777741    时间: 2011-10-7 22:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亿万星辰    时间: 2011-10-8 09:54
本帖最后由 亿万星辰 于 2011-10-8 09:55 编辑

  1. Class Game_Party
  2.   #--------------------------------------------------------------------------
  3.   # ● 加入同伴
  4.   #     actor_id : 角色 ID
  5.   #--------------------------------------------------------------------------
  6.   def add_actor(actor_id)
  7.     # 获取角色
  8.     actor = $game_actors[actor_id]
  9.     # 同伴人数未满 4 人、本角色不在队伍中的情况下
  10.     if @actors.size < 4 and not @actors.include?(actor)
  11.       # 添加角色
  12.       @actors.push(actor)
  13.       # 还原主角
  14.       $game_player.refresh
  15.     end
  16.     check_gold
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 角色离开
  20.   #     actor_id : 角色 ID
  21.   #--------------------------------------------------------------------------
  22.   def remove_actor(actor_id)
  23.     # 删除角色
  24.     @actors.delete($game_actors[actor_id])
  25.     # 还原主角
  26.     $game_player.refresh
  27.     check_gold
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 检查
  31.   #--------------------------------------------------------------------------
  32.   def check_gold
  33.     return if @actors.empty?
  34.     maxlevel = @actors.sort{|a,b|b.level - a.level}[0].level
  35.     @gold = [@gold, maxlevel * (maxlevel * 2000)].min
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 增加金钱 (减少)
  39.   #     n : 金额
  40.   #--------------------------------------------------------------------------
  41.   def gain_gold(n)
  42.     @gold = [[@gold + n, 0].max, 9999999].min
  43.     check_gold
  44.   end
  45. end
  46. class Game_Actor
  47.   #--------------------------------------------------------------------------
  48.   # ● 更改 EXP
  49.   #     exp : 新的 EXP
  50.   #--------------------------------------------------------------------------
  51.   def exp=(exp)
  52.     @exp = [[exp, 9999999].min, 0].max
  53.     # 升级
  54.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  55.       @level += 1
  56.       # 学会特技
  57.       for j in $data_classes[@class_id].learnings
  58.         if j.level == @level
  59.           learn_skill(j.skill_id)
  60.         end
  61.       end
  62.     end
  63.     # 降级
  64.     while @exp < @exp_list[@level]
  65.       @level -= 1
  66.     end
  67.     # 修正当前的 HP 与 SP 超过最大值
  68.     @hp = [@hp, self.maxhp].min
  69.     @sp = [@sp, self.maxsp].min
  70.     $game_party.check_gold
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 更改等级
  74.   #     level : 新的等级
  75.   #--------------------------------------------------------------------------
  76.   def level=(level)
  77.     # 检查上下限
  78.     level = [[level, $data_actors[@actor_id].final_level].min, 1].max
  79.     # 更改 EXP
  80.     self.exp = @exp_list[level]
  81.     $game_party.check_gold
  82.   end
  83. end
复制代码
忙里偷闲过来写了一个,没测试~
至于提示,在得到金钱的事件操作中处理吧~
作者: 我不是字母君    时间: 2011-10-8 11:30
本帖最后由 我不是字母君 于 2011-10-8 13:23 编辑

这的确是一个错误~只是事件不小心写错了本来是1号人物的地方写成全体同伴了
为积分拼命~~ 解决方案.7z (177.3 KB, 下载次数: 56)

本帖附件已经更新
又一次更新&&&&&本次更新加入皮袋,使用皮袋后增加1000金钱上限.另外:在maxgold=maxgold*1000处其实可以修改公式
比如说maxgold=maxgold*maxgold+100*maxgold能做成金钱上限=等级平方+100×等级的效果
比如说等级为1,改公式后金钱MAX为101
等级50,改公式后金钱MAX为7500

作者: 77777741    时间: 2011-10-8 12:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2011-10-8 14:08
goldmax=level**2+50
作者: 77777741    时间: 2011-10-8 21:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: 我不是字母君    时间: 2011-10-9 09:26
HTFTP下载链接(更新)
作者: 亿万星辰    时间: 2011-10-9 09:57
我不是字母君 发表于 2011-10-9 09:26
HTFTP下载链接(更新)

思路略微有点绕……

其实问题的根本就是在得到金钱的方法里增设一个对于最大金钱的控制判断,而最大金钱的控制则通过成员的等级来决定,所以只要在每次得到金钱后做一个判断处理就好了,而那个并行的gain_gold(0)实在是……

说真的如果愿意在每次得到金钱以后多做一个公共事件来处理也完全没有问题的,这样又改了脚本,又要通过事件来进行控制着实是需要继续改进……






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