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

Project1

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

[已经解决] 能否把武器攻击力随机改成装备能力随机

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
跳转到指定楼层
1
发表于 2011-4-16 19:48:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 u566 于 2011-4-23 21:09 编辑

感觉夏娜大大的武器攻击力随机脚本很好,我想问问能不能把武器攻击力随机改成装备能力随机,品质就是新属性总和减旧属性总和,大于0精良,大于10极品等等。脚本知识有限,试了几次都不成功,求修改,附上脚本
  1. class Game_Party

  2. def gain_weapon(weapon_id, n)
  3.    if weapon_id > 0
  4.      #  装备栏中卸下的武器、物品栏里卸下的武器、合成的武器不进行随机处理~
  5.      if $scene.is_a?(Scene_Equip)or$scene.is_a?(Scene_Item)or$scene.is_a?(Scene_Combine)
  6.        @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  7.      else
  8.        # 随机浮动范围~
  9.        add_atk = rand(50)-25
  10.        if add_atk == 0
  11.          @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  12.        else
  13.          now = 0
  14.          # 判断数据库中是否已经有 相同属性的武器~
  15.          for i in weapon_id...$data_weapons.size
  16.            if $data_weapons[i].atk == $data_weapons[weapon_id].atk+add_atk and
  17.             ($data_weapons[i].name.split('+')[0] == $data_weapons[weapon_id].name or $data_weapons[i].name.split('-')[0] == $data_weapons[weapon_id].name)
  18.              now = i
  19.              break
  20.            end         end
  21.          if now == 0
  22.            # 无相同属性时则 重新生成~
  23.            new_weapon = $data_weapons[weapon_id].clone
  24.            new_weapon.id = $data_weapons.size
  25.            if add_atk<0
  26.              new_weapon.name = $data_weapons[weapon_id].name+" 破烂"
  27.              if add_atk<10
  28.              new_weapon.name = $data_weapons[weapon_id].name+" 粗糙"
  29.            end
  30.            else            
  31.              if add_atk<10
  32.             new_weapon.name = $data_weapons[weapon_id].name+" 精良"
  33.           else
  34.             new_weapon.name = $data_weapons[weapon_id].name+" 极品"
  35.           end
  36.            end
  37.            new_weapon.atk = $data_weapons[weapon_id].atk+add_atk
  38.            $data_weapons.push(new_weapon)
  39.            # 职业可装备武器数组更新~
  40.            for i in 1...$data_classes.size
  41.              if $data_classes[i].weapon_set.include?(weapon_id)
  42.                $data_classes[i].weapon_set.push(new_weapon.id)
  43.              end
  44.            end
  45.            # 增加武器~
  46.            @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  47.          else
  48.            # 有相同属性则直接 增加武器~
  49.            @weapons[now] = [[weapon_number(now) + n, 0].max, 99].min
  50.          end
  51.        end
  52.      end
  53.    end
  54. end

  55. def lose_weapon(weapon_id, n)   
  56.    if weapon_id > 0
  57.      @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
  58.    end
  59. end

  60. end
复制代码
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
2
 楼主| 发表于 2011-4-17 13:22:57 | 只看该作者
本帖最后由 u566 于 2011-4-17 13:23 编辑

自顶
超级无敌字数补丁.exe

点评

下次帮你,没时间了....  发表于 2011-4-17 17:35
我倒...(爬起)多个属性....怎么算品质...?求和...?再倒....(没爬起来了)  发表于 2011-4-17 16:54
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
3
发表于 2011-4-17 16:33:23 | 只看该作者
参考F1的装备属性
武器
atk
攻击力。

pdef
物理防御。

mdef
魔法防御。

str_plus
力量+。

dex_plus
灵巧+。

agi_plus
速度+。

int_plus

防具自己看...
修改的话..把LZ给的脚本"所有"   atk    改为   上面的任意一个就好了,品质改不改你看Lz你的了,至于防具,
同理,不过要修改 gain_armor和lose_armor了

点评

所你说来向你求教了,这样实际改起脚本来太复杂,弄不好,囧  发表于 2011-4-17 17:04
就是求和呀,新属性的总和减旧属性的总和,再计算品质。另外你的方法我用了之后发现原来没有的属性也有增减而且事件里获得一个实际获得了六个  发表于 2011-4-17 17:01
关键是防具拥有多个属性,但只有一个品质,如何解决  发表于 2011-4-17 16:49
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
4
 楼主| 发表于 2011-4-23 19:43:30 | 只看该作者
快一个星期了,还能自顶么
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

Lv3.寻梦者

酱油的

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

贵宾

