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

Project1

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

伪·内嵌表达式

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
400 小时
注册时间
2005-10-24
帖子
634
跳转到指定楼层
1
发表于 2007-1-6 19:30:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
内嵌表达式本是很好用的东东,可惜在数据库中的物品名称、描述、事件的对话等等都无法使用,使用下面这个方法就可以把字符串中的内嵌表达式还原
  1. .gsub(/\#\{(.*?)\}/){eval($1)}
复制代码
下面这段用来测试其有效性
  1. $num1 = 874
  2. $num2 = 253
  3. text = 'num are #{$num1} and #{$num2}'
  4. p text
  5. text = text.gsub(/\#\{(.*?)\}/){eval($1)}
  6. p text
复制代码
具体的应用方法有很多,其中之一是把它加入各个Window类有draw_text的地方。如果认为这种方法比较麻烦的话,把下面这段东西插入Main之上,就可以把内嵌表达式扩展到“几乎”所有需要描绘文字的地方了。为什么说几乎?因为有些脚本是逐字描绘的,所以这些脚本还是要在其中插入把字符串中的内嵌表达式还原的语句。
  1. #==============================================================================
  2. # 伪·内嵌表达式 v1.0
  3. # By 叶子
  4. #==============================================================================
  5. # 1-5-2007 v1.0
  6. #==============================================================================
  7. # 使用方法:插入到Main之上,这样就可以在数据库、事件等等中使用内嵌表达式了
  8. # 内嵌表达式说明请打开帮助,搜索“内嵌表达式”
  9. #==============================================================================

  10. class Bitmap
  11.   alias fake_exp_draw_text draw_text
  12.   def draw_text(x = 0, y = 0, width = 0, height = 0, str = "", align = 0)
  13.     if y.is_a?(String)
  14.       str = y
  15.       rect = x
  16.       x = rect.x
  17.       y = rect.y
  18.       align = width
  19.       width = rect.width
  20.       height = rect.height
  21.     end
  22.     fake_exp_draw_text(x, y, width, height, str.gsub(/\#\{(.*?)\}/){eval($1)}, align)
  23.   end
  24. end
  25. module RPG
  26.   class EventCommand
  27.     def parameters
  28.       if @code == 101 or @code == 401
  29.         fake_exp_parameters = @parameters.clone
  30.         fake_exp_parameters[0].gsub!(/\#\{(.*?)\}/){eval($1)}
  31.         return fake_exp_parameters
  32.       else
  33.         return @parameters
  34.       end
  35.     end
  36.   end
  37. end
复制代码

使用举例:在限制使用次数或有冷却时间的特技名称或描述中显示使用次数或冷却时间;特技等级;在对话中插入各种变量,例如物品个数,省了代入变量这一步;随时可变的角色、职业、怪物、物品、特技名字,等等。

同时附上帮助中内嵌表达式的说明:[quote]内嵌表达式在字符串里面,可以用 #{变量名} 的形式把变量的内容嵌入在字符串当中。

game = "RPG"
print "#{game} Maker XP"         # => RPG Maker XP

上述示例里,第一行是为 game 变量赋值代入字符串“RPG”。第二行里面,其中 #{game} 是表示直接嵌入变量 game 的值字符串“RPG”,和后面的“ Maker XP”组合在一起,从而输出一个新的字符串。 RPGXP 的事件指令「显示文章」里,在文章中使用 \V[n] 和 \N[n] 控制码可以把变量的值和角色的名称作为信息嵌入文字中,这个功能好像和那个十分相似。

这个功能,让我们举例来说明在预置脚本中应如何使用。

print("文件 #{filename} 没找到。")

print 的显示内容应附加上括号 (),如果其优先顺序不易混淆的话可以省略(本章 print 的使用示例介绍中全部省略了括号)。预置脚本中基本上都统一使用有括号,所以在这儿也加上一个。

这个是当然,

print("文件 " + filename + " 没找到。")

像这样写也可以,使用内嵌表达式的方法会使读取程序变得很容易。

另外内嵌表达式和控制码一样,在单引号 '' 中间的字符串里使用也会无效。[quote]

              [本贴由 叶舞枫 于 2007-4-28 13:28:56 进行了编辑]

Lv1.梦旅人

梦石
0
星屑
65
在线时间
400 小时
注册时间
2005-10-24
帖子
634
2
 楼主| 发表于 2007-1-6 19:30:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
内嵌表达式本是很好用的东东,可惜在数据库中的物品名称、描述、事件的对话等等都无法使用,使用下面这个方法就可以把字符串中的内嵌表达式还原
  1. .gsub(/\#\{(.*?)\}/){eval($1)}
复制代码
下面这段用来测试其有效性
  1. $num1 = 874
  2. $num2 = 253
  3. text = 'num are #{$num1} and #{$num2}'
  4. p text
  5. text = text.gsub(/\#\{(.*?)\}/){eval($1)}
  6. p text
复制代码
具体的应用方法有很多,其中之一是把它加入各个Window类有draw_text的地方。如果认为这种方法比较麻烦的话,把下面这段东西插入Main之上,就可以把内嵌表达式扩展到“几乎”所有需要描绘文字的地方了。为什么说几乎?因为有些脚本是逐字描绘的,所以这些脚本还是要在其中插入把字符串中的内嵌表达式还原的语句。
  1. #==============================================================================
  2. # 伪·内嵌表达式 v1.0
  3. # By 叶子
  4. #==============================================================================
  5. # 1-5-2007 v1.0
  6. #==============================================================================
  7. # 使用方法:插入到Main之上,这样就可以在数据库、事件等等中使用内嵌表达式了
  8. # 内嵌表达式说明请打开帮助,搜索“内嵌表达式”
  9. #==============================================================================

  10. class Bitmap
  11.   alias fake_exp_draw_text draw_text
  12.   def draw_text(x = 0, y = 0, width = 0, height = 0, str = "", align = 0)
  13.     if y.is_a?(String)
  14.       str = y
  15.       rect = x
  16.       x = rect.x
  17.       y = rect.y
  18.       align = width
  19.       width = rect.width
  20.       height = rect.height
  21.     end
  22.     fake_exp_draw_text(x, y, width, height, str.gsub(/\#\{(.*?)\}/){eval($1)}, align)
  23.   end
  24. end
  25. module RPG
  26.   class EventCommand
  27.     def parameters
  28.       if @code == 101 or @code == 401
  29.         fake_exp_parameters = @parameters.clone
  30.         fake_exp_parameters[0].gsub!(/\#\{(.*?)\}/){eval($1)}
  31.         return fake_exp_parameters
  32.       else
  33.         return @parameters
  34.       end
  35.     end
  36.   end
  37. end
复制代码

使用举例:在限制使用次数或有冷却时间的特技名称或描述中显示使用次数或冷却时间;特技等级;在对话中插入各种变量,例如物品个数,省了代入变量这一步;随时可变的角色、职业、怪物、物品、特技名字,等等。

同时附上帮助中内嵌表达式的说明:[quote]内嵌表达式在字符串里面,可以用 #{变量名} 的形式把变量的内容嵌入在字符串当中。

game = "RPG"
print "#{game} Maker XP"         # => RPG Maker XP

上述示例里,第一行是为 game 变量赋值代入字符串“RPG”。第二行里面,其中 #{game} 是表示直接嵌入变量 game 的值字符串“RPG”,和后面的“ Maker XP”组合在一起,从而输出一个新的字符串。 RPGXP 的事件指令「显示文章」里,在文章中使用 \V[n] 和 \N[n] 控制码可以把变量的值和角色的名称作为信息嵌入文字中,这个功能好像和那个十分相似。

这个功能,让我们举例来说明在预置脚本中应如何使用。

print("文件 #{filename} 没找到。")

print 的显示内容应附加上括号 (),如果其优先顺序不易混淆的话可以省略(本章 print 的使用示例介绍中全部省略了括号)。预置脚本中基本上都统一使用有括号,所以在这儿也加上一个。

这个是当然,

print("文件 " + filename + " 没找到。")

像这样写也可以,使用内嵌表达式的方法会使读取程序变得很容易。

另外内嵌表达式和控制码一样,在单引号 '' 中间的字符串里使用也会无效。[quote]

              [本贴由 叶舞枫 于 2007-4-28 13:28:56 进行了编辑]

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

3
发表于 2007-1-6 19:52:35 | 只看该作者
叶子研究的东西也越来越深入了{/fd}
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

4
发表于 2007-1-6 21:35:50 | 只看该作者
好强悍~{/cy}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

5
发表于 2007-1-7 22:10:34 | 只看该作者
感觉应该很有用……但我是脚本盲……只能支持一个了
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
910
在线时间
94 小时
注册时间
2005-10-22
帖子
397
6
发表于 2007-1-7 22:32:37 | 只看该作者
{/jy}这个可以节约数据库吗?可以就爽啦{/se}
做脚本先从修改脚本做起,我只修改自己觉得能用到的东西。
以后的任何作品都将不会进行分享。
Bilibili:https://space.bilibili.com/288814521
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
799
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
7
发表于 2007-1-8 01:20:06 | 只看该作者
print("好强- -")
回复 支持 反对

使用道具 举报

Lv1.梦旅人

有事烧纸

梦石
0
星屑
154
在线时间
509 小时
注册时间
2005-10-22
帖子
6982

贵宾VX城市地图大赛冠军第1届RMTV比赛冠军第1届TG大赛冠军

8
发表于 2007-1-8 07:23:39 | 只看该作者
其实内嵌表达式 如果素全局变量、实例变量和类变量可以不需要花括号的 - -b

$num = 1

p "the num is #$num"

神隐中,偶尔诈尸
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-7-1
帖子
8
9
发表于 2007-4-4 18:39:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-3-20
帖子
255
10
发表于 2007-4-4 21:04:24 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 21:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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