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

Project1

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

[已经解决] 有关得失物品提示的脚本问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2009-9-24
帖子
24
跳转到指定楼层
1
发表于 2009-9-26 14:16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问以下脚本中,
怎样更改物品提示的对话视窗的消失时间



#以上脚本只需全部复制,插入到“Main”前面。
#==============================================================================
# ■  Game_Interpreter
#------------------------------------------------------------------------------
#  执行事件命令的解释器。本类在 Game_System 类
# 与 Game_Event 类的内部使用。
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 得失物品自动提示的刷新时间控制
#--------------------------------------------------------------------------
def call_6RgetItem(para1, para2 = nil, para3 = nil)
   temp_window = Window_Gain_Item.new(para1, para2, para3)
   Sound.play_shop
   for i in 0..120
     Graphics.update
     Input.update
     if Input.trigger?(Input::C) or Input.trigger?(Input::B)
       Sound.play_cancel
       break
     end
   end
   for i in 0..15
     temp_window.opacity -= 20
     temp_window.contents_opacity -= 16
     temp_window.update
     Graphics.update
   end   
   temp_window.dispose
   temp_window = nil
end  
#--------------------------------------------------------------------------
# ● 增减金钱
#--------------------------------------------------------------------------
def command_125
   value = operate_value(@params[0], @params[1], @params[2])
   $game_party.gain_gold(value)
   call_6RgetItem("gold", value)
   return true
end
#--------------------------------------------------------------------------
# ● 增减物品
#--------------------------------------------------------------------------
def command_126
   value = operate_value(@params[1], @params[2], @params[3])
   $game_party.gain_item($data_items[@params[0]], value)
   $game_map.need_refresh = true
   call_6RgetItem("item", $data_items[@params[0]], value)
   return true
end  
#--------------------------------------------------------------------------
# ● 增减武器
#--------------------------------------------------------------------------
def command_127
   value = operate_value(@params[1], @params[2], @params[3])
   $game_party.gain_item($data_weapons[@params[0]], value, @params[4])
   call_6RgetItem("item", $data_weapons[@params[0]], value)
   return true
end
#--------------------------------------------------------------------------
# ● 增减防具
#--------------------------------------------------------------------------
def command_128
   value = operate_value(@params[1], @params[2], @params[3])
   $game_party.gain_item($data_armors[@params[0]], value, @params[4])
   call_6RgetItem("item", $data_armors[@params[0]], value)
   return true
end
end

#==============================================================================
# ■ Window_Gain_Item
#------------------------------------------------------------------------------
#  显示获得物品的窗口。
#==============================================================================

class Window_Gain_Item < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize(para1, para2 = nil, para3 = nil)
   super(0, 0, 160, WLH + 32)
   self.z = 10000
   case para1
   when "item"
     str = "得到"
     if para3 < 0 then
       str = "失去"
       para3 = - para3
     end
     winwidth = contents.text_size("  你得到了: ?  " + para3.to_s).width + 24 + contents.text_size(para2.name).width
     self.width = winwidth + 64
     self.height = 64
     self.x = (Graphics.width - self.width) / 2
     self.y = (Graphics.height - self.height) / 2
     create_contents
     self.contents.draw_text(0, 0, self.width, 32, "  你" + str + "了: ")
     tx = contents.text_size("  你" + str + "了:").width
     draw_item_name(para2, tx , 0, true)
     self.contents.draw_text(tx + 24, 0, self.width, 32, para2.name)
     tx = contents.text_size("  你" + str + "了: ").width + 24 + contents.text_size(para2.name).width
     self.contents.draw_text(tx, 0, self.width, 32, " ×" + para3.to_s)
   when "gold"
     str = "得到"
     if para2 < 0 then
       str = "失去"
       para2 = - para2
     end
     winwidth = contents.text_size("  你得到了:   " + Vocab.gold.to_s).width + contents.text_size(para2).width
     self.width = winwidth + 64
     self.height = 64
     self.x = (Graphics.width - self.width) / 2
     self.y = (Graphics.height - self.height) / 2
     create_contents
     self.contents.draw_text(0, 0, self.width, 32, "  你" + str + "了: #{para2} " + Vocab.gold.to_s)
   end
end
#--------------------------------------------------------------------------
# ● 物品名的描画
#     item : 物品(特技、武器、防具可)
#     x    : 描画目标 X 坐标
#     y    : 描画目标 Y 坐标
#     enabled : 有效标记录。是false 的时候半透明绘画
#--------------------------------------------------------------------------
def draw_item_name(item, x, y, enabled = true)
   if item != nil
     draw_icon(item.icon_index, x, y, enabled)
     self.contents.font.color = normal_color
     self.contents.font.color.alpha = enabled ? 255 : 128
   end
end  
end

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
帖子
237
2
发表于 2009-9-26 14:27:55 | 只看该作者
for i in 0..15
     temp_window.opacity -= 20
     temp_window.contents_opacity -= 16
     temp_window.update
     Graphics.update
   end
没记错是这个

形成淡出效果
我。。不是寂寞。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2009-9-24
帖子
24
3
 楼主| 发表于 2009-9-26 14:32:34 | 只看该作者
for i in 0..15
     temp_window.opacity -= 20
     temp_window.contents_opacity -= 16
     temp_window.update
     Graphics.update
   end
没记错是这个

形成淡出效果
njx937 发表于 2009-9-26 14:27

请问怎样改?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2008-5-31
帖子
237
4
发表于 2009-9-26 18:06:28 | 只看该作者
没学过编程?
没测试过,单看脚本
这段是形成 淡出效果的
延迟了15帧淡出
  1. for i in 0..15      #执行15次
  2.      temp_window.opacity -= 20 #透明度
  3.      temp_window.contents_opacity -= 16   #透明度
  4.      temp_window.update
  5.      Graphics.update
  6.    end
复制代码
所以 改改 15这个数字就行了 但是为了效果好点 要相对应的改透明度的算法
初值 255 除法就自己算吧

  1.    for i in 0..120
  2.      Graphics.update
  3.      Input.update
  4.      if Input.trigger?(Input::C) or Input.trigger?(Input::B)
  5.        Sound.play_cancel
  6.        break
  7.      end   end
复制代码
看这一段 应该是 有两秒时间的(120次 60次一秒 一次俗称一帧)
按了 c or b键就跳出 淡出窗口
不按就2秒后淡出
要是不要按键中断功能的话 就删去

     if Input.trigger?(Input::C) or Input.trigger?(Input::B)
       Sound.play_cancel
       break
     end
这段

时间的话 就是 15 120这两个数字 15 淡出时间 120 窗口显示时间
总时间 = 淡出 + 显示

以上
我。。不是寂寞。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 03:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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