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

Project1

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

[已经解决] 人物仓库 1.02 窗口如何半透明?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2007-2-7
帖子
388
跳转到指定楼层
1
发表于 2009-7-14 23:15:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  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.    
  18.     super(0, 0, 320, 224)
  19.     self.contents = Bitmap.new(width - 32, height - 32)
  20.     self.index = 0

  21.     refresh
  22.   end
  23.   def actor
  24.     return @actors[self.index]
  25.   end
  26.   def refresh
  27.     if self.contents != nil
  28.       self.contents.dispose
  29.       self.contents = nil
  30.     end
  31.     @actors = []
  32.     for i in 0...$game_party.actors.size
  33.       @actors.push($game_party.actors[i])
  34.     end
  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.   def draw_item(index)
  44.     if @actors[index] != nil
  45.       actor = @actors[index]
  46.       text = @actors[index].name
  47.       lv = @actors[index].level.to_s + " "
  48.       if $game_party.chaochao.include?(actor.id) or $game_party.actors.size <= 1
  49.         self.contents.font.color = Color.new(255, 0, 0) #不能被移动的颜色
  50.       else
  51.         self.contents.font.color = Color.new(0, 255, 0) #可以被移动的颜色
  52.       end
  53.       self.contents.draw_text(4, index * 32 + 32, 288, 32, text)
  54.       self.contents.font.color = normal_color
  55.       self.contents.font.size = 16
  56.       self.contents.draw_text(4, index * 32 + 36, 288, 32,  "Lv:   ", 2)
  57.       colorx = [255.0000 - 255.0000/60 * @actors[index].level,0].max
  58.       colory = [255.0000 / 60 * @actors[index].level,255].min
  59.       self.contents.font.color = Color.new(colorx, colory, 0)
  60.       self.contents.draw_text(4, index * 32 + 36, 288, 32,  lv, 2)
  61.       self.contents.font.color = normal_color
  62.       self.contents.font.size = 22
  63.     else
  64.       self.contents.draw_text(4, index * 32 + 32, 288, 32,  "----------")
  65.     end
  66.   end
  67.   def update_cursor_rect
  68.     if @index < 0
  69.       self.cursor_rect.empty
  70.       return
  71.     end
  72.     row = @index / @column_max
  73.     if row < self.top_row
  74.       self.top_row = row
  75.     end
  76.     if row > self.top_row + (self.page_row_max - 1)
  77.       self.top_row = row - (self.page_row_max - 1)
  78.     end
  79.     cursor_width = self.width / @column_max - 32
  80.     x = @index % @column_max * (cursor_width + 32)
  81.     y = @index / @column_max * 32 - self.oy + 32
  82.     self.cursor_rect.set(x, y, cursor_width, 32)
  83.   end
  84.   def item_max
  85.     return @item_max
  86.   end
  87.   def actor?(index)
  88.     return @actors[index] == nil ? false : true
  89.   end
  90.   def set_index(x)
  91.     @index = x
  92.   end
  93. end

  94. #------------------------------------------------------------------------------

  95. class Chaochao_Window_PartyRight < Window_Selectable
  96.   def initialize
  97.     super(320, 0, 320, 224)
  98.     self.contents = Bitmap.new(width - 32, height - 32)
  99.     self.index = -1
  100.         self.opacity = 160
  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,  "Lv:   ", 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.     draw_actor_graphic(@actor, 40, 112)
  190.     draw_actor_class(@actor, 20, 124)
  191.     draw_actor_parameter(@actor, 100, 50, 0)
  192.     draw_actor_parameter(@actor, 100, 85, 1)
  193.     draw_actor_parameter(@actor, 100, 120, 2)
  194.     draw_actor_parameter(@actor, 350, 50, 3)
  195.     draw_actor_parameter(@actor, 350, 85, 4)
  196.     draw_actor_parameter(@actor, 350, 120, 5)
  197.     draw_actor_parameter(@actor, 350, 155, 6)
  198.     self.visible = true
  199.   end
  200.   def clear
  201.     self.contents.clear
  202.   end
  203. end

  204. #------------------------------------------------------------------------------

  205. class Game_Party
  206.   attr_reader   :actors2
  207.   attr_reader   :chaochao#不能从队伍向备用角色移动的角色ID
  208.   attr_reader   :chaochao2#不能从备用角色向队伍移动的角色ID
  209.   def initialize
  210.     @actors = []
  211.     @gold = 0
  212.     @steps = 0
  213.     @items = {}
  214.     @weapons = {}
  215.     @armors = {}
  216.     @actors2 = []
  217.     @chaochao = [1]
  218.     @chaochao2 = []
  219.   end
  220.   def add_actor(actor_id,type=1)#type为1是向队伍中添加,为2则相反。
  221.     case type
  222.     when 1
  223.       if $game_actors[actor_id] != nil
  224.         actor = $game_actors[actor_id]
  225.         #如果队伍没有满和队伍中没有此角色
  226.         if @actors.size < 4 and not @actors.include?(actor) and not @actors2.include?(actor)
  227.           @actors.push(actor)
  228.           $game_player.refresh
  229.         end
  230.       end
  231.     when 2
  232.       if $game_actors[actor_id] != nil
  233.         actor = $game_actors[actor_id]
  234.         #如果角色不在队伍中和不在备用角色队伍中的情况下
  235.         #向备用角色中添加角色
  236.         if not @actors.include?(actor) and not @actors2.include?(actor)
  237.           @actors2.push(actor)
  238.           $game_player.refresh
  239.         end
  240.       end
  241.     end
  242.   end
  243.   
  244.   def huanren(index,type=1)#type为1是从备用角色向队伍中移动,为2则相反。
  245.     actor = $game_actors[index]
  246.     case type
  247.     when 1
  248.       if @actors.size < 4 and @actors2.include?(actor) and not @chaochao2.include?(index) and not @actors.include?(actor)
  249.         @actors.push(actor)
  250.         @actors2.delete(actor)
  251.         $game_system.se_play($data_system.decision_se)
  252.         $game_player.refresh
  253.       end
  254.     when 2
  255.       if @actors.include?(actor) and not @chaochao.include?(index) and not @actors2.include?(actor)
  256.         @actors2.push(actor)
  257.         @actors.delete(actor)
  258.         $game_system.se_play($data_system.decision_se)
  259.         $game_player.refresh
  260.       end
  261.     end
  262.   end
  263.   
  264.   #type1,1是操作队伍中的角色能否向备用队伍移动,2则相反。
  265.   #type2,1是添加不能移动的,2是删除不能移动的。
  266.   def yidong(actor_id,type1,type2=1)
  267.     case type2
  268.     when 1
  269.       case type1
  270.       when 1
  271.         @chaochao.push(actor_id)
  272.       when 2
  273.         @chaochao2.push(actor_id)
  274.       end
  275.     when 2
  276.       case type1
  277.       when 1
  278.         @chaochao.delete(actor_id)
  279.       when 2
  280.         @chaochao2.delete(actor_id)
  281.       end
  282.     end
  283.   end
  284.   
  285.   #type,1从队伍中离开,2从备用角色中离开,3从队伍和备用角色中离开。
  286.   def remove_actor(actor_id,type=1)
  287.     actor = $game_actors[actor_id]
  288.     case type
  289.     when 1
  290.       @actors.delete(actor)
  291.       $game_player.refresh
  292.     when 2
  293.       @actors2.delete(actor)
  294.       $game_player.refresh
  295.     when 3
  296.       @actors.delete(actor)
  297.       @actors2.delete(actor)
  298.       $game_player.refresh
  299.     end
  300.   end
  301.   
  302.   def refresh
  303.     new_actors = []
  304.     new_actors2 = []
  305.     for i in [email protected]
  306.       if $data_actors[@actors[i].id] != nil
  307.         new_actors.push($game_actors[@actors[i].id])
  308.       end
  309.     end
  310.     @actors = new_actors
  311.     for i in [email protected]
  312.       if $data_actors[@actors2[i].id] != nil
  313.         new_actors2.push($game_actors[@actors2[i].id])
  314.       end
  315.     end
  316.     @actors2 = new_actors2
  317.   end
  318. end

  319. #------------------------------------------------------------------------------

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

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

