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

Project1

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

[已经过期] 文字描边脚本的问题(如何临时变色)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2009-9-20
帖子
232
跳转到指定楼层
1
发表于 2010-10-2 10:39:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 p7l8k90 于 2010-10-3 10:26 编辑

我用了文字描边脚本,由于某种原因需要临时改变文字和描边/阴影的颜色,文字的颜色改掉了,但是描边和阴影却无从下手,希望各位大侠指点,以下是文字描边脚本,我没改什么东西只是改了一下阴影和描边的默认颜色,啊对了,最好改完颜色之后能还原成默认颜色,拜谢了!
  1. #==============================================================================
  2. # ◎ GPRA_Bitmap
  3. #------------------------------------------------------------------------------
  4. # ◎ Bitmap功能加强
  5. #------------------------------------------------------------------------------
  6. # 制作者:绿梨子红苹果
  7. # 个人主页:vbgm.9126.com
  8. # E-Mail:[email protected]
  9. # QQ:42378361
  10. #==============================================================================

  11. class Bitmap
  12.   # 影子字
  13.   def draw_text_s(x, y, width, height, str, align=0)
  14.     # 保存当前颜色
  15.     r=self.font.color.red
  16.     g=self.font.color.green
  17.     b=self.font.color.blue
  18.     # 颜色更改成黑色
  19.     self.font.color.set(255, 255, 255)
  20.     # 绘制影子
  21.     self.draw_text(x+2, y+2, width, height, str, align)
  22.     # 恢复原始字色
  23.     self.font.color.set(r,g,b)
  24.     # 绘制原来的字
  25.     self.draw_text(x, y, width, height, str, align)
  26.   end
  27.   # 描边字
  28.   def draw_text_f(x, y, width, height, str, align=0)
  29.     # 保存当前颜色
  30.     r=self.font.color.red
  31.     g=self.font.color.green
  32.     b=self.font.color.blue
  33.     # 颜色更改成黑色
  34.     self.font.color.set(255, 0, 0)
  35.     # 绘制边框
  36.     self.draw_text(x-1, y-1, width, height, str, align)
  37.     self.draw_text(x-1, y+1, width, height, str, align)
  38.     self.draw_text(x+1, y-1, width, height, str, align)
  39.     self.draw_text(x+1, y+1, width, height, str, align)
  40.     self.draw_text(x, y-1, width, height, str, align)
  41.     self.draw_text(x, y+1, width, height, str, align)
  42.     self.draw_text(x-1, y, width, height, str, align)
  43.     self.draw_text(x+1, y, width, height, str, align)
  44.     # 恢复原始字色
  45.     self.font.color.set(r,g,b)
  46.     # 绘制原来的字
  47.     self.draw_text(x, y, width, height, str, align)
  48.   end
  49. end
复制代码

评分

参与人数 1星屑 -2 收起 理由
fux2 -2 哼哼!让我手工结贴扣手工费…… ...

查看全部评分

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
21 小时
注册时间
2007-7-3
帖子
573
10
发表于 2010-10-3 15:59:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2009-9-20
帖子
232
9
 楼主| 发表于 2010-10-3 13:43:52 | 只看该作者
回复 fux2 的帖子


    ……不明白……
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42317
在线时间
7597 小时
注册时间
2009-7-6
帖子
13505

开拓者贵宾

8
发表于 2010-10-3 10:26:19 | 只看该作者
回复 p7l8k90 的帖子


    在这些句子下面给变量赋值。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2009-9-20
帖子
232
7
 楼主| 发表于 2010-10-3 10:09:34 | 只看该作者
本帖最后由 p7l8k90 于 2010-10-3 10:24 编辑

回复 fux2 的帖子


    是,我知道,我想临时改,怎么改,不是全局都要黑色阴影,就战斗结算要其他时刻均为白色阴影,描边一样需要有多处改动。
汗……我能不能像Window_Base里一样,单独定义几种特殊状态下的颜色?那里面有这么几句
  1. #--------------------------------------------------------------------------
  2.   # ● 获取普通文字色
  3.   #--------------------------------------------------------------------------
  4.   def normal_color
  5.     return Color.new(66, 121, 8, 255)
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 获取无效文字色
  9.   #--------------------------------------------------------------------------
  10.   def disabled_color
  11.     return Color.new(255, 255, 255, 128)
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 获取系统文字色
  15.   #--------------------------------------------------------------------------
  16.   def system_color
  17.     return Color.new(0, 255, 234, 255)
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 获取危机文字色
  21.   #--------------------------------------------------------------------------
  22.   def crisis_color
  23.     return Color.new(255, 255, 64, 255)
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 获取战斗不能文字色
  27.   #--------------------------------------------------------------------------
  28.   def knockout_color
  29.     return Color.new(255, 64, 0)
  30.   end
复制代码
如果我想用同样的方法定义文字描边该怎么做呢?

点评

汗。。回复真快,我正编辑呢,原贴已编辑。  发表于 2010-10-3 10:12
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42317
在线时间
7597 小时
注册时间
2009-7-6
帖子
13505

开拓者贵宾

6
发表于 2010-10-3 10:07:01 | 只看该作者
本帖最后由 fux2 于 2010-10-3 10:11 编辑

