Project1

标题: 角色选择界面【美化完毕】 [打印本页]

作者: 凌冰    时间: 2008-7-25 17:06
标题: 角色选择界面【美化完毕】
  1. #============角色选择=========By凌冰==========================================
  2. #用法 $scene = Scene_SelectActor.new
  3. #=============================================================================
  4. #参与选择的角色ID

  5. ACT_SEL = [1,2,3,4]

  6. #====================================
  7. #存储选择结果的变量ID

  8. VA_ID = 1

  9. #====================================
  10. #窗口设置

  11. WIDTH = 600#窗口宽度
  12. HEIGHT = 320#窗口高度
  13. OPACITY = 180#窗口透明度
  14. BACK_OPACITY = 180#窗口透明度

  15. #====================================
  16. #选择显示图形

  17. CHAORBAT = 1
  18. #0为显示人物战斗图,1为显示人物行走图
  19. #2为显示Pictures文件夹下的自定义图片(图片名为角色名)
  20. #其他为不显示图片

  21. #====================================
  22. #人物说明= =暂时仅限一行

  23. DES_SWI = true#说明开关
  24. ACT_DES = []#初始化,请不要修改
  25. #以下填写格式为ACT_DES[角色ID] = "说明文字"
  26. ACT_DES[1] = "小色狼"
  27. ACT_DES[2] = "小流氓"
  28. ACT_DES[3] = "小荡妇"
  29. ACT_DES[4] = "小贱人"

  30. #====================================
  31. #背景图片

  32. BGP_SWI = false#背景开关= =打开后PDE_SWI被屏蔽
  33. BGP_PIC = "Logo"#背景图片文件名Pictures文件夹下
  34. BGP_OPA = 180#开关打开后,窗口透明度
  35. BGP_BOP = 0#开关打开后,窗口(不包括边框)透明度

  36. #====================================
  37. #说明图片
  38. #移动光标矩形时自动切换图片

  39. PDE_SWI = true#图片开关= =BGP_SWI打开后被屏蔽
  40. PIC_DES = []#初始化,请不要修改
  41. #以下填写格式为PIC_DES[角色ID] = "图片文件名"
  42. PIC_DES[1] = "Logo1"
  43. PIC_DES[2] = "Logo2"
  44. PIC_DES[3] = "Logo1"
  45. PIC_DES[4] = "Logo2"
  46. PDE_OPA = 180#开关打开后,窗口透明度
  47. PDE_BOP = 0#开关打开后,窗口(不包括边框)透明度

  48. #====================================
  49. class Window_SelectActor < Window_Selectable
  50.   def initialize
  51.     super(0, 0, WIDTH, HEIGHT)
  52.     self.contents = Bitmap.new(width - 32, height - 32)
  53.     @item_max = ACT_SEL.size
  54.     @column_max = ACT_SEL.size
  55.     @index = 0
  56.     self.x = (640-self.width)/2
  57.     self.y = (480-self.height)/2
  58.     refresh
  59.   end
  60.   def refresh
  61.     self.contents.clear
  62.     for i in 0...ACT_SEL.size
  63.       x = (self.width-32)/ACT_SEL.size * i
  64.       actor = $game_actors[ACT_SEL[i]]
  65.       x_plus = contents.text_size(actor.name).width
  66.       x_plus = ((self.width-32)/ACT_SEL.size - x_plus)/2
  67.       draw_actor_name(actor, x+4+x_plus, 4)
  68.       case CHAORBAT
  69.       when 0
  70.         bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  71.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  72.         x_plus = bitmap.width
  73.         x_plus = ((self.width-32)/ACT_SEL.size - x_plus)/2
  74.         self.contents.blt(x+x_plus, 36, bitmap, src_rect)
  75.       when 1
  76.         bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  77.         y_plus = bitmap.height/4
  78.         x_plus = bitmap.width/4
  79.         x_plus2 = ((self.width-32)/ACT_SEL.size - x_plus)/2
  80.         draw_actor_graphic(actor, x+x_plus/2+x_plus2, y_plus+36)
  81.       when 2
  82.         bitmap = RPG::Cache.picture(actor.name)
  83.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  84.         x_plus = bitmap.width
  85.         x_plus = ((self.width-32)/ACT_SEL.size - x_plus)/2
  86.         self.contents.blt(x+x_plus, 36, bitmap, src_rect)
  87.       end
  88.     end
  89.   end
  90.   def update_cursor_rect
  91.     if @index < 0
  92.       self.cursor_rect.empty
  93.     else
  94.       self.cursor_rect.set( @index * (self.width-32)/ACT_SEL.size,0, (self.width-32)/ACT_SEL.size, self.height-32)
  95.     end
  96.   end
  97. end
  98. class Window_Help_New < Window_Help
  99.   def initialize
  100.     super
  101.     self.contents = Bitmap.new(width, height)
  102.     self.width = WIDTH
  103.     self.contents = Bitmap.new(width - 32, height - 32)
  104.   end
  105. end
  106. class Scene_SelectActor
  107.   def main
  108.     @window = Window_SelectActor.new
  109.     @help_window = Window_Help_New.new
  110.     @help_window.visible = DES_SWI
  111.     @help_window.x = @window.x
  112.     @help_window.y = @window.y + @window.height
  113.     @help_window.width = @window.width
  114.     @help_window.back_opacity = @window.back_opacity = PDE_SWI ? PDE_BOP : BACK_OPACITY
  115.     @help_window.opacity = @window.opacity = PDE_SWI ? PDE_OPA : OPACITY
  116.     @help_window.back_opacity = @window.back_opacity = BGP_BOP if BGP_SWI
  117.     @help_window.opacity = @window.opacity = BGP_OPA if BGP_SWI
  118.     if BGP_SWI
  119.       @sprite = Sprite.new
  120.       @sprite.bitmap = RPG::Cache.picture(BGP_PIC)
  121.     elsif PDE_SWI
  122.       @sprite = Sprite.new
  123.       @sprite.bitmap = RPG::Cache.picture(PIC_DES[1])
  124.     else
  125.       @sprite = Spriteset_Map.new
  126.     end
  127.     # 执行过度4
  128.     Graphics.transition
  129.     # 主循环
  130.     loop do
  131.       # 刷新游戏画面
  132.       Graphics.update
  133.       # 刷新输入信息
  134.       Input.update
  135.       # 刷新画面
  136.       update
  137.       # 如果画面切换就中断循环
  138.       if $scene != self
  139.         break
  140.       end
  141.     end
  142.     # 装备过渡
  143.     Graphics.freeze
  144.     @window.dispose
  145.     @help_window.dispose
  146.     @sprite.dispose
  147.   end
  148.   def update
  149.     @window.update
  150.     @sprite.update
  151.     if DES_SWI
  152.       @help_window_update
  153.       actor_id = ACT_SEL[@window.index]
  154.       text = ACT_DES[actor_id]
  155.       @help_window.set_text(text,1) if text != nil
  156.     end
  157.     if !BGP_SWI and PDE_SWI
  158.       pic = PIC_DES[ACT_SEL[@window.index]]
  159.       @sprite.bitmap = RPG::Cache.picture(pic) if pic != nil
  160.     end
  161.     if Input.trigger?(Input::C)
  162.       $game_system.se_play($data_system.decision_se)
  163.       for i in 0...$game_party.actors.size
  164.         id = $game_party.actors[i].id
  165.         actors_id = [] if actors_id == nil
  166.         actors_id.push(id)
  167.       end
  168.       actors_id.each do |i|
  169.         $game_party.remove_actor(i)
  170.       end
  171.       id = ACT_SEL[@window.index]
  172.       $game_party.add_actor(id)
  173.       $game_variables[VA_ID] = id
  174.       $scene = Scene_Map.new
  175.     end
  176.   end
  177. end
