设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1288|回复: 2
打印 上一主题 下一主题

[已经解决] 這問這腳本要怎樣用?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
262 小时
注册时间
2009-10-13
帖子
112
跳转到指定楼层
1
发表于 2011-10-2 17:54:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #◆◇◆◇◆ 明かりスクリプトVX ver 1.05 ◇◆◇◆◇
  2. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  3. #   by みんと

  4. =begin

  5. ※ 導入場所の注意

  6. すべてモジュールで管理されていますので、
  7. マスタースクリプトより下であれば導入場所は関係ありません。

  8. ■ 更新履歴

  9. ○ ver 1.05(2009/09/13)
  10.   同じマップに移動した場合に明かりが消えるミスを修正
  11.   他サイトさんの隊列歩行に対応

  12. ○ ver 1.04(2009/08/19)
  13.   場所移動補助が正常に動作しないミスを修正

  14. ○ ver 1.03(2009/02/14)
  15.   場所移動直後に明かりがつかないミスを修正
  16.   
  17. ○ ver 1.02(2009/02/13)
  18.   1つでも明かりを解放すると
  19.   すべての明かりが消えてしまうミスを修正

  20. ○ ver 1.01(2009/02/10)
  21.   メニューを開くと明かりが消えるミスを修正

  22. ○ ver 1.00(2009/02/07)
  23.   公開

  24. ■ 説明

  25. イベントに明かりを設定出来るようにします。
  26. 明かりは画面の色調よりも全面に出るため、
  27. 明かりの範囲内は明るく表示されます。

  28. ◆ 設定方法及び仕様

  29. 設定にはイベントの内容に
  30. 「どこでもいいので」注釈を置きます。
  31. そして、注釈の内容を

  32. 明かり設定1

  33. といったように"明かり設定の後"に"半角の数字"を記入してください。
  34. 記入した数字が、明かりデータの管理IDとなります。

  35. 明かりはイベントの不透明度と同期して強さが変化します。
  36. イベントが完全に透明になれば明かりも完全に消えますので、
  37. 明かりを個別に消したい場合は、
  38. 移動ルートなどで対象イベントの不透明度を0にしてください。

  39. また、新しいページに注釈で設定されていない場合も明かりは消えます。

  40. ◆ 画像の規格

  41. 明かりに使用する画像の規格は任意です。
  42. ただし、1コマの規格は「画像の全体の横幅を4で割った値」となります。
  43. つまり、640*160ピクセルの画像の場合、
  44. 1コマの規格は160*160となります。

  45. 画像は全て左から順に 0→1→2→3→0 と4コマループします。

  46. 明かり用の画像はピクチャーフォルダにインポートしてください。

  47. =end

  48. #==============================================================================
  49. # ☆ MINTO
  50. #------------------------------------------------------------------------------
  51. #   様々なフラグを扱うメインモジュールです。
  52. #==============================================================================

  53. module MINTO
  54.   
  55.   # 明かりスクリプトVXを有効化 ( true で有効 / false で無効 )
  56.   RGSS["Light_Sprite"] = true
  57.   
  58. end

  59. # 明かりスクリプトVXが有効な場合に以降の処理を実行する
  60. if MINTO::RGSS["Light_Sprite"] == true then

  61. #==============================================================================
  62. # ☆ カスタマイズ
  63. #------------------------------------------------------------------------------
  64. #   機能のカスタマイズをここで行います。
  65. #==============================================================================

  66. module MINTO
  67.   #--------------------------------------------------------------------------
  68.   # ● 明かりのセット
  69.   #    belong_id : 明かりの管理ID
  70.   #--------------------------------------------------------------------------
  71.   def self.light_set(belong_id)
  72.     # 明かりの管理IDに応じて分岐
  73.     case belong_id
  74.     when 1 then
  75.       # data = [画像ファイル名, Y座標修正値, 大きさ(通常2。 小数点可)]
  76.       data = ["stove", 0, 6]
  77.     when 2 then
  78.       data = ["Light_Sprite02", -16, 2]
  79.     # それ以外の名前の場合
  80.     else
  81.       data = ["", 0, 1]
  82.     end
  83.     # 設定データを返す
  84.     return data.dup
  85.   end
  86. end
  87. #==============================================================================
  88. # ☆ Add_Light_Sprite
  89. #------------------------------------------------------------------------------
  90. #   Sprite_Characterクラスに機能を追加するモジュールです。
  91. #   明かりの機能を追加します。
  92. #==============================================================================

  93. module Add_Light_Sprite
  94.   #--------------------------------------------------------------------------
  95.   # ● 解放(明かり)
  96.   #--------------------------------------------------------------------------
  97.   def dispose_light
  98.     # 明かりが存在する場合
  99.     if @light_sprite != nil then
  100.       # 明かりを解放
  101.       @light_sprite.bitmap.dispose
  102.       @light_sprite.dispose
  103.       @light_sprite = nil
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 解放
  108.   #--------------------------------------------------------------------------
  109.   def dispose
  110.     # 明かりを解放
  111.     dispose_light
  112.     # 明かり可視フラグをクリア
  113.     @character.light_visible = false
  114.     # 明かり作成フラグをクリア
  115.     @character.call_light = false
  116.     # 最終ページ情報を解放
  117.     @character.dispose_data
  118.     # スーパークラスの処理に移行
  119.     super
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 明かりの設定
  123.   #    id : 明かりのID
  124.   #--------------------------------------------------------------------------
  125.   def light_set(id)
  126.     # 明かりを解放
  127.     dispose_light
  128.     # 明かりを作成
  129.     @light_sprite = Light_Sprite.new(self, id)
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● フレーム更新
  133.   #--------------------------------------------------------------------------
  134.   def update
  135.     # スーパークラスの処理に移行
  136.     super
  137.     # キャラクターが無効な場合
  138.     if @character == nil then
  139.       # メソッドを返す
  140.       return
  141.     end
  142.     # 明かりデータを取得
  143.     @character.get_light_data
  144.     # 明かり可視フラグが無効な場合
  145.     if @character.light_visible != true then
  146.       # 明かりを解放
  147.       dispose_light
  148.       # メソッドを返す
  149.       return
  150.     end
  151.     # 明かり作成フラグが有効な場合
  152.     if @character.call_light == true then
  153.       # 明かり作成フラグをオフにする
  154.       @character.call_light = false
  155.       # 明かりを作成
  156.       light_set(@character.light_id)
  157.     end
  158.     # 明かりが無効な場合
  159.     if @light_sprite == nil then
  160.       # メソッドを返す
  161.       return
  162.     end
  163.     # 明かりを更新
  164.     @light_sprite.update
  165.   end
  166. end
  167. #==============================================================================
  168. # ☆ Add_Game_Event_Light
  169. #------------------------------------------------------------------------------
  170. #   Game_Eventクラスに機能を追加するモジュールです。
  171. #   明かりの機能を追加します。
  172. #==============================================================================

  173. module Add_Game_Event_Light
  174.   #--------------------------------------------------------------------------
  175.   # ● オブジェクト初期化
  176.   #--------------------------------------------------------------------------
  177.   def initialize
  178.     # スーパークラスの処理に移行
  179.     super
  180.     @last_page_light = {}
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● データのリセット
  184.   #--------------------------------------------------------------------------
  185.   def self.reset
  186.     @last_page_light = {}
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● データ解放
  190.   #--------------------------------------------------------------------------
  191.   def dispose_data
  192.     # 無効なデータの場合
  193.     if @last_page_light == nil then
  194.       # データを初期化
  195.       @last_page_light = {}
  196.       # メソッドを返す
  197.       return
  198.     end
  199.     # 自身のデータをクリア
  200.     @last_page_light[self] = nil
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 拡張データの取得
  204.   #--------------------------------------------------------------------------
  205.   def get_light_data
  206.     # 無効なデータの場合
  207.     if @last_page_light == nil then
  208.       # データを初期化
  209.       @last_page_light = {}
  210.     end
  211.     # イベントページが更新されていない場合
  212.     if @last_page_light[self] == @page then
  213.       # データ未定義の場合
  214.       if self.light_visible == nil then
  215.         # 自身のデータをクリア
  216.         @last_page_light[self] = nil
  217.       end
  218.       # メソッドを返す
  219.       return
  220.     end
  221.     # 明かり可視フラグをクリア
  222.     self.light_visible = false
  223.     # 明かり作成フラグをクリア
  224.     self.call_light = false
  225.     # 最新のイベントページを記憶
  226.     @last_page_light[self] = @page
  227.     # イベントページが有効な場合
  228.     if @page != nil then
  229.       # イベントページに内容が存在する場合
  230.       if @page.list != nil then
  231.         # ループ処理(ページ内容)
  232.         ([email protected]).each do |i|
  233.           # 注釈の場合
  234.           if @page.list[i].code == 108 or @page.list[i].code == 408 then
  235.             # 注釈内ループ処理
  236.             ([email protected][i].parameters.size).each do |id|
  237.               # 注釈のコードを取得
  238.               code = @page.list[i].parameters[id].dup
  239.               # 明かりのIDを取得
  240.               light_id = code.dup.split(/\明かり設定/)[1].to_i
  241.               # 明かりのIDが有効な場合
  242.               if light_id >= 1 then
  243.                 # 明かりIDを記憶
  244.                 self.light_id = light_id
  245.                 # 明かり可視フラグをオンにする
  246.                 self.light_visible = true
  247.                 # 明かりを作成フラグをオンにする
  248.                 self.call_light = true
  249.                 # メソッドを返す
  250.                 return
  251.               end
  252.             end
  253.           end
  254.         end
  255.       end
  256.     end
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● フレーム更新
  260.   #--------------------------------------------------------------------------
  261.   def update
  262.     # スーパークラスの処理に移行
  263.     super
  264.   end
  265. end
  266. #==============================================================================
  267. # ■ Light_Sprite
  268. #------------------------------------------------------------------------------
  269. #    マップでの明かりを管理するスプライトクラスです。
  270. #==============================================================================

  271. class Light_Sprite < Sprite
  272.   #--------------------------------------------------------------------------
  273.   # ● 公開インスタンス変数
  274.   #--------------------------------------------------------------------------
  275.   attr_accessor :name                     # 明かりに使う画像
  276.   #--------------------------------------------------------------------------
  277.   # ● オブジェクト初期化
  278.   #    character  : 対象キャラクター
  279.   #    event_name : イベントの名前
  280.   #--------------------------------------------------------------------------
  281.   def initialize(character, event_name)
  282.     # スーパークラスを実行
  283.     super()
  284.     # 明かりのデータを取得
  285.     @data = MINTO.light_set(event_name)
  286.     # ファイルネームを読み込む
  287.     @name = @data[0].dup
  288.     # スプライトを保存
  289.     @character = character
  290.     # 明かり用のビットマップを作成
  291.     self.bitmap = Cache.picture(@name).dup
  292.     @width = self.bitmap.width / 4
  293.     @height = self.bitmap.height
  294.     # 基本座標をセット
  295.     self.x = @character.x
  296.     self.y = @character.y
  297.     self.z = 999
  298.     # 転移座標をセット
  299.     self.ox = @width / 2
  300.     self.oy = @height / 2
  301.     # 透明でない限りは明かりを表示させる
  302.     self.visible = (@character.opacity != 0)
  303.     # 明かりの不透明度を設定
  304.     self.opacity = (@character.opacity / 2) + 32
  305.     # 明かりを加算表示にする
  306.     self.blend_type = 1
  307.     # 明かりをズームさせる
  308.     self.zoom = @data[2]
  309.     # ブリンクカウントを初期化
  310.     @blink_count = 0
  311.     # フレーム更新
  312.     update
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● データのセット
  316.   #    name : 設定データの名前
  317.   #--------------------------------------------------------------------------
  318.   def set_data(name)
  319.     # 設定データを更新
  320.     @data = MINTO.light_set(name)
  321.     # 明かり用のビットマップを再作成
  322.     self.bitmap = Cache.picture(@data[0]).dup
  323.     self.oy = @data[1]
  324.     self.zoom = @data[2]
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● ズーム
  328.   #    n : ズーム倍率
  329.   #--------------------------------------------------------------------------
  330.   def zoom=(n)
  331.     self.zoom_x = n
  332.     self.zoom_y = n
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 解放
  336.   #--------------------------------------------------------------------------
  337.   def dispose
  338.     # スーパークラスを実行
  339.     super
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● フレーム更新
  343.   #--------------------------------------------------------------------------
  344.   def update
  345.     super
  346.     # 基本情報を更新
  347.     self.x = @character.character.screen_x
  348.     self.y = @character.character.screen_y + @data[1]
  349.     # 透明でない限りは明かりを表示させる
  350.     self.visible = (@character.character.opacity != 0)
  351.     # 明かりの不透明度を設定
  352.     self.opacity = (@character.character.opacity / 2) + 32
  353.     # 点滅カウントを更新
  354.     @blink_count = (@blink_count + 1) % 48
  355.     # 転送元の矩形を設定
  356.     case @blink_count
  357.     when 0...12 then
  358.       self.src_rect.set(@width * 0, 0, @width, @height)
  359.     when 12...24 then
  360.       self.src_rect.set(@width * 1, 0, @width, @height)
  361.     when 24...36 then
  362.       self.src_rect.set(@width * 2, 0, @width, @height)
  363.     else
  364.       self.src_rect.set(@width * 3, 0, @width, @height)
  365.     end
  366.   end
  367. end
  368. #==============================================================================
  369. # ■ Game_Event
  370. #------------------------------------------------------------------------------
  371. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  372. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  373. #==============================================================================

  374. class Game_Event < Game_Character
  375.   #--------------------------------------------------------------------------
  376.   # ● システムインクルード
  377.   #--------------------------------------------------------------------------
  378.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  379.   #--------------------------------------------------------------------------
  380.   # ● 公開インスタンス変数
  381.   #--------------------------------------------------------------------------
  382.   attr_reader   :event                    # イベント
  383.   attr_accessor :light_id                 # 明かりのID
  384.   attr_accessor :light_visible            # 明かり可視フラグ
  385.   attr_accessor :call_light               # 明かり実行フラグ
  386. end
  387. #==============================================================================
  388. # ■ Game_Vehicle
  389. #------------------------------------------------------------------------------
  390. #  乗り物を扱うクラスです。このクラスは Game_Map クラスの内部で使用されます。
  391. # 現在のマップに乗り物がないときは、マップ座標 (-1,-1) に設定されます。
  392. #==============================================================================

  393. class Game_Vehicle < Game_Character
  394.   #--------------------------------------------------------------------------
  395.   # ● システムインクルード
  396.   #--------------------------------------------------------------------------
  397.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  398.   #--------------------------------------------------------------------------
  399.   # ● 公開インスタンス変数
  400.   #--------------------------------------------------------------------------
  401.   attr_reader   :event                    # イベント
  402.   attr_accessor :light_id                 # 明かりのID
  403.   attr_accessor :light_visible            # 明かり可視フラグ
  404.   attr_accessor :call_light               # 明かり実行フラグ
  405. end
  406. #==============================================================================
  407. # ■ Game_Player
  408. #------------------------------------------------------------------------------
  409. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  410. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  411. #==============================================================================

  412. class Game_Player < Game_Character
  413.   #--------------------------------------------------------------------------
  414.   # ● システムインクルード
  415.   #--------------------------------------------------------------------------
  416.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  417.   #--------------------------------------------------------------------------
  418.   # ● 公開インスタンス変数
  419.   #--------------------------------------------------------------------------
  420.   attr_reader   :event                    # イベント
  421.   attr_accessor :light_id                 # 明かりのID
  422.   attr_accessor :light_visible            # 明かり可視フラグ
  423.   attr_accessor :call_light               # 明かり実行フラグ
  424. end
  425. #==============================================================================
  426. # ■ Game_Subplayer
  427. #------------------------------------------------------------------------------
  428. #  サブプレイヤーを扱うクラスです。
  429. # このクラスのインスタンスは $game_subplayer1~3で参照されます。
  430. # Game_Playerクラスを元に作っています
  431. #==============================================================================

  432. class Game_Subplayer < Game_Character
  433.   #--------------------------------------------------------------------------
  434.   # ● システムインクルード
  435.   #--------------------------------------------------------------------------
  436.   include(Add_Game_Event_Light)           # 明かり管理モジュール
  437.   #--------------------------------------------------------------------------
  438.   # ● 公開インスタンス変数
  439.   #--------------------------------------------------------------------------
  440.   attr_reader   :event                    # イベント
  441.   attr_accessor :light_id                 # 明かりのID
  442.   attr_accessor :light_visible            # 明かり可視フラグ
  443.   attr_accessor :call_light               # 明かり実行フラグ
  444. end
  445. #==============================================================================
  446. # ■ Game_Interpreter
  447. #------------------------------------------------------------------------------
  448. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  449. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  450. #==============================================================================

  451. class Game_Interpreter
  452.   #--------------------------------------------------------------------------
  453.   # ● 場所移動
  454.   #--------------------------------------------------------------------------
  455.   alias :command_201_Light_Sprite :command_201
  456.   def command_201
  457.     # 元の処理を実行
  458.     bool = command_201_Light_Sprite
  459.     # 明かりのデータを初期化
  460.     Add_Game_Event_Light.reset
  461.     # フラグを返す
  462.     return bool
  463.   end
  464. end
  465. #==============================================================================
  466. # ■ Sprite_Character
  467. #------------------------------------------------------------------------------
  468. #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
  469. # 監視し、スプライトの状態を自動的に変化させます。
  470. #==============================================================================

  471. class Sprite_Character < Sprite_Base
  472.   #--------------------------------------------------------------------------
  473.   # ● システムインクルード
  474.   #--------------------------------------------------------------------------
  475.   include(Add_Light_Sprite)               # 明かりモジュール
  476. end

  477. end
