查看: 1784|回复: 3

[已经过期] 求XP版的影子系统

[复制链接]
梦石
0
星屑
50
在线时间
420 小时
注册时间
2011-3-13
回帖
185
发表于 2013-12-4 20:41:42 | 显示全部楼层 |阅读模式

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

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

×
1.我的行走图是4方向的
2.要求有一个太阳,影子会随着太阳位置发生合理的扭曲
3.貌似有个是vx版的,我想要个xp版的
感激不尽
梦石
0
星屑
3905
在线时间
1972 小时
注册时间
2013-1-3
回帖
9146
发表于 2013-12-4 21:25:58 | 显示全部楼层
请搜索"太阳精灵",精灵使者补充过一个XP版
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复

使用道具 举报

故九江太守

梦石
0
星屑
314
在线时间
2158 小时
注册时间
2012-12-5
回帖
4323
发表于 2013-12-4 22:09:05 | 显示全部楼层
当一个不透明的物体靠近光源时阴影创建,
因此,什么是光源(例如:火)
把注释(事件页1)的注释写'S'(不带'号)

插入此段脚本到Main前面

[pre lang="ruby" line="1"]#A shadow is created when an opaque object is near a light source,
#so in the event that is the light source (example:fire)
#put a comment (on page 1) and simlpy write 's' (without the apostraphys)

#Insert a new class called Character_Shadow above MAIN  

#==============================================================================
# 仭 Sprite_Shadow (Sprite_Ombre )
# Based on Genzai Kawakami's shadows, dynamisme&features by Rataime, extra features 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
   @deltax=@source.x-self.x
   @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(0, 0, 0)
   @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

#===================================================
# 仴 CLASS Sprite_Character edit
#===================================================

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.is_a?(Game_Event) and $game_map.events.list!=nil and $game_map.events.list[0].code == 108 and $game_map.events.list[0].parameters == ["o"])
       @ombrelist[i+1] = Sprite_Shadow.new(viewport, $game_map.events,self,@anglemin,@anglemax,@distancemax)
     end
    end
    @ombrelist[1] = Sprite_Shadow.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax)
#===================================================
# 仠 Compatibility with fukuyama's caterpillar script
#===================================================
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 of the compatibility
#===================================================
   end
   shadow_initialize(viewport, @character)
end

alias shadow_update update

def update
   shadow_update
   if @ombrelist!=[]
     for i in 1..@ombrelist.size
       if @ombrelist!=nil
         @ombrelist.update
       end
     end
   end
end  

end

#===================================================
# 仴 CLASS Scene_Save edit
#===================================================
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

#===================================================
# 仴 CLASS Game_Map edit
#===================================================
class Game_Map
attr_accessor :shadows
end[/pre]

评分

参与人数 1星屑 +60 收起 理由
myownroc + 60 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
420 小时
注册时间
2011-3-13
回帖
185
 楼主| 发表于 2013-12-5 00:21:33 | 显示全部楼层
你最珍贵 发表于 2013-12-4 22:09
#A shadow is created when an opaque object is near a light source,
#so in the event that is the li ...

28行发生错误

点评

[url=home.php?mod=space&uid=171370]@source[/url] = source 改成@source = source 再出现问题继续寻找~~!!!  发表于 2013-12-5 00:39
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部