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

Project1

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

[已经解决] 有关人物仓库的问题

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

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

Lv1.梦旅人

梦石
0
星屑
104
在线时间
93 小时
注册时间
2008-8-11
帖子
209
2
发表于 2011-1-31 23:49:52 | 只看该作者
学了脚本就可以自己解决了。设置些开关和条件之类的。具体的要靠自己去研究,我没看到脚本也说不出个什么。。。好好研究,你一定可以学会脚本的。

点评

其实你这话等于没说......我会了还问这做什么  发表于 2011-1-31 23:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

赤瞳

梦石
0
星屑
50
在线时间
132 小时
注册时间
2010-11-28
帖子
515
3
发表于 2011-2-1 12:59:06 | 只看该作者
好吧,星星请带上脚本或工程吧,
这个需要加点东西就能解决掉的~

点评

...找半天才找到的脚本,再奇怪也没办法,其他的没找到.....脚本不是很懂  发表于 2011-2-1 18:25
好吧,这个脚本貌似本身有个奇怪的问题,星星试试看,在class Game_Party里的@chaochao = [] 里的[]里填上1,限制阿尔为不能移动.然后排在第二的角色就不能操作.  发表于 2011-2-1 14:27
......  发表于 2011-2-1 13:59
我新建工程,没问题.....你脚本冲突了  发表于 2011-2-1 13:58
是408.. if Input.trigger?(Input::LEFT)..到底哪步出错  发表于 2011-2-1 13:56
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
76 小时
注册时间
2011-1-28
帖子
151
4
 楼主| 发表于 2011-2-1 13:31:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

赤瞳

梦石
0
星屑
50
在线时间
132 小时
注册时间
2010-11-28
帖子
515
5
发表于 2011-2-1 14:02:43 | 只看该作者
现在,要问的是,星星想在仓库里放多少人?
或者,有队员加入的时候,如果队伍满了就加入仓库?

点评

仓库的数量怎么调?蒽,满了就进仓库  发表于 2011-2-1 18:22
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1120
在线时间
381 小时
注册时间
2010-10-9
帖子
386

开拓者

6
发表于 2011-2-1 14:24:17 | 只看该作者
人往仓库放??是不是替换队员额??没看懂
回复 支持 反对

使用道具 举报

Lv1.梦旅人

赤瞳