Lv1.梦旅人

夜天の主

梦石
0
星屑
124
在线时间
1552 小时
注册时间
2008-4-13
帖子
2347

开拓者第4届短篇游戏比赛亚军

2
发表于 2009-7-15 01:02:01 | 只看该作者
1# 夺爱

  1. module Opacity_Menu
  2.   def create_screen
  3.     @screen = Spriteset_Map.new
  4.   end
  5.   def dispose_screen
  6.     @screen.dispose
  7.   end
  8. end

  9. class Window_Base < Window
  10.   def initialize(x, y, width, height)
  11.     super()
  12.     @windowskin_name = $game_system.windowskin_name
  13.     self.windowskin = RPG::Cache.windowskin(@windowskin_name)
  14.     self.x = x
  15.     self.y = y
  16.     self.width = width
  17.     self.height = height
  18.     self.z = 100
  19.     if    $scene.is_a?(Chaochao_Scene_Party)
  20.       self.back_opacity = 200 #在这里设置不透明度
  21.     end
  22.   end
  23. end

  24. class Chaochao_Scene_Party
  25.   include Opacity_Menu
  26.   alias main_old main
  27.   def main
  28.     create_screen
  29.     main_old
  30.     dispose_screen
  31.   end
  32. end

复制代码
插在main之前就好了~如果LZ已经用过菜单半透明脚本的话就在类似的地方将以上class的部分和if的部分分别插入脚本中就行了~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
0 小时
注册时间
2007-2-7
帖子
388
3
 楼主| 发表于 2009-7-15 10:00:03 | 只看该作者
可以了.谢谢`
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-27 06:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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