【解決!】入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

サワラ

【解決!】入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by サワラ » 2016年11月27日(日) 20:43

初のリクエストです。
ツクールVX Aceのメッセージウィンドウ内に出てくるポーズカーソルなのですが、
デフォルトの位置(ウィンドウ画面最下+中央)ではなく 文末毎 に表示できるスクリプトを探しています…
ノベルゲームにおける文章表示、文章の終わりにポーズカーソルを描画といった感じです。
Baidu IME_2016-11-27_20-12-1.png
文末毎に入力待ち!
Baidu IME_2016-11-27_20-12-1.png (54.47 KiB) 閲覧数: 5799 回

一部の制御文字やアイテム入手時などのメッセージ表示にも対応してあると大変好ましいです…
もし既に作成・公開済みなスクリプトがあるようでしたらそちらのDL先を教えていただけると幸いです!
最後に編集したユーザー サワラ on 2016年12月12日(月) 13:01 [ 編集 1 回目 ]

奈々(なな)
記事: 103
登録日時: 2016年11月06日(日) 16:57

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by 奈々(なな) » 2016年12月01日(木) 07:33

制作中であることの表明を兼ねて、とりあえず動作する試作品を作りました。
現時点では¥!などの制御文字を使うと大きくずれますが、これは調整中の仕様で改善予定です。

コード: 全て選択

#==============================================================================
#                        「ポーズサイン調整」(ACE) Ver.1.0a
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   調整用の試作品ですので、素材としての利用はご遠慮下さい。
#   
#==============================================================================
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================

class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :last_text_pos            # 最後の文字の位置
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_n7psm initialize
  def initialize
    initialize_n7psm
#~     @last_text_pos = {}
    @last_text_pos = {:x => 0, :y => 0, :new_x => 0, :height => 0}
   
    @mod_pause_sing = Sprite.new
    @mod_pause_sing.bitmap = self.windowskin
    @mod_pause_sing.src_rect = Rect.new(96, 64, 16, 16)
    @mod_pause_sing.z = self.z + 50
    @mod_pause_sing.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias dispose_n7psm dispose
  def dispose
    dispose_n7psm
    @mod_pause_sing.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_n7psm update
  def update
    update_n7psm
   
    frame = Graphics.frame_count % Graphics.frame_rate
    if frame < 15
      @mod_pause_sing.src_rect.x = 96
      @mod_pause_sing.src_rect.y = 64
    elsif frame < 30
      @mod_pause_sing.src_rect.x = 112
      @mod_pause_sing.src_rect.y = 64
    elsif frame < 45
      @mod_pause_sing.src_rect.x = 96
      @mod_pause_sing.src_rect.y = 80
    else
      @mod_pause_sing.src_rect.x = 112
      @mod_pause_sing.src_rect.y = 80
    end
   
    #contents.font.size
    #この式だと恐らく末尾の文字にめり込む、後で修正
    @mod_pause_sing.x = self.x + self.standard_padding + @last_text_pos[:x] + 48
    @mod_pause_sing.y = self.y + self.standard_padding + @last_text_pos[:y] - 12
  end
  #--------------------------------------------------------------------------
  # ● 文字の処理
  #     c    : 文字
  #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  #     pos  : 描画位置 {:x, :y, :new_x, :height}
  #--------------------------------------------------------------------------
  alias process_character_n7psm process_character
  def process_character(c, text, pos)
    process_character_n7psm(c, text, pos)
    @last_text_pos = pos
  end
  #--------------------------------------------------------------------------
  # ● 入力待ち処理
  #--------------------------------------------------------------------------
  #後でalias方式に変更
  def input_pause
    @mod_pause_sing.visible = true
#~     self.pause = true
    wait(10)
    Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
    Input.update
    @mod_pause_sing.visible = false
#~     self.pause = false
  end
end
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
サワラ

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by サワラ » 2016年12月01日(木) 13:20

奈々さんはじめまして。迅速な対応ありがとうございます(*゚▽゚*)!!
調整中の試作品ということでしたがどうしても気になった点があったのでSS付きで質問を失礼いたします(すみません)…
ポーズサインがなんだか半端な位置に表示されてしまうのですが、これはとりあえずの動作という仕様に準じたものでしょうか?
それとも何かしらのスクリプトの競合でしょうか…(制御文字\!は不使用/解像度640*480です)
添付ファイル
Baidu IME_2016-12-1_12-50-42.png
SS1
Baidu IME_2016-12-1_12-50-42.png (28.26 KiB) 閲覧数: 5711 回
Baidu IME_2016-12-1_12-50-25.png
SS2
Baidu IME_2016-12-1_12-50-25.png (23.92 KiB) 閲覧数: 5711 回
奈々(なな)
記事: 103
登録日時: 2016年11月06日(日) 16:57

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by 奈々(なな) » 2016年12月03日(土) 06:41

お返事が遅れまして申し訳ありません。
まだ作業時間が取れませんので、ひとまず簡単なテストだけしました。

