Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More
Ally

System Mod Oltremondo - Trasferimento PG da un gioco all'altro

Recommended Posts

Nome Script: Oltremondo - Trasferimento PG da un gioco all'altro
Versione: 1.0
Autore/i: Melosx

Informazioni:
Lo script permette il trasferimento di un pg tra giochi... Leggete le info nello script

Istruzioni:
Nello script.
Strutturate l'evento come nella demo(ovviamente per quanto riguarda i call script... gli orpelli grafici potete anche toglierli).
C'è gia un pg ijmoortato nella cartella ISK/Oltremondo. Nella demo cliccate sulla fatina e importatelo. Andate nel menu e godetevelo.

Script:

#=============================================================================
# Oltremondo
#=============================================================================
# Autore:   Melosx
# Versione: 1.0
# Data di creazione: 18-5-2011 => Inizio lavori
#                    20-5-2011 => v. 0.8
#                     1-6-2011 => v. 0.9 => v. 1.0
#
# Feature: (con * le non funzionanti al momento)
#  - Importazione nome
#  - Importazione classe
#  - Importazione livello (Funzionante in 0.9)
#  - Importazione valori PV e PM
#  - Importazione parametri(ATT, DEF, SPI, VEL)
#  - Importazione armi e armature (Funzionante in 1.0)
#  - Importazione grafica (Face e Chara) - Facoltativo - (Funzionante in 0.9)
#=============================================================================
=begin
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|

  Benvenuti nell'Oltremondo.
  Lo script permette di trasferire i dati di un pg, su un file, da un gioco in
  modo da ricrearlo tale e quale in un altro gioco.


  C'è, al momento, un solo requisito per il trasferimento del pg.
  Il nome del file deve essere impostato, tramite il modulo di configurazione,
  allo stesso modo nei due giochi. In caso non fosse così il trasferimewnto non
  avverrebbe.
  Il consiglio che vi do è quello di strutturare l'evento per l'importazione
  del pg come quello di questa demo, così non incorrerete al blocco del gioco.

  Per configurare agite sul modulo di configurazione.

  Per poter importare un pg avrete bisogno di creare un eroe (anche vuoto).
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|

=end

#==============================================================================
# ** Modulo OM
#------------------------------------------------------------------------------
#  Modulo di configurazione dell'Oltremondo
#==============================================================================


module OM

  PERC = "ISK/Oltremondo/"  #Percorso di caricamento del file.

#------------------------------------------------------------------------------
# ** Scrittura nome
# VERSIONE => Versione di gioco.
# NOME => Nome del file.
# EXT => Estensione del file.
#------------------------------------------------------------------------------

  VERSIONE = 1.0
  NOME = " - Oltremondo_Demo_PG"
  EXT = ".isk"

#------------------------------------------------------------------------------
# ** FINE Scrittura nome
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# ** Configurazione ID
# ID_PGE => ID del personaggio da esportare.
# ID_PGI => ID del personaggio che verrà sovrascritto dall'importazione.
#------------------------------------------------------------------------------

  ID_PGE = 1
  ID_PGI = 2

#------------------------------------------------------------------------------
# ** FINE Configurazione ID
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# ** Configurazione GRAFICA
# #true/false => attiva/disattiva l'esportazione e l'importazione della grafica
#                dell'eroe (Face e Chara).
#------------------------------------------------------------------------------

  GRAFICA = true

#------------------------------------------------------------------------------
# ** FINE Configurazione GRAFICA
#------------------------------------------------------------------------------

#==============================================================================
# *** Note:
# Anche se può sembrare inutile indicare la versione del gioco è bene farlo
# nel caso in qui si usi un Patch System. Ciò evita il caricamento di un pg
# creato con una versione diversa e quindi evita eventuali bug.
# Qualora quindi si usa un Patch System cambiate ad ogni patch, che coinvolge i
# pg, la versione e distribuite insieme alla patch il file Script.rvdata in
# modo da aggiornare il gioco con la modifica alla versione.
#==============================================================================
end


