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

Project1

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

[已经过期] 怎么让某一人物查看不了状态?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3841
在线时间
723 小时
注册时间
2014-3-29
帖子
509
跳转到指定楼层
1
发表于 2014-8-16 11:59:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x


我把ID1的人物设定为主角,so 想要这个人物在菜单中无法查看其状态(如果连菜单中的hp和mp都不显示,那就更好了)。

                                                                                          有啥好办法没?




Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-8-16 12:05:29 | 只看该作者
在绘制的地方判定角色ID即可

点评

管他什么样,角色ID为1就跳  发表于 2014-8-16 13:29
这俩脚本样子真不太一样。。发出来看看  发表于 2014-8-16 13:28
这还能报错?如果角色ID为1,跳过绘制不就是了  发表于 2014-8-16 13:26
在原来的 Window_Status 里绘制没现象,在新的 Window_Status 里不知怎么弄(弄了下,蹦出错误了。) 话说,版主大人现在很忙么  发表于 2014-8-16 13:25
嗯,绘制应该在 Window_Status 里  发表于 2014-8-16 13:11
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3841
在线时间
723 小时
注册时间
2014-3-29
帖子
509
3
 楼主| 发表于 2014-8-16 13:29:05 | 只看该作者
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Status
  4. #------------------------------------------------------------------------------
  5. #  状态画面中,显示角色基本信息的窗口。
  6. #==============================================================================
  7. module Cache
  8.   #--------------------------------------------------------------------------
  9.   # ● 获取菜单图像
  10.   #--------------------------------------------------------------------------
  11.   def self.menu(filename)
  12.       load_bitmap("Graphics/Menus/", filename)
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 获取状态菜单图像
  16.   #--------------------------------------------------------------------------
  17.   def self.menu_status(filename)
  18.       load_bitmap("Graphics/Menus/Status/", filename)
  19.   end   
  20. end
  21. class Window_Base < Window
  22.   #--------------------------------------------------------------------------
  23.   # ● 绘制数字(x,y,value,image,cl,n)在x,y坐标用image图片的第n行绘制value数值,cl是图片的总行数
  24.   #--------------------------------------------------------------------------
  25.   def draw_image_number(x,y,value,image,cl,n)
  26.     bitmap = Cache.menu(image)
  27.     cw = bitmap.width / 10
  28.     ch = bitmap.height / cl
  29.     number_text = value.abs.to_s.split(//)
  30.     plus_x = -cw * number_text.size
  31.     for r in 0..number_text.size - 1
  32.         number_abs = number_text[r].to_i
  33.         nsrc_rect = Rect.new(cw * number_abs, ch * (n - 1), cw, ch)
  34.         contents.blt(plus_x + x + (cw  *  r), y, bitmap, nsrc_rect)   
  35.     end   
  36.     bitmap.dispose  
  37.   end
  38. end
  39. class Window_Status < Window_Selectable
  40.   #--------------------------------------------------------------------------
  41.   # ● 初始化对象
  42.   #--------------------------------------------------------------------------
  43.   def initialize(actor)
  44.     super(0, 0, Graphics.width, Graphics.height)
  45.     @actor = actor
  46.     refresh
  47.     activate
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 设置角色
  51.   #--------------------------------------------------------------------------
  52.   def actor=(actor)
  53.     return if @actor == actor
  54.     @actor = actor
  55.     refresh
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 刷新
  59.   #--------------------------------------------------------------------------
  60.   def refresh
  61.     clear
  62.     draw_actor_state
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 清除
  66.   #--------------------------------------------------------------------------
  67.   def clear
  68.     contents.clear
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 绘制内容
  72.   #--------------------------------------------------------------------------
  73.   def draw_actor_state
  74.     if @actor == nil
  75.       clear
  76.     else
  77.       contents.font.size = 15
  78.       draw_actor_pic(@actor, 0, 25)
  79.       create_states(205,45)
  80.       draw_actor_name(@actor,130,0)
  81.       draw_actor_class(@actor, 135, 15)
  82.       draw_image_number(235,5,@actor.level,"Number",1,1)
  83.       draw_exp_info(@actor, 242, 5)
  84.       if @actor.is_pet_by?
  85.         change_color(text_color(18))
  86.         draw_text(145, 30, 180, line_height, @actor.nickname)
  87.         change_color(normal_color)
  88.         #draw_actor_nickname(@actor, 145, 30)
  89.       else
  90.         draw_actor_nickname(@actor, 145, 30)
  91.       end
  92.        draw_hp_gauge(@actor,416,12)
  93.        draw_mp_gauge(@actor,417,43)
  94.        draw_hpmp_number(450,0,@actor.hp,"Par_Number",3,3)
  95.        draw_hpmp_number(495,15,@actor.mhp,"Par_Number",3,1)
  96.        draw_hpmp_number(450,30,@actor.mp,"Par_Number",3,2)
  97.        draw_hpmp_number(495,45,@actor.mmp,"Par_Number",3,1)
  98.        draw_actor_allpa_number(@actor, 210, 70)
  99.        draw_equipments(@actor, 205, 207)
  100.        draw_description(@actor, 0, 340)
  101.     end
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 绘制立绘
  105.   #--------------------------------------------------------------------------
  106.   def draw_actor_pic(actor, x, y)
  107.     if actor.is_pet?
  108.       bitmap = Cache.menu_status("Pet_" + actor.get_pet_id.to_s)
  109.     else
  110.       bitmap = Cache.menu_status("Actor_" + actor.id.to_s)
  111.     end
  112.     cw = bitmap.width
  113.     ch = bitmap.height
  114.     rect = Rect.new(0,0,cw,ch)
  115.     contents.blt(x, y, bitmap, rect)
  116.     bitmap.dispose
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 绘制经验值信息
  120.   #--------------------------------------------------------------------------
  121.   def draw_exp_info(actor, x, y)
  122.     s1 = actor.max_level? ? "-------" : actor.exp
  123.     s2 = actor.max_level? ? "-------" : actor.next_level_exp - actor.exp
  124.     #change_color(system_color)
  125.     draw_text(x, y, 70, 15, "当前经验")
  126.     draw_text(x, y + 15, 70, 15, "下一等级")
  127.     #change_color(normal_color)
  128.     draw_text(x + 30, y, 100, 15, s1, 2)
  129.     draw_text(x + 30, y + 15, 100, 15, s2, 2)
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 绘制HP、MP槽值
  133.   #--------------------------------------------------------------------------
  134.   def draw_hp_gauge(actor,x,y)
  135.      hp_image = Cache.menu_status("Actor_Meter2")
  136.      cw = hp_image.width * actor.hp / actor.mhp
  137.      ch = hp_image.height / 2
  138.      rect = Rect.new(0, ch, cw, ch)
  139.      contents.blt(x, y, hp_image, rect)
  140.      hp_image.dispose
  141.    end
  142.   def draw_mp_gauge(actor,x,y)
  143.      mp_image = Cache.menu_status("Actor_Meter2")
  144.      cw = mp_image.width * actor.mp / actor.mmp
  145.      ch = mp_image.height / 2
  146.      rect = Rect.new(0, 0, cw, ch)
  147.      contents.blt(x, y, mp_image, rect)
  148.      mp_image.dispose
  149.    end
  150.   #--------------------------------------------------------------------------
  151.   # ● 绘制数字(x,y,value,image,cl,n)在x,y坐标用image图片的第n行绘制value数值,cl是图片的总行数
  152.   #--------------------------------------------------------------------------
  153.   def draw_hpmp_number(x,y,value,image,cl,n)
  154.     bitmap = Cache.menu_status(image)
  155.     cw = bitmap.width / 11
  156.     ch = bitmap.height / cl
  157.     number_text = value.abs.to_s.split(//)
  158.     plus_x = -cw * number_text.size
  159.     for r in 0..number_text.size - 1
  160.         number_abs = number_text[r].to_i
  161.         nsrc_rect = Rect.new(cw * number_abs, ch * (n - 1), cw, ch)
  162.         contents.blt(plus_x + x + (cw  *  r), y, bitmap, nsrc_rect)   
  163.     end   
  164.     bitmap.dispose  
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 绘制属性
  168.   #--------------------------------------------------------------------------
  169.   def draw_actor_allpa_number(actor, x, y)
  170.     contents.font.size = 18
  171.     #bitmap = Cache.menu_status("Par_Number")
  172.     #cw = bitmap.width / 11
  173.     #ch = bitmap.height / 3
  174.     8.times {|i| #p actor.xparam(i)
  175.       if i % 2 == 0
  176.         change_color(normal_color)
  177.         draw_text(x, y + i / 2 * 32, 50, 20, Vocab::param(i))
  178.         change_color(text_color(17))
  179.         draw_text(x + 35, y + i / 2 * 32, 36, 23, actor.param(i), 2)
  180.         change_color(text_color(20))
  181.         draw_text(x + 85, y + i / 2 * 32, 50, 23, actor.get_pet_oneup_param(i), 2)
  182.         draw_text(x + 135, y + i / 2 * 32, 10, 20, "↑")
  183.         change_color(normal_color)
  184.       else
  185.         change_color(normal_color)
  186.         draw_text(x + 160, y + i / 2 * 32, 50, 20, Vocab::param(i))
  187.         change_color(text_color(17))
  188.         draw_text(x + 195, y + i / 2 * 32, 36, 23, actor.param(i), 2)
  189.         change_color(text_color(20))
  190.         draw_text(x + 245, y + i / 2 * 32, 50, 23, actor.get_pet_oneup_param(i), 2)
  191.         draw_text(x + 295, y + i / 2 * 32, 10, 20, "↑")
  192.         change_color(normal_color)
  193.       end
  194.     }
  195.     #bitmap.dispose
  196.     contents.font.size = 15
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 绘制装备
  200.   #--------------------------------------------------------------------------
  201.   def draw_equipments(actor, x, y)
  202.     actor.equips.each_with_index do |item, i|
  203.       if i % 2 == 0
  204.         draw_item_name(item, x, y + 26 * i)
  205.       else
  206.         draw_item_name(item, x + 150, y + 26 * i)
  207.       end
  208.     end
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 绘制说明
  212.   #--------------------------------------------------------------------------
  213.   def draw_description(actor, x, y)
  214.     draw_text_ex(x, y, actor.description)
  215.   end
  216.   ###########################################################################
  217.   #--------------------------------------------------------------------------
  218.   # ● Create_States
  219.   #--------------------------------------------------------------------------      
  220.   def create_states(x,y)
  221.     @icon = Cache.system("Iconset")
  222.     @status.bitmap.clear if @status
  223.     refresh_states
  224.     @status = Sprite.new
  225.     @status.bitmap = Bitmap.new(24,24)
  226.     @status.x = x
  227.     @status.y = y  
  228.     @status_flow = -24
  229.     @states_speed = 50
  230.     @status.z = 2
  231.     @old_states = @actor.states
  232.     flow_states
  233.   end  
  234.   #--------------------------------------------------------------------------
  235.   # ● Flow_Status
  236.   #--------------------------------------------------------------------------         
  237.   def flow_states
  238.     return if @actor.states.size == 0 and [email protected]
  239.     @states_speed = 0
  240.     @status.bitmap.clear
  241.     src_rect = Rect.new(@status_flow,0, 24,24)
  242.     @status.bitmap.blt(0,0, @actor_status, src_rect)
  243.     @status.visible = @actor.states.size == 0 ? false : true
  244.     @status_flow += 1
  245.     #@status_flow = -24 if @status_flow >= @states_size - 24
  246.     @status_flow = -24 if @status_flow >= @states_size - 3#24
  247.   end   
  248.   
  249.   #--------------------------------------------------------------------------
  250.   # ● Refresh States
  251.   #--------------------------------------------------------------------------        
  252.   def refresh_states
  253.     @old_states = @actor.states
  254.     @actor_status.dispose if @actor_status != nil
  255.     #@states_size = @actor.states.size > 0 ? (48 * @actor.states.size) : 24
  256.     @states_size = @actor.states.size > 0 ? (27 * @actor.states.size) : 3
  257.     @actor_status = Bitmap.new(@states_size,24)
  258.     index = 0
  259.     for i in  @actor.states
  260.       rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
  261.       #@actor_status.blt(48 * index , 0, @icon, rect)
  262.       @actor_status.blt(27 * index , 0, @icon, rect)
  263.       index += 1
  264.     end
  265.   end  
  266.   
  267.   #--------------------------------------------------------------------------
  268.   # ● Dispose
  269.   #--------------------------------------------------------------------------   
  270.   def dispose
  271.     super
  272.     @status.bitmap.dispose
  273.     @status.dispose
  274.     @actor_status.dispose if @actor_status != nil
  275.     @icon.dispose
  276.   end
  277.   
  278.   #--------------------------------------------------------------------------
  279.   # ● Update
  280.   #--------------------------------------------------------------------------   
  281.   def update
  282.     super
  283.     refresh_states if @old_states != @actor.states
  284.     flow_states
  285.   end
  286.   ###########################################################################
  287. end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2014-8-16 13:32:24 | 只看该作者
neverstop 发表于 2014-8-16 13:29

第 74 行改成
  1. if !@actor || @actor.id == 1
复制代码
这样会报错?

点评

好吧,麻烦了  发表于 2014-8-16 15:54
自己找报错原因,自己调试。不是默认脚本我没法帮你找  发表于 2014-8-16 15:13
刚才我哥霸占了我的电脑。恩。。话说,这要怎么追踪  发表于 2014-8-16 15:10
我这里没法测试,也许是 @status 为 nil, 也许是 @actor 为 nil,两种情况你都追踪一下就好了  发表于 2014-8-16 13:39
是238行。。  发表于 2014-8-16 13:37
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1154
在线时间
209 小时
注册时间
2013-6-19
帖子
138
5
发表于 2014-8-16 19:32:29 | 只看该作者
neverstop 发表于 2014-8-16 13:29

Window_MenuStatus
第54行改成
  1. draw_actor_simple_status(actor, rect.x + 108, rect.y + line_height / 2) unless actor.id == 1
复制代码
看看

点评

没啥变化耶。3楼的内个脚本造了个新的状态窗口,改原来的脚本好像没啥用  发表于 2014-8-17 12:47
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-25 21:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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