if @item.scope >= 3 # 激活目标窗口 @item_window.active = false @target_window.x = (@item_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true # 设置效果范围 (单体/全体) 的对应光标位置 if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end
纯属小虫 发表于 2023-4-14 13:56
首先得知道这个 @item 在这个类中被定义成了什么,得把整个class的代码,或者这个class的名称发上来
如果是 ...
#============================================================================== # ■ Window_Item #------------------------------------------------------------------------------ # 显示可以装备的回路。 #============================================================================== class Window_Troops_List< Window_Base def blue_color return Color.new(141,157,180) end #-------------------------------------------------------------------------- # ● 定义实例变量 #-------------------------------------------------------------------------- attr_reader :index # 光标位置 attr_reader :help_window # 帮助窗口 attr_reader :type # 种类 attr_reader :able # 暗色 # for i in 0...$party_items[type].size # next if $party_items[type][i].nil? # x = i%4*66 + 25 # y = i/2*80 + 102 # case $party_items[type][i].type def type=(type)#类型 @type = type end def type return @type end #-------------------------------------------------------------------------- # ● 设置光标的位置 # index : 新的光标位置 #-------------------------------------------------------------------------- def index=(index)#定义索引=(索引) @index = index#@索引=(索引) # 刷新帮助文本 (update_help 定义了继承目标) #如果是自己。活动和@help窗口!=无 if self.active and @help_window != nil update_help#更新帮助 end # 刷新光标矩形 update_cursor_rect#更新游标矩形 end #-------------------------------------------------------------------------- # ● 获取行数 #-------------------------------------------------------------------------- def column_max #定义行最大值 # 由项目数和列数计算出行数 return @item_max #返回@项目最大值 end #-------------------------------------------------------------------------- # ● 获取开头行 #-------------------------------------------------------------------------- def top_column # 将窗口内容的传送源 Y 坐标、1 行的高 32 等分 return self.ox / 32 end #-------------------------------------------------------------------------- # ● 设置开头行 # row : 显示开头的行 #-------------------------------------------------------------------------- def top_column=(column)#定义首行=(行) # row 未满 0 的场合更正为 0 if column < 0 column = 0 end # row 超过 row_max - 1 的情况下更正为 row_max - 1 if column > column_max - 1 column = column_max - 1 end # row 1 行高的 32 倍、窗口内容的传送源 Y 坐标 self.ox = column * 32 end #-------------------------------------------------------------------------- # ● 获取 1 页可以显示的行数 #-------------------------------------------------------------------------- def page_column_max #@column_max = 2 # 窗口的高度,设置画面的高度减去 32 ,除以 1 行的高度 32 return 16 #头像行数 end #-------------------------------------------------------------------------- # ● 初始化对像 # actor : 角色 #-------------------------------------------------------------------------- def initialize(type = 0,player_or_enermy = 0) @all_fighters = Figter_data::ALL_SOLDIER #所有人物英雄 #---------------------------------------------------------------------------- # 所有人物英雄添加处 #---------------------------------------------------------------------------- # @all_fighters = [5] # if $game_switches[20] == true#(开关 关 ) # @all_fighters.push(4) # => true # end # if $game_switches[21] == true#(开关 关 ) # @all_fighters.push(2) # => true # end #----------------------------------------------------------------------------- #右侧滚动条 @right_back = Bar_Right.new("right_back", origin_x+172, origin_y+12, 20*14) @right_back.visible = false @right = Bar_Right.new("right", origin_x+170, origin_y+12, 0) @right.visible = false #变量更新 @type = 0 @index = 0 #背景 @back = Sprite.new @back.bitmap = RPG::Cache.menu("troopList-base") #总部队背景图 # @back.x = origin_x # @back.y = origin_y @help_window = Window_Troop_Info.new @item_icon = [] @item_icon[0] = Sprite.new #初始化 # super(origin_x,origin_y,128/2*4+32,87*4+32) #超级的(原始_x,原始_y,287/2+32,14*20+32) super(origin_x,origin_y,1200,600) #自己窗花= RPG::Cache.menu("Blue") self.windowskin = RPG::Cache.menu("Blue")#光标窗口颜色 # self.windowskin.z=1100 self.opacity = 0 self.active = false #刷新 refresh(type) refresh(type) update_help end #-------------------------------------------------------------------------- # ● 活动窗口用原始x y坐标 #-------------------------------------------------------------------------- def origin_x return 16 #光标和头像,名字的原始x标 end def origin_y return 93#光标和头像,名字的原始y标 end #-------------------------------------------------------------------------- # ● 定义用选择状态决定窗口颜色 #-------------------------------------------------------------------------- def able=(able) @able=able @right_back.able = able @right.able = able if active @back.color = Color.new(255,255,255,0) else @back.color = Color.new(0,0,0,128) end refresh end #-------------------------------------------------------------------------- # ● 一些方法的重载 #-------------------------------------------------------------------------- def active=(active) if active if @item_max <= 0 self.index = -1 else self.index = 0 end else self.index = -1 end @ajsdgfshfajklshfa = nil @help_window.set_text( nil ) if @help_window != nil super(active) end def dispose @back.dispose @right_back.dispose @right.dispose for i in 0...@item_icon.size @item_icon[i].dispose end @help_window.dispose super end def x=(x) @back.x = x-origin_x #+ 15 @right_back.x = x+172 #+30 @right.x = x+170 #+30 for i in 0...@item_icon.size @item_icon[i].x = 25+ i%4 * (54 + 32)# +60 #14 end super(x-16) end def x return super+16 end def y=(y) @back.y = y-origin_y# + 60 @right_back.y = y+12 #+ origin_y @right.y = y+12 #+ origin_y for i in 0...@item_icon.size @item_icon[i].y=115+i/ 4 * 122 # + origin_y #+ 25 #14 end super(y) end def z=(z) @back.z=300 @right_back.z=z+3 @right.z=z+4 for i in 0...@item_icon.size @item_icon[i].z=z+2 end super(z) end def visible=(visible) @back.visible=visible @right_back.visible=visible @right.visible=visible # @help_window.visible=visible super(visible) end def contents_opacity=(opacity) @back.opacity=opacity @right_back.opacity=0#opacity @right.opacity=0 #opacity # @help_window.opacity=opacity super(opacity) end def oy=(oy) #缩放图标时只显示当前页的项目 for i in 0...@item_icon.size @item_icon[i].y = 16+18*i+self.y-oy if @item_icon[i].y < self.x or @item_icon[i].y > self.x+20*self.page_row_max @item_icon[i].visible = false else @item_icon[i].visible = true end end super(oy) end #-------------------------------------------------------------------------- # ● 获取物品 #-------------------------------------------------------------------------- def item return @all_fighters[self.index] end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh(type=@type)#all,1,2,3,4,5,6,7 RPPG::ARMOR_BEGIN if self.contents != nil self.contents.dispose self.contents = nil end for i in 0...@item_icon.size @item_icon[i].dispose end @item_icon = [] @item_icon[0] = Sprite.new for i in 0...@all_fighters.size @item_icon[i] = Sprite.new name = Figter_data::CHARACTER_NAME[@all_fighters[i]] @item_icon[i].bitmap = RPG::Cache.icon(name) if name != nil end @item_max = @all_fighters.size #下标超过范围的时候往回退一格 if self.top_column > @item_max-self.page_column_max self.top_column = @item_max-self.page_column_max end # if self.index >= @item_column # self.index = @item_column-1 # end #右侧滚动条显示 # if @item_max > self.page_column_max # @right_back.visible = true # @right.visible = true # else # @right_back.visible = false # @right.visible = false # end #滚动条的更新 # if @right.visible # @right.height = (14*66)*(14*66)/(@item_max.to_f*66)-24.0 > 0 ? (14*66)*(14*66)/(@item_max.to_f*66)-24.0 : 0 # end #---------------------------------------------- 1 # 如果项目数不是 0 就生成位图、描绘全部项目 # if @item_max > 0 # self.contents = Bitmap.new(width - 32, @item_max*20) # for i in 0...@item_max # draw_item(i, 12, i*66) # end # else # self.contents = Bitmap.new(width - 32, 20) # end #缩放图标时只显示当前页的项目 for i in 0...@item_icon.size # x =16 +@index% 4 * (66 + 5) # y = @index/ 4 * 88 @item_icon[i].x = 25 +i%4 * (54 + 32) @item_icon[i].y = i/ 4 * 123 #@item_icon[i].x = 66*i+self.x-ox+16 #14+16*i # if @item_icon[i].x < self.x or @item_icon[i].x > self.x+80*self.page_column_max # @item_icon[i].visible = false # else # @item_icon[i].visible = true # end end #update_help end #-------------------------------------------------------------------------- # ● 描绘物品 #-------------------------------------------------------------------------- def draw_item(index, x, y) item = @all_fighters[index] self.contents.font.size =12 #自己目录字体。尺寸=12 #图标缩放显示专用 icon_size = 100#84#18#图片缩放大小 @item_icon[index].x = self.x+x - self.index%4 * (66 + 5)#self%4*18 + 25 # @item_icon[index].y = self.y+y+16 - self.index/ 4 * 88#/2*18 + 102 @item_icon[index].zoom_x = icon_size.to_f/@item_icon[index].bitmap.width @item_icon[index].zoom_y = icon_size.to_f/@item_icon[index].bitmap.height # @item_icon[index].z = 200#self.z+2 @item_icon[index].color = self.contents.font.color==normal_color ? Color.new(255,255,255,0):Color.new(0,0,0,128) #self.contents.font.color = Color.new(128,193,125,0) name = Figter_data::THE_NAME[item] self.contents.draw_text(x%4 * (66 + 5) + icon_size.to_f, y/ 4 * 88, 184, self.contents.font.size, name) # self.contents.draw_text(x + icon_size.to_f, y + 4, 184, self.contents.font.size, name) end #-------------------------------------------------------------------------- # ● 帮助窗口的设置 # help_window : 新的帮助窗口 #-------------------------------------------------------------------------- def help_window=(help_window) @help_window = help_window # 刷新帮助文本 (update_help 定义了继承目标) if self.active and @help_window != nil update_help end end #-------------------------------------------------------------------------- # ● 更新光标矩形 #-------------------------------------------------------------------------- def update_cursor_rect #@back.bitmap = RPG::Cache.menu("item_command"+type.to_s) # 光标位置不满 0 的情况下 if @index < 0 self.cursor_rect.empty return end # 获取当前的行 column = @index # 当前行被显示开头行前面的情况下 if column < self.top_column # 从当前行向开头行滚动 self.top_column = column end # 当前行被显示末尾行之后的情况下 if column > self.top_column + (self.page_column_max - 1) # 从当前行向末尾滚动 self.top_column = column - (self.page_column_max - 1) end # row = @index # 当前行被显示开头行前面的情况下 # 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 # @right.x = self.x+72+self.top_column.to_f*66.0*(4*66)/(@item_max.to_f*66) # 计算光标的宽度 cursor_width = 1200 # 计算光标坐标 # x = 4 + index % 2 * (288 + 32) # y = index / 2 * 32 #x =32+ @index*66 - self.ox-1# 8 # x =10 +@index% 4 * (84 + 1) y =5+ @index/ 4 * 120 z = 1999 #y = 14 #@index*20 - self.oy-1 # 更新光标矩形 self.cursor_rect.set(x, y, 84 ,120) end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update super # (Input::UP) (Input::DOWN) (Input::RIGHT) (Input::LEFT) # 可以移动光标的情况下 if self.active and @item_max >= 0 and @index >= 0 # 方向键下被按下的情况下 if Input.repeat?(Input::RIGHT) # 光标向左移动 $game_system.se_play($data_system.cursor_se) @index = (@index+1+@item_max) % @item_max if @item_max != 0 update_help end # 方向键上被按下的情况下 if Input.repeat?(Input::LEFT) # 光标向右移动 $game_system.se_play($data_system.cursor_se) @index = (@index-1+@item_max) % @item_max if @item_max != 0 update_help end end #------------------------------------------------------------------------- if self.active and @item_max >= 0 and @index >= 0 # 方向键下被按下的情况下 if Input.repeat?(Input::UP) # 光标向左移动 $game_system.se_play($data_system.cursor_se) @index = (@index-1+@item_max) / @item_max if @item_max != 0 update_help end # 方向键上被按下的情况下 if Input.repeat?(Input::DOWN) # 光标向右移动 $game_system.se_play($data_system.cursor_se) @index = (@index+1+@item_max) / @item_max if @item_max != 0 update_help end #------------------------------------------------------------------------- end # 刷新帮助文本 (update_help 定义了继承目标) if @help_window != nil and @ajsdgfshfajklshfa == nil update_help update_help @ajsdgfshfajklshfa = true end # 刷新光标矩形 update_cursor_rect end def now_selected_troop return @all_fighters[@index] end #-------------------------------------------------------------------------- # ● 刷新帮助文本 #-------------------------------------------------------------------------- def update_help #鲜辣煎鱼 @help_window.set_text( @index>-1 ? self.item : nil ) end end
1下一页.png (648.68 KB, 下载次数: 5)
金芒芒 发表于 2023-4-14 14:54
我是想包裹人物大于等于13的时候第十三人顶置到第一人的位置第1-12个包裹人物在上一页了
现在是我添加再 ...
纯属小虫 发表于 2023-4-14 22:32
哦,要翻页啊,那也还是参考 Window_Selectable
[fold=Window_Selectable][/fold]
纯属小虫 发表于 2023-4-14 22:32
哦,要翻页啊,那也还是参考 Window_Selectable
[fold=Window_Selectable][/fold]
金芒芒 发表于 2023-4-17 13:27
弄了3天终于搞定了,不动脚本的我跟瞎子摸路爬着过来了
纯属小虫 发表于 2023-4-17 13:56
恭喜,一旦上路就会上瘾~~~
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |