Project1

标题: 取得物品提示脚本 114行发生错误 如图 [打印本页]

作者: 菜鸟1111    时间: 2013-7-18 20:04
标题: 取得物品提示脚本 114行发生错误 如图
本帖最后由 菜鸟1111 于 2013-7-18 20:07 编辑

造了个防具
事件中用脚本为get(3,149,1)
其中149为防具代码
做好测试时提示脚本错误。求助各位达人~



RUBY 代码复制
  1. #===========================================================================
  2. #动态获得道具脚本 汉化专用版 by hongqizhen
  3. #使用的时候选择事件第三页的脚本,输入
  4. # get(物品类型,物品序号,物品数量)
  5. # 物品类型:1=物品,2=武器,3=防具,0=金币
  6. # 物品数量:大于0时提示得到物品,物品数量增加,小于0时提示失去物品,物品数量
  7. #           减少,等于0时忽略
  8. #           如果不为金币时,小于-99或大于99的忽略
  9. #===========================================================================
  10. #冲突性:几乎没有,因为很少有外挂脚本会修改def start的。
  11. #即使发生冲突也应该很容易进行整合^ ^
  12. #===========================================================================
  13. #改自 动态获得道具脚本 永劫的咎人版
  14. #优点:代码段缩水到只剩1/3,使用简便
  15. #缺点:代码不直观,仅适用于汉化
  16. #附加:提示的中心点直接取用事件的屏幕坐标,杜绝了提示乱跑的问题。
  17. #===========================================================================
  18.  
  19. class Game_Event < Game_Character
  20.   attr_reader   :event                    # event data 这个声明可不能忘啊!
  21.   #--------------------------------------------------------------------------
  22.   # ● 启动事件 #读取事件坐标
  23.   #--------------------------------------------------------------------------
  24.   def start
  25.       $event_x = 0
  26.       $event_y = 0
  27.     # 执行内容不为空的情况下
  28.     if @list.size > 1
  29.       @starting = true
  30.       #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  31.       #就是下面的这个取事件在屏幕上的位置的问题,让我走了好多弯路。
  32.       #其实简单到没边,不是么?
  33.       #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  34.       if $game_map.events[event.id] == nil
  35.         return
  36.       end
  37.       $event_x = $game_map.events[event.id].screen_x - 16 #取得事件屏幕X值
  38.       $event_y = $game_map.events[event.id].screen_y - 64 #取得事件屏幕Y值
  39.     end
  40.   end
  41. end
  42.  
  43.  
  44. #===========================================================================
  45. #     动态取得物品的窗口
  46. #===========================================================================
  47. class Window_get_item < Window_Base
  48.   #--------------------------------------------------------------------------
  49.   # ● 初始化对像
  50.   #--------------------------------------------------------------------------
  51.   def initialize(x,y,text)
  52.     super(x, y, 640, 50)
  53.     @text = text
  54.     self.contents = Bitmap.new(width - 32, height - 32)#只用來避免出錯
  55.     self.width =  self.contents.text_size(@text).width
  56.     self.contents = Bitmap.new(width - 32, height - 32)#重定位图
  57.     @text_width = self.contents.text_size(@text).width
  58.     @extra_width = @text_width - 140 > 0 ? @text_width - 140 : 0
  59.     self.x = $event_x > 0 ? $event_x - self.contents.width / 2 : self.contents.width
  60.     #几重保险运算
  61.     if $event_x - self.width / 2 <= 0
  62.       self.x = 0
  63.     end
  64.     if $event_x + self.width / 2 >= 640
  65.       self.x = 640 - self.width
  66.     end
  67.     self.y = $event_y
  68.     if $event_y + self.height / 2 + 6 >= 480
  69.       self.y = 480 - self.height
  70.     end
  71.     self.back_opacity = 200
  72.     refresh
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 刷新
  76.   #--------------------------------------------------------------------------
  77.   def refresh
  78.     self.contents.clear
  79.     self.contents.font.size = 18
  80.     self.contents.font.color = Color.new(255,255,0,255)
  81.     self.contents.draw_text(5,0,self.width - 32,18,@text)
  82.     self.contents.font.color = normal_color
  83.   end
  84. end
  85.  
  86.  
  87. class Game_Party
  88.   def get(ty1, item_id, n)   
  89.     if ty1 > 0 and ty1 <= 3      
  90.       @item_id = item_id
  91.       @n = n
  92.       #和谐掉得到0个道具和三位数个道具的情况
  93.       if @n == 0 or @n > 99 or @n < -99
  94.         return
  95.       end
  96.       # 更改所持有的物品个数
  97.       if @item_id > 0
  98.         if ty1 == 1
  99.           @angel_item_dis = $data_items[item_id]
  100.           @items[@item_id] = [[item_number(@item_id) + @n, 0].max, 99].min
  101.         end
  102.         if ty1 == 2
  103.           @angel_item_dis = $data_weapons[item_id]
  104.           @weapons[@item_id] = [[weapon_number(@item_id) + @n, 0].max, 99].min
  105.         end
  106.         if ty1 == 3
  107.           @angel_item_dis = $data_armors[item_id]
  108.           @armors[@item_id] = [[armor_number(@item_id) + @n, 0].max, 99].min
  109.         end
  110.       end
  111.       #描绘图标的变量带入sprite
  112.       $angel_dis = Sprite.new
  113.       #描绘图标
  114.       if @angel_item_dis.icon_name != ""
  115.         $angel_dis.bitmap = Bitmap.new("Graphics/Icons/#{@angel_item_dis.icon_name}")
  116.         $angel_dis.x = $event_x
  117.         $angel_dis.y = $event_y + 6
  118.         $angel_dis.opacity = 155
  119.       end
  120.       #移动图标
  121.       for i in 1..10
  122.         $angel_dis.y -= 4
  123.         $angel_dis.opacity += 10
  124.         $angel_dis.update
  125.         Graphics.update
  126.       end
  127.       #计算额外宽度
  128.       @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size  * 9 - 140 : 0
  129.       #描绘得到道具的窗口
  130.       if @n > 0 #如果得到的道具
  131.         @text = "得到" + " #{@n}" + "個【" + "#{@angel_item_dis.name}" + "】"
  132.       else#除此以外的场合
  133.         @n = 0 - n
  134.         @text = "失去" + " #{@n}" + "個【" + " #{@angel_item_dis.name}" + "】"
  135.       end
  136.       $one = 1
  137.       $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
  138.       Audio.se_play("Audio/SE/"+"006-System06",80,100)
  139.       #只是等待50帧而已
  140.       50.times{Graphics.update}
  141.       #销毁
  142.       $angel_dis.dispose
  143.       $angel_name_window.dispose
  144.     else
  145.       #和谐掉得到0金钱的情况和类型值小于0的情况
  146.       @n = n
  147.       if ty1 < 0
  148.         return
  149.       end
  150.       if @n == 0
  151.         return
  152.       end
  153.       [url=home.php?mod=space&uid=236945]@gold[/url] = [[[url=home.php?mod=space&uid=236945]@gold[/url] + n, 0].max, 9999999].min
  154.       #描绘得到道具的窗口
  155.       if @n > 0 #如果得到的道具
  156.         @text = "得到" + " #{@n} " + "個" + "#{$data_system.words.gold}"
  157.       else#除此以外的场合
  158.         @n = 0 - n
  159.         @text = "失去" + " #{@n} " + "個" + "#{$data_system.words.gold}"
  160.       end
  161.       $one = 1
  162.       $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 : 0 ,$event_y - 4,@text)
  163.       Audio.se_play("Audio/SE/"+"006-System06",80,100)
  164.       #只是等待50帧而已
  165.       50.times{Graphics.update}
  166.       #销毁
  167.       $angel_name_window.dispose
  168.     end
  169.   end
  170.   #傑子 2013.05.04 +++
  171.   #========================================================================
  172.   #定义事件與角色距離
  173.   #========================================================================
  174.   def distfromactor(ev_x,ev_y,act_x,act_y)
  175.     @dist = Math.sqrt(((ev_x-act_x) ** 2 ) +((ev_y-act_y) ** 2))
  176.     return @dist
  177.   end
  178.   #傑子 2013.05.04 ---
  179. end
  180.  
  181. class Interpreter
  182.   #========================================================================
  183.   #定义事件中动态获得东西,并自动区别类型,增减物品
  184.   #========================================================================
  185.   def  get(ty1,item_id, n)#ty1:1=物品,2=武器,3=防具,0=金币
  186.     if ty1== 0
  187.       item_id = 0
  188.     end
  189.     return $game_party.get(ty1,item_id, n)
  190.   end
  191.   #傑子 2013.05.04 +++
  192.   #========================================================================
  193.   #定义事件與角色距離
  194.   #========================================================================
  195.   #ev_x,ev_y : 事件座標 act_x,act_y :角色座標
  196.   def dfact(ev_x,ev_y,act_x,act_y)
  197.     return $game_party.distfromactor(ev_x,ev_y,act_x,act_y)
  198.   end
  199.   #傑子 2013.05.04 ---
  200. end














