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

Project1

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

[已经过期] 怎么把玩家的队伍人数改得更多呢?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
61 小时
注册时间
2010-12-11
帖子
37
跳转到指定楼层
1
发表于 2010-12-18 08:44:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
玩家队伍(也就是初期同伴)最多也就4个人,如何改得更多呢?我想要的是7个人。

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

6
发表于 2010-12-18 16:53:22 | 只看该作者
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================  

  4. # ▼▲▼ XRXS26. 人物扩张系统 ver..05 ▼▲▼
  5. # by 桜雅 在土

  6. #==============================================================================
  7. # □ 初始化定义
  8. #==============================================================================
  9. module XRXS26
  10. FRONT_MEMBER_LIMIT    = 4        # 战斗参战人数最大值
  11. BACKWARD_MEMBER_LIMIT = 99        # 待机人数最大值
  12. BACKWARD_EXP_GAINABLE = true     # 待机人物是否获得经验
  13. MENU_STATUS_STRETCH   = false    # 3人以下的时候,菜单是否拉伸大小
  14. end
  15. #------------------------------------------------------------------------------
  16. # 菜单页面状态
  17. #------------------------------------------------------------------------------
  18. class Window_MenuStatus < Window_Selectable
  19. # 列数
  20. COLUMN_MAX = 1
  21. # 光标高度
  22. CURSOR_HEIGHT = 96
  23. # 一行的高度
  24. LINE_HEIGHT = 116
  25. end
  26. #------------------------------------------------------------------------------
  27. # 菜单场景
  28. #------------------------------------------------------------------------------
  29. class Scene_Menu
  30. MENU_MEMBER_CHANGE_KEY_GO    = Input::RIGHT # 进入键
  31. MENU_MEMBER_CHANGE_KEY_END   = Input:EFT  # 离开键
  32. MENU_MEMBER_CHANGE_INDEX_MIN = 0            # 可更换角色最小编号
  33. FORCETOBATTLE_ACTORS         = []           # 不能待机的角色编号
  34. UMBATTLABLE_ACTORS           = []           # 不能加入战斗的角色编号
  35. UNMOVABLE_ACTORS             = []           # 不能移动的角色编号
  36. end
  37. #------------------------------------------------------------------------------
  38. #
  39. # 解説
  40. #    Game_Partyの @actors のうち先頭から↑FRONT_MEMBER_LIMIT番目までのアクターを
  41. #   戦闘メンバーとして、それ以上を待機メンバーとして扱います。
  42. #
  43. #==============================================================================
  44. # ■ Game_Party
  45. #==============================================================================
  46. class Game_Party
  47. #--------------------------------------------------------------------------
  48. # ○ インクルード
  49. #--------------------------------------------------------------------------
  50. include XRXS26
  51. #--------------------------------------------------------------------------
  52. # ○ 公開インスタンス変数
  53. #--------------------------------------------------------------------------
  54. attr_reader   :backword_actors          # 待機アクター
  55. #--------------------------------------------------------------------------
  56. # ● オブジェクト初期化
  57. #--------------------------------------------------------------------------
  58. alias xrxs26_initialize initialize
  59. def initialize
  60.    xrxs26_initialize
  61.    # 待機メンバー配列を初期化
  62.    @backword_actors = []
  63. end
  64. #--------------------------------------------------------------------------
  65. # ● アクターを加える
  66. #--------------------------------------------------------------------------
  67. def add_actor(actor_id)
  68.    # アクターを取得
  69.    actor = $game_actors[actor_id]
  70.    # このアクターがパーティにいない場合
  71.    if not @actors.include?(actor)
  72.      # 満員でないならメンバーに追加
  73.      if @actors.size < (FRONT_MEMBER_LIMIT + BACKWARD_MEMBER_LIMIT)
  74.        # アクターを追加
  75.        @actors.push(actor)
  76.        # プレイヤーをリフレッシュ
  77.        $game_player.refresh
  78.      end
  79.    end
  80. end
  81. end
  82. #==============================================================================
  83. # ■ Spriteset_Battle
  84. #==============================================================================
  85. class Spriteset_Battle
  86. #--------------------------------------------------------------------------
  87. # ● インクルード
  88. #--------------------------------------------------------------------------
  89. include XRXS26
  90. #--------------------------------------------------------------------------
  91. # ● フレーム更新
  92. #--------------------------------------------------------------------------
  93. alias xrxs26_initialize initialize
  94. def initialize
  95.    xrxs26_initialize
  96.    #
  97.    # 以下、五人目以降のアクタースプライトの追加処理---
  98.    #
  99.    # アクターが表示されるビューポートを、とりあえず先頭の人から取得しとく(素
  100.    actor_viewport = @actor_sprites[0].viewport
  101.    # 戦闘参加メンバーが5人以上の場合
  102.    if FRONT_MEMBER_LIMIT > 4
  103.      for i in 5..FRONT_MEMBER_LIMIT
  104.        # アクタースプライトを追加
  105.        @actor_sprites.push(Sprite_Battler.new(actor_viewport))
  106.        @actor_sprites[i-1].battler = $game_party.actors[i-1]
  107.      end
  108.    end
  109.    # ビューポートを更新
  110.    actor_viewport.update
  111. end
  112. end
  113. #==============================================================================
  114. # ■ Scene_Battle
  115. #==============================================================================
  116. class Scene_Battle
  117. #--------------------------------------------------------------------------
  118. # ● インクルード
  119. #--------------------------------------------------------------------------
  120. include XRXS26
  121. #--------------------------------------------------------------------------
  122. # ● メイン処理 をパーティメンバー処理ではさむ
  123. #--------------------------------------------------------------------------
  124. alias xrxs26_main main
  125. def main
  126.    # 待機メンバーへ退避----------
  127.    $game_party.backword_actors[0,0] = $game_party.actors[FRONT_MEMBER_LIMIT, BACKWARD_MEMBER_LIMIT]
  128.    $game_party.actors[FRONT_MEMBER_LIMIT, BACKWARD_MEMBER_LIMIT] = nil
  129.    $game_party.actors.compact!
  130.    # メイン処理
  131.    xrxs26_main
  132.    # 待機メンバーから復帰
  133.    $game_party.actors[$game_party.actors.size,0] = $game_party.backword_actors
  134.    $game_party.backword_actors.clear
  135. end
  136. #--------------------------------------------------------------------------
  137. # ● アフターバトルフェーズ開始
  138. #--------------------------------------------------------------------------
  139. alias xrxs26_start_phase5 start_phase5
  140. def start_phase5
  141.    # 「待機メンバー経験値獲得」が有効 and 待機アクターが一人以上いる
  142.    if BACKWARD_EXP_GAINABLE and $game_party.backword_actors.size >= 1
  143.      # 待機メンバーから復帰
  144.      $game_party.actors[$game_party.actors.size,0] = $game_party.backword_actors
  145.      $game_party.backword_actors.clear
  146.      # 呼び戻す
  147.      xrxs26_start_phase5
  148.      # 待機メンバーへ退避----------
  149.      $game_party.backword_actors[0,0] = $game_party.actors[FRONT_MEMBER_LIMIT, BACKWARD_MEMBER_LIMIT]
  150.      $game_party.actors[FRONT_MEMBER_LIMIT, BACKWARD_MEMBER_LIMIT] = nil
  151.      $game_party.actors.compact!
  152.    else
  153.      # 呼び戻す
  154.      xrxs26_start_phase5
  155.    end
  156. end
  157. end
  158. # ▽△▽ XRXL 4. 第二カーソル 機構 ▽△▽
  159. # by 桜雅 在土

  160. #==============================================================================
  161. # --- XRXS. 第二カーソル 機構 ---
  162. #------------------------------------------------------------------------------
  163. #     ウィンドウに .index2 プロパティを追加します。
  164. #==============================================================================
  165. module XRXS_Cursor2
  166. #--------------------------------------------------------------------------
  167. # ● オブジェクト初期化
  168. #--------------------------------------------------------------------------
  169. def initialize(x, y, w, h)
  170.    super(x, y, h, w)
  171.    # 補助ウィンドウ(透明)を作成:カーソル専用
  172.    @xrxsc2_window = Window_Selectable.new(self.x, self.y, self.width, self.height)
  173.    @xrxsc2_window.opacity = 0
  174.    @xrxsc2_window.active = false
  175.    @xrxsc2_window.index = -1
  176. end
  177. #--------------------------------------------------------------------------
  178. # ○ 第二カーソルの設置
  179. #--------------------------------------------------------------------------
  180. def index2
  181.    return @xrxsc2_window.index
  182. end
  183. def index2=(index)
  184.    @xrxsc2_window.index = index
  185.    if index == -1
  186.      @xrxsc2_window.cursor_rect.empty
  187.    else
  188.      @xrxsc2_window.x = self.x
  189.      @xrxsc2_window.y = self.y
  190.      @xrxsc2_window.cursor_rect = self.cursor_rect
  191.    end
  192. end
  193. #--------------------------------------------------------------------------
  194. # ○ 先頭の行の設定
  195. #--------------------------------------------------------------------------
  196. def top_row=(row)
  197.    super
  198.    # 補助ウィンドウの oy を更新
  199.    pre_oy = @xrxsc2_window.oy
  200.    @xrxsc2_window.oy = self.oy
  201.    @xrxsc2_window.cursor_rect.y -= self.oy - pre_oy
  202. end
  203. #--------------------------------------------------------------------------
  204. # ○ 解放
  205. #--------------------------------------------------------------------------
  206. def dispose
  207.    @xrxsc2_window.dispose
  208.    super
  209. end
  210. #--------------------------------------------------------------------------
  211. # ○ X, Y 座標
  212. #--------------------------------------------------------------------------
  213. def x=(n)
  214.    super
  215.    @xrxsc2_window.x = self.x unless @xrxsc2_window.nil?
  216. end
  217. def y=(n)
  218.    super
  219.    @xrxsc2_window.y = self.y unless @xrxsc2_window.nil?
  220. end
  221. end
  222. # ▼▲▼ XRXS26AX. +入れ替えメニュー ver.2 ▼▲▼ built 081113
  223. # by 桜雅 在土

  224. #==============================================================================
  225. # ■ Window_MenuStatus
  226. #==============================================================================
  227. class Window_MenuStatus < Window_Selectable
  228. #--------------------------------------------------------------------------
  229. # ○ インクルード
  230. #--------------------------------------------------------------------------
  231. include XRXS26
  232. include XRXS_Cursor2
  233. #--------------------------------------------------------------------------
  234. # ● 公開インスタンス変数
  235. #--------------------------------------------------------------------------
  236. attr_reader   :column_max             # 列数
  237. #--------------------------------------------------------------------------
  238. # ● オブジェクト初期化
  239. #--------------------------------------------------------------------------
  240. def initialize
  241.    h = 480
  242.    if MENU_STATUS_STRETCH
  243.      h = FRONT_MEMBER_LIMIT * 116 + 16
  244.    end
  245.    super(0, 0, 480, h)
  246.    h = ($game_party.actors.size - 1) * LINE_HEIGHT + CURSOR_HEIGHT
  247.    self.contents = Bitmap.new(width - 32, h)
  248.    refresh
  249.    self.active = false
  250.    self.index = -1
  251. end
  252. #--------------------------------------------------------------------------
  253. # ○ 1 ページに表示できる行数の取得
  254. #--------------------------------------------------------------------------
  255. def page_row_max
  256.    if MENU_STATUS_STRETCH
  257.      return FRONT_MEMBER_LIMIT          # 戦闘パーティ最大数
  258.    else
  259.      return [FRONT_MEMBER_LIMIT, 4].max # 戦闘パーティ最大数(最低4)
  260.    end
  261. end
  262. #--------------------------------------------------------------------------
  263. # ○ 先頭の行の取得
  264. #--------------------------------------------------------------------------
  265. def top_row
  266.    # ウィンドウ内容の転送元 Y 座標を、1 行の高さ LINE_HEIGHT で割る
  267.    return self.oy / LINE_HEIGHT
  268. end
  269. #--------------------------------------------------------------------------
  270. # ○ 先頭の行の設定
  271. #--------------------------------------------------------------------------
  272. def top_row=(row)
  273.    super
  274.    self.oy = self.oy/32 * LINE_HEIGHT
  275. end
  276. #--------------------------------------------------------------------------
  277. # ● カーソルの矩形更新
  278. #--------------------------------------------------------------------------
  279. def update_cursor_rect
  280.    super
  281.    unless @index < 0
  282.      y = (self.cursor_rect.y + self.oy) * LINE_HEIGHT/32 - self.oy
  283.      self.cursor_rect.set(0, y, self.cursor_rect.width, CURSOR_HEIGHT)
  284.    end
  285. end
  286. end
  287. #==============================================================================
  288. # ■ Scene_Menu
  289. #==============================================================================
  290. class Scene_Menu
  291. #--------------------------------------------------------------------------
  292. # ○ インクルード
  293. #--------------------------------------------------------------------------
  294. include XRXS26
  295. #--------------------------------------------------------------------------
  296. # ● フレーム更新
  297. #--------------------------------------------------------------------------
  298. alias xrxs26ax_update update
  299. def update
  300.    # インデックスを保存
  301.    @status_index = @status_window.index
  302.    # 呼び戻す
  303.    xrxs26ax_update
  304. end
  305. #--------------------------------------------------------------------------
  306. # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  307. #--------------------------------------------------------------------------
  308. alias xrxs26ax_update_command update_command
  309. def update_command
  310.    # 呼び戻す
  311.    xrxs26ax_update_command
  312.    # 入れ替え移行キーが押されたとき、@command_window.indexが設定値以上
  313.    if Input.trigger?(MENU_MEMBER_CHANGE_KEY_GO) and
  314.       @command_window.index >= MENU_MEMBER_CHANGE_INDEX_MIN
  315.      # 決定 SE を演奏
  316.      $game_system.se_play($data_system.decision_se)
  317.      # カーソル位置を記憶
  318.      @command_index_before_menu_member_change = @command_window.index
  319.      # 入れ替えウィンドウへ移行
  320.      @command_window.active = false
  321.      @command_window.index = -1
  322.      @status_window.active = true
  323.      @status_window.index = 0
  324.    end
  325. end
  326. #--------------------------------------------------------------------------
  327. # ● フレーム更新 (ステータスウィンドウがアクティブの場合)
  328. #--------------------------------------------------------------------------
  329. alias xrxs26ax_update_status update_status
  330. def update_status
  331.    # 呼び戻す
  332.    if @command_window.index != -1
  333.      xrxs26ax_update_status
  334.      return
  335.    end
  336.    # B ボタンか入れ替え終了キーが押されたとき
  337.    if ((Input.trigger?(Input::B) or Input.trigger?(MENU_MEMBER_CHANGE_KEY_END)) and
  338.        @status_window.index2 == -1 and
  339.        @status_index%@status_window.column_max == 0)
  340.      # キャンセル SE を演奏
  341.      $game_system.se_play($data_system.cancel_se)
  342.      # コマンドウィンドウをアクティブにする
  343.      @command_window.active = true
  344.      @command_window.index = 0
  345.      @status_window.active = false
  346.      @status_window.index = -1
  347.      return
  348.    end
  349.    # B ボタンが押されたとき
  350.    if Input.trigger?(Input::B) and @status_window.index2 >= 0
  351.      @status_window.index = @status_window.index2
  352.      @status_window.index2 = -1
  353.      return
  354.    end
  355.    # 決定キーが押されたとき
  356.    if Input.trigger?(Input::V)
  357.      if @status_window.index2 == -1
  358.        if UNMOVABLE_ACTORS.include?($game_party.actors[@status_window.index].id)
  359.          # ブザー SE を演奏
  360.          $game_system.se_play($data_system.buzzer_se)
  361.          return
  362.        end
  363.        # 決定 SE を演奏
  364.        $game_system.se_play($data_system.decision_se)
  365.        # メンバーの入れ替え一人目の決定
  366.        @status_window.index2 = @status_window.index
  367.      else
  368.        if UNMOVABLE_ACTORS.include?($game_party.actors[@status_window.index].id)
  369.          # ブザー SE を演奏
  370.          $game_system.se_play($data_system.buzzer_se)
  371.          return
  372.        end
  373.        # どちらかが戦闘メンバー かつ どちらかが戦闘禁止アクター の場合
  374.        if (@status_window.index < FRONT_MEMBER_LIMIT or
  375.            @status_window.index2 < FRONT_MEMBER_LIMIT) and
  376.           (UMBATTLABLE_ACTORS.include?($game_party.actors[@status_window.index].id) or
  377.            UMBATTLABLE_ACTORS.include?($game_party.actors[@status_window.index2].id))
  378.          # ブザー SE を演奏
  379.          $game_system.se_play($data_system.buzzer_se)
  380.          return
  381.        end
  382.        # どちらかが待機メンバー かつ どちらかが待機禁止アクター の場合
  383.        if (@status_window.index >= FRONT_MEMBER_LIMIT or
  384.            @status_window.index2 >= FRONT_MEMBER_LIMIT) and
  385.           (FORCETOBATTLE_ACTORS.include?($game_party.actors[@status_window.index].id) or
  386.            FORCETOBATTLE_ACTORS.include?($game_party.actors[@status_window.index2].id))
  387.          # ブザー SE を演奏
  388.          $game_system.se_play($data_system.buzzer_se)
  389.          return
  390.        end
  391.        # 決定 SE を演奏
  392.        $game_system.se_play($data_system.decision_se)
  393.        # メンバーの入れ替え二人目の決定と入れ替えの実行
  394.        actor2 = $game_party.actors[@status_window.index]
  395.        actor = $game_party.actors[@status_window.index2]
  396.        $game_party.actors[@status_window.index2] = actor2
  397.        $game_party.actors[@status_window.index] = actor
  398.        @status_window.index = @status_window.index2
  399.        @status_window.index2 = -1
  400.        # プレイヤーをリフレッシュ
  401.        $game_player.refresh
  402.        # ステータスウィンドウをリフレッシュ
  403.        @status_window.refresh
  404.      end
  405.      return
  406.    end
  407. end
  408. end


  409. # 菜单界面脚本全部内容:

  410. #============================================================================================
  411. # 本脚本来自www.66RPG.com,转载和使用请保留此信息
  412. #============================================================================================

  413. # ▼▲▼ XRXS26BX. +BUZZデザイン ▼▲▼ built 033109
  414. # by 桜雅 在土

  415. #==============================================================================
  416. # □ 初始化定义
  417. #==============================================================================
  418. class Window_MenuStatus < Window_Selectable
  419. #
  420. # 不显示能力值的角色编号
  421. #
  422. NO_PARAMETER_ACTORS = []
  423. end
  424. #==============================================================================
  425. # ■ Window_MenuStatus
  426. #==============================================================================
  427. class Window_MenuStatus < Window_Selectable
  428. #--------------------------------------------------------------------------
  429. # ○ インクルード
  430. #--------------------------------------------------------------------------
  431. include XRXS26
  432. #--------------------------------------------------------------------------
  433. # ● 公開インスタンス変数
  434. #--------------------------------------------------------------------------
  435. attr_reader   :newitem_window
  436. attr_reader   :bottomkeyhelp_window
  437. #--------------------------------------------------------------------------
  438. # ● オブジェクト初期化
  439. #--------------------------------------------------------------------------
  440. alias xrxs26bx_initialize initialize
  441. def initialize
  442.    # 呼び戻す
  443.    xrxs26bx_initialize
  444.    # 寄生してウィンドウを作成
  445.    # ボトルキーヘルプウィンドウ
  446.    @bottomkeyhelp_window = Window_BottomKeyHelp.new
  447.    @bottomkeyhelp_window.visible = false
  448.    # 設定変更
  449.    self.height   = 448
  450.    self.contents = Bitmap.new(width - 32, height - 32)
  451.    refresh
  452. end
  453. #--------------------------------------------------------------------------
  454. # ● リフレッシュ
  455. #--------------------------------------------------------------------------
  456. def refresh
  457.    self.contents.clear
  458.    @item_max = $game_party.actors.size
  459.    @column_max = 2
  460.    y = (FRONT_MEMBER_LIMIT+1)/2 * 64 + 28
  461.    self.contents.font.size = 16
  462.    self.contents.font.color = system_color
  463.    self.contents.draw_text(4, 0, 92, 28, "战斗人数")
  464.    self.contents.draw_text(4, y, 92, 28, "待机人数")
  465.    for i in 0...$game_party.actors.size
  466.      x = 64 + i%2 * 224
  467.      y = i/2 *  72 + 24
  468.      actor = $game_party.actors
  469.      if i >= FRONT_MEMBER_LIMIT
  470.        y += 32
  471.        self.contents.font.color = disabled_color
  472.        self.contents.draw_text(x, y, 120, 32, actor.name)
  473.      else
  474.        draw_actor_name(actor   , x     , y     )
  475.      end
  476.      draw_actor_graphic(actor, x - 40, y + 64)
  477.      unless NO_PARAMETER_ACTORS.include?(actor.id)
  478.        draw_actor_level(actor  , x + 94, y     )
  479.        draw_actor_hp(actor     , x, y + 16)
  480.        draw_actor_sp(actor     , x, y + 32)
  481.        draw_actor_state(actor  , x, y + 48)
  482.      end
  483.    end
  484. end
  485. #--------------------------------------------------------------------------
  486. # ○ フレーム更新
  487. #--------------------------------------------------------------------------
  488. def update
  489.    # ウィンドウを更新
  490.    @bottomkeyhelp_window.update
  491.    super
  492. end
  493. #--------------------------------------------------------------------------
  494. # ○ 解放
  495. #--------------------------------------------------------------------------
  496. def dispose
  497.    @bottomkeyhelp_window.dispose
  498.    super
  499. end
  500. #--------------------------------------------------------------------------
  501. # ● カーソルの矩形更新
  502. #--------------------------------------------------------------------------
  503. def update_cursor_rect
  504.    if @index < 0
  505.      self.cursor_rect.empty
  506.    else
  507.      y = @index/2 * 72 + 28
  508.      if @index >= FRONT_MEMBER_LIMIT
  509.        y += 32
  510.      end
  511.      self.cursor_rect.set(@index%2 * 224, y, 224, 72)
  512.    end
  513. end
  514. end
  515. #==============================================================================
  516. # ■ Scene_Menu
  517. #==============================================================================
  518. class Scene_Menu
  519. #--------------------------------------------------------------------------
  520. # ● フレーム更新
  521. #--------------------------------------------------------------------------
  522. alias xrxs26bx_update update
  523. def update
  524.    # 登録
  525.    if @bottomkeyhelp_window.nil?
  526.      @bottomkeyhelp_window = @status_window.bottomkeyhelp_window
  527.      @bottomkeyhelp_window.visible = true
  528.      set_keyhelp1
  529.    end
  530.    # 呼び戻す
  531.    xrxs26bx_update
  532. end
  533. #--------------------------------------------------------------------------
  534. # ● フレーム更新 (コマンドウィンドウがアクティブの場合)
  535. #--------------------------------------------------------------------------
  536. alias xrxs26bx_update_command update_command
  537. def update_command
  538.    # 呼び戻す
  539.    xrxs26bx_update_command
  540.    # 入れ替え移行キーが押されたとき
  541.    if @command_window.index == -1 and @status_window.active
  542.      set_keyhelp2
  543.    end
  544. end
  545. #--------------------------------------------------------------------------
  546. # ● フレーム更新 (ステータスウィンドウがアクティブの場合)
  547. #--------------------------------------------------------------------------
  548. alias xrxs26bx_update_status update_status
  549. def update_status
  550.    # 保存
  551.    last_index = @status_window.index2
  552.    # 呼び戻す
  553.    xrxs26bx_update_status
  554.    #
  555.    if last_index != @status_window.index2
  556.      # 一人目を選択した場合
  557.      if @status_window.index2 >= 0
  558.        set_keyhelp3
  559.      else
  560.        set_keyhelp2
  561.      end
  562.    end
  563.    # 戻った場合
  564.    unless @status_window.active
  565.      set_keyhelp1
  566.    end
  567. end
  568. #--------------------------------------------------------------------------
  569. # ○ キーヘルプを設定 1
  570. #--------------------------------------------------------------------------
  571. def set_keyhelp1
  572.    @bottomkeyhelp_window.clear
  573.    @bottomkeyhelp_window.add("B","关闭本窗口")
  574.    @bottomkeyhelp_window.add("C","确定")
  575.    @bottomkeyhelp_window.add("→","人物顺序调整")
  576. end
  577. #--------------------------------------------------------------------------
  578. # ○ キーヘルプを設定 2
  579. #--------------------------------------------------------------------------
  580. def set_keyhelp2
  581.    @bottomkeyhelp_window.clear
  582.    @bottomkeyhelp_window.add("←,B","返回")
  583.    @bottomkeyhelp_window.add("C","第一个人物确定")
  584. end
  585. #--------------------------------------------------------------------------
  586. # ○ キーヘルプを設定 3
  587. #--------------------------------------------------------------------------
  588. def set_keyhelp3
  589.    @bottomkeyhelp_window.clear
  590.    @bottomkeyhelp_window.add("B","返回")
  591.    @bottomkeyhelp_window.add("C","第二个人物确定")
  592. end
  593. end



  594. #==============================================================================
  595. # □ Window_BottomKeyHelp
  596. #------------------------------------------------------------------------------
  597. #     画面下で操作説明をする透明なウィンドウです。
  598. #==============================================================================
  599. class Window_BottomKeyHelp < Window_Base
  600. #--------------------------------------------------------------------------
  601. # ○ オブジェクト初期化
  602. #--------------------------------------------------------------------------
  603. def initialize
  604.    super(0, 432, 640, 64)
  605.    self.contents = Bitmap.new(width - 32, height - 32)
  606.    self.opacity = 0
  607.    clear
  608. end
  609. #--------------------------------------------------------------------------
  610. # ○ クリア
  611. #--------------------------------------------------------------------------
  612. def clear
  613.    self.contents.clear
  614.    @now_x = 608
  615. end
  616. #--------------------------------------------------------------------------
  617. # ○ 追加
  618. #--------------------------------------------------------------------------
  619. def add(key, explanation)
  620.    # 計算
  621.    self.contents.font.size = 20
  622.    x  = self.contents.text_size(key).width
  623.    self.contents.font.size = 16
  624.    x += self.contents.text_size(explanation).width + 8
  625.    @now_x -= x
  626.    # 描写
  627.    self.contents.font.size = 20
  628.    self.contents.font.color = system_color
  629.    self.contents.draw_text(@now_x, 0, x, 32, key, 0)
  630.    self.contents.font.size = 16
  631.    self.contents.font.color = normal_color
  632.    self.contents.draw_text(@now_x, 0, x, 32, explanation, 2)
  633.    # 余白
  634.    @now_x -= 32
  635. end
  636. end

  637. #==============================================================================
  638. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  639. #==============================================================================
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