复制代码
希望有人解答一下
因為我用的時候   RGSS["Light_Sprite"] = true 這行已經出現錯誤...

点评

标题 - -  发表于 2011-10-2 18:30

评分

参与人数 1星屑 -10 收起 理由
Kimu -10 标题

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1165
在线时间
274 小时
注册时间
2011-7-24
帖子
272
2
发表于 2011-10-2 19:08:58 | 只看该作者
灯光脚本的话?.......应该是事件注释..加注释
  1. 明かり設定 X
复制代码
x就是你脚本里MINTO模块里定义的
  1. when 1 then
  2.       # data = [画像ファイル名, Y座標修正値, 大きさ(通常2。 小数点可)]
  3.       data = ["stove", 0, 6]#""里的文件是在Pictures文件夹里的
  4.     when 2 then
  5.       data = ["Light_Sprite02", -16, 2]
  6.     # それ以外の名前の場合
  7.     else
  8.       data = ["", 0, 1]
  9.     end
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
262 小时
注册时间
2009-10-13
帖子
112
3
 楼主| 发表于 2011-10-3 00:27:14 | 只看该作者
本帖最后由 我為了下載 于 2011-10-3 00:29 编辑
昔日辉煌灬 发表于 2011-10-2 19:08
灯光脚本的话?.......应该是事件注释..加注释x就是你脚本里MINTO模块里定义的


按錯鍵...刪了訊息:L
如果把錯誤的刪掉不會出錯嗎? :funk:
另外我發現那個網站 好幾個腳本用起來都是錯誤...
但他是分享狀態....因為都是日文...不知道會不會是別的問題導致腳本出錯?

点评

反正我只这样干的...  发表于 2011-10-3 11:59
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-9 02:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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