幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 12518|回复: 10

RGSS字體陰影class模組

[复制链接]

1

主题

5

帖子

101

积分

③业余

积分
101
发表于 2004-8-26 02:21:39 | 显示全部楼层 |阅读模式
請問這個該如何應用到遊戲上面呢?

以下是我從網路找來的

#==============================================================================
# ■ Kazamit_FontFilter
#------------------------------------------------------------------------------
#  風見鳥オリジナル。フォントに影つけする関数。(戦闘ダメージ値方式)
#==============================================================================
class FFilter
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#
#文字影つけフィルター
#★引数に与えたbmp領域に対応した文字を描画します
#★影は事前にカラー生成が必要
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
def self.kage(bmp,x,y,width,height,mozistr,yose,kagecolor,dx,dy)
#引数(BMP領域,位置XY,サイズ,文字列,寄せ,影色,X方向ズレ,Y方向ズレ)
#本文字カラーを一時格納
honcolor = Color.new(bmp.font.color.red,bmp.font.color.green,bmp.font.color.blue)
bmp.font.color= kagecolor#影文字
bmp.draw_text(x+dx,y+dy,width,height,mozistr,yose)#影文字ずらし
bmp.font.color = honcolor#本文字
bmp.draw_text(x,y,width,height,mozistr,yose)#本文字描画
end
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#
#文字囲みフィルター
#★引数に与えたbmp領域に対応した文字を描画します
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
def self.kakomi(bmp,x,y,width,height,mozistr,yose,kagecolor,dx,dy)
#引数(BMP領域,位置XY,サイズ,文字列,寄せ,影色,X方向ズレ量,Y方向ズレ量)
#本文字カラーを一時格納
honcolor = Color.new(bmp.font.color.red,bmp.font.color.green,bmp.font.color.blue)
bmp.font.color= kagecolor#かこみ文字
bmp.draw_text(x,y+dy,width,height,mozistr,yose)#上
bmp.draw_text(x+dx,y,width,height,mozistr,yose)#右
bmp.draw_text(x,y-dy,width,height,mozistr,yose)#下
bmp.draw_text(x-dx,y,width,height,mozistr,yose)#左
bmp.font.color= honcolor#本文字
bmp.draw_text(x,y,width,height,mozistr,yose)#本文字描画
end
end



執行畫面

http://kmf.s3.xrea.com/7.png


http://kmf.s3.xrea.com/5.png

[此贴子已经被作者于2004-8-26 2:36:35编辑过]
回复

使用道具 举报

1

主题

5

帖子

101

积分

③业余

积分
101
 楼主| 发表于 2004-8-26 02:58:42 | 显示全部楼层
還有一個文件
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
#Bitmapクラスにフォント描画の追加メソッドを与える。
#作:風見鳥 http://kazamit.com/
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL  
class Bitmap
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL  
#文字影つけフィルター
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

def kage(x,y,width,height,mozistr,yose,kagecolor,dx,dy)
#引数(位置XY,サイズ,文字列,寄せ,影色,X方向ズレ,Y方向ズレ)
#本文字カラーを一時格納
honcolor = Color.new(self.font.color.red,self.font.color.green,self.font.color.blue,self.font.color.alpha)
    self.font.color= kagecolor#影文字
    self.draw_text(x+dx,y+dy,width,height,mozistr,yose)#影文字ずらし
    self.font.color = honcolor#本文字
    self.draw_text(x,y,width,height,mozistr,yose)#本文字描画
end

def kage_rect(rect,mozistr,yose,kagecolor,dx,dy)
#引数(Rect,文字列,寄せ,影色,X方向ズレ,Y方向ズレ)
#本文字カラーを一時格納
honcolor = Color.new(self.font.color.red,self.font.color.green,self.font.color.blue,self.font.color.alpha)
    self.font.color= kagecolor#影文字
    self.draw_text(rect.x+dx,rect.y+dy,rect.width,rect.height,mozistr,yose)#影文字ずらし
    self.font.color = honcolor#本文字
    self.draw_text(rect,mozistr,yose)#本文字描画
end

