查看: 2269|回复: 8

[已经解决] 这里有两个问题希望大神们帮忙解答~

[复制链接]
梦石
0
星屑
60
在线时间
22 小时
注册时间
2015-6-28
回帖
30
发表于 2016-12-25 13:21:51 | 显示全部楼层 |阅读模式

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

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

×
第一个就是成就系统的问题:
如下1,2图。
第一张图是关于获得成就一瞬间所显示的横条,但由于成就名字较长字都挤在了一起,
第二张图是关于获得成就后打开成就列表,最上面的成就描述一旦字数多了起来字就会
飞出窗口....
至于成就系统的脚本页面楼下单独放出吧!
第二个问题是关于一个游戏结局后的谢幕演出。
第三张图是魔女之家结局后的谢幕
这个效果要怎么做出来呢?不用插入视频的方式直接在游戏里做这种左边
滚动字幕,背景黑底,右边有规律地显示一些图片。
求指点谢谢了!!!
{:2_270:}
QQ截图20161225130142.png
QQ截图20161225130216.png
QQ截图20161225130342.png

点评

http://rm.66rpg.com/forum.php?mod=viewthread&tid=376458&_dsign=6245a6cb(成就) http://rm.66rpg.com/forum.php?mod=viewthread&tid=371221&_dsign=df92a85c(基本能把你的所有问题解决)   发表于 2016-12-30 02:51

评分

参与人数 1星屑 +100 收起 理由
RaidenInfinity + 100 结帖

查看全部评分

梦石
0
星屑
60
在线时间
22 小时
注册时间
2015-6-28
回帖
30
 楼主| 发表于 2016-12-25 13:24:39 | 显示全部楼层
本帖最后由 RaidenInfinity 于 2016-12-25 13:36 编辑

对了,补充一下...成就问题还有一个,第二张图里的日期也是挤在一起能不能改宽一些呢...

然后下面就是成就的脚本了。

[pre lang="ruby"]
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :medals                   # 獲得済みメダル
  attr_reader   :new_medals               # 新規獲得メダル
  attr_accessor :medal_info_count         # メダル情報表示カウント
  attr_accessor :medal_info_opacity       # メダル情報表示不透明度
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias tmmedal_game_party_initialize initialize
  def initialize
    tmmedal_game_party_initialize
    @medals = []
    @new_medals = []
    @medal_info_count = 0
    @medal_info_opacity = 0
  end
  #--------------------------------------------------------------------------
  # ○ メダルの獲得
  #--------------------------------------------------------------------------
  def gain_medal(medal_id)
    return if @medals.any? {|medal| medal[0] == medal_id }
    t = Time.now.strftime(" (%Y/%m/%d %H:%M)")
    @medals.push([medal_id, t])
    @new_medals.push([medal_id, t])
  end
  #--------------------------------------------------------------------------
  # ○ 獲得メダル情報の消去
  #--------------------------------------------------------------------------
  def delete_new_medal
    @new_medals.shift
  end
end

#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ○ メダルの獲得
  #--------------------------------------------------------------------------
  def gain_medal(medal_id)
    $game_party.gain_medal(medal_id)
  end
end

#==============================================================================
# ■ Window_MenuCommand
#==============================================================================
class Window_MenuCommand
  #--------------------------------------------------------------------------
  # ● 独自コマンドの追加用
  #--------------------------------------------------------------------------
  alias tmmedal_window_menucommand_add_original_commands add_original_commands
  def add_original_commands
    tmmedal_window_menucommand_add_original_commands
    unless TMMEDAL::HIDE_COMMAND && !medal_enabled
      add_command(TMMEDAL::COMMAND_MEDAL, :medal, medal_enabled)
    end
  end
  #--------------------------------------------------------------------------
  # ○ メダルの有効状態を取得
  #--------------------------------------------------------------------------
  def medal_enabled
    !$game_party.medals.empty?
  end
end

