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

Project1

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

[原创发布] 【不是创意的创意】角色的状态决定行走图色相v1.3

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

跳转到指定楼层
1
发表于 2008-12-12 01:55:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 精灵使者 于 2014-12-20 21:35 编辑

状态决定行走图色相 v1.3
更新日志:
1.1版整合了小lim的脚本,实现了储存进度和正常游戏里玩家的状态颜色显示。
1.2版更新了色调偏移算法,避免了2个以上的状态偏移相同色相的状况。
1.3版整合了小lim的菜单脚本,允许更改菜单的色调或者颜色叠加(普通行走图无效)
应某提问区的要求发布。
如果角色中了某种特殊状态,则会自动改变此角色的色调,支持多种状态偏移。
经测试,与人物跟随脚本完美兼容,没有任何冲突。各自人物都会有自己的状态偏移。
p.s.已经有了色相的行走图则继续往下偏移。
使用方法:
定义常量
# 设定颜色更换『状态编号 => [Red,Gree,Blue]』
  State_color = {
  1 => [50,50,50],
  2 => [128,0,0],
  3 => [128,128,0]
                 }
  # 设定色相更换『状态编号 => [hue]』
  State_hue = {
  1 => [330],
  2 => [60],
  3 => [30],
  }
  # 设定改变颜色方式,0(色调) 或者 1(覆盖)或者 2(色相)
  Change_type = 0
效果图:

