| 赞 | 0  | 
 
| VIP | 157 | 
 
| 好人卡 | 6 | 
 
| 积分 | 1 | 
 
| 经验 | 113829 | 
 
| 最后登录 | 2014-1-16 | 
 
| 在线时间 | 26 小时 | 
 
 
 
 
 
Lv1.梦旅人 B 
	- 梦石
 - 0 
 
        - 星屑
 - 50 
 
        - 在线时间
 - 26 小时
 
        - 注册时间
 - 2007-8-26
 
        - 帖子
 - 3693
 
 
 
 | 
	
- #使用方法:不透明的物体在光源旁边会产生一个阴影。
 
 - #所以,在光源的事件里面(例如火),请在第一页加上一个注释“s”(请不要带引号)
 
 - #然后将此脚本命名为“人物阴影”插入到main上方即可。
 
  
- #==============================================================================
 
 - # ■ 阴影精灵 (渐变精灵 )
 
 - # 以 Genzai Kawakami的阴影脚本为基础, 
 
 - #  Rataime为其重写和更新, 
 
 - #  Boushy 为其添加附属功能
 
 - #  精灵使者汉化
 
 - #==============================================================================
 
  
- CATERPILLAR_COMPATIBLE = true
 
  
- class Game_Party
 
 -  attr_reader :characters
 
 - end
 
  
- class Sprite_Shadow < RPG::Sprite
 
  
-  attr_accessor :character
 
  
-  def initialize(viewport, character = nil,source = nil,anglemin=0,anglemax=0,distancemax=0)
 
 -    super(viewport)
 
 -    @anglemin=anglemin.to_f
 
 -    @anglemax=anglemax.to_f
 
 -    @distancemax=distancemax.to_f
 
 -    @character = character
 
 -    @source = source
 
 -    update
 
 -  end
 
  
-  def update
 
 -    super
 
 -    
 
 -    if @tile_id != @character.tile_id or
 
 -       @character_name != @character.character_name or
 
 -       @character_hue != @character.character_hue
 
 -      @tile_id = @character.tile_id
 
 -      @character_name = @character.character_name
 
 -      @character_hue = @character.character_hue
 
 -      if @tile_id >= 384
 
 -        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
 
 -          @tile_id, @character.character_hue)
 
 -        self.src_rect.set(0, 0, 32, 32)
 
 -        self.ox = 16
 
 -        self.oy = 32
 
 -      else
 
 -        self.bitmap = RPG::Cache.character(@character.character_name,
 
 -          @character.character_hue)
 
 -        @cw = bitmap.width / 4
 
 -        @ch = bitmap.height / 4
 
 -        self.ox = @cw / 2
 
 -        self.oy = @ch
 
 -      end
 
 -    end
 
 -    self.visible = (not @character.transparent)
 
 -    if @tile_id == 0
 
 -      sx = @character.pattern * @cw
 
 -      sy = (@character.direction - 2) / 2 * @ch
 
 -      if self.angle>90 or angle<-90
 
 -        if @character.direction== 6
 
 -               sy = ( 4- 2) / 2 * @ch
 
 -        end
 
 -        if @character.direction== 4
 
 -               sy = ( 6- 2) / 2 * @ch
 
 -        end
 
 -        if @character.direction== 2
 
 -               sy = ( 8- 2) / 2 * @ch
 
 -        end
 
 -        if @character.direction== 8
 
 -               sy = ( 2- 2) / 2 * @ch
 
 -        end
 
 -      end
 
 -      self.src_rect.set(sx, sy, @cw, @ch)
 
 -    end
 
 -    self.x = @character.screen_x
 
 -    self.y = @character.screen_y-5
 
 -    self.z = @character.screen_z(@ch)-1
 
 -    self.opacity = @character.opacity
 
 -    self.blend_type = @character.blend_type
 
 -    self.bush_depth = @character.bush_depth
 
 -    if @character.animation_id != 0
 
 -      animation = $data_animations[@character.animation_id]
 
 -      animation(animation, true)
 
 -      @character.animation_id = 0
 
 -    end
 
 -    @[email protected]
 
 -    @deltay= @source.y-self.y
 
 -    self.angle = 57.3*Math.atan2(@deltax, @deltay )
 
 -    @angle_trigo=self.angle+90
 
 -    if @angle_trigo<0
 
 -      @angle_trigo=360+@angle_trigo
 
 -    end
 
 -    self.color = Color.new(50,50,50)#
 
 -    @distance = ((@deltax ** 2) + (@deltay ** 2))
 
 -     if$game_map.shadows==-1
 
 -       self.opacity = 0 
 
 -     else
 
 -       self.opacity = 1200000/(@distance+6000)    
 
 -     end
 
 -    @distance = @distance ** 0.5
 
 -    if @distancemax !=0 and @distance>=@distancemax
 
 -      self.opacity=0
 
 -    end
 
 -    if @anglemin !=0 or @anglemax !=0
 
 -       if (@angle_trigo<@anglemin or @angle_trigo>@anglemax) and @anglemin<@anglemax
 
 -         self.opacity=0
 
 -       end
 
 -       if (@angle_trigo<@anglemin and @angle_trigo>@anglemax) and @anglemin>@anglemax
 
 -         self.opacity=0
 
 -       end     
 
 -    end
 
 -  end
 
 - end
 
  
