Project1

标题: 【应求发布】8人队伍菜单 [打印本页]

作者: 冰舞蝶恋    时间: 2011-8-6 12:13
标题: 【应求发布】8人队伍菜单
本帖最后由 冰舞蝶恋 于 2011-8-6 18:34 编辑

不罗嗦了 今天时间比较紧。。
刚下载了VX。(电脑重装 之前的VX丢失了。)
这里是应小炫的要求制作的脚本。。
直接用默认改的。。美观度还不行(主要是为了赶时间喔)
直接上脚本跟截图 懒得做范例了。

  1. #==============================================================================
  2. # ○ 多人队伍脚本扩展-八人状态菜单
  3. #                      ——By.冰舞蝶恋
  4. #------------------------------------------------------------------------------
  5. # ■ Window_MenuStatus
  6. #------------------------------------------------------------------------------
  7. #  显示菜单画面和同伴状态的窗口。
  8. #==============================================================================

  9. class Window_MenuStatus < Window_Selectable
  10.   #--------------------------------------------------------------------------
  11.   # ● 初始化对像
  12.   #     x      : 窗口 X 座标
  13.   #     y      : 窗口 Y 座标
  14.   #--------------------------------------------------------------------------
  15.   def initialize(x, y)
  16.     super(x, y, 384, 416)
  17.     refresh
  18.     self.active = false
  19.     self.index = -1
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 刷新
  23.   #--------------------------------------------------------------------------
  24.   def refresh
  25.     self.contents.clear
  26.     @item_max = $game_party.members.size
  27.     if @item_max <= 4
  28.     for actor in $game_party.members
  29.       draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
  30.       x = 104
  31.       y = actor.index * 96 + WLH / 2
  32.       draw_actor_name(actor, x, y)
  33.       draw_actor_class(actor, x + 120, y)
  34.       draw_actor_level(actor, x, y + WLH * 1)
  35.       draw_actor_state(actor, x, y + WLH * 2)
  36.       draw_actor_hp(actor, x + 120, y + WLH * 1)
  37.       draw_actor_mp(actor, x + 120, y + WLH * 2)
  38.     end
  39.     else
  40.     for actor in $game_party.members
  41.      for a in 0..@item_max-1
  42.      if a < 4
  43.       draw_actor_face(actor, 2, actor.index * 96 + 2, 92)
  44.       x = 4
  45.       y = actor.index * 96 + WLH / 2-12
  46.       draw_actor_name(actor, x, y)
  47.       draw_actor_class(actor, x + 120-24, y)
  48.       draw_actor_level(actor, x+120-24, y + WLH * 1)
  49.       draw_actor_hp(actor, x + 120-24, y + WLH * 1+24, 72)
  50.       draw_actor_mp(actor, x + 120-24, y + WLH * 2+24, 72)
  51.      else
  52.       draw_actor_face(actor, 2+176, (actor.index - 4) * 96 + 2, 92)
  53.       x = 4+176
  54.       y = (actor.index - 4) * 96 + WLH / 2-12
  55.       draw_actor_name(actor, x, y)
  56.       draw_actor_class(actor, x + 120-24, y)
  57.       draw_actor_level(actor, x+120-24, y + WLH * 1)
  58.       draw_actor_hp(actor, x + 120-24, y + WLH * 1+24, 72)
  59.       draw_actor_mp(actor, x + 120-24, y + WLH * 2+24, 72)
  60.      end
  61.      end
  62.     end
  63.     end
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 更新光标
  67.   #--------------------------------------------------------------------------
  68.   def update_cursor
  69.     if @item_max <= 4
  70.     if @index < 0               # 无光标
  71.       self.cursor_rect.empty
  72.     elsif @index < @item_max    # 一般
  73.       self.cursor_rect.set(0, @index * 96, contents.width, 96)
  74.     elsif @index >= 100         # 使用本身
  75.       self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
  76.     else                        # 全体
  77.       self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
  78.     end
  79.     else
  80.     if @index < 0               # 无光标
  81.       self.cursor_rect.empty
  82.     elsif @index < @item_max    # 一般
  83.       if @index < 4
  84.         self.cursor_rect.set(0, @index * 96, 352 / 2, 96)
  85.       else
  86.         self.cursor_rect.set(352 / 2, (@index - 4) * 96, 352 / 2, 96)
  87.       end
  88.     elsif @index >= 100         # 使用本身
  89.       if @index-100 < 4
  90.         self.cursor_rect.set(0, (@index - 100) * 96, 352 / 2, 96)
  91.       else
  92.         self.cursor_rect.set(352 / 2, (@index - 100 - 4) * 96, 352 / 2, 96)
  93.       end
  94.     else                        # 全体
  95.       self.cursor_rect.set(0, 0, contents.width, 4*96)
  96.     end
  97.     end
  98.   end
  99. end
