스크립트 물가에가면 캐릭터를 반사시켜주는 스크립트
2007.11.05 11:39
extra_vars1 | JmsPlDnl |
---|---|
extra_vars2 | RPGXP |
extra_vars3 | 맵관련 |
extra_vars4 | 1 |
extra_vars5 | 117259 |
extra_vars6 | 1196325364 |
extra_vars7 | 2 |
extra_vars8 | |
extra_vars9 | |
extra_vars10 | |
extra_vars11 | |
extra_vars12 |
스크립트 Main 에서 오른쪽 클릭 새로운 섹션을 만듭니다.
이름은 아무거나 정하시고.
아래 내용을 붙여넣습니다.
#==============================================================================
# ■ Sprite_Reflection
# Based on Sprite_Mirror, Modified By: JmsPlDnl, rewritten entirely by Rataime
#==============================================================================
CATERPILLAR_COMPATIBLE = true
class Game_Party
attr_reader :characters
end
class Sprite_Reflection < RPG::Sprite
attr_accessor :character
def initialize(viewport=nil, character=nil,self_angle = 180)
super(viewport)
@character = character
@self_angle=self_angle
self.opacity=0
@reflected=false
@former=false
@moving=false
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)==7
@reflected=true
@former=true
end
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 @character.direction== 6
sy = ( 4- 2) / 2 * @ch
end
if @character.direction== 4
sy = ( 6- 2) / 2 * @ch
end
if @character.direction != 4 and @character.direction != 6
sy = (@character.direction - 2) / 2 * @ch
end
end
self.x = @character.screen_x
self.y = @character.screen_y-5
@moving=!(@character.real_x%128==0 and @character.real_y%128==0)
@d=@character.direction
@rect=[sx, sy, @cw, @ch]
if !(@moving)
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)==7
@reflected=true
@former=true
else
@reflected=false
@former=false
end
else
case @d
when 2
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+2)==7
@reflected=true
if @former==false
@offset = (@character.screen_y%32)*@ch/32
@rect=[sx, sy, @cw, @offset]
self.y=@character.screen_y-5
end
else
@reflected=false
end
when 4
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)!=7
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx, sy, @offset, @ch]
self.x=@character.screen_x
else
@reflected=true
if @former==false
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx+@offset, sy, @cw-@offset, @ch]
self.x=@character.screen_x-@offset
end
end
when 6
if $game_map.terrain_tag(@character.real_x/128+1,@character.real_y/128+1)!=7
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx+@offset, sy, @cw-@offset, @ch]
self.x=@character.screen_x-@offset
else
@reflected=true
if @former==false
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx, sy, @offset, @ch]
self.x=@character.screen_x
end
end
when 8
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+2)==7
@reflected=true
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)!=7
@offset = (@character.screen_y%32)*@ch/32
@rect=[sx, sy, @cw, @offset]
self.y=@character.screen_y-5
end
else
@reflected=false
end
end
end
if @reflected
self.opacity=128
else
@rect=[sx, sy, @cw, @ch]
self.opacity=0
end
if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+2)!=7
if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+2)!=7
@rect[1]= @rect[1]+@ch/2
@rect[3]= @rect[3]/2
self.y = self.y - @ch/2
else
@reflected=false
end
end
self.src_rect.set(@rect[0],@rect[1],@rect[2],@rect[3])
@character.is_a?(Game_Player) ? self.z = 9 : self.z = 5
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
self.angle = @self_angle
end
end
#===================================================
# ▼ CLASS Sprite_Character edit
#===================================================
class Sprite_Character < RPG::Sprite
alias reflect_initialize initialize
def initialize(viewport, character = nil)
@character = character
@reflection = []
super(viewport)
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["r"])
@reflection.push(Sprite_Reflection.new(viewport,@character))
end
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["hero_r"])
@reflection.push(Sprite_Reflection.new(viewport,$game_player))
#===================================================
# ● Compatibility with fukuyama's caterpillar script-x
#===================================================
if CATERPILLAR_COMPATIBLE and $game_party.characters!=nil
for member in $game_party.characters
@reflection.push(Sprite_Reflection.new(viewport,member))
end
end
#===================================================
# ● End of the compatibility
#===================================================
end
reflect_initialize(viewport, @character)
end
alias reflect_update update
def update
reflect_update
if @reflection!=nil
for reflect in @reflection
reflect.update
end
end
end
end
이후 데이타베이스 > 타일 세트 > 지형 태그 > 원하는 오토타일의 번호를 7번으로 설정.
그리고 이벤트를 하나 만드신후..
시작조건 > 병렬처리 > 삽입 > 주석 > hero_r > 끝
댓글 11
-
마기
2007.12.02 07:20
감사합니다 유용히 사용할게요^^|+rp2+|3812|+rp3+|pds_resauce2 -
강호사신
2007.12.31 04:34
게임의 완성도를 높이는 스크립트군요.|+rp2+|3891|+rp3+|pds_resauce2 -
LirsEmery
2008.02.14 08:19
이거 ABS랑 충돌하는듯 아닌가 ㄷㄷ;;
어째뜬 좋은 스크립트 감사합니다~|+rp2+|4062|+rp3+|pds_resauce2 -
맑탉앉앍꿇헒
2008.04.10 02:03
음.. 나도 c언어 다 배우고 나면 그때부터 스크립트 배워봐야지|+rp2+|4139|+rp3+|pds_resauce2 -
창조군주
2008.09.11 10:43
궁금증이 풀렸네요^^ 감사합니다.|+rp2+|4288|+rp3+|pds_resauce2 -
앗시마
2008.11.28 10:00
잘쓰겠습니다^^|+rp2+|4352|+rp3+|pds_resauce2 -
길호빈
2009.04.07 09:57
그래도 따라 했는데 왜 전 안돼죠.. ;;|+rp2+|4449|+rp3+|pds_resauce2 -
샤이닝드래곤
2010.02.11 06:33
ㄳ|+rp2+|4692|+rp3+|pds_resauce2 -
의미없음GG
2010.02.25 06:22
VX는안되나요 ... ?|+rp2+|4700|+rp3+|pds_resauce2 -
의미없음GG
2010.02.25 06:23
죄송합니다 ..... RPG XP전용이란걸모르고 ....|+rp2+|4701|+rp3+|pds_resauce2 -
brainplay
2012.04.03 01:21
역시 초보에게는 이미지없으면 따라해도 중간에 뭔가가 틀려서 안되나 봅니다;;|+rp2+|4802|+rp3+|pds_resauce2
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | 물가에가면 캐릭터를 반사시켜주는 스크립트 [11] | 창조도시 | 2007.11.05 | 3649 |
49 | 대화창에 이름&얼굴 띄우기 새로운방식. [2] | 창조도시 | 2007.11.05 | 2377 |
48 | 대화창에 이름&얼굴 띄우기 새로운방식. | 창조도시 | 2007.11.05 | 1536 |
47 | 새로운 게임 시작/로드 시 미묘한 연출 추가. | 창조도시 | 2007.11.05 | 1332 |
46 | vx 한글이름입력 [1] | 가가상 | 2008.03.03 | 1111 |
45 | 대화창에 얼굴 띄우기& 대화창 명령어 모음. [2] | 창조도시 | 2007.11.05 | 1110 |
44 | 맵 이름을 화면 상단에 띄우기. [1] | 창조도시 | 2007.11.05 | 1107 |
43 | 최초 시작화면에 제작자 정보를 띄워보자. [7] | 창조도시 | 2007.11.05 | 1060 |
42 | 창고 시스템 [3] | 창조도시 | 2007.11.05 | 1040 |
41 | 아이템창을 아이템 분류별로 나누어 지게 개조. [5] | 창조도시 | 2007.11.05 | 1026 |
40 | 액터선택지이벤트제작 간편화 스크립트 [1] | Evangelista | 2009.01.14 | 1024 |
39 | 이벤트커맨드 스크립트 관련 설명 [3] | Evangelista | 2009.01.27 | 1000 |
38 | 에너미 아이템 변화 스크립트 [1] | Evangelista | 2009.05.27 | 955 |
37 | 이벤트커맨드 스크립트 사용법 모음 [2] | Evangelista | 2009.01.27 | 937 |
36 | 이벤트커맨드 스크립트 관련 설명 | Evangelista | 2009.01.27 | 893 |
35 | 한글이름입력기 v1.76 | 창조도시 | 2007.11.05 | 873 |
34 | 창고 시스템 | 창조도시 | 2007.11.05 | 859 |
33 | 그림자문자 사용하기.. 바탕색이 무슨색이건 상관없이 글자가 잘보인다!!! | 창조도시 | 2007.11.05 | 812 |
32 | 대각선 방향 이동추가로 8방향 이동 만들기. [1] | 창조도시 | 2007.11.05 | 787 |
31 | 기차 파티 스크립트 [2] | 창조도시 | 2007.11.05 | 781 |