#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL  
#文字囲みフィルター ノーマルとRect用
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
def kakomi(x,y,width,height,mozistr,yose,kagecolor,dx,dy)
#引数(位置XY,サイズ,文字列,寄せ,影色,X方向ズレ量,Y方向ズレ量)
#本文字カラーを一時格納
honcolor = Color.new(self.font.color.red,self.font.color.green,self.font.color.blue,self.font.color.alpha)
    self.font.color= kagecolor#かこみ文字
    self.draw_text(x,y+dy,width,height,mozistr,yose)#上
    self.draw_text(x+dx,y,width,height,mozistr,yose)#右
    self.draw_text(x,y-dy,width,height,mozistr,yose)#下
    self.draw_text(x-dx,y,width,height,mozistr,yose)#左
    self.font.color= honcolor#本文字
    self.draw_text(x,y,width,height,mozistr,yose)#本文字描画
end

def kakomi_rect(rect,mozistr,yose,kagecolor,dx,dy)
#引数(Rect,文字列,寄せ,影色,X方向ズレ量,Y方向ズレ量)
honcolor = Color.new(self.font.color.red,self.font.color.green,self.font.color.blue,self.font.color.alpha)
    self.font.color= kagecolor#かこみ文字
    self.draw_text(rect.x,rect.y+dy,rect.width,rect.height,mozistr,yose)#上
    self.draw_text(rect.x+dx,rect.y,rect.width,rect.height,mozistr,yose)#右
    self.draw_text(rect.x,rect.y-dy,rect.width,rect.height,mozistr,yose)#下
    self.draw_text(rect.x-dx,rect.y,rect.width,rect.height,mozistr,yose)#左
    self.font.color= honcolor#本文字
    self.draw_text(rect,mozistr,yose)#本文字描画   
end

#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL  
#フォントをリセットするだけの関数(名、サイズ、斜体、太字、カラー)
#LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
def fontreset
      self.font.name = Font.default_name
      self.font.size = Font.default_size
      self.font.italic = Font.default_italic
      self.font.bold = Font.default_bold
      self.font.color = Font.default_color
end

end
回复 支持 反对

使用道具 举报

19

主题

271

帖子

3837

积分

⑥精研

爱的橙子雪糕

积分
3837
发表于 2004-8-26 03:15:27 | 显示全部楼层
好东西~~
回复 支持 反对

使用道具 举报

1

主题

5

帖子

101

积分

③业余

积分
101
 楼主| 发表于 2004-8-26 03:24:02 | 显示全部楼层
請問一下 該如何使用在遊戲上面呢?

我不太懂..

有了這個CLASS 但卻無法應用....><
回复 支持 反对

使用道具 举报

19

主题

271

帖子

3837

积分

⑥精研

爱的橙子雪糕

积分
3837
发表于 2004-8-26 15:29:30 | 显示全部楼层
这些是函数定义~~
按 F11 新建一个脚本单元~~然后复制进去~~
以后就可以在 公共事件 等可以用 脚本 的地方调用这些函数~~事件 中的最后都有个 脚本 选项~~
比如 kage(x,y,width,height,mozistr,yose,kagecolor,dx,dy) 这个函数~~
回复 支持 反对

使用道具 举报

1

主题

20

帖子

508

积分

⑤进阶

积分
508
发表于 2004-8-26 18:24:11 | 显示全部楼层
看了下,非常好,收藏先!
回复 支持 反对

使用道具 举报

1

主题

5

帖子

101

积分

③业余

积分
101
 楼主| 发表于 2004-8-26 19:57:24 | 显示全部楼层
我知道那個腳本,只是我不會寫指令

但是問題是

kage(x,y,width,height,mozistr,yose,kagecolor,dx,dy)

我不會使用..

假如要把訊息文字弄陰影

那麼可以舉一個範例麼

kagecolor 要怎麼寫才好

可以請大家幫幫忙寫一個範例嗎><

無論怎麼寫都會發生錯誤
回复 支持 反对

使用道具 举报

1

主题

5

帖子

101

积分

③业余

积分
101
 楼主| 发表于 2004-8-27 00:14:38 | 显示全部楼层
日本作者已經給我答覆了!

RPGXPスクリプトついて 投稿者:M. 投稿日:2004/08/26(Thu) 17:09 No.2272  


始めました.Mと申します
ブログのRPGXP(RGSS)
文字フィルタのスクリプト使用方法わかりませんでした。
どんな使うですか?
教えていただきたいと思います^^
助けてください!!



