Project1

标题: 求XP版本的装备属性随机 [打印本页]

作者: qq381055296    时间: 2013-12-1 04:32
标题: 求XP版本的装备属性随机
发贴前先搜索的好习惯我还是有的
然后发现大部分都是VX,没细看  也不知道是否通用

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

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

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

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

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

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


求大神发我一个链接  
作者: batfjtn    时间: 2013-12-1 12:56
本帖最后由 batfjtn 于 2013-12-1 13:06 编辑

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

武器只增加攻击里~!!

装备随机属性~~!!

可以自己更改~~!

RUBY 代码复制
  1. class Game_Party
  2.         #==========================================================================
  3.         # 武器
  4.         #==========================================================================
  5.         def gain_weapon(weapon_id, n)
  6.                 if weapon_id > 0
  7.                         # 装备栏中卸下的武器、物品栏里卸下的武器
  8.                         if $scene.is_a?(Scene_Equip) or $scene.is_a?(Scene_Shop)
  9.                                 @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  10.                         else
  11.                                 # 随机浮动范围~
  12.                                 add_atk = rand(100) - 20
  13.                                 if add_atk == 0
  14.                                         @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  15.                                 else
  16.                                         now = 0
  17.                                         # 判断数据库中是否已经有 相同属性的武器~
  18.                                         for i in weapon_id...$data_weapons.size
  19.                                                 if $data_weapons[i].atk == $data_weapons[weapon_id].atk+add_atk and
  20.                                                         ($data_weapons[i].name.split('+')[0] == $data_weapons[weapon_id].name or $data_weapons[i].name.split('-')[0] == $data_weapons[weapon_id].name)
  21.                                                         now = i
  22.                                                         break
  23.                                                 end
  24.                                         end
  25.                                         if now == 0
  26.                                                 # 无相同属性时则 重新生成~
  27.                                                 new_weapon = $data_weapons[weapon_id].clone
  28.                                                 new_weapon.id = $data_weapons.size
  29.                                                 case add_atk
  30.                                                 when 1..29
  31.                                                         new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name+"+"
  32.                                                 when 30..69
  33.                                                         new_weapon.name = "精良的 " + $data_weapons[weapon_id].name+"+"
  34.                                                 when 70..100
  35.                                                         new_weapon.name = "极品的 " + $data_weapons[weapon_id].name+"+"
  36.                                                 else
  37.                                                         new_weapon.name = "破烂的 " + $data_weapons[weapon_id].name+"-"
  38.                                                 end
  39.                                                 new_weapon.atk = $data_weapons[weapon_id].atk+add_atk
  40.                                                 $data_weapons.push(new_weapon)
  41.                                                 # 职业可装备武器数组更新~
  42.                                                 for i in 1...$data_classes.size
  43.                                                         if $data_classes[i].weapon_set.include?(weapon_id)
  44.                                                                 $data_classes[i].weapon_set.push(new_weapon.id)
  45.                                                         end
  46.                                                 end
  47.                                                 # 增加武器~
  48.                                                 @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  49.                                         else
  50.                                                 # 有相同属性则直接 增加武器~
  51.                                                 @weapons[now] = [[weapon_number(now) + n, 0].max, 99].min
  52.                                         end
  53.                                 end
  54.                         end
  55.                 end
  56.         end
  57.         def lose_weapon(weapon_id, n)
  58.                 if weapon_id > 0
  59.                         @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
  60.                 end
  61.         end
  62.         #==========================================================================
  63.         # 防具
  64.         #==========================================================================
  65.         def gain_armor(armor_id, n)
  66.                 if armor_id > 0
  67.                         #
  68.                         if $scene.is_a?(Scene_Equip) or $scene.is_a?(Scene_Shop)
  69.                                 @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  70.                         else
  71.                                 # 随机浮动范围~
  72.                                 add_rand = (0...6).inject([]){|a,i|a<<rand(50)-25}
  73.                                 # 生成对应属性
  74.                                 add_attribute = ["pdef", "mdef", "str_plus", "dex_plus", "agi_plus", "int_plus"]
  75.                                 # 6次随机数有属性一致几率很小,直接生成
  76.                                 new_armor = $data_armors[armor_id].clone
  77.                                 new_armor.id = $data_armors.size
  78.                                 # 迭代,增加属性
  79.                                 6.times{|i|eval("new_armor.#{add_attribute[i]} += #{add_rand[i]} if new_armor.#{add_attribute[i]} > 0")}
  80.                                 # 生成名称
  81.                                 for i in 0...add_rand.size
  82.                                         add_rand[i] = 0 unless eval("new_armor.#{add_attribute[i]} > 0")
  83.                                 end
  84.                                 case add_rand.inject(0){|a,b|a+b}
  85.                                 when -25*6...-10*6
  86.                                         new_armor.name ="破烂的 " + $data_armors[armor_id].name
  87.                                 when -10*6...0
  88.                                         new_armor.name ="粗糙的 " + $data_armors[armor_id].name
  89.                                 when     1...10*6
  90.                                         new_armor.name ="精良的 " + $data_armors[armor_id].name
  91.                                 when  10*6...25*6
  92.                                         new_armor.name ="极品的 " + $data_armors[armor_id].name
  93.                                 end
  94.                                 # 数据库生成数据
  95.                                 $data_armors << new_armor
  96.                                 ($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)}
  97.                                 @armors[new_armor.id] = [[armor_number(new_armor.id) + n, 0].max, 99].min
  98.                         end
  99.                 end
  100.         end
  101.         def lose_armor(armor_id, n)
  102.                 if armor_id > 0
  103.                         @armors[armor_id] = [[armor_number(armor_id) - n, 0].max, 99].min
  104.                 end
  105.         end
  106. end


范例: 随机属性.rar (203.06 KB, 下载次数: 74)
作者: 亿万星辰    时间: 2013-12-1 14:41
搞20个前缀都叫“”,这样就是随机属性了。
作者: qq381055296    时间: 2013-12-4 05:59
亿万星辰 发表于 2013-12-1 14:41
搞20个前缀都叫“”,这样就是随机属性了。

感谢版主 0.0 按照你说的方法用了一下确实没了前缀,只是那个 + - 号要怎么去掉
作者: batfjtn    时间: 2013-12-4 12:38
qq381055296 发表于 2013-12-4 05:59
感谢版主 0.0 按照你说的方法用了一下确实没了前缀,只是那个 + - 号要怎么去掉 ...

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

修改成

new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name
作者: qq381055296    时间: 2013-12-6 07:45
batfjtn 发表于 2013-12-4 12:38
把new_weapon.name = "粗糙的 " + $data_weapons[weapon_id].name+"+"

修改成

我之前用了一个显示获得装备信息的脚本,就是在显示脚本里面把获得武器后面加了一个,true。这个脚本和这一点冲突了,请问怎样修改可以兼容
作者: qq381055296    时间: 2013-12-7 08:53
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)
作者: 孙勇    时间: 2014-4-6 11:53
存档再读档,装备会消失!




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