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

Project1

 找回密码
 注册会员
搜索
123
返回列表 发新帖
楼主: 冰舞蝶恋

[RMVX发布] 【应求发布】8人队伍菜单

[复制链接]

Lv1.梦旅人

梦石
0
星屑
46
在线时间
114 小时
注册时间
2012-12-31
帖子
76
发表于 2013-1-24 12:23:04 | 显示全部楼层
本帖最后由 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                 # 同伴最大数量

其实就是这句……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2012-1-8
帖子
10
发表于 2013-3-6 21:55:59 | 显示全部楼层
脚本新手跪求楼主做范例学习!@冰舞蝶恋  
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 04:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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