复制代码

脚本用法:
#============角色选择=========By凌冰==========================================
#用法 $scene = Scene_SelectActor.new
#=============================================================================
效果截图:

范例工程:
http://rpg.blue/upload_program/files/角色选择_97776380.rar



应求角色双排显示版

  1. #============角色选择=========By凌冰==========================================
  2. #用法 $scene = Scene_SelectActor.new
  3. #=============================================================================
  4. #参与选择的角色ID

  5. ACT_SEL = [1,2,3,4,5,6,7]

  6. #====================================
  7. #存储选择结果的变量ID

  8. VA_ID = 1

  9. #====================================
  10. #窗口设置

  11. WIDTH = 600#窗口宽度
  12. HEIGHT = 320#窗口高度
  13. OPACITY = 180#窗口透明度
  14. BACK_OPACITY = 180#窗口透明度

  15. #====================================
  16. #选择显示图形

  17. CHAORBAT = 1
  18. #0为显示人物战斗图,1为显示人物行走图
  19. #2为显示Pictures文件夹下的自定义图片(图片名为角色名)
  20. #其他为不显示图片

  21. #====================================
  22. #人物说明= =暂时仅限一行

  23. DES_SWI = true#说明开关
  24. ACT_DES = []#初始化,请不要修改
  25. #以下填写格式为ACT_DES[角色ID] = "说明文字"
  26. ACT_DES[1] = "小色狼"
  27. ACT_DES[2] = "小流氓"
  28. ACT_DES[3] = "小荡妇"
  29. ACT_DES[4] = "小贱人"

  30. #====================================
  31. #背景图片

  32. BGP_SWI = false#背景开关= =打开后PDE_SWI被屏蔽
  33. BGP_PIC = "Logo"#背景图片文件名Pictures文件夹下
  34. BGP_OPA = 180#开关打开后,窗口透明度
  35. BGP_BOP = 0#开关打开后,窗口(不包括边框)透明度

  36. #====================================
  37. #说明图片
  38. #移动光标矩形时自动切换图片

  39. PDE_SWI = true#图片开关= =BGP_SWI打开后被屏蔽
  40. PIC_DES = []#初始化,请不要修改
  41. #以下填写格式为PIC_DES[角色ID] = "图片文件名"
  42. PIC_DES[1] = "Logo1"
  43. PIC_DES[2] = "Logo2"
  44. PIC_DES[3] = "Logo1"
  45. PIC_DES[4] = "Logo2"
  46. PDE_OPA = 180#开关打开后,窗口透明度
  47. PDE_BOP = 0#开关打开后,窗口(不包括边框)透明度

  48. #====================================
  49. #双排显示

  50. TWR_SWI = true#双排开关
  51. class Window_SelectActor < Window_Selectable
  52.   def initialize
  53.     super(0, 0, WIDTH, HEIGHT)
  54.     self.contents = Bitmap.new(width - 32, height - 32)
  55.     @item_max = ACT_SEL.size
  56.     @column_max = ACT_SEL.size
  57.     @column_max = (ACT_SEL.size+1)/2 if TWR_SWI
  58.     @index = 0
  59.     self.x = (640-self.width)/2
  60.     self.y = (480-self.height)/2
  61.     refresh
  62.   end
  63.   def refresh
  64.     self.contents.clear
  65.     for i in 0...ACT_SEL.size
  66.       unless TWR_SWI
  67.         x = (self.width-32)/ACT_SEL.size * i
  68.         y = 4
  69.       else
  70.         case (ACT_SEL.size%2)
  71.         when 0
  72.           row_size = ACT_SEL.size/2
  73.         else
  74.           row_size = ACT_SEL.size/2 + 1
  75.         end
  76.         x = (i%@column_max) * (self.width-32)/row_size
  77.         y = 4
  78.         y = (self.height-32) / 2 if i > row_size - 1
  79.       end
  80.       actor = $game_actors[ACT_SEL[i]]
  81.       x_plus = contents.text_size(actor.name).width
  82.       x_plus = ((self.width-32)/row_size - x_plus)/2
  83.       draw_actor_name(actor, x+4+x_plus, y)
  84.       case CHAORBAT
  85.       when 0
  86.         bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  87.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  88.         x_plus = bitmap.width
  89.         x_plus = ((self.width-32)/row_size - x_plus)/2
  90.         self.contents.blt(x+x_plus, y+36, bitmap, src_rect)
  91.       when 1
  92.         bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  93.         y_plus = bitmap.height/4
  94.         x_plus = bitmap.width/4
  95.         x_plus2 = ((self.width-32)/row_size - x_plus)/2
  96.         draw_actor_graphic(actor, x+x_plus/2+x_plus2,y+ y_plus+36)
  97.       when 2
  98.         bitmap = RPG::Cache.picture(actor.name)
  99.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  100.         x_plus = bitmap.width
  101.         x_plus = ((self.width-32)/row_size - x_plus)/2
  102.         self.contents.blt(x+x_plus, y+36, bitmap, src_rect)
  103.       end
  104.     end
  105.   end
  106.   def update_cursor_rect
  107.     unless TWR_SWI
  108.       if @index < 0
  109.         self.cursor_rect.empty
  110.       else
  111.         self.cursor_rect.set( @index * (self.width-32)/ACT_SEL.size,0, (self.width-32)/ACT_SEL.size, self.height-32)
  112.       end
  113.     else
  114.       if @index < 0
  115.         self.cursor_rect.empty
  116.       else
  117.         case (ACT_SEL.size%2)
  118.         when 0
  119.           row_size = ACT_SEL.size/2
  120.         else
  121.           row_size = ACT_SEL.size/2 + 1
  122.         end
  123.         x = (@index%@column_max) * (self.width-32)/row_size
  124.         y = 0
  125.         y = (self.height-32) / 2 if @index > row_size - 1
  126.         self.cursor_rect.set( x,y, (self.width-32)/row_size, (self.height-32)/2)
  127.       end
  128.     end
  129.   end
  130. end
  131. class Window_Help_New < Window_Help
  132.   def initialize
  133.     super
  134.     self.contents = Bitmap.new(width, height)
  135.     self.width = WIDTH
  136.     self.contents = Bitmap.new(width - 32, height - 32)
  137.   end
  138. end
  139. class Scene_SelectActor
  140.   def main
  141.     @window = Window_SelectActor.new
  142.     @help_window = Window_Help_New.new
  143.     @help_window.visible = DES_SWI
  144.     @help_window.x = @window.x
  145.     @help_window.y = @window.y + @window.height
  146.     @help_window.width = @window.width
  147.     @help_window.back_opacity = @window.back_opacity = PDE_SWI ? PDE_BOP : BACK_OPACITY
  148.     @help_window.opacity = @window.opacity = PDE_SWI ? PDE_OPA : OPACITY
  149.     @help_window.back_opacity = @window.back_opacity = BGP_BOP if BGP_SWI
  150.     @help_window.opacity = @window.opacity = BGP_OPA if BGP_SWI
  151.     if BGP_SWI
  152.       @sprite = Sprite.new
  153.       @sprite.bitmap = RPG::Cache.picture(BGP_PIC)
  154.     elsif PDE_SWI
  155.       @sprite = Sprite.new
  156.       @sprite.bitmap = RPG::Cache.picture(PIC_DES[1])
  157.     else
  158.       @sprite = Spriteset_Map.new
  159.     end
  160.     # 执行过度4
  161.     Graphics.transition
  162.     # 主循环
  163.     loop do
  164.       # 刷新游戏画面
  165.       Graphics.update
  166.       # 刷新输入信息
  167.       Input.update
  168.       # 刷新画面
  169.       update
  170.       # 如果画面切换就中断循环
  171.       if $scene != self
  172.         break
  173.       end
  174.     end
  175.     # 装备过渡
  176.     Graphics.freeze
  177.     @window.dispose
  178.     @help_window.dispose
  179.     @sprite.dispose
  180.   end
  181.   def update
  182.     @window.update
  183.     @sprite.update
  184.     if DES_SWI
  185.       @help_window_update
  186.       actor_id = ACT_SEL[@window.index]
  187.       text = ACT_DES[actor_id]
  188.       @help_window.set_text(text,1) if text != nil
  189.     end
  190.     if !BGP_SWI and PDE_SWI
  191.       pic = PIC_DES[ACT_SEL[@window.index]]
  192.       @sprite.bitmap = RPG::Cache.picture(pic) if pic != nil
  193.     end
  194.     if Input.trigger?(Input::C)
  195.       $game_system.se_play($data_system.decision_se)
  196.       for i in 0...$game_party.actors.size
  197.         id = $game_party.actors[i].id
  198.         actors_id = [] if actors_id == nil
  199.         actors_id.push(id)
  200.       end
  201.       actors_id.each do |i|
  202.         $game_party.remove_actor(i)
  203.       end
  204.       id = ACT_SEL[@window.index]
  205.       $game_party.add_actor(id)
  206.       $game_variables[VA_ID] = id
  207.       $scene = Scene_Map.new
  208.     end
  209.   end
  210. end