5
发表于 2011-4-24 02:29:18 | 只看该作者
搜索隨機裝備

点评

有啥不一樣?葉子和我都是按照夏娜這個基礎發展的  发表于 2011-4-24 10:57
随机装备生成和夏娜大大的效果不一样的说  发表于 2011-4-24 09:44
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
6
发表于 2011-4-24 15:33:13 | 只看该作者
本帖最后由 沙漠点灰 于 2011-4-24 15:34 编辑

回复 u566 的帖子

抱歉,忘记这儿了....请测试一下,我没有测试,可能有bug,话说自己学着学习一下脚本,很好学的,我就是慢慢
摸索出来的....脚本如下:
  1. class Game_Party
  2.   def gain_weapon(weapon_id, n)
  3.     if weapon_id > 0
  4.       #  装备栏中卸下的武器、物品栏里卸下的武器、合成的武器不进行随机处理~
  5.       if $scene.is_a?(Scene_Equip)or$scene.is_a?(Scene_Item)or$scene.is_a?(Scene_Combine)
  6.         @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  7.       else
  8.         # 累计6次随机数 随机浮动范围~
  9.         add_rand = (0..6).inject([]){|a,i|a<<rand(50)-25}
  10.         # 生成对应属性,属性英语单词是什么...? "xxxx"代替!
  11.         add_xxxx = ["pdef", "mdef", "str_plus", "dex_plus", "agi_plus", "int_plus"]
  12.         # 6次随机数有属性一致几率很小,直接生成
  13.         new_weapon = $data_weapons[weapon_id].clone
  14.         new_weapon.id = $data_weapons.size
  15.         # 迭代,增加属性
  16.         6.times{|i|eval("new_weapon.#{add_xxxx[i]} += #{add_rand[i]}")}
  17.         # 生成名称
  18.         case add_rand.inject{|a,b|a+b}
  19.         when -25*6...-10*6
  20.           new_weapon.name += " 破烂"
  21.         when -10*6...0
  22.           new_weapon.name += " 粗糙"
  23.         when     1...10*6
  24.           new_weapon.name += " 精良"
  25.         when  10*6...25*6
  26.           new_weapon.name += " 极品"
  27.         end
  28.         # 数据库生成数据
  29.         $data_weapons << new_weapon
  30.         @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  31.        end
  32.      end
  33.   end
  34.   def lose_weapon(weapon_id, n)   
  35.     if weapon_id > 0
  36.       @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
  37.     end
  38.   end
  39. end
复制代码

点评

问题已解决》。。  发表于 2011-4-25 19:24
你的动态光标移动和我的工程有冲突,不知道为什么  发表于 2011-4-24 16:59
求修改  发表于 2011-4-24 16:30
本人在学脚本了,你的脚本BUG好多,具体见我的帖子  发表于 2011-4-24 16:24
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
7
 楼主| 发表于 2011-4-24 16:23:52 | 只看该作者
BUG多多的说...
首先是没有任何效果,把脚本里的weapon改为armor,把name改为quality,有效果了
但是....角色不能装备,就是只在物品栏显示,不在装备栏显示
并且我想实现的效果是有的属性(比如衣服有物理防御和魔法防御)才波动,没有的属性不波动
并且属性不为负值,附图
还有修改过的脚本
  1. class Game_Party
  2.   def gain_armor(armor_id, n)
  3.     if armor_id > 0
  4.       #  装备栏中卸下的武器、物品栏里卸下的武器、合成的武器不进行随机处理~
  5.       if $scene.is_a?(Scene_Equip)or$scene.is_a?(Scene_Item)or$scene.is_a?(Scene_Combine)
  6.         @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  7.       else
  8.         # 累计6次随机数 随机浮动范围~
  9.         add_rand = (0..6).inject([]){|a,i|a<<rand(50)-25}
  10.         # 生成对应属性,属性英语单词是什么...? "xxxx"代替!
  11.         add_xxxx = ["pdef", "mdef", "str_plus", "dex_plus", "agi_plus", "int_plus"]
  12.         # 6次随机数有属性一致几率很小,直接生成
  13.         new_armor = $data_armors[armor_id].clone
  14.         new_armor.id = $data_armors.size
  15.         # 迭代,增加属性
  16.         6.times{|i|eval("new_armor.#{add_xxxx[i]} += #{add_rand[i]}")}
  17.         # 生成名称
  18.         case add_rand.inject{|a,b|a+b}
  19.         when -25*6...-10*6
  20.           new_armor.quality = " 破烂"
  21.         when -10*6...0
  22.           new_armor.quality = " 粗糙"
  23.         when     1...10*6
  24.           new_armor.quality = " 精良"
  25.         when  10*6...25*6
  26.           new_armor.quality = " 极品"
  27.         end
  28.         # 数据库生成数据
  29.         $data_armors << new_armor
  30.         @armors[new_armor.id] = [[armor_number(new_armor.id) + n, 0].max, 99].min
  31.        end
  32.      end
  33.   end
  34.   def lose_armor(armor_id, n)   
  35.     if armor_id > 0
  36.       @armors[armor_id] = [[armor_number(armor_id) - n, 0].max, 99].min
  37.     end
  38.   end
  39. end
