Ir a contenido

0

Un Script del Bien y el Mal


15 las respuestas a este tema

#1 Kal-El1986

    Heroe errante

  • voidzonero
  • 49 Mensajes:
  • Location:Argentina
  • Interests:Maker, Mitos y Leyendas y estudiar en La Facultad.
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Grafismo

Publicado el 06 April 2007 - 04:51 PM

Hola encontre este Script que me parecio interesante pone una barra en el menu indicando lo bueno o malo que es nuestro heroe dependiendo de sus acciones:

CODE
#===================================
#  Leon's Good and Evil script
#----------------------------------------------------------------------
#  Features:
#    Gives an actor the "good", "Neutral" or "evil" alignment, based
#    upon their actions.
#
#  Instructions:
#    Place above main, and below other scripts.
#    Use:  draw_alignment_bar(actor, x, y) in a script to draw the alignment bar.
#             x and y being the position of the bar, and actor being the syntax for the actor's information.
#
#  To use:
#    To add or subtract from their alignment, use: $game_actors[actor_id].alignment += x
#    To see if the actor's alignment is good, evil or neutral, use:
#       * Conditional Branch, tab 4, Script.
#       * For good, use $game_actors[actor_id] > 0
#       * For evil, use $game_actors[actor_id] < 0
#       * For neutral, use $game_actors[actor_id] == 0
#
#  Extra Information:
#    This script edits the original Window_Status script to add the good/evil.
#===================================

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Game_Actor
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Game_Actor < Game_Battler
 
 attr_accessor :alignment
 attr_accessor :alignment_name
 
 alias leon_alignment_bars_ga_setup setup
 
 def setup(actor_id)
   @alignment = 0
   @alignment_name = "Neutral"
   leon_alignment_bars_ga_setup(actor_id)
 end
 
 def alignment
   if @alignment > 0
     if @alignment > 100
       @alignment = 100
     end
     @alignment_name = "Good"
     return @alignment
   end
   if @alignment < 0
     if @alignment < -100
       @alignment = -100
     end
     @alignment_name = "Evil"
     return @alignment
   end
   @alignment_name = "Neutral"
   return @alignment
 end
   