回复 p7l8k90 的帖子


    简单问题干啥复杂化?255,255,255那里就是改RGB验色,RED,GREEN,BLUE知道啵?临时更改可以把255换成全局参数,比如$R,$G,$B,在原draw_text方法里添加默认值,\C[n]用法里定义变量值。

点评

回复贴已编辑……  发表于 2010-10-3 10:24
……不太明白……我是脚本盲啊……  发表于 2010-10-3 10:21
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2009-9-20
帖子
232
5
 楼主| 发表于 2010-10-3 09:23:16 | 只看该作者
回复 moy 的帖子


    那个,往哪加TRUE啊……

点评

moy
调用的时候,例如self.contents.draw_text_s(x, 0, 128, 32, $data_system.words.gold, true)  发表于 2010-10-3 16:08
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

4
发表于 2010-10-3 07:58:36 | 只看该作者
  1. def draw_text_s(x, y, width, height, str, align=0,inbattle = false) #增加inbattle变量
  2.      #在self.font.color.set(255, 255, 255)后一行插入
  3.      self.font.color.set(255, 155, 55) if inbattle  #数值随便改的
  4. end
复制代码
然后再结算调用的时候多加一个true就行

评分

参与人数 1星屑 +200 收起 理由
fux2 + 200 认可答案

查看全部评分

Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2009-9-20
帖子
232
3
 楼主| 发表于 2010-10-3 07:48:12 | 只看该作者
本帖最后由 p7l8k90 于 2010-10-3 09:48 编辑

我看字体阴影就是重复绘制字体,然后z值设置在普通字以下,那个255255255是我后改的,原先的阴影是黑色,我因为需要改成了白色,描边就是重复绘制两遍字体,完了z值也都在普通字以下,两遍字体一个大,一个小,那个颜色我也改了成红色了,我现在就是想在战斗结算(Window_BattleResult)的时候吧阴影临时改成黑色,然后再改回来,不知道怎么弄……以下是稍微改动的战斗结算
  1. #==============================================================================
  2. # ■ Window_BattleResult
  3. #------------------------------------------------------------------------------
  4. #  战斗结束时、显示获得的 EXP 及金钱的窗口。
  5. #==============================================================================

  6. class Window_BattleResult < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     exp       : EXP
  10.   #     gold      : 金钱
  11.   #     treasures : 宝物
  12.   #--------------------------------------------------------------------------
  13.   def initialize(exp, gold, treasures)
  14.     @exp = exp
  15.     @gold = gold
  16.     @treasures = treasures
  17.     super(160, 0, 320, @treasures.size * 32 + 64)
  18.     self.contents = Bitmap.new(width - 32, height - 32)
  19.     self.y = 160 - height / 2
  20.     self.back_opacity = 255
  21.     self.visible = false
  22.     refresh
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 刷新
  26.   #--------------------------------------------------------------------------
  27.   def refresh
  28.     self.contents.clear
  29.     x = 4
  30.     self.contents.font.color = Color.new(0, 0, 0, 255)
  31.     cx = contents.text_size(@exp.to_s).width
  32.     self.contents.draw_text_s(x, 0, cx, 32, @exp.to_s)
  33.     x += cx + 4
  34.     self.contents.font.color = Color.new(0, 0, 0, 255)
  35.     cx = contents.text_size("经验").width
  36.     self.contents.draw_text_s(x, 0, 64, 32, "经验")
  37.     x += cx + 16
  38.     self.contents.font.color = Color.new(0, 0, 0, 255)
  39.     cx = contents.text_size(@gold.to_s).width
  40.     self.contents.draw_text_s(x, 0, cx, 32, @gold.to_s)
  41.     x += cx + 4
  42.     self.contents.font.color = Color.new(0, 0, 0, 255)
  43.     self.contents.draw_text_s(x, 0, 128, 32, $data_system.words.gold)
  44.     y = 32
  45.     for item in @treasures
  46.       draw_item_name(item, 4, y)
  47.       y += 32
  48.     end
  49.   end
  50. end
复制代码
至于你说阴影位置的问题,应该是跟那个x-1y-1什么的有关吧……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
578 小时
注册时间
2010-6-29
帖子
365
2
发表于 2010-10-2 19:41:09 | 只看该作者
:sleepy:虽然有些看不懂……但是阴影字和描边字的原理是把该字体颜色的亮度给改成最暗以达到黑色的效果,然后阴影字是各向下向右移动两像素,描边字是上下左右各移动一像素……如果改的话应该是在这里改:
第20行  self.font.color.set(255, 255, 255)修改成255以下的数字(我真不知道是修改哪个……)
第35行  self.font.color.set(255, 0, 0)也修改成255以下的数字(如果是按这个的话应该是改第一个吧……)
注意这样改只能修改亮度,想要改变色调的话应该是动后面两个,但是……我真的不知道该动哪个……
想要读懂RGSS只需要用英汉互译就OK……LZ需要的话可以尝试一下。
另追加一个东西:
http://www.rpgchina.net/read-htm-tid-38563.html
完毕……

点评

那个……我觉得你的分析有点问题……  发表于 2010-10-3 07:40

评分

参与人数 1星屑 +200 收起 理由
fux2 + 200 认可答案

查看全部评分

为了四公主苦逼赚钱中。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-12 06:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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