#=============================================================================
# Oltremondo_Crea => Crea il file
#=============================================================================

class Oltremondo_Crea < Scene_Base
  include OM

  def initialize
    crea_variabili
  end

  def crea_variabili

      actor = $game_actors.[](OM::ID_PGE)

      @aname = actor.name
      @aliv = actor.level
      @aclasse = actor.class_id
      @ahp = actor.hp
      @amp = actor.mp
      @ahpm = actor.maxhp
      @ampm = actor.maxmp
      @[member=AEXPATTSKEFOKE] = actor.exp
      @[member=awhsmyyhk] = actor.weapon_id
      @aa1 = actor.armor1_id
      @aa2 = actor.armor2_id
      @aa3 = actor.armor3_id
      @aa4 = actor.armor4_id
      @aatk = actor.atk
      @adef = actor.def
      @aspi = actor.spi
      @aagi = actor.agi
    if OM::GRAFICA == true
      @afacen = actor.face_name
      @afaceidx = actor.face_index
      @achn = actor.character_name
      @achidx = actor.character_index
    end
    scrivi
  end


  def scrivi

    file = File.open(OM::VERSIONE.to_s + OM::NOME + OM::EXT, "w")

        Marshal.dump(@aname,          file)
        Marshal.dump(@aliv,           file)
        Marshal.dump(@aclasse,        file)
        Marshal.dump(@ahp,            file)
        Marshal.dump(@amp,            file)
        Marshal.dump(@ahpm,           file)
        Marshal.dump(@ampm,           file)
        Marshal.dump(@[member=AEXPATTSKEFOKE],           file)
        Marshal.dump(@[member=awhsmyyhk],             file)
        Marshal.dump(@aa1,            file)
        Marshal.dump(@aa2,            file)
        Marshal.dump(@aa3,            file)
        Marshal.dump(@aa4,            file)
        Marshal.dump(@aatk,           file)
        Marshal.dump(@adef,           file)
        Marshal.dump(@aspi,           file)
        Marshal.dump(@aagi,           file)
      if OM::GRAFICA == true
        Marshal.dump(@afacen,         file)
        Marshal.dump(@afaceidx,       file)
        Marshal.dump(@achn,           file)
        Marshal.dump(@achidx,         file)
      end
  end
end


#=============================================================================
# Oltremondo_Carica => Carica il pg dal file
#=============================================================================

class Oltremondo_Carica < Scene_Base
  include OM

  def initialize
    carica
  end

  def carica
    file = File.open(OM::PERC + OM::VERSIONE.to_s + OM::NOME + OM::EXT, "r")

      @aname =             Marshal.load(file)
      @aliv =              Marshal.load(file)
      @aclasse =           Marshal.load(file)
      @ahp =               Marshal.load(file)
      @amp =               Marshal.load(file)
      @ahpm =              Marshal.load(file)
      @ampm =              Marshal.load(file)
      @[member=AEXPATTSKEFOKE] =              Marshal.load(file)
      @[member=awhsmyyhk] =                Marshal.load(file)
      @aa1 =               Marshal.load(file)
      @aa2 =               Marshal.load(file)
      @aa3 =               Marshal.load(file)
      @aa4 =               Marshal.load(file)
      @aatk =              Marshal.load(file)
      @adef =              Marshal.load(file)
      @aspi =              Marshal.load(file)
      @aagi =              Marshal.load(file)
    if OM::GRAFICA == true
      @afacen =            Marshal.load(file)
      @afaceidx =          Marshal.load(file)
      @achn =              Marshal.load(file)
      @achidx =            Marshal.load(file)
    end
    genera_pg
  end

  def genera_pg

    $game_party.add_actor(OM::ID_PGI)
    actor = $game_actors.[](OM::ID_PGI)

      actor.name              = @aname
      actor.change_level(@aliv, false)
      actor.class_id          = @aclasse
      actor.hp                = @ahp
      actor.mp                = @amp
      actor.maxhp             = @ahpm
      actor.maxmp             = @ampm
      actor.change_equip_by_id(0, @[member=awhsmyyhk], true)
      actor.change_equip_by_id(1, @aa1, true)
      actor.change_equip_by_id(2, @aa2, true)
      actor.change_equip_by_id(3, @aa3, true)
      actor.change_equip_by_id(4, @aa4, true)
      actor.atk               = @aatk
      actor.def               = @adef
      actor.spi               = @aspi
      actor.agi               = @aagi
      actor.set_graphic(@achn, @achidx, @afacen, @afaceidx) if OM::GRAFICA == true
  end

