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

Project1

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

[原创发布] 武器库系统的制作

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-11-5
帖子
6
跳转到指定楼层
1
发表于 2005-12-2 02:16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
#1  类似于暗黑的武器库生成系统

类似于暗黑的武器库生成系统


                  玩过暗黑的知道,它的武器系统非常庞大,
                  而且是随机生成的,
                  这是一个类似的系统:


                  
                  1 首先建立基础库,
                  把武器ID号为100以下的数据健全,
                  注意:10,20..90,100;不要定义
                  只定义名称和攻击力就行
                  2 在Mian之前插入以下的原码
                  3 在新游戏的位置调用 SetWeapon 函数
                  4 注意在新游戏开始时,有可能进入失败,
                  曰文提示,我看不懂,
                  多进几次就没问题了
                  以后load进度就行
                  5 它可以自动生成101 ~ 999的全部武器
                  100以下的你要自己定义
                  6 对职业使用的武器列表,没有填加,
                  有时间再编制,
                  目前它是100个武器一循环
                  你需要对应前一百个武器,逐一点选。


                  如果你在商店里加入这些编号,就可以看到这些武器随机生成的名字


                  说明,单价等等


                  #------------------------------
                  #计算随机数
                  def Setrand1(lv = 10)
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  ivalue = (lv / 10).to_i


                  #lv = lv - (lv / 100).to_i * 100
                  maxvalue = lv - ivalue * 10 #武器变化的最大值 10

                  maxvalue1 = 0
                  for t in 1..maxvalue * 10
                  maxvalue1 = maxvalue1 + t
                  end

                  iret = rand(maxvalue1) + 1


                  itemp = 0
                  #数值越大,出现几率越小
                  maxvalue1 = 0
                  for t in 1..maxvalue * 10
                  maxvalue1 = maxvalue1 + t
                  if iret >= (maxvalue1 - t) and iret < maxvalue1 then
                  break
                  end

                  end


                  iret = (maxvalue * 10 - t).abs
                  if iret == 0
                  iret = 1
                  end


                  return iret.to_i
                  end#------------------------------



                  #------------------------------
                  #请输入注释
                  def SetWeapon


                  for gg in 1..9
                  for tt in 1..99
                  if (tt / 10).to_i * 10 == tt then
                  next
                  end

                  name = $data_weapons[tt].name
                  icon_name = $data_weapons[tt].icon_name
                  description = $data_weapons[tt].description
                  animation1_id = $data_weapons[tt].animation1_id
                  animation2_id = $data_weapons[tt].animation2_id
                  atk = $data_weapons[tt].atk
                  pdef = $data_weapons[tt].pdef
                  mdef = $data_weapons[tt].mdef
                  str_plus = $data_weapons[tt].str_plus
                  dex_plus = $data_weapons[tt].dex_plus
                  agi_plus = $data_weapons[tt].agi_plus
                  int_plus = $data_weapons[tt].int_plus

                  add = 100
                  sdce = ''
                  iprice = 0
                  sname = ""
                  while add >= 90
                  #是否继续增加属性
                  add = rand(100)
                  #print(add)
                  t = gg * 100 + tt

                  #随机按比例增加属性
                  r = rand(100)

                  # 按攻击力计算价格

                  iprice = iprice + ((atk / 10).to_i) * ((atk / 10).to_i) *
                  ((atk / 10).to_i)

                  #40%出现增减攻击力
                  if r <= 40 then
                  itemp = Setrand(tt)

                  iprice = iprice + itemp * 200
                  atk = atk + itemp
                  sdce = sdce + "攻击+" + itemp.to_s + ";"
                  $data_weapons[t].atk = atk
                  sname = '攻击之'
                  end

                  #10%出现增减物防
                  if r > 40 and r <= 50 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 300
                  pdef = pdef + itemp
                  sdce = sdce + "物防+" + itemp.to_s + ";"
                  $data_weapons[t].pdef = pdef
                  $data_weapons[t].atk = atk
                  sname = '物防之'
                  end


                  #10%出现增减魔防
                  if r > 50 and r <= 60 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 400
                  mdef = mdef + itemp
                  sdce = sdce + "魔防+" + itemp.to_s + ";"
                  $data_weapons[t].mdef = mdef
                  $data_weapons[t].atk = atk
                  sname = '魔防之'
                  end

                  #5%出现增减力量
                  if r > 60 and r <= 65 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  str_plus = str_plus + itemp
                  sdce = sdce + '力量+' + itemp.to_s + ';'
                  $data_weapons[t].str_plus = str_plus
                  $data_weapons[t].atk = atk
                  sname = '力量之'
                  end

                  #5%出现增减力量
                  if r > 65 and r <= 70 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  dex_plus = dex_plus + itemp
                  sdce = sdce + '灵巧+' + itemp.to_s + ';'
                  $data_weapons[t].dex_plus = dex_plus
                  $data_weapons[t].atk = atk
                  sname = '灵巧之'
                  end

                  #5%出现增减力量
                  if r > 70 and r <= 75 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  agi_plus = agi_plus + itemp
                  $data_weapons[t].agi_plus = agi_plus
                  sdce = sdce + '速度+' + itemp.to_s + ';'
                  $data_weapons[t].atk = atk
                  sname = '速度之'
                  end

                  #5%出现增减力量
                  if r > 75 and r <= 80 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  int_plus = int_plus + itemp
                  sdce = sdce + '魔力+' + itemp.to_s + ';'
                  $data_weapons[t].int_plus = int_plus
                  $data_weapons[t].atk = atk
                  sname = '魔力之'
                  end

                  #5%出现增减属性
                  if r > 80 and r <= 90 and $data_weapons[t].element_set.size <
                  9 then
                  r1 = rand(9) + 1
                  isize = $data_weapons[t].element_set.size
                  loop do
                  if isize > 0 then
                  for ttt in 1..isize
                  if $data_weapons[t].element_set[ttt] == r1 then
                  break
                  end

                  end
                  if ttt > isize then
                  break
                  end
                  else
                  break
                  end
                  r1 = rand(9) + 1
                  end
                  iprice = iprice + 10000
                  $data_weapons[t].element_set[isize + 1] = r1
                  $data_weapons[t].atk = atk
                  case r1
                  when 1
                  sname = '物理之'
                  sdce = sdce + '+物理属性;'
                  when 2
                  sname = '光之'
                  sdce = sdce + '+光属性;'
                  when 3
                  sname = '冰之'
                  sdce = sdce + '+冰属性;'
                  when 4
                  sname = '毒之'
                  sdce = sdce + '+毒属性;'
                  when 5
                  sname = '炎之'
                  sdce = sdce + '+炎属性;'
                  when 6
                  sname = '雷之'
                  sdce = sdce + '+雷属性;'
                  when 7
                  sname = '圣之'
                  sdce = sdce + '+圣属性;'
                  when 8
                  sname = '暗之'
                  sdce = sdce + '+暗属性;'
                  when 9
                  sname = '无之'
                  sdce = sdce + '+无属性;'
                  end

                  end


                  if (r > 90) then
                  sname = ''
                  end
                  #随即计算名称
                  $data_weapons[t].name = sname + name
                  $data_weapons[t].description = sdce
                  iprice = (iprice/100 + 0.6).to_i * 100
                  $data_weapons[t].price = iprice


                  end
                  end
                  end



                  end
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-11-5
帖子
6
2
 楼主| 发表于 2005-12-2 02:16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
