O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Ei, ei, ei! Volta aqui!

Iniciado por Molotov Dias, 15/01/2014 às 05:21

15/01/2014 às 05:21 Última edição: 15/01/2014 às 10:42 por Dias Anders
Well, eu tenho tido um problema com meus eventos (que aliás eu estava lendo um tutorial de como impedir isso, esses dias, mas perdi. :c), eu queria, por exemplo, manter uma alcateia num certo circulo de spawn, mas eles tem até atravessado o rio! xD
Tenho tentado manter um grupo de ladinos e mendigos, apenas numa área da cidade, mas eles tem ficado até no bairro nobre.

Enfim, eu sei que eu deveria demarcar área, mas eu lembro como demarcar pelo tileset, e fazer funcionar. Mas não sei usar o território pelo regiões. Btw, daria para fazer pelos regiões?
Atualmente eu tenho usado diversos eventos para bloquear a área, mas isso da muita perna, rs.

Safety and Peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Um jeito é criar um "círculo" de eventos invisíveis que impeçam o movimento de outros eventos. Um jeito mais simples ainda é criar uma rota pré-definida para os eventos e não marcar a opção "Ignorar se impossível". O problema disso é se acontecer de dois eventos se barrerem aí eles vão ficar parados na mesma posição até que haja a troca de mapas.

Viva a lenda!



Eu costumo fazer um círculo de eventos, mas ele sobrecarrega demais o mapa. Cheguei a tentar fazer uma rota pré-definida, mas é o que eu quero evitar! Eu queria algo mais aleatório mesmo.


Safety and Peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Tem um outro jeito, mas é o que eu acho mais complicado. Você teria que criar variáveis para guardar as posições X e Y dos eventos em questão. Quando eles atingissem o limite da área um evento faria eles voltarem alguns passos. Só que é muito chato fazer isso pra quando tem muitos eventos.

Viva a lenda!



Hm... Você teria essa fórmula, para eu dar uma olhada e tal?

Senão vou acabar fazendo uma barreira invisível (por terreno), só tenho que ver como eu faria isso. e_e

Safety and Peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Fiz essa demo aqui: Project10. O tile arenoso demarca o limite do NPC, sempre que ele pisa ali ele volta. Eu fiz o controle das coordenadas e o controle do limite em dois eventos diferentes para não embolar. Espero que ajude!

Viva a lenda!



Peraí, tu quer que determinado evento ande somente em determinada área do mapa?

Citação de: King Gerar online 15/01/2014 às 08:51
Peraí, tu quer que determinado evento ande somente em determinada área do mapa?
Sim, ajude o menino com o script seu safado xD,

zoa, como alternativa Dias, tem um script que permite que certos npcs andem apenas em uma certa região, o Gerar tem isso ai x)

15/01/2014 às 08:59 #8 Última edição: 25/01/2017 às 07:21 por King Gerar
Citação de: Raizen online 15/01/2014 às 08:53
Citação de: King Gerar online 15/01/2014 às 08:51
Peraí, tu quer que determinado evento ande somente em determinada área do mapa?
Sim, ajude o menino com o script seu safado xD,

zoa, como alternativa Dias, tem um script que permite que certos npcs andem apenas em uma certa região, o Gerar tem isso ai x)

Nããããao, é meu! É tuuuudo meu!!!
Aff, é que ele falou em spawn lá, ai não sabia se ele queria só que andasse na região.
Desculpa aí tio u.u

Aqui, Dias:


#-------------------------------------------------------------------------------
#                              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
  end
end
#===============================================================================
# ** 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
  end
end


Aí tipo, tu coloca a tag <region id> como comentário no evento lá, ai
mapeia com a região onde quer que ele se mova e coloca o id dela
ali. O autor é o Raizen x)

Olha só! Respostas. -rs

Vincent: Vou dar uma olhada no sistema! Talvez me seja útil qualquer dia.

Raizen: Valeu por pressionar o Gerar, uhuhaeuh.

Gerar: Seu precioso? -q
E a região no caso seria definida pelo F7? Aí eu comentaria e ele andaria apenas em cima?
Agradeço!

Safety and Peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Citação de: Dias Anders online 15/01/2014 às 10:06
[...]
E a região no caso seria definida pelo F7? Aí eu comentaria e ele andaria apenas em cima?
[...]
Exatamente, bro!

Valeu! Resolvido, then.

Paz e Segurança.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//