Project1

标题: 脚本疑问:右上角显示ID1角色名字的脚本编写思路 [打印本页]

作者: 至高无上    时间: 2014-7-19 17:42
标题: 脚本疑问:右上角显示ID1角色名字的脚本编写思路
刚入门的脚本新手,尝试了很久都没有成功,所以想来看看大触们的编写思路。

目的很简单:在画面的右上角显示数据库中ID1角色的名字,从游戏开始到结束一直显示,多余的修饰不需要,优化也不需要考虑。我至今为止都还不知道外来的脚本到底是怎么起作用的。
作者: 黑化の鼠标    时间: 2014-7-19 17:44
既然只是为了这种程度的目的的话....直接用图片显示显示到游戏结束不是更快吗?...
作者: kuerlulu    时间: 2014-7-19 18:05
本帖最后由 taroxd 于 2014-7-19 18:15 编辑

名字获取
  1. $game_actors[1].name
复制代码
因为你说的是数据库中所以直接用$game_actors了
显示名字, 首先要有画布, 然后在画布上写字
  1. s = Sprite.new
  2. s.bitmap = Bitmap.new(512, 24)
  3. s.bitmap.draw_text(s.bitmap.rect, "text", 2)
复制代码
LZ要从头显示到尾, 那么我们来黑SceneManager吧【雾
  1. module SceneManager
  2.   #显示变量, 因为是从头到尾那么dispose也不用写了吧【死
  3. end
复制代码
最终代码(直接粘贴到main前去掉头就可以食用了):
@Scene ← 无视
  1. module SceneManager
  2.   def self.run
  3.     DataManager.init
  4.     @s = Sprite.new
  5.     @s.z = 99999999
  6.     @s.bitmap = Bitmap.new(512, 24)
  7.     @s.bitmap.draw_text(@s.bitmap.rect, $game_actors[1].name, 2)
  8.     Audio.setup_midi if use_midi?
  9.     @scene = first_scene_class.new
  10.     @scene.main while @scene
  11.   end
  12. end
复制代码

作者: taroxd    时间: 2014-7-19 18:14
我不知道楼主是什么意思:https://rpg.blue/thread-368399-1-1.html
作者: tseyik    时间: 2014-7-20 00:39
本帖最后由 tseyik 于 2014-7-20 01:20 编辑

其實数据库中ID1角色的名字,
楼主一定知道
直接P一張圖
放在画面右上角就是
要多美有多美
画象拡張脚本(範例)
picex_ace.rar (318.99 KB, 下载次数: 29)
・ 画象反転機能を追加。
・ 画象背景視窗表示機能追加。
・ 画象/視窗文字表示機能追加。
設定項目
■ フォント設定

FONTS = []
FONTS[0] = nil
FONTS[1] = "MS ゴシック"
FONTS[2] = ["MS 明朝", 20, :OF, :ST]

描画文字のフォント設定です。制御文字で使用します。
FONTS[識別番号] = フォント設定 のように設定を追加してください。

フォント設定は、以下の3つの形式のいずれかで行います。

nil
    すべての設定をリセットして、デフォルトの設定を使用します。
文字列
    フォント名を設定することで、フォントのみを変更します。
    空文字列("")の場合は、デフォルトのフォントが使用されます。
配列
    ["フォント名", 文字サイズ, 文字色, 縁取り色, オプション, ...]
    途中を省略する場合は、nilと設定してください。
    省略された場合は、現在の設定が使用され変更は行われません。
    フォント名         文字列でフォント名を設定してください。
    空文字列("")の場合は、デフォルトのフォントを使用します。
    文字サイズ         文字サイズは、6 から 96 の範囲で指定しください。
    また、0 にするとデフォルトのサイズを使用します。
    文字色
    縁取り色         色の設定は、[red, green, blue, alpha]
    もしくは、"RRGGBBAA"の形式で設定してください。
    alpha(AA) の値は省略することができます。
    その場合、255(FF) となります。
    オプション         オプションは、複数設定できます。

      :BT .. 太字ON      :BF .. 太字OFF
      :IT .. 斜体ON      :IF .. 斜体OFF
      :OT .. 縁取りON    :OF .. 縁取りOFF
      :ST .. 影ON        :SF .. 影OFF

例)["MS ゴシック", :BT] や [nil, nil, [255,0,0], :OF, :ST]


■ 使用方法
■ ピクチャの表示
イベントコマンド「ピクチャの表示」を使用してください。
すべてのピクチャは、背景にウィンドウを持ちます。
ピクチャとして表示する画像とウィンドウに表示する画像は別のものになります。

