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

Project1

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

角色能力随机成长的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
69
在线时间
9 小时
注册时间
2006-2-16
帖子
66
跳转到指定楼层
1
发表于 2008-3-7 00:03:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想做一些角色,成长值不固定,随机的。

即在升级后,加点有一个范围,例如力量会提升1-3之间,


这个如何完成??
此贴于 2008-3-11 11:48:07 被版主水迭澜提醒,请楼主看到后对本贴做出回应。


----------------版务----------------
如果问题未解决,请继续提问
如果问题已解决,请结贴
若到末贴发贴时间后一周仍未结贴
管理员会自动为你过期帖子、结贴或强行认可答案(好人卡-1)

Lv1.梦旅人

梦石
0
星屑
50
在线时间
17 小时
注册时间
2007-8-10
帖子
170
2
发表于 2008-3-7 03:12:28 | 只看该作者
数据库设定的没升级某人物增长多少属性.
如果不想用数据库的成长曲线,你可以修改有关读取角色属性的脚本吧.不过,我没试过修改(怕自己修改不全).
或者你使用升级加点脚本(主站上有),可以设定数据库的角色成长为一平线(即成长为0),然后在角色升级时,增长的量,来个随机.当然也需要修改升级加点等的脚本.如果不想自己不断试着修改的话,就忽视吧
……
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

3
发表于 2008-3-7 04:15:12 | 只看该作者
这么说吧……恐怕跟你想象的不一样= =
角色的属性不是升级时候加上去的,而是在数据库里设置好的,只是在计算的时候根据等级从数据库里读出来……= =

所以建议,在数据库把角色设置成升级不加点
然后在Game_Actor这段里改

  def exp=(exp)
    @exp = [[exp, 9999999].min, 0].max
    # 升级
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      @level += 1
      # 学会特技
      for j in $data_classes[@class_id].learnings
        if j.level == @level
          learn_skill(j.skill_id)
        end
      end
    end
    # 降级
    while @exp < @exp_list[@level]
      @level -= 1
    end
    # 修正当前的 HP 与 SP 超过最大值
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
改为:
  def exp=(exp)
    @exp = [[exp, 9999999].min, 0].max
    # 升级
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      @level += 1
      # 学会特技


      str += rand(3)+1 ###力量增加1~3
      agi += rand(3)+1
      dex += rand(3)+1
      int += rand(3)+1



      for j in $data_classes[@class_id].learnings
        if j.level == @level
          learn_skill(j.skill_id)
        end
      end
    end
    # 降级
    while @exp < @exp_list[@level]
      @level -= 1
    end
    # 修正当前的 HP 与 SP 超过最大值
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end

降级的时候减属性不好设置,没判断。一般也不会降等级吧= =
另外没测试,不知道可行与否
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
4
发表于 2008-3-7 04:24:31 | 只看该作者
以下引用水迭澜于2008-3-6 20:15:12的发言:

降级的时候减属性不好设置,没判断。一般也不会降等级吧= =
另外没测试,不知道可行与否


[本贴由作者于 2008-3-6 20:15:35 最后编辑]

那可不一定哦!呵呵!我的游戏里就有Exp伤害的特效。
貌似对水水的脚本有些质疑
在def base_str里,不是要载入数据库的str吗?
那这个脚本有多大意义呢?也就是说,每次升级只不过是在原有数据库的增加度上加1~3,好像没有叠加效果吧!
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv5.捕梦者

御灵的宠物

梦石
12
星屑
8438
在线时间
88 小时
注册时间
2006-12-11
帖子
3148

第2届TG大赛亚军

5
发表于 2008-3-7 04:30:07 | 只看该作者
不是的。有区别的,我增加的是str
而str的增加是加在str_plus里的~可以叠加的~
我的Lofter:http://nightoye.lofter.com/

回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
6
发表于 2008-3-7 04:34:41 | 只看该作者
哦!明白了……
不常在线,有事PM
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

