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

Project1

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

[已经解决] 获得物品的脚本又有问题,求助

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2015-4-5
帖子
31
跳转到指定楼层
1
发表于 2015-5-21 08:34:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 牧羊仔 于 2015-5-21 08:38 编辑

百变宝典找的获得物品脚本,出现的问题如图,不会在人物头顶跳出获得装备,有些能正确显示,有些在乱78遭的位置显示,




  1. #===========================================================================
  2. #动态获得道具脚本 永劫的咎人 版
  3. #使用的时候选择事件第三页的脚本,输入 get_item("取得道具的名称",取得道具的数量)
  4. #即可得到相应的数量的相应道具。道具名称要用小引号括起来,写成 "回复剂" 的格式。
  5. #动态获得武器的代码是"get_weapon("武器名称",获得数量)"
  6. #动态获得防具的代码是"get_armor("防具名称",获得数量)"
  7. #获得金钱的代码是"get_gold(获得钱数)"
  8. #===========================================================================
  9. #获得金钱的时候特殊效果只有窗口随事件位置变化,米有动态哦~
  10. #因为默认是没有金钱图标的,如果想把效果加上去的话可以尝试自己修改这个脚本。
  11. #===========================================================================
  12. #冲突性:几乎没有,因为很少有外挂脚本会修改def start的。其他内容均为原创。
  13. #即使发生冲突也应该很容易进行整合^ ^
  14. #===========================================================================
  15. #感谢k' sama前两天解答了我读取事件坐标的问题。
  16. #===========================================================================

  17. class Game_Event < Game_Character
  18.   #--------------------------------------------------------------------------
  19.   # ● 启动事件 #读取事件坐标
  20.   #--------------------------------------------------------------------------
  21.   def start
  22.       $event_x = 0
  23.       $event_y = 0
  24.     # 执行内容不为空的情况下
  25.     if @list.size > 1
  26.       @starting = true
  27.       $event_x = @event.x * 32 + 3
  28.       $event_y = @event.y * 32
  29.     end
  30.   end
  31. end

  32. #===========================================================================
  33. #     动态取得物品的窗口
  34. #===========================================================================
  35. class Window_get_item < Window_Base
  36.   #--------------------------------------------------------------------------
  37.   # ● 初始化对像
  38.   #--------------------------------------------------------------------------
  39.   def initialize(x,y,text)
  40.     super(x, y, 640, 52)
  41.     @text = text
  42.     self.contents = Bitmap.new(width - 32, height - 32)#只用來避免出錯
  43.     #这个中心对齐忙了几乎一夜。。。。。。
  44.     @daomei = 30 - (self.contents.text_size(@text).width / 11 - 1) * 2
  45.     self.width =  self.contents.text_size(@text).width + @daomei
  46.     self.contents = Bitmap.new(width - 32, height - 32)#重定位图
  47.     @text_width = self.contents.text_size(@text).width
  48.     @extra_width = @text_width - 140 > 0 ? @text_width - 140 : 0
  49.     self.x = $event_x > 0 ? $event_x - self.contents.width / 2 : self.contents.width
  50.     #几重保险运算
  51.     if $event_x - self.width / 2 <= 0
  52.      self.x = 0
  53.    end
  54.     if $event_x + self.width / 2 >= $game_map.width * 32
  55.      self.x = $game_map.width * 32 - self.width
  56.    end
  57.     self.y = $event_y
  58.     if $event_y + self.height / 2 + 6 >= $game_map.height * 32
  59.       self.y = $game_map.height * 32 - self.height
  60.     end
  61.     self.back_opacity = 120
  62.     refresh
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 刷新
  66.   #--------------------------------------------------------------------------
  67.   def refresh
  68.     self.contents.clear
  69.     self.contents.font.size = 18
  70.     self.contents.draw_text(0,0,self.width - 32,20,@text)
  71.   end
  72. end
  73. class Game_Party
  74.   #--------------------------------------------------------------------------
  75.   # ● 获得物品
  76.   #     item_id : 物品 ID
  77.   #     n       : 个数
  78.   #--------------------------------------------------------------------------
  79.   def get_item(item_id, n)
  80.     @angel_item_dis = $data_items[item_id]
  81.     @item_id = item_id
  82.     @n = n
  83.     #和谐掉得到0个道具以及负数个武器和三位数个武器的情况
  84.     if @n <= 0 or @n > 99
  85.       return
  86.     end
  87.     # 更新 hash 的个数数据
  88.     if @item_id > 0
  89.       @items[@item_id] = [[item_number(@item_id) + @n, 0].max, 99].min
  90.     end
  91.     #描绘图标的变量带入sprite
  92.     $angel_dis = Sprite.new
  93.     #描绘图标
  94.     if @angel_item_dis.icon_name != ""
  95.     $angel_dis.bitmap = Bitmap.new("Graphics/Icons/#{@angel_item_dis.icon_name}")
  96.     $angel_dis.x = $event_x   
  97.     $angel_dis.y = $event_y
  98.     $angel_dis.opacity = 155
  99.   end
  100.     #移动图标
  101.     for i in 1..10
  102.       $angel_dis.y -= 4
  103.       $angel_dis.opacity += 10
  104.       $angel_dis.update
  105.       Graphics.update
  106.     end
  107.     #计算额外宽度
  108.     @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size  * 9 - 140 : 0
  109.     #描绘得到道具的窗口
  110.     if @n == 1 #如果得到的道具只有一个
  111.     $one = 1
  112.     $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@angel_item_dis.name)
  113.   else#除此以外的场合
  114.     $one = 2
  115.     @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
  116.     $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
  117.   end
  118.     Audio.se_play("Audio/SE/"+"006-System06",80,100)
  119.     #只是等待50帧而已
  120.     50.times{Graphics.update}
  121.     #销毁
  122.     $angel_dis.dispose
  123.     $angel_name_window.dispose
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 获得武器
  127.   #     item_id : 物品 ID
  128.   #     n       : 个数
  129.   #--------------------------------------------------------------------------
  130.   def get_weapon(item_id, n)
  131.     @angel_item_dis = $data_weapons[item_id]
  132.     @item_id = item_id
  133.     @n = n
  134.     #和谐掉得到0个武器以及负数个武器和三位数个武器的情况的情况
  135.     if @n <= 0 or @n > 99
  136.       return
  137.     end
  138.     # 更新 hash 的个数数据
  139.     if @item_id > 0
  140.       @weapons[@item_id] = [[weapon_number(@item_id) + @n, 0].max, 99].min
  141.     end
  142.     #描绘图标的变量带入sprite
  143.     $angel_dis = Sprite.new
  144.     #描绘图标
  145.     if @angel_item_dis.icon_name !=  ""
  146.     $angel_dis.bitmap = Bitmap.new("Graphics/Icons/#{@angel_item_dis.icon_name}")
  147.     $angel_dis.x = $event_x   
  148.     $angel_dis.y = $event_y
  149.     $angel_dis.opacity = 155
  150.   end
  151.     #移动图标
  152.     for i in 1..10
  153.       $angel_dis.y -= 4
  154.       $angel_dis.opacity += 10
  155.       $angel_dis.update
  156.       Graphics.update
  157.     end
  158.     #计算额外宽度
  159.     @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size  * 9 - 140 : 0
  160.     #描绘得到道具的窗口
  161.     if @n == 1 #如果得到的道具只有一个
  162.     $one = 1
  163.     $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@angel_item_dis.name)
  164.   else#除此以外的场合
  165.     $one = 2
  166.     @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
  167.     $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
  168.   end
  169.     Audio.se_play("Audio/SE/"+"006-System06",80,100)
  170.     #只是等待50帧而已
  171.     50.times{Graphics.update}
  172.     #销毁
  173.     $angel_dis.dispose
  174.     $angel_name_window.dispose
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● 获得防具
  178.   #     item_id : 物品 ID
  179.   #     n       : 个数
  180.   #--------------------------------------------------------------------------
  181.   def get_armor(item_id, n)
  182.     @angel_item_dis = $data_armors[item_id]
  183.     @item_id = item_id
  184.     @n = n
  185.     #和谐掉得到0个防具,负数个防具以及三位数个防具的情况
  186.     if @n <= 0 or @n > 99
  187.       return
  188.     end
  189.     # 更新 hash 的个数数据
  190.     if @item_id > 0
  191.       @armors[@item_id] = [[armor_number(@item_id) + @n, 0].max, 99].min
  192.     end
  193.     #描绘图标的变量带入sprite
  194.     $angel_dis = Sprite.new
  195.     #描绘图标
  196.     if @angel_item_dis.icon_name != ""
  197.     $angel_dis.bitmap = Bitmap.new("Graphics/Icons/#{@angel_item_dis.icon_name}")
  198.     $angel_dis.x = $event_x   
  199.     $angel_dis.y = $event_y
  200.     $angel_dis.opacity = 155
  201.   end
  202.     #移动图标
  203.     for i in 1..10
  204.       $angel_dis.y -= 4
  205.       $angel_dis.opacity += 10
  206.       $angel_dis.update
  207.       Graphics.update
  208.     end
  209.     #p @angel_item_dis.name.length* 9
  210.     #计算额外宽度
  211.     @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size  * 9 - 140 : 0
  212.     #描绘得到道具的窗口
  213.     if @n == 1 #如果得到的道具只有一个
  214.     $one = 1
  215.     $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@angel_item_dis.name)
  216.   else#除此以外的场合
  217.     $one = 2
  218.     @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
  219.     $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
  220.   end
  221.     Audio.se_play("Audio/SE/"+"006-System06",80,100)
  222.     #只是等待50帧而已
  223.     50.times{Graphics.update}
  224.     #销毁
  225.     $angel_dis.dispose
  226.     $angel_name_window.dispose
  227.    end
  228.   #--------------------------------------------------------------------------
  229.   # ● 获得金钱
  230.   #     n       : 个数
  231.   #--------------------------------------------------------------------------
  232.   def get_gold( n)
  233.     @n = n
  234.     #和谐掉得到0金钱以及负数金钱的情况
  235.     if @n <= 0
  236.       return
  237.     end
  238.      @gold = [[@gold + n, 0].max, 9999999].min
  239.     #计算额外宽度
  240.     #@extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size  * 9 - 140 : 0
  241.     #描绘得到道具的窗口
  242.     $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 : 0 ,$event_y - 4,"#{n}" + "#{$data_system.words.gold}")
  243.     Audio.se_play("Audio/SE/"+"006-System06",80,100)
  244.     #只是等待50帧而已
  245.     50.times{Graphics.update}
  246.     #销毁
  247.     $angel_name_window.dispose
  248.    end
  249. end
  250. class Interpreter
  251.   #========================================================================
  252.   #定义事件中动态获得物品的方法
  253.   #========================================================================
  254.   def  get_item(item_name,n)
  255.     @item_name = item_name
  256.     for i in 1...$data_items.size
  257.       if $data_items[i].name ==  @item_name
  258.         @item_id = i
  259.       end
  260.     end
  261.      return $game_party.get_item(@item_id, n)
  262.    end
  263.   #========================================================================
  264.   #定义事件中动态获得武器的方法
  265.   #========================================================================
  266.     def  get_weapon(item_name, n)
  267.     @item_name = item_name
  268.     for i in 1...$data_weapons.size
  269.       if $data_weapons[i].name ==  @item_name
  270.         @item_id = i
  271.       end
  272.     end
  273.      return $game_party.get_weapon(@item_id, n)
  274.    end
  275.   #========================================================================
  276.   #定义事件中动态获得防具的方法
  277.   #========================================================================
  278.     def  get_armor(item_name, n)
  279.     @item_name = item_name
  280.     for i in 1...$data_armors.size
  281.       if $data_armors[i].name ==  @item_name
  282.         @item_id = i
  283.       end
  284.     end
  285.      return $game_party.get_armor(@item_id, n)
  286.    end
  287.   #========================================================================
  288.   #定义事件中动态获得金钱的方法
  289.   #========================================================================
  290.     def  get_gold(n)
  291.      return $game_party.get_gold(n)
  292.   end
  293. end
复制代码

Lv3.寻梦者

梦石
0
星屑
1743
在线时间
485 小时
注册时间
2006-1-7
帖子
1073
2
发表于 2015-5-22 11:58:26 | 只看该作者
光拿脚本实测无任何错误情况发生
请把你的工程拿来
如果不想全部内容放出
请新建一个工程,把出现问题的地图和地图上所有事件复制到新工程,再把脚本添加进去,然后把这个工程拿来试试

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 塞糖

查看全部评分

初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2015-4-5
帖子
31
3
 楼主| 发表于 2015-5-25 17:38:49 | 只看该作者
白鬼 发表于 2015-5-22 11:58
光拿脚本实测无任何错误情况发生
请把你的工程拿来
如果不想全部内容放出

已经发现问题了是脚本的问题,谢谢你了!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 22:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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