イベントコマンドでファイル名を設定して表示した画像は、キャッシュされます。
スクリプトにより作成、読み込みされた画像はキャッシュされず、解放されます。
■ ピクチャの取得
拡張機能は、スクリプトを使用して実行します。
イベントコマンド「ピクチャの表示」でピクチャを表示してから実行してください。
対象となるピクチャを取得するには、以下の方法を使用してください。
Pictures[ピクチャ番号]

指定された番号のピクチャを取得します。
Pictures[first .. last]

first から last までの番号のピクチャを配列で取得します。
例)Pictures[1..3].each {|picture| picture.erase }

ピクチャ全体に何らかの処理をおこないたい場合は、
Pictures.each { ... }を使用してください。
また、Pictures.eraseで、すべてのピクチャを消去できます。
■ ウィンドウの表示
イベントコマンド「ピクチャの表示」の後に実行してください。
Pictures[ピクチャ番号].window.create(width, height)
Pictures[ピクチャ番号].window.create(width, height, padding)

指定されたサイズのウィンドウを表示します。
padding を省略時は 8 px の余白が作成されます。
ウィンドウ内容は、ウィンドウの幅から余白を引いた大きさになります。
Pictures[ピクチャ番号].window.create(ww, wh, cw, ch)
Pictures[ピクチャ番号].window.create(ww, wh, cw, ch, padding)

ウィンドウ(ww,wh)とウィンドウ内容(cw,ch)のサイズを指定できます。
ウィンドウ内容は 1px 以上のサイズを指定してください。 例)Pictures[6].window.create(320, 240, 300, 480, 10)

■ ウィンドウの設定
ウィンドウ表示のスクリプトを実行した後に実行してください。
Pictures[ピクチャ番号].window.windowskin("ファイル名", ウィンドウカラー)

ウィンドウスキンを変更します。
ファイル名は、文字列で設定して、画像は Graphics/System フォルダに保存してください。
ウィンドウカラーは、配列もしくは、Tone オブジェクト
変更を行わない箇所は、nil としてください。 例)Pictures[6].window.windowskin("Window", [-34,0,68])
Pictures[ピクチャ番号].window.back_opacity = 不透明度

ウィンドウ部分のみの不透明度(0-255)を変更します。初期値は 192 です。
ウィンドウ内容にも適用する場合は、ピクチャの不透明度を変更してください。
例)Pictures[3].window.back_opacity = 255
Pictures[ピクチャ番号].window.padding = 余白サイズ

ウィンドウの余白を変更します。。初期値は 12 です。
値を大きくすると、ウィンドウ内容の表示領域が狭くなります。
例)Pictures[11].window.padding = 16
■ ウィンドウ内容のスクロール
ウィンドウ表示のスクリプトを実行した後に実行してください。
Pictures[ピクチャ番号].window.contents_x
Pictures[ピクチャ番号].window.contents_y

スクロール位置の取得または設定をおこないます。

例)Pictures[6].window.contents_x = 24
例)Pictures[6].window.contents_x += 24
例)Pictures[6].window.contents_x -= 24
■ 画像ピクチャの表示
イベントコマンド「ピクチャの表示」をファイル名を設定せずに実行してください。
Pictures[ピクチャ番号].load(type, name, index = 0, hue = 0)

ピクチャフォルダ以外の画像をピクチャとして表示します。

type
    表示する画像の種類です。
    :picture, :icon, :system, :battler, :parallax, :character, :face が使用できます。
name
    ファイル名を文字列で設定してください。
index
    表示する画像のインデックスを指定します。
    :icon, :character, :face でのみ使用します。ほかは無視します。
    歩行グラでは、キャラ単位のインデックスで中央上の正面向きの画像のみ表示できます。
hue
    色相を 360 度系で設定します。

例)Pictures[8].load(:icon, "", 48)
■ 文字ピクチャの表示
イベントコマンド「ピクチャの表示」をファイル名を設定せずに実行してください。
Pictures[ピクチャ番号].bitmap.create(横幅, 縦幅)

指定されたサイズの透明な画像をピクチャとして表示します。
文字描画の機能でピクチャに文字を描画できます。
■ 文字の描画
文字描画は、ピクチャとウィンドウの2つに別々に行います。
テキストの設定方法は、コマンドとスクリプトの2つの方法があります。

イベントコマンド
    イベントコマンド『文章のスクロール表示』の一行目に <PICEX番号設定先>と
    記述し、二行目以降に文章を記述してください。