垃圾死人

梦石
0
星屑
50
在线时间
285 小时
注册时间
2009-1-27
帖子
2420

贵宾

5
发表于 2010-12-18 12:53:55 | 只看该作者
这类问题随便一搜索就出来一大把了...
努力努力再努力
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1896
在线时间
896 小时
注册时间
2010-11-13
帖子
406
4
发表于 2010-12-18 11:47:52 | 只看该作者
本帖最后由 塞巴斯特 于 2010-12-18 11:54 编辑

原谅我忘记怎么用代码套- -

队伍最大人数自己调....
出战人数建议用1~4
因为5个的话,虽然那个人也可以攻击,但是是没图的.......也没人的.....

module LimBattlePlug

# 队伍最大人数
MaxPartySize = 60

# 出战人数
MaxBattlerSize = 4

# 换人语句
WordChangeBattler = "换人"

# 换人时播放的动画
AnimationChangeBattler = 26

end

class Game_BattleAction
  attr_accessor :change_to_battler
  # 初始化
  alias lbp_initialize initialize
  def initialize
    lbp_initialize
    @change_to_battler = 0
  end
  # 欲更换角色编号
  def set_change_battler
    @kind = 3
  end
  # 判断行动是否为更换角色
  def is_change_battler?
    return (@kind == 3)
  end
