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

Project1

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

[已经解决] 关于事件强化特殊物品

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
22 小时
注册时间
2010-6-16
帖子
85
跳转到指定楼层
1
发表于 2010-9-28 22:29:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-6-20
帖子
39
2
发表于 2010-9-28 22:48:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
22 小时
注册时间
2010-6-16
帖子
85
3
 楼主| 发表于 2010-9-28 23:06:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

4
发表于 2010-9-28 23:30:13 | 只看该作者
  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  
复制代码
未测试仅作事件脚本的提示作用
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2010-6-15
帖子
121
5
发表于 2010-9-28 23:40:22 | 只看该作者
我觉得这样可以,也比较好看。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
6
发表于 2010-9-28 23:47:21 | 只看该作者
我想我估计会为想写装备强化的作者单独写一个装备独立系统了。

点评

加油!我想用啊!  发表于 2010-9-28 23:49
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
10 小时
注册时间
2010-6-20
帖子
39
7
发表于 2010-9-28 23:53:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
22 小时
注册时间
2010-6-16
帖子
85
8
 楼主| 发表于 2010-9-28 23:56:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

9
发表于 2010-9-29 04:07:27 | 只看该作者
本帖最后由 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:可以先扣除需要的东西,然后发现是满级的再退还也是可以的哦~

于是啰嗦酱油完毕~

附赠事件页一张

点评

moy
"weapons.include?"是我疏忽了...无法从外部调用.用 "has_item?" 代替就好. 相应的"gain_weapon"换成"gain_item" 大概就没问题了.手头无VX,依旧无质保...  发表于 2010-9-29 18:39
放在vx中不行,觉得是$game_party.weapons.include?( i )的问题,在商店买武器,获得的命令也是$game_party.gain_item(@item, @number_window.number)。  发表于 2010-9-29 12:59
这个…… 感觉学脚本和学英语差不多 然后我英语从来没及格过 ORZ 话说 你讲解得真详细 可是我还要花时间理解…… 感觉事件便于理解   发表于 2010-9-29 12:22
moy
勘误:请将脚本中的gain_weapon换成gain_item (这是由于XP和VX的脚本差异导致的错误= =  发表于 2010-9-29 05:25

评分

参与人数 1星屑 +20 收起 理由
红灯 + 20 可以成为一个脚本小教学了。

查看全部评分

Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2010-6-15
帖子
121
10
发表于 2010-9-29 19:14:47 | 只看该作者
本帖最后由 tomorrownewc 于 2010-9-29 19:20 编辑

回复 moy 的帖子


    啊,手误了,点击了回复。
脚本没出错了,估计是武器id的问题,它应该不是武器页的序号。
还有,我在买武器时印刷了$game_party.gain_item(@item, @number_window.number)中的@item
#<RPG::Weapon:0x2babb70>
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-11 15:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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