現時点で確認できた仕様(既存の問題点)ですが
「制御文字も文字として認識するため、文末の制御文字の分だけ右にずれる」
「フォントサイズ変更に未対応なため、最後の1文字分だけ右か左に若干ずれる」
「最初の改行位置をカーソル表示位置と認識している」
の3つがあり、そのずれ方は最後の仕様が大きく関わっているようです。

但し、それを考慮しても左側にずれていると思うので、競合の可能性があります。
スクリーンショットを見る限り、左側にある余白が気になっています。
お手数ですが以下のテストをして頂けますか?

・新規プロジェクトに試作スクリプトを入れ、同じ文章でテスト
・それに解像度変更を追加し、テスト
・文章系のスクリプトを順次追加し、位置が変化するかテスト
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
サワラ

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by サワラ » 2016年12月03日(土) 13:07

わぁ~お忙しいところをまことに恐縮です…!!

新規プロジェクトを作成し、指示に沿いテストを行ってみました
Baidu IME_2016-12-3_12-16-51.png
ポーズスクリプト導入
Baidu IME_2016-12-3_12-23-0.png
ポーズスクリプト導入+解像度変更
Baidu IME_2016-12-3_12-20-25.png
イベント内容
Baidu IME_2016-12-3_12-20-25.png (19.87 KiB) 閲覧数: 5643 回

前回のSSにあった左側の余白については文章位置調整系のスクリプトをお借りしていたせいなのですが、現在は不要になったのでスクリプトエディタから削除しデフォルトの位置に文章がくるようになっています。
が、それでもポーズ位置はおかしな部分のままで、たった今作ったばかりの新規プロジェクトも上記SSの通りです…
奈々(なな)
記事: 103
登録日時: 2016年11月06日(日) 16:57

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by 奈々(なな) » 2016年12月08日(木) 00:54

お返事遅れました。
テストして頂いてありがとうございます。

その結果を元に色々やって、何とか原因が判明したので
とりあえず応急処置したものを載せておきます。
これで制御文字を含めて、諸々の問題は解決済みだと思います。

最終的には、これにカーソル座標の微調整+αの機能を付けるのと
非常に汚い書き方になっている中身ちゃんとを仕上げて完成の予定です。

コード: 全て選択

#==============================================================================
#                        「ポーズサイン調整」(ACE) Ver.1.1a
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   調整用の試作品ですので、素材としての利用はご遠慮下さい。
#   
#==============================================================================
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================

class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :last_text_pos            # 最後の文字の位置
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_n7psm initialize
  def initialize
    initialize_n7psm
#~     @last_text_pos = {}
    @last_text_pos = {:x => 0, :y => 0, :new_x => 0, :height => 0}
   
    @mod_pause_sing = Sprite.new
    @mod_pause_sing.bitmap = self.windowskin
    @mod_pause_sing.src_rect = Rect.new(96, 64, 16, 16)
    @mod_pause_sing.z = self.z + 50
    @mod_pause_sing.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias dispose_n7psm dispose
  def dispose
    dispose_n7psm
    @mod_pause_sing.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_n7psm update
  def update
    update_n7psm
   
    frame = Graphics.frame_count % Graphics.frame_rate
    if frame < 15
      @mod_pause_sing.src_rect.x = 96
      @mod_pause_sing.src_rect.y = 64
    elsif frame < 30
      @mod_pause_sing.src_rect.x = 112
      @mod_pause_sing.src_rect.y = 64
    elsif frame < 45
      @mod_pause_sing.src_rect.x = 96
      @mod_pause_sing.src_rect.y = 80
    else
      @mod_pause_sing.src_rect.x = 112
      @mod_pause_sing.src_rect.y = 80
    end
   
    #contents.font.size
    #この式だと恐らく末尾の文字にめり込む、後で修正
    @mod_pause_sing.x = self.x + self.standard_padding + @last_text_pos[:x]# + 48
    @mod_pause_sing.y = self.y + self.standard_padding + @last_text_pos[:y]# - 12
  end
  #--------------------------------------------------------------------------
  # ● 文字の処理
  #     c    : 文字
  #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  #     pos  : 描画位置 {:x, :y, :new_x, :height}
  #--------------------------------------------------------------------------
  alias process_character_n7psm process_character
  def process_character(c, text, pos)
    process_character_n7psm(c, text, pos)
    @last_text_pos = pos.dup if pos[:x] != 0
  end
  #--------------------------------------------------------------------------
  # ● 入力待ち処理
  #--------------------------------------------------------------------------
  #後でalias方式に変更
  def input_pause
    @mod_pause_sing.visible = true
#~     self.pause = true
    wait(10)
    Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
    Input.update
    @mod_pause_sing.visible = false
#~     self.pause = false
  end
end
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
サワラ

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by サワラ » 2016年12月09日(金) 11:39

20161208_142623.png
20161208_142623.png (99.19 KiB) 閲覧数: 5557 回
20161208_142630.png
20161208_142630.png (111.37 KiB) 閲覧数: 5557 回

