¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [XP] Sistema de Reputación by ~Night Shade el Mar Feb 25, 2014 5:46 am

Reputación del mensaje :100% (1 voto)

~Night Shade

avatar
Hola U.Maker, aquí traigo mi primer script para RPG Maker XP! Soy novato en RGSS y acepto consejos de como mejorar el script :P

Autor: ~Night Shade

Nombre: Sistema de reputación

Introducción:

Este script crea y muestra un sistema de reputación junto con un sistema de rangos, donde al tener x reputación subes a x rango.

Imágenes:



Script:

Código:
=begin

Sistema de reputacion 1.0 by Night Shade

Este script crea un sistema de reputacion junto con rangos que cambian
de acuerdo a la reputacion que tengas.

===============================================================

Instrucciones:

Para ver la reputacion y tu rango pon esto en llamar script:

$scene = Scene_Reputacion.new

Para añadir reputacion pon esto en llamar script:

$reputacion += "cantidad"

Donde en "cantidad" pones la cantidad a añadir SIN LAS COMILLAS

================================================================

Partes editables:

Puedes modificar la imagen del fondo en la linea 94, recuerda que debe estar en
la carpeta pictures de tu proyecto.

Tambien puedes modificar los rangos
y la cantidad nescesaria de reputacion para subir de rango, mas abajo estan las
partes editables.

=end

$reputacion = 0
$rango = "Novato" #Nombre del rango inicial

class Reputacion < Window_Base
  def initialize
 
    case $reputacion
 
    #================================================================
    #Puedes añadir mas rangos ademas de estos siguiendo los ejemplos.
    #================================================================
 
    when 100 #Cantidad nescesaria para subir al primer rango
 
$rango = "Soldado" #Nombre del primer rango

 
when 200 #Cantidad para subir al segundo rango
 
$rango = "Capitan" #Nombre del segundo rango
 
      when 300 #Cantidad para subir al tercer rango
 
$rango = "Caballero" #Nombre del tercer rango

when 400 #Cantidad para el cuarto rango

  $rango = "Mestro" #Nombre del cuarto rango

  when 500 #Cantidad para el quinto rango
 
    $rango = "Rey" #Nombre del quinto rango
 
end

 
    super(30, 30, 200, 100)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.clear
    self.contents.draw_text(0,0,200,30,"Reputacion:", 100)
    self.contents.draw_text(0,30,200,30,$reputacion.to_s,100)
    end
end

class Rango < Window_Base
  def initialize
    super(410, 350, 200, 100)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.clear
    self.contents.draw_text(0,0,200,30,"Rango:", 100)
    self.contents.draw_text(0,30,200,30,$rango.to_s,100)
  end
end



  class Scene_Reputacion
    def main
    @[USER=174477]sprite[/USER] = Sprite.new
  @sprite.bitmap = RPG::Cache.picture("006-Mountains01")
  @[USER=429398]REP[/USER] = Reputacion.new
  @[USER=134302]rango[/USER] = Rango.new

    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
 
    Graphics.freeze
    @rep.dispose
    @rango.dispose
  end
  def update
    if Input.trigger?(Input::B)
$scene = Scene_Map.new
Audio.bgm_stop
return
end
    end
  end
Instrucciones: Todo esta dentro del script.

Salu2!

Ledai

avatar
Wouhh!!! lo probaré y veré que tal... luego edito.




Entérate de todas las novedades

#3 Re: [XP] Sistema de Reputación by ~Night Shade el Miér Feb 26, 2014 4:33 pm

youkai

avatar
Bueh te voy a dar mis recomendaciones como scripter:

1- No hagas abuso de las variables globales($reputacion, $rango)
Esas variables es mejor que las guardes como variables de una clase ya que asi puedes hasta manipular mejor los valores que le sean asignados. A lo que me refiero con esto:
Como has hecho el script para que la reputacion sea a nivel del grupo pues el script como te digo podria quedar asi:
Código:
class Game_Party
attr_accessor  :reputacion
attr_accessor  :rango
end
Ya ahi has creado las variables reputacion y rango a las cuales puedes acceder desde $game_party. Te pongo el ejemplo modificando tu script(puedo verdad? XDD)
Código:
class Reputacion < Window_Base
  def initialize
    case $game_party.reputacion
 
    #================================================================
    #Puedes añadir mas rangos ademas de estos siguiendo los ejemplos.
    #================================================================
 
    when 100 #Cantidad nescesaria para subir al primer rango
 