复制代码
效果截图:普通的选择画面(队伍中只有7人)


效果截图:特技使用范围是使用者本身


效果截图:使用全体范围的物品


效果截图:若队伍中只有四人或更少则分散排版(按默认排版)






最后:各位哥哥姐姐弟弟妹妹大叔大妈多给点分=-=咱穷死了了= =
作者: 夕阳武士    时间: 2011-8-6 12:19
挤。                  
据说要十个字节。
作者: BS包仔    时间: 2011-8-6 12:21
5个6个也能用?其他同上,好挤呀
作者: 黑崎一护    时间: 2011-8-6 12:30
很厉害的脚本啊,试试看效果怎么样,谢谢楼主分享这么好的脚本。
作者: 忧雪の伤    时间: 2011-8-6 16:14
嘛,那个……如果是8人以上,建议使用横条式(什么意思呢?就是没有头像或者把头像裁剪成字的大小,只显示名字的选择框)。
另外,可以考虑采用可以【翻页】的窗口,就可以更加方便去扩展。
作者: 炫火杀    时间: 2011-8-6 16:41
冰姐姐,那啥,谢谢啊
作者: summer92    时间: 2011-8-6 17:44
顶,似乎战斗的时候没出现8人
作者: R-零    时间: 2011-8-6 21:26
如果是先带入队员数量,然后计算出坐标,那样人数可以无限
作者: ms0688987    时间: 2011-8-6 21:52

乃好利害的呀〜

樱雅有个RGSS是横排的,人一多头像只剩眼睛XD
作者: 九夜神尊    时间: 2011-8-7 09:44
冰舞相当犀利了的说。
作者: 仲秋启明    时间: 2011-8-7 10:08
要头像有眼睛的话可以借鉴这个http://rpg.blue/thread-192793-1-1.html
作者: 夜之大神    时间: 2011-8-30 22:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: Gamesme    时间: 2011-10-15 22:35
楼主乃赢了。。感谢楼主
作者: 迷蓝の海    时间: 2011-10-15 22:37
VX的啊....虽然也很有爱。。。不过对VX还不熟.....想要Xp的///
作者: jin878404951    时间: 2011-10-23 11:34
很不错的说赞一个,
我现在看到最多的菜单就是八人了,
怎么没有十六人?
作者: 黎明之夜    时间: 2011-11-19 00:33
戰鬥時...
作者: 1344569430l    时间: 2012-1-2 16:38
这些代码怎么用?