#1  类似于暗黑的武器库生成系统

类似于暗黑的武器库生成系统


                  玩过暗黑的知道,它的武器系统非常庞大,
                  而且是随机生成的,
                  这是一个类似的系统:


                  
                  1 首先建立基础库,
                  把武器ID号为100以下的数据健全,
                  注意:10,20..90,100;不要定义
                  只定义名称和攻击力就行
                  2 在Mian之前插入以下的原码
                  3 在新游戏的位置调用 SetWeapon 函数
                  4 注意在新游戏开始时,有可能进入失败,
                  曰文提示,我看不懂,
                  多进几次就没问题了
                  以后load进度就行
                  5 它可以自动生成101 ~ 999的全部武器
                  100以下的你要自己定义
                  6 对职业使用的武器列表,没有填加,
                  有时间再编制,
                  目前它是100个武器一循环
                  你需要对应前一百个武器,逐一点选。


                  如果你在商店里加入这些编号,就可以看到这些武器随机生成的名字


                  说明,单价等等


                  #------------------------------
                  #计算随机数
                  def Setrand1(lv = 10)
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  ivalue = (lv / 10).to_i


                  #lv = lv - (lv / 100).to_i * 100
                  maxvalue = lv - ivalue * 10 #武器变化的最大值 10

                  maxvalue1 = 0
                  for t in 1..maxvalue * 10
                  maxvalue1 = maxvalue1 + t
                  end

                  iret = rand(maxvalue1) + 1


                  itemp = 0
                  #数值越大,出现几率越小
                  maxvalue1 = 0
                  for t in 1..maxvalue * 10
                  maxvalue1 = maxvalue1 + t
                  if iret >= (maxvalue1 - t) and iret < maxvalue1 then
                  break
                  end

                  end


                  iret = (maxvalue * 10 - t).abs
                  if iret == 0
                  iret = 1
                  end


                  return iret.to_i
                  end#------------------------------



                  #------------------------------
                  #请输入注释
                  def SetWeapon


                  for gg in 1..9
                  for tt in 1..99
                  if (tt / 10).to_i * 10 == tt then
                  next
                  end

                  name = $data_weapons[tt].name
                  icon_name = $data_weapons[tt].icon_name
                  description = $data_weapons[tt].description
                  animation1_id = $data_weapons[tt].animation1_id
                  animation2_id = $data_weapons[tt].animation2_id
                  atk = $data_weapons[tt].atk
                  pdef = $data_weapons[tt].pdef
                  mdef = $data_weapons[tt].mdef
                  str_plus = $data_weapons[tt].str_plus
                  dex_plus = $data_weapons[tt].dex_plus
                  agi_plus = $data_weapons[tt].agi_plus
                  int_plus = $data_weapons[tt].int_plus

                  add = 100
                  sdce = ''
                  iprice = 0
                  sname = ""
                  while add >= 90
                  #是否继续增加属性
                  add = rand(100)
                  #print(add)
                  t = gg * 100 + tt

                  #随机按比例增加属性
                  r = rand(100)

                  # 按攻击力计算价格

                  iprice = iprice + ((atk / 10).to_i) * ((atk / 10).to_i) *
                  ((atk / 10).to_i)

                  #40%出现增减攻击力
                  if r <= 40 then
                  itemp = Setrand(tt)

                  iprice = iprice + itemp * 200
                  atk = atk + itemp
                  sdce = sdce + "攻击+" + itemp.to_s + ";"
                  $data_weapons[t].atk = atk
                  sname = '攻击之'
                  end

                  #10%出现增减物防
                  if r > 40 and r <= 50 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 300
                  pdef = pdef + itemp
                  sdce = sdce + "物防+" + itemp.to_s + ";"
                  $data_weapons[t].pdef = pdef
                  $data_weapons[t].atk = atk
                  sname = '物防之'
                  end


                  #10%出现增减魔防
                  if r > 50 and r <= 60 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 400
                  mdef = mdef + itemp
                  sdce = sdce + "魔防+" + itemp.to_s + ";"
                  $data_weapons[t].mdef = mdef
                  $data_weapons[t].atk = atk
                  sname = '魔防之'
                  end

                  #5%出现增减力量
                  if r > 60 and r <= 65 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  str_plus = str_plus + itemp
                  sdce = sdce + '力量+' + itemp.to_s + ';'
                  $data_weapons[t].str_plus = str_plus
                  $data_weapons[t].atk = atk
                  sname = '力量之'
                  end

                  #5%出现增减力量
                  if r > 65 and r <= 70 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  dex_plus = dex_plus + itemp
                  sdce = sdce + '灵巧+' + itemp.to_s + ';'
                  $data_weapons[t].dex_plus = dex_plus
                  $data_weapons[t].atk = atk
                  sname = '灵巧之'
                  end

                  #5%出现增减力量
                  if r > 70 and r <= 75 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  agi_plus = agi_plus + itemp
                  $data_weapons[t].agi_plus = agi_plus
                  sdce = sdce + '速度+' + itemp.to_s + ';'
                  $data_weapons[t].atk = atk
                  sname = '速度之'
                  end

                  #5%出现增减力量
                  if r > 75 and r <= 80 then
                  #变化的攻击力=武器级别 * 10 的随机数 +-各半
                  itemp = Setrand(tt)
                  iprice = iprice + itemp * 500
                  int_plus = int_plus + itemp
                  sdce = sdce + '魔力+' + itemp.to_s + ';'
                  $data_weapons[t].int_plus = int_plus
                  $data_weapons[t].atk = atk
                  sname = '魔力之'
                  end

                  #5%出现增减属性
                  if r > 80 and r <= 90 and $data_weapons[t].element_set.size <
                  9 then
                  r1 = rand(9) + 1
                  isize = $data_weapons[t].element_set.size
                  loop do
                  if isize > 0 then
                  for ttt in 1..isize
                  if $data_weapons[t].element_set[ttt] == r1 then
                  break
                  end

                  end
                  if ttt > isize then
                  break
                  end
                  else
                  break
                  end
                  r1 = rand(9) + 1
                  end
                  iprice = iprice + 10000
                  $data_weapons[t].element_set[isize + 1] = r1
                  $data_weapons[t].atk = atk
                  case r1
                  when 1
                  sname = '物理之'
                  sdce = sdce + '+物理属性;'
                  when 2
                  sname = '光之'
                  sdce = sdce + '+光属性;'
                  when 3
                  sname = '冰之'
                  sdce = sdce + '+冰属性;'
                  when 4
                  sname = '毒之'
                  sdce = sdce + '+毒属性;'
                  when 5
                  sname = '炎之'
                  sdce = sdce + '+炎属性;'
                  when 6
                  sname = '雷之'
                  sdce = sdce + '+雷属性;'
                  when 7
                  sname = '圣之'
                  sdce = sdce + '+圣属性;'
                  when 8
                  sname = '暗之'
                  sdce = sdce + '+暗属性;'
                  when 9
                  sname = '无之'
                  sdce = sdce + '+无属性;'
                  end

                  end


                  if (r > 90) then
                  sname = ''
                  end
                  #随即计算名称
                  $data_weapons[t].name = sname + name
                  $data_weapons[t].description = sdce
                  iprice = (iprice/100 + 0.6).to_i * 100
                  $data_weapons[t].price = iprice


                  end
                  end
                  end



                  end