さっそくVer.1.1aを入れたところ、自分のPCでも無事動作が確認できました!!
顔グラを表示するとまたくずれてしまう…ようですが今後の調整でそれを含め改善される、という認識でよろしいでしょうか。
長らく貴重なお時間を割いていただき、ありがとうございます。
スクリプトの完成版を心待ちにしております!
奈々(なな)
記事: 103
登録日時: 2016年11月06日(日) 16:57

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by 奈々(なな) » 2016年12月11日(日) 19:10

お待たせしました。
リクエスト内容を満たした素材が完成しましたのでアップします。

テストした限りでは、顔グラの有無、ウィンドウの上下中と
制御文字の使用、フォントサイズ変更には問題なく動作しました。
またスクリプトの構造的に、文章系スクリプトとの競合は低くなっているはずです。

初期設定は、カーソルの高さを文字のどこに合わせるかというものです。
これに関してはイラストから判別できなかったので選択式にしました。
分かりやすいイラストと、テストプレイを行って頂いたおかげでスムーズに作れました。
ありがとうございました。

コード: 全て選択

#==============================================================================
#                        「ポーズサイン調整」(ACE) Ver.1.2s
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   スクリプトの改変は自由に行って頂いて構いませんが
#   その場合も元のスクリプトの作成者として名前を載せて下さい。
#   また配布前に必ず、ブログにある利用規約を確認して下さい。
#
#------------------------------------------------------------------------------
#   
#   ツクマテのリクエスト品になります。
#   規約は「へぷたなすくろーる」の素材利用規約に準じるものとし
#   サポートに関してもそれらと同様に受け付けます。
#   
#==============================================================================
#初期設定
module Nana
module PSM_S
 
  #カーソルの高さ指定("下揃え","中央揃え","上揃え")
  ALIGN = "中央揃え"
 
end
end

#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================

class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :last_text_pos            # 最後の文字の位置
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_n7psm initialize
  def initialize
    initialize_n7psm
    @last_text_pos = {:x => 0, :y => 0, :new_x => 0, :height => 0}
   
    @mod_pause_sing = Sprite.new
    @mod_pause_sing.bitmap = self.windowskin
    @mod_pause_sing.src_rect = Rect.new(96, 64, 16, 16)
    @mod_pause_sing.z = self.z + 50
    @mod_pause_sing.visible = false
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias dispose_n7psm dispose
  def dispose
    dispose_n7psm
    @mod_pause_sing.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_n7psm update
  def update
    update_n7psm
   
    frame = Graphics.frame_count % Graphics.frame_rate
    if frame < 15
      @mod_pause_sing.src_rect.x = 96
      @mod_pause_sing.src_rect.y = 64
    elsif frame < 30
      @mod_pause_sing.src_rect.x = 112
      @mod_pause_sing.src_rect.y = 64
    elsif frame < 45
      @mod_pause_sing.src_rect.x = 96
      @mod_pause_sing.src_rect.y = 80
    else
      @mod_pause_sing.src_rect.x = 112
      @mod_pause_sing.src_rect.y = 80
    end
   
    #ポーズサインの位置調整
    @mod_pause_sing.x = self.x + self.standard_padding + @last_text_pos[:x]
    @mod_pause_sing.y = self.y + self.standard_padding + @last_text_pos[:y]
    case Nana::PSM_S::ALIGN
    when "中央揃え"
      @mod_pause_sing.y += (@last_text_pos[:height] - 16) / 2
    when "下揃え"
      @mod_pause_sing.y += (@last_text_pos[:height] - 16)
    end
  end
  #--------------------------------------------------------------------------
  # ● 文字の処理
  #     c    : 文字
  #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  #     pos  : 描画位置 {:x, :y, :new_x, :height}
  #--------------------------------------------------------------------------
  alias process_character_n7psm process_character
  def process_character(c, text, pos)
    process_character_n7psm(c, text, pos)
    @last_text_pos = pos.dup if text != ""
  end
  #--------------------------------------------------------------------------
  # ● ポーズサインの表示切替
  #--------------------------------------------------------------------------
  def pause=(value)
    @mod_pause_sing.visible = value
  end
end
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
サワラ

Re: 入力待ち(ポーズサイン/ポーズカーソル)アイコンの表示箇所変更

投稿記事by サワラ » 2016年12月12日(月) 13:00

ポーズサイン調整スクリプトの完成おめでとうございます!!
ウィンドウの位置や顔グラ有無、どれも問題なく動作しました…!(;_;)す、すごい…!!
今までツクールVXAceでポーズサインを文末毎にする方法にめぼしい記事が見当たらず、ちょっと緊張しつつツクマテに登録してリクエストをしよう!と踏み込んだ次第です(>_<)
注文ばかり多くなってしまってすみません、どれも丁寧に応じていただけて本当に大助かりです。
大事に使わせていただきます、ありがとうございました!!

“VX / Ace:スクリプト素材のリクエスト” へ戻る