7
发表于 2008-3-7 08:14:08 | 只看该作者
報告娘娘~完全不行咩=v=
Game_Actor裡面根本沒有str,agi,dex,int的函數 囧rz
可以考慮成這樣:
01.我們角色的基本能力不隨等級變化,全部讀取等級1時候的能力

  1.   #--------------------------------------------------------------------------
  2.   # ● 获取基本力量
  3.   #--------------------------------------------------------------------------
  4.   def base_str
  5.     n = $data_actors[@actor_id].parameters[2, 0]
  6.     weapon = $data_weapons[@weapon_id]
  7.     armor1 = $data_armors[@armor1_id]
  8.     armor2 = $data_armors[@armor2_id]
  9.     armor3 = $data_armors[@armor3_id]
  10.     armor4 = $data_armors[@armor4_id]
  11.     n += weapon != nil ? weapon.str_plus : 0
  12.     n += armor1 != nil ? armor1.str_plus : 0
  13.     n += armor2 != nil ? armor2.str_plus : 0
  14.     n += armor3 != nil ? armor3.str_plus : 0
  15.     n += armor4 != nil ? armor4.str_plus : 0
  16.     return [[n, 1].max, 999].min
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 获取基本灵巧
  20.   #--------------------------------------------------------------------------
  21.   def base_dex
  22.     n = $data_actors[@actor_id].parameters[3, 0]
  23.     weapon = $data_weapons[@weapon_id]
  24.     armor1 = $data_armors[@armor1_id]
  25.     armor2 = $data_armors[@armor2_id]
  26.     armor3 = $data_armors[@armor3_id]
  27.     armor4 = $data_armors[@armor4_id]
  28.     n += weapon != nil ? weapon.dex_plus : 0
  29.     n += armor1 != nil ? armor1.dex_plus : 0
  30.     n += armor2 != nil ? armor2.dex_plus : 0
  31.     n += armor3 != nil ? armor3.dex_plus : 0
  32.     n += armor4 != nil ? armor4.dex_plus : 0
  33.     return [[n, 1].max, 999].min
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 获取基本速度
  37.   #--------------------------------------------------------------------------
  38.   def base_agi
  39.     n = $data_actors[@actor_id].parameters[4, 0]
  40.     weapon = $data_weapons[@weapon_id]
  41.     armor1 = $data_armors[@armor1_id]
  42.     armor2 = $data_armors[@armor2_id]
  43.     armor3 = $data_armors[@armor3_id]
  44.     armor4 = $data_armors[@armor4_id]
  45.     n += weapon != nil ? weapon.agi_plus : 0
  46.     n += armor1 != nil ? armor1.agi_plus : 0
  47.     n += armor2 != nil ? armor2.agi_plus : 0
  48.     n += armor3 != nil ? armor3.agi_plus : 0
  49.     n += armor4 != nil ? armor4.agi_plus : 0
  50.     return [[n, 1].max, 999].min
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 获取基本魔力
  54.   #--------------------------------------------------------------------------
  55.   def base_int
  56.     n = $data_actors[@actor_id].parameters[5, 0]
  57.     weapon = $data_weapons[@weapon_id]
  58.     armor1 = $data_armors[@armor1_id]
  59.     armor2 = $data_armors[@armor2_id]
  60.     armor3 = $data_armors[@armor3_id]
  61.     armor4 = $data_armors[@armor4_id]
  62.     n += weapon != nil ? weapon.int_plus : 0
  63.     n += armor1 != nil ? armor1.int_plus : 0
  64.     n += armor2 != nil ? armor2.int_plus : 0
  65.     n += armor3 != nil ? armor3.int_plus : 0
  66.     n += armor4 != nil ? armor4.int_plus : 0
  67.     return [[n, 1].max, 999].min
  68.   end
复制代码

2.在昇級的時候設定等級1的能力(動態改變數據庫)
  1.   #--------------------------------------------------------------------------
  2.   # ● 更改 EXP
  3.   #     exp : 新的 EXP
  4.   #--------------------------------------------------------------------------
  5.   def exp=(exp)
  6.     @exp = [[exp, 9999999].min, 0].max
  7.     # 升级
  8.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  9.       @level += 1
  10.       $data_actors[@actor_id].parameters[2, 0] += rand(3)+1
  11.       $data_actors[@actor_id].parameters[3, 0] += rand(3)+1
  12.       $data_actors[@actor_id].parameters[4, 0] += rand(3)+1
  13.       $data_actors[@actor_id].parameters[5, 0] += rand(3)+1
  14.       # 学会特技
  15.       for j in $data_classes[@class_id].learnings
  16.         if j.level == @level
  17.           learn_skill(j.skill_id)
  18.         end
  19.       end
  20.     end
  21.     # 降级
  22.     while @exp < @exp_list[@level]
  23.       @level -= 1
  24.     end
  25.     # 修正当前的 HP 与 SP 超过最大值
  26.     @hp = [@hp, self.maxhp].min
  27.     @sp = [@sp, self.maxsp].min
  28.   end
复制代码
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
69
在线时间
9 小时
注册时间
2006-2-16
帖子
66
8
 楼主| 发表于 2008-3-7 16:59:01 | 只看该作者
感谢三楼兄弟的友情帮助,待俺回家后试试看 {/cy}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

史上最强粉丝

梦石
0
星屑
50
在线时间
9 小时
注册时间
2007-8-20
帖子
5574

贵宾

9
发表于 2008-3-7 17:47:12 | 只看该作者
……大家都是脚本派…
用事件就能无冲突的说…
1号变量是1号角色的成长…
升级事执行这个事件,
随机变量1的值1到3,角色力量+这个变量值,随机变量1的值1到3,角色敏捷值+这个变量值……
这样,利用状态法,升级时给角色加个状态,用状态做判定…
回复 支持 反对

使用道具 举报

Lv1.梦旅人

冰王子

梦石
0
星屑
50
在线时间
34 小时
注册时间
2008-1-27
帖子
1875
10
发表于 2008-3-7 21:27:16 | 只看该作者
以下引用禾西于2008-3-7 0:14:08的发言:

報告娘娘~完全不行咩=v=
Game_Actor裡面根本沒有str,agi,dex,int的函數 囧rz

有是有的不过在Game_Battler里
  1. def str
  2.     n = [[base_str + @str_plus, 1].max, 9999].min
  3.     for i in @states
  4.       n *= $data_states[i].str_rate / 100.0
  5.     end
  6.     n = [[Integer(n), 1].max, 9999].min
  7.     return n
  8.   end
复制代码

即str = base_str + @str_plus
而通过物品增加属性值是增加@str_plus
所以,我感觉是不是改成str_plus合理点
不常在线,有事PM
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 23:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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