end

class Game_Party
  include LimBattlePlug
  attr_reader :actors2
  alias lpb_initialize initialize
  def initialize
    lpb_initialize
    @actors2 = []
  end
  # 角色加入
  def add_actor(actor_id)
    actor = $game_actors[actor_id]
    if @actors.size < MaxPartySize and not @actors.include?(actor)
      @actors.push(actor)
      $game_player.refresh
    end
  end
  # 设置战斗的角色
  def set_actor_to_battle
    @actors2 = []
    @actors.each do |actor|
      @actors2.push(actor)
    end
    @actors = []
    @actors2.each do |actor|
      @actors.push(actor)
      break if @actors.size == MaxBattlerSize
    end
  end
  # 还原战斗的角色
  def set_actor_to_normal
    @actors = []
    @actors2.each do |actor|
      @actors.push(actor)
    end
  end
  # 获取角色id数组
  def get_actors_id
    id = []
    @actors.each{|actor|id.push(actor.id)}
    return id
  end
  # 获取角色id数组
  def get_actors2_id
    id = []
    @actors2.each{|actor|id.push(actor.id)}
    return id
  end
  # 兑换角色
  def change_actor(index,id)
    @actors[index] = $game_actors[id]
  end
  # 全灭判定
  def all_dead?
    # 同伴人数为 0 的情况下
    if $game_party.actors.size == 0
      return false
    end
    # 同伴中无人 HP 在 0 以上
    for actor in @actors2
      if actor.hp > 0
        return false
      end
    end
    for actor in @actors
      if actor.hp > 0
        return false
      end
    end
    # 全灭
    return true
  end
  # 其他角色
  def other_actors
    actors = []
    @actors2.each{|actor|actors.push(actor) if [email protected]?(actor)}
    return actors
  end
  # 角色位置互换
  def change_actor_pos(id1,id2)
    actor_id = []
    @actors.each do |actor|
      actor_id.push(actor.id)
    end
    return if !actor_id.include?(id1) and !actor_id.include?(id2)
    id1_index = id2_index = -1
    (0...actor_id.size).each do |i|
      if actor_id == id1
        id1_index = i
      elsif actor_id == id2
        id2_index = i
      end
    end
    temp_actor = @actors[id1_index]
    @actors[id1_index] = @actors[id2_index]
    @actors[id2_index] = temp_actor
  end
