[Tutorial] Como añadir un script en RPG Maker

Estado
Cerrado para nuevas respuestas
OP
Mensajes
194
Reacciones
0
Puntos
0
Yo tuve esta duda hace tiempo,cuando era novato con el maker,no sabia como añadir scripts y mis proyectos siempre quedaban mal.
Asi que me decido a hacer un tutorial completo con imagenes para que la gente aprenda a añadir los scripts mas simples.
Usaremos como ejemplo un script que esta en el indice "Menu de FFVII Personalizado" aportado por Mr.Tsubasa

Esto es el Script
#*********************************************************
#Final Fantasy Personalizado (Autor original: Yo no recordar quien hacer esto)
#*********************************************************
#AVISO: Está configurado para usar faces, si quieres usar el charset
#del personaje, como en toda la vida del RPGXP, lee adelante.
#AVISO 2: Lo hice expresamente para que no aparezca el
#nombre del personaje, porque si es de un sólo
#personaje ya se debe saber cómo se llama, no?


#Si quieres usar faces:
#Crea una nueva carpeta en Characters y llámala Faces
#Para añadir faces, pon una imagen de 80 x 80 pixels en la carpeta Faces y llámala igual que el charaset.
#If text does not appear, right click and select Replace
#Si no quieres caras, ve a la línea 91
#ahí explica lo que tienes que hacer.


#========================================
#■ Window_Base
#--------------------------------------------------------------------------
# Setting functions for the "Base"
#========================================


class Window_Base < Window


def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
end
def draw_actor_battler_graphic(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end


#========================================
#■ Game_Map
#--------------------------------------------------------------------------
# Setting functions for the Map
#========================================
class Game_Map


def name
$map_infos[@map_id]
end
end


#========================================
#■ Window_Title
#--------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end




#========================================================
# ■ Window_MenuStatus
#------------------------------------------------------------------------
# Sets up the Choosing.
#========================================================


class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 435, 135)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Book Antiqua"
self.contents.font.size = 25
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# Drawing Info on Screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 94
y = i * 55
actor = $game_party.actors
#draw_actor_face(actor, 12, y + 90) #Para quitar las faces, pon # al comienzo de esta línea
draw_actor_graphic(actor, 48, y + 65) #y quita el # de ésta línea.
draw_actor_class(actor, x + 80, y) #Para volver a poner faces, pon un # en la linea 92 y quítalo en la 91
draw_actor_level(actor, x, y + 18)
draw_actor_state(actor, x + 200, y)
draw_actor_exp(actor, x+ 144, y + 38)
draw_actor_hp(actor, x, y + 38)
draw_actor_sp(actor, x, y + 58)
end
end
#--------------------------------------------------------------------------
# Update of Cursor
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
end
end
end


#=======================================#
# ■Window_GameStats #
# written by AcedentProne #
#-----------------------------------------------------------------------#


class Window_GameStats < Window_Base
def initialize
super(0, 0, 160, 80)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Book Antiqua"
self.contents.font.size = 20
refresh
end


def refresh
self.contents.clear
self.contents.font.color = system_color
# Draw "Time"
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 6, 120, 32, text, 2)
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 120, 32, "Tiempo")
#Drawing Gold
self.contents.font.color = normal_color
self.contents.draw_text(4, 22, 120, 32,$game_party.gold.to_s + " " +$data_system.words.gold, 2)
self.contents.font.color = system_color
self.contents.draw_text(4, 22, 120, 32, $data_system.words.gold, 2)
end
#--------------------------------------------------------------------------
# Update of The count




#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end


#========================================================
# ■ Window_Mapname
#------------------------------------------------------------------------
#  Draws the Map name
#========================================================


class Window_Mapname < Window_Base
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 320, 60)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = "Book Antiqua"
self.contents.font.size = 25
refresh
end
#--------------------------------------------------------------------------
# Draws info on screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear


# Map Name
#map = $game_map.name
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 220, 32, "Localización")
self.contents.font.color = normal_color
self.contents.draw_text(175, 0, 80, 32, $game_map.name)
end
end


#========================================================
# ■ Scene_Menu
#------------------------------------------------------------------------
# FF7 menu laytout as requested by AcedentProne.
#========================================================


class Scene_Menu
#--------------------------- edit-------------------------------
attr_reader :status_window
#/--------------------------- edit-------------------------------


def initialize(menu_index = 0)
@menu_index = menu_index
end


