查看: 2520|回复: 7

[已经解决] 求XP版本的装备属性随机

[复制链接]
梦石
0
星屑
371
在线时间
120 小时
注册时间
2012-11-20
回帖
48
发表于 2013-12-1 04:32:00 | 显示全部楼层 |阅读模式

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

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

×
发贴前先搜索的好习惯我还是有的
然后发现大部分都是VX,没细看  也不知道是否通用

XP版本的确实也见到了  是控制前缀的原理  使用不同的前缀来改变属性
但我自己弄得偏武侠古风一些

好比一把屠龙刀 = =  嗯 我就是举个栗子  其实没这玩意{:2_278:}
你非要加个破损的屠龙刀  会不会很诡异的感觉

说这么多 就是想找一个不改变装备名字的属性随机  用来做一个打造系统

现在游戏有个用条件分歧做的打造  随便一弄就是200多个武器数据

这还仅仅是一个级别的  本来还想做武器特技  套装系统

虽然这两个脚本好做  但是没有属性随机作为基础    数据都得好几千  累不爱了


求大神发我一个链接  

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

梦石
0
星屑
50
在线时间
378 小时
注册时间
2013-10-14
回帖
213
发表于 2013-12-1 12:56:21 | 显示全部楼层
本帖最后由 batfjtn 于 2013-12-1 13:06 编辑

转自别人的武器和防具属性随机~~!!

武器只增加攻击里~!!

装备随机属性~~!!

可以自己更改~~!

[pre lang="ruby" line="1"]
class Game_Party
        #==========================================================================
        # 武器
        #==========================================================================
        def gain_weapon(weapon_id, n)
                if weapon_id > 0
                        # 装备栏中卸下的武器、物品栏里卸下的武器
                        if $scene.is_a?(Scene_Equip) or $scene.is_a?(Scene_Shop)
                                @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
                        else
                                # 随机浮动范围~
                                add_atk = rand(100) - 20
                                if add_atk == 0
                                        @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
                                else
                                        now = 0
                                        # 判断数据库中是否已经有 相同属性的武器~
                                        for i in weapon_id...$data_weapons.size
                                                if $data_weapons.atk == $data_weapons[weapon_id].atk+add_atk and
                                                        ($data_weapons.name.split('+')[0] == $data_weapons[weapon_id].name or $data_weapons.name.split('-')[0] == $data_weapons[weapon_id].name)
                                                        now = i
                                                        break
                                                end
                                        end
                                        if now == 0
                                                # 无相同属性时则 重新生成~
                                                new_weapon = $data_weapons[weapon_id].clone
                                                new_weapon.id = $data_weapons.size
                                                case add_atk
                                                when 1..29
                                                        new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name+"+"
                                                when 30..69
                                                        new_weapon.name = "精良的 " + $data_weapons[weapon_id].name+"+"
                                                when 70..100
                                                        new_weapon.name = "极品的 " + $data_weapons[weapon_id].name+"+"
                                                else
                                                        new_weapon.name = "破烂的 " + $data_weapons[weapon_id].name+"-"
                                                end
                                                new_weapon.atk = $data_weapons[weapon_id].atk+add_atk
                                                $data_weapons.push(new_weapon)
                                                # 职业可装备武器数组更新~
                                                for i in 1...$data_classes.size
                                                        if $data_classes.weapon_set.include?(weapon_id)
                                                                $data_classes.weapon_set.push(new_weapon.id)
                                                        end
                                                end
                                                # 增加武器~
                                                @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
                                        else
                                                # 有相同属性则直接 增加武器~
                                                @weapons[now] = [[weapon_number(now) + n, 0].max, 99].min
                                        end
                                end
                        end
                end
        end
        def lose_weapon(weapon_id, n)
                if weapon_id > 0
                        @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
                end
        end
        #==========================================================================
        # 防具
        #==========================================================================
        def gain_armor(armor_id, n)
                if armor_id > 0
                        #
                        if $scene.is_a?(Scene_Equip) or $scene.is_a?(Scene_Shop)
                                @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
                        else
                                # 随机浮动范围~
                                add_rand = (0...6).inject([]){|a,i|a<<rand(50)-25}
                                # 生成对应属性
                                add_attribute = ["pdef", "mdef", "str_plus", "dex_plus", "agi_plus", "int_plus"]
                                # 6次随机数有属性一致几率很小,直接生成
                                new_armor = $data_armors[armor_id].clone
                                new_armor.id = $data_armors.size
                                # 迭代,增加属性
                                6.times{|i|eval("new_armor.#{add_attribute} += #{add_rand} if new_armor.#{add_attribute} > 0")}
                                # 生成名称
                                for i in 0...add_rand.size
                                        add_rand = 0 unless eval("new_armor.#{add_attribute} > 0")
                                end
                                case add_rand.inject(0){|a,b|a+b}
                                when -25*6...-10*6
                                        new_armor.name ="破烂的 " + $data_armors[armor_id].name
                                when -10*6...0
                                        new_armor.name ="粗糙的 " + $data_armors[armor_id].name
                                when     1...10*6
                                        new_armor.name ="精良的 " + $data_armors[armor_id].name
                                when  10*6...25*6
                                        new_armor.name ="极品的 " + $data_armors[armor_id].name
                                end
                                # 数据库生成数据
                                $data_armors << new_armor
                                ($data_classes.size-1).times{|i|$data_classes[i+1].armor_set.push(new_armor.id) unless $data_classes[i+1].armor_set.include?(new_armor)}
                                @armors[new_armor.id] = [[armor_number(new_armor.id) + n, 0].max, 99].min
                        end
                end
        end
        def lose_armor(armor_id, n)
                if armor_id > 0
                        @armors[armor_id] = [[armor_number(armor_id) - n, 0].max, 99].min
                end
        end