作者: 烟倦    时间: 2013-7-18 20:12
http://rpg.blue/thread-69981-1-1 ... ead-401196-1-1.html

看看这个?
作者: 菜鸟1111    时间: 2013-7-18 20:41
烟倦 发表于 2013-7-18 20:12
http://rpg.blue/thread-69981-1-1.html?pages=/thread-401196-1-1.html

看看这个?

反馈:
复制粘贴 链接页代码

用get_armor("防具名称",获得数量)
get_armor(140,1)
没有提示脚本错误,但是同时也没有获得物品...
作者: 烟倦    时间: 2013-7-18 20:47
菜鸟1111 发表于 2013-7-18 20:41
反馈:
复制粘贴 链接页代码

那我就不知道了,我没学过C语言,我只是搬运工
作者: 菜鸟1111    时间: 2013-7-18 21:04
烟倦 发表于 2013-7-18 20:47
那我就不知道了,我没学过C语言,我只是搬运工

你链接的那个脚本之前没看到过,同样感谢丰富了我的知识~
作者: 小传子    时间: 2013-7-18 21:28
问题出在这几行
#描绘图标
      if @angel_item_dis.icon_name != ""
        $angel_dis.bitmap = Bitmap.new("Graphics/Icons/#{@angel_item_dis.icon_name}")
        $angel_dis.x = $event_x
        $angel_dis.y = $event_y + 6
        $angel_dis.opacity = 155
      end