def main
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Estado"
s5 = "Guardar"
s6 = "Salir"



#--------------------------- edit-------------------------------
# Command menu
# Size = Screen height - border sizes -
# GameStatus menu - Spacing from GameStatus
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,])
@command_window.x = 640 - @command_window.width
@command_window.y = 195
@command_window.z = 110
@command_window.index = @menu_index
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
@map = Window_Mapname.new
@map.x = 640 - @map.width
@map.y = 480 - @map.height - 1
@map.z = 110



# Lower right box
@game_stats_window = Window_GameStats.new
@game_stats_window.x = 480 - @game_stats_window.width
@game_stats_window.y = 640 - @command_window.height - @game_stats_window.height + 3
@game_stats_window.z =110



# Status window
@status_window = Window_MenuStatus.new
@status_window.x = 100
@status_window.y = 3
@status_window.z = 100



Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@game_stats_window.dispose
@status_window.dispose
@map.dispose
end
#--------------------------------------------------------------------
# Updating
#--------------------------------------------------------------------
def update
@command_window.update
@game_stats_window.update
@status_window.update
@map.update
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------
# Updating the Command Selection
#--------------------------------------------------------------------
def update_command
# If B button is pused
if Input.trigger?(Input::B)
# Plays assigned SE
$game_system.se_play($data_system.cancel_se)
# Go to Map
$scene = Scene_Map.new
return
end
# If C button is pused
if Input.trigger?(Input::C)
# Checks actor size
if $game_party.actors.size == 0 and @command_window.index < 4
# plays SE
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
$scene = Scene_Item.new
when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Save.new
when 5
$game_system.se_play($data_system.decision_se)
$scene = Scene_End.new
when 6
$game_system.se_play($data_system.decision_se)# Fonction qui perrmets de jouer le son d'accés au menu.
@checker = 0
@command_window.active = false
@status_window.active = true
@status_window.index = 0
end
return
end
end
#--------------------------------------------------------------------
# Updating Status Screen
#--------------------------------------------------------------------


def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 1
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Skill.new(@status_window.index)
when 2
$game_system.se_play($data_system.decision_se)
$scene = Scene_Equip.new(@status_window.index)
when 3
$game_system.se_play($data_system.decision_se)
$scene = Scene_Status.new(@status_window.index)
when 6
$game_system.se_play($data_system.decision_se)# Fonction qui perrmets de jouer le son d'accés au menu.
if @checker == 0
@changer = $game_party.actors[@status_window.index]
@where = @status_window.index
@checker = 1
else
$game_party.actors[@where] = $game_party.actors[@status_window.index]
$game_party.actors[@status_window.index] = @changer
@checker = 0
@status_window.refresh
end
end
return
end
end
end


Ahora abrimos el RPG MAKER (Yo usare el XP) y presiona la tecla f11 de tu teclado y se abrira el editor de script del RPG Maker.
Cuenta con 2 partes,a la izquierda,una lista con las clases,y a la derecha su contenido (Los scripts)
Aqui lo muestra una imagen:



Bien,ahora bajamos abajo del todo en las clases,y al final del todo encontraremos una clase llamada "Main".
Esto es sencillo,haz clic derecho sobre main y presiona la opcion "Insertar" como se ve en esta imagen:



Ahora aparecera un hueco en blanco encima de Main y la pantalla de contenido tambien saldra en blanco.
Ahora es facil.Seleccionamos el texto del script de arriba y lo copiamos,luego nos vamos a la ventana de contenido en blanco y lo pegamos quedandonos el texto de este post en la ventana en blanco.
Luego si queremos le ponemos nombre al hueco de la clase y le damos a Aplicar y luego a Aceptar,como muestra esta imagen



Ahora su habeis usado este script poned probar el juego (f12) y abrid el menu,si os da error o no os sale como en esta imagen algo habeis hecho mal

Deberia ser ASI:


(Este menu es solo para 1 personaje,si salen mas se deformara)

Con esto me despido,espero que todos los nuevos en el RPG Maker aprendan lo mas basico,si tienen alguna duda podeis
ponerla en este post.

FIN DEL TUTORIAL.
 
Mensajes
39
Reacciones
0
Puntos
0
Ya e repetido esto un monton de veces y siempre me sale un error como este Que debo hacer?

rpgp.png
 
Estado
Cerrado para nuevas respuestas
Arriba Pie