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

Project1

 找回密码
 注册会员
搜索
查看: 3133|回复: 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
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2015-5-7 21:42:09 | 只看该作者
RUBY 代码复制
  1. @variable_show_text3 = case $game_variables[60]
  2. when 0..49 then 'F'
  3. when 50..99 then 'E'
  4. when 100..149 then 'D'
  5. #......
  6. else 'SSS'
  7. end
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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
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.逐梦者

「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
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.逐梦者

梦石
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.逐梦者

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 07:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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