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

Project1

 找回密码
 注册会员
搜索

求这段代码的正确写法!!

查看数: 3129 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-5-7 21:38

正文摘要:

本帖最后由 雷影 于 2015-5-7 21:40 编辑 RUBY 代码复制class Game_System  #--------------------------------------------------------------------------  # ● ...

回复

雷影 发表于 2015-5-8 11:32:10
cinderelmini 发表于 2015-5-8 10:57
就这样直接用,都是父类Window_Base里面的方法。
此外模块内模块的样式没用过,大概应该是这样用吧?
弹错 ...


谢谢了!你这方法是文字颜色都固定了!!
我只是想让佣兵等级的字母变色而已,研究了半天已经搞定了!!
放上完整代码,有谁需要的也可以用用。
RUBY 代码复制
  1. #==============================================================================
  2. # F10 - 变量窗口 - By芙蕾娅   
  3. #------------------------------------------------------------------------------
  4. #  ★ - 新增  ☆ - 修改  ■ - 删除 ● - 无变更
  5. #==============================================================================
  6.  
  7. #==============================================================================
  8. #佣兵等级,积分显示窗口  By 雷影
  9. #代码来自芙蕾娅变量窗口的改写!
  10. #==============================================================================
  11. module Freya
  12.   # 初始游戏时是否显示窗口
  13.   BeginShow = false
  14.   # 变量ID
  15.   WindowVariableID = 60   
  16.   #$game_system.variable_show = true
  17.   # 为显示进度窗口,要关闭则设把true设为false
  18.  
  19. end
  20. #==============================================================================
  21. # ■ Game_System
  22. #------------------------------------------------------------------------------
  23. #  处理系统附属数据的类。保存存档和菜单的禁止状态之类的数据。
  24. #   本类的实例请参考 $game_system 。
  25. #==============================================================================
  26.  
  27. class Game_System
  28.   #--------------------------------------------------------------------------
  29.   # ● 定义实例变量
  30.   #--------------------------------------------------------------------------
  31.   attr_accessor :variable_show_text            # 佣兵积分
  32.   attr_accessor :variable_show                 # 窗口是否显示
  33.   attr_accessor :variable_show_text2           # 佣兵等级
  34.  
  35.   #--------------------------------------------------------------------------
  36.   # ● 初始化对象
  37.   #--------------------------------------------------------------------------
  38.   alias vw_initialize initialize
  39.   def initialize
  40.     vw_initialize   
  41.     @variable_show_text = "佣兵积分"
  42.     @variable_show_text2 = "佣兵等级"
  43.     @variable_show = Freya::BeginShow
  44.  
  45.     #怎么写才不会出错啊??
  46.   end
  47. end
  48. #==============================================================================
  49. # ■ Window_Variable
  50. #------------------------------------------------------------------------------
  51. #  显示变量窗口
  52. #==============================================================================
  53. class Window_Variable < Window_Base
  54.   #--------------------------------------------------------------------------
  55.   # ● 初始化对象
  56.   #--------------------------------------------------------------------------
  57.   def initialize
  58.     super(0,0, window_width,window_height)
  59.     unless $game_system.variable_show
  60.       self.opacity = 0
  61.       self.contents_opacity = 0
  62.     end
  63.     refresh
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 获取窗口的宽度,高度
  67.   #--------------------------------------------------------------------------
  68.   def window_width
  69.     return 150
  70.   end
  71.   def window_height
  72.     return 75
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 更新画面
  76.   #--------------------------------------------------------------------------
  77.   def update
  78.     super
  79.     if $game_system.variable_show
  80.       self.opacity = 255
  81.       self.contents_opacity = 255
  82.     else
  83.       self.opacity = 0
  84.       self.contents_opacity = 0
  85.     end
  86.     refresh
  87.   end
  88.  
  89.  
  90.   #--------------------------------------------------------------------------
  91.   # ● 刷新
  92.   #--------------------------------------------------------------------------
  93.  
  94.   $_PS0["Window_Base_textcolor"] = 20150508
  95.   #==============================================================================
  96.   # [PS0] 通用配置模块  
  97.   #==============================================================================
  98.   module PS0
  99.     module Window_Base_textcolor
  100.       Color1  = Color.new(255, 255, 255, 255)
  101.       Color2  = Color.new(128, 255, 255, 255)
  102.       Color3  = Color.new(128, 128, 255, 255)
  103.       Color4  = Color.new(255, 255, 128, 255)
  104.       Color5  = Color.new(128, 255, 128, 255)
  105.       Color6  = Color.new(255, 128, 128, 255)
  106.       Color7  = Color.new(255, 255,   0, 255)
  107.       Color8  = Color.new(255,   0, 255, 255)
  108.       Color9  = Color.new(255,   0,   0, 255)
  109.     end
  110.   end
  111.  
  112.   def refresh
  113.  
  114.     contents.clear
  115.  
  116.     temp = $game_variables ? $game_variables[60] : []
  117.  
  118.     case temp
  119.  
  120.     when 0..49
  121.       color = PS0::Window_Base_textcolor::Color1
  122.       renk = "F"      
  123.     when 50..99
  124.       color = PS0::Window_Base_textcolor::Color2
  125.       renk = 'E'
  126.     when 100..199
  127.       color = PS0::Window_Base_textcolor::Color3
  128.       renk = 'D'
  129.     when 200..399
  130.       color = PS0::Window_Base_textcolor::Color4
  131.       renk = 'C'   
  132.     when 400..599
  133.       color = PS0::Window_Base_textcolor::Color5
  134.       renk = 'B'   
  135.     when 600..799      
  136.       color = PS0::Window_Base_textcolor::Color6
  137.       renk = 'A'         
  138.     when 800..999
  139.       color = PS0::Window_Base_textcolor::Color7   
  140.       renk = 'S'   
  141.     when 1000..1200      
  142.       color = PS0::Window_Base_textcolor::Color8     
  143.       renk = 'SS'
  144.     else      
  145.       color = PS0::Window_Base_textcolor::Color9
  146.       renk = 'SSS'
  147.     end
  148.  
  149.     @variable_show_text3 = renk
  150.  
  151.     draw_text(0, line_height/4, contents.width, line_height, $game_system.variable_show_text2) #显示佣兵等级文字
  152.  
  153.     change_color(color) #等级文字变色
  154.  
  155.     draw_text(0, line_height/4, contents.width, line_height, @variable_show_text3,2) #显示佣兵等级
  156.  
  157.     change_color(Color.new(255, 255, 255))
  158.  
  159.     draw_text(0, line_height*1, contents.width, line_height, $game_variables[Freya::WindowVariableID],2)#显示佣兵积分的变量
  160.  
  161.     draw_text(0, line_height*1, contents.width, line_height, $game_system.variable_show_text)#显示佣兵积分字样
  162.  
  163.     contents.font.size = Font.default_size
  164.  
  165.     reset_font_settings
  166.   end
  167. end
  168. #==============================================================================
  169. # ■ Scene_Map
  170. #------------------------------------------------------------------------------
  171. #  地图画面
  172. #==============================================================================
  173. class Scene_Map < Scene_Base
  174.   #--------------------------------------------------------------------------
  175.   # ● 生成所有窗口
  176.   #--------------------------------------------------------------------------
  177.   alias vw_create_all_windows create_all_windows
  178.   def create_all_windows
  179.     vw_create_all_windows
  180.     @variable_window = Window_Variable.new
  181.     @variable_window.y = Graphics.height - @variable_window.height-128 #窗口位置
  182.   end
  183. end
