查看: 3545|回复: 15

[已经过期] 取得物品提示脚本 114行发生错误 如图

[复制链接]
梦石
0
星屑
50
在线时间
30 小时
注册时间
2013-6-21
回帖
67
发表于 2013-7-18 20:04:18 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 菜鸟1111 于 2013-7-18 20:07 编辑

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



[pre lang="ruby" line="1"]#===========================================================================
#动态获得道具脚本 汉化专用版 by hongqizhen
#使用的时候选择事件第三页的脚本,输入
# get(物品类型,物品序号,物品数量)
# 物品类型:1=物品,2=武器,3=防具,0=金币
# 物品数量:大于0时提示得到物品,物品数量增加,小于0时提示失去物品,物品数量
#           减少,等于0时忽略
#           如果不为金币时,小于-99或大于99的忽略
#===========================================================================
#冲突性:几乎没有,因为很少有外挂脚本会修改def start的。
#即使发生冲突也应该很容易进行整合^ ^
#===========================================================================
#改自 动态获得道具脚本 永劫的咎人版
#优点:代码段缩水到只剩1/3,使用简便
#缺点:代码不直观,仅适用于汉化
#附加:提示的中心点直接取用事件的屏幕坐标,杜绝了提示乱跑的问题。
#===========================================================================

class Game_Event < Game_Character
  attr_reader   :event                    # event data 这个声明可不能忘啊!
  #--------------------------------------------------------------------------
  # ● 启动事件 #读取事件坐标
  #--------------------------------------------------------------------------
  def start
      $event_x = 0
      $event_y = 0
    # 执行内容不为空的情况下
    if @list.size > 1
      @starting = true
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      #就是下面的这个取事件在屏幕上的位置的问题,让我走了好多弯路。
      #其实简单到没边,不是么?
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      if $game_map.events[event.id] == nil
        return
      end
      $event_x = $game_map.events[event.id].screen_x - 16 #取得事件屏幕X值
      $event_y = $game_map.events[event.id].screen_y - 64 #取得事件屏幕Y值
    end
  end
end


#===========================================================================
#     动态取得物品的窗口
#===========================================================================
class Window_get_item < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize(x,y,text)
    super(x, y, 640, 50)
    @text = text
    self.contents = Bitmap.new(width - 32, height - 32)#只用來避免出錯
    self.width =  self.contents.text_size(@text).width
    self.contents = Bitmap.new(width - 32, height - 32)#重定位图
    @text_width = self.contents.text_size(@text).width
    @extra_width = @text_width - 140 > 0 ? @text_width - 140 : 0
    self.x = $event_x > 0 ? $event_x - self.contents.width / 2 : self.contents.width
    #几重保险运算
    if $event_x - self.width / 2 <= 0
      self.x = 0
    end
    if $event_x + self.width / 2 >= 640
      self.x = 640 - self.width
    end
    self.y = $event_y
    if $event_y + self.height / 2 + 6 >= 480
      self.y = 480 - self.height
    end
    self.back_opacity = 200
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.size = 18
    self.contents.font.color = Color.new(255,255,0,255)
    self.contents.draw_text(5,0,self.width - 32,18,@text)
    self.contents.font.color = normal_color
  end
end


class Game_Party
  def get(ty1, item_id, n)   
    if ty1 > 0 and ty1 <= 3      
      @item_id = item_id
      @n = n
      #和谐掉得到0个道具和三位数个道具的情况
      if @n == 0 or @n > 99 or @n < -99
        return
      end
      # 更改所持有的物品个数
      if @item_id > 0
        if ty1 == 1
          @angel_item_dis = $data_items[item_id]
          @items[@item_id] = [[item_number(@item_id) + @n, 0].max, 99].min
        end
        if ty1 == 2
          @angel_item_dis = $data_weapons[item_id]
          @weapons[@item_id] = [[weapon_number(@item_id) + @n, 0].max, 99].min
        end
        if ty1 == 3
          @angel_item_dis = $data_armors[item_id]
          @armors[@item_id] = [[armor_number(@item_id) + @n, 0].max, 99].min
        end
      end
      #描绘图标的变量带入sprite
      $angel_dis = Sprite.new
      #描绘图标
      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
      #移动图标
      for i in 1..10
        $angel_dis.y -= 4
        $angel_dis.opacity += 10
        $angel_dis.update
        Graphics.update
      end
      #计算额外宽度
      @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size  * 9 - 140 : 0
      #描绘得到道具的窗口
      if @n > 0 #如果得到的道具
        @text = "得到" + " #{@n}" + "個【" + "#{@angel_item_dis.name}" + "】"
      else#除此以外的场合
        @n = 0 - n
        @text = "失去" + " #{@n}" + "個【" + " #{@angel_item_dis.name}" + "】"
      end
      $one = 1
      $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
      Audio.se_play("Audio/SE/"+"006-System06",80,100)
      #只是等待50帧而已
      50.times{Graphics.update}
      #销毁
      $angel_dis.dispose
      $angel_name_window.dispose
    else
      #和谐掉得到0金钱的情况和类型值小于0的情况
      @n = n
      if ty1 < 0
        return
      end
      if @n == 0
        return
      end
      @gold = [[@gold + n, 0].max, 9999999].min
      #描绘得到道具的窗口
      if @n > 0 #如果得到的道具
        @text = "得到" + " #{@n} " + "個" + "#{$data_system.words.gold}"
      else#除此以外的场合
        @n = 0 - n
        @text = "失去" + " #{@n} " + "個" + "#{$data_system.words.gold}"
      end
      $one = 1
      $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 : 0 ,$event_y - 4,@text)
      Audio.se_play("Audio/SE/"+"006-System06",80,100)
      #只是等待50帧而已
      50.times{Graphics.update}
      #销毁
      $angel_name_window.dispose
    end
  end
  #傑子 2013.05.04 +++
  #========================================================================
  #定义事件與角色距離
  #========================================================================
  def distfromactor(ev_x,ev_y,act_x,act_y)
    @dist = Math.sqrt(((ev_x-act_x) ** 2 ) +((ev_y-act_y) ** 2))
    return @dist
  end
  #傑子 2013.05.04 ---
