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

Project1

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

[已经解决] 求助一个雇佣兵系统

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
52 小时
注册时间
2012-7-6
帖子
17
跳转到指定楼层
1
发表于 2012-7-27 12:42:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大神们帮我来想想看吧
1)首先是可以雇佣角色的
2)角色超过4个的时候无法雇佣
3)可以随意指定除主角之外的其他三个位置的角色离开(跟位置挂钩,跟名字不挂钩)
4)(或许还有问题)

Lv1.梦旅人

梦石
0
星屑
104
在线时间
1242 小时
注册时间
2010-6-30
帖子
573
2
发表于 2012-7-27 14:09:54 | 只看该作者
(1)纯事件做到
(2)就是条件分歧:$game_party.members.size>=4时无法雇佣
(3)$game_party.remove_actor(编号)

点评

满足了第一个了 第二个满足不了  发表于 2012-7-27 14:40

评分

参与人数 1星屑 +100 收起 理由
Luciffer + 100 我很赞同

查看全部评分

null
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
100
在线时间
211 小时
注册时间
2011-8-16
帖子
300
3
发表于 2012-7-27 14:52:59 | 只看该作者
纯事件完成
事先设定好雇佣兵
然后判断队友是否小于最大数
然后进行雇佣
具体现在没法给你,自己摸索吧,或者等晚上我在弄。
Q:774741359

评分

参与人数 1星屑 +100 收起 理由
Luciffer + 100 我很赞同

查看全部评分

RPGMaker 脚本/学习交流群:143356012
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2012-7-27
帖子
7
4
发表于 2012-7-28 12:12:10 | 只看该作者
值得一试

评分

参与人数 1星屑 -40 收起 理由
Luciffer -40 纯水

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2012-7-16
帖子
15
5
发表于 2012-7-28 21:27:59 | 只看该作者
(1)事件完成 事件-队伍管理-加入队员
(2)照理说这个应该可以啊$game_party.members.size>=4
    如果还是不行就给你个麻烦的方法。。。设个变量。。然后每加入个队员变量+1.少去个-1
然后再条件分歧判断>=4。。。
(3)还是事件,如果是跟名字不挂钩
       你就弄选择项一个一个列,然后选那个的场合就是事件-队伍管理-离开



