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

Project1

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

[已经过期] 这个队伍人数管理脚本,如何修改?

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
50 小时
注册时间
2011-1-28
帖子
92
跳转到指定楼层
1
发表于 2011-2-2 00:34:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

梦石
0
星屑
50
在线时间
336 小时
注册时间
2010-8-26
帖子
428
2
发表于 2011-2-2 19:50:17 | 只看该作者
我只是想说,这虽然是日文的,但 # ◆ 戦闘メンバー最大数 (デフォルト値)
  #  5 以上にすると、戦闘画面のステータスがやや見辛くなります。
  MAX_BATTLE_MEMBERS = 5
  # ◆ パーティメンバー最大数
  #  Game_Party::MAX_MEMBERS を上書きします。
如此的日文你应该看得懂吧


巧克力猫咪于2011-2-14 12:53补充以下内容:
代码复制
  1. # 1.系统呼出命令: $scene = Scene_Party.new
  2.  
  3. # 2.队员锁定命令: $game_party.members[0].actor.required = true  
  4. # (其中数字0表示1号队员在队伍中锁定而无法进入仓库,1即为2号队员,以此类推)
  5.  
  6. # 3.队员加入仓库命令: $data_actors[5].found = true  
  7. # (其中数字5表示5号队员直接进入仓库等待招募而不加入队伍,当队伍满员时使用此命令)
  8.  
  9. # 4.队员踢除仓库命令: $data_actors[5].found = false  
  10. # (其中数字5表示将呆在仓库里的5号队员清除,该命令用于离开的队员)
  11.  
  12. # 5.队员加入仓库但无法被招募:$data_actors[8].found = true
  13. #                              $data_actors[8].unavailable = true  
  14. # (其中数字8表示8号队员# 直接进入仓库但无法被招募,该命令用于俘虏类)
  15.  
  16. # 6.仓库里无法招募的队员启动命令: $data_actors.each do |a|
  17. #                                    a.unavailable = false if a
  18. #                                   end                           
  19. # (该命令作为第5项命令的补充,使所有仓库里无法被招募的队员重启为可招募状态)
  20.  
  21. # 7.全体队员进入仓库: $data_actors.each do |a|
  22. #                         a.found = true if a
  23. #                        nd                    
  24. # (该命令使所有队员进入仓库等待招募,在队伍 中的队员不受影响)   
  25.  
  26. #  队员管理脚本(v1.1c)
  27.  
  28.  
  29.  
  30. module RPG
  31.  
  32.   class Actor
  33.  
  34.     def setup
  35.  
  36.       @found = false
  37.  
  38.       @unavailable = false
  39.  
  40.       @required = false
  41.  
  42.     end
  43.  
  44.     attr_accessor :found
  45.  
  46.     attr_accessor :unavailable
  47.  
  48.     attr_accessor :required
  49.  
  50.   end
  51.  
  52. end
  53.  
  54.  
  55.  
  56. class Game_Actors
  57.  
  58.   attr_reader :data
  59.  
  60.   alias prex_party_g_actors_initialize initialize
  61.  
  62.   def initialize
  63.  
  64.     prex_party_g_actors_initialize
  65.  
  66.     $data_actors.each do |actor|
  67.  
  68.       actor.setup if actor
  69.  
  70.       @data[actor.id] = Game_Actor.new(actor.id) if actor
  71.  
  72.     end
  73.  
  74.   end
  75.  
  76. end
  77.  
  78.  
  79.  
  80. class Scene_File < Scene_Base
  81.  
  82.   alias prex_party_s_file_write_save_data write_save_data
  83.  
  84.   alias prex_party_s_file_read_save_data read_save_data
  85.  
  86.   def write_save_data(file)
  87.  
  88.     prex_party_s_file_write_save_data(file)
  89.  
  90.     Marshal.dump($data_actors, file)
  91.  
  92.   end
  93.  
  94.   def read_save_data(file)
  95.  
  96.     prex_party_s_file_read_save_data(file)
  97.  
  98.     $data_actors = Marshal.load(file)
  99.  
  100.   end
  101.  
  102. end
  103.  
  104.  
  105.  
  106. class Scene_Title < Scene_Base
  107.  
  108.   alias prex_party_s_title_command_new_game command_new_game
  109.  
  110.   def command_new_game
  111.  
  112.     prex_party_s_title_command_new_game
  113.  
  114.     $game_party.members.each {|s| s.actor.found = true if s}
  115.  
  116.   end
  117.  
  118. end
  119.  
  120.  
  121.  
  122. class Window_Base < Window
  123.  
  124.   def draw_item_name(item, x, y, enabled = true, width = 172)
  125.  
  126.     if item != nil
  127.  
  128.       draw_icon(item.icon_index, x, y, enabled)
  129.  
  130.       self.contents.font.color = normal_color
  131.  
  132.       self.contents.font.color.alpha = enabled ? 255 : 128
  133.  
  134.       self.contents.draw_text(x + 24, y, width, WLH, item.name)
  135.  
  136.     end
  137.  
  138.   end
  139.  
  140. end
  141.  
  142.  
  143.  
  144. class Scene_Party < Scene_Base
  145.  
  146.   def start
  147.  
  148.     super
  149.  
  150.     create_menu_background
  151.  
  152.     create_windows
  153.  
  154.   end
  155.  
  156.   def create_windows
  157.  
  158.     @member_window = Window_CurrentMember.new
  159.  
  160.     @party_window = Window_CurrentParty.new
  161.  
  162.     @party_window.active = true
  163.  
  164.     @selectable_window = Window_SelectMember.new
  165.  
  166.   end
  167.  
  168.   def update_windows
  169.  
  170.     @member_window.update
  171.  
  172.     @party_window.update
  173.  
  174.     @selectable_window.update
  175.  
  176.     if @party_window.active
  177.  
  178.       @member_window.set_member(@party_window.member)
  179.  
  180.     elsif @selectable_window.active
  181.  
  182.       @member_window.set_member(@selectable_window.member)
  183.  
  184.     end
  185.  
  186.   end
  187.  
  188.   def terminate
  189.  
  190.     super
  191.  
  192.     @member_window.dispose
  193.  
  194.     @party_window.dispose
  195.  
  196.     @selectable_window.dispose
  197.  
  198.   end
  199.  
  200.   def update
  201.  
  202.     super
  203.  
  204.     update_windows
  205.  
  206.     update_input
  207.  
  208.   end
  209.  
  210.   def update_input
  211.  
  212.     if Input.trigger?(Input::A)
  213.  
  214.       if @member_window.mode == 1
  215.  
  216.         @member_window.set_mode(0)
  217.  
  218.       elsif @member_window.mode == 0
  219.  
  220.         @member_window.set_mode(1)
  221.  
  222.       end
  223.  
  224.     end
  225.  
  226.     if @party_window.active
  227.  
  228.       if Input.trigger?(Input::B)
  229.  
  230.         Sound.play_cancel
  231.  
  232.         $scene = Scene_Map.new
  233.  
  234.       elsif Input.trigger?(Input::C)
  235.  
  236.         member = @party_window.member
  237.  
  238.         if member != nil
  239.  
  240.           if member.actor.unavailable or member.actor.required
  241.  
  242.             Sound.play_buzzer
  243.  
  244.             return
  245.  
  246.           end
  247.  
  248.         end
  249.  
  250.         Sound.play_decision
  251.  
  252.         @party_window.active = false
  253.  
  254.         @selectable_window.active = true
  255.  
  256.         @selectable_window.index = 0
  257.  
  258.       end
  259.  
  260.     elsif @selectable_window.active
  261.  
  262.       if Input.trigger?(Input::B)
  263.  
  264.         Sound.play_cancel
  265.  
  266.         @selectable_window.index = -1
  267.  
  268.         @selectable_window.active = false
  269.  
  270.         @party_window.active = true
  271.  
  272.       elsif Input.trigger?(Input::C)
  273.  
  274.         member = @selectable_window.member
  275.  
  276.         if member != nil
  277.  
  278.           if member.actor.unavailable
  279.  
  280.             Sound.play_buzzer
  281.  
  282.             return
  283.  
  284.           end
  285.  
  286.         end
  287.  
  288.         Sound.play_decision
  289.  
  290.         $game_party.remove_actor(@party_window.member.id) if @party_window.member != nil
  291.  
  292.         $game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil
  293.  
  294.         @selectable_window.refresh
  295.  
  296.         @party_window.refresh
  297.  
  298.         @selectable_window.index = -1
  299.  
  300.         @selectable_window.active = false
  301.  
  302.         @party_window.active = true
  303.  
  304.       end
  305.  
  306.     end
  307.  
  308.   end
  309.  
  310. end
  311.  
  312.  
  313.  
  314. class Window_CurrentMember < Window_Base
  315.  
  316.   attr_reader :mode
  317.  
  318.   def initialize(member = nil, mode = 0)
  319.  
  320.     super(304, 80, 192, 256)
  321.  
  322.     create_contents
  323.  
  324.     @member = member
  325.  
  326.     @mode = 0
  327.  
  328.     refresh
  329.  
  330.   end
  331.  
  332.   def member
  333.  
  334.     return @member
  335.  
  336.   end
  337.  
  338.   def set_member(member)
  339.  
  340.     old_member = @member
  341.  
  342.     @member = member
  343.  
  344.     refresh if old_member != @member
  345.  
  346.   end
  347.  
  348.   def set_mode(mode)
  349.  
  350.     @mode = mode if [0, 1].include?(mode)
  351.  
  352.     refresh
  353.  
  354.   end
  355.  
  356.   def refresh
  357.  
  358.     self.contents.clear
  359.  
  360.     return unless @member
  361.  
  362.     x, y = 0, 0
  363.  
  364.  
  365.  
  366.     self.draw_actor_name(@member, x + 100, y)
  367.  
  368.     self.draw_actor_class(@member, x + 100, y + WLH)
  369.  
  370.     self.draw_actor_level(@member, x + 103, y + WLH*2)
  371.  
  372.     case @mode
  373.  
  374.     when 0
  375.  
  376.       self.draw_actor_face(@member, x, y, 96) #****
  377.  
  378.       self.draw_actor_hp(@member, x, y + WLH*3, 160)
  379.  
  380.       self.draw_actor_mp(@member, x, y + WLH*4, 160)
  381.  
  382.       self.draw_actor_parameter(@member, x, y + WLH*5, 0)
  383.  
  384.       self.draw_actor_parameter(@member, x, y + WLH*6, 1)
  385.  
  386.       self.draw_actor_parameter(@member, x, y + WLH*7, 2)
  387.  
  388.       self.draw_actor_parameter(@member, x, y + WLH*8, 3)
  389.  
  390.     when 1
  391.  
  392.       self.draw_actor_face(@member, x, y, 96) #****
  393.  
  394.       for i in [email protected]
  395.  
  396.         item = @member.equips[i]
  397.  
  398.         self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24)
  399.  
  400.       end
  401.  
  402.     end
  403.  
  404.   end
  405.  
  406. end
  407.  
  408.  
  409.  
  410. class Window_CurrentParty < Window_Selectable
  411.  
  412.   def initialize
  413.  
  414.     super(48, 80, 256, 64)
  415.  
  416.     @item_max = 4
  417.  
  418.     @column_max = @item_max
  419.  
  420.     create_contents
  421.  
  422.     self.index = 0
  423.  
  424.     refresh
  425.  
  426.   end
  427.  
  428.   def member
  429.  
  430.     return $game_party.members[self.index]
  431.  
  432.   end
  433.  
  434.   def refresh
  435.  
  436.     for i in 0...@item_max
  437.  
  438.       rect = item_rect(i)
  439.  
  440.       self.contents.clear_rect(rect)
  441.  
  442.     end
  443.  
  444.     for i in 0...$game_party.members.size
  445.  
  446.       rect = item_rect(i)
  447.  
  448.       bitmap = Cache.character($game_party.members[i].character_name)
  449.  
  450.       sign = $game_party.members[i].character_name[/^[\!\$]./]
  451.  
  452.       if sign != nil and sign.include?('$')
  453.  
  454.         cw = bitmap.width / 3
  455.  
  456.         ch = bitmap.height / 4
  457.  
  458.       else
  459.  
  460.         cw = bitmap.width / 12
  461.  
  462.         ch = bitmap.height / 8
  463.  
  464.       end
  465.  
  466.       n = $game_party.members[i].character_index
  467.  
  468.       src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  469.  
  470.       if $game_party.members[i].actor.unavailable
  471.  
  472.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
  473.  
  474.       else
  475.  
  476.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
  477.  
  478.       end
  479.  
  480.       if $game_party.members[i].actor.required
  481.  
  482.         lock_bitmap = Cache.system("Locked")
  483.  
  484.         self.contents.blt(rect.x + rect.width - lock_bitmap.width,
  485.  
  486.                           rect.y + rect.height - lock_bitmap.height,
  487.  
  488.                           lock_bitmap, lock_bitmap.rect)
  489.  
  490.       end
  491.  
  492.     end
  493.  
  494.   end
  495.  
  496.   def item_rect(index)
  497.  
  498.     rect = Rect.new(0, 0, 0, 0)
  499.  
  500.     rect.width = (contents.width + @spacing) / @column_max - @spacing
  501.  
  502.     rect.height = 32
  503.  
  504.     rect.x = index % @column_max * (rect.width + @spacing)
  505.  
  506.     rect.y = index / @column_max * 32
  507.  
  508.     return rect
  509.  
  510.   end
  511.  
  512. end
  513.  
  514.  
  515.  
  516. class Window_SelectMember < Window_Selectable
  517.  
  518.   def initialize
  519.  
  520.     super(48, 144, 256, 192)
  521.  
  522.     calculate_actors
  523.  
  524.     @item_max = @actors.size + 1
  525.  
  526.     @column_max = 4
  527.  
  528.     self.index = -1
  529.  
  530.     self.active = false
  531.  
  532.     refresh
  533.  
  534.   end
  535.  
  536.   def calculate_actors
  537.  
  538.     @actors = []
  539.  
  540.     for a in $game_actors.data
  541.  
  542.       @actors << a if a != nil and a.actor.found and !$game_party.members.include?(a)
  543.  
  544.     end
  545.  
  546.   end
  547.  
  548.   def member
  549.  
  550.     return @actors[self.index]
  551.  
  552.   end
  553.  
  554.   def refresh
  555.  
  556.     self.contents.clear
  557.  
  558.     calculate_actors
  559.  
  560.     @item_max = @actors.size + 1
  561.  
  562.     for i in [email protected]
  563.  
  564.       rect = item_rect(i)
  565.  
  566.       bitmap = Cache.character(@actors[i].character_name)
  567.  
  568.       sign = @actors[i].character_name[/^[\!\$]./]
  569.  
  570.       if sign != nil and sign.include?('$')
  571.  
  572.         cw = bitmap.width / 3
  573.  
  574.         ch = bitmap.height / 4
  575.  
  576.       else
  577.  
  578.         cw = bitmap.width / 12
  579.  
  580.         ch = bitmap.height / 8
  581.  
  582.       end
  583.  
  584.       n = @actors[i].character_index
  585.  
  586.       src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  587.  
  588.       if @actors[i].actor.unavailable
  589.  
  590.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
  591.  
  592.       else
  593.  
  594.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
  595.  
  596.       end
  597.  
  598.       if @actors[i].actor.required
  599.  
  600.         lock_bitmap = Cache.system("Locked")
  601.  
  602.         self.contents.blt(rect.x + rect.width - lock_bitmap.width,
  603.  
  604.                           rect.y + rect.height - lock_bitmap.height,
  605.  
  606.                           lock_bitmap, lock_bitmap.rect)
  607.  
  608.       end
  609.  
  610.     end
  611.  
  612.   end
  613.  
  614.   def item_rect(index)
  615.  
  616.     rect = Rect.new(0, 0, 0, 0)
  617.  
  618.     rect.width = (contents.width + @spacing) / @column_max - @spacing
  619.  
  620.     rect.height = 32
  621.  
  622.     rect.x = index % @column_max * (rect.width + @spacing)
  623.  
  624.     rect.y = index / @column_max * 32
  625.  
  626.     return rect
  627.  
  628.   end
  629.  
  630. end
建议用这个吧,我想你肯定看得懂

点评

美女,那么1号角色无法更换,这个怎么改?  发表于 2011-2-13 23:56
[
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-1 07:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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