楼主: moy

[RMVA发布] CustomAdventure事件功能强化[6.23更新]

[复制链接]

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

 楼主| 发表于 2014-6-19 12:11:55 | 显示全部楼层
taroxd 发表于 2014-6-19 07:09
关于“踩踏/置物判断"
判断是否被主角踩踏/判断是否被事件踩踏的方法,为什么要传入参数x, y?如果要传入, ...

放在event只是为了配合默认脚本的使用方式,因为与Game_Character那一系的作用一脉相承所以就没有移植到Interpreter。事实上这种方法需要传入xy在Character中就有所体现@collide,并且我也就是模仿collide的逻辑稍微改写的。同时这样做也能为其他改造创造条件,比如在行走中踩踏陷阱自动触发的事件等(只是个设想,我完全没有实际试就是。
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2310
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-19 12:38:48 | 显示全部楼层
本帖最后由 taroxd 于 2014-6-19 12:47 编辑
moy 发表于 2014-6-19 12:11
放在event只是为了配合默认脚本的使用方式,因为与Game_Character那一系的作用一脉相承所以就没有移植到I ...


嗯,那倒是可以。不过就你这段脚本我没看出来进一步应用呢~
毕竟stepped_on是不需要考虑“往前走一步是否相撞”的
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

 楼主| 发表于 2014-6-19 12:47:28 | 显示全部楼层
taroxd 发表于 2014-6-19 12:38
嗯,那倒是可以。不过就你这段脚本我没看出来进一步应用呢~
毕竟stepped_on是不需要考虑“往前走一步是否 ...

因为我只是觉得可以那么发展,而并没有去做啊233
本来这套脚本的预期受众就并非脚本/系统制作者,而是不满足于事件功能的普通制作者。不过看这不冷不热的情况,老实说有点小伤感233

点评

6R人少了嘛  发表于 2014-6-19 12:49
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

 楼主| 发表于 2014-6-23 01:56:11 | 显示全部楼层
脑洞一开更新了“自定义控制符变换”
隐约记得@taroxd 的基础脚本好像有类似的?就是前段时间巴拉巴拉的正则,不过我这个比较简单和直白啦。
就是上下文有点伤感233
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2310
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-23 05:29:39 | 显示全部楼层
本帖最后由 taroxd 于 2014-6-23 09:09 编辑
moy 发表于 2014-6-23 01:56
脑洞一开更新了“自定义控制符变换”
隐约记得@taroxd 的基础脚本好像有类似的?就是前段时间巴拉巴拉的正 ...


我的实现
https://rpg.blue/thread-365976-1-1.html
[pre lang="ruby" line="1"]module Taroxd::Script
  #--------------------------------------------------------------------------
  # ● 脚本中的简称列表
  #--------------------------------------------------------------------------
  ABBR_LIST = {
    'V' => '$game_variables',
    'S' => '$game_switches',
    'N' => '$game_actors',
    'A' => '$game_actors',
    'P' => '$game_party',
    'G' => '$game_party.gold',
    'E' => '$game_troop'
  }
  #--------------------------------------------------------------------------
  # ● 处理脚本用的正则表达式
  #--------------------------------------------------------------------------
  ABBR_RE = /\b(?:#{ABBR_LIST.keys.join('|')})\b/
  module_function
  #------------------------------------------------------------------------
  # ● 对脚本的处理
  #------------------------------------------------------------------------
  def process(script); script.gsub(ABBR_RE, ABBR_LIST); end
end
=begin
另一功能
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 脚本
  #--------------------------------------------------------------------------
  def command_355
    script = @list[@index].parameters[0] + "\n"
    while next_event_code == 655
      @index += 1
      script << @list[@index].parameters[0] << "\n"
    end
    binding.eval Taroxd::Script.process(script)
  end
end
=end
class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 对 #{} 的处理
  #--------------------------------------------------------------------------
  def_with :convert_escape_characters do |old, _|
    old.gsub(/\e?#(?<bracket>\{([^{}]|\g<bracket>)*\})/) do |code|
      next code if code.slice!(0) == "\e"
      TOPLEVEL_BINDING.eval Taroxd::Script.process(code[1..-2])
    end
  end
end
[/pre]


我这个很不简单直白吗?
再者,使用脚本的人才不管你正则表达式怎么写的呢……
#{} 再加脚本中替换简称,我自认为自由度和方便程度都高多了~
毕竟是技术讨论区扯了这么久的成果呢~

(那个def_with你懂的~)

@moy 小建议

USE_CUSTOM_CONVERT 应该用方法而不是常量。这样便于子类重写

alias给我用好啊,你复制一遍默认部分干嘛……我下面的这段代码其实就是 def_with 的含义啦
[pre lang="ruby" line="1"]class Window_Base < Window
  alias ca_convert_escape_characters convert_escape_characters
  def convert_escape_characters(text)
    result = ca_convert_escape_characters(text)
    return result unless USE_CUSTOM_CONVERT
    # 自定义的实现
    result
  end
end[/pre]
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

 楼主| 发表于 2014-6-23 08:33:23 | 显示全部楼层
taroxd 发表于 2014-6-23 05:29
[fold=我的实现]
https://rpg.blue/thread-365976-1-1.html
module Taroxd::Script

你没明白我说的简单直白指的是对谁而言
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2310
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-23 08:36:24 | 显示全部楼层
moy 发表于 2014-6-23 08:33
你没明白我说的简单直白指的是对谁而言

我觉得除了那个触爆的正则表达式,其余部分都很简单直白啊?
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

 楼主| 发表于 2014-6-23 08:45:26 | 显示全部楼层
taroxd 发表于 2014-6-23 08:36
我觉得除了那个触爆的正则表达式,其余部分都很简单直白啊?

阻碍初学者理解你的意图的就是那个触爆的正则233
目的是让更多人可以自己动手使用,所以首要的就是好懂。自己用当然怎样触都可以啦(虽然你的我是看不大懂)

点评

moy
总之我看不懂!(喂  发表于 2014-6-23 08:54
我觉得我那段脚本除了下面那个正则表达式,完全没有难点啊……  发表于 2014-6-23 08:51
啊咧,我一直都在说我那些脚本是自用的啊~ 发布给别人用的应该向余烬之中或者喵呜喵的那样,各种完善  发表于 2014-6-23 08:50
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2310
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-6-23 09:27:47 | 显示全部楼层
本帖最后由 taroxd 于 2014-6-23 09:40 编辑
moy 发表于 2014-6-23 08:45
阻碍初学者理解你的意图的就是那个触爆的正则233
目的是让更多人可以自己动手使用,所以首要的 ...


给你欣赏个不简单不直白,写完自己都看不懂的代码(喂这不值得骄傲吧

https://rpg.blue/thread-365971-1-1.html

这种东西,我倒是想有简单直白的方法……
回复

使用道具 举报

梦石
1
星屑
7574
在线时间
2650 小时
注册时间
2013-8-23
回帖
2152

开拓者

发表于 2014-6-25 01:41:26 | 显示全部楼层
(/ω\)说实话,虽然知道写的很直白,但我还是看不懂。

不明白为什么这么写,这么写的目的是什么?

或者说,如果让我写,我一定什么都写不出来!(ノ=Д=)ノ┻━┻

点评

如果不能理解,说明你还不懂ruby的语法,或者说,概念  发表于 2014-6-25 09:23
尝试顺着脚本实际运行的过程,解读rgss3代码。运行过程可以理解为从main开始  发表于 2014-6-25 09:21
moy
如果在默认脚本中有什么想改但无从下手的,也可以回帖提问,在我能力范围内的话,会纳入解答的安排中。  发表于 2014-6-25 02:50
moy
http://rm.66rpg.com/thread-367122-1-1.html ←我在这里有发布关于这些脚本的解释,尽管在解释中可能存在一些谬误,但应该能帮助理解。  发表于 2014-6-25 02:49
不会写脚本,没有实战经验,只知道一些基础语法,所以没看懂懂。(每一行都能理解,但全部放在一起就不懂了)  发表于 2014-6-25 01:56
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部