¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3378 miembros registrados.
El último usuario registrado es Max003.

Nuestros miembros han publicado un total de 79742 mensajes en 11241 argumentos.
Navega con Google Chrome
[DESCARGA]

[RMXP] Condiciones de inicio extra

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Condiciones de inicio extra

Mensaje por orochii el 2013-10-30, 03:32

Condiciones de inicio de evento extra
Autor: Orochii Zouveleki - Versión 1.00 (RGSS1)

Descripción:
Okay, como mayoría de mis aportes a ésta comunidad, estaba weando en mi proyecto, haciendo mis tonterías usuales, y tenía este dilema con las condiciones. Verán, me da pereza que sólo hayan 4 "interruptores locales", y más aún que no se puedan usar como condición de inicio de evento. Y también otras muchas limitantes de esas opciones. Así que hice ésto. Que da unas ciertas libertades extra. Las detallo en seguida en el siguiente apartado de éste post.

Características:

  • Permite condiciones de inicio infinitas por medio de anotaciones.
  • Condiciones por self-switch no limitadas a ABCD (pero sólo usen strings, xD).
  • También pueden poner switches normales, por si acaso necesitan más de dos.
  • Y claro, variables. A diferencia del RMXP vanilla, acá pueden usar >= > == < <=.
  • Por anotación se pueden meter 5 líneas de condiciones. Pero pueden usarse infinitos comandos de anotación seguidos y todo irá bien (ya lo probé, xd). Así que, no reparen, tiren toda la mierda que quieran xD. IT'S FREE!!! (?).


Script:
Código:
# ===============================
#
# Condiciones de inicio extra - Versión 1.00
# Creado por el asombroso, sexy y buen mozo Orochii Zouveleki
# Sí, creado, como el hombre en el creacionismo. I'm g-- *Orochii is dead*.
#
# ===============================
#Para mas informasion bisitar el topi en Mundomárquer xDxDxDxD^^:):3x3
#(ahora pongo el linq ^^).

#http://www.mundo-maker.com/t9143-rmxp-condiciones-de-inicio-extra#73242

#Todos los creditos se los dan a mi cerdito. Que no tengo. :----DDDDD.
#Menciones especiales al anónimo del script para hacer resize en VXA por
#ser un maldito y hacer cosas del diablo. Que no tienen NADA qué ver con
#este script, pero yo pongo lo que me da la gana aquí.

class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    # Initialize local variable: new_page
    new_page = nil
    # If not temporarily erased
    unless @erased
      # Check in order of large event pages
      for page in @event.pages.reverse
        # Make possible referrence for event condition with c
        c = page.condition
        # Switch 1 condition confirmation
        if c.switch1_valid
          if $game_switches[c.switch1_id] == false
            next
          end
        end
        # Switch 2 condition confirmation
        if c.switch2_valid
          if $game_switches[c.switch2_id] == false
            next
          end
        end
        # Variable condition confirmation
        if c.variable_valid
          if $game_variables[c.variable_id] < c.variable_value
            next
          end
        end
        # Self switch condition confirmation
        if c.self_switch_valid
          key = [@map_id, @event.id, c.self_switch_ch]
          if $game_self_switches[key] != true
            next
          end
        end
        c = page.list[0]
        if c.code==108 #Annotation
          s_a_chck=false
          #print c.parameters
          param = ""
          page.list.each{|ccc|
            break if (ccc.code != 108)&&(ccc.code != 408)
            param += (ccc.parameters[0]+"\n")
          }
          param.gsub(/SWITCH[ ](\d+)/){|match|
            #print "Switch"
            #print $1 #c.parameters
            s_a_chck = true if ($game_switches[$1.to_i] == false)
            match
          }
          next if s_a_chck==true
          param.gsub(/VARIABLE[ ](\d+)[ ](\W+)[ ](\d+)/){|match|
            #print "Variable"
            #print $1 #c.parameters
            #print $2
            #print $3
            if $game_switches[$1.to_i] == false
            s_a_chck = true if !(eval("$game_variables[#{$1}] #{$2} #{$3}"))
            end
            match
          }
          next if s_a_chck==true
          param.gsub(/SELF[ ](\w+)/){|match|
            #print "Self Switch"
            #print $1 #c.parameters
            key = [@map_id, @event.id, $1.to_s]
            s_a_chck = true if ($game_self_switches[key] != true)
            match
          }
          next if s_a_chck==true
        end
        # Set local variable: new_page
        new_page = page
        # Remove loop
        break
      end
    end
    # If event page is the same as last time
    if new_page == @page
      # End method
      return
    end
    # Set @page as current event page
    @page = new_page
    # Clear starting flag
    clear_starting
    # If no page fulfills conditions
    if @page == nil
      # Set each instance variable
      @tile_id = 0
      @character_name = ""
      @character_hue = 0
      @move_type = 0
      @through = true
      @trigger = nil
      @list = nil
      @interpreter = nil
      # End method
      return
    end
    # Set each instance variable
    @tile_id = @page.graphic.tile_id
    @character_name = @page.graphic.character_name
    @character_hue = @page.graphic.character_hue
    if @original_direction != @page.graphic.direction
      @direction = @page.graphic.direction
      @original_direction = @direction
      @prelock_direction = 0
    end
    if @original_pattern != @page.graphic.pattern
      @pattern = @page.graphic.pattern
      @original_pattern = @pattern
    end
    @opacity = @page.graphic.opacity
    @blend_type = @page.graphic.blend_type
    @move_type = @page.move_type
    @move_speed = @page.move_speed
    @move_frequency = @page.move_frequency
    @move_route = @page.move_route
    @move_route_index = 0
    @move_route_forcing = false
    @walk_anime = @page.walk_anime
    @step_anime = @page.step_anime
    @direction_fix = @page.direction_fix
    @through = @page.through
    @always_on_top = @page.always_on_top
    @trigger = @page.trigger
    @list = @page.list
    @interpreter = nil
    # If trigger is [parallel process]
    if @trigger == 4
      # Create parallel process interpreter
      @interpreter = Interpreter.new
    end
    # Auto event start determinant
    check_event_trigger_auto
  end