#==============================================================================
# □ Window_MedalInfo
#==============================================================================
class Window_MedalInfo < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(Graphics.width - window_width, 0, window_width, fitting_height(1))
    self.opacity = 0
    self.contents_opacity = $game_party.medal_info_opacity
    refresh
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウ幅の取得
  #--------------------------------------------------------------------------
  def window_width
    return 240
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if $game_party.medal_info_count > 0
      self.contents_opacity += 16
      $game_party.medal_info_count -= 1
      $game_party.delete_new_medal if $game_party.medal_info_count == 0
    else
      self.contents_opacity -= 16
      if self.contents_opacity == 0
        open unless $game_party.new_medals.empty?
      end
    end
    $game_party.medal_info_opacity = self.contents_opacity
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウを開く
  #--------------------------------------------------------------------------
  def open
    refresh
    TMMEDAL::SE_GAIN_MEDAL.play
    $game_party.medal_info_count = 150
    self.contents_opacity = 0
    self
  end
  #--------------------------------------------------------------------------
  # ○ リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    unless $game_party.new_medals.empty?
      draw_background(contents.rect)
      medal = TMMEDAL::MEDAL_DATA[$game_party.new_medals[0][0]]
      rect = contents.rect.clone
      draw_icon(medal[1], rect.x, rect.y)
      rect.x += 24
      rect.width -= 24
      draw_text(rect, medal[0])
    end
  end
  #--------------------------------------------------------------------------
  # ○ 背景の描画
  #--------------------------------------------------------------------------
  def draw_background(rect)
    temp_rect = rect.clone
    temp_rect.width /= 2
    contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
    temp_rect.x = temp_rect.width
    contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  end
  #--------------------------------------------------------------------------
  # ○ 背景色 1 の取得
  #--------------------------------------------------------------------------
  def back_color1
    Color.new(0, 0, 0, 192)
  end
  #--------------------------------------------------------------------------
  # ○ 背景色 2 の取得
  #--------------------------------------------------------------------------
  def back_color2
    Color.new(0, 0, 0, 0)
  end
end

#==============================================================================
# □ Window_Medal
#==============================================================================
class Window_Medal < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    refresh
    select(0)
    activate
  end
  #--------------------------------------------------------------------------
  # ● 桁数の取得
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # ● 項目数の取得
  #--------------------------------------------------------------------------
  def item_max
    @data ? @data.size : 1
  end
  #--------------------------------------------------------------------------
  # ● アイテムの取得
  #--------------------------------------------------------------------------
  def item
    @data && index >= 0 ? @data[index] : nil
  end
  #--------------------------------------------------------------------------
  # ● アイテムリストの作成
  #--------------------------------------------------------------------------
  def make_item_list
    @data = $game_party.medals
  end
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    medal = TMMEDAL::MEDAL_DATA[item[0]]
    rect = item_rect(index)
    draw_icon(medal[1], rect.x, rect.y)
    rect.x += 24
    rect.width -= 216
    draw_text(rect, medal[0])
    rect.x = contents.width - 192
    rect.width = 192
    draw_text(rect, item[1], 2)
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    if item
      medal = TMMEDAL::MEDAL_DATA[item[0]]
      text = medal[2]
      @help_window.set_text(text)
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    make_item_list
    create_contents
    draw_all_items
  end
end

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # ● 全ウィンドウの作成
  #--------------------------------------------------------------------------
  alias tmmedal_scene_map_create_all_windows create_all_windows
  def create_all_windows
    tmmedal_scene_map_create_all_windows
    create_medal_window
  end
  #--------------------------------------------------------------------------
  # ○ メダルウィンドウの作成
  #--------------------------------------------------------------------------
  def create_medal_window
    @medal_window = Window_MedalInfo.new
  end
end

#==============================================================================
# ■ Scene_Menu
#==============================================================================
class Scene_Menu
  #--------------------------------------------------------------------------
  # ● コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  alias tmmedal_scene_menu_create_command_window create_command_window
  def create_command_window
    tmmedal_scene_menu_create_command_window
    @command_window.set_handler(:medal, method(:command_medal))
  end
  #--------------------------------------------------------------------------
  # ○ コマンド[メダル]
  #--------------------------------------------------------------------------
  def command_medal
    SceneManager.call(Scene_Medal)
  end
end

#==============================================================================
# □ Scene_Medal
#==============================================================================
class Scene_Medal < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_item_window
  end
  #--------------------------------------------------------------------------
  # ○ アイテムウィンドウの作成
  #--------------------------------------------------------------------------
  def create_item_window
    wy = @help_window.height
    wh = Graphics.height - wy
    @item_window = Window_Medal.new(0, wy, Graphics.width, wh)
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
    @item_window.set_handler(:cancel, method(:return_scene))
  end
