Necesito un Script para que aparezcan aleatoriamente enemigos por el mapa, no que vallas caminando y te aparezca un enemigo, si no que el enemigo se genere en el mapa de manera aleatoria y al chocarse contigo comience la pelea.

Um... la mayoría de gente simplemente coloca eventos, NPCs con condición de inicio "Tocar evento/Colisionar", y con

<>Iniciar combate: tal-grupo

<>Borrar evento temporalmente

Hacer un script para ponerlos al azar... creo que no hay xd.

4 meses más tarde

Podrias hacerlo mediante variables, y condiciones y efectos

Generas un valor de variable aleatorio, la cantidad la determina cuantos enemigos posibles quieres poner.

Luego en condiciones y efectos enumeras cada uno de los resultados posibles y su respectiva batalla.

Yo lo que hago es usar un script (Super-Sensor Event Range) para que los enemigos me detecten, me persigan y al chocar conmigo empiece la batalla (las dos últimas partes tendrás que hacerlas con eventos, pero tranquilo que es muy fácil).

Supongo que querrás hacer como el Dragon Quest IX, que tenía un sistema de aparición muy bueno... Pero el problema es que tendrás que poner dónde quieres los enemigos, porque que salgan al azar por el mapa es muy dificil...

En fin, echa un vistazo al script y me comentas ;)

Un saludo!

#-------------------------------------------------------------------------------

#--------------------Super-Sensor Event Range (XP/VX/ACE)-----------------------

# By:Super Shooter

# 11/01/2012 - V 1.3

# Establece un sensor en los eventos

#-------------------------------------------------------------------------------

# Los eventos con sensor activo deben llevar un comentario (nota o anotacion, el

# nombre cambia segun la version de maker que uses) el cual variara segun el

# tipo de sensor que quieras colocar, a continuacion los tipos de sensores y los

# comentarios que se deben incluir:

# sensor_circle x => este es el sensor el forma de circulo

# sensor_square x => sensor cuadrado

# sensor_cross x => sensor en forma de cruz

# siendo x la vision que tendran.

#-------------------------------------------------------------------------------

class Game_Event

LocalSwitch = 'D'#Interruptor que se activara cuando el heroe este en el rango

ActiveSensor = 7 #Interruptor que activa el sensor

#-------------------------------------------------------------------------------

# alias a los metodos initialize y update

#-------------------------------------------------------------------------------

alias supersensorevents_initialize initialize unless $@

alias supersensorevents_update update unless $@

#-------------------------------------------------------------------------------

# Modificacion al metodo initialize, para verificar si usa el sensor, su tipo y

# rango de funcionamiento

#-------------------------------------------------------------------------------

def initialize(map_id, event)

@sensor = check_sensor event

@range = range(@sensor[:sensor]) if @sensor

@range = @range.to_s.to_i if @range

supersensorevents_initialize(map_id, event)

end

#-------------------------------------------------------------------------------

# Modificacion al metodo update para actualizar el sensor en caso que este

# activo.

#-------------------------------------------------------------------------------

def update

supersensorevents_update

case @sensor[:type]

when 1

update_sensor_circle

when 2

update_sensor_square

when 3

update_sensor_cross

end if $game_switches[ActiveSensor] and @sensor[:type] and @sensor[:type] < 4 and @range

end

#-------------------------------------------------------------------------------

# update para el sensor cuando su tipo de rango es circular

#-------------------------------------------------------------------------------

def update_sensor_circle

sx = ($game_player.x - @x).abs

sy = ($game_player.y - @y).abs

key = [@map_id, @event.id, LocalSwitch]

if sx + sy <= @range

$game_self_switches[key] = true

$game_map.need_refresh = true

else

$game_self_switches[key] = false

$game_map.need_refresh = true

end

end

#-------------------------------------------------------------------------------

# update para el sensor cuando su tipo de rango es el cuadro

#-------------------------------------------------------------------------------

def update_sensor_square

sx = $game_player.x

sy = $game_player.y

key = [@map_id, @event.id, LocalSwitch]

if sx >= @x - @range and sx <= @x + @range and sy >= @y - @range and sy <= @y + @range

$game_self_switches[key] = true

$game_map.need_refresh = true

else

$game_self_switches[key] = false

$game_map.need_refresh = true

end

end

#-------------------------------------------------------------------------------

# update para el sensor cuando su tipo es en cruz

#-------------------------------------------------------------------------------

def update_sensor_cross

sx = $game_player.x

sy = $game_player.y

key = [@map_id, @event.id, LocalSwitch]

if sx == @x and sy <= @y + @range and sy >= @y - @range or

sy == @y and sx <= @x + @range and sx >= @x - @range

$game_self_switches[key] = true

$game_map.need_refresh = true

else

$game_self_switches[key] = false

$game_map.need_refresh = true

end

end

#-------------------------------------------------------------------------------

# Metodo que verifica su el evento usa o no el sensor, retorna un booleano

#-------------------------------------------------------------------------------

def check_sensor(event)

event.pages.each do |i|

i.list.each do |a|

return {:sensor => a.parameters[0], :type => 1} if a.code == 108 and /sensor.circle/.match a.parameters[0]

return {:sensor => a.parameters[0], :type => 2} if a.code == 108 and /sensor.square/.match a.parameters[0]

return {:sensor => a.parameters[0], :type => 3} if a.code == 108 and /sensor.cross/.match a.parameters[0]

end

end

return {}

end

#-------------------------------------------------------------------------------

# Metodo que retorna el rango, retorna MatchData por lo que se debe cambiar a

# String y luego a entero para usarse

#-------------------------------------------------------------------------------

def range(sensor)

return /\d+/.match sensor.to_s

end

end