cinderelmini 发表于 2015-5-8 10:57:20


  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新
  3.   #--------------------------------------------------------------------------
  4.   def refresh
  5.     contents.clear

  6.     temp = $game_variables ? $game_variables[60] : []
  7.     case temp
  8.     when 0..49
  9.       renk = 'F'
  10.     when 50..99
  11.       renk = 'E'
  12.     when 100..149
  13.       renk = 'D'
  14.     #......
  15.     else
  16.       renk = 'SSS'
  17.     end
  18.     @variable_show_text3 = renk
  19.    
  20.     change_color(PS0::Window_Base_Itemcolor::Color1)
  21.     draw_text(0, line_height * 0, contents.width, line_height, $game_variables[Freya::WindowVariableID],2)#显示佣兵积分的变量      
  22.     contents.font.size = 16

  23.     change_color(PS0::Window_Base_Itemcolor::Color2)
  24.     draw_text(0, line_height * 1, contents.width, line_height, $game_system.variable_show_text)#显示佣兵积分字样

  25.     change_color(PS0::Window_Base_Itemcolor::Color3)
  26.     draw_text(0, line_height * 2, contents.width, line_height,  @variable_show_text3) #显示佣兵等级字样

  27.     change_color(PS0::Window_Base_Itemcolor::Color4)
  28.     draw_text(0, line_height * 3, contents.width, line_height, $game_system.variable_show_text3,2) #显示Renk
  29.     #上面的文字重叠了怎么改 才行?
  30.     reset_font_settings
  31.   end