end
[/pre]
回复 1 0

使用道具 举报

梦石
0
星屑
6375
在线时间
1473 小时
注册时间
2015-7-25
回帖
609

极短25参与开拓者

发表于 2016-12-25 15:12:32 | 显示全部楼层
成就系统显示的那个字挤在一起的问题可以通过改一下窗口宽度来解决....
[pre lang="ruby"]class Window_MedalInfo < Window_Base
  def window_width
    return 240
  end
end[/pre]
把那个240改大就行了
然后成就描述的话...可以通过\n来换行这样下面那行也能利用起来啦

评分

参与人数 1梦石 +1 收起 理由
RaidenInfinity + 1 认可答案

查看全部评分

笨肉包的游戏讨论群932812135 (实时更新) 喜欢的话欢迎加入~
目前的坑
??? #像素风OC游戏 准备中 短篇-约5小时
花城梦之心 #像素风OC游戏 系统开发+素材绘制中
【不可思议的迷宫】幽灵契约外传:歌莉娅 v0.4 游戏文件已更新
同时更新中~ (沉迷摸鱼中~更新速度较慢请见谅w)
这是属于笨肉包一个人的旅行~(这只肉包又在摸鱼!
旅途的最终目标~ ???(保密~
回复

使用道具 举报

梦石
0
星屑
60
在线时间
22 小时
注册时间
2015-6-28
回帖
30
 楼主| 发表于 2016-12-26 13:53:24 | 显示全部楼层
魔法丶小肉包 发表于 2016-12-25 15:12
成就系统显示的那个字挤在一起的问题可以通过改一下窗口宽度来解决....
class Window_MedalInfo < Window_B ...

非常感谢!{:2_249:}
那么第二个问题请问有什么眉目嘛
回复

使用道具 举报

梦石
0
星屑
6375
在线时间
1473 小时
注册时间
2015-7-25
回帖
609

极短25参与开拓者

发表于 2016-12-26 15:31:08 | 显示全部楼层
逆回十六夜 发表于 2016-12-26 13:53
非常感谢!
那么第二个问题请问有什么眉目嘛

未测试↓
2个事件并行处理,一个用来显示黑色背景和滚动文字,另一个用来显示图片
笨肉包的游戏讨论群932812135 (实时更新) 喜欢的话欢迎加入~
目前的坑
??? #像素风OC游戏 准备中 短篇-约5小时
花城梦之心 #像素风OC游戏 系统开发+素材绘制中
【不可思议的迷宫】幽灵契约外传:歌莉娅 v0.4 游戏文件已更新
同时更新中~ (沉迷摸鱼中~更新速度较慢请见谅w)
这是属于笨肉包一个人的旅行~(这只肉包又在摸鱼!
旅途的最终目标~ ???(保密~
回复

使用道具 举报

梦石
0
星屑
60
在线时间
22 小时
注册时间
2015-6-28
回帖
30
 楼主| 发表于 2016-12-27 17:36:05 | 显示全部楼层
魔法丶小肉包 发表于 2016-12-26 15:31
未测试↓
2个事件并行处理,一个用来显示黑色背景和滚动文字,另一个用来显示图片 ...

好像行不通的样子阿...不过也感谢一下吧!{:2_282:}
回复

使用道具 举报

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2016-12-27 19:03:20 | 显示全部楼层
第二个问题,默认的滚动文字也是会挂起其他事件处理的
如果不想加其他脚本或修改默认脚本,你可以直接把最后的滚动字幕做成一张长图片,这样能一边移动它(不要设置等待至移动结束),一边设置右侧演出

评分

参与人数 1星屑 +250 收起 理由
RaidenInfinity + 250 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
60
在线时间
22 小时
注册时间
2015-6-28
回帖
30
 楼主| 发表于 2016-12-28 18:14:28 | 显示全部楼层
本帖最后由 逆回十六夜 于 2016-12-28 18:17 编辑
百里_飞柳 发表于 2016-12-27 19:03
第二个问题,默认的滚动文字也是会挂起其他事件处理的
如果不想加其他脚本或修改默认脚本,你可以直接把最 ...


好的非常感谢!{:2_249:}
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部