end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Window_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Window_Base
 def draw_bar(x, y, min, max, width = 152, height = 6,
     bar_color = Color.new(0, 75, 0, 255), end_color = Color.new(0, 255, 0, 255))
   for i in 0..height
     self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
   end
   for i in 1..(height - 1)
     r = 100 * (height - i) / height + 0 * i / height
     g = 100 * (height - i) / height + 0 * i / height
     b = 100 * (height - i) / height + 0 * i / height
     a = 255 * (height - i) / height + 255 * i / height
     self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
   end
   for i in 1..( (min.to_f / max.to_f) * width - 1)
     for j in 1..(height - 1)
       r = bar_color.red * (width - i) / width + end_color.red * i / width
       g = bar_color.green * (width - i) / width + end_color.green * i / width
       b = bar_color.blue * (width - i) / width + end_color.blue * i / width
       a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
       self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
     end
   end
 end
 
 def draw_backward_bar(x, y, min, max, width = 152, height = 6,
     bar_color = Color.new(75, 0, 0, 255), end_color = Color.new(255, 0, 0, 255))
   for i in 0..height
     self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
   end
   for i in 1..(height - 1)
     r = 100 * (height - i) / height + 0 * i / height
     g = 100 * (height - i) / height + 0 * i / height
     b = 100 * (height - i) / height + 0 * i / height
     a = 255 * (height - i) / height + 255 * i / height
     self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
   end
   for i in 1..( (min.to_f / max.to_f) * width - 1)
     for j in 1..(height - 1)
       r = bar_color.red * (width - i) / width + end_color.red * i / width
       g = bar_color.green * (width - i) / width + end_color.green * i / width
       b = bar_color.blue * (width - i) / width + end_color.blue * i / width
       a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
       self.contents.fill_rect(x - i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
     end
   end
 end
 
 def draw_alignment_bar(actor, x, y)
   #x = 320 y = 147
   draw_bar(x, y, 0, 200, 200, 6)
   if actor.alignment > 0
     draw_bar(x + 100, y, actor.alignment, 100, 100, 6)
     actor.alignment_name = "Good"
   elsif actor.alignment < 0
     draw_backward_bar(x + 100, y, -1 * actor.alignment, 100, 100, 6)
     actor.alignment_name = "Evil"
   elsif actor.alignment == 0
     draw_bar(x + 100, y, actor.alignment, 100, 100, 6)
     actor.alignment_name = "Neutral"
   end
   draw_bar(x + 97, y - 2, 2, 2, 2, 10, Color.new(255, 255, 255, 255), Color.new(255, 255, 255,255))
   self.contents.font.color = normal_color
   self.contents.draw_text(x + 5, y - 13, 120, 32, "E")
   self.contents.draw_text(x + 190, y - 13, 120, 32, "G")
 end
 
end


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#  Window_Status
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Window_Status < Window_Base
 
 alias leon_alignment_bars_ws_refresh refresh
 
 def refresh
   leon_alignment_bars_ws_refresh
   if @actor.alignment > 100
     @actor.alignment = 100
   elsif @actor.alignment < -100
     @actor.alignment = -100
   end
   self.contents.font.color = system_color
   self.contents.draw_text(320, 112, 120, 32, "Alignment")
   draw_alignment_bar(@actor, 320, 147)
   self.contents.font.color = normal_color
   self.contents.draw_text(420, 112, 120, 32, @actor.alignment_name)
 end
end


Agradecimientos a Leon que es el quien lo posteo.

Editado por xXDarkDragonXx, 06 April 2007 - 05:54 PM.


#2 Zamaroht

    Heroe legendario

  • voidzonero
  • 618 Mensajes:
  • Location:Argentina
  • Interests:Computacion e informatica en general, entre muchas otras.
  • Genero:Chico
  • Nivel maker: Novato
  • Especialidad: Scripting

Publicado el 06 April 2007 - 04:57 PM

Para la proxima usa los tags code, para que no quede tan suelto xD.png
Ya habia visto por algun lado un script parecido, que tambien podia modificar el chara del heroe dependiendo de lo malo o bueno que es, estilo fable.

De todas formas, buen aporte icon13.gif

#3 Nikko

    Caballero

  • voidzonero
  • 241 Mensajes:
  • Location:Somewhere, over the Rainbow...
  • Interests:Muchas cosas para nombrar y tan poco tiempo para hacerlo XD
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Guion

Publicado el 07 April 2007 - 10:07 AM

WTF?????
Ahora me hacen un script para un engine que yo ya había hecho XD
Y yo que me había entusiasmado tanto...
Bueno, qué se le va a hacer...

#4 Saint Punk

    Caballero

  • voidzonero
  • 441 Mensajes:
  • Location:Cyber Asylum
  • Genero:Chico
  • Nivel maker: Guru
  • Especialidad: Musico

Publicado el 07 April 2007 - 04:11 PM

QUOTE
pone una barra en el menu indicando lo bueno o malo que es nuestro heroe dependiendo de sus acciones

como qué acciones?

QUOTE
Ahora me hacen un script para un engine que yo ya había hecho XD

es lo malo de ser enginer, haces un engine que te parece muy bueno e innovador y llega alguien y te opaca con un script xD.png ... me ha pasado muchas veces T.T xD

#5 Kabbul

    Caballero

  • voidzonero
  • 405 Mensajes:
  • Interests:Leer, videojuegos, deportes... vamos, que menos a las drogas duras, le doy a todo.
  • Genero:Chico
  • Nivel maker: Novato
  • Especialidad: Guion

Publicado el 08 April 2007 - 03:57 AM

QUOTE(Saint Punk @ Apr 7 2007, 04:11 PM)
como qué acciones?

Ver mensaje




Es simple Saint,solo en un evento al hacer algo que se considere "malo" pones:

CODE
$game_actors[actor_id] < 0


Y para una buena:

CODE
$game_actors[actor_id] > 0


Y ya cambia y eso,el resto leerse el script.

PD: Buen script,yo lo uso por la simple vagueza de no hacer todo un sistema entero y el como representarla xD

#6 Saint Punk

    Caballero

  • voidzonero
  • 441 Mensajes:
  • Location:Cyber Asylum
  • Genero:Chico
  • Nivel maker: Guru
  • Especialidad: Musico

Publicado el 08 April 2007 - 10:52 AM

ah ok, ya entendi xD

#7 sayonarap

    Paladin

  • voidzonero
  • 161 Mensajes:
  • Interests:Maker y Neverwinter Nights principalmente
  • Genero:Chico
  • Nivel maker: Guru
  • Especialidad: Mapeo

Publicado el 08 April 2007 - 11:04 AM

Se podría ampliar para reproducir el sistema de alineamiento de D&D. Sería interesante cuando menos.
Si tengo tiempo un día de estos lo intento a ver qué sale.




saludos del paranoyas

#8 Fegarur

    Vago

  • Moderador Power!
  • 2,331 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Guion

Publicado el 09 April 2007 - 09:42 AM

Bueno, no veo complicado hacerlo con engine, pero de todas formas es original...
Y lo había visto antes, lo que no recuerdo es si lo traje o no a VZ. Parece que no...

En fin, es bueno. icon13.gif

EDIT:
Encontré una screen que muestra cómo muestra la barra (no es mía):
Spoiler

Editado por Fegarur, 12 April 2007 - 08:16 AM.


#9 666

    Caballero

  • voidzonero
  • 297 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Engines

Publicado el 15 April 2007 - 01:45 PM

Mmmm... por lo que has dicho, es un estilo San Andreas (Ese juego va por estrellas, Hay 6, Si tienes 1 vienen policias, si tienes 2 policias y coches, si tienes 3 vienen policias, coches, elicopteros, si tienes 4 policias coches, elicopteros, y el FBI, si tienes 5, creo que todos los que he dicho, y con 6, vienen los que he dicho, y el ejercito).

Suerte.

#10 Zenón

    Heroe errante

  • Members
  • 64 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Grafismo

Publicado el 16 April 2007 - 09:28 AM

No 666, es un script como diciendo si eres bueno o malo, que no baja metiendote en una casa, XD, ni vienen policias, jajaja, pero si, algo parecido solo que tambien es de bueno, jeje, un problema que tengo, no me es compatible con el menu de FF x-2, no se pero alguien podria ayudarme, ademas, como hago para ver eso de la barra???

DeW icon13.gif

#11 zamorn

    Limo verde

  • Members
  • 8 Mensajes:
  • Genero:Chico
  • Nivel maker: Crack
  • Especialidad: Guion

Publicado el 17 July 2007 - 08:13 AM

QUOTE(Kabbul @ Apr 8 2007, 11:57 AM)
Es simple Saint,solo en un evento al hacer algo que se considere "malo" pones:

CODE
$game_actors[actor_id] < 0


Y para una buena:

CODE
$game_actors[actor_id] > 0


Y ya cambia y eso,el resto leerse el script.

PD: Buen script,yo lo uso por la simple vagueza de no hacer todo un sistema entero y el como representarla xD

Ver mensaje



No es así, eso es para ver si esta por debajo/encima de 0 en la barra de Alignement, por ejemplo en el comando condiciones y efectos, es deicr pones:

CODE
Condiciones y efectos: script:$game_actors[actor_id] < 0
Mostrar mensaje: Eres malo

Por ejemplo.

Pero para añadir se pone en llamar script en un evento:

CODE
$game_actors[1].alignment += 1


y para quitar:

CODE
$game_actors[1].alignment -= 1


donde pone

CODE
$game_actors[1]

sutituye el 1 por la ID del personaje al que le quieras quitar o sumar en la barra.
y donde pone:

CODE
alignment += 1
se cambia el 1 por lo que le quieras quitar/sumar ( si pones 100 le llenas/vacías la barra completa )

Saludos, que os haya servido. cool.gif

Editado por zamorn, 17 July 2007 - 08:14 AM.


#12 Crisser

    Heroe errante

  • voidzonero
  • 53 Mensajes:
  • Genero:Chico
  • Nivel maker: Novato
  • Especialidad: Musico

Publicado el 17 July 2007 - 11:48 AM

Mmm...

¿Se podria modificar para que apareciera en otra parte, no en el menu y para que la barra la hace uno?

:/

#13 zamorn

    Limo verde

  • Members
  • 8 Mensajes:
  • Genero:Chico
  • Nivel maker: Crack
  • Especialidad: Guion

Publicado el 17 July 2007 - 12:45 PM

Para quitarla del menú no sé, pero las instrucciones para ponerla en el mapa viene en el script, aquí:

Pon en un evento llamar script y pones lo siguiente:

draw_alignment_bar(actor, x, y)

donde dice x,y lo borras y pones las coordenadas del mapa que quieras. lo de actor no lo borres eh¡

Saludos, espero haberte ayudado.


#14 Etrn

    Limo verde

  • Members
  • 4 Mensajes:
  • Genero:Chico
  • Nivel maker: Crack
  • Especialidad: Grafismo

Publicado el 17 July 2007 - 07:04 PM

Es una idea, se podria usar este Script, modificandolo como contador estilo FF (Aeris o Tifa) pero para eso se puede hacer una simple variable.

Aunque pensandolo, podria mostrar una barra, por ejemplo para una aventura grafica de citas, y que aparezca segun vayas mejor o peor xD

#15 zamorn

    Limo verde

  • Members
  • 8 Mensajes:
  • Genero:Chico
  • Nivel maker: Crack
  • Especialidad: Guion

Publicado el 18 July 2007 - 02:33 AM

También se podría utilizar para eso.
Lo bueno de este script es que es solamente la barra, si modificas donde pone "Neutral" "God" y "Evil" se podría utlizar para otra cosa, se me ocurren mil maneras de utilizar el script, como por ejemplo, en vez de "Neutral" "Civil", en vez de "God" "Guerrero" y en vez de "Evil" Mercenario, sería una forma de utilizarlo, depués en un evento modificas las variables y los switchs. También serviría para representar la cantidad de algo.No se si me he explicado muy bien, pero bueo.
En cuanto a lo de los contadores claro que podrías utlizarlo.

Saludos y espero haberte ayudado.

#16 JosySasuke

    Heroe errante

  • voidzonero
  • 61 Mensajes:
  • Genero:Chico
  • Nivel maker: Crack
  • Especialidad: Guion

Publicado el 22 July 2007 - 01:52 AM

Si, o si tu juego es un action rpg, depende de que mates (monstruos o ciudadanos) te baje o suma el karma, esa seria la idea de aprovechar el script al tope.
PD: God es dios xD Good es bueno xD.pngD