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

Project1

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

[已发主站] 【XP】26个字母多独立开关(制作过程and范例)

[复制链接]

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

跳转到指定楼层
1
发表于 2012-7-24 19:06:20 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 Sion 于 2013-12-16 23:14 编辑

范例下载地址:
多独立开关.rar (189.58 KB, 下载次数: 111)


我不想下载很高级的RM编辑器,所以,我想办法通过脚本修改内存来实现不可能实现的功能。
也就是说,我将实现多独立开关的这种功能。
于是就这样,用RMXP1.03实现了。

下面是预览图。


制作过程:
先在地图上创建26个事件,然后插入代码
HYS 代码复制
  1. map = load_data("Data/Map001.rxdata")
  2. letter = []
  3. letter = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
  4. for id in 1..26
  5.   map.events[id].pages[0].list[1].parameters[0] = letter[id-1]
  6.   map.events[id].pages[1].condition.self_switch_valid = false
  7.   map.events[id].pages[1].condition.self_switch_ch = "A"
  8.   zhushi = RPG::EventCommand.new(108,0,["出现条件:独立开关操作#{letter[id-1]}=ON"])
  9.   map.events[id].pages[1].list[0] = zhushi
  10. end
  11. save_data(map,"Data/Map001.rxdata")
  12. exit

如果没有任何出错提示然后退出,那就成功了。
成功之后,删掉脚本然后退出工程。

打开工程之后,发现事件里面的“独立开关操作E=ON”,终于实现了。

本来我还想改事件的出现条件的,但是修改之后,发现只能显示ABCD,超过E的部分全部显示A,
虽然显示A,实际上是E,但是一旦修改并保存事件,那个E就失效了(变回A了)


于是来了一个补救方法。(代码在Main前面直接插入)

搞一个注释:出现条件:独立开关操作E
在事件页的最前面即可。

下面的代码是用于判断事件页的第一个是不是执行注释,然后判断满足哪个条件。
  1. class Game_Event
  2.   def refresh
  3.     # 初始化本地变量 new_page
  4.     new_page = nil
  5.     # 无法暂时消失的情况下
  6.     unless @erased
  7.       # 从编号大的事件页按顺序调查
  8.       for page in @event.pages.reverse
  9.         # 可以参考事件条件 c
  10.         c = page.condition
  11.         # 确认开关条件 1
  12.         if c.switch1_valid
  13.           if $game_switches[c.switch1_id] == false
  14.             next
  15.           end
  16.         end
  17.         # 确认开关条件 2
  18.         if c.switch2_valid
  19.           if $game_switches[c.switch2_id] == false
  20.             next
  21.           end
  22.         end
  23.         # 确认变量条件
  24.         if c.variable_valid
  25.           if $game_variables[c.variable_id] < c.variable_value
  26.             next
  27.           end
  28.         end
  29.         # 确认独立开关条件
  30.         # (这里做了一些修改)
  31.         if page.list[0].code == 108
  32.           key = [@map_id, @event.id,page.list[0].parameters[0].split('出现条件:独立开关操作')[1].to_s]
  33.           if $game_self_switches[key] != true
  34.             next
  35.           end
  36.         elsif c.self_switch_valid
  37.           key = [@map_id, @event.id, c.self_switch_ch]
  38.           if $game_self_switches[key] != true
  39.             next
  40.           end
  41.         end
  42.         # (这里做了一些修改)
  43.         # 设置本地变量 new_page
  44.         new_page = page
  45.         # 跳出循环
  46.         break
  47.       end
  48.     end
  49.     # 与上次同一事件页的情况下
  50.     if new_page == @page
  51.       # 过程结束
  52.       return
  53.     end
  54.     # @page 设置为现在的事件页
  55.     @page = new_page
  56.     # 清除启动中标志
  57.     clear_starting
  58.     # 没有满足条件的页面的时候
  59.     if @page == nil
  60.       # 设置各实例变量
  61.       @tile_id = 0
  62.       @character_name = ""
  63.       @character_hue = 0
  64.       @move_type = 0
  65.       @through = true
  66.       @trigger = nil
  67.       @list = nil
  68.       @interpreter = nil
  69.       # 过程结束
  70.       return
  71.     end
  72.     # 设置各实例变量
  73.     @tile_id = @page.graphic.tile_id
  74.     @character_name = @page.graphic.character_name
  75.     @character_hue = @page.graphic.character_hue
  76.     if @original_direction != @page.graphic.direction
  77.       @direction = @page.graphic.direction
  78.       @original_direction = @direction
  79.       @prelock_direction = 0
  80.     end
  81.     if @original_pattern != @page.graphic.pattern
  82.       @pattern = @page.graphic.pattern
  83.       @original_pattern = @pattern
  84.     end
  85.     [url=home.php?mod=space&uid=316553]@opacity[/url] = @page.graphic.opacity
  86.     @blend_type = @page.graphic.blend_type
  87.     @move_type = @page.move_type
  88.     @move_speed = @page.move_speed
  89.     @move_frequency = @page.move_frequency
  90.     @move_route = @page.move_route
  91.     @move_route_index = 0
  92.     @move_route_forcing = false
  93.     @walk_anime = @page.walk_anime
  94.     @step_anime = @page.step_anime
  95.     @direction_fix = @page.direction_fix
  96.     @through = @page.through
  97.     @always_on_top = @page.always_on_top
  98.     @trigger = @page.trigger
  99.     @list = @page.list
  100.     @interpreter = nil
  101.     # 目标是 [并行处理] 的情况下
  102.     if @trigger == 4
  103.       # 生成并行处理用解释器
  104.       @interpreter = Interpreter.new
  105.     end
  106.     # 自动事件启动判定
  107.     check_event_trigger_auto
  108.   end
  109. end