end

class Window_Actor < Window_Selectable
  # 初始化
  def initialize
    super(0,64,640,256)
    self.back_opacity = 160
    refresh
    self.index = -1
    self.active = false
  end
  # 刷新
  def refresh
    @item_max = $game_party.actors2.size
    @data = []
    $game_party.actors.each do |actor|
      @data.push(actor)
    end
    $game_party.actors2.each do |actor|
      @data.push(actor) if [email protected]?(actor)
    end
    if self.contents != nil
      self.contents.clear
      self.contents = nil
    end
    self.contents = Bitmap.new(608,@data.size*32)
    x = 4
    y = 0
    @data.each do |actor|
      bitmap = RPG::Cache.character(actor.character_name,actor.character_hue)
      rect = Rect.new(0,0,bitmap.width/4,31)
      self.contents.blt(x+16-bitmap.width/8,y,bitmap,rect)
      draw_actor_name(actor,x+36,y)
      draw_actor_state(actor,156,y)
      draw_actor_hp(actor,x+256,y,96)
      draw_actor_sp(actor,x+376,y,96)
      if $game_party.actors.include?(actor)
        self.contents.font.color = text_color(6)
        cword = "出战"
      else
        self.contents.font.color = text_color(0)
        cword = "待战"
      end
      self.contents.draw_text(x+496,y,60,32,cword)
      y += 32
    end
  end
  # 获取当前角色编号
  def actor_id
    return @data[self.index].id
  end
  # 刷新帮助
  def update_help
    @help_window.set_text(@data[self.index] == nil ?\
                          "" : @data[self.index].name)
  end
