忍者ブログ
RPG製作情報など
[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

スクリプトを作る場合、『変数』を指定するのだが、
その名前付けには、注意が必要だなぁと実感。

デフォルトのスクリプトに、全く依存しない場合は良いのだが、
例えば、class Window_Base < Window みたいなデフォルトのスクリプトに
@hensuuみたく適当に変数名を付けたとする。

その後、class Window_Gold < Window_Base で、
また@hensuuと言う名前の変数を指定した場合、Window_Baseの@hensuu と
Window_Gold の@hensuuは、同じ変数として扱われると言うこと。
※Window_Baseは、スーパークラスなので、Window_Goldから参照される(ヘルプ見てね)

当然と言えば、当然のことだが(笑)
本来は、別の用途で@hensuu変数を “指定したつもり” になっているのが落とし穴。

moduleをincludeしたり、aliasで割り込みしたりすると、起こりやすいミス! ←hideだけ?
とりあえず、何が言いたいかといえば、hideは、@old_indexと言う、
安易な名前を付けたため、バグの原因が分からず、悪戦苦闘したというオチ。
----------------------------------------------------------------------------------------------
今回は、スクリプト07/08/22記事『Cursor_Icon3』を更新したよ!って話し。
■更新内容
・・・使用する変数名をカブらない、名前に変更。

ついでに、06/10/19記事 『Cursor_Icon2』も更新。
■更新内容
・・・使用する変数名をカブらない、名前に変更。
・・・カスタマイズ項目を追加。
・・・カーソル停止時にカーソル色が暗くなる機能を追加。

さらに、06/10/22記事 『Scroll_Bar』も更新。
■更新内容
・・・↓公開変数にして、外部操作可能に変更。
bar_min      ・・・ 一番薄い状態(透明度0~255)
bar_max      ・・・ 一番濃い状態(透明度0~255)
bar_speed  ・・・変化する速さ(0=点滅なし 大=速い 小=遅い)
bar_stop     ・・・点滅の停止状態の透明度(カーソル選択済み)
PR
06/10/22記事で『スクロールバー追加』スクリプトを公開したのだが、
今回は、久し振りに、更新したよ!って話し。

ウィンドウに make_scroll_bar で、スクロールバーを追加するのだが、
そこに、使用する画像、表示するX座標に±する値、Y座標に±する値、
スクロールバーの背景[ON/OFF]機能を追加してみた。

  #--------------------------------------------------------------------------
  # ■ スクロールバーを作成
  #     graphic      : スクロールバー画像を指定
  #     cx           : スクロールバーX座標の補正値(+-)
  #     cy           : スクロールバーY座標の補正値(+-)
  #     back_bar     : スクロールバーの背景描画フラグ
  #--------------------------------------------------------------------------
  def make_scroll_bar(graphic = "scroll_bar",cx = 0,cy = 0,back_bar = true)

これで、ウィンドウごとに画像や、表示位置を設定できるようになったのだ。
※def make_scroll_bar ←()内は省略した場合、デフォルト(以前バージョンと同じ)。
--------------------------------------------------------------------------
■追記
Window_digits_number』もvol.2.30に更新!
・・・数値の可視/不可視フラグを追加。
XXX.visible  = true
↑デフォルトウィンドウと同様に、.visible = true ならば、可視化。
.visible = false ならば、不可視可となる。
最近、RPGで使用できる『ミニゲーム』のスクリプトに力を入れている。
既に『スロットマシーン』、『ポーカー』を作ったのだが、
これらのスクリプトには、07/07/16記事の『Window_digits_number』が不可欠だ!

hide的に、このスクリプトは、かなりイイ感じに仕上がったと自画自賛(笑)
ということで? 回転数値機構『Window_digits_number』をvol.2.20に更新したよ!って話し。
とりあえず、バグと機能の拡張をしてみた。

■バグ修正内容
Ⅰ・・・囲み文字の縁取りが一部表示されないのを修正。
※盲点、それは数値の4は他の数値より幅が1ピクセル大きい。
ゆえに、左側の縁取りが欠けてしまうのだ。
-----------------------------------------------------------------------------------------
ツクールXPは、重いと言われるが、原因の1つは、.draw_textの処理に時間がかかるから。
囲み文字の場合、あらかじめ黒(縁色)文字を右上、右下、左上、左下の4方向に、
1ピクセルずらして描画した後、真中に白(通常色)文字を描画する。
合計5回の.draw_textを行なっている事になり、単純に5倍の負荷がかかる計算だ。

ということは、.draw_textの回数を減らせば良い訳なので、
↓こんな方法を試みてみた。 ←(既出かもしれなケド)

①・・・適当なBitmapをつくる。
pic = Bitmap.new(bw,bh)

②・・・①のBitmap(pic)に黒文字を.draw_textで描画
pic.font.color = 黒
pic.draw_text(0,0,w,h,文字,align)

③・・・描画したいBitmap(XXX)に②のBitmap(pic)を.bltで描画(4方向に)
XXX.blt(1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(1,1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,1,pic,Rect.new(0,0,bw,bh))

④・・・描画したいBitmap(XXX)に白文字を.draw_textで描画
XXX.font.color = 白
XXX.draw_text(0,0,w,h,文字,align)

コレで、.draw_text5回を、.draw_text2回に減らすことができた。
その代わり、.bltの処理が、4回に増えたのだが、
この.bltの処理はかなり軽い処理(時間がかからない)なので問題ないハズ...
-----------------------------------------------------------------------------------------
Ⅱ・・・文字サイズを32以上に指定した場合、一部表示されないのを修正。
フォントのサイズで指定できる最大値は、96かな?
フォント名によっては変わるかも...

■拡張機能と仕様変更
Ⅰ・・・XYZ座標を外部操作可能に変更
.x  = n ←デフォルトウィンドウと同様に.xに数値を指定すれば、X座標を変更できる。
※.y .z も同様に

Ⅱ・・・.move で、回転中であるかどうかを返す(true/false)

Ⅲ・・・valueに数値以外を指定した場合、エラーを吐かず、非表示に変更。
.update(value,se)を.update(value,type,se)に変更。
.refresh(value)を.refresh(value,type)に変更。

value=更新する数値、type=更新する数値の色、se=回転中に演奏するSE
--------------------------------------------------------------------------------
Ⅳ・・・class Copy_Font にcolorsを追加(高速文字色変更)
.update(value,type,se) ←高速回転数値描画
.refresh(value,type) ←高速数値描画

※typeは、ウィンドウ作成時に指定する↓fontsにcolorsを指定した場合のみの設定で、
色情報の配列で指定する。

fonts = Copy_Font.new(size,bold ,italic,shadow,round ,name,color ,s_color ,interval,colors)
fonts.colors = [Color.new(255,0,0,255),Color.new(255,255,0,255)]
※colors = [赤,黄]
XXX = Window_digits_number.new(x,y,z,value,max,min,fonts)

.refresh(value,type) type=0の場合、cororで指定した色(初期色)となり、
type=1 ならばcolors[0]の赤色、type=2 ならばcolors[1]の黄色に変化する。

※使用する場面で思いつくのは、
装備画面で、新しい装備品を選んでいる(カーソル移動中)に
ステータスUPなら赤文字、DOWNならば、青文字など。

バトルのHP、SPの回転描画で、HP=0 ならば、赤文字、瀕死(HP1/4)ならば黄色など。
07/07/27記事で、『ポーカー』を公開したのだが、
早速、更新したよ!って話し。

一応、27日公開の『vol.1.00』を『vol.2.00』に差し換えているのだが、
新バージョン → 『Poker_Game vol.2.00』を公開ってこと。

※旧バージョン『Poker Game vol.1.00
※仕様変更の為↑バージョンは、使用不可。07/09/12記事を参照してね。
-------------------------------------------------------------------------------------
■変更箇所
・・・ポーカーの演出に変化は無し(ゲーム自体には)
・・・カードのめくりアニメを軽量化し、動作を軽減。
※ボタン連打しても軽いハズ。
-------------------------------------------------------------------------------------
bltでカード画像の再描画(アニメ)を行なっていたので、
それを、Viewportのoy移動に変更してみた。

あらかじめ、アニメパターンを全て描画しているので、
アニメーションの処理は軽量化できたと思う。
その分、『ポーカー』の呼び出し時間が長くなったかな?

とりあえず、現在製作中の『神経衰弱』の仕様に合わせてみた。
カードを20枚以上、アニメさせるには、『vol.1.00』の仕様ではキツイので。

※『神経衰弱』 ←ド○クエのラ○キーパネルって知ってる?
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
最新コメント
[08/04 Faust]
[05/26 takku]
[11/12 ぱんだ]
[06/28 AntwerpBlue]
[06/28 AntwerpBlue]
[02/07 ジャリン]
[02/07 ジャリン]
[02/05 白豆]
[11/28 I・S]
[11/26 I・S]
プロフィール
管理人
hide
ホームページ
ブログ内検索
カウンター
忍者アナライズ
忍者ブログ [PR]