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

Project1

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

[已经解决] 对话框 物品快捷带入脚本求修改

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
139 小时
注册时间
2014-6-12
帖子
128
跳转到指定楼层
1
发表于 2014-7-8 23:19:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我自己瞎编的根本不能执行,求大神修改下
#item_name
#--------------------------------------------------------------------------
  # ● 进行控制符的事前变换
  #    在实际绘制前、将控制符替换为实际的内容。
  #    为了减少歧异,文字「」会被首先替换为转义符(e)。
  #--------------------------------------------------------------------------
  def convert_escape_characters(text)
    result = text.to_s.clone

    result.gsub!(/eW[(d+)]/i) { item_name($1.to_i) }#获取物品id的名称

  end



  #--------------------------------------------------------------------------
  # ●在对话中 获取id的名称并在前面附加物品图标  使用方法:格式\w[1]
  #--------------------------------------------------------------------------
  def item_name(n)
    item = n >= 1 ? $data_items[n] : nil
    item ? item_name : ""
  end  



Lv5.捕梦者

梦石
0
星屑
22978
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
2
发表于 2014-7-8 23:25:34 | 只看该作者
本帖最后由 tseyik 于 2014-7-8 23:30 编辑

不是内置/I[n]就是顕示Icon麼?
參考
https://rpg.blue/thread-224143-1-1.html

点评

\w[1] 不是出现图标id显示图标 是显示武器名称和武器图标  发表于 2014-7-9 09:39
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21706
在线时间
9422 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

3
发表于 2014-7-8 23:32:02 | 只看该作者
本帖最后由 喵呜喵5 于 2014-7-8 23:33 编辑

看注释中的这一句“为了减少歧异,文字\会被首先替换为转义符(\e)”
所以后面所有的判断都是以包含\e为前提进行的
你把自带的脚本删除了以后\e就不会转换了,你却还模仿原生脚本的写法判断\e当然就不行了

RUBY 代码复制
  1. def convert_escape_characters(text)
  2.     result = text.to_s.clone
  3.     result.gsub!(/\\/)            { "\e" }
  4.     result.gsub!(/\e\e/)          { "\\" }
  5.     result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
  6.     result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
  7.     result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
  8.     result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
  9.     result.gsub!(/\eG/i)          { Vocab::currency_unit }
  10.     result.gsub!(/\eW\[(\d+)\]/i) { item_name($1.to_i)}
  11.     result
  12.   end
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2014-7-9 06:17:51 | 只看该作者
本帖最后由 taroxd 于 2014-7-9 06:22 编辑
喵呜喵5 发表于 2014-7-8 23:32
看注释中的这一句“为了减少歧异,文字\会被首先替换为转义符(\e)”
所以后面所有的判断都是以包含\e为前 ...


我才不吐槽没有定义 item_name 呢!看楼主这样子估计也不会自己定义了

to LZ:
不懂得脚本之前不要瞎编脚本呢。否则……后果自负的说……

点评

我很赞同→_→  发表于 2014-7-9 11:07
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21706
在线时间
9422 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

5
发表于 2014-7-9 12:01:10 | 只看该作者
taroxd 发表于 2014-7-9 06:17
我才不吐槽没有定义 item_name 呢!看楼主这样子估计也不会自己定义了

to LZ:

楼主主楼不是定义了么…………

好吧,仔细一看这个定义也是错的…………
  1. def item_name(n)
  2.     item = n >= 1 ? $data_items[n] : nil
  3.     item ? item.name : ""
  4.   end  
复制代码

点评

最近我的眼神不太好……  发表于 2014-7-9 12:04
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10079
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

6
发表于 2014-7-9 14:22:27 | 只看该作者
其实我想吐槽一下这个东西貌似没什么用,然后,你试试这样可用吗?(未测试
  1.   #--------------------------------------------------------------------------
  2.   # ● 进行控制符的事前变换
  3.   #    在实际绘制前、将控制符替换为实际的内容。
  4.   #    为了减少歧异,文字「\」会被首先替换为转义符(\e)。
  5.   #--------------------------------------------------------------------------
  6.   def convert_escape_characters(text)
  7.     result = text.to_s.clone
  8.     result.gsub!(/\\/)            { "\e" }
  9.     result.gsub!(/\e\e/)          { "\\" }
  10.     result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
  11.     result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
  12.     result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
  13.     result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
  14.     result.gsub!(/\eW\[(\d+)\]/i) { item_name($1.to_i) }
  15.     result.gsub!(/\eG/i)          { Vocab::currency_unit }
  16.     result
  17.   end
复制代码
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取第 n 号道具名称
  3.   #--------------------------------------------------------------------------
  4.   def item_name(n)
  5.     item = n >= 1 ? $data_items[n].name : nil
  6.   end
复制代码

点评

搞定了,谢谢  发表于 2014-7-9 22:32
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
139 小时
注册时间
2014-6-12
帖子
128
7
 楼主| 发表于 2014-7-9 22:36:06 | 只看该作者
搞定了,谢谢,就是还是没有物品图标功能啊
不是用\i[x],是自己带出来的那种

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10079
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

8
发表于 2014-7-9 23:30:34 | 只看该作者
本帖最后由 VIPArcher 于 2014-7-11 16:30 编辑

那么你就这么玩:
  1.   #--------------------------------------------------------------------------
  2.   # ● 控制符的处理
  3.   #     code : 控制符的实际形式(比如“\C[1]”是“C”)
  4.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  5.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  6.   #--------------------------------------------------------------------------
  7.   def process_escape_character(code, text, pos)
  8.     case code.upcase
  9.     when 'C'
  10.       change_color(text_color(obtain_escape_param(text)))
  11.     when 'I'
  12.       process_draw_icon(obtain_escape_param(text), pos)
  13.     when 'W'
  14.       process_draw_item(obtain_escape_param(text), pos)
  15.     when '{'
  16.       make_font_bigger
  17.     when '}'
  18.       make_font_smaller
  19.     end
  20.   end
复制代码
  1.   #--------------------------------------------------------------------------
  2.   # ● 处理控制符指定的道具图标和名字
  3.   #--------------------------------------------------------------------------
  4.   def process_draw_item(item_id, pos)
  5.     item = $data_items[item_id]
  6.     draw_item_name(item, pos[:x], pos[:y])
  7.     pos[:x] += 24 + text_size(item.name).width
  8.   end
复制代码
@taroxd 这下应该没问题了,嗯

点评

其他武器,防具什么的也这样写一个就行了  发表于 2014-7-9 23:33

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
139 小时
注册时间
2014-6-12
帖子
128
9
 楼主| 发表于 2014-7-11 15:54:41 | 只看该作者
VIPArcher 发表于 2014-7-9 23:30
那么你就这么玩:

有点小问题,最后一行代码没有把物品名称的文本长度写入,造成对话文字重叠,我尝试着写了一下,不行,您看看
  def process_draw_item(item_id, pos)
    text_width = text_size(item).width
    item = $data_items[item_id]
    draw_item_name(item, pos[:x], pos[:y])
    pos[:x] += text_width+24
  end

点评

⊙﹏⊙b汗没问题我粘贴错了,完美解决非常感谢  发表于 2014-7-11 19:35
好像您在说VIPArcher呢吧? (^o^) 加完text_size(item.name).width 报错了  发表于 2014-7-11 19:29
text_size(text).width  发表于 2014-7-11 16:28
(⊙o⊙)哦,不好意思,我忽略了这个问题。  发表于 2014-7-11 16:09
所以说不会脚本别乱写啦。我现在爪机没法帮你弄  发表于 2014-7-11 16:06
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 23:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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