复制代码

作者: 炎影者    时间: 2008-7-25 17:20
好的东西一定要支持,实用性大的东西更要拿来用{/se}
作者: 越前リョーマ    时间: 2008-7-26 00:34
感觉不是太美观……
作者: 劍之飛龍☆    时间: 2008-7-26 01:23
应该可以用素材美化些。

我就是对画窗口不熟悉{/gg}
作者: 凌冰    时间: 2008-7-26 02:04
以下引用Ж纯Ж蓝Ж于2008-7-25 16:31:00的发言:

鼓勵一個..........
不過LZ注意........
以後發腳本的時候最好看看有沒有沖突.......
不然沒有保障.......
我是不會下的.........

类都是自建的,冲突一般不会有。(= =除非是极其【马赛克】的脚本)
以下引用越前リョーマ于2008-7-25 16:34:29的发言:

感觉不是太美观……
以下引用劍之飛龍☆于2008-7-25 17:23:13的发言:

应该可以用素材美化些。

我就是对画窗口不熟悉

美化倒也没什么难的,倒是我没想出什么具体的方案
作者: 灯笼菜刀王    时间: 2008-7-26 11:58
在角色下面添加些说明文字嘛

比如阿尔西斯的

"战士,能力较平均,能使用
绝大多数武器和防具。"

