Confira o Videos Épicos #45!
13 Respostas   1373 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
[user]King Gerar[/user] Eu to tendo um problema com o rolê. Ele funciona e muito bem, mas, se eu quiser fazer com que um NPC se mova por evento ou qualquer outra coisa, eu preciso definir uma região pra ele também. Tem como arrumar isso?
<>Comentário: Verificar coordenadas do evento<>Var "Animal A-X" igual X coordenada (Este evento)<>Var "Animal A-Y" igual Y coordenada (Este evento)<>Comentário: #Verificar se o animal sai da posição X<>Condição "Animal A-X" menor que 15 <>Mover evento: Este Evento: : :Andar passo para direita : :Andar passo para direita <>:Fim<>Condição "Animal A-X" maior que 55 <>Mover evento: Este Evento: : :Andar passo para esquerda : :Andar passo para esquerda <>:Fim<>Comentário: #Verificar se o animal sai da posição Y<>Condição "Animal A-X" menor que 12 <>Mover evento: Este Evento: : :Andar passo para cima : :Andar passo para cima <>:Fim<>Condição "Animal A-X" maior que 30 <>Mover evento: Este Evento: : :Andar passo para baixo : :Andar passo para baixo <>:Fim<>
O ruim é que provavelmente você não vai usar uma área ao quadrado, ou seja com 4 lados sendo as laterais e os diametros iguais, daí seria possível fazer isso por eventos sem muita dificuldade.Deixar o animal em processo paralelo:Citar<>Comentário: Verificar coordenadas do evento<>Var "Animal A-X" igual X coordenada (Este evento)<>Var "Animal A-Y" igual Y coordenada (Este evento)<>Comentário: #Verificar se o animal sai da posição X<>Condição "Animal A-X" menor que 15 <>Mover evento: Este Evento: : :Andar passo para direita : :Andar passo para direita <>:Fim<>Condição "Animal A-X" maior que 55 <>Mover evento: Este Evento: : :Andar passo para esquerda : :Andar passo para esquerda <>:Fim<>Comentário: #Verificar se o animal sai da posição Y<>Condição "Animal A-X" menor que 12 <>Mover evento: Este Evento: : :Andar passo para cima : :Andar passo para cima <>:Fim<>Condição "Animal A-X" maior que 30 <>Mover evento: Este Evento: : :Andar passo para baixo : :Andar passo para baixo <>:Fim<>Eu coloquei para retornar dois passos caso passe das coordenadas estipuladas, mas pode diminuir pra 1.
#-------------------------------------------------------------------------------# NPC Region Move#-------------------------------------------------------------------------------# Este script faz com que determinados eventos somente andem sobre tiles com# determinadas regiões.#-------------------------------------------------------------------------------# Instruções:# Comente o evento com "<region id>"# No id colocar o id da region que o npc se moverá :)# Caso queira que o evento se movimente em qualquer região, coloque o id nesta# tag como 0 (zero).#===============================================================================#===============================================================================# ** Game_CharacterBase#-------------------------------------------------------------------------------# Esta classe gerencia os personagens. Comum a todos os persongens, armazena# informações básicas como coordenadas e gráficos# Esta classe é usada como superclasse da classe Game_Character.#===============================================================================class Game_Event < Game_Character #--------------------------------------------------------------------------- # * Movimento em linha reta em # d : direção (2,4,6,8) # turn_ok : permissão para mudar de direção #----------------------------------------------------------------------------- def move_straight(d, turn_ok = true) @move_succeed = passable?(@x, @y, d) if @list[0].parameters[0][0..6] == '<region' @list[0].parameters[0][9] != '>' ? @region_id = @list[0].parameters[0][8..9] : @region_id = list[0].parameters[0][8] end if @region_id != "0" @move_succeed = false unless $game_map.region_to_pass(@x, @y, d) == @region_id.to_i end if @move_succeed set_direction(d) @x = $game_map.round_x_with_direction(@x, d) @y = $game_map.round_y_with_direction(@y, d) @real_x = $game_map.x_with_direction(@x, reverse_dir(d)) @real_y = $game_map.y_with_direction(@y, reverse_dir(d)) increase_steps elsif turn_ok set_direction(d) check_event_trigger_touch_front end endend#===============================================================================# ** Game_Map#-------------------------------------------------------------------------------# Esta classe gerencia o mapa. Inclui funções de rolagem e definição de # passagens. A instância desta classe é referenciada por $game_map.#===============================================================================class Game_Map #----------------------------------------------------------------------------- # * Definição de ID da região # x : coordenada X # y : coordenada Y #----------------------------------------------------------------------------- def region_to_pass(x, y, d) case d when 2 y += 1 when 4 x -= 1 when 6 x += 1 when 8 y -= 1 end valid?(x, y) ? @map.data[x, y, 3] >> 8 : 0 endend