風見鳥 > はいこんばんは。大変失礼しました。
日記のスクリプトは覚書程度に書いたものであり、
相当解説足らずな部分がありました。
この場を借りて使い方を記します。
(上に扱いやすい簡易版をUPしました)

スクリプトの構造については簡単に書いておくに留めたいと思います。
class Bitmap
というのはBitmapというクラス(構造の集まり)を示しています。
Bitmapというクラスはデフォルトのスクリプトリストには
記されていませんが、Sprite等の画像表示系列の命令の
一段階上(親)のクラスです。細かい定義はツクールXPのDLLの内部で
行われているようなので、リストには顔を出していませんが、
詳しいことはヘルプで検索して下さい。
日記のスクリプトでは、kage,kage_rect,kakomi,kakomi_rect,fontreset
という5種類のメソッド(命令)を定義しています。

◆使い方
まず、ツクールXPのスクリプト項目で挿入(I)を用いて新しく
つくった項目の空白欄に、日記のスクリプトを全部コピーしてください。
項目の場所は、どこでも構いませんが、性質上新しく作った項目は
Scene_DebugとMainの間に入れていくのが筋のようです。
(同じものが二回定義されたとき、後のほうが先のものを上書きするため)
項目名はフォントフィルターとか適当な名前を付けて置いてください。

下準備はこれでおしまいで、あとはメインの文字表示スクリプトを
書き換えることでフィルターを使用することが出来ます。

例としてWindow_Message項目(class Window_Message < Window_Selectable)
の144行目
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
を使います。
これは文章ウィンドウのあらゆる文字を描くメソッドです。
ここを変えると直ちに会話文の文字に変化が見られます。

このスクリプトの意味は、
self:このクラス(メソッド)を呼び出した呼び出しもとのウィンドウ の
.contents:ウィンドウ内容として
.draw_text:テキストを表示する。
()内の指定引数は、ヘルプのBitmapのdraw_textメソッドを見ていただくと
書いてありますが、
4+x:文字描画領域のX(横)の始点(X座標)
32*y:文字描画領域のY(縦)の始点(Y座標)
40:文字描画領域の横のサイズ(幅)
32:文字描画領域の縦のサイズ(高さ)
c:描画する文字列データ
となっています。この他にもう一つalign用の引数をつけてもつけなくても
いいことになっています。

さてここを以下のように書き換えるだけでフォントフィルターは機能します。
self.contents.kage(4 + x, 32 * y, 40, 32, c, 0, Color.new(0,0,0,200),1,1)

kageというのはdraw_textと同じ扱いの”影付き文字を描く”メソッドです。
最初に追加したclass Bitmapで定義されています。
()内の引数が増えることに注意してください。
cまでは上の解説とまったく同じですがそのあとに4つ増えます。

0:文字の寄せ方です。draw_textでは省略可能ですが、誤作動防止のために
 kageメソッドでは省略不可能にしてあります。0はdraw_textで省略するの
 と同じ意味、0=左寄せ を示します(デフォルト)。1にした場合、3つ前
 で指定した領域中の中央に寄せられます。幅40のところに幅20の文字を
 描画するとき、10右にずれて表示されるわけです。2にした場合、左寄せ
 になります。所持金を左につめて桁表示させたいときなどに使うでしょう。

Color.new(0,0,0,200)
ちょっと使ってみようかなと言う人はこの引数部分で詰まったかもしれません。
ここには影のカラーの引数を指定します。が、単に0,0,0とか入れても
うまくいきません。カラーの引数は、今の場合、”4つもしくは3つの数字の
セット”という一つの引数と定義してやらねばなりません。
たかが数字だけとはいえ、カラーという一つのオブジェクト(画像とかと同じ)
扱いになるからです。ここにはカラーという1セットの引数を指定します。
詳しくはヘルプのColorを参照してください。
引数には影になる色の(赤度,緑度,青度,不透明度)を指定します。
影ということで0,0,0の黒、不透明度は200でちょっと透けるくらいにしてあります。
薄い影とか青い影とかの効果をつけることもあるかなと思ってつけました

1(最後の一個前の):これは影が上の本文字より下に何ピクセルずれるか
を示しています。文章などの文字では1か2が妥当かと思います。
あまり離れすぎると変に読みにくくなりますがタイトルロゴなどでは
使えそうです。

