а можно создать картинку с привязкой по координатам,да? чтобы этот "дом" никуда не "улетел"
а можно создать картинку с привязкой по координатам,да? чтобы этот "дом" никуда не "улетел"
на vx ace да, есть скрипт такой, вот он:
Спойлер скрипт:Код:#============================================================================== # +++ MOG - Picture Effects (v1.0) +++ #============================================================================== # By Moghunter # https://atelierrgss.wordpress.com/ #============================================================================== # O script adicina novos efeitos na função mostrar imagem, possibilitando # criar animações complexas de maneira simples e rápida. # O script também adiciona a função definir a posição da imagem baseado # na posição do character ou na posição real XY da tela. #============================================================================== # EFEITOS #============================================================================== # 0 - Tremer Tipo A # 1 - Tremer Tipo B # 2 - Efeito de Respirar # 3 - Efeito de Auto Zoom (Loop) # 4 - Efeito de Fade (Loop) # 5 - Efeito de Rolar em duas direções. # 6 - Efeito de Wave. # 7 - Efeito de Animação por frames, estilo GIF. # # É possível utilizar todos os efeitos ao mesmo tempo. # #============================================================================== # UTILIZAÇÃO #============================================================================== # Use o comando abaixo através do comando evento. # # picture_effect(PICTURE_ID ,EFFECT_TYPE ,POWER , SPEED) # # PICTURE_ID = ID da imagem. # EFFECT TYPE = Tipo de efetio da imagem. (0 a 7) # POWER = Poder do efeito. # SPEED = Velocidade do efeito. # # Exemplo # # picture_effect(1,5,10,50) # #============================================================================== # Efeito de animação por frames. (Efeito tipo 7) #============================================================================== # Para ativar o efeito de animação por frames é necessário ter e nomear os # arquivos da seguinte forma. # # Picture_Name.png (A imagem que deve ser escolhida no comando do evento.) # Picture_Name0.png # Picture_Name1.png # Picture_Name2.png # Picture_Name3.png # Picture_Name4.png # ... # #============================================================================== # Posições Especiais para as imagens #============================================================================== # Use o comando abaixo para definir a posiçao da imagem. # # picture_position(PICTURE ID, TARGET ID) # # PICTURE ID = ID da imagem # TARGET ID = ID do alvo # # 0 = Posição normal. # 1..999 = Posição do evento (ID). # -1 = Posição do player. # -2 = Posição fixa da imagem. # #============================================================================== # Cancelar o Efeito #============================================================================== # Você pode usar o comando apagar imagem do evento, ou usar o comando abaixo. # # picture_effects_clear(PICTURE_ID) # #============================================================================== module MOG_PICURE_EFFECTS # Definição da posição Z das pictures. # É possível usar o comando "set_picture_z(value)" para mudar o valor Z # no meio do jogo DEFAULT_SCREEN_Z = 100 end $imported = {} if $imported.nil? $imported[:mog_picture_effects] = true #============================================================================== # ■ Game Picture #============================================================================== class Game_Picture attr_accessor :effect_ex attr_accessor :anime_frames attr_accessor :position #-------------------------------------------------------------------------- # ● Init Basic #-------------------------------------------------------------------------- alias mog_picture_ex_init_basic init_basic def init_basic init_effect_ex mog_picture_ex_init_basic end #-------------------------------------------------------------------------- # ● Erase #-------------------------------------------------------------------------- alias mog_picture_ex_erase erase def erase init_effect_ex mog_picture_ex_erase end #-------------------------------------------------------------------------- # ● Init Effect EX #-------------------------------------------------------------------------- def init_effect_ex @effect_ex = [] ; @anime_frames = [] ; @position = [0,nil,0,0] end end #============================================================================== # ■ Game System #============================================================================== class Game_System attr_accessor :picture_screen_z #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_picture_ex_initialize initialize def initialize @picture_screen_z = MOG_PICURE_EFFECTS::DEFAULT_SCREEN_Z mog_picture_ex_initialize end end #============================================================================== # ■ Game Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● Set Pictures #-------------------------------------------------------------------------- def set_pictures return $game_troop.screen.pictures if SceneManager.scene_is?(Scene_Battle) return $game_map.screen.pictures if SceneManager.scene_is?(Scene_Map) end #-------------------------------------------------------------------------- # ● Picture Effect #-------------------------------------------------------------------------- def picture_effect(id,type, power = nil,speed = nil,misc = nil) pictures = set_pictures return if pictures.nil? power = set_standard_power(type) if power == nil power = 1 if type == 4 and power < 1 speed = set_standard_speed(type) if speed == nil pictures[id].effect_ex[0] = nil if type == 1 pictures[id].effect_ex[1] = nil if type == 0 pictures[id].effect_ex[type] = [power,speed,0] pictures[id].effect_ex[type] = [0,0,0,power * 0.00005,speed, 0,0] if [2,3].include?(type) pictures[id].effect_ex[type] = [255,0,0,255 / power, power,speed,0] if type == 4 pictures[id].effect_ex[type] = [0,0,power,speed,0] if type == 5 pictures[id].effect_ex[type] = [true,power * 10,speed * 100] if type == 6 pictures[id].anime_frames = [true,[],power,0,0,speed,0] if type == 7 end #-------------------------------------------------------------------------- # ● Set Standard Power #-------------------------------------------------------------------------- def set_standard_power(type) return 6 if type == 2 return 30 if type == 3 return 120 if type == 4 return 10 end #-------------------------------------------------------------------------- # ● Set Standard Speed #-------------------------------------------------------------------------- def set_standard_speed(type) return 3 if [0,1].include?(type) return 0 if [2,3,4].include?(type) return 2 if type == 5 return 0 if type == 7 return 10 end #-------------------------------------------------------------------------- # ● Picture Position #-------------------------------------------------------------------------- def picture_position(id,target_id) pictures = set_pictures return if pictures.nil? pictures[id].position = [0,nil,0,0] if [-2,0].include?(pictures[id].position[0]) pictures[id].effect_ex.clear target = 0 ; target = $game_player if target_id == -1 if target_id > 0 $game_map.events.values.each do |e| target = e if e.id == target_id end end pictures[id].position[0] = target_id pictures[id].position[1] = target end #-------------------------------------------------------------------------- # ● Set Picture Z #-------------------------------------------------------------------------- def set_picture_z(value) $game_system.picture_screen_z = value end #-------------------------------------------------------------------------- # ● Picture Effects Clear #-------------------------------------------------------------------------- def picture_effects_clear(id) pictures = set_pictures return if pictures.nil? pictures[id].effect_ex.clear ; pictures[id].anime_frames.clear pictures[id].position = [0,nil,0,0] end end #============================================================================== # ■ Game Map #============================================================================== class Game_Map #-------------------------------------------------------------------------- # ● Setup #-------------------------------------------------------------------------- alias mog_picture_ex_setup setup def setup(map_id) mog_picture_ex_setup(map_id) clear_picture_position rescue nil end #-------------------------------------------------------------------------- # ● Clear Picture Position #-------------------------------------------------------------------------- def clear_picture_position pictures = $game_troop.screen.pictures if SceneManager.scene_is?(Scene_Battle) pictures = $game_map.screen.pictures if SceneManager.scene_is?(Scene_Map) return if pictures == nil pictures.each {|p| p.position = [-1000,nil,0,0] if p.position[0] > 0 or p.position[1] == nil} end end #============================================================================== # ■ Sprite Picture #============================================================================== class Sprite_Picture < Sprite #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- alias mog_picture_ex_dispose dispose def dispose mog_picture_ex_dispose @picture.effect_ex[6][0] = true if @picture.effect_ex[6] @picture.anime_frames[0] = true if @picture.effect_ex[7] dispose_pic_frames if !@picture.effect_ex[7] end #-------------------------------------------------------------------------- # ● Dispose Pic Frames #-------------------------------------------------------------------------- def dispose_pic_frames return if @pic_frames.nil? @pic_frames.each {|picture| picture.dispose } ; @pic_frames = nil end #-------------------------------------------------------------------------- # ● Update Bitmap #-------------------------------------------------------------------------- alias mog_picture_ex_update_bitmap update_bitmap def update_bitmap refresh_effect_ex if @old_name_ex != @picture.name if !@picture.anime_frames.empty? and self.bitmap update_picture_animation ; return end mog_picture_ex_update_bitmap create_picture_animation if can_create_frame_picture? set_wave_effect if can_set_wave_effect? end #-------------------------------------------------------------------------- # ● Refresh effect EX #-------------------------------------------------------------------------- def refresh_effect_ex (self.wave_amp = 0 ; self.wave_length = 1 ; self.wave_speed = 0) if !@picture.effect_ex[6] @old_name_ex = @picture.name create_picture_animation if @picture.effect_ex[7] set_wave_effect if can_set_wave_effect? end #-------------------------------------------------------------------------- # ● Can Create Frame Picture #-------------------------------------------------------------------------- def can_create_frame_picture? return false if !@picture.anime_frames[0] return false if !self.bitmap return true end #-------------------------------------------------------------------------- # ● Update Picture Animation #-------------------------------------------------------------------------- def update_picture_animation return if @pic_frames == nil if @picture.anime_frames[6] > 0 ; @picture.anime_frames[6] -= 1 ; return end @picture.anime_frames[4] += 1 return if @picture.anime_frames[4] < @picture.anime_frames[2] self.bitmap = @pic_frames[@picture.anime_frames[3]] @picture.anime_frames[4] = 0 ; @picture.anime_frames[3] += 1 if @picture.anime_frames[3] >= @pic_frames.size @picture.anime_frames[3] = 0 ; @picture.anime_frames[6] = @picture.anime_frames[5] end end #-------------------------------------------------------------------------- # ● Create Picture Animation #-------------------------------------------------------------------------- def create_picture_animation dispose_pic_frames ; @pic_frames = [] ; @picture.anime_frames[0] = false for index in 0...999 @pic_frames.push(Cache.picture(@picture.name + index.to_s)) rescue nil break if @pic_frames[index] == nil end if @pic_frames.size <= 1 dispose_pic_frames ; @pic_frames = nil ; @picture.anime_frames.clear @picture.effect_ex[7] = nil ; return end self.bitmap = @pic_frames[@picture.anime_frames[3]] update_picture_animation end #-------------------------------------------------------------------------- # ● Update Position #-------------------------------------------------------------------------- def update_position self.z = @picture.number + $game_system.picture_screen_z if @picture.effect_ex[0] ; update_shake_effect(0) ; return ; end if @picture.effect_ex[1] ; update_shake_effect(1) ; return ; end self.x = pos_x ; self.y = pos_y ; set_oxy_correction end #-------------------------------------------------------------------------- # ● Pos X #-------------------------------------------------------------------------- def pos_x return @picture.x end #-------------------------------------------------------------------------- # ● Pos Y #-------------------------------------------------------------------------- def pos_y return @picture.y end #-------------------------------------------------------------------------- # ● Set Oxy Correction #-------------------------------------------------------------------------- def set_oxy_correction return if @picture.position[0] == -2 self.x += self.ox if @picture.effect_ex[3] or @picture.effect_ex[5] self.y += self.oy if @picture.effect_ex[2] or @picture.effect_ex[3] or @picture.effect_ex[5] end #-------------------------------------------------------------------------- # ● Update Position #-------------------------------------------------------------------------- def update_shake_effect(type) @picture.effect_ex[type][2] += 1 return if @picture.effect_ex[type][2] < @picture.effect_ex[type][1] @picture.effect_ex[type][2] = 0 self.x = pos_x + shake_effect(type) self.y = @picture.effect_ex[1] ? pos_y + shake_effect(type) : pos_y set_oxy_correction end #-------------------------------------------------------------------------- # ● Shake Effect #-------------------------------------------------------------------------- def shake_effect(type) -(@picture.effect_ex[type][0] / 2) + rand(@picture.effect_ex[type][0]) end #-------------------------------------------------------------------------- # ● Update Other #-------------------------------------------------------------------------- def update_other if @picture.effect_ex[4] ; update_opacity_ex else ; self.opacity = @picture.opacity end self.blend_type = @picture.blend_type if @picture.effect_ex[5] ; update_angle_ex else ; self.angle = @picture.angle end self.tone.set(@picture.tone) end #-------------------------------------------------------------------------- # ● Update Angle EX #-------------------------------------------------------------------------- def update_angle_ex @picture.effect_ex[5][4] += 1 return if @picture.effect_ex[5][4] < @picture.effect_ex[5][3] @picture.effect_ex[5][4] = 0 ; @picture.effect_ex[5][1] += 1 case @picture.effect_ex[5][1] when 0..@picture.effect_ex[5][2] @picture.effect_ex[5][0] += 1 when @picture.effect_ex[5][2]..(@picture.effect_ex[5][2] * 3) @picture.effect_ex[5][0] -= 1 when (@picture.effect_ex[5][2] * 3)..(-1 + @picture.effect_ex[5][2] * 4) @picture.effect_ex[5][0] += 1 else ; @picture.effect_ex[5][0] = 0 ; @picture.effect_ex[5][1] = 0 end self.angle = @picture.angle + @picture.effect_ex[5][0] end #-------------------------------------------------------------------------- # ● Update Opacity EX #-------------------------------------------------------------------------- def update_opacity_ex @picture.effect_ex[4][6] += 1 return if @picture.effect_ex[4][6] < @picture.effect_ex[4][5] @picture.effect_ex[4][6] = 0 ; @picture.effect_ex[4][2] += 1 case @picture.effect_ex[4][2] when 0..@picture.effect_ex[4][4] @picture.effect_ex[4][0] -= @picture.effect_ex[4][3] when @picture.effect_ex[4][4]..(-1 + @picture.effect_ex[4][4] * 2) @picture.effect_ex[4][0] += @picture.effect_ex[4][3] else @picture.effect_ex[4][0] = 255 ; @picture.effect_ex[4][2] = 0 end self.opacity = @picture.effect_ex[4][0] end #-------------------------------------------------------------------------- # ● Update Origin #-------------------------------------------------------------------------- def update_origin return if !self.bitmap if force_center_oxy? self.ox = @picture.effect_ex[2] ? n_ox : (bitmap.width / 2) + n_ox self.oy = (bitmap.height / 2) + n_oy if @picture.position[0] > 0 or @picture.position[0] == -1 execute_move(0,@picture.position[2],-@picture.position[1].screen_x) rescue nil execute_move(1,@picture.position[3],-@picture.position[1].screen_y) rescue nil end return end if @picture.effect_ex[2] ; self.oy = (bitmap.height + n_oy) ; return ; end if @picture.origin == 0 self.ox = n_ox ; self.oy = n_oy else self.ox = (bitmap.width / 2) + n_ox self.oy = (bitmap.height / 2) + n_oy end end #-------------------------------------------------------------------------- # ● Force Center Oxy #-------------------------------------------------------------------------- def force_center_oxy? return false if @picture.position.empty? return true if @picture.position[0] == -1 return true if @picture.position[0] > 0 return true if @picture.effect_ex[3] return true if @picture.effect_ex[5] return false end #-------------------------------------------------------------------------- # ● N Ox #-------------------------------------------------------------------------- def n_ox return @picture.position[2] if @picture.position[0] > 0 and @picture.position[2] return @picture.position[2] if @picture.position[0] == -1 and @picture.position[2] return $game_map.display_x * 32 if @picture.position[0] == -2 return 1000 if @picture.position[0] == -1000 return 0 end #-------------------------------------------------------------------------- # ● N Oy #-------------------------------------------------------------------------- def n_oy return @picture.position[3] if @picture.position[0] > 0 and @picture.position[3] return @picture.position[3] if @picture.position[0] == -1 and @picture.position[3] return $game_map.display_y * 32 if @picture.position[0] == -2 return 1000 if @picture.position[0] == -1000 return 0 end #-------------------------------------------------------------------------- # ● Execute Move #-------------------------------------------------------------------------- def execute_move(type,cp,np) sp = 5 + ((cp - np).abs / 5) if cp > np ; cp -= sp ; cp = np if cp < np elsif cp < np ; cp += sp ; cp = np if cp > np end @picture.position[2] = cp if type == 0 @picture.position[3] = cp if type == 1 end #-------------------------------------------------------------------------- # ● Update Zoom #-------------------------------------------------------------------------- alias mog_picture_ex_update_zoom update_zoom def update_zoom if @picture.effect_ex[2] ; update_breath_effect ; return ; end if @picture.effect_ex[3] ; update_auto_zoom_effect ; return ; end mog_picture_ex_update_zoom end #-------------------------------------------------------------------------- # ● Update Breath Effect #-------------------------------------------------------------------------- def update_breath_effect self.zoom_x = @picture.zoom_x / 100.0 self.zoom_y = @picture.zoom_y / 101.0 + auto_zoom(2) end #-------------------------------------------------------------------------- # ● Update Auto Zoom Effect #-------------------------------------------------------------------------- def update_auto_zoom_effect self.zoom_x = @picture.zoom_x / 100.0 + auto_zoom(3) self.zoom_y = @picture.zoom_y / 100.0 + auto_zoom(3) end #-------------------------------------------------------------------------- # ● Auto Zoom #-------------------------------------------------------------------------- def auto_zoom(type) if @picture.effect_ex[type][6] == 0 @picture.effect_ex[type][6] = 1 @picture.effect_ex[type][0] = rand(50) end if @picture.effect_ex[type][5] < @picture.effect_ex[type][4] @picture.effect_ex[type][5] += 1 return @picture.effect_ex[type][1] end @picture.effect_ex[type][5] = 0 @picture.effect_ex[type][2] -= 1 return @picture.effect_ex[type][1] if @picture.effect_ex[type][2] > 0 @picture.effect_ex[type][2] = 2 ; @picture.effect_ex[type][0] += 1 case @picture.effect_ex[type][0] when 0..25 ; @picture.effect_ex[type][1] += @picture.effect_ex[type][3] when 26..60 ; @picture.effect_ex[type][1] -= @picture.effect_ex[type][3] else ; @picture.effect_ex[type][0] = 0 ; @picture.effect_ex[type][1] = 0 end @picture.effect_ex[type][1] = 0 if @picture.effect_ex[type][1] < 0 @picture.effect_ex[type][1] = 0.25 if @picture.effect_ex[type][1] > 0.25 if type == 2 return @picture.effect_ex[type][1] end #-------------------------------------------------------------------------- # ● Can Set Wave Effect? #-------------------------------------------------------------------------- def can_set_wave_effect? return false if !@picture.effect_ex[6] return false if !@picture.effect_ex[6][0] return false if !self.bitmap return true end #-------------------------------------------------------------------------- # ● Set Wave Effect #-------------------------------------------------------------------------- def set_wave_effect @picture.effect_ex[6][0] = false self.wave_amp = @picture.effect_ex[6][1] self.wave_length = self.bitmap.width self.wave_speed = @picture.effect_ex[6][2] end end
на mv не знаю
Спойлер Мои проекты:
Замороженные:
Каменная слеза
Ключ 2
Sagittarius
Конкурсные:
Я не боюсь
Дандженариум
Зелёные: Миссия Джонни
Страхи
Остров палача
Завершённые:
Ключ
Тема с ретро ресурсами
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)
Социальные закладки