梦石
0
星屑
50
在线时间
132 小时
注册时间
2010-11-28
帖子
515
7
发表于 2011-2-1 19:00:29 | 只看该作者
我只是把脚本改了一点,
角色满4个的时候加入人物仓库,
然后自己可以添加不能移动的角色ID,
银在必要的地方写了标志,
脚本里搜索"# 银"查看:
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #==============================================================================
  5. # ■ chaochao的人物仓库ver1.02正式版
  6. # 修改了Game_Party
  7. # 功能:
  8. # 用来存放角色的仓库……
  9. # 召唤画面用$scene = Chaochao_Scene_Party.new
  10. # 其它使用说明在代码里已经备注。
  11. #------------------------------------------------------------------------------
  12. # 作者:chaochao
  13. # http://zhuchao.go1.icpcn.com
  14. #==============================================================================
  15. class Chaochao_Window_PartyLeft < Window_Selectable
  16.   def initialize
  17.     super(0, 0, 320, 224)
  18.     self.contents = Bitmap.new(width - 32, height - 32)
  19.     self.index = 0
  20.     refresh
  21.   end
  22.   def actor
  23.     return @actors[self.index]
  24.   end
  25.   def refresh
  26.     if self.contents != nil
  27.       self.contents.dispose
  28.       self.contents = nil
  29.     end
  30.     @actors = []
  31.     for i in 0...$game_party.actors.size
  32.       @actors.push($game_party.actors[i])
  33.     end
  34.    
  35.     @item_max = 4
  36.     if @item_max > 0
  37.       self.contents = Bitmap.new(width - 32, (row_max+1) * 32)
  38.       for i in 0...@item_max
  39.         draw_item(i)
  40.       end
  41.     end
  42.   end
  43.   
  44.   def draw_item(index)
  45.     if @actors[index] != nil
  46.       actor = @actors[index]
  47.       text = @actors[index].name
  48.       lv = @actors[index].level.to_s + " "
  49.       if $game_party.chaochao.include?(actor.id) or $game_party.actors.size <= 1
  50.         self.contents.font.color = Color.new(255, 0, 0) #不能被移动的颜色
  51.       else
  52.         self.contents.font.color = Color.new(0, 255, 0) #可以被移动的颜色
  53.       end
  54.       self.contents.draw_text(4, index * 32 + 32, 288, 32, text)
  55.       self.contents.font.color = normal_color
  56.       self.contents.font.size = 16
  57.       self.contents.draw_text(4, index * 32 + 36, 288, 32,  "Level:   ", 2)
  58.       colorx = [255.0000 - 255.0000/60 * @actors[index].level,0].max
  59.       colory = [255.0000 / 60 * @actors[index].level,255].min
  60.       self.contents.font.color = Color.new(colorx, colory, 0)
  61.       self.contents.draw_text(4, index * 32 + 36, 288, 32,  lv, 2)
  62.       self.contents.font.color = normal_color
  63.       self.contents.font.size = 22
  64.     else
  65.       self.contents.draw_text(4, index * 32 + 32, 288, 32,  "米有人物!")
  66.     end
  67.   end
  68.   def update_cursor_rect
  69.     if @index < 0
  70.       self.cursor_rect.empty
  71.       return
  72.     end
  73.     row = @index / @column_max
  74.     if row < self.top_row
  75.       self.top_row = row
  76.     end
  77.     if row > self.top_row + (self.page_row_max - 1)
  78.       self.top_row = row - (self.page_row_max - 1)
  79.     end
  80.     cursor_width = self.width / @column_max - 32
  81.     x = @index % @column_max * (cursor_width + 32)
  82.     y = @index / @column_max * 32 - self.oy + 32
  83.     self.cursor_rect.set(x, y, cursor_width, 32)
  84.   end
  85.   def item_max
  86.     return @item_max
  87.   end
  88.   def actor?(index)
  89.     return @actors[index] == nil ? false : true
  90.   end
  91.   def set_index(x)
  92.     @index = x
  93.   end
  94. end

  95. #------------------------------------------------------------------------------

  96. class Chaochao_Window_PartyRight < Window_Selectable
  97.   def initialize
  98.     super(320, 0, 320, 224)
  99.     self.contents = Bitmap.new(width - 32, height - 32)
  100.     self.index = -1
  101.     refresh
  102.   end
  103.   def actor
  104.     return @actors[self.index]
  105.   end
  106.   def refresh
  107.     if self.contents != nil
  108.       self.contents.dispose
  109.       self.contents = nil
  110.     end
  111.     @actors = []
  112.     for i in 0...$game_party.actors2.size
  113.       @actors.push($game_party.actors2[i])
  114.     end
  115.    
  116.     @item_max = $game_party.actors2.size
  117.     if @item_max > 0
  118.       self.contents = Bitmap.new(width - 32, row_max * 32)
  119.       for i in 0...@item_max
  120.         draw_item(i)
  121.       end
  122.     elsif @item_max == 0
  123.       
  124.     end
  125.   end
  126.   def draw_item(index)
  127.     actor = @actors[index]
  128.     text = @actors[index].name
  129.     lv = @actors[index].level.to_s + " "
  130.     if $game_party.chaochao2.include?(actor.id) or $game_party.actors.size >= 4
  131.         self.contents.font.color = Color.new(255, 0, 0) #不能被移动的颜色
  132.       else
  133.         self.contents.font.color = Color.new(0, 255, 0) #可以被移动的颜色
  134.       end
  135.     self.contents.draw_text(4, index * 32, 288, 32, text)
  136.     self.contents.font.color = normal_color
  137.     self.contents.font.size = 16
  138.     self.contents.draw_text(4, index * 32 + 4, 288, 32,  "Level:   ", 2)
  139.     colorx = [255.0000 - 255.0000/60 * @actors[index].level,0].max
  140.     colory = [255.0000 / 60 * @actors[index].level,255].min
  141.     self.contents.font.color = Color.new(colorx, colory, 0)
  142.     self.contents.draw_text(4, index * 32 + 4, 288, 32,  lv, 2)
  143.     self.contents.font.color = normal_color
  144.     self.contents.font.size = 22
  145.   end
  146.   def update_cursor_rect
  147.     if @index < 0
  148.       self.cursor_rect.empty
  149.       return
  150.     end
  151.     row = @index / @column_max
  152.     if row < self.top_row
  153.       self.top_row = row
  154.     end
  155.     if row > self.top_row + (self.page_row_max - 1)
  156.       self.top_row = row - (self.page_row_max - 1)
  157.     end
  158.     cursor_width = self.width / @column_max - 32
  159.     x = @index % @column_max * (cursor_width + 32)
  160.     y = @index / @column_max * 32 - self.oy
  161.     self.cursor_rect.set(x, y, cursor_width, 32)
  162.   end
  163.   def item_max
  164.     return @item_max
  165.   end
  166.   def actor?(index)
  167.     return @actors[index] == nil ? false : true
  168.   end
  169.   def set_index(x)
  170.     @index = x
  171.   end
  172. end

  173. #------------------------------------------------------------------------------

  174. class Chaochao_Window_PartyData < Window_Base
  175.   
  176.   def initialize
  177.     super(0, 224, 640, 256)
  178.     self.contents = Bitmap.new(width - 32, height - 32)
  179.     @actor = nil
  180.   end
  181.   
  182.   def set_actor(actor)
  183.     self.contents.clear
  184.     draw_actor_name(actor, 4, 0)
  185.     draw_actor_state(actor, 140, 0)
  186.     draw_actor_hp(actor, 284, 0)
  187.     draw_actor_sp(actor, 460, 0)
  188.     @actor = actor
  189.     self.visible = true
  190.   end
  191.   def clear
  192.     self.contents.clear
  193.   end
  194. end

  195. #------------------------------------------------------------------------------

  196. class Game_Party
  197.   attr_reader   :actors2
  198.   attr_accessor   :chaochao#不能从队伍向备用角色移动的角色ID
  199.   attr_reader   :chaochao2#不能从备用角色向队伍移动的角色ID
  200.   def initialize
  201.     @actors = []
  202.     @gold = 0
  203.     @steps = 0
  204.     @items = {}
  205.     @weapons = {}
  206.     @armors = {}
  207.     @actors2 = []

  208.     @chaochao = [] # 银~这里添加不能移动的角色的ID..用","隔开
  209.     @chaochao2 = []
  210.   end
  211.   
  212.   def chaochao
  213.     return @chaochao if @chaochao != nil
  214.   end
  215.   
  216.   def add_actor(actor_id,type=1)#type为1是向队伍中添加,为2则加入仓库。
  217.     case type
  218.     when 1
  219.       if $game_actors[actor_id] != nil
  220.         actor = $game_actors[actor_id]
  221.         #如果队伍没有满和队伍中没有此角色
  222. # 银~改 向队伍加入角色的时候,当队伍满了,就加入仓库
  223. if @actors.size < 4
  224.   
  225. if [email protected]?(actor)
  226. @actors.push(actor)
  227. $game_player.refresh
  228. end
  229. else
  230. if [email protected]?(actor)
  231. @actors2.push(actor)
  232. $game_player.refresh
  233. end

  234. end
  235. # ==============
  236.       end
  237.     when 2
  238.       if $game_actors[actor_id] != nil
  239.         actor = $game_actors[actor_id]
  240.         #如果角色不在队伍中和不在备用角色队伍中的情况下
  241.         #向备用角色中添加角色
  242.         if not @actors.include?(actor) and not @actors2.include?(actor)
  243.           @actors2.push(actor)
  244.           $game_player.refresh
  245.         end
  246.       end
  247.     end
  248.   end
  249.   
  250.   def huanren(index,type=1)#type为1是从备用角色向队伍中移动,为2则相反。
  251.     case type
  252.     when 1
  253.       id = @actors2[index].id
  254.       actor = $game_actors[id]
  255.       if @actors.size < 4  and not @chaochao2.include?(index) #and not @actors.include?(actor)
  256.         @actors.push(actor)
  257.         #@actors2.delete(actor)
  258.         @actors2.each do |i|
  259.           @actors2.delete(i) if i.id == actor.id
  260.         end
  261.         $game_system.se_play($data_system.decision_se)
  262.         $game_player.refresh
  263.       end
  264.     when 2
  265.       id = @actors[index].id
  266.       actor = $game_actors[id]
  267.       if actor != nil  and not @chaochao.include?(index)
  268.         @actors2.push(actor)
  269.         @actors.each do |i|
  270.           @actors.delete(i) if i.id == actor.id
  271.         end
  272.         $game_system.se_play($data_system.decision_se)
  273.         $game_player.refresh
  274.       end
  275.     end
  276.   end
  277.   
  278.   #type1,1是操作队伍中的角色能否向备用队伍移动,2则相反。
  279.   #type2,1是添加不能移动的,2是删除不能移动的。
  280.   def yidong(actor_id,type1,type2=1)
  281.     case type2
  282.     when 1
  283.       case type1
  284.       when 1
  285.         @chaochao.push(actor_id)
  286.       when 2
  287.         @chaochao2.push(actor_id)
  288.       end
  289.     when 2
  290.       case type1
  291.       when 1
  292.         @chaochao.delete(actor_id)
  293.       when 2
  294.         @chaochao2.delete(actor_id)
  295.       end
  296.     end
  297.   end
  298.   
  299.   #type,1从队伍中离开,2从备用角色中离开,3从队伍和备用角色中离开。
  300.   def remove_actor(actor_id,type=1)
  301.     actor = $game_actors[actor_id]
  302.     case type
  303.     when 1
  304.       @actors.delete(actor)
  305.       $game_player.refresh
  306.     when 2
  307.       @actors2.delete(actor)
  308.       $game_player.refresh
  309.     when 3
  310.       @actors.delete(actor)
  311.       @actors2.delete(actor)
  312.       $game_player.refresh
  313.     end
  314.   end
  315.   
  316.   
  317.   def refresh
  318.     new_actors = []
  319.     new_actors2 = []
  320.     for i in [email protected]
  321.       if $game_actors[@actors.id] != nil
  322.         new_actors.push($game_actors[@actors.id])
  323.       end
  324.     end
  325.     @actors = new_actors
  326.     for i in [email protected]
  327.       if $game_actors[@actors2.id] != nil
  328.         new_actors2.push($game_actors[@actors2.id])
  329.       end
  330.     end
  331.     @actors2 = new_actors2
  332.   end
  333. end

  334. #------------------------------------------------------------------------------

  335. class Chaochao_Scene_Party
  336.   def main
  337.     @left_temp_command = 0
  338.     @right_temp_command = 0
  339.     @temp = 0
  340.     @left_window = Chaochao_Window_PartyLeft.new
  341.     @left_window.active = true
  342.     @right_window = Chaochao_Window_PartyRight.new
  343.     @right_window.active = false
  344.     @data_window = Chaochao_Window_PartyData.new
  345.     update_data
  346.     Graphics.transition
  347.     loop do
  348.       Graphics.update
  349.       Input.update
  350.       update
  351.       if $scene != self
  352.         break
  353.       end
  354.     end
  355.     Graphics.freeze
  356.     @left_window.dispose
  357.     @right_window.dispose
  358.     @data_window.dispose
  359.   end
  360.   
  361.   def update
  362.     @left_window.update
  363.     @right_window.update
  364.     @data_window.update
  365.     update_command
  366.     update_data
  367.   end
  368.   
  369.   def update_command
  370.     if Input.trigger?(Input::B)
  371.       $game_system.se_play($data_system.cancel_se)
  372.       #画面切换
  373.       $scene = Scene_Map.new
  374.       return
  375.     end
  376.     if @left_window.active
  377.       update_left
  378.       return
  379.     end
  380.     if @right_window.active
  381.       update_right
  382.       return
  383.     end
  384.   end
  385.   
  386.   def update_left
  387.     if Input.trigger?(Input::RIGHT)
  388.       if @right_window.item_max > 0
  389.         @left_temp_command = @left_window.index
  390.         @left_window.set_index(-1)
  391.         $game_system.se_play($data_system.cursor_se)
  392.         @left_window.active = false
  393.         @right_window.active = true
  394.         @left_window.refresh
  395.         @right_window.refresh
  396.         @right_window.set_index(@right_temp_command)
  397.         return
  398.       else
  399.         $game_system.se_play($data_system.buzzer_se)
  400.         return
  401.       end
  402.     end
  403.     if Input.trigger?(Input::C)
  404.       if (@left_window.active and @left_window.actor?(@left_window.index) and $game_party.actors.size > 1) and
  405.         not $game_party.chaochao.include?($game_party.actors[@left_window.index].id)
  406.         
  407.         $game_party.huanren(@left_window.index,2)#type为1是从备用角色向队伍中移动,为2则相反。
  408.         @left_window.refresh
  409.         @right_window.refresh
  410.       else
  411.         $game_system.se_play($data_system.buzzer_se)
  412.       end
  413.     end
  414.     return
  415.   end
  416.   
  417.   def update_right
  418.     if Input.trigger?(Input::LEFT)
  419.       if @left_window.item_max > 0
  420.         @right_temp_command = @right_window.index
  421.         @right_window.set_index(-1)
  422.         $game_system.se_play($data_system.cursor_se)
  423.         @left_window.active = true
  424.         @right_window.active = false
  425.         @left_window.refresh
  426.         @right_window.refresh
  427.         @left_window.set_index(@left_temp_command)
  428.         return
  429.       else
  430.         $game_system.se_play($data_system.buzzer_se)
  431.         return
  432.       end
  433.     end
  434.     if Input.trigger?(Input::C)
  435.       if $game_party.actors.size >= 4
  436.         $game_system.se_play($data_system.buzzer_se)
  437.         return
  438.       end
  439.       if @right_window.active and @right_window.actor?(@right_window.index) and not $game_party.chaochao2.include?($game_party.actors2[@right_window.index].id)
  440.         $game_party.huanren(@right_window.index,1)#type为1是从备用角色向队伍中移动,为2则相反。
  441.         if $game_party.actors2.size == 0
  442.           @right_temp_command = @right_window.index
  443.           @right_window.set_index(-1)
  444.           $game_system.se_play($data_system.cursor_se)
  445.           @left_window.active = true
  446.           @right_window.active = false
  447.           @left_window.refresh
  448.           @right_window.refresh
  449.           @left_window.set_index(@left_temp_command)
  450.         end
  451.         if @right_window.index > 0
  452.           @right_window.set_index(@right_window.index-1)
  453.         end
  454.         @left_window.refresh
  455.         @right_window.refresh
  456.       else
  457.         $game_system.se_play($data_system.buzzer_se)
  458.       end
  459.     end
  460.     return
  461.   end
  462.   
  463.   def update_data
  464.     if @left_window.active
  465.       if $game_party.actors[@left_window.index] != nil
  466.         @data_window.set_actor($game_party.actors[@left_window.index])
  467.       else
  468.         @data_window.clear
  469.       end
  470.       return
  471.     end
  472.     if @right_window.active
  473.       if $game_party.actors2[@right_window.index] != nil
  474.         @data_window.set_actor($game_party.actors2[@right_window.index])
  475.       else
  476.         @data_window.clear
  477.       end
  478.       return
  479.     end
  480.   end
  481. end

  482. #==============================================================================
  483. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  484. #==============================================================================
