赞 | 13 |
VIP | 27 |
好人卡 | 24 |
积分 | 6 |
经验 | 58769 |
最后登录 | 2017-11-28 |
在线时间 | 795 小时 |
Lv2.观梦者 无节操
- 梦石
- 0
- 星屑
- 607
- 在线时间
- 795 小时
- 注册时间
- 2009-2-6
- 帖子
- 3939
|
本帖最后由 moy 于 2010-9-29 04:58 编辑
回复 伪娘小司 的帖子
1. wid = XXX # weapon_id
2. n = XXX # weapon_maxlevel
3. for i in wid..wid+n
4. if $game_party.weapons.include?( i )
5. $game_party.gain_weapon( i + 1 , 1 )
6. $game_party.gain_weapon( i , -1 )
7. break
8. end
9. end
脚本有的时候没有你想像的那么困难...事件也只是隐式的调用了对应的脚本而已{:nm_3:}
比如这段
头两句可以用变量操作代替,分别设定两个变量,一个名为wid一个名为n,存储的数字是武器的id和武器的最高强化等级.(只不过这里是局部变量,不是像我们正常事件里的全局变量,所以他只能在这个脚本框里用)
如果按照事件里的变量操作写成脚本那就是
$game_variables[编号] = 数值
例如我假定是1和2两个号变量分别在数据库里命名为wid和n,1和2两句就可以改成
$game_variables[1] = 32 #武器编号为32
$game_variables[2] = 7 #该武器最大强化等级为7级
这样看起来反而麻烦了点{:nm_6:} 这也是我为什么在上面的时候偷懒写wid = 和n =的原因.因为没有想在脚本框外定义,所以就这么写了.
其实这两句用事件操作也能做到,只是在里面调用的时候就比较麻烦了.当然,如果你坚持在脚本框外定义数值的话.
wid = $game_variables[1]
n = $game_variables[2]
这样写就好,这样在后面的算式中就可以用简短的wid和n代替了.
写到现在似乎给人的印象还是很麻烦{:nm_6:}
不过事件脚本的好处在于,可以方便的进行一些虽然不是很复杂,但是用事件直接操作很繁琐的计算式.(当然,在这个例子里没什么体现)
然后进行到了第三句
for i in wid..wid + n
:
end
这是一个完整的结构.称为循环语句.代表着符合条件的时候其内部的所有操作会重复执行.(PS:那个冒号当成竖着的省略号看,嗯嗯.
不过这个和事件执行里的循环不太一样,那个循环是
loop do
:
end
是无条件循环.而for语句,是满足 i 在 从wid 到wid + n大小的数值内部的时候进行,并且每进行一个环节,i 的值都会自行加1(其实是从第一个开始遍历数组内部的值就是...这是后话)
如果用事件来弄的话就是先定义一个变量用来存放初始值.这里是转换成事件的风格的过程,左边是脚本转变,右边是事件的相关提示.
i = wid # 假定 i 是3号变量的话,就可以设置 3号变量的值等于1号变量的值
loop do # 循环
:
:
i += 1 # 这个事件用多了其实蛮有感觉的吧{:nm_6:} 不管是VX还是XP,在变量加1上的表示,
# 都是差不多这样子的.
if i == wid + n # 这句就是条件分歧了,变量3等于变量1+变量2时.这个对于事件来说就相对麻烦点.
# 单纯的事件的话,最好的办法莫过于再多定义一个变量用来存放变量1+变量2.然后
# 再进行判断
break # break就是中断循环,这里的意思就是当 i 的值等于wid + n的时候就中断循环.
# 没有这句的话,loop do可是会不知疲倦的不停运作的说~
end # 补充一句,脚本里带end的都是成套出现的,不要漏掉哦~而且为了识别方便,一般
# 都会和对应的操作对齐.
end
这样子的话,在讲完123的时候,顺便把789的意义也讲掉了{:nm_4:}
不过咱还是要着重讲一下4-567-8 这块的说.
4. if $game_party.weapons.include?( i )
5. $game_party.gain_weapon( i + 1 , 1 )
6. $game_party.gain_weapon( i , -1 )
7. break
8. end
第四句if判断,其实就是判断物品是否存在的.条件分歧页的第四页有武器是否持有,这个想必你也知道了~,这里的判断是依据武器的id号来进行的.if语句其实是这样子的:
if XXX #这里是判断XXX这句话是不是真的,真的就进行紧接着的部分,也就是"是的场合"
:
else # 当if后面的判断不是真的的时候就进行这里,也就是条件分歧里的除此以外的场合,或者说"否的场合"
: # 这里也和事件一样,else的部分是可以省略的~
end
也就是说上面那段脚本意思就和原本的感觉一样,背包里有没有编号 i 的武器?有就执行接下来的几句话
5和6本质是一样的操作.就是事件页里的增减武器.这步就是真的是用事件处理会非常非常麻烦的部分了.
括号里是两个参数,分别对应的就是在事件处理里能看到的 武器id 和 增减的数量.
如果要用事件来做的话...就真的和前面那位仁兄一样,要一层一层不厌其烦的判断持有着什么装备了...
但是用脚本的话,就可以用变量来告诉电脑我们要的是比现在高一级的武器,并且把现在手上这把给扣除掉.
(为什么说是比"现在"呢~之前认真看的话应该知道为什么不是一个定值了~~{:nm_4:} )
然后成功执行完这些以后~~千万千万别忘记了break~~
另外这里之前其实还缺少一个判断,也就是判断武器是否满级,不过我想即使是用事件也不是什么太难的判断吧~
一个小tip:可以先扣除需要的东西,然后发现是满级的再退还也是可以的哦~
于是啰嗦酱油完毕~
附赠事件页一张
|
评分
-
查看全部评分
|