- 累计送礼:
- 0 个
- 累计收礼:
- 0 个
TA的每日心情 | 开心 昨天 18:01 |
---|
签到天数: 114 天 连续签到: 4 天 [LV.6]常住居民II

管理员
  
- VIP
- 6
- 卡币
- 10640
- OK点
- 16
- 推广点
- 0
- 同能卷
- 0
- 积分
- 13411


|
想必不少人在使用人物仓库的时候都有一个疑惑……特别是玩家,部分游戏的人名难以让人记住,在人物仓库又不显示造型、属性什么的,这要怎么分啊?
所以这个玩野就出现了&… - #==============================================================================# ■ chaochao的人物仓库ver1.02正式版# 修改了Game_Party# 功能:# 用来存放角色的仓库……# 召唤画面用$scene = Chaochao_Scene_Party.new# 其它使用说明在代码里已经备注。#------------------------------------------------------------------------------# 作者:chaochao#由逗比的菊花侠以及蛋疼的绝望二次编写#说明:半身像的图片名称为此角色的行走图名称加上_b,列如,阿尔西斯_b #另外,半身像是放在Graphics/picture 这个文件夹里的# http://zhuchao.go1.icpcn.com#==============================================================================$半身像坐标x = 500#暂时先这样了,根据你的图片大小自由调整吧$半身像坐标y = 260$行走图坐标x = 40$行走图坐标y = 112class Window_Base def 描绘半身像(actor, x, y) bitmap = RPG::Cache.picture(actor.character_name+"_b") cw = bitmap.width ch = bitmap.height src_rect = Rect.new(0, 0, cw, ch) self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect) end endclass Chaochao_Window_PartyLeft < Window_Selectable def initialize super(0, 0, 320, 224) self.contents = Bitmap.new(width - 32, height - 32) self.index = 0 #@actor = actor refresh end def actor return @actors[self.index] end def refresh if self.contents != nil self.contents.dispose self.contents = nil end @actors = [] for i in 0...$game_party.actors.size @actors.push($game_party.actors[i]) end @item_max = 4 if @item_max > 0 self.contents = Bitmap.new(width - 32, (row_max+1) * 32) for i in 0...@item_max draw_item(i) end end end def draw_item(index) if @actors[index] != nil actor = @actors[index] # p index text = @actors[index].name lv = @actors[index].level.to_s + " " if $game_party.chaochao.include?(actor.id) or $game_party.actors.size self.top_row + (self.page_row_max - 1) self.top_row = row - (self.page_row_max - 1) end cursor_width = self.width / @column_max - 32 x = @index % @column_max * (cursor_width + 32) y = @index / @column_max * 32 - self.oy + 32 self.cursor_rect.set(x, y, cursor_width, 32) end def item_max return @item_max end def actor?(index) return @actors[index] == nil ? false : true end def set_index(x) @index = x endend#------------------------------------------------------------------------------class Chaochao_Window_PartyRight < Window_Selectable def initialize super(320, 0, 320, 224) self.contents = Bitmap.new(width - 32, height - 32) self.index = -1 refresh end def actor return @actors[self.index] end def refresh if self.contents != nil self.contents.dispose self.contents = nil end @actors = [] for i in 0...$game_party.actors2.size @actors.push($game_party.actors2[i]) end @item_max = $game_party.actors2.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) for i in 0...@item_max draw_item(i) end elsif @item_max == 0 end end def draw_item(index) actor = @actors[index] text = @actors[index].name lv = @actors[index].level.to_s + " " if $game_party.chaochao2.include?(actor.id) or $game_party.actors.size >= 4 self.contents.font.color = Color.new(255, 0, 0) #不能被移动的颜色 else self.contents.font.color = Color.new(0, 255, 0) #可以被移动的颜色 end self.contents.draw_text(4, index * 32, 288, 32, text) self.contents.font.color = normal_color self.contents.font.size = 16 self.contents.draw_text(4, index * 32 + 4, 288, 32, "Level: ", 2) colorx = [255.0000 - 255.0000/60 * @actors[index].level,0].max colory = [255.0000 / 60 * @actors[index].level,255].min self.contents.font.color = Color.new(colorx, colory, 0) self.contents.draw_text(4, index * 32 + 4, 288, 32, lv, 2) self.contents.font.color = normal_color self.contents.font.size = 22 end def update_cursor_rect if @index < 0 self.cursor_rect.empty return end row = @index / @column_max if row < self.top_row self.top_row = row end if row > self.top_row + (self.page_row_max - 1) self.top_row = row - (self.page_row_max - 1) end cursor_width = self.width / @column_max - 32 x = @index % @column_max * (cursor_width + 32) y = @index / @column_max * 32 - self.oy self.cursor_rect.set(x, y, cursor_width, 32) end def item_max return @item_max end def actor?(index) return @actors[index] == nil ? false : true end def set_index(x) @index = x endend#------------------------------------------------------------------------------class Chaochao_Window_PartyData < Window_Base def initialize super(0, 224, 640, 256) self.contents = Bitmap.new(width - 32, height - 32) @actor = nil end def set_actor(actor) self.contents.clear draw_actor_name(actor, 4, 0) #更新的地方 描绘半身像(actor, $半身像坐标x, $半身像坐标y) draw_actor_graphic(actor, $行走图坐标x, $行走图坐标y) draw_actor_state(actor, 140, 0) draw_actor_hp(actor, 284, 0) draw_actor_sp(actor, 460, 0) @actor = actor draw_actor_class(@actor, 20, 32) b = 20 draw_actor_parameter(@actor, 70, 60, 0) draw_actor_parameter(@actor, 70, 60+b, 1) draw_actor_parameter(@actor, 70, 60+b+b, 2) draw_actor_parameter(@actor, 70, 60+b+b+b, 3) draw_actor_parameter(@actor, 70, 60+b+b+b+b, 4) draw_actor_parameter(@actor, 70, 60+b+b+b+b+b, 5) draw_actor_parameter(@actor, 70, 60+b+b+b+b+b+b, 6) self.contents.font.color = system_color self.contents.draw_text(280, 48, 80, 32, "EXP") self.contents.draw_text(280, 80, 80, 32, "NEXT") self.contents.font.color = normal_color self.contents.draw_text(280+40, 48, 84, 32, @actor.exp_s, 2) self.contents.draw_text(280+40, 80, 84, 32, @actor.next_rest_exp_s, 2) self.visible = true end def clear self.contents.clear endend#------------------------------------------------------------------------------class Game_Party attr_reader :actors2 attr_reader :chaochao#不能从队伍向备用角色移动的角色ID attr_reader :chaochao2#不能从备用角色向队伍移动的角色ID def initialize @actors = [] @gold = 0 @steps = 0 @items = {} @weapons = {} @armors = {} @actors2 = [] @chaochao = [] @chaochao2 = [] end def add_actor(actor_id,type=1)#type为1是向队伍中添加,为2则相反。 case type when 1 if $game_actors[actor_id] != nil actor = $game_actors[actor_id] #如果队伍没有满和队伍中没有此角色 if @actors.size < 4 and not @actors.include?(actor) and not @actors2.include?(actor) @actors.push(actor) $game_player.refresh end end when 2 if $game_actors[actor_id] != nil actor = $game_actors[actor_id] #如果角色不在队伍中和不在备用角色队伍中的情况下 #向备用角色中添加角色 if not @actors.include?(actor) and not @actors2.include?(actor) @actors2.push(actor) $game_player.refresh end end end end def huanren(index,type=1)#type为1是从备用角色向队伍中移动,为2则相反。 actor = $game_actors[index] case type when 1 if @actors.size < 4 and @actors2.include?(actor) and not @chaochao2.include?(index) and not @actors.include?(actor) @actors.push(actor) @actors2.delete(actor) $game_system.se_play($data_system.decision_se) $game_player.refresh end when 2 if @actors.include?(actor) and not @chaochao.include?(index) and not @actors2.include?(actor) @actors2.push(actor) @actors.delete(actor) $game_system.se_play($data_system.decision_se) $game_player.refresh end end end #type1,1是操作队伍中的角色能否向备用队伍移动,2则相反。 #type2,1是添加不能移动的,2是删除不能移动的。 def yidong(actor_id,type1,type2=1) case type2 when 1 case type1 when 1 @chaochao.push(actor_id) when 2 @chaochao2.push(actor_id) end when 2 case type1 when 1 @chaochao.delete(actor_id) when 2 @chaochao2.delete(actor_id) end end end #type,1从队伍中离开,2从备用角色中离开,3从队伍和备用角色中离开。 def remove_actor(actor_id,type=1) actor = $game_actors[actor_id] case type when 1 @actors.delete(actor) $game_player.refresh when 2 @actors2.delete(actor) $game_player.refresh when 3 @actors.delete(actor) @actors2.delete(actor) $game_player.refresh end end def XXX(param) for i in [email protected] if(param == i and param != 0) @actors2[i].hp = @actors2[i].maxhp @actors2[i].sp = @actors2[i].maxsp @actors2[i].states_clear break end if(param == 0) @actors2[i].hp = @actors2[i].maxhp @actors2[i].sp = @actors2[i].maxsp @actors2[i].states_clear end end end def refresh new_actors = [] new_actors2 = [] for i in [email protected] if $data_actors[@actors[i].id] != nil new_actors.push($game_actors[@actors[i].id]) end end @actors = new_actors for i in [email protected] if $data_actors[@actors2[i].id] != nil new_actors2.push($game_actors[@actors2[i].id]) end end @actors2 = new_actors2 endend#------------------------------------------------------------------------------class Chaochao_Scene_Party def main @left_temp_command = 0 @right_temp_command = 0 @temp = 0 @left_window = Chaochao_Window_PartyLeft.new @left_window.active = true @right_window = Chaochao_Window_PartyRight.new @right_window.active = false @data_window = Chaochao_Window_PartyData.new update_data Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @left_window.dispose @right_window.dispose @data_window.dispose end def update @left_window.update @right_window.update @data_window.update update_command update_data end def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) #画面切换 $scene = Scene_Map.new return end if @left_window.active update_left return end if @right_window.active update_right return end end def update_left if Input.trigger?(Input::RIGHT) if @right_window.item_max > 0 @left_temp_command = @left_window.index @left_window.set_index(-1) $game_system.se_play($data_system.cursor_se) @left_window.active = false @right_window.active = true @left_window.refresh @right_window.refresh @right_window.set_index(@right_temp_command) return else $game_system.se_play($data_system.buzzer_se) return end end if Input.trigger?(Input::C) if @left_window.active and @left_window.actor?(@left_window.index) and $game_party.actors.size > 1 and not $game_party.chaochao.include?($game_party.actors[@left_window.index].id) $game_party.huanren($game_party.actors[@left_window.index].id,2)#type为1是从备用角色向队伍中移动,为2则相反。 @left_window.refresh @right_window.refresh else $game_system.se_play($data_system.buzzer_se) end end return end def update_right if Input.trigger?(Input::LEFT) if @left_window.item_max > 0 @right_temp_command = @right_window.index @right_window.set_index(-1) $game_system.se_play($data_system.cursor_se) @left_window.active = true @right_window.active = false @left_window.refresh @right_window.refresh @left_window.set_index(@left_temp_command) return else $game_system.se_play($data_system.buzzer_se) return end end if Input.trigger?(Input::C) if $game_party.actors.size >= 4 $game_system.se_play($data_system.buzzer_se) return end if @right_window.active and @right_window.actor?(@right_window.index) and not $game_party.chaochao2.include?($game_party.actors2[@right_window.index].id) $game_party.huanren($game_party.actors2[@right_window.index].id,1)#type为1是从备用角色向队伍中移动,为2则相反。 if $game_party.actors2.size == 0 @right_temp_command = @right_window.index @right_window.set_index(-1) $game_system.se_play($data_system.cursor_se) @left_window.active = true @right_window.active = false @left_window.refresh @right_window.refresh @left_window.set_index(@left_temp_command) end if @right_window.index > 0 @right_window.set_index(@right_window.index-1) end @left_window.refresh @right_window.refresh else $game_system.se_play($data_system.buzzer_se) end end return end def update_data if @left_window.active if $game_party.actors[@left_window.index] != nil @data_window.set_actor($game_party.actors[@left_window.index]) else @data_window.clear end return end if @right_window.active if $game_party.actors2[@right_window.index] != nil @data_window.set_actor($game_party.actors2[@right_window.index]) else @data_window.clear end return end endend 复制代码
复制代码 本帖来自P1论坛作者菊花侠小赵,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=384923 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |
|