$game_party.rango = "Soldado" #Nombre del primer rango

 
when 200 #Cantidad para subir al segundo rango
 
$game_party.rango = "Capitan" #Nombre del segundo rango
 
      when 300 #Cantidad para subir al tercer rango
 
$game_party.rango = "Caballero" #Nombre del tercer rango

when 400 #Cantidad para el cuarto rango

  $game_party.rango = "Mestro" #Nombre del cuarto rango

  when 500 #Cantidad para el quinto rango
 
  $game_party.rango = "Rey" #Nombre del quinto rango
 
end

 
    super(30, 30, 200, 100)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.clear
    self.contents.draw_text(0,0,200,30,"Reputacion:", 100)
    self.contents.draw_text(0,30,200,30,$game_party.reputacion.to_s,100)
    end
end

class Rango < Window_Base
  def initialize
    super(410, 350, 200, 100)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.clear
    self.contents.draw_text(0,0,200,30,"Rango:", 100)
    self.contents.draw_text(0,30,200,30,$game_party.rango.to_s,100)
  end
end
Bueno la parte de asignar cada rango segun la reputacion se ve un poco mas...verbosa xD Pero realmente asi el codigo queda mas limpio. Tambien existen formulas para simplificar todo el case ese. Por ejemplo:
Código:
rangos = ["Rango 1", "Rango 2", "Rango 3"]
player_rango = rangos[reputacion / 100]
La parte mala de esa formula es que el cambio de rango es siempre cada 100 puntos(o el numero que quieras cambiando el 100) No te da la posibilidad de hacer intervalos irregulares(50 puntos para llegar a Rango 1; 100 para llegar a Rango 2, por ejemplo)
2- No dibujes la ventana en el initialize. Para eso recomiendo siempre crear un metodo "refresh" que se encargue de esto. Quiza en este script no notes la diferencia pero cuando das un paso mas alla el refresh puede marcar la diferencia entre la vida y la muerte xD

Bueno para ser tu primer script esta realmente genial XD Mi primer script no me quedo asi D: (xD)
Saludos,
¥oukai

Aprendix:
NOTA: Escribo :nombre ya que para usar estos metodos, el dato que indicaria el nombre de la variable tiene que ser o un String("nombre") o un Simbolo(:nombre) y prefiero usar simbolos :P

attr_accessor(:nombre)
Crea dentro de la clase los metodos de lectura y escritura para la variable nombre
Código:
def nombre
  @nombre
end
def nombre=(val)
  @nombre = val
end

attr_reader(:nombre)
Crea dentro de la clase el metodo de lectura de la variable nombre.
Código:
def nombre
  @nombre
end

attr_writer(:nombre)
Crea dentro de la clase el metodo de escritura de la variable nombre.
Código:
def nombre=(val)
  @nombre = val
end

#4 Re: [XP] Sistema de Reputación by ~Night Shade el Miér Feb 26, 2014 8:34 pm

~Night Shade

avatar
Wooooooooow *_* Eso es justo lo que esperaba!! Un consejo de un scripter experto ^^

Me habia puesto la tarea de reducir el script y hasta ahora solo se me habia ocurrido el uso de arrays, pero valla que tu si sabes reducirlo mucho!! Nunca se me habría ocurrido eso.

Desde que entre a este foro e buscado a alguien que me enseñe o resuelva cuando tenga mis dudas sobre rgss pero orochi no esta y me dijeron que tu tampoco estabas T.T ¿Estaras activo por estos lares?-

Gracias por el consejo!


#5 Re: [XP] Sistema de Reputación by ~Night Shade el Miér Feb 26, 2014 10:48 pm

Ledai

avatar
Sí, si estará; por la cuenta que le trae.... (¬_¬)

XDDD Venga, dí que sí You ^_^!!!!

Ya te comenté que Youkaii es el mejor scripter que conozco, es una suerte contar con él.




Entérate de todas las novedades

youkai

avatar
Pues no, no voy a estar activo...*Leda estalla la cara contra el teclado* (se reproduce animacion de las teclas volando por toda la pantalla) xDDDD

Era broma xD Voy a estar activo por estos dias asi que cualquier consulta me la puedes hacer Ópalo Sonriente
Saludos,
¥oukai

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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