end
Instrucciones de uso:
Pegar sobre Main.
Para agregar condiciones de inicio extra, se agregan anotaciones, dentro de las cuales se introduce un "texto específico". Las anotaciones DEBEN estar al mero puro y duro inicio de la página afectada (? optimizaciones random, y porque yo opino es más ordenado). Y éstos son los códigos, a usar en las anotaciones:
SWITCH n
"n" sería reemplazado por el número ID del interruptor.
Ej.: SWITCH 12345645231854621648

VARIABLE x simbolo y
"x" es reemplazado por la ID de la variable en cuestión.
"simbolo" es reemplazado por la relación de comparación (< <= > >= == y !=). Cualquier otro signo o tontería que inyecten no me comprometo a que sirva xD! (ya que usa un eval).
"y" sería el valor a comparar con la variable.
NOTA: Hay... cierto poder oculto para ésta cosa. Pero neh, quizá después... :--D

SELF nombre
"nombre" es reemplazado por el identificador del interruptor local. Para "los locales comunes" (?) se usa A, B, C y D.
Compatibilidad:
Posibles problemas con cosas que modifiquen Game_Event. Específicamente el método refresh.

Registro de versiones:
28/10/2013 1.01. Agregados conversores.
27/10/2013 1.00. Versión inicial.

Preguntas Frecuentes:
Por ahora, nein.

Saludos,
Orochii Zouveleki

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por rigel2 el 2013-10-30, 15:42

o genial eso de condiciones de inicio por medio de self switch se olle bien intentare probarlo aver que sucede

rigel2
Principiante
Principiante

0/3

Créditos 850

Gracias : 22

http://rigelforge.blog.fc2.com

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por Wecoc el 2013-10-30, 16:08

Éste topic parece una broma xD Sobretodo por los comentarios dentro del script. ¿Eso se lo has dicho a tu médico?

A parte de eso es interesante. Por defecto los self-switches no estan limitados a A, B, C, D sinó que pueden ser cualquier string, como ya dije no se donde. Es el maldito programa que está mal montado con eso.

Aún así yo siempre me he librado de esto usando Condiciones y Efectos - Script. Es otra manera de solucionar el problema, quizá un poco más cuerda, aunque más desordenada si tienes que tirar Excepciones xD

Quiero decir, al fin y al cabo las condiciones de inicio del evento y las Condiciones y efectos dentro del evento a principio de página, hacen funciones equivalentes. Y con lo segundo no necesitas scripts a parte :)

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por orochii el 2013-10-31, 00:21

No Wecoc estás mal, tú deberías aprender a usar el programa primero porque dises cosas y cosas y no parese que digas cosas. Ajajaja, rayos no puedo imitar a los trolls xD.