end

class Interpreter
  #========================================================================
  #定义事件中动态获得东西,并自动区别类型,增减物品
  #========================================================================
  def  get(ty1,item_id, n)#ty1:1=物品,2=武器,3=防具,0=金币
    if ty1== 0
      item_id = 0
    end
    return $game_party.get(ty1,item_id, n)
  end
  #傑子 2013.05.04 +++
  #========================================================================
  #定义事件與角色距離
  #========================================================================
  #ev_x,ev_y : 事件座標 act_x,act_y :角色座標
  def dfact(ev_x,ev_y,act_x,act_y)
    return $game_party.distfromactor(ev_x,ev_y,act_x,act_y)
  end
  #傑子 2013.05.04 ---
end
[/pre] 114.jpg












梦石
0
星屑
48
在线时间
66 小时
注册时间
2013-6-23
回帖
152
发表于 2013-7-18 20:12:26 | 显示全部楼层
回复

使用道具 举报

梦石
0
星屑
50
在线时间
30 小时
注册时间
2013-6-21
回帖
67
 楼主| 发表于 2013-7-18 20:41:09 | 显示全部楼层
烟倦 发表于 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)
没有提示脚本错误,但是同时也没有获得物品...
回复

使用道具 举报

梦石
0
星屑
48
在线时间
66 小时
注册时间
2013-6-23
回帖
152
发表于 2013-7-18 20:47:31 | 显示全部楼层
菜鸟1111 发表于 2013-7-18 20:41
反馈:
复制粘贴 链接页代码

那我就不知道了,我没学过C语言,我只是搬运工
回复

使用道具 举报

梦石
0
星屑
50
在线时间
30 小时
注册时间
2013-6-21
回帖
67
 楼主| 发表于 2013-7-18 21:04:31 | 显示全部楼层
烟倦 发表于 2013-7-18 20:47
那我就不知道了,我没学过C语言,我只是搬运工

你链接的那个脚本之前没看到过,同样感谢丰富了我的知识~
回复

使用道具 举报


  • 更新完成啦
  • 梦石
    0
    星屑
    894
    在线时间
    6267 小时
    注册时间
    2006-6-7
    回帖
    8173
发表于 2013-7-18 21:28:33 | 显示全部楼层
问题出在这几行
#描绘图标
      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文件夹里面的文件就应该知道了
回复

使用道具 举报

梦石
0
星屑
50
在线时间
30 小时
注册时间
2013-6-21
回帖
67
 楼主| 发表于 2013-7-18 21:40:26 | 显示全部楼层
传说VS天涯 发表于 2013-7-18 21:28
问题出在这几行
#描绘图标
      if @angel_item_dis.icon_name != ""

额 这个不太懂,看描述是icon_name 试着换图标 木有用

点评

目测脚本本身没问题,是你工程冲突了,你把脚本放到最下面那一行试试  发表于 2013-7-18 22:02
回复

使用道具 举报


  • 更新完成啦
  • 梦石
    0
    星屑
    894
    在线时间
    6267 小时
    注册时间
    2006-6-7
    回帖
    8173
发表于 2013-7-18 22:01:31 | 显示全部楼层
菜鸟1111 发表于 2013-7-18 21:40
额 这个不太懂,看描述是icon_name 试着换图标 木有用

把你工程发上来,这高亮代码把@也释义了#*@(#*(@#
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2013-7-18 22:21:37 | 显示全部楼层
楼主你确定你有149号防具么?怎么提示的是 nil 呢?
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
30 小时
注册时间
2013-6-21
回帖
67
 楼主| 发表于 2013-7-18 22:47:30 | 显示全部楼层
菜鸟1111 发表于 2013-7-18 21:40
额 这个不太懂,看描述是icon_name 试着换图标 木有用

试了单独一个get(3,149,1)的情况  还是出错  
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部