じ☆ve冰风 发表于 2024-4-19 20:19:33

蛐蛐儿的简约(渣)菜单计划(二)

菜单计划一看这里:http://rpg.blue/thread-202640-1-1.html
前言不再重复,外援脚本还是要用到的。
全程未PS,效率各种渣

效果截图:附加了一个简单的物品分类= =



脚本正文:
part1:class Scene_Itemdef initializeenddef main    @bitmap = Spriteset_Map.new    @z = Sprite.new    @z.bitmap = Bitmap.new(640, 480)    @z.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0,150))    @z.bitmap.fill_rect(25,100,590,4,Color.new(255,255,255))    choose_bitmap = Bitmap.new(100,40)    choose_bitmap.font.size = 40    for i in 0...50      choose_bitmap.draw_text(i,0,100,40,"●")    end    @choose = Sprite.new    @choose.bitmap = choose_bitmap    @choose.x = 300    @choose.y = 60    @choose_text = Sprite.new    @choose_text.x = 300    @choose_text.y = 60    @choose_text.bitmap = Bitmap.new(640,40)    @choose_text.bitmap.font.size = 20    @choose_text.bitmap.font.color = Color.new(0,0,0)    @choose_text.bitmap.draw_text(0,0,90,40,"全部",1)    @help = Sprite.new    @help.bitmap = Bitmap.new(510, 20)    @help.x = 65    @help.y = 450    @help_text = Sprite.new    @help_text.bitmap = Bitmap.new(510, 20)    @help_text.bitmap.font.name = "宋体"    @help_text.bitmap.font.size = 13    @help_text.x = 65    @help_text.y = 450    for i in 0..255/5      @help.bitmap.fill_rect(i*5,0,5,20,Color.new(0,0,0,i*5))      @help.bitmap.fill_rect(510-i*5,0,5,20,Color.new(0,0,0,i*5))      @help.bitmap.fill_rect(i*5, 0, 5, 1, Color.new(255,255,255,i*5))      @help.bitmap.fill_rect(510-i*5, 0, 5, 1, Color.new(255,255,255,i*5))      @help.bitmap.fill_rect(i*5, 19, 5, 1, Color.new(255,255,255,i*5))      @help.bitmap.fill_rect(510-i*5, 19, 5, 1, Color.new(255,255,255,i*5))    end    a = 70    draw_item.each {|b| @choose_text.bitmap.draw_text(a,0,90,40,b,1)    a += 70}    @c_index = 0    @index = 0    @page = 0    @person = []    viewport = Viewport.new(10,36,130,408)    #=================================================================    $game_party.actors.each_index {|a|    @person = RPG::Sprite.new(viewport)    @person.bitmap = Bitmap.new(130,416)    @person.bitmap.blt(0,0,    Bitmap.new("Graphics/Menu/#{$game_party.actors.name}"),    Rect.new(0,0,640,480))    @person.x = a * 130    @person.bitmap.fill_rect(23, 360, 92, 3, Color.new(0,0,0))    @person.bitmap.fill_rect(23, 370, 92, 3, Color.new(0,0,0))    @person.bitmap.fill_rect(24, 361,   (90*$game_party.actors.hp / $game_party.actors.maxhp).to_i, 1, Color.new(200,0,0))    @person.bitmap.fill_rect(24, 371,    (90*$game_party.actors.sp / $game_party.actors.maxsp).to_i, 1, Color.new(0,0,200))    @person.bitmap.font.size = 11    @person.bitmap.blur_draw_text(10, 350, 30, 20,    "HP",1,Color.new(0,0,0,10),2)    @person.bitmap.blur_draw_text(40, 350, 70, 20,    "#{$game_party.actors.hp}/#{$game_party.actors.maxhp}",    1,Color.new(0,0,0,10),2)    @person.bitmap.blur_draw_text(10, 360, 30, 20,    "SP",1,Color.new(0,0,0,10),2)    @person.bitmap.blur_draw_text(40, 360, 70, 20,    "#{$game_party.actors.sp}/#{$game_party.actors.maxsp}",    1,Color.new(0,0,0,10),2)    b = $game_party.actors.name.scan(/./)   b = 9 + @page      @index += 1      @iback.y = 4 + @index * 30 - @page * 30    else      return if @index0      @data.push($data_armors)      @data[@data.size-1].push($data_armors)      b.push("防具") if !b.include?("防具")      end    end    @data.delete_at(@data.size-1) if @data[@data.size-1] == []    bitmap = Bitmap.new(300,22)    bitmap.font.size = 22    bitmap.font.color = Color.new(0,0,0)    for i in 0...250      bitmap.draw_text(i,0,22,22,"●")    end    viewport = Viewport.new(290,120,300,300)    @iback = RPG::Sprite.new(viewport)    @iback.bitmap = bitmap    @iback.blink_on    @iback.z = 8000    @iback.y = 4    for i in       @item_back = Sprite.new(viewport)      @item_back.bitmap = Bitmap.new(640,480)      @item_back.x = i * 300      @item_back.opacity = 50      @item = Sprite.new(viewport)      @item.bitmap = Bitmap.new(640,480)      @item.bitmap.font.size = 14      @item.x = i * 300      @item.z = 9999    end    @max = []    @max = 0    d = 0    @data.each_index {|a| d = 0 ;@max = 0 ; @data.each{|c|   @item_back.bitmap.blt(0,d+4,bitmap,Rect.new(0,0,bitmap.width,bitmap.height))    @item.bitmap.blt(10,d+2,RPG::Cache.icon(c.icon_name),Rect.new(0,0,32,22))    @item.bitmap.draw_text(40,d,300,30,c.name)    case c    when RPG::Item      f = $game_party.item_number(c.id)    when RPG::Weapon      f = $game_party.weapon_number(c.id)    when RPG::Armor      f = $game_party.armor_number(c.id)    end    @item.bitmap.draw_text(0,d,252,30,f.to_s, 2)    @max += 1    d += 30}}    return benddef use_draw_item    rect = Rect.new(0,@index * 30,640,30)    @item[@c_index].bitmap.fill_rect(rect, Color.new(0,0,0,0))    @item[@c_index].bitmap.blt(10,rect.y+2,    RPG::Cache.icon(@data[@c_index][@index].icon_name),Rect.new(0,0,32,22))    @item[@c_index].bitmap.draw_text(40,rect.y,300,30,@data[@c_index][@index].name)    case @data[@c_index][@index]    when RPG::Item      f = $game_party.item_number(@data[@c_index][@index].id)    when RPG::Weapon      f = $game_party.weapon_number(@data[@c_index][@index].id)    when RPG::Armor      f = $game_party.armor_number(@data[@c_index][@index].id)    end    @item[@c_index].bitmap.draw_text(0,rect.y,252,30,f.to_s, 2)endend复制代码part2:class Scene_Itemdef use_item    @item_use = @data[@c_index][@index]    unless @item_use.is_a?(RPG::Item)      $game_system.se_play($data_system.buzzer_se)      return    end    unless $game_party.item_can_use?(@item_use.id)      $game_system.se_play($data_system.buzzer_se)      return    end    $game_system.se_play($data_system.decision_se)    if @item_use.scope >= 3      if @item_use.scope == 4 || @item_use.scope == 6      @target_window.index = -1      if $game_party.item_number(@item_use.id) == 0          $game_system.se_play($data_system.buzzer_se)          return      end      used = false      for i in $game_party.actors          used |= i.item_effect(@item_use)          @person[@s_index].flash(Color.new(255,255,255,100),10)      end      if @item_use.consumable          $game_party.lose_item(@item_use.id, 1)          use_draw_item      end      else      @status = true      end    else      if @item_use.common_event_id > 0      $game_temp.common_event_id = @item_use.common_event_id      $game_system.se_play(@item_use.menu_se)      if @item_use.consumable          $game_party.lose_item(@item_use.id, 1)          use_draw_item      end      $scene = Scene_Map.new      return      end    endenddef update_status    Input.update    change_s if Input.trigger?(Input::LEFT)    change_s(true) if Input.trigger?(Input::RIGHT)    if Input.trigger?(Input::B)      $game_system.se_play($data_system.cancel_se)      unless $game_party.item_can_use?(@item_use.id)      end      @status = false      return    end    if Input.trigger?(Input::C)      if $game_party.item_number(@item_use.id) == 0      $game_system.se_play($data_system.buzzer_se)      @status = false      return      end      if @s_index >= 0      target = $game_party.actors[@s_index]      used = target.item_effect(@item_use)      end      if used      $game_system.se_play(@item_use.menu_se)      if @item_use.consumable          $game_party.lose_item(@item_use.id, 1)          use_draw_item      end      refresh_status      if $game_party.all_dead?          $scene = Scene_Gameover.new          @status = false          return      end      if @item_use.common_event_id > 0          $game_temp.common_event_id = @item_use.common_event_id          if @item_use.consumable            $game_party.lose_item(@item_use.id, 1)            use_draw_item          end          $scene = Scene_Map.new          @status = false          return      end      end      unless used      $game_system.se_play($data_system.buzzer_se)      end      @status = false      return    endenddef refresh_status    @person[@s_index].bitmap.clear    @person[@s_index].bitmap.blt(0,0,    Bitmap.new("Graphics/Menu/#{$game_party.actors[@s_index].name}"),    Rect.new(0,0,640,480))    @person[@s_index].bitmap.fill_rect(23, 360, 92, 3, Color.new(0,0,0))    @person[@s_index].bitmap.fill_rect(23, 370, 92, 3, Color.new(0,0,0))    @person[@s_index].bitmap.fill_rect(24, 361,   (90*$game_party.actors[@s_index].hp / $game_party.actors[@s_index].maxhp).to_i, 1, Color.new(200,0,0))    @person[@s_index].bitmap.fill_rect(24, 371,    (90*$game_party.actors[@s_index].sp / $game_party.actors[@s_index].maxsp).to_i, 1, Color.new(0,0,200))    @person[@s_index].bitmap.font.size = 11    @person[@s_index].bitmap.blur_draw_text(10, 350, 30, 20,    "HP",1,Color.new(0,0,0,10),2)    @person[@s_index].bitmap.blur_draw_text(40, 350, 70, 20,    "#{$game_party.actors[@s_index].hp}/#{$game_party.actors[@s_index].maxhp}",    1,Color.new(0,0,0,10),2)    @person[@s_index].bitmap.blur_draw_text(10, 360, 30, 20,    "SP",1,Color.new(0,0,0,10),2)    @person[@s_index].bitmap.blur_draw_text(40, 360, 70, 20,    "#{$game_party.actors[@s_index].sp}/#{$game_party.actors[@s_index].maxsp}",    1,Color.new(0,0,0,10),2)    b = $game_party.actors[@s_index].name.scan(/./)   b
页: [1]
查看完整版本: 蛐蛐儿的简约(渣)菜单计划(二)