Diogo Pegasus Maker
Mensagens : 23 Fama : 37 Data de inscrição : 10/04/2010 Idade : 31 Localização : araxa
Estatisticas Galeria de Premios:
| Assunto: Af_Vehicle ( Sistema De Veículo) Dom Abr 11, 2010 12:37 am | |
| Af_Vehicle Criado por: AlbertFishTraduzido por: Diogo Pegasus Descriçao:Este Script adiciona veículos no RPG Maker XPScript:- Spoiler:
- Código:
-
#============================================================================== # ** Script De Veículo #------------------------------------------------------------------------------ # * Criado por: albertfish # * Versão: 1.1 # * ultima atualizaçao: 16 de Dezembro de 2009 #------------------------------------------------------------------------------ # *Traduzido por: Diogo Pegasus # # #------------------------------------------------------------------------------ # Histórico da Versão: # Version 1.1: 16 de dezembro de 2009 # - Corrigido problemas de compatibilidade com XAS # Version 1.0: 14 de dezembro de 2009 # - inicial #------------------------------------------------------------------------------ # Descriçao: # Este Scripst adiciona vehículos no RPG Maker XP. #------------------------------------------------------------------------------ # Recursos: # - Velocidade do veículo Configurável # - Gráfico do veículo Configurável # - Fácil de configurar e usar e extremamente amigável # #------------------------------------------------------------------------------ # Instruções de uso: # Crie um evento no mapa onde você deseja que seja o veículo . Defina o # Evento gráfico para o gráfico que deseja que o veículo seja. Nome do evento # Como se segue: # v_land = veículo terrestre , você pode viajar nos mesmos lugares que você faz # A pé, mas a uma velocidade diferente # v_raft = veículo aquático, você pode viajar em águas rasas # v_ship = veículo aquático, você pode viajar em águas rasas e profundas # v_airship = veículo aéreo, você pode viajar sobre qualquer coisa #------------------------------------------------------------------------------ # Instruçoes de instalaçao: # coloque este scripst em cima de main #==============================================================================
#============================================================================== # ** Configuraçoes do vehículo #------------------------------------------------------------------------------ # Este módulo contém os dados de configuração para os veículos. #------------------------------------------------------------------------------ # Comece a área editável. #============================================================================== module Vehicle_Config # Isto é onde você configura a velocidade do veículo. # Mais rápido eles se movem, então quando você está em pé. # Este valor determina a velocidade do veículo terrestre # Default: 1 LAND_VEHICLE_SPEED = 1 # Este valor determina a velocidade do veículo aquático(raft) # Default: 0 RAFT_SPEED = 0 # Este valor determina a velocidade do veículo aquático(ship) # Default: 1 SHIP_SPEED = 1 # Este valor determina a velocidade do veículo aéreo # Default: 2 AIRSHIP_SPEED = 2 end #============================================================================== # Fim da area Editável. #------------------------------------------------------------------------------ # Atenção! Não edite além deste ponto a menos que você saiba o que está fazendo! #============================================================================== #============================================================================== # ** Veículo #------------------------------------------------------------------------------ # Esta classe realiza o processamento do veículo. #==============================================================================
class Vehicle #-------------------------------------------------------------------------- # * Incluir modulo #-------------------------------------------------------------------------- include Vehicle_Config #-------------------------------------------------------------------------- # * Inicializaçao do objeto #-------------------------------------------------------------------------- def initialize(event, type) # Velocidade de diferentes veícuilos @speeds = [LAND_VEHICLE_SPEED, RAFT_SPEED, SHIP_SPEED, AIRSHIP_SPEED] @player_speed = $game_player.get_speed # o evento do jogo @event = event @type = type @wait = 0 @vehicle_entering = true @in_vehicle = false # Armazenar o nome do gráficos dos actors actor = $game_actors[1] @character_graphic = @graphic = actor.character_name end #-------------------------------------------------------------------------- # * Mudar gráfico do actor # graphic_name : graphic file name #-------------------------------------------------------------------------- def change_actor_graphic(graphic_name) # Defina o nome do gráfico do Player para graphic_name actor = $game_actors[1] actor.set_graphic(graphic_name, actor.character_hue, actor.battler_name, actor.battler_hue) # Actualizar os gráficos do player $game_player.refresh end #-------------------------------------------------------------------------- # * Mover #-------------------------------------------------------------------------- def move # Faz o jogador se mover através de todos os tiles $game_player.through = true # Mover o jogador para frente $game_player.move_forward # Não permitir a entrada do jogador quando entrar no veículo $game_system.map_interpreter.switch_vehicle(true) # Faz o jogador parar de se mover através de de todos os tiles $game_player.through = false if @type != 3 end #-------------------------------------------------------------------------- # * Pegando o gráfico do veículo #-------------------------------------------------------------------------- def get_vehicle_graphic # Move o player move # Definir o tempo de espera para atrasar a aguardar o ator se mover antes # mudando gráficos @wait = 20 # Player está agora no veículo @in_vehicle = true # Retorne o nome do gráfico do veículo return @event.character_name end def exit # Muda o gráfico do actor de volta ao que era change_actor_graphic(@character_graphic) # Unanimate do veículo $game_player.step_anime = false # Mover o jogador de fora do veículo move # Faz o jogador parar de se mover através de de todos os tiles $game_player.through = false # Já não está em um veículo @in_vehicle = false # Reexibir o evento veículo @event.recreate # Ajusta a velocidade do movimento $game_player.vehicle_speed(@player_speed) # Permitir que o jogador se mover novamente $game_system.map_interpreter.switch_vehicle(false) # Não interaje com outros eventos $game_player.in_vehicle = false # Defina o tipo do veículo $game_player.vehicle_type = -1 end #-------------------------------------------------------------------------- # * Dirigível Sair # x : x-cordenar # y : y-cordenar #-------------------------------------------------------------------------- def exit_airship(x, y) $game_player.through = false for i in 1..4 if $game_player.passable?(x, y, i * 2) case i when 1 $game_player.turn_down when 2 $game_player.turn_left when 3 $game_player.turn_right when 4 $game_player.turn_up end exit return true end end $game_player.through = true return false end #-------------------------------------------------------------------------- # * Dirigível Sair # x : x-cordenar # y : y-cordenar # d : direçao (0,2,4,6,8) # * 0 = Determina se todos sao impassáveis (ao pular) #-------------------------------------------------------------------------- def exit_vehicle(x, y, d) if @type == 3 return exit_airship(x, y) end if $game_player.can_pass?(x, y, d) exit return true end return false end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- def update if @wait == 0 if @vehicle_entering # Pega o gráfico do veículo @graphic = get_vehicle_graphic if !@in_vehicle # Se houver um atraso, não continue return if @wait != 0 # Muda o gráfico dos actors para o gráfico do veículo change_actor_graphic(@graphic) # Anima o veículo $game_player.step_anime = true if @type != 0 # Apaga o evento do veículo @event.erase # Adjust move speed $game_player.vehicle_speed(@player_speed + @speeds[@type]) # Mais nenhuma alteração no veículo @vehicle_entering = false # Permite o jogador se mover de novo $game_system.map_interpreter.switch_vehicle(false) # Nao interaje com outros eventos $game_player.in_vehicle = true # Define o tipo de veículo $game_player.vehicle_type = @type end # Se em um veículo if @in_vehicle # Move o evento do veículo para a player cordenado @event.moveto($game_player.x, $game_player.y) end else @wait -= 1 end end #-------------------------------------------------------------------------- # * Dentro #-------------------------------------------------------------------------- def inside return @in_vehicle && @wait == 0 end end
#============================================================================== # ** Scene_Map #------------------------------------------------------------------------------ # Esta classe realiza processamento de ecrã de mapa. #==============================================================================
class Scene_Map #-------------------------------------------------------------------------- # * Main Processando #-------------------------------------------------------------------------- alias af_veh_sm_main main def main @vehicle = nil af_veh_sm_main end #-------------------------------------------------------------------------- # * Update #-------------------------------------------------------------------------- alias af_veh_sm_update update def update # atualiza o objeto do veículo @vehicle.update if @vehicle != nil af_veh_sm_update # Pegue novas cordenadas d = $game_player.direction new_x = $game_player.x + (d == 6 ? 1 : d == 4 ? -1 : 0) new_y = $game_player.y + (d == 2 ? 1 : d == 8 ? -1 : 0) # Se o butão C For Pressionado if Input.trigger?(Input::C) # Se dentro de um veículo if @vehicle != nil && @vehicle.inside # Se saiu do veículo if @vehicle.exit_vehicle($game_player.x, $game_player.y, d) # Remove o objeto do veículo @vehicle = nil end elsif is_vehicle?(new_x, new_y) # Entre no veículo enter_vehicle(new_x, new_y) end end end #-------------------------------------------------------------------------- # * Pegue os eventos # x : evento x-cordenar # y : evento y-cordenar #-------------------------------------------------------------------------- def get_event_keys(x, y) events = [] for key in $game_map.events.keys # Se há um evento de frente do player if $game_map.events[key].x == x && $game_map.events[key].y == y # Adiciona evento para eventos ###events.push($game_map.events[key])### events.push(key) end end return events end #-------------------------------------------------------------------------- # * È o nome do veículo? # name : event name #-------------------------------------------------------------------------- def is_vehicle_name?(name) # Nomes dos Veículos names = ["v_land", "v_raft", "v_ship", "v_airship"] for i in names # Se o nome é igual a um nome de veículos if i == name.downcase return true end end return false end #-------------------------------------------------------------------------- # * È veículo? # x : evento x-coordenar # y : evento y-coordenar #-------------------------------------------------------------------------- def is_vehicle?(x, y) for key in get_event_keys(x, y) # Se o nome de eventos é o nome de um veículo if is_vehicle_name?($game_map.map.events[key].name) return true end end return false end #-------------------------------------------------------------------------- # * Pegue o ID do veículo # x : evento x-coordenar # y : evento y-coordenar #-------------------------------------------------------------------------- def get_vehicle_id(x, y) for key in get_event_keys(x, y) # Se o nome de eventos é o nome de um veículo if is_vehicle_name?($game_map.map.events[key].name) return $game_map.events[key].id end end end #-------------------------------------------------------------------------- # * Pegue o veículo # x : evento x-coordenar # y : evento y-coordenar #-------------------------------------------------------------------------- def get_vehicle(x, y) # Obter o Id do veículo De frente do Player vehicle_id = get_vehicle_id(x, y) for key in $game_map.events.keys if $game_map.events[key].id == vehicle_id # Devolver o objeto de evento com o ID do evento correspondente return $game_map.events[key] end end end #-------------------------------------------------------------------------- # * Obter nome do veículo # x : evento x-coordenar # y : evento y-coordenar #-------------------------------------------------------------------------- def get_vehicle_name(x, y) # Obter id do veículo de frente do Player vehicle_id = get_vehicle_id(x, y) for key in $game_map.map.events.keys if $game_map.map.events[key].id == vehicle_id # Retornar o nome do evento return $game_map.map.events[key].name end end end #-------------------------------------------------------------------------- # * Entre no veículo # x : evento x-coordnar # y : evento y-coordenar #-------------------------------------------------------------------------- def enter_vehicle(x, y) # obter objeto do evento do veículo type = {"v_land" => 0, "v_raft" => 1, "v_ship" => 2, "v_airship" => 3} # Cria o objeto do veículo @vehicle = Vehicle.new(get_vehicle(x, y), type[get_vehicle_name(x, y)]) end end
#============================================================================== # ** Game_Character #------------------------------------------------------------------------------ # Esta classe lida com os personagens. É utilizado como uma superclasse para a # Game_Player e classes Game_Event. #==============================================================================
class Game_Character #-------------------------------------------------------------------------- # * Definida através # throught : new boolean throught value #-------------------------------------------------------------------------- def through=(through) @through = through end #-------------------------------------------------------------------------- # * Define a velocidade do veículo # speed : speed increment #-------------------------------------------------------------------------- def vehicle_speed(speed) @move_speed = [[1, speed].max, speed].min end #-------------------------------------------------------------------------- # * Obter velocidade do veículo #-------------------------------------------------------------------------- def get_speed return @move_speed end end
class Game_Player < Game_Character #-------------------------------------------------------------------------- # * Público Instância Variáveis #-------------------------------------------------------------------------- attr_accessor :in_vehicle # In vehicle attr_accessor :vehicle_type # In vehicle #-------------------------------------------------------------------------- # * inicializaçao do Objeto #-------------------------------------------------------------------------- alias af_veh_gp_init initialize def initialize @in_vehicle = false @vehicle_type = -1 af_veh_gp_init end #-------------------------------------------------------------------------- # * Define a animaçao do veículo # step_anime : animation boolean #-------------------------------------------------------------------------- def step_anime=(step_anime) @step_anime = step_anime end #-------------------------------------------------------------------------- # * Razoável Determinantes # x : x-coordenar # y : y-coordenar # d : direçao (0,2,4,6,8) # * 0 = Determina se todas as direçoes sao impassáveis(ao pular) #-------------------------------------------------------------------------- def passable?(x, y, d) # Obter novas cordenadas new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0) new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0) # Se a cordenada está fora do mapa unless $game_map.valid?(new_x, new_y) # Impassável return false end # Se o modo de depuração está ON e a tecla Ctrl for pressionada if $DEBUG and Input.press?(Input::CTRL) # Passável return true end # Se estiver em um veículo da água e sobre a água if $game_map.terrain_tag(new_x, new_y) == 1 && @vehicle_type == 1 || @vehicle_type == 2 && ($game_map.terrain_tag(new_x, new_y) == 1 || $game_map.terrain_tag(new_x, new_y) == 2) return true end super end #-------------------------------------------------------------------------- # * Mesma posição inicial Determinante #-------------------------------------------------------------------------- alias af_veh_gp_ceth check_event_trigger_here def check_event_trigger_here(triggers) unless @in_vehicle af_veh_gp_ceth(triggers) else return false end end #-------------------------------------------------------------------------- # * Frente Envento Iniciando Determinante #-------------------------------------------------------------------------- alias af_veh_gp_cett check_event_trigger_there def check_event_trigger_there(triggers) unless @in_vehicle af_veh_gp_cett(triggers) else return false end end #-------------------------------------------------------------------------- # * Toque Evento Iniciando Determinante #-------------------------------------------------------------------------- alias af_veh_gp_cettouch check_event_trigger_touch def check_event_trigger_touch(x, y) unless @in_vehicle af_veh_gp_cettouch(x, y) else return false end end #-------------------------------------------------------------------------- # * Determine se é passável # x : x-coordenar # y : y-coordenar # d : direçao (0,2,4,6,8) # * 0 = Determina se todas as direçoes sao impassáveis(ao pular) #-------------------------------------------------------------------------- def can_pass?(x, y, d) # Obter novas cordenadas new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0) new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0) # Se as cordenads estao fora do mapa unless $game_map.valid?(new_x, new_y) # Impassable return false end # Se o modo de depuração está ON e a tecla Ctrl for pressionada if $DEBUG and Input.press?(Input::CTRL) # Passável return true end # Se estiver em um veículo da água e sobre a água if $game_map.terrain_tag(new_x, new_y) == 1 && @vehicle_type == 1 || @vehicle_type == 2 && ($game_map.terrain_tag(new_x, new_y) == 1 || $game_map.terrain_tag(new_x, new_y) == 2) return true end # Ise through iestiver ON if @through # passável return true end # Se não for possível mover no tile mover em direção designada unless $game_map.passable?(new_x, new_y, 10 - d) # impassável return false end # Loop todos os eventos for event in $game_map.events.values # Se caso as coordenadas são consistentes com destino mover if event.x == new_x and event.y == new_y # Se through Estiver OFF unless event.through # Se self é evento if self != $game_player # impassável return false end # Com self como jogador e parceira gráfico como personagem if event.character_name != "" # impassável return false end end end end # Se as coordenadas do player são consistentes com destino mover if $game_player.x == new_x and $game_player.y == new_y # Se through estiver OFF unless $game_player.through # Se o seu próprio gráfico é o caracter if @character_name != "" # impassável return false end end end # passável return true end end
#================================================= ============================= # ** Game_Event #------------------------------------------------- ----------------------------- # Esta classe lida com eventos. Ele lida com as funções, incluindo a página de eventos # Comutação via determinantes da condição, e executando eventos do processo paralelo. # É usado dentro da classe Game_Map. #================================================= ============================= class Game_Event < Game_Character #-------------------------------------------------------------------------- # * Recriar #-------------------------------------------------------------------------- def recreate @erased = false refresh end end
#================================================= ============================= # ** Game_Map #------------------------------------------------- ----------------------------- # Essa classe manipula o mapa. Ela inclui a determinação de rolagem e passável # Funções. Consulte "$ game_map" para a instância da classe. #================================================= =============================
class Game_Map #-------------------------------------------------------------------------- # * publica a instancia de Variáveis #-------------------------------------------------------------------------- attr_reader :map end
#================================================= ============================= # ** Intérprete #------------------------------------------------- ----------------------------- # Este intérprete executa comandos de eventos. Essa classe é usada no # Game_System classe e da classe Game_Event. #================================================= =============================
class Interpreter #-------------------------------------------------------------------------- # * inicializaçao do Objeto #-------------------------------------------------------------------------- alias af_veh_int_init initialize def initialize(depth = 0, main = false) @switching_vehicle = false af_veh_int_init(depth, main) end #-------------------------------------------------------------------------- # * Switch Veículo #-------------------------------------------------------------------------- def switch_vehicle(value) @switching_vehicle = value end #-------------------------------------------------------------------------- # * Determinar se Running #-------------------------------------------------------------------------- def running? return @list != nil || @switching_vehicle end end Instruçoes:Crie um evento no mapa onde você deseja que seja o veículo . Defina o Evento gráfico para o gráfico que deseja que o veículo seja. Nome do evento Como se segue: v_land = veículo terrestre , você pode viajar nos mesmos lugares que você faz A pé, mas a uma velocidade diferente v_raft = veículo aquático, você pode viajar em águas rasas v_ship = veículo aquático, você pode viajar em águas rasas e profundas v_airship = veículo aéreo, você pode viajar sobre qualquer coisa Screens:- Spoiler:
Demo:http://www.4shared.com/file/203887664/dfb57c33/af_Vehicle.html Créditos:Ao albert Fish por ter criado E a mim por ter Traduzido | |
|
Jamal XVI Maker
Mensagens : 23 Fama : 41 Data de inscrição : 28/03/2010 Idade : 31 Localização : Ribeirão Preto - SP
Estatisticas Galeria de Premios:
| Assunto: Re: Af_Vehicle ( Sistema De Veículo) Dom Abr 11, 2010 4:14 pm | |
| Aee cara, legal o script, talvez eu use no meu projeto , Vlw, Sinceramente, Jamal XVI | |
|