这类的~可以让人家自定义。

这样就比较美观些了嘛~

制作ARPG,ACT类游戏必用的东东~(除非你的游戏只有一个主角囧...)
作者: 凌冰    时间: 2008-7-27 12:32
以下引用灯笼菜刀王于2008-7-26 3:58:09的发言:

在角色下面添加些说明文字嘛

比如阿尔西斯的

"战士,能力较平均,能使用
绝大多数武器和防具。"

这类的~可以让人家自定义。

这样就比较美观些了嘛~

制作ARPG,ACT类游戏必用的东东~(除非你的游戏只有一个主角囧...)

我也这么想过,但是设置起来太麻烦,算了,加个开关,想用就用,不想用就关上吧
正在考虑,用图片做背景
作者: 灯泡没我亮    时间: 2008-7-27 17:11
可以了,不用太苛刻
作者: 大地的雨    时间: 2008-7-27 23:32
单纯配合20句的脚本和素材运用,大概能够更加美化……
作者: 湛蓝de海    时间: 2008-7-29 06:02
一个是不太美观.还有角色选择的图片是角色战斗图?
作者: 凌冰    时间: 2008-7-29 06:03
以下引用湛蓝de海于2008-7-28 22:02:26的发言:

一个是不太美观.还有角色选择的图片是角色战斗图?