复制代码
就这样直接用,都是父类Window_Base里面的方法。
此外模块内模块的样式没用过,大概应该是这样用吧?
弹错请通知~
雷影 发表于 2015-5-7 23:41:28
  1. module PS0
  2.   module Window_Base_Itemcolor
  3.     Color1 = Color.new(255, 255, 255)  # 一般品质的色彩(白,1)
  4.     Color2 = Color.new(128, 255, 128)  # 平庸品质的色彩(绿,2)
  5.     Color3 = Color.new(128, 128, 255)  # 精良品质的色彩(蓝,3)
  6.     Color4 = Color.new(255, 0, 255)    # 卓越品质的色彩(紫,4)
  7.     Color5 = Color.new(255, 128, 128)  # 神秘品质的色彩(红,5)
  8.     Color6 = Color.new(255, 128, 0)    # 传说品质的色彩(橙,6)
  9.     Color7 = Color.new(255, 255, 128)  # 特殊品质的色彩(黄,7)
  10.   end
  11. end
复制代码
脚本库里有现成的设定好的颜色,要怎么用?
cinderelmini 发表于 2015-5-7 22:23:04
本帖最后由 cinderelmini 于 2015-5-7 22:35 编辑

  1.   #--------------------------------------------------------------------------
  2.   # ● 刷新
  3.   #--------------------------------------------------------------------------
  4.   def refresh
  5.     contents.clear

  6.     temp = $game_variables ? $game_variables[60] : []
  7.     case temp
  8.     when 0..49
  9.       renk = 'F'
  10.     when 50..99
  11.       renk = 'E'
  12.     when 100..149
  13.       renk = 'D'
  14.     #......
  15.     else
  16.       renk = 'SSS'
  17.     end
  18.     @variable_show_text3 = renk

  19.     draw_text(0, line_height * 0, contents.width, line_height, $game_variables[Freya::WindowVariableID],2)#显示佣兵积分的变量      
  20.     contents.font.size = 16

  21.     draw_text(0, line_height * 1, contents.width, line_height, $game_system.variable_show_text)#显示佣兵积分字样

  22.     draw_text(0, line_height * 2, contents.width, line_height,  @variable_show_text3) #显示佣兵等级字样

  23.     draw_text(0, line_height * 3, contents.width, line_height, $game_system.variable_show_text3,2) #显示Renk
  24.     #上面的文字重叠了怎么改 才行?
  25.     contents.font.size = Font.default_size
  26.   end
复制代码
如果这都不行那么……………………


首先Game_System里initialize里面的两个变量分歧要记得去掉或者#掉……
然后上面这段是放在那个要显示的窗口里面的……里面原有refresh,看需求替换或者添加……

点评

实在不行请上脚本或者工程……  发表于 2015-5-7 22:37
本楼已编辑……  发表于 2015-5-7 22:36
不行呢!错误报告还是和上面一样!  发表于 2015-5-7 22:28
VIPArcher 发表于 2015-5-7 22:04:58
本帖最后由 VIPArcher 于 2015-5-7 22:08 编辑
雷影 发表于 2015-5-7 21:53
报错是这个!
加上上面哪个代码也是一样


默认脚本中$game_system先于$game_variables之前生成,这个时候变量还没有初始化,然而这里你不要这样做就可以了
解决方法:去掉你脚本里的各种 variable_show_text3           # Renk
绘制那里改成
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 刷新
  3.   #--------------------------------------------------------------------------
  4.   def refresh
  5.     contents.clear
  6.     renk = @variable_show_text3 = case $game_variables[60]
  7.     when 0..49 then 'F'
  8.     when 50..99 then 'E'
  9.     when 100..149 then 'D'
  10.     #......
  11.     else 'SSS'
  12.     end
  13.     draw_text(0, line_height * 0, contents.width, line_height, $game_variables[Freya::WindowVariableID],2)#显示佣兵积分的变量      
  14.     contents.font.size = 16
  15.  
  16.     draw_text(0, line_height * 1, contents.width, line_height, $game_system.variable_show_text)#显示佣兵积分字样
  17.  
  18.     draw_text(0, line_height * 2, contents.width, line_height, renk) #显示佣兵等级字样
  19.  
  20.     draw_text(0, line_height * 3, contents.width, line_height, $game_system.variable_show_text3,2) #显示Renk
  21.     #上面的文字重叠了怎么改 才行?
  22.     contents.font.size = Font.default_size
  23.   end
未测试
howhow1314 发表于 2015-5-7 21:45:53
本帖最后由 howhow1314 于 2015-5-7 21:54 编辑

你敢說一下報什麼錯嗎

目測是因為$game_variables[60]為nil

RUBY 代码复制
  1. class Game_Variables
  2.   alias initialize_z initialize
  3.   def initialize
  4.     @data[60] = 0
  5.   end
  6. end


加這看看...


我口胡了..剛看到默認腳本裡有這東西
  def [](variable_id)
    @data[variable_id] || 0
  end

点评

哪有什么办法解决吗?  发表于 2015-5-7 22:05
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-16 03:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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