スクリプト
    テキストは、文字列で設定してください。引数には、文字列と配列が渡せます。
    改行する場合は、文字列内に\nを入れるか、引数で分けてください。
    Pictures[ピクチャ番号].bitmap.set_text("テキスト", ...)

    ピクチャに文字を描画します。
    文字を描画できるピクチャは、画像ピクチャと文字ピクチャです。
    イベントコマンド『ピクチャの表示』で表示した画像には描画できません。
    Pictures[ピクチャ番号].window.set_text("テキスト", ...)

    ウィンドウに文字を描画します。
    ウィンドウ内容は、ウィンドウを作成した際に作成されます。
    例)Pictures[6].bitmap.set_text("\\C[3]あいうえお", '\C[0]\V[13] かきくけこ')


制御文字

\V[n]  .. n 番のEV変数の値を表示
\C[n]  .. n 番の文字色に変更
\S[n]  .. 文字サイズを n に変更
\{     .. 文字サイズを大きく
\}     .. 文字サイズを小さく
\F[n]  .. n 番のフォント設定に変更
\X[n]  .. 描画位置のx座標を n にする。(マイナス値可 \Y[-8])
\Y[n]  .. 描画位置のy座標を n にする。(マイナス値可 \Y[-8])
\X[ns] .. 描画位置のx座標を s 方向へ n ずらす。(s は + か - \Y[8+])
\Y[ns] .. 描画位置のy座標を s 方向へ n ずらす。(s は + か - \Y[8-])
\A[n]  .. 文字の描画位置を設定 ([X] 0:左, 1:中, 2:右  [Y] 3:上, 4:中, 5:下)
\N[n]  .. n 番のアクター名を表示
\P[n]  .. パーティの n 番目のアクター名を表示
\I[n]  .. n 番目のアイコンを表示
\$     .. 所持金を表示
\G     .. 通貨単位を表示


■ 文字の再描画
Pictures[ピクチャ番号].refresh

ピクチャ画像とウィンドウ内容の両方を再描画します。
Pictures[ピクチャ番号].bitmap.refresh

ピクチャ画像を再描画します。
Pictures[ピクチャ番号].window.refresh

ウィンドウ内容を再描画します。
■ ピクチャの関連付け
ピクチャ同士を関連付けます。
関連付けられた親ピクチャを移動すると子ピクチャも一緒に移動します。
ウィンドウと文字を別のピクチャに分けている場合など、
1つのピクチャに位置を合わせたい場合に使用してください。

Pictures[子番号].assoc(親番号)

ピクチャを指定されたピクチャに関連付けます。
Pictures[子番号].dissoc

ピクチャの関連付けを解除します。
Pictures[親番号] << 子番号
Pictures[親番号] << Pictures[子番号]
Pictures[親番号] << [子番号, 子番号, ...]

ピクチャに指定されたピクチャに関連付けます。

例)Pictures[7].assoc(3)

7番のピクチャを3番のピクチャに関連付けます。
3番ピクチャを移動すると7番のピクチャも移動します。
例)Pictures[12] << 3 << 5

12番のピクチャに3番と5番のピクチャを関連付けます。
12番のピクチャを移動すると、3番と5番のピクチャも移動します。
■ ピクチャの位置変更
Pictures[ピクチャ番号].pos(x, y, 原点)
指定された座標にピクチャを表示します。
原点を省略した場合は、原点の変更を行いません。
原点を左上にする場合は 0 で、中心にする場合は 1 にします。
■ ピクチャの拡大縮小
Pictures[ピクチャ番号].zoom(zoom)
Pictures[ピクチャ番号].zoom(zoom_x, zoom_y)
100 のとき等倍表示となり、大きいと拡大、小さいと縮小します。
200 のとき2倍、50 のとき 1/2 で表示されます。
■ ピクチャの反転
Pictures[ピクチャ番号].reverse
Pictures[ピクチャ番号].mirror ^= true

現在の状態から反転します。

Pictures[ピクチャ番号].mirror = true

元の状態から反転します。

Pictures[ピクチャ番号].mirror = false

元の状態に戻します。
※ ウィンドウおよびウィンドウ内容は反転しません。
■ ピクチャの角度変更
Pictures[ピクチャ番号].angle = 角度
反時計回りを正とする 360 度系で角度を設定してください。
■ ピクチャの不透明度変更
Pictures[ピクチャ番号].visible = 可視状態
可視状態がtrueのとき表示され、falseのとき非表示になります。
この変更は、ピクチャとウィンドウの両方に影響します。
この機能を使用して設定できる不透明度は、0 と 255 だけです。
■ ピクチャの移動
Pictures[ピクチャ番号].target(フレーム数, {パラメータ})
指定されたフレーム数をかけて変化させます。
パラメータには、以下の6つがあります。
座標 (:o, :x, :y)、拡大率 (:zoom, :zoom_x, :zoom_y)、不透明度 (:opacity)
例)Pictures[8].target(60, x: 0, y: 0, o: 0)
■ ピクチャの操作 (非推奨)
内部の値を直接変更します。変更しない値は、省略してください。
※ ウィンドウおよびウィンドウ内容は、反転・拡大縮小・回転に対応していません。

