- 注册时间
- 2007-3-25
- 最后登录
- 2007-10-2
⑤进阶
- 积分
- 606
|
忙了两个晚上的成果。
今天上午修正一个“想当然”的bug,道具没有图标也可以使用。
效果如下:
紧急更新,去掉存档出错的bug
*获得道具的时候道具图标上移,然后出现介绍物品名称的窗口。
*图标显示和窗口的位置随得到道具的事件位置变化而变化。
*窗口大小随道具名称和数量变化而变化。
*如果得到道具只有一个,不显示数量。
*得到的道具为0或者负数或超过99个,脚本不执行(和谐和谐)。
*窗口位置如果超出地图单位,自动缩回。- #===========================================================================
- #动态获得道具脚本 永劫的咎人 版
- #使用的时候选择事件第三页的脚本,输入 get_item("取得道具的名称",取得道具的数量)
- #即可得到相应的数量的相应道具。道具名称要用小引号括起来,写成 "回复剂" 的格式。
- #动态获得武器的代码是"get_weapon("武器名称",获得数量)"
- #动态获得防具的代码是"get_armor("防具名称",获得数量)"
- #获得金钱的代码是"get_gold(获得钱数)"
- #===========================================================================
- #获得金钱的时候特殊效果只有窗口随事件位置变化,米有动态哦~
- #因为默认是没有金钱图标的,如果想把效果加上去的话可以尝试自己修改这个脚本。
- #===========================================================================
- #冲突性:几乎没有,因为很少有外挂脚本会修改def start的。其他内容均为原创。
- #即使发生冲突也应该很容易进行整合^ ^
- #===========================================================================
- #感谢k' sama前两天解答了我读取事件坐标的问题。
- #===========================================================================
- class Game_Event < Game_Character
- #--------------------------------------------------------------------------
- # ● 启动事件 #读取事件坐标
- #--------------------------------------------------------------------------
- def start
- $event_x = 0
- $event_y = 0
- # 执行内容不为空的情况下
- if @list.size > 1
- @starting = true
- $event_x = @event.x * 32 + 3
- $event_y = @event.y * 32
- end
- end
- end
- #===========================================================================
- # 动态取得物品的窗口
- #===========================================================================
- class Window_get_item < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize(x,y,text)
- super(x, y, 640, 52)
- @text = text
- self.contents = Bitmap.new(width - 32, height - 32)#只用來避免出錯
- #这个中心对齐忙了几乎一夜。。。。。。
- @daomei = 30 - (self.contents.text_size(@text).width / 11 - 1) * 2
- self.width = self.contents.text_size(@text).width + @daomei
- 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 >= $game_map.width * 32
- self.x = $game_map.width * 32 - self.width
- end
- self.y = $event_y
- if $event_y + self.height / 2 + 6 >= $game_map.height * 32
- self.y = $game_map.height * 32 - self.height
- end
- self.back_opacity = 120
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- self.contents.font.size = 18
- self.contents.draw_text(0,0,self.width - 32,20,@text)
- end
- end
- class Game_Party
- #--------------------------------------------------------------------------
- # ● 获得物品
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_item(item_id, n)
- @angel_item_dis = $data_items[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个道具以及负数个武器和三位数个武器的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @items[@item_id] = [[item_number(@item_id) + @n, 0].max, 99].min
- 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
- $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 == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得武器
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_weapon(item_id, n)
- @angel_item_dis = $data_weapons[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个武器以及负数个武器和三位数个武器的情况的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @weapons[@item_id] = [[weapon_number(@item_id) + @n, 0].max, 99].min
- 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
- $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 == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得防具
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_armor(item_id, n)
- @angel_item_dis = $data_armors[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个防具,负数个防具以及三位数个防具的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @armors[@item_id] = [[armor_number(@item_id) + @n, 0].max, 99].min
- 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
- $angel_dis.opacity = 155
- end
- #移动图标
- for i in 1..10
- $angel_dis.y -= 4
- $angel_dis.opacity += 10
- $angel_dis.update
- Graphics.update
- end
- #p @angel_item_dis.name.length* 9
- #计算额外宽度
- @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size * 9 - 140 : 0
- #描绘得到道具的窗口
- if @n == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得金钱
- # n : 个数
- #--------------------------------------------------------------------------
- def get_gold( n)
- @n = n
- #和谐掉得到0金钱以及负数金钱的情况
- if @n <= 0
- return
- end
- @gold = [[@gold + n, 0].max, 9999999].min
- #计算额外宽度
- #@extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size * 9 - 140 : 0
- #描绘得到道具的窗口
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 : 0 ,$event_y - 4,"#{n}" + "#{$data_system.words.gold}")
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_name_window.dispose
- end
- end
- class Interpreter
- #========================================================================
- #定义事件中动态获得物品的方法
- #========================================================================
- def get_item(item_name,n)
- @item_name = item_name
- for i in 1...$data_items.size
- if $data_items[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_item(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得武器的方法
- #========================================================================
- def get_weapon(item_name, n)
- @item_name = item_name
- for i in 1...$data_weapons.size
- if $data_weapons[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_weapon(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得防具的方法
- #========================================================================
- def get_armor(item_name, n)
- @item_name = item_name
- for i in 1...$data_armors.size
- if $data_armors[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_armor(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得金钱的方法
- #========================================================================
- def get_gold(n)
- return $game_party.get_gold(n)
- end
- end
- #===========================================================================
- #动态获得道具脚本 永劫的咎人 版
- #使用的时候选择事件第三页的脚本,输入 get_item("取得道具的名称",取得道具的数量)
- #即可得到相应的数量的相应道具。道具名称要用小引号括起来,写成 "回复剂" 的格式。
- #动态获得武器的代码是"get_weapon("武器名称",获得数量)"
- #动态获得防具的代码是"get_armor("防具名称",获得数量)"
- #获得金钱的代码是"get_gold(获得钱数)"
- #===========================================================================
- #获得金钱的时候特殊效果只有窗口随事件位置变化,米有动态哦~
- #因为默认是没有金钱图标的,如果想把效果加上去的话可以尝试自己修改这个脚本。
- #===========================================================================
- #冲突性:几乎没有,因为很少有外挂脚本会修改def start的。其他内容均为原创。
- #即使发生冲突也应该很容易进行整合^ ^
- #===========================================================================
- #感谢k' sama前两天解答了我读取事件坐标的问题。
- #===========================================================================
- class Game_Event < Game_Character
- #--------------------------------------------------------------------------
- # ● 启动事件 #读取事件坐标
- #--------------------------------------------------------------------------
- def start
- $event_x = 0
- $event_y = 0
- # 执行内容不为空的情况下
- if @list.size > 1
- @starting = true
- $event_x = @event.x * 32 + 3
- $event_y = @event.y * 32
- end
- end
- end
- #===========================================================================
- # 动态取得物品的窗口
- #===========================================================================
- class Window_get_item < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize(x,y,text)
- super(x, y, 640, 52)
- @text = text
- self.contents = Bitmap.new(width - 32, height - 32)#只用來避免出錯
- #这个中心对齐忙了几乎一夜。。。。。。
- @daomei = 30 - (self.contents.text_size(@text).width / 11 - 1) * 2
- self.width = self.contents.text_size(@text).width + @daomei
- 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 >= $game_map.width * 32
- self.x = $game_map.width * 32 - self.width
- end
- self.y = $event_y
- if $event_y + self.height / 2 + 6 >= $game_map.height * 32
- self.y = $game_map.height * 32 - self.height
- end
- self.back_opacity = 120
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- self.contents.font.size = 18
- self.contents.draw_text(0,0,self.width - 32,20,@text)
- end
- end
- class Game_Party
- #--------------------------------------------------------------------------
- # ● 获得物品
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_item(item_id, n)
- @angel_item_dis = $data_items[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个道具以及负数个武器和三位数个武器的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @items[@item_id] = [[item_number(@item_id) + @n, 0].max, 99].min
- 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
- $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 == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得武器
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_weapon(item_id, n)
- @angel_item_dis = $data_weapons[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个武器以及负数个武器和三位数个武器的情况的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @weapons[@item_id] = [[weapon_number(@item_id) + @n, 0].max, 99].min
- 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
- $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 == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得防具
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_armor(item_id, n)
- @angel_item_dis = $data_armors[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个防具,负数个防具以及三位数个防具的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @armors[@item_id] = [[armor_number(@item_id) + @n, 0].max, 99].min
- 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
- $angel_dis.opacity = 155
- end
- #移动图标
- for i in 1..10
- $angel_dis.y -= 4
- $angel_dis.opacity += 10
- $angel_dis.update
- Graphics.update
- end
- #p @angel_item_dis.name.length* 9
- #计算额外宽度
- @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size * 9 - 140 : 0
- #描绘得到道具的窗口
- if @n == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得金钱
- # n : 个数
- #--------------------------------------------------------------------------
- def get_gold( n)
- @n = n
- #和谐掉得到0金钱以及负数金钱的情况
- if @n <= 0
- return
- end
- @gold = [[@gold + n, 0].max, 9999999].min
- #计算额外宽度
- #@extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size * 9 - 140 : 0
- #描绘得到道具的窗口
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 : 0 ,$event_y - 4,"#{n}" + "#{$data_system.words.gold}")
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_name_window.dispose
- end
- end
- class Interpreter
- #========================================================================
- #定义事件中动态获得物品的方法
- #========================================================================
- def get_item(item_name,n)
- @item_name = item_name
- for i in 1...$data_items.size
- if $data_items[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_item(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得武器的方法
- #========================================================================
- def get_weapon(item_name, n)
- @item_name = item_name
- for i in 1...$data_weapons.size
- if $data_weapons[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_weapon(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得防具的方法
- #========================================================================
- def get_armor(item_name, n)
- @item_name = item_name
- for i in 1...$data_armors.size
- if $data_armors[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_armor(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得金钱的方法
- #========================================================================
- def get_gold(n)
- return $game_party.get_gold(n)
- end
- end
- #===========================================================================
- #动态获得道具脚本 永劫的咎人 版
- #使用的时候选择事件第三页的脚本,输入 get_item("取得道具的名称",取得道具的数量)
- #即可得到相应的数量的相应道具。道具名称要用小引号括起来,写成 "回复剂" 的格式。
- #动态获得武器的代码是"get_weapon("武器名称",获得数量)"
- #动态获得防具的代码是"get_armor("防具名称",获得数量)"
- #获得金钱的代码是"get_gold(获得钱数)"
- #===========================================================================
- #获得金钱的时候特殊效果只有窗口随事件位置变化,米有动态哦~
- #因为默认是没有金钱图标的,如果想把效果加上去的话可以尝试自己修改这个脚本。
- #===========================================================================
- #冲突性:几乎没有,因为很少有外挂脚本会修改def start的。其他内容均为原创。
- #即使发生冲突也应该很容易进行整合^ ^
- #===========================================================================
- #感谢k' sama前两天解答了我读取事件坐标的问题。
- #===========================================================================
- class Game_Event < Game_Character
- #--------------------------------------------------------------------------
- # ● 启动事件 #读取事件坐标
- #--------------------------------------------------------------------------
- def start
- $event_x = 0
- $event_y = 0
- # 执行内容不为空的情况下
- if @list.size > 1
- @starting = true
- $event_x = @event.x * 32 + 3
- $event_y = @event.y * 32
- end
- end
- end
- #===========================================================================
- # 动态取得物品的窗口
- #===========================================================================
- class Window_get_item < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize(x,y,text)
- super(x, y, 640, 52)
- @text = text
- self.contents = Bitmap.new(width - 32, height - 32)#只用來避免出錯
- #这个中心对齐忙了几乎一夜。。。。。。
- @daomei = 30 - (self.contents.text_size(@text).width / 11 - 1) * 2
- self.width = self.contents.text_size(@text).width + @daomei
- 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 >= $game_map.width * 32
- self.x = $game_map.width * 32 - self.width
- end
- self.y = $event_y
- if $event_y + self.height / 2 + 6 >= $game_map.height * 32
- self.y = $game_map.height * 32 - self.height
- end
- self.back_opacity = 120
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- self.contents.font.size = 18
- self.contents.draw_text(0,0,self.width - 32,20,@text)
- end
- end
- class Game_Party
- #--------------------------------------------------------------------------
- # ● 获得物品
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_item(item_id, n)
- @angel_item_dis = $data_items[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个道具以及负数个武器和三位数个武器的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @items[@item_id] = [[item_number(@item_id) + @n, 0].max, 99].min
- 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
- $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 == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得武器
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_weapon(item_id, n)
- @angel_item_dis = $data_weapons[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个武器以及负数个武器和三位数个武器的情况的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @weapons[@item_id] = [[weapon_number(@item_id) + @n, 0].max, 99].min
- 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
- $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 == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得防具
- # item_id : 物品 ID
- # n : 个数
- #--------------------------------------------------------------------------
- def get_armor(item_id, n)
- @angel_item_dis = $data_armors[item_id]
- @item_id = item_id
- @n = n
- #和谐掉得到0个防具,负数个防具以及三位数个防具的情况
- if @n <= 0 or @n > 99
- return
- end
- # 更新 hash 的个数数据
- if @item_id > 0
- @armors[@item_id] = [[armor_number(@item_id) + @n, 0].max, 99].min
- 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
- $angel_dis.opacity = 155
- end
- #移动图标
- for i in 1..10
- $angel_dis.y -= 4
- $angel_dis.opacity += 10
- $angel_dis.update
- Graphics.update
- end
- #p @angel_item_dis.name.length* 9
- #计算额外宽度
- @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size * 9 - 140 : 0
- #描绘得到道具的窗口
- if @n == 1 #如果得到的道具只有一个
- $one = 1
- $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)
- else#除此以外的场合
- $one = 2
- @text = "#{@angel_item_dis.name} "+"×"+" #{@n}"
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
- end
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_dis.dispose
- $angel_name_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 获得金钱
- # n : 个数
- #--------------------------------------------------------------------------
- def get_gold( n)
- @n = n
- #和谐掉得到0金钱以及负数金钱的情况
- if @n <= 0
- return
- end
- @gold = [[@gold + n, 0].max, 9999999].min
- #计算额外宽度
- #@extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size * 9 - 140 : 0
- #描绘得到道具的窗口
- $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 : 0 ,$event_y - 4,"#{n}" + "#{$data_system.words.gold}")
- Audio.se_play("Audio/SE/"+"006-System06",80,100)
- #只是等待50帧而已
- 50.times{Graphics.update}
- #销毁
- $angel_name_window.dispose
- end
- end
- class Interpreter
- #========================================================================
- #定义事件中动态获得物品的方法
- #========================================================================
- def get_item(item_name,n)
- @item_name = item_name
- for i in 1...$data_items.size
- if $data_items[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_item(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得武器的方法
- #========================================================================
- def get_weapon(item_name, n)
- @item_name = item_name
- for i in 1...$data_weapons.size
- if $data_weapons[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_weapon(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得防具的方法
- #========================================================================
- def get_armor(item_name, n)
- @item_name = item_name
- for i in 1...$data_armors.size
- if $data_armors[i].name == @item_name
- @item_id = i
- end
- end
- return $game_party.get_armor(@item_id, n)
- end
- #========================================================================
- #定义事件中动态获得金钱的方法
- #========================================================================
- def get_gold(n)
- return $game_party.get_gold(n)
- end
- end
复制代码
另外,此脚本虽然内容不少,但是原理并不复杂,都是些初级知识的啦,想学习脚本的朋友们可以把这个脚本读懂然后仿写一点其他的效果,例如随文字数量变化的window_help之类的。 |
评分
-
查看全部评分
|