Lv1.梦旅人

旋律無雙

梦石
0
星屑
50
在线时间
4 小时
注册时间
2005-11-14
帖子
958
3
发表于 2005-12-2 02:18:03 | 只看该作者
这么爽~!!看看先
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
260
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

4
发表于 2005-12-2 03:38:19 | 只看该作者
站里还有Sailcat写的一个随机武器生成系统~
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
2 小时
注册时间
2005-10-21
帖子
96
5
发表于 2005-12-2 03:45:54 | 只看该作者
这也是方法之一......
{/pz}
[FLY][B]Think Globally - Act locally[/B][/FLY]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

堕落天使

梦石
0
星屑
55
在线时间
73 小时
注册时间
2005-10-22
帖子
337
6
发表于 2005-12-2 03:51:38 | 只看该作者
......不喜欢那种武器系统....但是依然支持!
厌世了……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
260
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2005-12-2 03:55:25 | 只看该作者
还有那个增加伪装备栏的方法……{/pz}
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

旋律無雙

梦石
0
星屑
50
在线时间
4 小时
注册时间
2005-11-14
帖子
958
8
发表于 2005-12-2 23:06:13 | 只看该作者
以下引用亿万星辰于2005-12-1 19:38:19的发言:

站里还有Sailcat写的一个随机武器生成系统~

可以给个链接么,怎么偶找不到的说
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
260
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

9
发表于 2005-12-2 23:14:44 | 只看该作者
http://rpg.blue/viewthread.php?tid=154&ntime=2005%2D12%2D2+15%3A14%3A27
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

10
发表于 2005-12-4 05:08:56 | 只看该作者
是个方法……
SailCat那个最后好像没完善?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-20 09:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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