1(最後の):同様に、影が上の本文字より右に何ピクセルずれるかを示して
います。左にずらしたいときはマイナス値を指定してください。

「私は黒い影しか使わない!いちいち指定が面倒!ずれも1pxだけでいい!」
という人は先ほど貼り付け定義した定義もとのスクリプトのdef部分で
def kage(x,y,width,height,mozistr,yose,kagecolor,dx,dy)

def kage(x,y,width,height,mozistr,yose=0,kagecolor=Color.new(0,0,0,200),dx=1,dy=1)
などとしてください。
この状態ならば、
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)

self.contents.kage(4 + x, 32 * y, 40, 32, c)
に書き換えるだけでフィルタが実現できます。ただし、この部分だけは
影をずらしたかったのに・・・というときなどは各自で対応してください。

他のフィルタもヘルプを参考にしつつ同様の使い方でいけると思います。
文字表示の部分は、せいぜい数十箇所ですので(多分)多少面倒な書き換えでも
力技でなんとかなるかと思っています。

私もRGSSについてあまりよく分かっていませんが、わかる限りの範囲で
解説を入れました。また何かあったらご連絡ください。
超長文失礼。
(8/26-21:47) No.2273
M. > 本当ありがどうございます。
途中に換える他のフィルタ
どうするの?
スクリプトで
「self.contents.kage(4 + x, 32 * y, 40, 32, c, 0, Color.new(0,0,0,200),1,1)」
エラーになります。>_< (8/26-22:59) No.2276
風見鳥 > できれば何というエラーか書き込んでいただくと助かります。
★考えられる対策
undefined method \'kage\' for ...
→kageメソッドがきちんと定義されていません。
全てのフォントフィルターのスクリプトを、新しいスクリプト項目にコピーしましたか?
http://kazamit.com/sankou.gif
参考画面

スクリプト\'~~\'の**行目でSyntaxError
**行目かその付近の記述が間違っています


(8/26-23:25) No.2277
M. > コピーしました。^^
でも,途中に他のフォントフィルタ換えるできません。^^\" (8/26-23:28) No.2278
風見鳥 > 文章ウィンドウにおいて、文章の途中から他のフィルタに変えるには少し技術が必要です。
文字cは一文字を示しており、実際は何文字もの文字列を1文字ずつ代入して文章を作っています。
例えば、Window_Messageの133行目 yに1を加算
y += 1
x = 0
のYが何行目かを示しています。
1行目だけ囲み文字で、2行目以降影文字にしたい場合、文字の描画部分を条件分岐で
if y==0
self.contents.kakomi(4 + x, 32 * y, 40, 32, c, 0, Color.new(0,0,0,200),1,1)
else
self.contents.kage(4 + x, 32 * y, 40, 32, c, 0, Color.new(0,0,0,200),1,1)
end
とする必要があります。(y==0ならば1行目)
これ以上さらに細かいことをしたい場合は、
ヘルプやサンプルの条件分岐等を参考にしてみてください。
返信には多すぎて書ききれません。

単に、タイトル文字は囲みで、メニュー文字は影、などにしたい場合も
上のように条件分岐をするなどして挑戦してみたください。

難しいですがヘルプと巷で配布されているサンプル等々を参考にして頑張ってみてください。 (8/26-23:42) No.2280


看的懂日文的人就讀一下吧

我已經成功囉^O^
回复 支持 反对

使用道具 举报

16

主题

289

帖子

4162

积分

⑥精研

~鼻涕牛牛~

积分
4162
QQ
发表于 2004-8-27 08:03:44 | 显示全部楼层
偶不懂......不过这里怎么回帖要验证的??
哎哟——是蜗牛壳壳拉~~~
回复 支持 反对

使用道具 举报

135

主题

926

帖子

441

积分

管理员

少女人形

Rank: 9Rank: 9Rank: 9

积分
441
发表于 2004-8-27 10:47:36 | 显示全部楼层
很简单,只要新建一个class,然后把脚本粘贴进去

然后在需要的地方修改draw_text为需要的效果就行了

例如要对话内容出现阴影文字的话,只要去到Window_Base的144行

把draw_text改为kage就行了

[此贴子已经被作者于2004-8-27 10:48:58编辑过]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-19 01:06 , Processed in 0.023405 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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