至于2.3嘛。。
推荐你用这个脚本
(好吧你只是在闲麻烦)
把这句 $scene = Scene_Party.new 放菜单里就可以随时使用
放事件里也是很好用的捏。。。主要是觉得干脆就队伍管理比较方便
  1. #~ 这个脚本不起其他同类的脚本要简陋的多,
  2. #~ 队伍人数仍然限制为4人,
  3. #~ 而且也无法在战斗中更换队员,
  4. #~ 1.系统呼出命令:
  5. #~    $scene = Scene_Party.new
  6. #~ 2.队员锁定命令:
  7. #~    $game_party.members[0].actor.required = true
  8. #~   (其中数字0表示1号队员在队伍中锁定而无法进入仓库,1即为2号队员,以此类推)
  9. #~ 3.队员加入仓库命令:
  10. #~    $data_actors[5].found = true
  11. #~    (其中数字5表示5号队员直接进入仓库等待招募而不加入队伍,当队伍满员时使用此命令)
  12. #~ 4.队员踢除仓库命令:
  13. #~    $data_actors[5].found = false
  14. #~    (其中数字5表示将呆在仓库里的5号队员清除,该命令用于离开的队员)
  15. #~ 5.队员加入仓库但无法被招募:
  16. #~    $data_actors[8].found = true $data_actors[8].unavailable = true
  17. #~    (其中数字8表示8号队员# 直接进入仓库但无法被招募,该命令用于俘虏类)
  18. #~ 6.仓库里无法招募的队员启动命令:
  19. #~    $data_actors.each do |a| a.unavailable = false if a end
  20. #~   (该命令作为第5项命令的补充,使所有仓库里无法被招募的队员重启为可招募状态)
  21. #~ 7.全体队员进入仓库:
  22. #~    $data_actors.each do |a| a.found = true if a nd
  23. #~   (该命令使所有队员进入仓库等待招募,在队伍 中的队员不受影响)
  24. #~   
  25. #~ 由于脚本的缺陷及技术不足,
  26. #~ 角色名和职业名尽量控制在3个字或3个字以下,
  27. #~ 不然会出现被遮住而无法显示的画面










  28. #  队员管理脚本(v1.1c)

  29. module RPG
  30.   class Actor
  31.     def setup
  32.       @found = false
  33.       @unavailable = false
  34.       @required = false
  35.     end
  36.     attr_accessor :found
  37.     attr_accessor :unavailable
  38.     attr_accessor :required
  39.   end
  40. end

  41. class Game_Actors
  42.   attr_reader :data
  43.   alias prex_party_g_actors_initialize initialize
  44.   def initialize
  45.     prex_party_g_actors_initialize
  46.     $data_actors.each do |actor|
  47.       actor.setup if actor
  48.       @data[actor.id] = Game_Actor.new(actor.id) if actor
  49.     end
  50.   end
  51. end

  52. class Scene_File < Scene_Base
  53.   alias prex_party_s_file_write_save_data write_save_data
  54.   alias prex_party_s_file_read_save_data read_save_data
  55.   def write_save_data(file)
  56.     prex_party_s_file_write_save_data(file)
  57.     Marshal.dump($data_actors, file)
  58.   end
  59.   def read_save_data(file)
  60.     prex_party_s_file_read_save_data(file)
  61.     $data_actors = Marshal.load(file)
  62.   end
  63. end

  64. class Scene_Title < Scene_Base
  65.   alias prex_party_s_title_command_new_game command_new_game
  66.   def command_new_game
  67.     prex_party_s_title_command_new_game
  68.     $game_party.members.each {|s| s.actor.found = true if s}
  69.   end
  70. end

  71. class Window_Base < Window
  72.   def draw_item_name(item, x, y, enabled = true, width = 172)
  73.     if item != nil
  74.       draw_icon(item.icon_index, x, y, enabled)
  75.       self.contents.font.color = normal_color
  76.       self.contents.font.color.alpha = enabled ? 255 : 128
  77.       self.contents.draw_text(x + 24, y, width, WLH, item.name)
  78.     end
  79.   end
  80. end

  81. class Scene_Party < Scene_Base
  82.   def start
  83.     super
  84.     create_menu_background
  85.     create_windows
  86.   end
  87.   def create_windows
  88.     @member_window = Window_CurrentMember.new
  89.     @party_window = Window_CurrentParty.new
  90.     @party_window.active = true
  91.     @selectable_window = Window_SelectMember.new
  92.   end
  93.   def update_windows
  94.     @member_window.update
  95.     @party_window.update
  96.     @selectable_window.update
  97.     if @party_window.active
  98.       @member_window.set_member(@party_window.member)
  99.     elsif @selectable_window.active
  100.       @member_window.set_member(@selectable_window.member)
  101.     end
  102.   end
  103.   def terminate
  104.     super
  105.     @member_window.dispose
  106.     @party_window.dispose
  107.     @selectable_window.dispose
  108.   end
  109.   def update
  110.     super
  111.     update_windows
  112.     update_input
  113.   end
  114.   def update_input
  115.     if Input.trigger?(Input::A)
  116.       if @member_window.mode == 1
  117.         @member_window.set_mode(0)
  118.       elsif @member_window.mode == 0
  119.         @member_window.set_mode(1)
  120.       end
  121.     end
  122.     if @party_window.active
  123.       if Input.trigger?(Input::B)
  124.         Sound.play_cancel
  125.         $scene = Scene_Map.new
  126.       elsif Input.trigger?(Input::C)
  127.         member = @party_window.member
  128.         if member != nil
  129.           if member.actor.unavailable or member.actor.required
  130.             Sound.play_buzzer
  131.             return
  132.           end
  133.         end
  134.         Sound.play_decision
  135.         @party_window.active = false
  136.         @selectable_window.active = true
  137.         @selectable_window.index = 0
  138.       end
  139.     elsif @selectable_window.active
  140.       if Input.trigger?(Input::B)
  141.         Sound.play_cancel
  142.         @selectable_window.index = -1
  143.         @selectable_window.active = false
  144.         @party_window.active = true
  145.       elsif Input.trigger?(Input::C)
  146.         member = @selectable_window.member
  147.         if member != nil
  148.           if member.actor.unavailable
  149.             Sound.play_buzzer
  150.             return
  151.           end
  152.         end
  153.         Sound.play_decision
  154.         $game_party.remove_actor(@party_window.member.id) if @party_window.member != nil
  155.         $game_party.add_actor(@selectable_window.member.id) if @selectable_window.member != nil
  156.         @selectable_window.refresh
  157.         @party_window.refresh
  158.         @selectable_window.index = -1
  159.         @selectable_window.active = false
  160.         @party_window.active = true
  161.       end
  162.     end
  163.   end
  164. end

  165. class Window_CurrentMember < Window_Base
  166.   attr_reader :mode
  167.   def initialize(member = nil, mode = 0)
  168.     super(304, 80, 192, 256)
  169.     create_contents
  170.     @member = member
  171.     @mode = 0
  172.     refresh
  173.   end
  174.   def member
  175.     return @member
  176.   end
  177.   def set_member(member)
  178.     old_member = @member
  179.     @member = member
  180.     refresh if old_member != @member
  181.   end
  182.   def set_mode(mode)
  183.     @mode = mode if [0, 1].include?(mode)
  184.     refresh
  185.   end
  186.   def refresh
  187.     self.contents.clear
  188.     return unless @member
  189.     x, y = 0, 0
  190.   
  191.     self.draw_actor_name(@member, x + 100, y)
  192.     self.draw_actor_class(@member, x + 100, y + WLH)
  193.     self.draw_actor_level(@member, x + 103, y + WLH*2)
  194.     case @mode
  195.     when 0
  196.       self.draw_actor_face(@member, x, y, 96) #****
  197.       self.draw_actor_hp(@member, x, y + WLH*3, 160)
  198.       self.draw_actor_mp(@member, x, y + WLH*4, 160)
  199.       self.draw_actor_parameter(@member, x, y + WLH*5, 0)
  200.       self.draw_actor_parameter(@member, x, y + WLH*6, 1)
  201.       self.draw_actor_parameter(@member, x, y + WLH*7, 2)
  202.       self.draw_actor_parameter(@member, x, y + WLH*8, 3)
  203.     when 1
  204.       self.draw_actor_face(@member, x, y, 96) #****
  205.       for i in [email protected]
  206.         item = @member.equips[i]
  207.         self.draw_item_name(item, x, y + WLH*(3+i), true, self.contents.width - 24)
  208.       end
  209.     end
  210.   end
  211. end

  212. class Window_CurrentParty < Window_Selectable
  213.   def initialize
  214.     super(48, 80, 256, 64)
  215.     @item_max = 4
  216.     @column_max = @item_max
  217.     create_contents
  218.     self.index = 0
  219.     refresh
  220.   end
  221.   def member
  222.     return $game_party.members[self.index]
  223.   end
  224.   def refresh
  225.     for i in 0...@item_max
  226.       rect = item_rect(i)
  227.       self.contents.clear_rect(rect)
  228.     end
  229.     for i in 0...$game_party.members.size
  230.       rect = item_rect(i)
  231.       bitmap = Cache.character($game_party.members[i].character_name)
  232.       sign = $game_party.members[i].character_name[/^[\!\$]./]
  233.       if sign != nil and sign.include?(')
  234.         cw = bitmap.width / 3
  235.         ch = bitmap.height / 4
  236.       else
  237.         cw = bitmap.width / 12
  238.         ch = bitmap.height / 8
  239.       end
  240.       n = $game_party.members[i].character_index
  241.       src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  242.       if $game_party.members[i].actor.unavailable
  243.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
  244.       else
  245.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
  246.       end
  247.       if $game_party.members[i].actor.required
  248.         lock_bitmap = Cache.system("Locked")
  249.         self.contents.blt(rect.x + rect.width - lock_bitmap.width,
  250.                           rect.y + rect.height - lock_bitmap.height,
  251.                           lock_bitmap, lock_bitmap.rect)
  252.       end
  253.     end
  254.   end
  255.   def item_rect(index)
  256.     rect = Rect.new(0, 0, 0, 0)
  257.     rect.width = (contents.width + @spacing) / @column_max - @spacing
  258.     rect.height = 32
  259.     rect.x = index % @column_max * (rect.width + @spacing)
  260.     rect.y = index / @column_max * 32
  261.     return rect
  262.   end
  263. end

  264. class Window_SelectMember < Window_Selectable
  265.   def initialize
  266.     super(48, 144, 256, 192)
  267.     calculate_actors
  268.     @item_max = @actors.size + 1
  269.     @column_max = 4
  270.     self.index = -1
  271.     self.active = false
  272.     refresh
  273.   end
  274.   def calculate_actors
  275.     @actors = []
  276.     for a in $game_actors.data
  277.       @actors << a if a != nil and a.actor.found and !$game_party.members.include?(a)
  278.     end
  279.   end
  280.   def member
  281.     return @actors[self.index]
  282.   end
  283.   def refresh
  284.     self.contents.clear
  285.     calculate_actors
  286.     @item_max = @actors.size + 1
  287.     for i in [email protected]
  288.       rect = item_rect(i)
  289.       bitmap = Cache.character(@actors[i].character_name)
  290.       sign = @actors[i].character_name[/^[\!\$]./]
  291.       if sign != nil and sign.include?(')
  292.         cw = bitmap.width / 3
  293.         ch = bitmap.height / 4
  294.       else
  295.         cw = bitmap.width / 12
  296.         ch = bitmap.height / 8
  297.       end
  298.       n = @actors[i].character_index
  299.       src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
  300.       if @actors[i].actor.unavailable
  301.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 128)
  302.       else
  303.         self.contents.blt(rect.x, rect.y, bitmap, src_rect, 255)
  304.       end
  305.       if @actors[i].actor.required
  306.         lock_bitmap = Cache.system("Locked")
  307.         self.contents.blt(rect.x + rect.width - lock_bitmap.width,
  308.                           rect.y + rect.height - lock_bitmap.height,
  309.                           lock_bitmap, lock_bitmap.rect)
  310.       end
  311.     end
  312.   end
  313.   def item_rect(index)
  314.     rect = Rect.new(0, 0, 0, 0)
  315.     rect.width = (contents.width + @spacing) / @column_max - @spacing
  316.     rect.height = 32
  317.     rect.x = index % @column_max * (rect.width + @spacing)
  318.     rect.y = index / @column_max * 32
  319.     return rect
  320.   end
  321. end
复制代码

评分

参与人数 1星屑 -200 梦石 +2 收起 理由
Luciffer -200 + 2 好人卡以及找零

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
52 小时
注册时间
2012-7-6
帖子
17
6
 楼主| 发表于 2012-9-26 09:47:39 | 只看该作者
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
52 小时
注册时间
2012-7-6
帖子
17
7
 楼主| 发表于 2012-9-26 09:56:55 | 只看该作者
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 11:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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