じ☆ve冰风 发表于 2024-4-19 16:04:25

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

状态决定行走图色相 v1.3
更新日志:
1.1版整合了小lim的脚本,实现了储存进度和正常游戏里玩家的状态颜色显示。
1.2版更新了色调偏移算法,避免了2个以上的状态偏移相同色相的状况。
1.3版整合了小lim的菜单脚本,允许更改菜单的色调或者颜色叠加(普通行走图无效)
应某提问区的要求发布。
如果角色中了某种特殊状态,则会自动改变此角色的色调,支持多种状态偏移。
经测试,与人物跟随脚本完美兼容,没有任何冲突。各自人物都会有自己的状态偏移。
p.s.已经有了色相的行走图则继续往下偏移。
使用方法:
定义常量
# 设定颜色更换『状态编号 => 』
State_color = {
1 => ,
2 => ,
3 =>
               }
# 设定色相更换『状态编号 => 』
State_hue = {
1 => ,
2 => ,
3 => ,
}
# 设定改变颜色方式,0(色调) 或者 1(覆盖)或者 2(色相)
Change_type = 0
效果图:
http://rpg.blue/upload_program/d/精灵使者_角色状态对应色调_109446578.jpg
范例工程:http://rpg.blue/upload_program/d ... ��调_109983089.rar
脚本:#------------------------------------------------------------------------------#状态决定行走图色相色调 v1.3# #如果角色中了某种特殊状态,则会自动改变此角色的色相或者色调。##p.s.已经有了色调的行走图则继续往下偏移。##编写 by 精灵使者,改进 by enchao_lim#增添了读取进度和普通状态下的角色偏移#改进了异常色调如果相同的话的判断算法#可以使用灰色的色调和覆盖颜色,但是在菜单以外其他地方无效。#------------------------------------------------------------------------------#定义恒量module SRSR# 设定颜色更换『状态编号 => 』State_color = {1 => ,2 => ,3 =>                }# 设定色相更换『状态编号 => 』State_hue = {1 => ,2 => ,3 => ,}# 设定改变颜色方式,0(色调) 或者 1(覆盖)或者 2(色相)Change_type = 0endclass Window_Basealias new_initialize initializedef initialize(_x,_y,_w,_h)    new_initialize(_x,_y,_w,_h)    @graphics = {}    for i in 0...$data_actors.size      @graphics = nil    end    @_x = self.x    @_y = self.yenddef draw_actor_graphic(actor,x,y)    @graphics.dispose if @graphics != nil    @graphics == nil    @delta_hue = 0    @state_num = 0    if SRSR::Change_type == 2      for i in actor.states      #如果角色中状态就加上偏移值      if SRSR::State_hue != nil      @delta_hue += SRSR::State_hue      @state_num += 1      end       end    #防止两种以上状态叠加出现相同色调的状况    if @state_num > 1    for i in actor.states      if SRSR::State_hue != nil      #当与某一个颜色重复或者与普通色调相同时      if @delta_hue % 360 == SRSR::State_hue or @delta_hue %360 == 0      @delta_hue += 179 #加上一个质数尽量避免重复      end      end    end    end    #最后计算    @delta_hue %= 360    end    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue +   @delta_hue)   cw = bitmap.width/4    ch = bitmap.height/4    @graphics = Sprite.new    @graphics.bitmap = bitmap    @graphics.src_rect.set(0,0,cw,ch)    x = x +16 - cw / 2    y = y +16 - ch    @graphics.x = x    @graphics.y = y    @graphics.z = self.z + 1    @graphics.opacity = 0    tone =     case SRSR::Change_type    when 0      for i in actor.states      if SRSR::State_color != nil          tone = (tone + SRSR::State_color) % 256          tone = (tone + SRSR::State_color) % 256          tone = (tone + SRSR::State_color) % 256          tone = 255      end      end      @graphics.tone.set(tone,tone,tone,tone)    when 1      for i in actor.states      if SRSR::State_color != nil          tone = (tone + SRSR::State_color) % 256          tone = (tone + SRSR::State_color) % 256          tone = (tone + SRSR::State_color) % 256          tone = 192      end      end      @graphics.color.set(tone,tone,tone,tone)    endendalias new_update updatedef update    if @_x != self.x or @_y != self.y      for i in 0...$data_actors.size      if @graphics != nil          dx = self.x - @_x          dy = self.y - @_y          @graphics.x += dx          @graphics.y += dy      end      end      @_x = self.x      @_y = self.y    end    for i in 0...$data_actors.size      if @graphics != nil      @graphics.update      @graphics.opacity = 255 if @graphics.opacity != 255      end    end    new_updateendalias new_dispose disposedef dispose    new_dispose    for i in 0...$data_actors.size      @graphics.dispose if @graphics != nil      @graphics = nil    endendend#==============================================================================# ■ Game_Actor#------------------------------------------------------------------------------#  处理角色的类。本类在 Game_Actors 类 ($game_actors)# 的内部使用、Game_Party 类请参考 ($game_party) 。#==============================================================================class Game_Actor#--------------------------------------------------------------------------# ● 色调的计算#   character_hue :原始人物色调#   delta_hue   :色调的偏移值#--------------------------------------------------------------------------def character_hue    @delta_hue = 0    @state_num = 0    if SRSR::Change_type == 2      for i in states      #如果角色中状态就加上偏移值      if SRSR::State_hue != nil      @delta_hue += SRSR::State_hue      @state_num += 1      end      end    #防止两种以上状态叠加出现相同色调的状况    if @state_num > 1    for i in states      if SRSR::State_hue != nil      #当与某一个颜色重复或者与普通色调相同时      if @delta_hue % 360 == SRSR::State_hue or @delta_hue %360 == 0      @delta_hue += 179 #加上一个质数尽量避免重复      end      end    end    end    #最后计算    @delta_hue %= 360    end    return @character_hue + @delta_hueendend#==============================================================================# ■ Game_Player#------------------------------------------------------------------------------#  处理主角的类。事件启动的判定、以及地图的滚动等功能。# 本类的实例请参考 $game_player。#=============================================================================class Game_Player#--------------------------------------------------------------------------# ● 色调的计算#   character_hue :原始人物色调#   delta_hue   :色调的偏移值#--------------------------------------------------------------------------def character_hue    @delta_hue = 0    @state_num = 0    if SRSR::Change_type == 2 and $game_party.actors != nil      for i in $game_party.actors.states      #如果角色中状态就加上偏移值      if SRSR::State_hue != nil      @delta_hue += SRSR::State_hue      @state_num += 1      end       end    #防止两种以上状态叠加出现相同色调的状况    if @state_num > 1    for i in $game_party.actors.states      if SRSR::State_hue != nil      #当与某一个颜色重复或者与普通色调相同时      if @delta_hue % 360 == SRSR::State_hue or @delta_hue %360 == 0      @delta_hue += 179 #加上一个质数尽量避免重复      end      end    end    end    #最后计算    @delta_hue %= 360    end    return @character_hue + @delta_hueenddef character_hue=(hue)    @character_hue = hueendend复制代码
             本帖来自P1论坛作者无双修罗一闪,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=112344若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 【不是创意的创意】角色的状态决定行走图色相v1.3