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

Project1

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

[已经解决] 如何调整角色位置

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
3 小时
注册时间
2012-5-4
帖子
284
跳转到指定楼层
1
发表于 2012-6-22 17:38:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 ROMB板 于 2012-6-23 17:42 编辑

在菜单中如何调整角色位置、
要脚本实现
最好是能把脚本功能添加在菜单里
要跟这个脚本一样效果
http://www.66rpg.com/articles/3100

点评

调整角色的什么位置  发表于 2012-6-22 21:00

Lv3.寻梦者

梦石
0
星屑
1379
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

4
发表于 2012-6-24 13:19:07 | 只看该作者
本帖最后由 铅笔描绘的思念 于 2012-6-24 13:20 编辑

替换角色位置还有其他功能

来源:http://xrxs.at-ninja.jp/Nov10.htm
  1. # ▽△▽ XRXSv10. MeLT【メニューレイアウトテンプレート】VX. ▽△▽
  2. #
  3. # publish 2010/ 3/ 3
  4. # update  - 11/ 2/16a
  5. #
  6. #==============================================================================
  7. #
  8. # --- 追加シーン対応 ---
  9. #   (↓カスタマイズポイントで呼び出し先シーンを設定する場合、
  10. #  そのシーンは既に定義されている必要があります。
  11. #  そのため下記のようにSceneの名だけ定義する事で対応しています。
  12. #  外部の追加シーン(図鑑や日記画面など)を導入する場合、
  13. #  下記にならって記述するか、
  14. #  あるいはこのセクションより上にそれらの素材を導入してください。)
  15. #
  16. #==============================================================================
  17. class Scene_Option < Scene_Base
  18. end
  19. class Scene_MenuOption < Scene_Option
  20. end
  21. class Scene_MateiralCompose < Scene_Base
  22. end
  23. class Scene_MenuMateiralCompose < Scene_MateiralCompose
  24. end
  25. module XRXSV10
  26.   MEMBERSORT = 101
  27.   COMMONCALL = 102
  28. end
  29. #==============================================================================
  30. # カスタマイズポイント
  31. #==============================================================================
  32. module XRXSV10
  33.   #
  34.   # メニュー順序
  35.   #    (・順番を自由に入れ替え可能です
  36.   #   ・先頭に # のマークを付ける事でそのコマンドを消せます )
  37.   #
  38.   MENU_SCENES = [
  39.     Scene_Item,
  40.     Scene_MenuMateiralCompose,
  41.     Scene_Equip,
  42.     Scene_Skill,
  43.     Scene_Status,
  44.     MEMBERSORT,
  45.     COMMONCALL,
  46.     #Scene_MenuOption,
  47.     Scene_File,
  48.     #Scene_End,
  49.   ]
  50.   #
  51.   # メニューコマンド名称ハッシュ
  52.   #    (左側が上記コマンド内容、右側がその名称を意味しています)
  53.   #
  54.   def self.make_menu_command_hash
  55.     hash = {
  56.       Scene_Item   => Vocab::item,
  57.       Scene_Skill  => Vocab::skill,
  58.       Scene_Equip  => Vocab::equip,
  59.       Scene_Status => Vocab::status,
  60.       Scene_File   => Vocab::save,
  61.       Scene_End    => Vocab::game_end,
  62.       MEMBERSORT       => "いれかえ",
  63.       COMMONCALL       => "コモンコール",
  64.       Scene_MenuOption => "オプション",
  65.       Scene_MenuMateiralCompose => "アイテム合成"
  66.     }
  67.     return hash
  68.   end
  69.   #
  70.   # コモンコール(コモンイベント呼び出しコマンド)で実行するコモンイベントID
  71.   #
  72.   CommonCallID = 2
  73.   #
  74.   # コモンコールを有効にするスイッチID( 0 番を指定すると常時無効)
  75.   #
  76.   CommonCallDebargoSwitchID = 5
  77.   #
  78.   # 入れ替えを禁止するアクターID配列
  79.   #
  80.   MemberLock = []
  81.   #
  82.   # メニューインデックス自動調整を有効にする?
  83.   #
  84.   MenuIndexAdjusting = true
  85. end
  86. #==============================================================================
  87. # メニューコマンド配列取得
  88. #==============================================================================
  89. module XRXSV10
  90.   def self.menu_scenes
  91.     return (MENU_SCENES - ($game_switches[CommonCallDebargoSwitchID] ? [] : [COMMONCALL]))
  92.   end
  93. end
  94. #==============================================================================
  95. # 元の画面 - 戻り先の設定
  96. #==============================================================================
  97. class Scene_MenuOption < Scene_Option
  98.   def return_scene
  99.     $scene = Scene_Menu.new(6)
  100.   end
  101. end
  102. class Scene_MenuMateiralCompose < Scene_MateiralCompose
  103.   def return_scene
  104.     $scene = Scene_Menu.new(7)
  105.   end
  106. end
  107. #==============================================================================
  108. # メニューフェード時間短縮 [オーバーライド]
  109. #==============================================================================
  110. class Scene_Menu < Scene_Base
  111.   def perform_transition
  112.     Graphics.transition(4)
  113.   end
  114. end
  115. class Scene_Map < Scene_Base
  116.   def perform_transition
  117.     if Graphics.brightness == 0       # 戦闘後、ロード直後など
  118.       fadein(10)
  119.     else                              # メニューからの復帰など
  120.       Graphics.transition(0)
  121.     end
  122.   end
  123. end
  124. #==============================================================================
  125. # ゲームデータ変更確認
  126. #==============================================================================
  127. class Game_Temp
  128.   attr_accessor :gamedata_saved
  129. end
  130. #==============================================================================
  131. # アクター参照
  132. #==============================================================================
  133. class Game_Party
  134.   attr_reader   :actors
  135. end
  136. #==============================================================================
  137. # メニュー画面 [再定義]
  138. #==============================================================================
  139. class Scene_Menu < Scene_Base
  140.   #--------------------------------------------------------------------------
  141.   # ● オブジェクト初期化
  142.   #--------------------------------------------------------------------------
  143.   def initialize(menu_index = 0)
  144.     if XRXSV10::MenuIndexAdjusting
  145.       #
  146.       # メニューインデックス自動調整用の基準インデックス設定
  147.       #
  148.       scene_class = [
  149.         Scene_Item,
  150.         Scene_Skill,
  151.         Scene_Equip,
  152.         Scene_Status,
  153.         Scene_File,
  154.         Scene_End,
  155.         Scene_MenuOption,
  156.         Scene_MenuMateiralCompose
  157.       ][menu_index]
  158.       if scene_class
  159.         scene_index = XRXSV10.menu_scenes.index(scene_class)
  160.         if scene_index
  161.           menu_index = scene_index
  162.         end
  163.       end
  164.     end
  165.     @menu_index = menu_index
  166.     @menu_close_count = 0
  167.     $game_temp.gamedata_saved = false
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 開始処理
  171.   #--------------------------------------------------------------------------
  172.   def start
  173.     super
  174.     create_menu_background
  175.     create_command_window
  176.     @gold_window = Window_Gold.new(0, 360)
  177.     @status_window = Window_MenuStatus.new(160, 0)
  178.     @status_window.slidein!
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● フレーム更新
  182.   #--------------------------------------------------------------------------
  183.   def update
  184.     super
  185.     update_menu_background
  186.     @command_window.update
  187.     @gold_window.update
  188.     @status_window.update
  189.     if @menu_close_count >= 1
  190.       @menu_close_count -= 1
  191.       @menuback2_sprite.opacity -= 42 if @menuback2_sprite != nil
  192.       if @menu_close_count == 0
  193.         $scene = Scene_Map.new
  194.       end
  195.       return
  196.     end
  197.     if @command_window.active
  198.       update_command_selection
  199.     elsif @status_window.active
  200.       update_actor_selection
  201.     end
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● コマンドウィンドウの作成
  205.   #--------------------------------------------------------------------------
  206.   def create_command_window
  207.     @command_window = Window_MenuCommand.new
  208.     @command_window.index = @menu_index
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # スライドアウト
  212.   #--------------------------------------------------------------------------
  213.   def slideout!
  214.     @command_window.slideout! rescue nil
  215.     @gold_window.slideout! rescue nil
  216.     @status_window.slideout! rescue nil
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● コマンド選択の更新
  220.   #--------------------------------------------------------------------------
  221.   def update_command_selection
  222.     if Input.trigger?(Input::B)
  223.       Sound.play_cancel
  224.       @menu_close_count = 6
  225.       @command_window.index = -1
  226.       slideout!
  227.     elsif Input.trigger?(Input::C)
  228.       next_scene = XRXSV10.menu_scenes[@command_window.index]
  229.       if $game_party.members.size == 0
  230.         set = [Scene_Item, Scene_Skill, Scene_Equip, Scene_Status, XRXSV10::MEMBERSORT]
  231.         if set.include?(next_scene)
  232.           Sound.play_buzzer
  233.           return
  234.         end
  235.       end
  236.       if next_scene == Scene_File
  237.         if $game_system.save_disabled
  238.           Sound.play_buzzer
  239.           return
  240.         end
  241.         Sound.play_decision
  242.         $scene = Scene_File.new(true, false, false)
  243.       elsif next_scene == XRXSV10::COMMONCALL
  244.         if $game_map.interpreter.running?
  245.           Sound.play_buzzer
  246.           return
  247.         end
  248.         Sound.play_decision
  249.         $game_temp.common_event_id = XRXSV10::CommonCallID
  250.         @menu_close_count = 6
  251.         @command_window.index = -1
  252.         slideout!
  253.       else
  254.         Sound.play_decision
  255.         need_target_set = [Scene_Skill, Scene_Equip, Scene_Status, XRXSV10::MEMBERSORT]
  256.         if need_target_set.include?(next_scene)
  257.           @command_window.decide!
  258.           start_actor_selection
  259.         else
  260.           $scene = next_scene.new
  261.         end
  262.       end
  263.     end
  264.   end
  265.   #--------------------------------------------------------------------------
  266.   # ● アクター選択の更新
  267.   #--------------------------------------------------------------------------
  268.   def update_actor_selection
  269.     if Input.trigger?(Input::B)
  270.       Sound.play_cancel
  271.       if @membersort_index != nil
  272.         @status_window.index = @membersort_index
  273.         @membersort_index = nil
  274.         @status_window.cursor2_dispose!
  275.       else
  276.         end_actor_selection
  277.         @command_window.cancel!
  278.       end
  279.     elsif Input.trigger?(Input::C)
  280.       next_scene = XRXSV10.menu_scenes[@command_window.index]
  281.       if next_scene == XRXSV10::MEMBERSORT
  282.         actor = $game_party.members[@status_window.index]
  283.         if XRXSV10::MemberLock.include?(actor.id)
  284.           Sound.play_buzzer
  285.           return
  286.         end
  287.         Sound.play_decision
  288.         if @membersort_index != nil
  289.           member1 = $game_party.actors[@membersort_index]
  290.           member2 = $game_party.actors[@status_window.index]
  291.           $game_party.actors[@membersort_index]    = member2
  292.           $game_party.actors[@status_window.index] = member1
  293.           @membersort_index = nil
  294.           @status_window.cursor2_dispose!
  295.           @status_window.refresh
  296.           $game_player.refresh
  297.           $game_temp.gamedata_saved = false
  298.         else
  299.           @membersort_index = @status_window.index
  300.           @status_window.cursor2_copy!
  301.         end
  302.       else
  303.         Sound.play_decision
  304.         $game_party.last_actor_index = @status_window.index
  305.         $scene = next_scene.new(@status_window.index)
  306.       end
  307.     end
  308.   end
  309. end
  310. #==============================================================================
  311. # --- XRXS. ウィンドウスライディング ---
  312. #==============================================================================
  313. module XRXS_WindowSliding
  314.   def slidable?
  315.     return self.slidable_scenes.include?($scene.class) if self.slidable_scenes.size >= 1
  316.     return true
  317.   end
  318.   def slidable_scenes
  319.     return []
  320.   end
  321.   def slide_sprites
  322.     @slide_sprites = [] if @slide_sprites == nil
  323.     return @slide_sprites
  324.   end
  325.   def update
  326.     super
  327.     self.slide_sprites.each{|sprite| sprite.update }
  328.   end
  329.   def update_slide_done!
  330.     self.slide_sprites.each{|sprite| sprite.update_slide_done! }
  331.   end
  332.   def slidein!(x_speed, count = 6, steps = 0)
  333.     for i in 0...self.slide_sprites.size
  334.       sprite = self.slide_sprites[i]
  335.       n = count + i * steps
  336.       sprite.slidein!(x_speed, n)
  337.     end
  338.     self.openness = 255
  339.   end
  340.   def slideout!
  341.     self.slide_sprites.each{|sprite| sprite.slideout! }
  342.     self.openness = 0
  343.   end
  344.   def hide!
  345.     self.slide_sprites.each{|sprite| sprite.opacity = 0 }
  346.     self.openness = 0
  347.   end
  348.   def dispose
  349.     self.slide_sprites.each{|sprite| sprite.dispose }
  350.     super
  351.   end
  352.   def visible=(b)
  353.     self.slide_sprites.each{|sprite| sprite.visible = b }
  354.     super
  355.   end
  356. end
  357. class Window_Base < Window
  358.   def slidable?
  359.     return false
  360.   end
  361. end
  362. #==============================================================================
  363. # --- XRXS.スライディングスプライト ---
  364. #==============================================================================
  365. module XRXSV_SpriteSliding
  366.   def initialize(viewport = nil)
  367.     @slidein_count  = 0
  368.     @slideout_count = 0
  369.     @slide_x_speed  = 0
  370.     super(viewport)
  371.   end
  372.   def update
  373.     super
  374.     update_slide
  375.   end
  376.   def update_slide
  377.     if @slidein_count > 0
  378.       @slidein_count -= 1
  379.       self.x += @slide_x_speed
  380.       self.opacity += 48
  381.       self.opacity = 255 if @slidein_count == 0
  382.     elsif @slideout_count > 0
  383.       @slideout_count -= 1
  384.       self.x -= @slide_x_speed
  385.       self.opacity -= 48
  386.       if @slideout_count == 0
  387.         self.opacity  =  0
  388.         self.x += @slide_x_speed * 6 #*
  389.       end
  390.     end
  391.   end
  392.   def update_slide_done!
  393.     update_slide while (@slidein_count > 0 or @slideout_count > 0)
  394.   end
  395.   def slidein!(x_speed = 8, count = 6)
  396.     update_slide_done!
  397.     @slidein_count  = count
  398.     @slideout_count = 0
  399.     @slide_x_speed  = x_speed
  400.     self.opacity = 0
  401.     self.x -= count * x_speed
  402.   end
  403.   def slideout!
  404.     update_slide_done!
  405.     @slidein_count  = 0
  406.     @slideout_count = 6 #*
  407.   end
  408. end
  409. class Sprite_Slidable < Sprite_Base
  410.   include XRXSV_SpriteSliding
  411. end
  412. #==============================================================================
  413. # --- コンテンツスプリッター (Window用) ---
  414. #       (複製スライドスプライト化・ウィンドウスライディングが必要)
  415. #==============================================================================
  416. module XRXSV_ContentsSplitter
  417.   def split_height
  418.     return 24
  419.   end
  420.   def contents_split!(draw_back = true)
  421.     for sprite in self.slide_sprites
  422.       sprite.dispose
  423.     end
  424.     self.slide_sprites.clear
  425.     self.opacity = 0
  426.     x = self.x + 16
  427.     y = self.y + 16
  428.     w = self.width  - 32
  429.     h = self.height - 32
  430.     if @contents_viewport == nil
  431.       @contents_viewport = Viewport.new(x, y, w, h)
  432.       self.z = self.z
  433.     end
  434.     sprites = []
  435.     windowskin = Cache.system("Window")
  436.     for i in 0...@item_max
  437.       bitmap = Bitmap.new(w, split_height)
  438.       draw_spriteback(bitmap) if draw_back
  439.       rect = Rect.new(0, split_height * i, w, split_height)
  440.       bitmap.blt(0, 0, self.contents, rect)
  441.       sprite = Sprite_Slidable.new
  442.       sprite.bitmap = bitmap
  443.       sprite.viewport = @contents_viewport
  444.       sprite.x = 0
  445.       sprite.y = i * split_height
  446.       sprites.push(sprite)
  447.     end
  448.     for sprite in sprites
  449.       self.slide_sprites.push(sprite)
  450.     end
  451.     self.contents.clear
  452.   end
  453.   def draw_spriteback(bitmap)
  454.     rect = bitmap.rect.dup
  455.     rect.x      += 1
  456.     rect.y      += 1
  457.     rect.width  -= 2
  458.     rect.height -= 2
  459.     if @splitback_bitmap == nil
  460.       @splitback_bitmap = Bitmap.new(rect.width, rect.height)
  461.       rect2 = Rect.new(0, 0, rect.width, rect.height)
  462.       @splitback_bitmap.stretch_blt(rect2, windowskin, Rect.new(0, 0,64,64), 120)
  463.       @splitback_bitmap.stretch_blt(rect2, windowskin, Rect.new(0,64,64,64), 160)
  464.     end
  465.     bitmap.blt(rect.x, rect.y, @splitback_bitmap, @splitback_bitmap.rect)
  466.   end
  467.   def slidein!(x_speed = -8, count = 6, steps = 4)
  468.     super(x_speed, count, steps)
  469.   end
  470.   def decide!
  471.     self.slide_sprites.each{|sprite| sprite.update_slide_done! }
  472.     self.slide_sprites.each{|sprite| sprite.opacity =  96 }
  473.     self.slide_sprites[self.index].opacity = 255 if self.index >= 0 rescue nil
  474.   end
  475.   def cancel!
  476.     self.slide_sprites.each{|sprite| sprite.opacity = 255 }
  477.   end
  478.   def x=(n)
  479.     super
  480.     @contents_viewport.rect.x = self.x + 16 if @contents_viewport != nil
  481.   end
  482.   def y=(n)
  483.     super
  484.     @contents_viewport.rect.y = self.y + 16 if @contents_viewport != nil
  485.   end
  486.   def z=(n)
  487.     super
  488.     @contents_viewport.z = self.z + 2 if @contents_viewport != nil
  489.   end
  490.   def oy=(n)
  491.     super
  492.     @contents_viewport.oy = n if @contents_viewport != nil
  493.   end
  494.   def contents_opacity=(n)
  495.     self.slide_sprites.each{|sprite| sprite.opacity = n }
  496.     super
  497.   end
  498.   def dispose
  499.     super
  500.     @contents_viewport.dispose if @contents_viewport != nil
  501.     @contents_viewport = nil
  502.   end
  503. end
  504. #==============================================================================
  505. # --- カーソルコピー機能 (Window_Selectableの下位クラス用) ---
  506. #==============================================================================
  507. module XRXSV_CursorCopy
  508.   def dispose
  509.     @cursor2_sprite.dispose if @cursor2_sprite != nil
  510.     @contents_viewport.dispose if @contents_viewport != nil
  511.     @contents_viewport = nil
  512.     super
  513.   end
  514.   def cursor2_copy!
  515.     if @contents_viewport == nil
  516.       x = self.x + 16
  517.       y = self.y + 16
  518.       w = self.width  - 32
  519.       h = self.height - 32
  520.       @contents_viewport = Viewport.new(x, y, w, h)
  521.       @contents_viewport.z = self.z + 2
  522.       @contents_viewport.oy = self.oy
  523.     end
  524.     if @cursor2_sprite == nil
  525.       @cursor2_sprite = Sprite_Slidable.new(@contents_viewport)
  526.     end
  527.     width  = self.cursor_rect.width - 2
  528.     height = self.cursor_rect.height - 2
  529.     @cursor2_sprite.bitmap.dispose if @cursor2_sprite.bitmap != nil
  530.     @cursor2_sprite.bitmap = cursor2_make_cursor_bitmap(width, height)
  531.     @cursor2_sprite.z = self.z
  532.     @cursor2_sprite.x = self.cursor_rect.x + self.ox + 1
  533.     @cursor2_sprite.y = self.cursor_rect.y + self.oy + 1
  534.   end
  535.   def cursor2_dispose!
  536.     @cursor2_sprite.bitmap.dispose rescue nil
  537.   end
  538.   def cursor2_make_cursor_bitmap(width, height)
  539.     windowskin = self.windowskin
  540.     bitmap = Bitmap.new(width, height)
  541.     rect = Rect.new(64, 64, 2, 2)
  542.     bitmap.blt(0, 0, windowskin, rect)
  543.     rect = Rect.new(94, 64, 2, 2)
  544.     bitmap.blt(width - 2, 0, windowskin, rect)
  545.     rect = Rect.new(64, 94, 2, 2)
  546.     bitmap.blt(0, height - 2, windowskin, rect)
  547.     rect = Rect.new(94, 94, 2, 2)
  548.     bitmap.blt(width - 2, height - 2, windowskin, rect)
  549.     rect1 = Rect.new(2, 0, width - 4, 2)
  550.     rect2 = Rect.new(66, 64, 28, 2)
  551.     bitmap.stretch_blt(rect1, windowskin, rect2)
  552.     rect1 = Rect.new(2, height - 2, width - 4, 2)
  553.     rect2 = Rect.new(66, 94, 28, 2)
  554.     bitmap.stretch_blt(rect1, windowskin, rect2)
  555.     rect1 = Rect.new(0, 2, 2, height - 2)
  556.     rect2 = Rect.new(64, 66, 2, 28)
  557.     bitmap.stretch_blt(rect1, windowskin, rect2)
  558.     rect1 = Rect.new(width - 2, 2, 2, height - 2)
  559.     rect2 = Rect.new(94, 66, 2, 28)
  560.     bitmap.stretch_blt(rect1, windowskin, rect2)
  561.     rect1 = Rect.new(2, 2, width - 4, height - 4)
  562.     rect2 = Rect.new(66, 66, 28, 28)
  563.     bitmap.stretch_blt(rect1, windowskin, rect2)
  564.     return bitmap
  565.   end
  566.   def oy=(n)
  567.     super
  568.     @contents_viewport.oy = n if @contents_viewport != nil
  569.   end
  570. end
  571. #==============================================================================
  572. # スライドコマンド
  573. #==============================================================================
  574. class Window_SlideCommand < Window_Command
  575.   include XRXS_WindowSliding
  576.   include XRXSV_ContentsSplitter
  577.   def slidein!(x_speed = 8, count = 4, step = 4)
  578.     super(x_speed, count, step)
  579.   end
  580.   def refresh
  581.     self.contents.clear
  582.     for i in 0...@item_max
  583.       draw_item(i, enabled?(i))
  584.     end
  585.   end
  586.   def enabled?(index)
  587.     return true
  588.   end
  589. end
  590. #==============================================================================
  591. # メニューコマンド本体
  592. #==============================================================================
  593. class Window_MenuCommand < Window_SlideCommand
  594.   def initialize
  595.     commands = []
  596.     hash = XRXSV10.make_menu_command_hash
  597.     for scene in XRXSV10.menu_scenes
  598.       commands.push(hash[scene]) if scene
  599.     end
  600.     super(160, commands)
  601.   end
  602.   def enabled?(index)
  603.     next_scene = XRXSV10.menu_scenes[index]
  604.     case next_scene
  605.     when Scene_File
  606.      return false if $game_system.save_disabled
  607.     when XRXSV10::COMMONCALL
  608.      return false if $game_map.interpreter.running?
  609.     else
  610.       if $game_party.members.size == 0
  611.         set = [Scene_Item, Scene_Skill, Scene_Equip, Scene_Status, XRXSV10::MEMBERSORT]
  612.         return false if set.include?(next_scene)
  613.       end
  614.     end
  615.     return true
  616.   end
  617. end
  618. #==============================================================================
  619. # メニューステータスにスライド・スプリット・第二カーソル機能を追加
  620. #==============================================================================
  621. class Window_MenuStatus < Window_Selectable
  622.   include XRXS_WindowSliding
  623.   include XRXSV_ContentsSplitter
  624.   include XRXSV_CursorCopy
  625.   #--------------------------------------------------------------------------
  626.   # ▼ HP の文字色を取得
  627.   #--------------------------------------------------------------------------
  628.   def hp_color(actor)
  629.     color = super
  630.     back_number  = (Game_Party::BACKWARD_MEMBERS rescue 0)
  631.     front_number =  Game_Party::MAX_MEMBERS - back_number
  632.     color.alpha /= 2 if actor.index.to_i >= front_number
  633.     return color
  634.   end
  635. end
  636. #==============================================================================
  637. # □ Bitmapライブラリ --- draw_hemming_text --- □
  638. #      draw_hemming_text(x, y, width, height, str[, align, color])
  639. #      draw_hemming_text(rect, str[, align, color])
  640. #==============================================================================
  641. class Bitmap
  642.   def draw_hemming_text(x, y, w = 0, h = 0, text = "", align = 0, black_color = Color.new(0,0,0,255))
  643.     if x.is_a?(Rect)
  644.       if h.is_a?(Color)
  645.         black_color = h
  646.       end
  647.       align = w
  648.       text = y
  649.       w = x.width
  650.       h = x.height
  651.       y = x.y
  652.       x = x.x
  653.     end
  654.     original_font            = self.font.dup
  655.     hemming_font             = Font.new
  656.     hemming_font.color       = black_color
  657.     hemming_font.color.alpha = black_color.alpha * original_font.color.alpha / 255
  658.     hemming_font.shadow      = false
  659.     self.font = hemming_font
  660.     self.draw_text(x-1, y-1, w, h, text, align)
  661.     self.draw_text(x-1, y+1, w, h, text, align)
  662.     self.draw_text(x+1, y-1, w, h, text, align)
  663.     self.font = original_font
  664.     self.draw_text(x  , y  , w, h, text, align)
  665.   end
  666. end
  667. #==============================================================================
  668. # 単体フェイス・ミニフェイスの取得
  669. #==============================================================================
  670. class Game_Actor < Game_Battler
  671.   def face
  672.     key = self.face_name + "-" + (self.face_index + 1).to_s
  673.     return Cache.one_face(key)
  674.   end
  675.   def miniface
  676.     key = self.face_name + "-" + (self.face_index + 1).to_s
  677.     return Cache.miniface(key)
  678.   end
  679. end
  680. module Cache
  681.   def self.one_face(key)
  682.     @one_face_cache = {} if @one_face_cache == nil
  683.     cache = @one_face_cache[key]
  684.     if cache == nil or cache.disposed?
  685.       face_name  = key[0, key.size - 2]
  686.       face_index = key[key.size - 1, 1].to_i - 1
  687.       x = (face_index % 4 * 96)
  688.       y = (face_index / 4 * 96)
  689.       face  = Cache.face(face_name)
  690.       cache = Bitmap.new(96,96)
  691.       cache.blt(0, 0, face, Rect.new(x, y, 96, 96))
  692.       @one_face_cache[key] = cache
  693.     end
  694.     return cache
  695.   end
  696.   def self.miniface(key)
  697.     @miniface_cache = {} if @miniface_cache == nil
  698.     cache = @miniface_cache[key]
  699.     if cache == nil or cache.disposed?
  700.       face = Cache.one_face(key)
  701.       cache = Bitmap.new(48,24)
  702.       cache.stretch_blt(cache.rect, face, Rect.new(0, 14, 96, 48))
  703.       face.dispose
  704.       @miniface_cache[key] = cache
  705.     end
  706.     return cache
  707.   end
  708.   def self.face_cache_clear
  709.     @one_face_cache = {} if @one_face_cache == nil
  710.     @one_face_cache.values.each{|cache| cache.dispose }
  711.     @one_face_cache.clear
  712.     Cache.miniface_cache_clear
  713.   end
  714.   def self.miniface_cache_clear
  715.     @miniface_cache = {} if @miniface_cache == nil
  716.     @miniface_cache.values.each{|cache| cache.dispose }
  717.     @miniface_cache.clear
  718.   end
  719. end
复制代码

点评

见过像这个XP的脚本的就只有这个了呢。。如果是重定义。。也可以利用来做的很好啊。。星君的GK的菜单也是此脚本哦、、  发表于 2012-6-24 19:29
这脚本会重定义菜单内容 还有那个什么合成没有功能 能不能找个只有调整队伍脚本  发表于 2012-6-24 19:24
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
3 小时
注册时间
2012-5-4
帖子
284
3
 楼主| 发表于 2012-6-23 17:42:58 | 只看该作者
已更改说明

点评

LZ你试下SF那个脚本吧,效果差不多(大雾~  发表于 2012-6-23 21:22
回复

使用道具 举报

Lv1.梦旅人

54酱是大笨蛋!

梦石
0
星屑
66
在线时间
1389 小时
注册时间
2011-2-23
帖子
5014
2
发表于 2012-6-22 21:12:31 | 只看该作者
去你爹的现充.去你爹的异性恋.
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 00:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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