end
Demo:
http://www.mediafire.com/?22dudydoxn2ldoc

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • Contenuti simili

    • Da Ally
      Nome Script: H.U.T.O. MMO System por Tomoaky
      Versione:
      Autore/i: Tomoaky, hikimoki
       
      Informazioni:
      Un sistema completo per creare un progetto in pieno stile MMO, dove il movimento è con il mouse e la battaglia è in gruppo.
      Che cosa contiene?
       
      Features:
      - Mini-mappa con caratteristiche realistiche della mappa.
      - Sistema di Battaglia con la partecipazione attiva del party.
      - Sistema di full-pixel: Camminata, Attacco, Abilità, e altre cose che devono essere ancora scoperte nella demo
      - Sistema di tempo con orari diurni e serali giusto.
      - Tempo di sistema. (Climi)
       
      (La demo è ancora in fase di test, quindi verranno aggiunte altre features con il progredire dei test)
       
      Screenshots:

       
      Istruzioni:
      Istruzioni e script, all'interno della demo.
       
      Demo:
      http://hikimoki.sakura.ne.jp/zip/hutommo_ace.zip
    • Da Ally
      Nome Script: Permanent Switches & Variables
      Versione: 1.2
      Autore/i: mikb89
       
      Informazioni:
      Con questo script potrete far sì che i valori di determinate switch e variabili vengano memorizzati in modo da restare tali in nuova partita e caricamento.
      Utile per esempio se si vuole aggiungere un Nuovo gioco +, cambiando una switch appena finito il gioco, oppure un sistema di punteggio alto tramite variabile o magari per memorizzare delle opzioni.
       
      Features:
      Si possono utilizzare sia singoli elementi che range multipli rapidamente.
      È possibile scegliere un nominativo personalizzato per i dati.
       
      Istruzioni:
      Creare una nuova voce sopra Main ed inserire lo script.
      Nel caso di incompatibilità, provare a spostarla più in alto.
       
      Script
       
      Incompatibilità:
      N/A
    • Da Ally
      Nome Script: ReMapped Keys
      Versione: 1.0
      Autore/i: mikb89
       
      Informazioni:
      Con questo script potrete riassegnare i tasti standard. Se ad esempio voleste usare Invio sia per interagire che per correre, basta rimappare il tasto Shift (:A) con quello di Invio (:C). Giusto un esempio.
      Lo script è comunque stato inizialmente creato per un cabinato che supportava solo determinati tasti: combinando questo script con uno di tastiera estesa è stato possibile far funzionare il gioco.
       
      Istruzioni:
      Creare una nuova voce sopra Main ed inserire lo script.
      Nel caso di incompatibilità, provare a spostarla più in alto.
       
      Script
       
      Incompatibilità:
      Ricordatevi di usare uno script per la tastiera estesa separato se le vostre intenzioni sono quelle di usare tasti non standard.
       
      Note dell'autore:
      Script creato per una richiesta di syntonia;
      Ringrazio per il suo script di tastiera estesa che ho usato come esempio.
    • Da Ally
      Nome Script: Independent Player Actor
      Versione: 1.4
      Autore/i: mikb89

      Informazioni:
      Questo script nasce da una richiesta di , fatta in questo topic.
      Pensato per giochi tipo Pokémon, questo script consente di avere un 'leader' (visibile come primo personaggio nel caterpillar e come nome team in battaglia: "Il gruppo di X ha ottenuto punti exp...") che non è parte del gruppo vero e proprio.

      Features:
      L'unica impostazione presente nello script è il numero di una variabile.
      Cambiandone poi il valore potrete:
      disattivare lo script se questo è minore di 1; selezionare l'eroe leader dal database impostando la variabile al suo ID; attivare e disattivare lo script quindi semplicemente moltiplicando la variabile per -1.
      Istruzioni:
      Inserire lo script sotto Materials/Materiali/Modules/Moduli (a seconda della traduzione che avete) ma sopra Main.

      Script

      Demo:
      Demo multilingua v 1.4
      Mediafire, zip di 1.32MB

      Incompatibilità:
      Se non aggiungete nessuno al party, anche se il leader è impostato, non potrete comunque accedere ai vari menu Oggetti, Skill, Equip, Status.

      Note dell'autore:
      per aver richiesto lo script;
      SowS per l'idea originale.

      Pareri in evidenza:
    • Da Ally
      Nome Script: Keyboard Input
      Versione: 3.0
      Autore/i: Keroro
       
      Informazioni:
      Porting per VX-ACE dello script YEM Keyboard Script per VX.
      Rimpiazza lo Scene_Name facendo inserire direttamente da tastiera.
      TODO: Gestire la punteggiatura
       
      Istruzioni:
      Creare una nuova tab sotto Materials e incollare lo script.
      Oltre a modificare lo Scene_Name modifica la classe Input consentendo,
      al programmatore volenteroso di utilizzare tutti le lettere e i numeri tramite sintassi:
       
      if Input.press(:VK_A)
      #se premo la lettera a
      end
      if Input.press(:NUM5) or Input.press(:PAD5)
      #se premo il numero 5 sulla tastiera o sul numpad
      end
       
      Script:
       
       
      #===============================================================================# Keyboard Input - Porting to VX-ACE# By Keroro - [email protected]# Version 3.0# Last Date Updated. 2012.03.17#===============================================================================## OriginalWij and Yanfly Collaboration - Keyboard Input# Last Date Updated: 2010.06.12# Level: Normal## This is a utility script that provides the functionality to return inputs# from the keyboard as well as free up more keys to be used in the Input module.# This script will also replace Scene_Name and allow for direct keyboard input# to type in an actor's name as well as fix the maximum characters shown from# the default base script.##===============================================================================$imported = {} if $imported == nil$imported["KeyboardInput"] = trueclass << Input #-------------------------------------------------------------------------- # Aliases (Mods - Linked to Module) - Created by OriginalWij #-------------------------------------------------------------------------- alias ow_dt_i_press press? unless $@ alias ow_dt_i_trigger trigger? unless $@ alias ow_dt_i_repeat repeat? unless $@ alias ow_dt_i_update update unless $@endmodule Input #-------------------------------------------------------------------------- # constants - Created by OriginalWij and Yanfly and Keroro #-------------------------------------------------------------------------- VALUES = {} VALUES[:VK_A] = 65; VALUES[:VK_B] = 66; VALUES[:VK_C] = 67; VALUES[:VK_D] = 68; VALUES[:VK_E] = 69; VALUES[:VK_F] = 70; VALUES[:VK_G] = 71; VALUES[:VK_H] = 72; VALUES[:VK_I] = 73; VALUES[:VK_J] = 74; VALUES[:VK_K] = 75; VALUES[:VK_L] = 76 VALUES[:VK_M] = 77; VALUES[:VK_N] = 78; VALUES[:VK_O] = 79; VALUES[:VK_P] = 80; VALUES[:VK_Q] = 81; VALUES[:VK_R] = 82; VALUES[:VK_S] = 83; VALUES[:VK_T] = 84; VALUES[:VK_U] = 85; VALUES[:VK_V] = 86; VALUES[:VK_W] = 87; VALUES[:VK_X] = 88 VALUES[:VK_Y] = 89; VALUES[:VK_Z] = 90; LETTERS = [:VK_A,:VK_B,:VK_C,:VK_D,:VK_E,:VK_F,:VK_G,:VK_H,:VK_I,:VK_J, :VK_K,:VK_L,:VK_M,:VK_N,:VK_O,:VK_P,:VK_Q,:VK_R,:VK_S,:VK_T, :VK_U,:VK_V,:VK_W,:VK_X,:VK_Y,:VK_Z] VALUES[:NUM0] = 48; VALUES[:NUM1] = 49; VALUES[:NUM2] = 50; VALUES[:NUM3] = 51; VALUES[:NUM4] = 52; VALUES[:NUM5] = 53; VALUES[:NUM6] = 54; VALUES[:NUM7] = 55; VALUES[:NUM8] = 56; VALUES[:NUM9] = 57; VALUES[:PAD0] = 96; VALUES[:PAD1] = 97; VALUES[:PAD2] = 98; VALUES[:PAD3] = 99; VALUES[:PAD4] = 100; VALUES[:PAD5] = 101; VALUES[:PAD6] = 102; VALUES[:PAD7] = 103; VALUES[:PAD8] = 104; VALUES[:PAD9] = 105; NUMBERS = [:NUM0,:NUM1,:NUM2,:NUM3,:NUM4,:NUM5,:NUM6,:NUM7,:NUM8,:NUM9] NUMPAD = [:PAD0,:PAD1,:PAD2,:PAD3,:PAD4,:PAD5,:PAD6,:PAD7,:PAD8,:PAD9] VALUES[:ENTER] = 13; VALUES[:SPACE] = 32; VALUES[:ESC] = 27; VALUES[:BACK] = 8; VALUES[:PGUP] = 33; VALUES[:PGDN] = 34; VALUES[:CAPS] = 20;#TODO: aggiungere tags per punteggiatura #-------------------------------------------------------------------------- # initial module settings - Created by OriginalWij and Yanfly #-------------------------------------------------------------------------- GetKeyState = Win32API.new("user32", "GetAsyncKeyState", "i", "i") GetCapState = Win32API.new("user32", "GetKeyState", "i", "i") KeyRepeatCounter = {} module_function #-------------------------------------------------------------------------- # alias method: update - Created by OriginalWij and Keroro #-------------------------------------------------------------------------- def update ow_dt_i_update for key in KeyRepeatCounter.keys if (GetKeyState.call(VALUES[key]).abs & 0x8000 == 0x8000) KeyRepeatCounter[key] += 1 else KeyRepeatCounter.delete(key) end end end #-------------------------------------------------------------------------- # alias method: press? - Created by OriginalWij and Keroro #-------------------------------------------------------------------------- def press?(key) return ow_dt_i_press(key) if !VALUES.has_key?(key) return true unless KeyRepeatCounter[key].nil? return key_pressed?(key) end #-------------------------------------------------------------------------- # alias method: trigger? - Created by OriginalWij and Keroro #-------------------------------------------------------------------------- def trigger?(key) return ow_dt_i_trigger(key) if !VALUES.has_key?(key) count = KeyRepeatCounter[key] return ((count == 0) or (count.nil? ? key_pressed?(key) : false)) end #-------------------------------------------------------------------------- # alias method: repeat? - Created by OriginalWij and Keroro #-------------------------------------------------------------------------- def repeat?(key) return ow_dt_i_trigger(key) if !VALUES.has_key?(key) count = KeyRepeatCounter[key] return true if count == 0 if count.nil? return key_pressed?(key) else return (count >= 23 and (count - 23) % 6 == 0) end end #-------------------------------------------------------------------------- # new method: key_pressed? - Created by OriginalWij and Keroro #-------------------------------------------------------------------------- def key_pressed?(key) if (GetKeyState.call(VALUES[key]).abs & 0x8000 == 0x8000) KeyRepeatCounter[key] = 0 return true end return false end #-------------------------------------------------------------------------- # new method: typing? - Created by Yanfly and Keroro #-------------------------------------------------------------------------- def typing? return true if repeat?(:SPACE) for key in LETTERS return true if repeat?(key) end for key in NUMBERS return true if repeat?(key) end return false end #-------------------------------------------------------------------------- # new method: key_type - Created by Yanfly and Keroro #-------------------------------------------------------------------------- def key_type return " " if repeat?(:SPACE) for key in LETTERS next unless repeat?(key) return upcase? ? key.to_s[3].upcase : key.to_s[3].downcase end for key in NUMBERS return key.to_s[3] if repeat?(key) end for key in NUMPADS return key.to_s[3] if repeat?(key) end return "" end #-------------------------------------------------------------------------- # new method: upcase? - Created by Yanfly #-------------------------------------------------------------------------- def upcase? return !press?(:SHIFT) if GetCapState.call(VALUES[:CAPS]) == 1 return true if press?(:SHIFT) return false endend #Input#===============================================================================# Window_NameEdit#===============================================================================class Window_NameEdit < Window_Base #-------------------------------------------------------------------------- # overwrite method: initialize #-------------------------------------------------------------------------- def initialize(actor, max_char) dw = Graphics.width - 176 dy = (Graphics.height - 128) / 2 if $game_message.visible difference = Graphics.height - 128 case $game_message.position when 0; dy += 64 when 1; dy += 0 when 2; dy -= 64 end end super(88, dy, dw, 128) @actor = actor @name = actor.name @max_char = max_char name_array = @name.split(//)[0...@max_char] @name = "" for i in 0...name_array.size @name += name_array[i] end @default_name = @name @index = name_array.size self.active = false refresh end #-------------------------------------------------------------------------- # overwrite method: item_rect #-------------------------------------------------------------------------- def item_rect(index) if index == @max_char rect = Rect.new(0, 0, 0, 0) else rect = Rect.new(0, 0, 0, 0) rect.x = 112 + index * 12 rect.y = 36 rect.width = 24 rect.height = line_height end return rect endend # Window_NameEdit#===============================================================================# Scene_Base#===============================================================================class Scene_Base #-------------------------------------------------------------------------- # new method: name_entry #-------------------------------------------------------------------------- def name_entry(actor_id, max_char) @name_actor_id = actor_id @name_entry_max = max_char start_name_entry end_name_entry end #-------------------------------------------------------------------------- # new method: start_name_entry #-------------------------------------------------------------------------- def start_name_entry Graphics.freeze actor = $game_actors[@name_actor_id] @edit_window = Window_NameEdit.new(actor, @name_entry_max) Graphics.transition(10) loop do update_name_entry if Input.repeat?(:BACK) and @edit_window.index > 0 Sound.play_cancel @edit_window.back elsif Input.typing? and @edit_window.index != @edit_window.max_char Sound.play_cursor @edit_window.add(Input.key_type) elsif Input.trigger?(:ENTER) Sound.play_ok actor.name = @edit_window.name break elsif Input.trigger?(:ESC) Sound.play_cancel break end end end #-------------------------------------------------------------------------- # new method: update_name_entry #-------------------------------------------------------------------------- def update_name_entry Graphics.update Input.update if SceneManager.scene.is_a?(Scene_Map) $game_map.update @spriteset.update elsif SceneManager.scene.is_a?(Scene_Battle) Graphics.update Input.update $game_system.update $game_troop.update @spriteset.update @message_window.update end @edit_window.update end #-------------------------------------------------------------------------- # end_name_entry #-------------------------------------------------------------------------- def end_name_entry @edit_window.dispose @edit_window = nil @name_actor_id = nil @name_entry_max = nil endend # Scene_Base#===============================================================================# Game_Interpreter#===============================================================================class Game_Interpreter #-------------------------------------------------------------------------- # overwrite method: command_303 (Name Input Processing) #-------------------------------------------------------------------------- def command_303 if $data_actors[@params[0]] != nil SceneManager.scene.name_entry(@params[0], @params[1]) end @index += 1 return false endend # Game_Interpreter Incompatibilità:Nessuna incompatibilità
       
      Note dell'Autore:
      In modalità finestra il mouse compare e scompare, a schermo intero invece resta nascosto.
×