- #===================================================
 
 - # ■ 重定义 Sprite_Character
 
 - #===================================================
 
  
- class Sprite_Character < RPG::Sprite
 
 -  alias shadow_initialize initialize
 
 -  
 
 -  def initialize(viewport, character = nil)
 
 -    @character = character
 
 -    super(viewport)
 
 -    @ombrelist=[]
 
 -    if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["s"])
 
 -      if (character.list[1]!=nil and character.list[1].code == 108)
 
 -        @anglemin=character.list[1].parameters[0]
 
 -      end
 
 -      if (character.list[2]!=nil and character.list[2].code == 108)
 
 -        @anglemax=character.list[2].parameters[0]
 
 -      end
 
 -      if (character.list[3]!=nil and character.list[3].code == 108)
 
 -        @distancemax=character.list[3].parameters[0]
 
 -      end  
 
 -     for i in $game_map.events.keys.sort
 
 -      if ($game_map.events[i].is_a?(Game_Event) and $game_map.events[i].list!=nil and $game_map.events[i].list[0].code == 108 and $game_map.events[i].list[0].parameters == ["o"])
 
 -        @ombrelist[i+1] = Sprite_Shadow.new(viewport, $game_map.events[i],self,@anglemin,@anglemax,@distancemax)
 
 -      end
 
 -     end
 
 -     @ombrelist[1] = Sprite_Shadow.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax)
 
 - #===================================================
 
 - # ● 原装人物跟随兼容脚本
 
 - #===================================================
 
 - if CATERPILLAR_COMPATIBLE and $game_party.characters!=nil
 
  
-  for member in $game_party.characters
 
 -    @ombrelist.push(Sprite_Shadow.new(viewport, member,self,@anglemin,@anglemax,@distancemax))
 
 -  end
 
  
- end
 
 - #===================================================
 
 - # ● 兼容脚本结束
 
 - #===================================================
 
 -    end
 
 -    shadow_initialize(viewport, @character)
 
 -  end
 
 -  
 
 -  alias shadow_update update
 
 -  
 
 -  def update
 
 -    shadow_update
 
 -    if @ombrelist!=[]
 
 -      for i in [email protected]
 
 -        if @ombrelist[i]!=nil
 
 -          @ombrelist[i].update
 
 -        end
 
 -      end
 
 -    end
 
 -  end  
 
 -  
 
 - end
 
  
- #===================================================
 
 - # ■ 新定义类Scene_Save
 
 - #===================================================
 
 - class Scene_Save < Scene_File
 
 -  
 
 -  alias shadows_write_save_data write_save_data
 
 -  
 
 -  def write_save_data(file)
 
 -    $game_map.shadows = nil
 
 -    shadows_write_save_data(file)
 
 -  end
 
 - end
 
  
- #===================================================
 
 - # ■ 新定义类 Game_Map
 
 - #===================================================
 
 - class Game_Map
 
 -  attr_accessor :shadows
 
 - end
 
  
  复制代码 |   
 
 
 
 |