可以设置成行走图~~~~
最近脑残ing~~~~~~~~~
美化无力………………
作者: 湛蓝de海    时间: 2008-7-29 06:08
个人感觉如果能换成picture里的图片.不和行走图\战斗图挂钩更好.
作者: 凌冰    时间: 2008-7-29 06:12
以下引用湛蓝de海于2008-7-28 22:08:05的发言:

个人感觉如果能换成picture里的图片.不和行走图\战斗图挂钩更好.

等我走出脑残的状态后再说吧= =
作者: 湛蓝de海    时间: 2008-7-29 06:15
以下引用凌冰于2008-7-28 22:12:17的发言:

等我走出脑残的状态后再说吧= =

恩.是人都会脑残的.
脑残不可怕,可怕的是天天脑残.{/gg}
偶祝凌冰大.早日走出脑残阴影.{/gg}
不说了.再说成版聊了.{/hx}
作者: 凌冰    时间: 2008-7-30 00:08
修改完毕
脑残期持续中= =
作者: 关重7    时间: 2008-7-31 04:21
能帮忙改为两排的不
作者: 虚幻死神    时间: 2008-7-31 04:34
還不錯....LZ加油啦~
作者: 凌冰    时间: 2008-7-31 08:30
以下引用关重7于2008-7-30 20:21:43的发言:

能帮忙改为两排的不

