赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 3190 |
最后登录 | 2008-3-30 |
在线时间 | 0 小时 |
Lv1.梦旅人 (禁止发言)
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 0 小时
- 注册时间
- 2005-11-5
- 帖子
- 6
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
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 |
|