复制代码
就这样,多独立开关操作就做成了。
哪些人需要的就拿去好了。
如果使用后,发现有问题或BUG,请及时报告本人,方便第一时间及时解决。



常见问题和解决方法


问题:加了代码之后,原先RMXP自带的出现条件(独立开关部分)还有效吗?
回答:有效。但是脚本会优先判断注释的内容。


问题:为什么加了代码,加了注释,还不见效果?
回答:必须要放在事件页的第一行。


问题:为什么事件页没有出现?
回答:检查事件页第一行是不是不符合要求的注释。

评分

参与人数 6星屑 +800 +6 收起 理由
Shy07 + 6 主站收录
hcm + 176 精品文章
sai90306 + 24 精品文章
lsu666666 + 500 精品文章
笵妮拉·亚修 + 80 精品文章
ML4455739 + 20 塞糖

查看全部评分

Lv3.寻梦者

梦石
0
星屑
2151
在线时间
812 小时
注册时间
2009-2-4
帖子
579

开拓者

4
发表于 2012-7-24 21:28:50 | 只看该作者
神物啊~!暂且收下了!
怀念...以前的烂作.......

QQ:853636550
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
266
在线时间
495 小时
注册时间
2012-7-6
帖子
888
3
发表于 2012-7-24 20:51:31 | 只看该作者
虽然勉强看懂了
可是要这么多步骤才能实现,感觉4个独立就够多了
一般才有1~2个独立而已

点评

看看哪些人需要就合适了。其实有些时候还是必要的  发表于 2012-7-24 20:53
有偿招募绘师RM脚本师,有意者请短联系我噢=V=
我的扣扣:2559286292
回复 支持 反对

使用道具 举报

Lv1.梦旅人

54酱是大笨蛋!

梦石
0
星屑
66
在线时间
1389 小时
注册时间
2011-2-23
帖子
5014
2
发表于 2012-7-24 19:55:32 | 只看该作者
脚本盲真心看不懂...

点评

那就直下载附件,打开工程,就会看到奇葩的东西。  发表于 2012-7-24 19:58
去你爹的现充.去你爹的异性恋.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-10 22:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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