修改完成
  1. #============角色选择=========By凌冰==========================================
  2. #用法 $scene = Scene_SelectActor.new
  3. #=============================================================================
  4. #参与选择的角色ID

  5. ACT_SEL = [1,2,3,4]

  6. #====================================
  7. #存储选择结果的变量ID

  8. VA_ID = 1

  9. #====================================
  10. #窗口设置

  11. WIDTH = 600#窗口宽度
  12. HEIGHT = 320#窗口高度
  13. OPACITY = 180#窗口透明度
  14. BACK_OPACITY = 180#窗口透明度

  15. #====================================
  16. #选择显示图形

  17. CHAORBAT = 1
  18. #0为显示人物战斗图,1为显示人物行走图
  19. #2为显示Pictures文件夹下的自定义图片(图片名为角色名)
  20. #其他为不显示图片

  21. #====================================
  22. #人物说明= =暂时仅限一行

  23. DES_SWI = true#说明开关
  24. ACT_DES = []#初始化,请不要修改
  25. #以下填写格式为ACT_DES[角色ID] = "说明文字"
  26. ACT_DES[1] = "小色狼"
  27. ACT_DES[2] = "小流氓"
  28. ACT_DES[3] = "小荡妇"
  29. ACT_DES[4] = "小贱人"

  30. #====================================
  31. #背景图片

  32. BGP_SWI = false#背景开关= =打开后PDE_SWI被屏蔽
  33. BGP_PIC = "Logo"#背景图片文件名Pictures文件夹下
  34. BGP_OPA = 180#开关打开后,窗口透明度
  35. BGP_BOP = 0#开关打开后,窗口(不包括边框)透明度

  36. #====================================
  37. #说明图片
  38. #移动光标矩形时自动切换图片

  39. PDE_SWI = true#图片开关= =BGP_SWI打开后被屏蔽
  40. PIC_DES = []#初始化,请不要修改
  41. #以下填写格式为PIC_DES[角色ID] = "图片文件名"
  42. PIC_DES[1] = "Logo1"
  43. PIC_DES[2] = "Logo2"
  44. PIC_DES[3] = "Logo1"
  45. PIC_DES[4] = "Logo2"
  46. PDE_OPA = 180#开关打开后,窗口透明度
  47. PDE_BOP = 0#开关打开后,窗口(不包括边框)透明度

  48. #====================================
  49. #双排显示

  50. TWR_SWI = true#双排开关
  51. class Window_SelectActor < Window_Selectable
  52.   def initialize
  53.     super(0, 0, WIDTH, HEIGHT)
  54.     self.contents = Bitmap.new(width - 32, height - 32)
  55.     @item_max = ACT_SEL.size
  56.     @column_max = ACT_SEL.size
  57.     @column_max = ACT_SEL.size/2 if TWR_SWI
  58.     @index = 0
  59.     self.x = (640-self.width)/2
  60.     self.y = (480-self.height)/2
  61.     refresh
  62.   end
  63.   def refresh
  64.     self.contents.clear
  65.     for i in 0...ACT_SEL.size
  66.       unless TWR_SWI
  67.         x = (self.width-32)/ACT_SEL.size * i
  68.         y = 4
  69.       else
  70.         case (ACT_SEL.size%2)
  71.         when 0
  72.           row_size = ACT_SEL.size/2
  73.         else
  74.           row_size = ACT_SEL.size/2 + 1
  75.         end
  76.         x = (i%2) * (self.width-32)/row_size
  77.         y = 4
  78.         y = (self.height-32) / 2 if i > row_size - 1
  79.       end
  80.       actor = $game_actors[ACT_SEL[i]]
  81.       x_plus = contents.text_size(actor.name).width
  82.       x_plus = ((self.width-32)/row_size - x_plus)/2
  83.       draw_actor_name(actor, x+4+x_plus, y)
  84.       case CHAORBAT
  85.       when 0
  86.         bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  87.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  88.         x_plus = bitmap.width
  89.         x_plus = ((self.width-32)/row_size - x_plus)/2
  90.         self.contents.blt(x+x_plus, y+36, bitmap, src_rect)
  91.       when 1
  92.         bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  93.         y_plus = bitmap.height/4
  94.         x_plus = bitmap.width/4
  95.         x_plus2 = ((self.width-32)/row_size - x_plus)/2
  96.         draw_actor_graphic(actor, x+x_plus/2+x_plus2,y+ y_plus+36)
  97.       when 2
  98.         bitmap = RPG::Cache.picture(actor.name)
  99.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  100.         x_plus = bitmap.width
  101.         x_plus = ((self.width-32)/row_size - x_plus)/2
  102.         self.contents.blt(x+x_plus, y+36, bitmap, src_rect)
  103.       end
  104.     end
  105.   end
  106.   def update_cursor_rect
  107.     unless TWR_SWI
  108.       if @index < 0
  109.         self.cursor_rect.empty
  110.       else
  111.         self.cursor_rect.set( @index * (self.width-32)/ACT_SEL.size,0, (self.width-32)/ACT_SEL.size, self.height-32)
  112.       end
  113.     else
  114.       if @index < 0
  115.         self.cursor_rect.empty
  116.       else
  117.         case (ACT_SEL.size%2)
  118.         when 0
  119.           row_size = ACT_SEL.size/2
  120.         else
  121.           row_size = ACT_SEL.size/2 + 1
  122.         end
  123.         x = (@index%2) * (self.width-32)/row_size
  124.         y = 0
  125.         y = (self.height-32) / 2 if @index > row_size - 1
  126.         self.cursor_rect.set( x,y, (self.width-32)/row_size, (self.height-32)/2)
  127.       end
  128.     end
  129.   end
  130. end
  131. class Window_Help_New < Window_Help
  132.   def initialize
  133.     super
  134.     self.contents = Bitmap.new(width, height)
  135.     self.width = WIDTH
  136.     self.contents = Bitmap.new(width - 32, height - 32)
  137.   end
  138. end
  139. class Scene_SelectActor
  140.   def main
  141.     @window = Window_SelectActor.new
  142.     @help_window = Window_Help_New.new
  143.     @help_window.visible = DES_SWI
  144.     @help_window.x = @window.x
  145.     @help_window.y = @window.y + @window.height
  146.     @help_window.width = @window.width
  147.     @help_window.back_opacity = @window.back_opacity = PDE_SWI ? PDE_BOP : BACK_OPACITY
  148.     @help_window.opacity = @window.opacity = PDE_SWI ? PDE_OPA : OPACITY
  149.     @help_window.back_opacity = @window.back_opacity = BGP_BOP if BGP_SWI
  150.     @help_window.opacity = @window.opacity = BGP_OPA if BGP_SWI
  151.     if BGP_SWI
  152.       @sprite = Sprite.new
  153.       @sprite.bitmap = RPG::Cache.picture(BGP_PIC)
  154.     elsif PDE_SWI
  155.       @sprite = Sprite.new
  156.       @sprite.bitmap = RPG::Cache.picture(PIC_DES[1])
  157.     else
  158.       @sprite = Spriteset_Map.new
  159.     end
  160.     # 执行过度4
  161.     Graphics.transition
  162.     # 主循环
  163.     loop do
  164.       # 刷新游戏画面
  165.       Graphics.update
  166.       # 刷新输入信息
  167.       Input.update
  168.       # 刷新画面
  169.       update
  170.       # 如果画面切换就中断循环
  171.       if $scene != self
  172.         break
  173.       end
  174.     end
  175.     # 装备过渡
  176.     Graphics.freeze
  177.     @window.dispose
  178.     @help_window.dispose
  179.     @sprite.dispose
  180.   end
  181.   def update
  182.     @window.update
  183.     @sprite.update
  184.     if DES_SWI
  185.       @help_window_update
  186.       actor_id = ACT_SEL[@window.index]
  187.       text = ACT_DES[actor_id]
  188.       @help_window.set_text(text,1) if text != nil
  189.     end
  190.     if !BGP_SWI and PDE_SWI
  191.       pic = PIC_DES[ACT_SEL[@window.index]]
  192.       @sprite.bitmap = RPG::Cache.picture(pic) if pic != nil
  193.     end
  194.     if Input.trigger?(Input::C)
  195.       $game_system.se_play($data_system.decision_se)
  196.       for i in 0...$game_party.actors.size
  197.         id = $game_party.actors[i].id
  198.         actors_id = [] if actors_id == nil
  199.         actors_id.push(id)
  200.       end
  201.       actors_id.each do |i|
  202.         $game_party.remove_actor(i)
  203.       end
  204.       id = ACT_SEL[@window.index]
  205.       $game_party.add_actor(id)
  206.       $game_variables[VA_ID] = id
  207.       $scene = Scene_Map.new
  208.     end
  209.   end
  210. end
