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

Event Respawner

Iniciado por Raizen, 08/01/2013 às 15:14

Event Respawner

Compativel com: RMVXAce
Compatibilidade :boa
Facilidade de uso: fácil
Lag gerado: baixo

[box class=titlebg]
Condições de Uso
[/box]
  Pode ser modificado, e divulgado em outros lugares, mas peço que não retire os créditos.

[box class=titlebg]
Para que serve o script
[/box]

  O script permite que um evento seja colocado aleatoriamente no mapa, respeitando caso queira, ou não a passabilidade dos tiles no mapa. O script permite também configurar uma distancia do personagem para o evento aparecer.
Utilidades do script:
Invocar criaturas em um sistema ABS.
Colocar baús ou outros objetos aleatórios no mapa (Assim a cada vez que o jogador jogar, estará em lugares diferentes).
Colocar alavancas e outros npcs em locais diferentes (pode ser usado inclusive como puzzles para encontrar tal npc)
E muitas outras utilidades que você pode pensar. '-'

CUIDADO: Não adianta colocar por exemplo valores altos da distancia do personagem em um mapa pequeno, ou de algum modo se o evento não tiver um lugar para aparecer, o jogo vai travar, cabe ao bom senso de quando o comando é ativado o evento possa ter algum lugar para aparecer.

[box class=titlebg]
Script.
[/box]

#=======================================================
#         Event Spawner
# Autor: Raizen
# Comunidade: www.centrorpg.com
# Compativel com: RMVXAce
# O script permite que um evento qualquer, apareça em qualquer
# ponto aleatório do mapa.
# O script permite que o evento apareça, ou não em tiles
# apenas passaveis.
# Ele também permite que o evento ao ter "spawn" apareça a uma
# certa distancia do personagem.
# Instruções.


# Basta usar o comando Chamar Script: na terceira aba dos eventos.
# e digitar o seguinte comando.
# event_spawn(check, move, distance, switch)
# aonde move pode ter valor de 0 ou 1.
# 1 = evento irá apenas aparecer em tiles passaveis
# 0 = evento aparecerá em qualquer ponto do mapa.
# O primeiro valor check, verifica se após o evento ser colocado,
# continuará permitindo a passabilidade do personagem e de outros eventos.
# podendo ter o valor de true(verifica), false(não verifica)
# distance representa a distancia que o evento aparecerá do personagem
# switch é a switch local que será desativado ao usar o comando, coloque
# a letra entre aspas.
# Um exemplo de como usar o comando corretamente.

# Chamar Script: event_spawn(true, 1, 4, "A")

# Você também pode deixar sem o switch, caso não queira desativar um
# desse modo.
# Chamar Script: event_spawn(true, 1, 4)

# Você também pode utilizar esse comando em outros eventos, basta no lugar
# do switch colocar o valor do número do evento e não a switch local dele

# Exemplo: Chamar Script: event_spawn(false, 1, 4, 5, "A")
# Nesse exemplo eu dou o spawn no evento de ID 5 do mesmo mapa.
# e desligará o switch Local A daquele evento.
# Pode deixar sem o switch Local desse modo aqui.
# Exemplo: Chamar Script: event_spawn(true, 1, 4, 5)

# Lembrete!: A cada nova condição "verificar passabilidade ou distancia"
# o processamento aumenta um pouco, então teste o melhor modo de usar
# no seu jogo :)

# Aqui começa o script.

#=======================================================



class Game_Interpreter
  def event_spawn(check, move, distance, switch = "", switch2 = "")
  switch.is_a?(Integer) ? event_id = switch : event_id = @event_id
  switch = switch2 unless switch2 == ""
  x = $game_map.width
  y = $game_map.height
  cx = $game_player.x
  cy = $game_player.y
  count = - 1
  while count <= distance
  if move == 1
  x = rand($game_map.width)
  y = rand($game_map.height)
  x - cx >= 0 ? count = x - cx  : count = - x + cx
  y - cy >= 0 ? count2 = y - cy  : count2 = - y + cy
  count = count2 if count2 >= count
  count = - 1 unless $game_map.check_passage(x, y, 0x0f)
  else
  x = rand($game_map.width)
  y = rand($game_map.height)
  x - cx >= 0 ? count = x - cx  : count = - x + cx
  y - cy >= 0 ? count2 = y - cy  : count2 = - y + cy
  count = count2 if count2 >= count 
  end
  if check
  count = - 1 if $game_map.spawner_passable(x, y)
  end
  end
    $game_map.events[event_id].moveto(x,y)
    $game_self_switches[[@map_id, event_id, switch]] = false unless switch == ""
    return
  end
end

class Game_Map
  def spawner_passable(x, y)
  return false if check_passage(x - 1,y , 0x0f) and check_passage(x ,y -1, 0x0f) and check_passage(x - 1,y -1, 0x0f)
  return false if check_passage(x + 1,y , 0x0f) and check_passage(x ,y -1, 0x0f) and check_passage(x + 1,y -1, 0x0f)
  return false if check_passage(x - 1,y , 0x0f) and check_passage(x ,y +1, 0x0f) and check_passage(x - 1,y +1, 0x0f)
  return false if check_passage(x + 1,y , 0x0f) and check_passage(x ,y +1, 0x0f) and check_passage(x + 1,y +1, 0x0f)
  return true
  end
end


[box class=titlebg]
Imagens
[/box]

  Não perceptível por imagens.

[box class=titlebg]
Download
[/box]

Não necessário

[box class=titlebg]
Créditos e Avisos
[/box]

Raizen pelo script

nem consegui fazer isso no xas hero do ace :[

Não testei com o XAS hero, aparece algum erro ou simplesmente nada acontece? Testou em um projeto sem o XAS para ver se era por causa do XAS x_x?

Hohoho, realmente isso é interessante. Eu estive procurando por um script desse à um tempo atrás, pena que não encontrei, na época. Hoje já não preciso mais! POKSOAPKS '
Enfim, achei bem interessante, principalmente para baús e monstros que podem "reviver", deixando assim uma oportunidade do jogador elevar seu nível, e não causar monotonia no jogo.
Meus parabéns, pai, mais uma vez não poderia esperar menos de você!  :blink:

Pfv alguém faz um demo desse script isso é muito importante para o meu projeto mais eu ñ sei como usar
sé alguém conseguir fazer isso pra mim eu poderei alterar e transformar esse script no shenlong do dbz

alguém faz isso pra mim,pfv :T.T: :T.T:
#BrunoUZ

É só fazer como está escrito no script após "Basta usar o comando Chamar Script". Lá tem um exemplo também
Born in 95 to die