赞 | 0 |
VIP | 0 |
好人卡 | 3 |
积分 | 1 |
经验 | 22133 |
最后登录 | 2021-6-21 |
在线时间 | 297 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 105
- 在线时间
- 297 小时
- 注册时间
- 2009-1-7
- 帖子
- 216
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 timiesea 于 2013-12-31 21:46 编辑
我今天晚上花了一些时间利用脚本实现了一个功能,但是不知道这个脚本是否简便,运行是否高效,特意贴出来供大家看看。如果有更好的建议或者意见欢迎提出。
功能:这个脚本实现了在战斗开始前根据参战角色的属性在一定范围内随机设置某一些怪物的属性。
#随机设置森林小精灵的数值:名称+ID:数值范围(根据参战角色的属性和) #森林小精灵(彩)43:0.5-1.5 #森林小精灵(红)44:0.6-1.4 #森林小精灵(绿)45:0.7-1.3 #森林小精灵(蓝)46:0.8-1.2 def Random_Fairy total = Array[0,0,0,0,0,0,0,0];#新建一个数组用来存储属性 battleActors = $game_party.battle_members;#获取所有参战的成员 len = battleActors.length;#获取参战人员数目 for i in [0,1,2,3]#设置一个循环变量i,从0开始循环一直到3,总共4次。 if battleActors[i] != nil then#如果第i位有队友则取其属性 for j in [0,1,2,3,4,5,6,7]#依次获取全体参战成员的各个属性和 total[j]+=battleActors[i].param_base(j)+battleActors[i].param_plus(j); end else break; end end #除了体力上限和魔力上限以外,其余属性取平均值 for i in [2,3,4,5,6,7] total[i] = total[i] / len; end for i in [43,44,45,46]#进行循环设置4种怪物的随机属性 case i when 43#当开始处理43号怪物时 for j in [0,1,2,3,4,5,6,7] ab = rand(101).to_f / 100; abc = ab + 0.5; $data_enemies[i].params[j] = (abc * total[j]).to_i; end when 44#当开始处理44号怪物时 for j in [0,1,2,3,4,5,6,7] ab = rand(81).to_f / 100; abc = ab + 0.6; $data_enemies[i].params[j] = (abc * total[j]).to_i; end when 45#当开始处理45号怪物时 for j in [0,1,2,3,4,5,6,7] ab = rand(61).to_f / 100; abc = ab + 0.7; $data_enemies[i].params[j] = (abc * total[j]).to_i; end when 46#当开始处理46号怪物时 for j in [0,1,2,3,4,5,6,7] ab = rand(41).to_f / 100; abc = ab + 0.8; $data_enemies[i].params[j] = (abc * total[j]).to_i; end end end #测试输出 p $data_enemies[43].params; p $data_enemies[44].params; p $data_enemies[45].params; p $data_enemies[46].params; end
#随机设置森林小精灵的数值:名称+ID:数值范围(根据参战角色的属性和)
#森林小精灵(彩)43:0.5-1.5
#森林小精灵(红)44:0.6-1.4
#森林小精灵(绿)45:0.7-1.3
#森林小精灵(蓝)46:0.8-1.2
def Random_Fairy
total = Array[0,0,0,0,0,0,0,0];#新建一个数组用来存储属性
battleActors = $game_party.battle_members;#获取所有参战的成员
len = battleActors.length;#获取参战人员数目
for i in [0,1,2,3]#设置一个循环变量i,从0开始循环一直到3,总共4次。
if battleActors[i] != nil then#如果第i位有队友则取其属性
for j in [0,1,2,3,4,5,6,7]#依次获取全体参战成员的各个属性和
total[j]+=battleActors[i].param_base(j)+battleActors[i].param_plus(j);
end
else
break;
end
end
#除了体力上限和魔力上限以外,其余属性取平均值
for i in [2,3,4,5,6,7]
total[i] = total[i] / len;
end
for i in [43,44,45,46]#进行循环设置4种怪物的随机属性
case i
when 43#当开始处理43号怪物时
for j in [0,1,2,3,4,5,6,7]
ab = rand(101).to_f / 100;
abc = ab + 0.5;
$data_enemies[i].params[j] = (abc * total[j]).to_i;
end
when 44#当开始处理44号怪物时
for j in [0,1,2,3,4,5,6,7]
ab = rand(81).to_f / 100;
abc = ab + 0.6;
$data_enemies[i].params[j] = (abc * total[j]).to_i;
end
when 45#当开始处理45号怪物时
for j in [0,1,2,3,4,5,6,7]
ab = rand(61).to_f / 100;
abc = ab + 0.7;
$data_enemies[i].params[j] = (abc * total[j]).to_i;
end
when 46#当开始处理46号怪物时
for j in [0,1,2,3,4,5,6,7]
ab = rand(41).to_f / 100;
abc = ab + 0.8;
$data_enemies[i].params[j] = (abc * total[j]).to_i;
end
end
end
#测试输出
p $data_enemies[43].params;
p $data_enemies[44].params;
p $data_enemies[45].params;
p $data_enemies[46].params;
end
希望大家给出建议或意见
唉!目前还不知道控制语句的具体写法,只会for的这一种。我看了帮助文档,也只看懂了这一种。 |
|