复制代码

作者: 小夜楼风    时间: 2008-7-31 20:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 伊然舞    时间: 2008-8-2 23:57
我的用不了……大概是脚本冲突了……
作者: 凌冰    时间: 2008-8-3 00:13
以下引用伊然舞于2008-8-2 15:57:04的发言:

我的用不了……大概是脚本冲突了……

#用法 $scene = Scene_SelectActor.new
作者: 关重7    时间: 2008-8-3 20:30
帮忙改的2排的能不能在帮忙一下,改为2排12人的
作者: 薄荷冰水    时间: 2008-8-4 00:06
原来是用事件.....插入脚本... - =

我想想,应该用在什么地方
作者: 凌冰    时间: 2008-8-4 05:01
以下引用关重7于2008-8-3 12:30:44的发言:

帮忙改的2排的能不能在帮忙一下,改为2排12人的

在ACT_SEL = [1,2,3,4]把12个人的ID一一写进去就行了
作者: 关重7    时间: 2008-8-4 14:45
以下引用凌冰于2008-8-3 21:01:20的发言:


以下引用关重7于2008-8-3 12:30:44的发言:

帮忙改的2排的能不能在帮忙一下,改为2排12人的


在ACT_SEL = [1,2,3,4]把12个人的ID一一写进去就行了