复制代码

点评

对了...(0..6) 改为 (0...6) 少打上一个点,不过没什么区别,仅仅浪费几乎不计的内存空间  发表于 2011-4-24 16:39
忘记我改的quality了.....  发表于 2011-4-24 16:28
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
帖子
666
8
发表于 2011-4-24 16:31:27 | 只看该作者
本帖最后由 沙漠点灰 于 2011-4-25 17:29 编辑

回复 u566 的帖子

已修改:
  1. class Game_Party
  2.   def gain_armor(armor_id, n)
  3.     if armor_id > 0
  4.       #  装备栏中卸下的武器、物品栏里卸下的武器、合成的武器不进行随机处理~
  5.       if $scene.is_a?(Scene_Equip)or$scene.is_a?(Scene_Item)or$scene.is_a?(Scene_Combine)
  6.         @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  7.       else
  8.         # 累计6次随机数 随机浮动范围~
  9.         add_rand = (0...6).inject([]){|a,i|a<<rand(50)-25}
  10.         # 生成对应属性,属性英语单词是什么...? "xxxx"代替!
  11.         add_xxxx = ["pdef", "mdef", "str_plus", "dex_plus", "agi_plus", "int_plus"]
  12.         # 6次随机数有属性一致几率很小,直接生成
  13.         new_armor = $data_armors[armor_id].clone
  14.         new_armor.id = $data_armors.size
  15.         # 迭代,增加属性
  16.         6.times{|i|eval("new_armor.#{add_xxxx[i]} += #{add_rand[i]} if new_armor.#{add_xxxx[i]} > 0")}
  17.         # 生成名称
  18.         for i in 0...add_rand.size
  19.           add_rand[i] = 0 unless eval("new_armor.#{add_xxxx[i]} > 0")
  20.         end
  21.         case add_rand.inject(0){|a,b|a+b}
  22.         when -25*6...-10*6
  23.           new_armor.quality = " 破烂"
  24.         when -10*6...0
  25.           new_armor.quality = " 粗糙"
  26.         when     1...10*6
  27.           new_armor.quality = " 精良"
  28.         when  10*6...25*6
  29.           new_armor.quality = " 极品"
  30.         end
  31.         # 数据库生成数据
  32.         $data_armors << new_armor
  33.         ($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)}
  34.         @armors[new_armor.id] = [[armor_number(new_armor.id) + n, 0].max, 99].min
  35.        end
  36.      end
  37.   end
  38.   def lose_armor(armor_id, n)   
  39.     if armor_id > 0
  40.       @armors[armor_id] = [[armor_number(armor_id) - n, 0].max, 99].min
  41.     end
  42.   end
  43. end
复制代码
ps. 问题真的好多...我今天肯定会出问题

点评

问题依然有....  发表于 2011-4-24 18:06
还有品质判定的问题,见帖子  发表于 2011-4-24 17:17
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
9
 楼主| 发表于 2011-4-24 16:39:37 | 只看该作者
本帖最后由 u566 于 2011-4-24 16:54 编辑

回复 沙漠点灰 的帖子

附工程 脚本整合.rar (703.92 KB, 下载次数: 70)

截图1303634371.jpg (10.04 KB, 下载次数: 6)

截图1303634371.jpg

点评

已修改  发表于 2011-4-24 17:02
好吧,和谐掉了  发表于 2011-4-24 16:54
也就是y坐标的问题,可以试试用数组(Array),用Array的话,几乎不会错...  发表于 2011-4-24 16:46
一题多问禁止,我们要和谐...那个问题自己试试吧....  发表于 2011-4-24 16:44
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
10
 楼主| 发表于 2011-4-24 17:19:51 | 只看该作者
回复 沙漠点灰 的帖子

品质的判定有问题,如图,初始设定为35,魔力49品质竟然是粗糙,多次测试的确有问题

点评

抱歉....一时心急。。。add_rand[i] = 0 if eval("new_armor.#{add_xxxx[i]} > 0") if 改为 unless 已修改  发表于 2011-4-25 17:27
再次修改  发表于 2011-4-24 17:38
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 00:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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