end

class Scene_Battle
  include LimBattlePlug
  # 初始化
  def initialize
    $game_party.set_actor_to_battle
  end
  # 主处理
  def main
    # 初始化战斗用的各种暂时数据
    $game_temp.in_battle = true
    $game_temp.battle_turn = 0
    $game_temp.battle_event_flags.clear
    $game_temp.battle_abort = false
    $game_temp.battle_main_phase = false
    $game_temp.battleback_name = $game_map.battleback_name
    $game_temp.forcing_battler = nil
    # 初始化战斗用事件解释器
    $game_system.battle_interpreter.setup(nil, 0)
    # 准备队伍
    @troop_id = $game_temp.battle_troop_id
    $game_troop.setup(@troop_id)
    # 生成角色命令窗口
    s1 = $data_system.words.attack
    s2 = $data_system.words.skill
    s3 = $data_system.words.guard
    s4 = $data_system.words.item
    s5 = WordChangeBattler
    @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4,s5])
    @actor_command_window.y = 128
    @actor_command_window.back_opacity = 160
    @actor_command_window.active = false
    @actor_command_window.visible = false
    # 生成其它窗口
    @party_command_window = Window_PartyCommand.new
    @help_window = Window_Help.new
    @help_window.back_opacity = 160
    @help_window.visible = false
    @status_window = Window_BattleStatus.new
    @message_window = Window_Message.new
    # 生成活动块
    @spriteset = Spriteset_Battle.new
    # 初始化等待计数
    @wait_count = 0
    # 执行过渡
    if $data_system.battle_transition == ""
      Graphics.transition(20)
    else
      Graphics.transition(40, "Graphics/Transitions/" +
        $data_system.battle_transition)
    end
    # 开始自由战斗回合
    start_phase1
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 刷新地图
    $game_map.refresh
    # 准备过渡
    Graphics.freeze
    # 释放窗口
    @actor_command_window.dispose
    @party_command_window.dispose
    @help_window.dispose
    @status_window.dispose
    @message_window.dispose
    if @skill_window != nil
      @skill_window.dispose
    end
    if @item_window != nil
      @item_window.dispose
    end
    if @actor_window != nil
      @actor_window.dispose
    end
    if @result_window != nil
      @result_window.dispose
    end
    # 释放活动块
    @spriteset.dispose
    # 标题画面切换中的情况
    if $scene.is_a?(Scene_Title)
      # 淡入淡出画面
      Graphics.transition
      Graphics.freeze
    end
    # 战斗测试或者游戏结束以外的画面切换中的情况
    if $BTEST and not $scene.is_a?(Scene_Gameover)
      $scene = nil
    end
  end
  # 战斗结束
  alias lpb_battle_end battle_end
  def battle_end(n)
    lpb_battle_end(n)
    $game_party.set_actor_to_normal
  end
  # 开始回合3
  alias lbp_start_phase3 start_phase3
  def start_phase3
    @changed_battler_id = []
    lbp_start_phase3
  end
  # 刷新角色命令回合画面
  def update_phase3
    # 敌人光标有效的情况下
    if @enemy_arrow != nil
      update_phase3_enemy_select
    # 角色光标有效的情况下
    elsif @actor_arrow != nil
      update_phase3_actor_select
    # 特技窗口有效的情况下
    elsif @skill_window != nil
      update_phase3_skill_select
    # 物品窗口有效的情况下
    elsif @item_window != nil
      update_phase3_item_select
    elsif @actor_window != nil
      update_phase3_battler_select
    # 角色指令窗口有效的情况下
    elsif @actor_command_window.active
      update_phase3_basic_command
    end
  end
  # 角色基本命令
  def update_phase3_basic_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 转向前一个角色的指令输入
      phase3_prior_actor
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 角色指令窗口光标位置分之
      case @actor_command_window.index
      when 0  # 攻击
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
        # 开始选择敌人
        start_enemy_select
      when 1  # 特技
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 1
        # 开始选择特技
        start_skill_select
      when 2  # 防御
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 1
        # 转向下一位角色的指令输入
        phase3_next_actor
      when 3  # 物品
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 2
        # 开始选择物品
        start_item_select
      when 4 # 换人
        $game_system.se_play($data_system.decision_se)
        @active_battler.current_action.set_change_battler
        start_battler_select
      end
      return
    end
  end
  # 开始角色选择
  def start_battler_select
    @actor_window = Window_Actor.new
    @actor_window.active = true
    @actor_window.index = 0
    @actor_window.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
  # 结束角色选择
  def end_battler_select
    @actor_window.dispose
    @actor_window = nil
    @help_window.visible = false
    @actor_command_window.active = true
    @actor_command_window.visible = true
  end
  # 刷新角色选择
  def update_phase3_battler_select
    @actor_window.visible = true
    @actor_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_battler_select
      return
    end
    if Input.trigger?(Input::C)
      actor_id = @actor_window.actor_id
      if $game_party.get_actors_id.include?(actor_id) or
         $game_actors[actor_id].dead? or
         @changed_battler_id.include?(actor_id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.change_to_battler = actor_id
      @changed_battler_id.push(actor_id)
      end_battler_select
      phase3_next_actor
      return
    end
  end
  # 行动方动画
  def update_phase4_step3
    if @active_battler.current_action.is_change_battler?
      @animation1_id = AnimationChangeBattler
      @target_battlers = []
    end
    # 行动方动画 (ID 为 0 的情况下是白色闪烁)
    if @animation1_id == 0
      @active_battler.white_flash = true
    else
      @active_battler.animation_id = @animation1_id
      @active_battler.animation_hit = true
    end
    # 移至步骤 4
    @phase4_step = 4
  end
  # 对象方动画
  def update_phase4_step4
    if @active_battler.current_action.is_change_battler?
      actor1_id = @active_battler.current_action.change_to_battler
      actor2_id = @active_battler.id
      (0...$game_party.actors.size).each do |i|
        if $game_party.actors.id == actor2_id
          $game_party.change_actor(i,actor1_id)
          @active_battler = $game_actors[actor1_id]
          @status_window.refresh
        end
      end
    end
    # 对像方动画
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != "Miss")
    end
    # 限制动画长度、最低 8 帧
    @wait_count = 8
    # 移至步骤 5
    @phase4_step = 5
  end
  # 公共事件
  def update_phase4_step6
    @target_battlers.each do |target|
      if target.is_a?(Game_Actor) and target.dead? and
         !$game_party.other_actors.all?{|actor|actor.dead?}
        @actor_window = Window_Actor.new
        @actor_window.index = 0
        @actor_window.active = true
        @actor_window.help_window = @help_window
        actor_id = -1
        loop do
          Graphics.update
          Input.update
          @actor_window.update
          if Input.trigger?(Input::C)
            actor = $game_actors[@actor_window.actor_id]
            if actor.dead? or
               (@changed_battler_id.include?(actor.id) and
                target.current_action.change_to_battler != actor.id) or
               $game_party.actors.include?(actor)
              $game_system.se_play($data_system.buzzer_se)
            else
              actor_id = actor.id
            end
          end
          break if actor_id >= 0
        end
        @actor_window.visible = false
        @actor_window.dispose
        @actor_window = nil
        @help_window.visible = false
        (0...$game_party.actors.size).each do |i|
          if $game_party.actors.id == target.id
            $game_party.change_actor(i,actor_id)
            @status_window.refresh
          end
        end
      end
    end
    # 清除强制行动对像的战斗者
    $game_temp.forcing_battler = nil
    # 公共事件 ID 有效的情况下
    if @common_event_id > 0
      # 设置事件
      common_event = $data_common_events[@common_event_id]
      $game_system.battle_interpreter.setup(common_event.list, 0)
    end
    # 移至步骤 1
    @phase4_step = 1
  end