1344569430l于2012-1-2 16:39补充以下内容:
这些代码怎么用?
作者: fxxxxf    时间: 2012-6-5 20:53
很不错,满怀开心的收了的说
作者: www66ds    时间: 2012-7-9 21:40
想当的犀利牛逼啊!
作者: woshiying8    时间: 2012-11-7 08:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: wen    时间: 2013-1-24 12:23
本帖最后由 wen 于 2013-1-24 12:24 编辑
  1. #==============================================================================
  2. # ■ Game_Party
  3. #------------------------------------------------------------------------------
  4. #  处理同伴的类。包含金钱以及物品的信息。本类的实例请参考 $game_party。
  5. #==============================================================================

  6. class Game_Party < Game_Unit
  7.   #--------------------------------------------------------------------------
  8.   # ● 常量
  9.   #--------------------------------------------------------------------------
  10.   MAX_MEMBERS = 8                 # 同伴最大数量
  11.   #--------------------------------------------------------------------------
  12.   # ● 定义实例变量
  13.   #--------------------------------------------------------------------------
  14.   attr_reader   :gold                     # 金钱数量
  15.   attr_reader   :steps                    # 步数
  16.   attr_accessor :last_item_id             # 光标位置记忆:物品
  17.   attr_accessor :last_actor_index         # 光标位置记忆:角色
  18.   attr_accessor :last_target_index        # 光标位置记忆:目标
  19.   #--------------------------------------------------------------------------
  20.   # ● 初始化对像
  21.   #--------------------------------------------------------------------------
  22.   def initialize
  23.     super
  24.     [url=home.php?mod=space&uid=236945]@gold[/url] = 0
  25.     @steps = 0
  26.     @last_item_id = 0
  27.     @last_actor_index = 0
  28.     @last_target_index = 0
  29.     @actors = []      # 队员(角色ID)
  30.     @items = {}       # 物品哈希列表(物品ID)
  31.     @weapons = {}     # 物品哈希列表(武器ID)
  32.     @armors = {}      # 物品哈希列表(防具ID)
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 获取队员
  36.   #--------------------------------------------------------------------------
  37.   def members
  38.     result = []
  39.     for i in @actors
  40.       result.push($game_actors[i])
  41.     end
  42.     return result
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 获取物品数组(包括武器和防具)
  46.   #--------------------------------------------------------------------------
  47.   def items
  48.     result = []
  49.     for i in @items.keys.sort
  50.       result.push($data_items[i]) if @items[i] > 0
  51.     end
  52.     for i in @weapons.keys.sort
  53.       result.push($data_weapons[i]) if @weapons[i] > 0
  54.     end
  55.     for i in @armors.keys.sort
  56.       result.push($data_armors[i]) if @armors[i] > 0
  57.     end
  58.     return result
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 初始队员设置
  62.   #--------------------------------------------------------------------------
  63.   def setup_starting_members
  64.     @actors = []
  65.     for i in $data_system.party_members
  66.       @actors.push(i)
  67.     end
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 获取队伍名称
  71.   #    只有一人时,返回主角名称。
  72.   #    多人时则返回 "XX的队伍"(按照在Vocab里的设定)。
  73.   #--------------------------------------------------------------------------
  74.   def name
  75.     if @actors.size == 0
  76.       return ''
  77.     elsif @actors.size == 1
  78.       return members[0].name
  79.     else
  80.       return sprintf(Vocab::PartyName, members[0].name)
  81.     end
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 战斗测试队伍设置
  85.   #--------------------------------------------------------------------------
  86.   def setup_battle_test_members
  87.     @actors = []
  88.     for battler in $data_system.test_battlers
  89.       actor = $game_actors[battler.actor_id]
  90.       actor.change_level(battler.level, false)
  91.       actor.change_equip_by_id(0, battler.weapon_id, true)
  92.       actor.change_equip_by_id(1, battler.armor1_id, true)
  93.       actor.change_equip_by_id(2, battler.armor2_id, true)
  94.       actor.change_equip_by_id(3, battler.armor3_id, true)
  95.       actor.change_equip_by_id(4, battler.armor4_id, true)
  96.       actor.recover_all
  97.       @actors.push(actor.id)
  98.     end
  99.     @items = {}
  100.     for i in 1...$data_items.size
  101.       if $data_items[i].battle_ok?
  102.         @items[i] = 99 unless $data_items[i].name.empty?
  103.       end
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 获取最高等级
  108.   #--------------------------------------------------------------------------
  109.   def max_level
  110.     level = 0
  111.     for i in @actors
  112.       actor = $game_actors[i]
  113.       level = actor.level if level < actor.level
  114.     end
  115.     return level
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 队员加入
  119.   #     actor_id : 角色ID
  120.   #--------------------------------------------------------------------------
  121.   def add_actor(actor_id)
  122.     if @actors.size < MAX_MEMBERS and not @actors.include?(actor_id)
  123.       @actors.push(actor_id)
  124.       $game_player.refresh
  125.     end
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 队员离开
  129.   #     actor_id : 角色ID
  130.   #--------------------------------------------------------------------------
  131.   def remove_actor(actor_id)
  132.     @actors.delete(actor_id)
  133.     $game_player.refresh
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 获得/损失金钱
  137.   #     n : 金钱数量
  138.   #--------------------------------------------------------------------------
  139.   def gain_gold(n)
  140.     [url=home.php?mod=space&uid=236945]@gold[/url] = [[@gold + n, 0].max, 9999999].min
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 损失金钱
  144.   #     n : 金钱数量
  145.   #--------------------------------------------------------------------------
  146.   def lose_gold(n)
  147.     gain_gold(-n)
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 增加步数
  151.   #--------------------------------------------------------------------------
  152.   def increase_steps
  153.     @steps += 1
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 获取物品持有数量
  157.   #     item : 物品
  158.   #--------------------------------------------------------------------------
  159.   def item_number(item)
  160.     case item
  161.     when RPG::Item
  162.       number = @items[item.id]
  163.     when RPG::Weapon
  164.       number = @weapons[item.id]
  165.     when RPG::Armor
  166.       number = @armors[item.id]
  167.     end
  168.     return number == nil ? 0 : number
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● 判断是否拥有某物品
  172.   #     item          : 物品
  173.   #     include_equip : 包括已装备的物品
  174.   #--------------------------------------------------------------------------
  175.   def has_item?(item, include_equip = false)
  176.     if item_number(item) > 0
  177.       return true
  178.     end
  179.     if include_equip
  180.       for actor in members
  181.         return true if actor.equips.include?(item)
  182.       end
  183.     end
  184.     return false
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 获得/损失物品
  188.   #     item          : 物品
  189.   #     n             : 数量
  190.   #     include_equip : 包括已装备的物品
  191.   #--------------------------------------------------------------------------
  192.   def gain_item(item, n, include_equip = false)
  193.     number = item_number(item)
  194.     case item
  195.     when RPG::Item
  196.       @items[item.id] = [[number + n, 0].max, 99].min
  197.     when RPG::Weapon
  198.       @weapons[item.id] = [[number + n, 0].max, 99].min
  199.     when RPG::Armor
  200.       @armors[item.id] = [[number + n, 0].max, 99].min
  201.     end
  202.     n += number
  203.     if include_equip and n < 0
  204.       for actor in members
  205.         while n < 0 and actor.equips.include?(item)
  206.           actor.discard_equip(item)
  207.           n += 1
  208.         end
  209.       end
  210.     end
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 损失物品
  214.   #     item          : 物品
  215.   #     n             : 数量
  216.   #     include_equip : 包括已装备的物品
  217.   #--------------------------------------------------------------------------
  218.   def lose_item(item, n, include_equip = false)
  219.     gain_item(item, -n, include_equip)
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ● 消耗物品
  223.   #     item : 物品
  224.   #    若所使用的物品为消耗品,则减少物品数量减一
  225.   #--------------------------------------------------------------------------
  226.   def consume_item(item)
  227.     if item.is_a?(RPG::Item) and item.consumable
  228.       lose_item(item, 1)
  229.     end
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 判断物品可以使用
  233.   #     item_id : 物品 ID
  234.   #--------------------------------------------------------------------------
  235.   def item_can_use?(item)
  236.     return false unless item.is_a?(RPG::Item)
  237.     return false if item_number(item) == 0
  238.     if $game_temp.in_battle
  239.       return item.battle_ok?
  240.     else
  241.       return item.menu_ok?
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 可以输入命令的判定
  246.   #    自动战斗则视为可以输入命令
  247.   #--------------------------------------------------------------------------
  248.   def inputable?
  249.     for actor in members
  250.       return true if actor.inputable?
  251.     end
  252.     return false
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 判断是否全灭
  256.   #--------------------------------------------------------------------------
  257.   def all_dead?
  258.     if @actors.size == 0 and not $game_temp.in_battle
  259.       return false
  260.     end
  261.     return existing_members.empty?
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 主角在地图上走一步的效果
  265.   #--------------------------------------------------------------------------
  266.   def on_player_walk
  267.     for actor in members
  268.       if actor.slip_damage?
  269.         actor.hp -= 1 if actor.hp > 1   # 持续伤害
  270.         $game_map.screen.start_flash(Color.new(255,0,0,64), 4)
  271.       end
  272.       if actor.auto_hp_recover and actor.hp > 0
  273.         actor.hp += 1                   # 体力自动回复
  274.       end
  275.     end
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● 执行自动回复(回合结束时调用)
  279.   #--------------------------------------------------------------------------
  280.   def do_auto_recovery
  281.     for actor in members
  282.       actor.do_auto_recovery
  283.     end
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 移除战斗状态(战斗结束时调用)
  287.   #--------------------------------------------------------------------------
  288.   def remove_states_battle
  289.     for actor in members
  290.       actor.remove_states_battle
  291.     end
  292.   end
  293. end
复制代码
MAX_MEMBERS = 8                 # 同伴最大数量

其实就是这句……
作者: songyiming1999    时间: 2013-3-6 21:55
脚本新手跪求楼主做范例学习!@冰舞蝶恋  




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