end
[/pre]

范例: 随机属性.rar (203.06 KB, 下载次数: 75)

评分

参与人数 2星屑 +70 赞 +1 收起 理由
y967 + 1 塞糖
︶ㄣ牛排ぶ + 70 认可答案

查看全部评分

最简单的学习方法就是努力回答别人的问题...
任何教程都没有实践来的重要...
XP小问题都能自己解决了,剩下的就是脚本了...
╰⋛⋋⊱⋋๑角⊱☠c色๑⋌⊰⋌⋚╯
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2013-12-1 14:41:57 | 显示全部楼层
搞20个前缀都叫“”,这样就是随机属性了。

点评

20个前缀是有20个随机属性还是怎样?  发表于 2013-12-3 02:30
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
371
在线时间
120 小时
注册时间
2012-11-20
回帖
48
 楼主| 发表于 2013-12-4 05:59:40 | 显示全部楼层
亿万星辰 发表于 2013-12-1 14:41
搞20个前缀都叫“”,这样就是随机属性了。

感谢版主 0.0 按照你说的方法用了一下确实没了前缀,只是那个 + - 号要怎么去掉
回复

使用道具 举报

梦石
0
星屑
50
在线时间
378 小时
注册时间
2013-10-14
回帖
213
发表于 2013-12-4 12:38:27 | 显示全部楼层
qq381055296 发表于 2013-12-4 05:59
感谢版主 0.0 按照你说的方法用了一下确实没了前缀,只是那个 + - 号要怎么去掉 ...

把new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name+"+"

修改成

new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name
最简单的学习方法就是努力回答别人的问题...
任何教程都没有实践来的重要...
XP小问题都能自己解决了,剩下的就是脚本了...
╰⋛⋋⊱⋋๑角⊱☠c色๑⋌⊰⋌⋚╯
回复

使用道具 举报

梦石
0
星屑
371
在线时间
120 小时
注册时间
2012-11-20
回帖
48
 楼主| 发表于 2013-12-6 07:45:19 | 显示全部楼层
batfjtn 发表于 2013-12-4 12:38
把new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name+"+"

修改成

我之前用了一个显示获得装备信息的脚本,就是在显示脚本里面把获得武器后面加了一个,true。这个脚本和这一点冲突了,请问怎样修改可以兼容

点评

脚本也要贴出来看一下啊~~!?  发表于 2013-12-6 11:33
回复

使用道具 举报

梦石
0
星屑
371
在线时间
120 小时
注册时间
2012-11-20
回帖
48
 楼主| 发表于 2013-12-7 08:53:10 | 显示全部楼层
batfjtn 发表于 2013-12-4 12:38
把new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name+"+"

修改成

  # ● 增减武器
  #--------------------------------------------------------------------------
  def command_127
    # 获取要操作的值
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    # 增减武器
    $game_party.gain_weapon(@parameters[0], value,true)
    command_106(15)
    # 继续
    return true
  end

嗯 第7行提示ArgumentError  wrong number of arguments(3 for 2)

点评

这个是事件调用脚本吧~!?  发表于 2013-12-7 13:31
回复

使用道具 举报

梦石
0
星屑
50
在线时间
161 小时
注册时间
2013-8-12
回帖
51
发表于 2014-4-6 11:53:35 | 显示全部楼层
存档再读档,装备会消失!
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部