end

class Window_MenuStatus
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      x = 4
      y = i * 32
      actor = $game_party.actors
      bitmap = RPG::Cache.character(actor.character_name,actor.character_hue)
      rect = Rect.new(0,0,bitmap.width/4,31)
      self.contents.blt(x+16-bitmap.width/8,y,bitmap,rect)
      draw_actor_name(actor, x+36, y)
      draw_actor_state(actor, x + 136,y)
      draw_actor_hp(actor, x + 236, y,96)
      draw_actor_sp(actor, x + 336, y,96)
    end
  end
  def update_cursor_rect
    super
  end
end
想也一直在把精力放在自认为重要的事上,可能一会,可能一辈子不会填坑,失态
回复 支持 反对

使用道具 举报

Lv1.梦旅人

真·零峰

梦石
0
星屑
130
在线时间
109 小时
注册时间
2009-7-24
帖子
165
3
发表于 2010-12-18 09:38:51 | 只看该作者
由于是手机上网 实在上不了脚本,原谅我吧(-_-)
回复 支持 反对

使用道具 举报

Lv1.梦旅人

真·零峰

梦石
0
星屑
130
在线时间
109 小时
注册时间
2009-7-24
帖子
165
2
发表于 2010-12-18 09:37:54 | 只看该作者
还是那句话,看下宝典吧,现在为什么都不看宝典了呢?宝典里有N多类似人物仓库的教本,其中天干宝典乙卷里就有人物扩张其它的就不说了,LZ自己看看吧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 11:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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