Bueno, sí, el comando de condiciones perfecto es tal como está, y se pueden usar eventos para activar páginas por aparte (y un largo infinito de tonterías, si es que los workarounds en el RPG Maker son el mayor poder existente en la creación de videojuegos del mundo (?)). Ajeh ajeh. Pero bueno, como digo, fue un escridtpdt que me salió de por ahí en medio de mis necesidades (NO malpiensen mal, malpensados x'D seguro no lo hago a poprósito xD).

Diantres, estoy peor que nunca x'D.

En fin, da la opción de definir más condiciones de inicio.
Una cosa que podría agregar y sería genial es por cierto condición por script. Veré si lo hago, aún si no tengo idea de si lo necesitaré en mi proyecto, pero ya saben niños, yo todo lo hago con mucho amor <3.

Un saludo, y veré si me consigo cita con el psicólogo, se cuidan mis cosiiiiiiiiis! <3,
Orochii Zouveleki

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por senshi el 2013-10-31, 01:29

Bueno de momento no se me ocurre como usar esto.
Tendria que ver ejemplos practicos para checar su alcance.

senshi
Novato
Novato

0/3

Créditos 68

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por orochii el 2013-10-31, 03:57

Ejemplo:
Código:
Evento random
Condiciones de inicio: Automático
Interruptores: 1, 2, 3, 5 activos.
Variable 23 igual a 5
Interruptores locales A y D encendidos.

<>Mensaje: "Dinner"
Espera un momento... ¿acaso los eventos en el RPG Maker no tienen sólo dos campos para interruptores? ¿Y las variables, puedes checar si son iguales a un número, no es sólo si mayor que? ¿Y cuántos interruptores locales llevas ahí?

Código:
Evento anterior a como quedaría con esta cosa
Condición de inicio: Automático
Interruptores: 1 y 2 encendidos
Interruptor local A encendido

<>Comentario: SWITCH 3
SWITCH 5
VARIABLE 23 == 5
SELF D
<>Mensaje: "Dinner"
Para eso sirve,
Orochii Zouveleki

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por silvanash el 2013-10-31, 12:54

Una preguntica, oh gran OZ:

¿Se pueden poner varios valores al comparar una variable? Por ejemplo: VARIABLE 23 == 5, 6, 7

silvanash
Aventurero
Aventurero

0/3

Créditos 1417

Gracias : 176

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por Eron el 2013-10-31, 13:17

Silvanatxov,

VARIABLE 23 == 5, 6, 7
¿a qué te refieres exactamente con eso?

Supongo que te refieres a:
[5, 6, 7].include?($game_variables[23])
o bien
$game_variables[23].between?(5,7)

Yo pondria uno de esos en Condiciones y efectos y ya está x'DD

Supongo que en el método de Orotxinski podrías poner

VARIABLE 23 >= 5
VARIABLE 23 <= 7


No sé, digo yo que para que se cumpla se tiene que cumplir todo así que poner por ejemplo ésto

VARIABLE 23 == 5
VARIABLE 23 == 6
VARIABLE 23 == 7


no sirve. Pero tampoco estoy 100% seguro.

Eron
Soñador
Soñador

0/3

Créditos 1235

Gracias : 40

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por silvanash el 2013-10-31, 13:20

Vale, corrijo:

VARIABLE 23 == 5 or 6 or 7

Es decir, que el evento aparezca si la variable tiene uno cualquiera de esos 3 valores.

silvanash
Aventurero
Aventurero

0/3

Créditos 1417

Gracias : 176

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por orochii el 2013-10-31, 13:53

Mmmm nop, no he hecho soporte para OR. De hecho ahora que lo mencionas, eso sería útil... Lo único es que para soportar OR debo mantener el orden de las condiciones, cosa que por ahora no hago xD. Ejemplo ilustrativo:

El siguiente código
Código:
SWITCH 4
SWITCH 1
VARIABLE 3 == 5
SWITCH 3
SWITCH 2
Es checado así
Código:
SWITCH 4
SWITCH 1
SWITCH 3
SWITCH 2
VARIABLE 3 == 5
Primero todos los switches, luego todas las variables, luego todos los selfswitches. Lo hice así porque a fin de cuentas funciona como un AND (es decir, si uno da false todo da false). Por lo tanto el orden no importaba.
El único momento en donde importa el orden en un and es cuando estás checando si algo existe xD, por ejemplo:
(@ventana != nil)&&(@ventana.visible)

Am bueno, la cosa sería cambiar el método que usaba. Así además no necesitaría juntar todos los comentarios, sino sería iterar cada uno por separado C:. Veré qué me sale xd.

Salut,
OZ

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Condiciones de inicio extra

Mensaje por Contenido patrocinado Hoy a las 02:28


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

Permisos de este foro:
No puedes responder a temas en este foro.