范例工程:http://rpg.blue/upload_program/d ... ��调_109983089.rar
脚本:

  1. #------------------------------------------------------------------------------
  2. #状态决定行走图色相色调 v1.3
  3. #
  4. #如果角色中了某种特殊状态,则会自动改变此角色的色相或者色调。
  5. #
  6. #p.s.已经有了色调的行走图则继续往下偏移。
  7. #
  8. #编写 by 精灵使者,改进 by enchao_lim
  9. #增添了读取进度和普通状态下的角色偏移
  10. #改进了异常色调如果相同的话的判断算法
  11. #可以使用灰色的色调和覆盖颜色,但是在菜单以外其他地方无效。
  12. #------------------------------------------------------------------------------

  13. #定义恒量

  14. module SRSR
  15.   # 设定颜色更换『状态编号 => [Red,Gree,Blue]』
  16.   State_color = {
  17.   1 => [50,50,50],
  18.   2 => [128,0,0],
  19.   3 => [128,128,0]
  20.                  }
  21.   # 设定色相更换『状态编号 => [hue]』
  22.   State_hue = {
  23.   1 => [330],
  24.   2 => [60],
  25.   3 => [30],
  26.   }
  27.   # 设定改变颜色方式,0(色调) 或者 1(覆盖)或者 2(色相)
  28.   Change_type = 0
  29. end
  30. class Window_Base
  31.   alias new_initialize initialize
  32.   def initialize(_x,_y,_w,_h)
  33.     new_initialize(_x,_y,_w,_h)
  34.     @graphics = {}
  35.     for i in 0...$data_actors.size
  36.       @graphics[i] = nil
  37.     end
  38.     @_x = self.x
  39.     @_y = self.y
  40.   end
  41.   def draw_actor_graphic(actor,x,y)
  42.     @graphics[actor.id].dispose if @graphics[actor.id] != nil
  43.     @graphics[actor.id] == nil
  44.     @delta_hue = 0
  45.     @state_num = 0
  46.     if SRSR::Change_type == 2
  47.       for i in actor.states
  48.       #如果角色中状态就加上偏移值
  49.       if SRSR::State_hue[i] != nil
  50.       @delta_hue += SRSR::State_hue[i][0]
  51.       @state_num += 1
  52.       end
  53.        end
  54.     #防止两种以上状态叠加出现相同色调的状况
  55.     if @state_num > 1
  56.     for i in actor.states
  57.       if SRSR::State_hue[i] != nil
  58.       #当与某一个颜色重复或者与普通色调相同时
  59.       if @delta_hue % 360 == SRSR::State_hue[i][0] or @delta_hue %360 == 0
  60.         @delta_hue += 179 #加上一个质数尽量避免重复
  61.       end
  62.       end
  63.     end
  64.     end
  65.     #最后计算
  66.     @delta_hue %= 360
  67.     end
  68.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue +
  69.     @delta_hue)
  70.     cw = bitmap.width/4
  71.     ch = bitmap.height/4
  72.     @graphics[actor.id] = Sprite.new
  73.     @graphics[actor.id].bitmap = bitmap
  74.     @graphics[actor.id].src_rect.set(0,0,cw,ch)
  75.     x = x +16 - cw / 2
  76.     y = y +16 - ch
  77.     @graphics[actor.id].x = x
  78.     @graphics[actor.id].y = y
  79.     @graphics[actor.id].z = self.z + 1
  80.     @graphics[actor.id].opacity = 0
  81.     tone = [0,0,0,0]
  82.     case SRSR::Change_type
  83.     when 0
  84.       for i in actor.states
  85.         if SRSR::State_color[i] != nil
  86.           tone[0] = (tone[0] + SRSR::State_color[i][0]) % 256
  87.           tone[1] = (tone[1] + SRSR::State_color[i][1]) % 256
  88.           tone[2] = (tone[2] + SRSR::State_color[i][2]) % 256
  89.           tone[3] = 255
  90.         end
  91.       end
  92.       @graphics[actor.id].tone.set(tone[0],tone[1],tone[2],tone[3])
  93.     when 1
  94.       for i in actor.states
  95.         if SRSR::State_color[i] != nil
  96.           tone[0] = (tone[0] + SRSR::State_color[i][0]) % 256
  97.           tone[1] = (tone[1] + SRSR::State_color[i][1]) % 256
  98.           tone[2] = (tone[2] + SRSR::State_color[i][2]) % 256
  99.           tone[3] = 192
  100.         end
  101.       end
  102.       @graphics[actor.id].color.set(tone[0],tone[1],tone[2],tone[3])
  103.     end
  104.   end
  105.   alias new_update update
  106.   def update
  107.     if @_x != self.x or @_y != self.y
  108.       for i in 0...$data_actors.size
  109.         if @graphics[i] != nil
  110.           dx = self.x - @_x
  111.           dy = self.y - @_y
  112.           @graphics[i].x += dx
  113.           @graphics[i].y += dy
  114.         end
  115.       end
  116.       @_x = self.x
  117.       @_y = self.y
  118.     end
  119.     for i in 0...$data_actors.size
  120.       if @graphics[i] != nil
  121.         @graphics[i].update
  122.         @graphics[i].opacity = 255 if @graphics[i].opacity != 255
  123.       end
  124.     end
  125.     new_update
  126.   end
  127.   alias new_dispose dispose
  128.   def dispose
  129.     new_dispose
  130.     for i in 0...$data_actors.size
  131.       @graphics[i].dispose if @graphics[i] != nil
  132.       @graphics[i] = nil
  133.     end
  134.   end
  135. end
  136. #==============================================================================
  137. # ■ Game_Actor
  138. #------------------------------------------------------------------------------
  139. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  140. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  141. #==============================================================================
  142. class Game_Actor
  143.   #--------------------------------------------------------------------------
  144.   # ● 色调的计算
  145.   #     character_hue :原始人物色调
  146.   #     delta_hue     :色调的偏移值
  147.   #--------------------------------------------------------------------------
  148.   def character_hue
  149.     @delta_hue = 0
  150.     @state_num = 0
  151.     if SRSR::Change_type == 2
  152.       for i in states
  153.       #如果角色中状态就加上偏移值
  154.       if SRSR::State_hue[i] != nil
  155.       @delta_hue += SRSR::State_hue[i][0]
  156.       @state_num += 1
  157.       end
  158.       end
  159.     #防止两种以上状态叠加出现相同色调的状况
  160.     if @state_num > 1
  161.     for i in states
  162.       if SRSR::State_hue[i] != nil
  163.       #当与某一个颜色重复或者与普通色调相同时
  164.       if @delta_hue % 360 == SRSR::State_hue[i][0] or @delta_hue %360 == 0
  165.         @delta_hue += 179 #加上一个质数尽量避免重复
  166.       end
  167.       end
  168.     end
  169.     end
  170.     #最后计算
  171.     @delta_hue %= 360
  172.     end
  173.     return @character_hue + @delta_hue
  174.   end
  175. end
  176. #==============================================================================
  177. # ■ Game_Player
  178. #------------------------------------------------------------------------------
  179. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  180. # 本类的实例请参考 $game_player。
  181. #=============================================================================
  182. class Game_Player
  183.   #--------------------------------------------------------------------------
  184.   # ● 色调的计算
  185.   #     character_hue :原始人物色调
  186.   #     delta_hue     :色调的偏移值
  187.   #--------------------------------------------------------------------------
  188.   def character_hue
  189.     @delta_hue = 0
  190.     @state_num = 0
  191.     if SRSR::Change_type == 2 and $game_party.actors[0] != nil
  192.       for i in $game_party.actors[0].states
  193.       #如果角色中状态就加上偏移值
  194.       if SRSR::State_hue[i] != nil
  195.       @delta_hue += SRSR::State_hue[i][0]
  196.       @state_num += 1
  197.       end
  198.        end
  199.     #防止两种以上状态叠加出现相同色调的状况
  200.     if @state_num > 1
  201.     for i in $game_party.actors[0].states
  202.       if SRSR::State_hue[i] != nil
  203.       #当与某一个颜色重复或者与普通色调相同时
  204.       if @delta_hue % 360 == SRSR::State_hue[i][0] or @delta_hue %360 == 0
  205.         @delta_hue += 179 #加上一个质数尽量避免重复
  206.       end
  207.       end
  208.     end
  209.     end
  210.     #最后计算
  211.     @delta_hue %= 360
  212.     end
  213.     return @character_hue + @delta_hue
  214.   end
  215.   def character_hue=(hue)
  216.     @character_hue = hue
  217.   end
  218. end
