查看: 2615|回复: 6

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

[复制链接]
梦石
0
星屑
50
在线时间
39 小时
注册时间
2013-2-2
回帖
49
发表于 2014-11-3 11:44:47 | 显示全部楼层 |阅读模式

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

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

×
最近用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关闭


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

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 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
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 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 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-11-3 13:09:24 | 显示全部楼层
第一次来VX区……求脸熟
[pre lang="Ruby"]def func_rb(a, b, c, d)
  $game_swtiches[1] = a + d == b + c && (a - b).abs / 2 == 0
end[/pre]

点评

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

评分

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

查看全部评分

回复

使用道具 举报

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 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
回复

使用道具 举报

梦石
0
星屑
50
在线时间
9 小时
注册时间
2013-7-24
回帖
59
发表于 2015-2-20 20:17:55 | 显示全部楼层
我用的 RPG Maker XP, 这样做好像不行?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
9 小时
注册时间
2013-7-24
回帖
59
发表于 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
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部