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

Project1

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

[已经解决] 在事件中调用脚本方法(函数?)的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2013-2-2
帖子
75
跳转到指定楼层
1
发表于 2014-11-3 11:44:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
最近用RPGVX尝试了一下做塔防游戏,需要用到大量的变量判断

事件里的脚本只能写几行 不够用,然后我想起可以在脚本库里编一个方法(额,RPG里似乎叫函数?)然后在事件中调用,所以想问一下怎么在事件中调用函数


然后函数的内容大概是这样

需要接收四个数字a,b,c,d参数

if(a=b and c=d)
   开关1打开
elsif(a+1=b and c+1=d)
   开关1打开
elsif(a-1=b and c-1=d)
   开关1打开
else
   开关1关闭


求大神们告知这种多条件判断的方法具体要怎么写,然后写在哪里,在事件中如何调用非常感谢

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4624
在线时间
5237 小时
注册时间
2009-4-29
帖子
14318

贵宾

2
发表于 2014-11-3 11:53:55 | 只看该作者
1、打开脚本编辑器,新建一个空白页
2、输入以下内容
  1. def abc(a,b,c,d)
  2.   if a==b and c==d
  3.      $game_switches[1] = true
  4.   elsif a+1==b and c+1==d
  5.      $game_switches[1] = true
  6.   elsif a-1==b and c-1==d
  7.      $game_switches[1] = true
  8.   else
  9.      $game_switches[1] = false
  10.   end
  11. end
复制代码
$game_switches[1]表示开关1
3、新建事件脚本,输入
  1. abc(1,2,3,$game_variables[1])
复制代码
其中括号里是4个参数,自己设计,吾只是举例,4个参数用半角逗号隔开$game_variables[1]表示变量1

点评

不谢到class Game_Interpreter里封装一下吗?  发表于 2014-11-3 12:01

评分

参与人数 1星屑 +10 收起 理由
VIPArcher + 10 果然我撞车是被动技能吗(不对(哭泣。.

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10073
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-11-3 12:00:02 | 只看该作者
虽然没用过VX但是应该都一样的,你把这些需要执行的东西写到事件指令的解释器里。
举个例子(VA)
  1. class Game_Interpreter
  2.   def vip_control_sw(a,b,c,d)
  3.     if a==b and c==d
  4.       $game_switches[1] = true
  5.     elsif a+1 == b and c+1 == d
  6.       $game_switches[1] = true
  7.     elsif a-1 == b and c-1 = d
  8.       $game_switches[1] = true
  9.     else
  10.       $game_switches[1] = false
  11.     end
  12.   end
  13. end
复制代码
然后事件脚本调用vip_control_sw(a,b,c,d)就好了
未测试

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2014-11-3 13:09:24 | 只看该作者
第一次来VX区……求脸熟
RUBY 代码复制
  1. def func_rb(a, b, c, d)
  2.   $game_swtiches[1] = a + d == b + c && (a - b).abs / 2 == 0
  3. end

点评

吾对R叔早已脸熟  发表于 2014-11-3 16:27

评分

参与人数 2星屑 +220 收起 理由
丿梁丶小柒 + 100 认可答案
VIPArcher + 120 简洁明了(我根本没看过条件是啥).

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4624
在线时间
5237 小时
注册时间
2009-4-29
帖子
14318

贵宾

5
发表于 2014-11-3 16:25:03 | 只看该作者
VIPArcher 发表于 2014-11-3 12:00
虽然没用过VX但是应该都一样的,你把这些需要执行的东西写到事件指令的解释器里。
举个例子(VA)然后事件 ...


封装在class Game_Interpreter类可以使脚本层次更加清晰,如果不封装,亦没有关系喵~
不封装的方法【几乎】相当于是在【Kernel核心模块】下定义的方法,【几乎】是全局方法,【几乎】任何地方都可以调用喵~
以上结论吾没有查证过,但是下面验证一下【几乎】喵~
下面吾设计了一个有趣的实验
先输入以下脚本并运行,结果先显示1,再显示2
  1. module Kernel
  2.   def abc
  3.     p 1
  4.   end  
  5. end
  6. alias new_abc abc
  7. def abc
  8.   new_abc
  9.   p 2
  10. end  
  11. abc
复制代码
但是要是反过来,却只显示1,不显示2
  1. def abc
  2.   p 1
  3. end
  4. module Kernel
  5.   alias new_abc abc
  6.   def abc
  7.     new_abc
  8.     p 2
  9.   end
  10. end
  11. abc
复制代码
于是得出结论:【不封装】是被【Kernel模块】封装的喵~
下面验证结论:【不封装】和【Kernel模块】几乎是等效的

  1. module Kernel
  2.   def abc
  3.     p self
  4.   end  
  5. end
  6. abc
  7. p self
  8. # 结果是输出2次main
复制代码
因此得出结论:不封装和归为Kernel模块几乎是等效的喵
以上结论都是通过实验得出,如有错误还请指正喵~~~

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2013-7-24
帖子
67
6
发表于 2015-2-20 20:17:55 | 只看该作者
我用的 RPG Maker XP, 这样做好像不行?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2013-7-24
帖子
67
7
发表于 2015-2-20 20:41:54 | 只看该作者
怪蜀黍 发表于 2014-11-3 11:53
1、打开脚本编辑器,新建一个空白页
2、输入以下内容$game_switches[1]表示开关1
3、新建事件脚本,输入其 ...

我用的 RPG Maker XP, 这样做好像不行?

详情:

https://rpg.blue/forum.php?mod=viewthread&tid=376771
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 19:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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