复制代码

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
19
发表于 2008-12-21 19:40:10 | 只看该作者
发布完毕
http://rpg.blue/web/htm/news1223.htm
vip += 2
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

18
 楼主| 发表于 2008-12-18 06:52:12 | 只看该作者
1.3版整合……终于有灰色的色调了。
但是,色调模式和颜色覆盖模式似乎只能菜单等能用。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
72
在线时间
36 小时
注册时间
2008-5-19
帖子
186
17
发表于 2008-12-17 19:58:35 | 只看该作者
有真正的灰色了?
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

16
 楼主| 发表于 2008-12-17 19:11:49 | 只看该作者
@graphic 也可以用tone么?
如果用tone的话那样灰色也可以实现吧……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

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

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

14
 楼主| 发表于 2008-12-16 10:06:58 | 只看该作者
色调的最后一项是灰度还是不透明度?
如果是灰度的话那就更好了的说。(这样就可以是灰界面了……)
其实那个哈希表我不怎么会用……囧……
嗯哪,然后再和我的那种方法综合起来……
怎么说呢……我的那个方法其实也等于修改那个hue字体的……
其他的部分也可以这样改么?
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

lov Peii 4ever

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-28
帖子
423
13
发表于 2008-12-16 07:58:20 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1697
在线时间
3038 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

12
 楼主| 发表于 2008-12-16 04:31:55 | 只看该作者
以下引用一路一风尘于2008-12-15 20:08:32的发言:

色调存在灰色。

色调的灰色如何引用呢?
明白了……应该是色相,好囧……把概念搞混了
我记得以前都是0-360就一个循环了……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-1-5
帖子
730
11
发表于 2008-12-16 04:08:32 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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