复制代码


银·乌尔于2011-2-1 20:16补充以下内容:
嗯,库存应该是无限量的..
如果需要限制,可以加个条件~

点评

噢哦!...话说虽然无限很好,数量限制我现在也不需要,不过为了其他人的方便,你就打出来吧(不然那天我突然要限制了,上哪找去)  发表于 2011-2-1 21:23
辛苦了 银子(话说我更喜欢金子)....对了 库存数量是多少!  发表于 2011-2-1 19:54

评分

参与人数 1星屑 +6 收起 理由
stevenrock + 6 辛苦银了,顺便我的困难也被解决了。能给的.

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
211
在线时间
905 小时
注册时间
2010-9-6
帖子
3229
8
发表于 2011-2-1 20:59:19 | 只看该作者
我告诉你我的办法吧,我设置人物仓库的时候,单独设置在一个地图里,想要离开人物仓库所在的地图,主角必须在队伍中,否则不改变场景。办法不算很好,凑合用吧……

点评

喵~银可真算做了件善事~~  发表于 2011-2-1 21:05
回复 支持 反对

使用道具 举报

Lv1.梦旅人

赤瞳

梦石
0
星屑
50
在线时间
132 小时
注册时间
2010-11-28
帖子
515
9
发表于 2011-2-1 21:46:29 | 只看该作者
呃..就上面银贴出来的脚本
238-241行:
if [email protected]?(actor)
@actors2.push(actor)
$game_player.refresh
end
这里,只需要在条件if [email protected]?(actor)
里加上 and @actors2.size < 4
其中,4就是仓库的限制啦~同理,
在type = 1
的那里也加上这个条件,
就会在角色直接加到仓库的时候也判定一下.

点评

呵呵~  发表于 2011-2-1 22:12
感觉这样说有点怪怪的 = =  发表于 2011-2-1 22:04
小银子!我代表以后用的到的人,感谢你,感谢你妈,感谢你爸,感谢你全家。  发表于 2011-2-1 22:03

评分

参与人数 2星屑 +804 收起 理由
fux2 + 444 认可答案,为什么是222?新年快乐!.
六祈 + 360 辛苦了,银君

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-2 19:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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