可是.....
给你看截图吧

作者: 很牛滴靓仔⒅    时间: 2008-8-5 16:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: 江南小帅瓜    时间: 2008-8-14 19:56
在自动事件中使用脚本,选择人物后会出错,怎么样解决?
作者: 凌冰    时间: 2008-8-14 19:57
错误信息是什么
作者: 江南小帅瓜    时间: 2008-8-14 20:20

就是这样了...
作者: 凌冰    时间: 2008-8-14 20:33
其实是我脑残了= =
队伍里必须有一个人的说

其实可以修正
把这行(在我这是216行,到你那怎么变成178了= =)
      actors_id.each do |i|
        $game_party.remove_actor(i)
      end
改成
      unless actors_id.size == 0
        actors_id.each do |i|
          $game_party.remove_actor(i)
        end
      end
当然不改也行,只要选择时队伍里有一个人就行
作者: 江南小帅瓜    时间: 2008-8-14 20:50
可以了,队伍没人可以麽?
作者: 凌冰    时间: 2008-8-14 21:58
可以,上面已经写了= =


把这行(在我这是216行,到你那怎么变成178了= =)
     actors_id.each do |i|
       $game_party.remove_actor(i)
     end
改成
     unless actors_id.size == 0
       actors_id.each do |i|
         $game_party.remove_actor(i)
       end
     end

作者: 可爱的蚊子    时间: 2008-12-6 21:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: yirumodao    时间: 2008-12-6 23:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: MXF953798791    时间: 2008-12-7 04:45
不错不错{/se}{/se}
作者: jerrysmarter    时间: 2008-12-10 07:27
请问一下

这句
  1. #用法 $scene = Scene_SelectActor.new
复制代码
是不是要修改一下才能用?

请问如何修改? 我第一次接触,完全没概念。
作者: 凌冰    时间: 2008-12-11 06:50
以下引用jerrysmarter于2008-12-9 23:27:58的发言:

请问一下

这句
   本帖相关代码如下:
#用法 $scene = Scene_SelectActor.new
是不是要修改一下才能用?

请问如何修改? 我第一次接触,完全没概念。

把$scene = Scene_SelectActor.new放在事件脚本里
作者: jerrysmarter    时间: 2008-12-11 16:07
原来是这样。多谢LS的!!
作者: 乱摸阿弥陀佛    时间: 2008-12-11 23:46
是游戏开始的选择角色?
作者: 凌冰    时间: 2008-12-13 02:20
以下引用乱摸阿弥陀佛于2008-12-11 15:46:02的发言:

是游戏开始的选择角色?

当然像幻想三国志里中途更换角色也是可以的
作者: 尐結    时间: 2009-1-19 15:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: 465889216    时间: 2009-1-20 11:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: 暗黑影剑    时间: 2009-2-11 01:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 凌冰    时间: 2009-3-23 05:50
双排的修复了BUG,欢迎反馈BUG
(= =b明明就是一个很小的脚本,居然也。。。)
作者: bububinghe    时间: 2009-4-24 03:25
光标矩形的修改是我的痛...
作者: aaaagq    时间: 2009-4-25 04:45
2008年曾经做过的一个小功能,只不过只改了图片,完全不改能力
一大堆功能中的一个,不过因为修改太多,已经完全不能移植了。。。
http://www.namipan.com/d/22f466e891869e952b1b17e45457a192aa69cca48f2de800

作者: Ж纯Ж蓝Ж    时间: 2009-6-12 08:00
鼓勵一個..........
不過LZ注意........
以後發腳本的時候最好看看有沒有沖突.......
不然沒有保障.......
我是不會下的.........




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