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

Project1

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

[原创发布] 地图菜单窗口插件3:与公共事件交互【送:猜数字】

[复制链接]

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

跳转到指定楼层
1
发表于 2017-3-19 22:46:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 guoxiaomi 于 2017-3-20 09:34 编辑

与公共事件交互

菜单内部是死循环,所以所有的操作都需要预先定义好才行,但是按键的处理目前只开放了确认、取消和方向键,如果要玩家输入一个整数,就很尴尬了。

一个合适的方法是,需要玩家输入整数的时候,使用公共事件里的输入数字的指令,得到需要的数字指令后,再回到这个菜单里。

下面拿已经被轮子了无数遍的《猜数字》小游戏来举例子。

小游戏的规则:随机生成 4 个0-9之间不同的数字,然后玩家有多次机会去猜数字。如果位置和数字都对了,就会得到A,位置不对但数字对了,就会得到B。

比如答案是 1234 ,猜的是 1356,就会返回 1A1B。当返回 4A0B的时候,开启奖励选项,否则玩家只能选择退出重来。

那么先说实现的逻辑吧~

按照模板来:
1. 首先在 init 的时候要生成一个答案字符串 string, 还要有胜利标志: judge 和历史记录,这里用数组 history。
2. 主菜单是猜数字,子菜单有三个,“开始”、“退出”、“领奖”,点进去后分别触发打开开关123,并退出菜单。设置 3 个公共事件自动执行,开关分别是 123。
3. 公共事件 2,3比较简单,就是退出和领奖。公共事件 1 里让玩家输入一个数字,并且分析这个数字和答案是不是一样的~如下图:


注意到要限制一下猜的次数,脚本这么写就行了(6R的bug,这里是主要的部分)
RUBY 代码复制
  1. class Interpreter
  2.   # 用于在事件脚本中调用的初始化方法
  3.   def init_plugin_CaiShuZi
  4.     # 生成答案字符串的蠢方法
  5.     a0 = rand(10).to_s
  6.     a1 = rand(10).to_s
  7.     until a1 != a0
  8.       a1 = rand(10).to_s
  9.     end
  10.     a2 = rand(10).to_s
  11.     until a2 != a1 && a2 != a0
  12.       a2 = rand(10).to_s
  13.     end
  14.     a3 = rand(10).to_s
  15.     until a3 != a2 && a3 != a1 && a3 != a0
  16.       a3 = rand(10).to_s
  17.     end
  18.     # 答案字符串
  19.     $_CaiShuZi_string = a0 + a1 + a2 + a3
  20.     # 猜对
  21.     $_CaiShuZi_judge = false
  22.     # 历史记录
  23.     $_CaiShuZi_history = []
  24.   end
  25.  
  26. class Game_Party
  27.   # 插件 Task 设置
  28.   alias _CaiShuZi_set_mapwindow_task set_mapwindow_task
  29.         def set_mapwindow_task
  30.     # 保留之前的 task 设置
  31.     _CaiShuZi_set_mapwindow_task
  32.     # 新的内容只有插件开启的时候会添加
  33.     if $plugin_CaiShuZi_enable
  34.       # 具体的 Task 设置
  35.       if $_CaiShuZi_history.size < 8
  36.         name = "猜数字:开始@Quitmenu-Switchon[1]"
  37.         text = "回合数:  #{$_CaiShuZi_history.size}\n"
  38.         $_CaiShuZi_history.each do |t|
  39.           text = text + t + "\n"
  40.         end        
  41.       else
  42.         name = "猜数字:开始@Quitmenu"
  43.         text = "回合数已达 8 次,无法继续猜!"
  44.       end
  45.       @tasks_info.push Game_Task.new(name,text)
  46.       name = "猜数字:退出@Quitmenu-Switchon[2]"      
  47.       text = "直接退出游戏,不获取任何奖励"
  48.       @tasks_info.push Game_Task.new(name,text)
  49.       if $_CaiShuZi_judge
  50.         name = "猜数字:领奖@Quitmenu-Switchon[3]"
  51.         text = "回合数:  #{$_CaiShuZi_history.size}\n奖励是:回复剂 x#{10-$_CaiShuZi_history.size}"
  52.         @tasks_info.push Game_Task.new(name,text)
  53.       end
  54.     end
  55.   end
  56.  
  57. end


附上范例工程:
地图窗口纯净版 猜数字.zip (362.95 KB, 下载次数: 75)

其实原来的任务系统脚本还有些要修改的地方,等以后再更新吧~


多说一点,这个地图菜单脚本为了力求简洁,里面只有Window,其他什么都没有,如果想显示菜单的背景图片,可以在事件里用显示图片,退出菜单后再释放。
接下来可能要做的是,在修改某些设置的情况下,让子菜单内容和主菜单的选项同步更新。以前也试过,但是比想象中的要麻烦一些……

评分

参与人数 1星屑 +66 收起 理由
鑫晴 + 66

查看全部评分

Lv1.梦旅人

梦石
0
星屑
110
在线时间
17 小时
注册时间
2017-3-30
帖子
13
2
发表于 2017-4-8 09:32:39 | 只看该作者
下载来学习学习{:2_284:}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 17:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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