変更された時点で表示が変わります。

Pictures[ピクチャ番号].instance_eval do
  @origin = 0               # 原点 (0:左上 1:中心)
  @x = 0.0                  # x座標
  @y = 0.0                  # y座標
  
  @zoom_x = 100.0           # 拡大率 横幅
  @zoom_y = 100.0           # 拡大率 縦幅
  
  @opacity = 255.0          # 不透明度 (0 - 255)
  @blend_type = 0           # (0:通常 1:加算 2:減算)
  @mirror = false           # 反転するか
  @Angle = 0.0              # 回転角度 (360 度系)
end


指定された値へ @duration のフレーム数をかけて変更します。
@duration は、1 以上で必ず行ってください。
init_target は、値の初期化です。必ず実行してください。
イベントコマンド「ピクチャの移動」の実行中には行わないでください。

Pictures[ピクチャ番号].instance_eval do
  init_target               # 初期化
  @duration = 0             # フレーム時間
  
  @target_x = 0.0           # x座標
  @target_y = 0.0           # y座標
  
  @target_zoom_x = 100.0    # 拡大率 横幅
  @target_zoom_y = 100.0    # 拡大率 縦幅
  
  @target_opacity = 255.0   # 不透明度
end

■ 開発用拡張機能
■ ピクチャの画像保存
イベントコマンド「スクリプト」にて実行してください。
Pictures.save("filename", *picture_id)

指定された番号のピクチャを1枚の画像として保存します。
※ 実行には、『画像保存』スクリプトが必要です。

例)Pictures.save("test", 1,2,5)
■ ウィンドウの描画
通常のウィンドウは、画像に含まれません。
ウィンドウも含めたい場合は、以下のスクリプトでウィンドウ画像を作成してください。
Pictures[ピクチャ番号].create(横幅, 縦幅, {})

引数 {} は、ウィンドウオプションです。
第三引数の有無で、ウィンドウかそうでないかを判断しますので、
すべてのオプションを省略する場合でも、ハッシュは省略しないでください。
オプションのデフォルト値は、以下のようになります。

ウィンドウスキン :windowskin => nil (デフォルトのウィンドウスキン)
ウィンドウカラー :tone       => nil (現在のウィンドウカラー)
背景の不透明度  :opacity    => 192


例)
Pictures[3].create(160, 120, {
  :windowskin => "Window2",
  :tone => Tone.new(68, 34, -34)
})
図片群組:把多個図片関連,移動一個,其他也踉着移動


在指定地片(x.y)顕示文字

作者: 俄罗斯方块    时间: 2014-7-20 03:04
除了用全局变量获取角色名称后用精灵显示在地图上并用Spriteset_Map每帧更新以外
还有其他思路么?
作者: 忧雪の伤    时间: 2014-7-20 12:07
本帖最后由 taroxd 于 2014-7-20 12:21 编辑

@Window
UI> Window 君你家被我轰炸了!
  1. module EasyMessageBox
  2.   @font = Font.new
  3.   def self.font
  4.     @font
  5.   end
  6.   def self.size string
  7.     bitmap = Bitmap.new 544, 416
  8.     bitmap.font = @font
  9.     bitmap.text_size string
  10.   end
  11.   def self.open x, y, string
  12.     args = [size(string).width + 32, size(string).height + 32]
  13.     @window = Window_Base.new x, y, *args
  14.     @window.contents.draw_text @window.contents.rect, string, 1
  15.   end
  16.   def self.close
  17.     @window.dispose rescue nil
  18.   end
  19. end
复制代码

Σ( ゚д゚) UI> 于是搬出之前乱写的玩意。这个是拿 Module 控制的。思路就是利用 Bitmap#text_size 直接作出尺寸自适应的窗口。使用方法就是直接事件脚本调用 EasyMessageBox.open(x, y, string) 打开,EasyMessageBox.close 关闭。 比如按楼主要求的就是 EasyMessageBox.open(0, 0, $game_actors[1].name),刷新比较简单自行实现就好。         




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1