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

Project1

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

[已经解决] 求这段代码的正确写法!!

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7446
在线时间
1098 小时
注册时间
2006-7-18
帖子
570
跳转到指定楼层
1
发表于 2015-5-7 21:38:38 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 雷影 于 2015-5-7 21:40 编辑

RUBY 代码复制
  1. class Game_System
  2.   #--------------------------------------------------------------------------
  3.   # ● 定义实例变量
  4.   #--------------------------------------------------------------------------
  5.   attr_accessor :variable_show_text            # 佣兵积分
  6.   attr_accessor :variable_show                 # 进度窗口是否显示
  7.   attr_accessor :variable_show_text2           # 佣兵等级
  8.   attr_accessor :variable_show_text3           # Renk
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化对象
  11.   #--------------------------------------------------------------------------
  12.   alias vw_initialize initialize
  13.   def initialize
  14.     vw_initialize   
  15.     @variable_show_text = "佣兵积分"
  16.     @variable_show_text2 = "佣兵等级"
  17.     @variable_show = Freya::BeginShow
  18. #----------------------------------------------------------------
  19.    if $game_variables[60].between?(0, 49)   #60号变量在0~49之间时,佣兵等级为F
  20.            @variable_show_text3 = "F"
  21.      end
  22.    if $game_variables[60].between?(50, 99)#60号变量在50~99之间时,佣兵等级为E
  23.            @variable_show_text3 = "E"
  24.      end
  25. #--------------------------------------------------------------
  26.     #上面这一段怎么写才不会出错啊??
  27.   end
  28. end

这段代码是其中一部分,想法是当佣兵积分的变量在一定范围内时,佣兵等级的文本赋上相应的文本!不过想法虽有,却怎么也不会写!

Lv4.逐梦者

梦石
0
星屑
7446
在线时间
1098 小时
注册时间
2006-7-18
帖子
570
11
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

10
发表于 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里面的方法。
此外模块内模块的样式没用过,大概应该是这样用吧?
弹错请通知~
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7446
在线时间
1098 小时
注册时间
2006-7-18
帖子
570
9
 楼主| 发表于 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
复制代码
脚本库里有现成的设定好的颜色,要怎么用?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7446
在线时间
1098 小时
注册时间
2006-7-18
帖子
570
8
 楼主| 发表于 2015-5-7 23:04:23 | 只看该作者

成了!太感谢啊!谢谢啊!!!
PS:偷偷问一下还能奢侈下进一步,给文字上色吗?试了下\c[x]的控制码无效!!

点评

要怎么写啊!要在哪个位置赋上颜色啊?  发表于 2015-5-7 23:38
refresh里全部操作完成之后最好使用“reset_font_settings”还原一下文字设定。  发表于 2015-5-7 23:12
上色使用change_color(颜色),颜色可以填Window_Base设定好的颜色(比如"nromal_color"),或者自己定义颜色Color.new(r, g, b)范围都是rgb0~255。  发表于 2015-5-7 23:10
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

7
发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7446
在线时间
1098 小时
注册时间
2006-7-18
帖子
570
6
 楼主| 发表于 2015-5-7 22:16:50 | 只看该作者

不行呢!这次报错是这个

点评

http://rm.66rpg.com/thread-378119-1-1.html 试着用这个脚本检测一下出错的位置  发表于 2015-5-7 22:41
没有啦!就是在原脚本里改的!另一个帖子里就是原脚本了!  发表于 2015-5-7 22:33
你该不会是把原脚本中的这段代码复制出来,再作为一个新脚本插入到编辑器了吧?  发表于 2015-5-7 22:31
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

5
发表于 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
未测试
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7446
在线时间
1098 小时
注册时间
2006-7-18
帖子
570
4
 楼主| 发表于 2015-5-7 21:53:19 | 只看该作者

报错是这个!
加上上面哪个代码也是一样

点评

因为原脚本是在里面赋值的,我就想扩展多加个条件赋不同的值。结果错了吗  发表于 2015-5-7 21:57
...看清楚才發現,你怎麼把那腳本寫在initialize裡面....  发表于 2015-5-7 21:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
135
在线时间
450 小时
注册时间
2015-2-25
帖子
365
3
发表于 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 05:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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