你看看icos文件夹里面的文件就应该知道了
作者: 菜鸟1111    时间: 2013-7-18 21:40
传说VS天涯 发表于 2013-7-18 21:28
问题出在这几行
#描绘图标
      if @angel_item_dis.icon_name != ""

额 这个不太懂,看描述是icon_name 试着换图标 木有用
作者: 小传子    时间: 2013-7-18 22:01
菜鸟1111 发表于 2013-7-18 21:40
额 这个不太懂,看描述是icon_name 试着换图标 木有用

把你工程发上来,这高亮代码把@也释义了#*@(#*(@#
作者: 亿万星辰    时间: 2013-7-18 22:21
楼主你确定你有149号防具么?怎么提示的是 nil 呢?
作者: 菜鸟1111    时间: 2013-7-18 22:47
菜鸟1111 发表于 2013-7-18 21:40
额 这个不太懂,看描述是icon_name 试着换图标 木有用

试了单独一个get(3,149,1)的情况  还是出错  
作者: 菜鸟1111    时间: 2013-7-18 22:48
亿万星辰 发表于 2013-7-18 22:21
楼主你确定你有149号防具么?怎么提示的是 nil 呢?

就是在防具栏填资料,然后应用确定…
作者: 亿万星辰    时间: 2013-7-19 06:41
菜鸟1111 发表于 2013-7-18 22:48
就是在防具栏填资料,然后应用确定…

就目前你给出的提示,我只能推断出你的问题是,你的防具数据库里根本就没有149号防具。
作者: e900003    时间: 2013-7-19 11:50
本帖最后由 e900003 于 2013-7-19 11:53 编辑

是不是資料庫沒有149號防具  檢查看看~~~
作者: 菜鸟1111    时间: 2013-7-19 15:38
亿万星辰 发表于 2013-7-19 06:41
就目前你给出的提示,我只能推断出你的问题是,你的防具数据库里根本就没有149号防具。 ...

修改别人的游戏 修改的防具项目也是对方新增的
新增防具名叫伏魔指环
直接用增减物品调出,出现时名字确实月牙指环……
作者: 芯☆淡茹水    时间: 2013-7-20 15:53
目测脚本没问题;也不会是脚本放置顺序问题,因为直接用的脚本命令:get XXXX
那就只用 亿万星辰 发现的那个问题了。
作者: 菜鸟1111    时间: 2013-7-29 22:04
菜鸟1111 发表于 2013-7-19 15:38
修改别人的游戏 修改的防具项目也是对方新增的
新增防具名叫伏魔指环
直接用增减物品调出,出现时名字确 ...

有.........




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1