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

Project1

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

[转载] 动态获得物品提示

[复制链接]

Lv1.梦旅人

梦石
0
星屑
229
在线时间
596 小时
注册时间
2010-6-21
帖子
1218
跳转到指定楼层
1
发表于 2011-3-5 19:44:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 懒De说 于 2011-3-5 19:52 编辑

转载来此幻想森林,附件下载不了了,我就做了一个新的
先附一张效果图
转载外战的一个范例,本来想发到技术区,但是一想还是发到地球村比较合适
如果在使用的过程中遇到的问题可以尽管来问我
下面附带附件
Project14.rar (188.86 KB, 下载次数: 262)
解压密码www.66rpg.com
效果不一样不要惊奇
下面是处理过的动态效果图

脚本
  1. #===========================================================================
  2. #使用的时候选择事件第三页的脚本,输入
  3. # get(物品类型,物品序号,物品数量)
  4. # 物品类型:1=物品,2=武器,3=防具,0=金币
  5. # 物品数量:大于0时提示得到物品,物品数量增加,小于0时提示失去物品,物品数量
  6. #           减少,等于0时忽略
  7. #           如果不为金币时,小于-99或大于99的忽略
  8. #===========================================================================
  9. #冲突性:几乎没有,因为很少有外挂脚本会修改def start的。
  10. #即使发生冲突也应该很容易进行整合^ ^
  11. #===========================================================================
  12. #优点:代码段缩水到只剩1/3,使用简便
  13. #缺点:代码不直观,仅适用于汉化
  14. #附加:提示的中心点直接取用事件的屏幕坐标,杜绝了提示乱跑的问题。
  15. #===========================================================================

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


  39. #===========================================================================
  40. #     动态取得物品的窗口
  41. #===========================================================================
  42. class Window_get_item < Window_Base
  43.   #--------------------------------------------------------------------------
  44.   # ● 初始化对像
  45.   #--------------------------------------------------------------------------
  46.   def initialize(x,y,text)
  47.     super(x, y, 640, 50)
  48.     @text = text
  49.     self.contents = Bitmap.new(width - 32, height - 32)#只用來避免出錯
  50.     self.width =  self.contents.text_size(@text).width
  51.     self.contents = Bitmap.new(width - 32, height - 32)#重定位图
  52.     @text_width = self.contents.text_size(@text).width
  53.     @extra_width = @text_width - 140 > 0 ? @text_width - 140 : 0
  54.     self.x = $event_x > 0 ? $event_x - self.contents.width / 2 : self.contents.width
  55.     #几重保险运算
  56.     if $event_x - self.width / 2 <= 0
  57.       self.x = 0
  58.     end
  59.     if $event_x + self.width / 2 >= 640
  60.       self.x = 640 - self.width
  61.     end
  62.     self.y = $event_y
  63.     if $event_y + self.height / 2 + 6 >= 480
  64.       self.y = 480 - self.height
  65.     end
  66.     self.back_opacity = 200
  67.     refresh
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 刷新
  71.   #--------------------------------------------------------------------------
  72.   def refresh
  73.     self.contents.clear
  74.     self.contents.font.size = 18
  75.     self.contents.font.color = Color.new(255,255,0,255) #提示文本的颜色
  76.     self.contents.draw_text(5,0,self.width - 32,18,@text)
  77.     self.contents.font.color = normal_color
  78.   end
  79. end


  80. class Game_Party
  81.   def get(ty1, item_id, n)   
  82.     if ty1 > 0 and ty1 <= 3      
  83.       @item_id = item_id
  84.       @n = n
  85.       #和谐掉得到0个道具和三位数个道具的情况
  86.       if @n == 0 or @n > 99 or @n < -99
  87.         return
  88.       end
  89.       # 更改所持有的物品个数
  90.       if @item_id > 0
  91.         if ty1 == 1
  92.           @angel_item_dis = $data_items[item_id]
  93.           @items[@item_id] = [[item_number(@item_id) + @n, 0].max, 99].min
  94.         end
  95.         if ty1 == 2
  96.           @angel_item_dis = $data_weapons[item_id]
  97.           @weapons[@item_id] = [[weapon_number(@item_id) + @n, 0].max, 99].min
  98.         end
  99.         if ty1 == 3
  100.           @angel_item_dis = $data_armors[item_id]
  101.           @armors[@item_id] = [[armor_number(@item_id) + @n, 0].max, 99].min
  102.         end
  103.       end
  104.       #描绘图标的变量带入sprite
  105.       $angel_dis = Sprite.new
  106.       #描绘图标
  107.       if @angel_item_dis.icon_name != ""
  108.         $angel_dis.bitmap = Bitmap.new("Graphics/Icons/#{@angel_item_dis.icon_name}")
  109.         $angel_dis.x = $event_x
  110.         $angel_dis.y = $event_y + 6
  111.         $angel_dis.opacity = 155
  112.       end
  113.       #移动图标
  114.       for i in 1..10
  115.         $angel_dis.y -= 4
  116.         $angel_dis.opacity += 10
  117.         $angel_dis.update
  118.         Graphics.update
  119.       end
  120.       #计算额外宽度
  121.       @extra_width = @angel_item_dis.name.size * 9 - 140 > 0 ? @angel_item_dis.name.size  * 9 - 140 : 0
  122.       #描绘得到道具的窗口
  123.       if @n > 0 #如果得到的道具
  124.         @text = "得到" + " #{@n}" + "个【" + "#{@angel_item_dis.name}" + "】"
  125.       else#除此以外的场合
  126.         @n = 0 - n
  127.         @text = "失去" + " #{@n}" + "个【" + " #{@angel_item_dis.name}" + "】"
  128.       end
  129.       $one = 1
  130.       $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 - @extra_width / 2: 0 ,$event_y - 4,@text)
  131.       Audio.se_play("Audio/SE/"+"006-System06",80,100)
  132.       #只是等待50帧而已
  133.       50.times{Graphics.update}
  134.       #销毁
  135.       $angel_dis.dispose
  136.       $angel_name_window.dispose
  137.     else
  138.       #和谐掉得到0金钱的情况和类型值小于0的情况
  139.       @n = n
  140.       if ty1 < 0
  141.         return
  142.       end
  143.       if @n == 0
  144.         return
  145.       end
  146.       @gold = [[@gold + n, 0].max, 9999999].min
  147.       #描绘得到道具的窗口
  148.       if @n > 0 #如果得到的道具
  149.         @text = "得到" + " #{@n} " + "个" + "#{$data_system.words.gold}"
  150.       else#除此以外的场合
  151.         @n = 0 - n
  152.         @text = "失去" + " #{@n} " + "个" + "#{$data_system.words.gold}"
  153.       end
  154.       $one = 1
  155.       $angel_name_window = Window_get_item.new($event_x - 56 > 0 ? $event_x - 56 : 0 ,$event_y - 4,@text)
  156.       Audio.se_play("Audio/SE/"+"006-System06",80,100)
  157.       #只是等待50帧而已
  158.       50.times{Graphics.update}
  159.       #销毁
  160.       $angel_name_window.dispose
  161.     end
  162.   end
  163. end

  164. class Interpreter
  165.   #========================================================================
  166.   #定义事件中动态获得东西,并自动区别类型,增减物品
  167.   #========================================================================
  168.   def  get(ty1,item_id, n)#ty1:1=物品,2=武器,3=防具,0=金币
  169.     if ty1== 0
  170.       item_id = 0
  171.     end
  172.     return $game_party.get(ty1,item_id, n)
  173.   end
  174. end
复制代码

Lv2.观梦者

梦石
0
星屑
710
在线时间
217 小时
注册时间
2011-1-26
帖子
690
2
发表于 2011-3-20 19:00:57 | 只看该作者
强沙发的

没脚本冲突吗

评分

参与人数 1星屑 +1000 收起 理由
eve592370698 + 1000 动态指的是物品?还是对话框位置.

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 05:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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