Scrip Inventario

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Scrip Inventario as PDF for free.

More details

  • Words: 896
  • Pages: 5
este debe ser el mejor script que he visto �ltimamente ;) . permite crear una ventana de inventario "pop up" con la que se pueden "usar" objetos sobre los eventos de los mapas sin necesidad de abrir el men� completo. con esto pod�is crear sidequests, hacer que un "experto" examine cada uno de los objetos de vuestro inventario, etc. user posted image ---qu� hay que modificar--------------------------------------------------------------1. a�adid esta nueva clase (field_item) a la lista de clases en el editor de scripts :

#--------------------------------------------------------------# inventario en mapa. autor : rpg #--------------------------------------------------------------class field_item #--------------------------------------------------------------# m�todo y loop principales #--------------------------------------------------------------def main # variable para salir del loop principal @done = false # crea el nuevo objeto ventana @item_window = window_item.new(true) @item_window.refresh # loop principal loop do # actualiza los gr�ficos, las teclas y el propio objeto graphics.update input.update update # rompe el loop si la variable de salida es verdadera - true if @done == true break end end # manda a la porra la ventana @item_window.dispose end #--------------------------------------------------------------# gesti�n de las teclas pulsadas y actualizaci�n #--------------------------------------------------------------def update # llama al m�todo window update @item_window.update # si se pulsa la tecla de cancelar, se sale de la ventana if input.trigger?(input::b) $game_system.se_play($data_system.cancel_se) @done = true return end #si la tecla pulsada era la de aceptar y hay un objeto elegido... if input.trigger?(input::c)

unless @item_window.item.is_a?(rpg::item) or @item_window.item.is_a?(rpg::weapon) or @item_window.item.is_a?(rpg::armor) $game_system.se_play($data_system.buzzer_se) return end # entonces se intenta usarlo al cerrar la ventana con el siguiente m�todo use_item @done = true return end end #--------------------------------------------------------------# cambios que indican que el objeto ha sido usado #--------------------------------------------------------------def use_item # obtiene el id del evento al que est� mirando el jugador x, y, dir = $game_player.x, $game_player.y, $game_player.direction newx = x + (dir == 6 ? 1 : dir == 4 ? -1 : 0) newy = y + (dir == 2 ? 1 : dir == 8 ? -1 : 0) event_id = $game_map.check_event(newx, newy) # comprueba si existe el evento y obtiene el id del mapa if event_id == nil $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) map_id = $game_map.map_id # activa el interruptor local d del evento key = [map_id, event_id, "d"] $game_self_switches[key] = true # guarda el objeto elegido en la variable global $field_item $field_item = @item_window.item # actualiza el mapa $game_map.need_refresh = true end end #-----------2. sustituid el m�todo initialize de la clase window_item por esta versi�n modificada. b�sicamente, esto crea un tercer tipo de formato de ventana de inventario. #------------def initialize(small = false) super(0, 64, 640, 416) @column_max = 2 refresh self.index = 0 # si es el inventario de las batallas if $game_temp.in_battle self.y = 64 self.height = 336 self.back_opacity = 190 end

# si es la ventana de inventario del mapa if small self.y = 320 self.height = 160 self.back_opacity = 190 end end #--------------3. cambiad el m�todo update de la clase scene_map por este. esto sirve para gestionar la correcta aparici�n en pantalla de la ventana. #-------------def update loop do $game_map.update $game_system.map_interpreter.update $game_player.update $game_system.update $game_screen.update unless $game_temp.player_transferring break end transfer_player if $game_temp.transition_processing break end end @spriteset.update @message_window.update if $game_temp.gameover $scene = scene_gameover.new return end if $game_temp.to_title $scene = scene_title.new return end if $game_temp.transition_processing $game_temp.transition_processing = false if $game_temp.transition_name == "" graphics.transition(20) else graphics.transition(40, "graphics/transitions/" + $game_temp.transition_name) end

end if $game_temp.message_window_showing return end if $game_player.encounter_count == 0 and $game_map.encounter_list != [] unless $game_system.map_interpreter.running? or $game_system.encounter_disabled n = rand($game_map.encounter_list.size) troop_id = $game_map.encounter_list[n] if $data_troops[troop_id] != nil $game_temp.battle_calling = true $game_temp.battle_troop_id = troop_id $game_temp.battle_can_escape = true $game_temp.battle_can_lose = false $game_temp.battle_proc = nil end end end if input.trigger?(input::b) unless $game_system.map_interpreter.running? or $game_system.menu_disabled $game_temp.menu_calling = true $game_temp.menu_beep = true end end # verifica que se pulse la tecla shift y llama el inventario del mapa if input.trigger?(input::shift) @field_item = field_item.new @field_item.main end if $debug and input.press?(input::f9) $game_temp.debug_calling = true end unless $game_player.moving? if $game_temp.battle_calling call_battle elsif $game_temp.shop_calling call_shop elsif $game_temp.name_calling call_name elsif $game_temp.menu_calling call_menu elsif $game_temp.save_calling call_save elsif $game_temp.debug_calling call_debug end end end #------------4. por �ltimo, sustituid el m�todo check_event de game_map por este :

#--------------def check_event(x, y) for event in $game_map.events.values if event.x == x and event.y == y return event.id end end # devuelve 'nil' si no existe el evento return nil end #-------------------c�mo se usa------------------------------------------------------------------al pulsar la tecla shift en los mapas, aparecer� la ventana de inventario. cuando el jugador "use" un objeto mirando a evento, se activar� el interruptor local d de dicho evento y se guardar� el objeto en la variable global $field_item. por lo tanto, para que el evento reaccione, solo ten�is que crear la "p�gina de reacci�n" con "interruptor local d activado" como condici�n de p�gina, inicio autom�tico (importante) y con una lista de acciones semejante a esta : (por ejemplo, si usamos el objeto carta con el evento) <>condiciones y efectos : script: $field_item.name == "carta" <>aqu� van las acciones si el objeto entregado es la carta <>excepci�n <>aqu� van las acciones si el objeto entregado no es la carta <>fin <>script : $field_item = nil <>control de interruptor local : d = off como v�is, el formato del script de la condici�n es : $field_item.name == "(nombre del objeto)" es muy importante que volv�is a desactivar el interruptor local y vaciar la variable global (con $field_item = nil) , o si no comenzar�n los problemas :lol: . otro tema, este script no disminuye la cantidad del objeto usado, por lo que si quer�is que el jugador pierda el objeto, deb�is a�adir acciones al evento para ello.

Related Documents

Scrip Inventario
November 2019 17
Inventario
April 2020 20
Inventario..................
December 2019 38
Inventario
June 2020 14
Inventario
June 2020 16
Inventario
May 2020 15