赞 | 0 |
VIP | 3 |
好人卡 | 18 |
积分 | 2 |
经验 | 72569 |
最后登录 | 2023-12-30 |
在线时间 | 596 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 229
- 在线时间
- 596 小时
- 注册时间
- 2010-6-21
- 帖子
- 1218
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 懒De说 于 2011-3-5 19:52 编辑
转载来此幻想森林,附件下载不了了,我就做了一个新的
先附一张效果图
转载外战的一个范例,本来想发到技术区,但是一想还是发到地球村比较合适
如果在使用的过程中遇到的问题可以尽管来问我
下面附带附件
Project14.rar
(188.86 KB, 下载次数: 262)
解压密码www.66rpg.com
效果不一样不要惊奇
下面是处理过的动态效果图
脚本- #===========================================================================
- #使用的时候选择事件第三页的脚本,输入
- # 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
- 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
- end
复制代码 |
|