Jump to content
Rpg²S Forum

lzol

Utenti
  • Posts

    74
  • Joined

  • Last visited

Posts posted by lzol

  1. Buonasera, come da titolo, sto modificando la windowskin di base di rpg maker mv, ho un paio di piccoli intoppi, finora ho fatto questo:

     

    http://i66.tinypic.com/2jb1rit.png

     

    Il problema ora è riempire la skin, poiché il bordo frastagliato che vedete in alto a destra è riuscito, ma il risultato è questo

     

    http://i64.tinypic.com/b4jmom.png

     

    Come posso riempire la parte trasparente della windowskin? Grazie.

     

    EDIT: Ho provato ad usare il Yanfly Engine Core e settare il campo 'Window Opacity' a 255 ma niente.

  2. Ciao a tutti, qualcuno sa come poter dare un tocco di personalizzazione al menu e alle window in generale? Sono prossimo a rilasciare una breve demo e mentre la realizzazione generale mi soddisfa abbastanza, la windowskin è l'unica cosa che non ho toccato e mi sembra piuttosto scialba e poco coerente. Grazie.

  3. La trama sembra piuttosto carina e fa venire molta curiosità! xD

    riguardo ai personaggi, mi ha fatto un po' strano leggere, riguardo a Main, timido ed introverso e dal carattere tagliente e sarcastico perchè in genere sono abituato al fatto che, se uno è timido ed introverso, in genere viene fatto anche gentile, però vabè, può essere interessante anche così, anzi forse è più originale.

     

    Sì, è il tipo di personaggio molto selettivo nelle amicizie, un po' restìo allo "stare in gruppo", un po' fuori moda, un po' fuori tutto, anche a causa del carattere "difensivo" che si esprime

    attraverso il sarcasmo.

     

    Un buon inizio. A quando una demo ?

     

    In questo fine settimana farò gli ultimi test :D

     

    Ci tenevo a ringraziare anche gli altri per l'interesse (soprattutto Guardian che ogni anno viene a commentare lo stesso progetto su tool diversi che puntualmente non finisce mai :D);

    aggiornamenti a breve ;)

     

    EDIT: aggiunta la schermata del titolo tra gli screenshot e alcuni dettagli riguardo il gameplay.

  4. http://i68.tinypic.com/24eb30o.png

    presenta

    http://i63.tinypic.com/ohvgup.png

    Introduzione

    E dopo qualche anno ritorno qui, con l'ennesimo tentativo di portare avanti questo progetto, dopo le fallimentari esperienze con XP e VX. MV mi ha concesso una personalizzazione più intuitiva e poi c'è javascript che preferisco molto al ruby; ho molto apprezzato la facilità di implementazione dei plugin. La storia è stata concepita diversi anni fa, ma essendo ancora alle prime armi potete intuire che è stato un continuo cancella-e-riscrivi; il capriccio del basarsi su persone reali, conoscenti e amici ha fatto via via spazio ad

    una reinterpretazione più distaccata (anche se non nego di aver comunque preso ispirazione da alcuni personaggi "reali"); è la prima volta in cui credo

    di riuscire a pubblicare una demo giocabile in tempi brevi; ma ora veniamo al sodo (Inoltre vorrei chiedere gentilmente all'admin di cambiare il titolo del topic, se possibile, visto che ho cambiato il titolo del gioco).

     

    Trama

    Cinque anni prima degli eventi narrati, il nonno del nostro protagonista, Victor Wyte, scompare in circostanze misteriose, a detta di qualcuno a causa di alcuni

    terribili segreti riguardo le Forze Primordiali, ossia gli elementi che hanno dato inizio all'universo conosciuto: il Flusso Cremisi (Crimson Stream) controlla il
    continuum spazio-temporale e le abilità intellettive di un individuo, il Flussoscuro (Black Stream) controlla tutti gli elementi esistenti e le abilità fisiche. Victor avrebbe
    scoperto la struttura primordiale appena trentenne ma aveva anche sentenziato che nessun essere umano comune avrebbe mai potuto controllare un potere
    così grande.
    Nella (solitamente) tranquilla cittadina di Bosko, due sette segrete, di cui una fortemente in combutta con il governo, studiano le proprietà di queste Forze grazie ad alcuni appunti rinvenuti dopo la scomparsa di Victor; la chiave dei misteri relativi potrebbe celarsi nei due nipoti di quest'ultimo, che per qualche motivo (che verrà poi spiegato nel gioco) possiedono una struttura genetica compatibile.
    Personaggi (Ad ora...)
    Main: Protagonista del gioco (ma và? Main...), il nome potrebbe essere fisso o scelto dal giocatore, devo ancora decidere. Ragazzo di 16 anni, timido ed introverso e dal carattere tagliente e sarcastico; è iscritto al campus di Bosko assieme ai suoi amici e suo fratello minore ed è l'unico in tutto il campus ad indossare la misteriosa uniforme nera. Main può controllare il Crimson Stream, cosa che gli permette di massimizzare le proprie facoltà intellettive e, più in là, di manipolare lo spazio-tempo.
    Janky: Cugino di Main, è la sua perfetta antitesi: bello, ricco ed è conosciuto in tutto il campus; ha un carattere estremamente arrogante e altezzoso ma, a dispetto
    delle apparenze, è anche una persona molto astuta. Può controllare il Black Stream, che gli concede una forza sovrumana e la capacità di manipolare gli elementi.
    Blaze e Josef: Amici di Main, coppia inseparabile, accomunati anche dall'antipatia verso Janky. Blaze ha sempre la testa fra le nuvole e raramente presta attenzione
    a quello che gli si dice; Josef ha invece un carattere polemico e coglie ogni occasione per esprimere ciò che pensa e contraddire il punto di vista degli altri. Entrambi
    hanno due dipendenze molto particolari: Blaze è un fumatore accanito, ma fa della sua dipendenza la sua arma migliore; Josef è un alcolista e, col passare degli anni, non accusa più alcun effetto dovuto agli alcolici.
    Mary: Amica di Main, Josef e Blaze; gentile e disponibile, ha un atteggiamento molto protettivo nei confronti di Main, in quanto crede che Janky lo condizioni negativamente e fa di tutto per far sì che il nostro protagonista decida per sé.
    Dani: Fratello minore di Main, provocatorio e arrogante ma molto spigliato e intelligente; anche lui, tanto per cambiare, ritiene Janky un poco di buono.
    Alex: Diminutivo di Alexandra; ragazza introversa e misteriosa, ancora non si sa quale sia il suo ruolo in questa faccenda.
    http://i67.tinypic.com/5wzcyr.png
    Da sinistra a destra e dall'alto verso il basso:
    Blaze, Josef, Dani, Main, Padre John (parroco), Janky, Mary
    Gameplay
    Sarà possibile spostarsi in ogni zona di Bosko attraverso una "World Map", Bosko comprenderà un'area commerciale, dove sarà possibile acquistare oggetti, armi e vestiario; il centro abitato dove di notte sarà possibile attivare missioni di "furto", che permettono di entrare in possesso di oggetti molto utili; sobborgo, ospedale e fabbrica dove, oltre
    agli eventi di storyline sarà possibile accedere ad altre missioni secondarie; ovviamente ci sarà anche il campus.
    Le battaglie seguiranno il classico side-view e tra i nemici vi saranno i classici bulletti che cercheranno di svuotarvi il portafoglio, i secchioni che vi annoieranno con le
    loro prediche, i vari scagnozzi delle organizzazioni che vi daranno la caccia e anche "fauna locale" (topi, pantegane, ci siamo capiti...); più qualche altro soggetto
    stereotipato.
    Qui c'è da ridere. Premessa: amo la serie Persona e devo ammettere che ho tratto molta ispirazione dal terzo capitolo; tra le caratteristiche legate al suddetto titolo abbiamo:
    * La possibilità di seguire le lezioni tenute nel campus che possono aumentare uno o più parametri;
    * La possibilità di prendere parte a progetti extrascolastici;
    * Il Social Rank (ribattezzato brutalmente Friend Rate) che stabilisce il "grado di amicizia" con un personaggio; permette di potenziare gli attacchi e di sbloccare abilità uniche o temporanee. Per aumentare il Friend Rate di un personaggio bisogna completare missioni secondarie/trascorrere del tempo con lui.
    La vita al campus, per ora, in sostanza funziona così: la giornata è divisa in tre momenti
    Mattina: si possono seguire le lezioni oppure completare alcune missioni secondarie;
    Pomeriggio: riservato al Friend Rate, è possibile trascorrere del tempo (brevissime cutscene in fermo immagine, almeno per ora) con uno dei personaggi disponibili;
    Sera: è possibile reclutare tutti i personaggi a disposizione e livellarli (se avete giocato a Persona 3, consideratela come una specie di Dark Hour).
    Ogni volta che si segue una lezione, si svolge una missione secondaria, si aumenta il friend rate o ci si allena, si passa al momento successivo della giornata. Di sera possono essere disponibili ulteriori quest secondarie oppure basta mandare il pg a letto per passare al giorno successivo. Non c'è bisogno che vi dica che potete anche ignorare tutto e tutti e andare a letto per far trascorrere velocemente i momenti di giornata (è pressoché inutile, ma potreste voler accedere alle missioni "serali" e saltare lezioni, friend rate, ecc.).
    Tutto ciò non intaccherà le missioni principali che, proprio come le quest secondarie, saranno disponibili in determinati momenti della giornata e sarà possibile attivarle cliccando,
    parlando o recandosi in un certo luogo.
    Altre simpatiche aggiunte riguardano le abilità:
    * Josef può sfruttare la sua passione per l'alcol: lo status Ebbrezza altera determinati parametri e permette di utilizzare delle abilità esclusive. Ovviamente bisogna essere in possesso della "materia prima";
    * Blaze fuma erba e il discorso per lo status Assuefazione è simile a quello di Ebbrezza; alterazione dei parametri, abilità esclusive e necessità degli oggetti giusti.
    * Altre abilità sono state concepite tramite le custom formulas: alcune sono utilizzabili solo se si verificano certe condizioni, altre infliggono danno utilizzando parametri
    differenti e altre possono ignorare la difesa dei nemici; tutto questo oltre alle classiche "Furto" ecc.
    Alcuni oggetti possono essere utilizzati solo da determinati membri: ogni personaggio utilizza un tipo differente di armi, Josef è invece specializzato nell'uso degli
    esplosivi;
    Infine anche gli oggetti curativi hanno diversi effetti a seconda del personaggio su cui sono utilizzati.
    Crediti
    Yanfly, che un petosecondo dopo l'uscita dell'mv ha rilasciato il Battle Core;
    Kaimen per alcune soundtracks, anche se non so se saranno definitive;
    Kas per l'Ultimate Overlay;
    Galv per il MessageSoundEffects;
    chiunque abbia scritto il plugin BattleWeatherEffect;
    Screenshot ("Lo schermo ha sparato"(cit.))

    Schermata titolo
    http://i64.tinypic.com/2nv4dp5.png
    Arboreto
    http://i66.tinypic.com/15xtyeg.png
    Ingresso del Campus
    http://i67.tinypic.com/detkrq.png
    Dormitorio
    http://i64.tinypic.com/2a0fjoh.png
    Layout del BS di Moghunter
    http://i68.tinypic.com/s13jlt.jpg

    Link alla demo giocabile
  5. Salve a tutti, come da titolo, mi chiedevo se fosse possibile fare una cosa del genere: all'inizio ci sono determinati mostri in cui ci si imbatte nella mappa; a seguito di

    un evento, se ne aggiungono altri (ES. all'inizio incontro solo ratti e pipistrelli, una volta sconfitti alcuni membri di una gang, i vari sicari mi cercano).

     

    È fattibile? Grazie in anticipo.

  6. Salve a tutti, giocando a The World Ends With You ho notato una meccanica interessante: il consumo di cibi permette all'utente di beneficiare di bonus una volta digeriti (si "digerisce" tramite battaglie), volevo implementare una versione più grezza di questa meccanica, ossia ogni qualvolta si consuma del cibo, si entra in uno status "digestione" che dimezza le statistiche e che termina entro un tot di passi; una volta terminato, a seconda del cibo consumato, si possono aumentare le statistiche oppure ripristinare gli hp.

     

    Ciò pone una problematica: diventa quasi "pericoloso" curarsi in battaglia, al punto che pensavo di eliminare la cura tramite oggetti in battaglia e lasciarla unicamente a chi possiede le varie abilità 'Cura' ecc. il mio dubbio è se questa caratteristica del gameplay può aggiungere profondità o rende solamente frustrante la cosa. Attendo suggerimenti.

  7.  

    Credo che tu lo stia scrivendo male

    (b.id === 4) ? 500 : 100
    

     

    Niente, non va.

     

    EDIT: Ho provato la mia formula su VXAce e funziona normalmente. Sarà cambiato qualcosa nell'accesso al parametro 'id' in MV?

  8. Buco Nero è applicabile ad un nemico alla volta (tipo Kamui di Tobi, non so se ho reso l'idea...e in effetti mi ero espresso male prima), Buco Bianco colpisce tutti i nemici, tra cui, se ce n'è uno che è stato risucchiato (ovvero con lo status 'morte2') può (con scarsa probabilità) riportarlo in vita, tipo coda di fenice. In tutto ciò non posso usare lo status 'morte' di default perché significherebbe che un nemico sconfitto normalmente, senza l'ausilio di buco nero, potrebbe erroneamente essere riportato in vita.

  9. Puoi mettere la spunta in sistema per permettere agli HP di arrivare a 0 con danni da 'slittamento'.

    Questo però porrebbe un altro problema: una volta subito il danno da slittamento verrebbe applicato lo stato knockout e non più morte2.

     

    Cerco di spiegare più dettagliatamente il mio problema: voglio creare una skill "Buco Nero" che risucchia i nemici, che tecnicamente "muoiono" (stato 'morte2'); poi voglio

    creare una seconda skill "Buco Bianco" che fa l'esatto opposto: mentre il buco nero risucchia energia, buco bianco "sputa fuori" energia, tra cui (con una piccola probabilità)

    anche il mostro risucchiato. Perciò ho bisogno di un secondo stato morte, di modo che, se lo applico e tutti i nemici crepano, si vince, ma se si usa buco bianco c'è una possibilità

    di riportarlo fuori.

  10. Salve a tutti, come da titolo, volevo creare uno stato 'knockout' alternativo, questo perché ho un'abilità OHKO che però non ha effetto se l'avversario è affetto da un particolare power-up. Il fatto è che rpgmv assegna lo stato id:1 di default ed è anche l'unico utilizzabile a quanto sembra.

     

    L'alternativa è stata creare una skill che controlla se l'avversario è in possesso del suddetto power-up e, in caso negativo, one-shotta.

    Formula:

    b.state?(12) ? 0 : b.addState(1) 

    Ovviamente non va. La 'state?' la usai su rpgvxace, qualcuno sa se è ancora disponibile? O è la sintassi che non va?

  11. D: E' possibile, tramite evento, fare in modo che la mappa "lampeggi"?

     

    Mi spiego, vorrei che in una mappa ci fosse una specie di "allarme" che, una volta attivato, fa lampeggiare lo schermo di rosso all'infinito (almeno fino a quando l'allarme non si disattiva). Il mio problema sta nel fatto che non riesco a mantenere l'evento all'infinito. Una volta che lo schermo si tinge di rosso rimane rosso. Grazie.

  12. Salve a tutti, qualcuno di voi sa se ci sono degli RPG ambientati nei tempi moderni? Penso di averne avuto abbastanza di cavalieri, paladini, maghi neri, bahamut e ambientazioni medievali e anche di ambientazioni ultrafuturistiche.

     

    Non so se avete giocato ai vari Persona o The World Ends With You (per me, quest'ultimo il miglior gioco degli ultimi anni), ma, almeno sull'ambientazione, mi riferisco a questo tipo di rpg. Sentitevi liberi di segnalarmi anche giochi realizzati con rpgmaker nel forum o oltre, se ce ne sono, grazie.

  13. Premessa: ho cercato in più sezioni il problema che cercavo ma non ho trovato niente.

     

    Come forse sapete, rpg maker vx non può essere avviato con risoluzione minore di 1024x768. Ho un netbook acer aspire one con windows 7 e volevo cambiare la risoluzione attraverso il trucchetto con regedit -> display1downscale (qualcosa del genere...) ma non ho trovato la voce nel registro e ho problemi vari ad installare i driver.

     

    Volevo chiedere se c'è un modo per cambiare la risoluzione del pc senza il regedit oppure se c'è un modo, un trucco qualsiasi (tipo tramite file .bat) per poter avviare rpg maker vx anche con la risoluzione nativa del netbook. Grazie.

  14. Salve a tutti, come da titolo, sto usando lo script di Moghunter per creare delle skill con combinazioni di tasti, il problema è che, una volta implementata l'abilità, nel battle test non compare la sequenza di tasti. Mi spiego meglio:

     

    Per creare una skill con la chain basta inserire nelle note la stringa "<Chain Action = X>" Dove X è l'ID della combinazione di tasti specificata nello stesso script. Il problema è che se uso l'abilità nel battle test tale sequenza non appare, qualcuno mi sa dire perché? Allego lo script nel caso. Grazie in anticipo.

    #==============================================================================
    # +++ MOG - Active Chain Commands (v2.7) +++
    #==============================================================================
    # By Moghunter 
    # http://www.atelier-rgss.com/
    #==============================================================================
    # Permite combinar (Linkar) ataques consecutivos através do uso de
    # sequência de botões.
    #==============================================================================
    # Arquivos necessários. Graphics/System/
    #
    # Chain_Command.png
    # Chain_Battle_Layout.png
    # Chain_Battle_Meter.png
    #
    #==============================================================================
    # UTILIZAÇÃO
    #==============================================================================
    # No banco de dados use o sequinte comentário para linkar as ações.
    #
    # <Chain Action = X>
    #
    # X - ID da habilidade.
    #==============================================================================
    
    #==============================================================================
    # ● Histórico (Version History)
    #==============================================================================
    # v2.7 - Melhoria na compatibilidade de scripts.
    #==============================================================================
    
    $imported = {} if $imported.nil?
    $imported[:mog_active_chain] = true
    
    module MOG_CHAIN_ACTIONS
     #=============================================================================
     # CHAIN_ACTIONS = { SKILL_ID => [COMMAND] }
     #
     # SKILL_ID = ID da habilidade no banco de dados.
     # COMMANDS = Defina aqui a sequência de botões. 
     #            (Para fazer a sequência use os comandos abaixo)   
     #  
     # "Down" ,"Up" ,"Left" ,"Right" ,"Shift" ,"D" ,"S" ,"A" ,"Z" ,"X" ,"Q" ,"W"
     #
     # Exemplo de utilização
     #
     # CHAIN_SWITCH_COMMAND = { 
     # 25=>["Down","D","S","Right"],
     # 59=>["Down","Up","Left","Right","Shift","D","S","A","Z","X","Q","W"],
     # 80=>["Shift","D"]
     # } 
     #==============================================================================  
     CHAIN_ACTIONS = {
     29=>["Left","Up","Right","Down"],
     52=>["Up","Down","Left","Right","Z"],
     70=>["X","Right","Left","Z","Z"], 
     138=>["X"], 
     139=>["A","S"],
     140=>["Z","D","X"],
     141=>["Up","Down"],
     142=>["Left","Right","Z"],
     999=>["Left","Right","Left","Right","Left","Right","Q","Z","Up","A","S",
          "Down","D","Z","Right","Up","Up","Z","W","Left","Down","D","A","W"]
     }  
     #Definição padrão do tempo limite para pressionar o botão.
     CHAIN_DEFAULT_INPUT_DURATION = 60 #60 = 1s
     #Definição do tempo limite para pressionar o botão.
     CHAIN_INPUT_DURATION = {
     138=>60,
     139=>40,
     140=>30
     #141=>160,
     #240=>2000
     }
     
     #Som ao acertar. 
     CHAIN_RIGHT_SE = "Chime1"
     #Som ao errar.
     CHAIN_WRONG_SE = "Buzzer1"
     #Definição do som ao ativar o sistema de chain.
     CHAIN_START_SE = "Open1"
     #Definição da posição do botão.
     CHAIN_SPRITE_POSITION = [0,-15]
     #Posição do layout do medidor.
     CHAIN_LAYOUT_POSITION = [1,-7]
     #Posição do medidor de tempo.
     CHAIN_METER_POSITION = [0,-6]
     #Posição do Ícone
     CHAIN_ICON_POSITION = [0,-32]
     #Definição da palavra Chain.
     CHAIN_COMMAND_WORD = "Chain Action!"
     #Definição das palavras de erro.
     CHAIN_MISSED_WORDS = ["Missed!", "Timeover"]
     #Definição da posição da palavra.
     CHAIN_COMMAND_WORD_POSITION = [0,0]
     #Definição do tamanho da fonte
     CHAIN_WORD_FONT_SIZE = 20
     #Definição da cor da fonte
     CHAIN_WORD_FONT_COLOR = Color.new(255,255,255) 
     #Prioridade do sprite.
     CHAIN_SPRITE_Z = 150
    end
    
    #==============================================================================
    # ■ Game Temp
    #==============================================================================
    class Game_Temp
      attr_accessor :chain_actions
      attr_accessor :active_chain
      attr_accessor :chain_ot
      attr_accessor :chain_action_phase
      #--------------------------------------------------------------------------
      # ● Initialize
      #--------------------------------------------------------------------------      
      alias mog_chain_actions_initialize initialize
      def initialize
          @chain_actions = [0,0,0,false] ; @active_chain = false
          @chain_action_phase = false
          mog_chain_actions_initialize
      end
      
    end
    
    #==============================================================================
    # ■ Scene_Battle
    #==============================================================================
    class Scene_Battle < Scene_Base
      
      #--------------------------------------------------------------------------
      # ● Use Item
      #--------------------------------------------------------------------------  
      alias mog_chain_actions_use_item use_item
      def use_item
          prepare_chain_command if can_use_chain_commands?
          mog_chain_actions_use_item
          execute_chain_actions if can_use_chain_commands?
      end  
      
      #--------------------------------------------------------------------------
      # ● Can Use Chain Commands
      #--------------------------------------------------------------------------  
      def can_use_chain_commands?
          return false if @subject == nil
          return false if !@subject.is_a?(Game_Actor)
          return false if @subject.restriction != 0
          return true
      end
      
      #--------------------------------------------------------------------------
      # ● Prepare Chain Commands
      #--------------------------------------------------------------------------  
      def prepare_chain_command
          @chain_skill_original = @subject.current_action.item rescue nil
          if $game_temp.chain_ot == nil and @subject.is_a?(Game_Actor)
             targets = @subject.current_action.make_targets.compact
             $game_temp.chain_ot = targets[0]
          end
          check_chain_targets  
      end
          
      #--------------------------------------------------------------------------
      # ● Check Chain Command Position
      #--------------------------------------------------------------------------      
      def check_chain_command_position
          scx = $game_temp.chain_ot.screen_x rescue nil
          return if scx == nil
          if $game_temp.chain_ot != nil and !$game_temp.chain_ot.dead?
             $game_temp.chain_actions = [$game_temp.chain_ot.screen_x,$game_temp.chain_ot.screen_y,true]
          end   
      end
          
      #--------------------------------------------------------------------------
      # ● Check Chain Targets
      #--------------------------------------------------------------------------    
      def check_chain_targets
          return if @subject == nil or $game_temp.chain_ot == nil
          if [1,7,9,10,11].include?(@subject.current_action.item.scope)
             @pre_target = $game_temp.chain_ot ; @pre_target_hp = $game_temp.chain_ot.hp
          else   
             @pre_target = nil ; @pre_target_hp = nil
          end  
      end
      
      #--------------------------------------------------------------------------
      # ● Execute Chain Actions
      #--------------------------------------------------------------------------  
      def execute_chain_actions
          $game_temp.active_chain = false
          return if !can_execute_chain_actions_base?
          check_chain_command_position
          skill = @subject.current_action.item rescue nil
          skill = @chain_skill_original rescue nil
          action_id = skill.note =~ /<Chain Action = (\d+)>/i ? $1.to_i : nil rescue nil
          return if action_id == nil or action_id < 1
          chain_command_sequence = MOG_CHAIN_ACTIONS::CHAIN_ACTIONS[action_id]
          $game_temp.chain_actions[2] = action_id      
          if can_execute_chain_sequence?(chain_command_sequence,action_id)
             chain_act_before_action if @chain_command == nil
             chain_sq = Chain_Actions.new(chain_command_sequence,$game_temp.chain_actions)
             loop do
                  $game_temp.chain_action_phase = true
                  (chain_sq.update ; Input.update) unless @spriteset.animation?
                  $game_temp.active_chain = true ; chain_sq.update_skill_name
                  @spriteset.update ; Graphics.update
                  break if chain_sq.phase == 9
             end
             action_id = nil if !chain_sq.success or $game_temp.chain_ot.dead?
             chain_sq.dispose ; set_chain_skill(action_id) if action_id != nil
          end
          $game_temp.active_chain = false ; $game_temp.chain_ot = nil
          $game_temp.chain_action_phase = false
      end
    
      #--------------------------------------------------------------------------
      # ● Chain Act Before Action
      #--------------------------------------------------------------------------  
      def chain_act_before_action
          @chain_command = true
          record_window_data if $imported[:mog_atb_system]
          if $imported[:mog_menu_cursor]    
             @chain_curor_x = $game_temp.menu_cursor[2] 
             $game_temp.menu_cursor[2] = -999
             force_cursor_visible(false)
          end             
      end     
      
      #--------------------------------------------------------------------------
      # ● Turn End
      #--------------------------------------------------------------------------  
      alias mog_chain_command_process_action_end process_action_end
      def process_action_end
          mog_chain_command_process_action_end
          chain_act_after_action
      end
      
      #--------------------------------------------------------------------------
      # ● Chain Act After ACtion
      #--------------------------------------------------------------------------  
      def chain_act_after_action
          @chain_skill_original = nil
          $game_temp.chain_ot = nil
          return if @chain_command == nil
          restore_window_data if $imported[:mog_atb_system]     
          $game_temp.menu_cursor[2] = @chain_curor_x if $imported[:mog_menu_cursor]
          @chain_command = nil      
      end    
      
      #--------------------------------------------------------------------------
      # ● Set Chain Skill
      #--------------------------------------------------------------------------  
      def set_chain_skill(action_id)
          return if action_id == nil
          @subject.input.set_skill(action_id) 
          $game_temp.chain_actions = [0,0,0,false] ; execute_action    
      end
      
      #--------------------------------------------------------------------------
      # ● Can Execute Chain Sequence?
      #--------------------------------------------------------------------------  
      def can_execute_chain_sequence?(chain_command_sequence = nil,action_id = nil)
          return false if chain_command_sequence == nil
          skill = $data_skills[action_id] rescue nil
          return false if skill == nil
          return false if $game_temp.chain_ot == nil or $game_temp.chain_ot.dead?
          if [9,10].include?(skill.scope)
             $game_party.battle_members.each do |i| return true if i.dead? end
             return false
          end
          return true
      end
    
      #--------------------------------------------------------------------------
      # ● Can Execute Chain Actions Base
      #--------------------------------------------------------------------------    
      def can_execute_chain_actions_base?
          return false if @subject == nil or @subject.dead?
          return false if $game_temp.chain_ot == nil or $game_temp.chain_ot.dead?
          return false if @subject.is_a?(Game_Enemy)
          return false if @subject.current_action == nil
          @subject.states.each do |i| return false if i.restriction > 0 end
          return false if $game_party.members.empty?
          return false if $game_party.all_dead?
          return false if $game_troop.all_dead?
          if @pre_target != nil and $game_temp.chain_ot.hp == @pre_target_hp
             return false if $game_temp.chain_ot.result.missed
             return false if $game_temp.chain_ot.result.evaded
          end
          return true 
      end
        
    end
      
    #==============================================================================
    # ■ Game Temp
    #==============================================================================
    class Game_Temp
      
      attr_accessor :cache_active_chain
      
      #--------------------------------------------------------------------------
      # ● Initialize
      #--------------------------------------------------------------------------    
      alias mog_active_chain_initialize initialize
      def initialize
          mog_active_chain_initialize
          cache_act_chain
      end  
      
      #--------------------------------------------------------------------------
      # ● Cache Act Chain
      #--------------------------------------------------------------------------      
      def cache_act_chain
          @cache_active_chain = []
          @cache_active_chain.push(Cache.system("IconSet"))
          @cache_active_chain.push(Cache.system("Chain_Battle_Layout"))
          @cache_active_chain.push(Cache.system("Chain_Battle_Meter"))
          @cache_active_chain.push(Cache.system("Chain_Battle_Command"))
      end
      
    end
    
    #==============================================================================
    # ■ Spriteset Battle
    #==============================================================================
    class Spriteset_Battle
       
      #--------------------------------------------------------------------------
      # ● Initialize
      #--------------------------------------------------------------------------    
      alias mog_active_chain_commands_initialize initialize
      def initialize
          $game_temp.cache_act_chain ; $game_temp.active_chain = false
          $game_temp.chain_ot = nil
          mog_active_chain_commands_initialize      
      end
    end    
    
    #==============================================================================
    # ■ Chain Actions
    #==============================================================================
    class Chain_Actions
      
      include MOG_CHAIN_ACTIONS
      
      attr_accessor :phase
      attr_accessor :success
       
      #--------------------------------------------------------------------------
      # ● Initialize
      #--------------------------------------------------------------------------    
      def initialize(sequence,chain_temp)
          $game_temp.chain_actions[3] = true
          @chain_command = sequence
          @x = chain_temp[0] + CHAIN_SPRITE_POSITION[0]
          @y = chain_temp[1] + CHAIN_SPRITE_POSITION[1]
          @y = (Graphics.height - 36) if @y > (Graphics.height - 36)
          @y = 0 if @y < 0
          @skill = $data_skills[chain_temp[2]]
          @skillname = @skill.name
          if CHAIN_INPUT_DURATION[chain_temp[2]] != nil
             @duration = [CHAIN_INPUT_DURATION[chain_temp[2]],CHAIN_INPUT_DURATION[chain_temp[2]]]
          else   
             @duration = [CHAIN_DEFAULT_INPUT_DURATION, CHAIN_DEFAULT_INPUT_DURATION]
          end  
          @phase = 0 ; @success = false ; @com = 0 ; @com_index = 0
          @initial_wait = 1 ; @wrong_commnad = [false,0,0]
          Audio.se_play("Audio/SE/" + CHAIN_START_SE, 100, 100) rescue nil
          create_button_sprite ; create_skill_name ; create_icon ; create_meter
      end
    
      #--------------------------------------------------------------------------
      # ● Create Icon
      #--------------------------------------------------------------------------      
      def create_icon
          @icon_image = $game_temp.cache_active_chain[0]
          @icon_sprite = Sprite.new ; @icon_sprite.bitmap = Bitmap.new(24,24)
          @icon_sprite.z = CHAIN_SPRITE_Z + 1
          @org_x2 = @x - 12 +  CHAIN_ICON_POSITION[0] - @center
          @icon_sprite.x = @org_x2 - 50
          @icon_sprite.y = @y +  CHAIN_ICON_POSITION[1]     
          icon_rect = Rect.new(@skill.icon_index % 16 * 24, @skill.icon_index / 16 * 24, 24, 24)
          @icon_sprite.bitmap.blt(0,0, @icon_image, icon_rect)
      end
    
      #--------------------------------------------------------------------------
      # ● Create Meter
      #--------------------------------------------------------------------------        
      def create_meter
          @meter_layout = Sprite.new
          @meter_layout.bitmap = $game_temp.cache_active_chain[1]
          @meter_layout.z = CHAIN_SPRITE_Z
          @meter_layout.x = @x - (@meter_layout.width / 2) + CHAIN_LAYOUT_POSITION[0]
          @meter_layout.y = @y + CHAIN_LAYOUT_POSITION[1]
          @meter_image = $game_temp.cache_active_chain[2]
          @meter_cw = @meter_image.width ; @meter_ch = @meter_image.height
          @meter = Sprite.new
          @meter.bitmap = Bitmap.new(@meter_image.width, @meter_image.height)
          @meter.z = CHAIN_SPRITE_Z + 1
          @meter.x = @x - (@meter_image.width / 2) + CHAIN_METER_POSITION[0]
          @meter.y = @y + CHAIN_METER_POSITION[1]
          @meter.visible = false ; @meter_layout.visible = false ; update_meter
      end
      
      #--------------------------------------------------------------------------
      # ● Update Meter
      #--------------------------------------------------------------------------          
      def update_meter
          return if @meter == nil
          @meter.bitmap.clear ; range = @meter_cw * @duration[0] / @duration[1]
          m_scr = Rect.new(0,0,range,@meter_ch )
          @meter.bitmap.blt(0,0, @meter_image ,m_scr)
      end
      
      #--------------------------------------------------------------------------
      # ● Initialize
      #--------------------------------------------------------------------------      
      def create_skill_name
          @skill_name = Sprite.new ; @skill_name.bitmap = Bitmap.new(200,32)
          @skill_name.bitmap.font.size = CHAIN_WORD_FONT_SIZE
          @skill_name.bitmap.font.color = CHAIN_WORD_FONT_COLOR
          @skill_name.z = CHAIN_SPRITE_Z 
          @skill_name.y = @y - 32 + CHAIN_COMMAND_WORD_POSITION[1]
          refresh_skill_name
      end
      
      #--------------------------------------------------------------------------
      # ● Refresh Skill Name
      #--------------------------------------------------------------------------        
      def refresh_skill_name
          cm = @skillname.to_s.split(//).size
          @center = ((200 / @skill_name.bitmap.font.size) * cm / 2) + 5
          @org_x = @x - (@button_cw / 2) - 85 + CHAIN_COMMAND_WORD_POSITION[0]
          @skill_name.x = @org_x - 50
          @skill_name.bitmap.draw_text(0,0,200,32,@skillname.to_s,1)  
      end
          
      #--------------------------------------------------------------------------
      # ● Create Button Sprite
      #--------------------------------------------------------------------------      
      def create_button_sprite
          @button_image = $game_temp.cache_active_chain[3]
          @button_cw = @button_image.width / 13 ; @button_ch = @button_image.height
          @button_sprite = Sprite.new
          @button_sprite.bitmap = Bitmap.new(@button_cw,@button_ch)
          @button_sprite.z = CHAIN_SPRITE_Z + 1
          @button_sprite.ox = @button_cw / 2 ; @button_sprite.oy = @button_ch / 2
          @button_sprite.x = @x + @button_sprite.ox - (@button_cw / 2)
          @button_sprite.y = @y + @button_sprite.oy      
      end
    
      #--------------------------------------------------------------------------
      # ● Refresh Button Command
      #--------------------------------------------------------------------------        
      def refresh_button_command
          return if @button_sprite == nil
          @duration[0] = @duration[1]
          command_list_check(@chain_command[@com_index])  
          @button_sprite.bitmap.clear
          button_scr = Rect.new(@com * @button_cw , 0,@button_cw,@button_ch)
          @button_sprite.bitmap.blt(0,0,@button_image,button_scr)
          @button_sprite.zoom_x = 2 ; @button_sprite.zoom_y = 2    
          @button_sprite.opacity = 255
      end
      
      #--------------------------------------------------------------------------
      # ● Dispose
      #--------------------------------------------------------------------------      
      def dispose
          dispose_button ; dispose_meter ; dispose_name ; dispose_icon_sprite
          $game_temp.chain_actions[3] = false ; $game_temp.active_chain = false
      end
      
      #--------------------------------------------------------------------------
      # ● Dispose Icon Sprite
      #--------------------------------------------------------------------------        
      def dispose_icon_sprite
          return if @icon_sprite == nil
          @icon_sprite.bitmap.dispose ; @icon_sprite.dispose ; @icon_sprite = nil
      end  
      
      #--------------------------------------------------------------------------
      # ● Dispose Name
      #--------------------------------------------------------------------------        
      def dispose_name
          return if @skill_name == nil
          @skill_name.bitmap.dispose ; @skill_name.dispose ; @skill_name = nil
      end
      
      #--------------------------------------------------------------------------
      # ● Dispose Button 
      #--------------------------------------------------------------------------        
      def dispose_button 
          return if @button_sprite == nil 
          @button_sprite.bitmap.dispose ; @button_sprite.dispose ; @button_sprite = nil
      end
      
      #--------------------------------------------------------------------------
      # ● Dispose Meter
      #--------------------------------------------------------------------------          
      def dispose_meter
          return if @meter_layout == nil
          @meter_layout.dispose ; @meter_layout = nil
          @meter.bitmap.dispose ; @meter.dispose
      end  
      
      #--------------------------------------------------------------------------
      # ● Update
      #--------------------------------------------------------------------------      
      def update
          if @initial_wait > 0
             @initial_wait -= 1
             if @initial_wait == 0 
                refresh_button_command ; @meter.visible = true
                @meter_layout.visible = true        
             end
             return  
          end
          if @wrong_commnad[0]
             update_fade_command
             return
          end      
          update_command ; update_sprite_button ; update_time ; update_meter
      end
    
      #--------------------------------------------------------------------------
      # ● Update Skill Name
      #--------------------------------------------------------------------------         
      def update_fade_command
          fade_speed = 6
          @skill_name.opacity -= fade_speed ; @meter.opacity -= fade_speed
          @meter_layout.opacity -= fade_speed ; @icon_sprite.opacity -= fade_speed
          @button_sprite.opacity -= fade_speed * 2 ; missed if @meter.opacity == 0
      end
      
      #--------------------------------------------------------------------------
      # ● Update Skill Name
      #--------------------------------------------------------------------------        
      def update_skill_name
          return if @skill_name == nil
          if @skill_name.x < @org_x
             @skill_name.x += 3 ; @icon_sprite.x += 3 
             if @skill_name.x > @org_x
                @skill_name.x = @org_x ; @icon_sprite.x = @org_x2
             end   
          end
      end
      
      #--------------------------------------------------------------------------
      # ● Update Time
      #--------------------------------------------------------------------------
      def update_time
          return if @button_sprite == nil
          @duration[0] -= 1 if @duration[0] > 0
          wrong_command(1) if @duration[0] == 0
      end
      
      #--------------------------------------------------------------------------
      # ● Update Sprite Button
      #--------------------------------------------------------------------------        
      def update_sprite_button
          return if @button_sprite == nil
          if @button_sprite.zoom_x > 1.00
             @button_sprite.zoom_x -= 0.05
             @button_sprite.zoom_x = 1.00 if @button_sprite.zoom_x < 1.00
          end
          @button_sprite.zoom_y = @button_sprite.zoom_x
      end  
    
     #--------------------------------------------------------------------------
     # ● Update Command
     #--------------------------------------------------------------------------       
     def update_command
         if Input.trigger?(:X) ; check_command(0)
         elsif Input.trigger?(:Z) ; check_command(1)
         elsif Input.trigger?(:Y) ; check_command(2)
         elsif Input.trigger?(:A) ; check_command(3)
         elsif Input.trigger?(:C) ; check_command(4)
         elsif Input.trigger?(:B) ; check_command(5)
         elsif Input.trigger?(:L) ; check_command(6)
         elsif Input.trigger?(:R) ; check_command(7)        
         elsif Input.trigger?(:RIGHT) ; check_command(8)
         elsif Input.trigger?(:LEFT) ; check_command(9)
         elsif Input.trigger?(:DOWN) ; check_command(10)
         elsif Input.trigger?(:UP) ; check_command(11)
         end   
     end  
       
     #--------------------------------------------------------------------------
     # ● command_list_check
     #--------------------------------------------------------------------------       
     def command_list_check(command) 
         case command
             when "A" ; @com = 0  
             when "D" ; @com = 1  
             when "S" ; @com = 2
             when "Shift" ; @com = 3
             when "Z" ; @com = 4
             when "X" ; @com = 5
             when "Q" ; @com = 6
             when "W" ; @com = 7            
             when "Right" ; @com = 8
             when "Left" ;  @com = 9
             when "Down" ;  @com = 10
             when "Up"  ;   @com = 11
             else ; @com = 12           
         end 
     end   
     
     #--------------------------------------------------------------------------
     # ● check_command
     #--------------------------------------------------------------------------            
     def check_command(com)
         if com != -1
            right_input = false
            @chain_command.each_with_index do |i, index|
               if index == @com_index
                  command_list_check(i) ; right_input = true if @com == com
               end          
            end
         else  
           command_list_check(@com_index) ; right_input = true
         end  
         if right_input 
            next_command
         else  
            wrong_command(0)
         end  
     end  
       
     #--------------------------------------------------------------------------
     # ● Next Command
     #--------------------------------------------------------------------------            
     def next_command   
         @com_index += 1   
         Audio.se_play("Audio/SE/" + CHAIN_RIGHT_SE, 100, 100)
         if @com_index == @chain_command.size
            @phase = 9 ; @success = true 
            return
         end  
         refresh_button_command
     end     
     
     #--------------------------------------------------------------------------
     # ● wrong_command
     #--------------------------------------------------------------------------              
     def wrong_command(type = 0)
         @wrong_commnad[0] = true ; @wrong_commnad[1] = type
         @skill_name.bitmap.clear
         Audio.se_play("Audio/SE/" + CHAIN_WRONG_SE, 100, 100)        
         wname = type == 0 ? CHAIN_MISSED_WORDS[0] : CHAIN_MISSED_WORDS[1]
         @skill_name.bitmap.draw_text(0,0,200,32,wname.to_s,1)
     end     
      
     #--------------------------------------------------------------------------
     # ● missed
     #--------------------------------------------------------------------------               
     def missed
         @success = false  ; @phase = 9  
     end
     
    end
    
    
  15. Salve a tutti, da sempre ho voluto iniziare un progetto con rpg maker ma c'è un dubbio che mi assale da sempre: come potete notare da titolo, nel mio progetto vorrei mantenere il BS standard di rpgvx (per tutta una serie di motivi, tra gli altri perché non sono bravo a scriptare e perché non voglio prendere script sviluppati da altri utenti).

     

    Fatta questa premessa, vorrei chiedervi, dato che il mio progetto prevede una stragrande maggioranza di battaglie 1v1, come fare per rendere tali battaglie meno scontate, noiose e prevedibili; vorrei evitare che la battaglia si riducesse ad una semplice alternanza di attacchi tra protagonista e nemico e poi chi ha più HP e più attacchi potenti vince.

     

    Qualche consiglio? Magari sviluppando la cosa tramite gestione di eventi...Grazie.

  16. Salve a tutti, in un semplice esercizio c'era bisogno di creare uno script di base per stampare su terminale la lista delle cartelle nella directory /bin/bash. Solo che mandando in esecuzione il file di testo (che ho chiamato "bash") con il comando "source bash" mi dice "impossibile eseguire il file binario". Qual è il problema?

    Ecco il codice. Premetto che uso ubuntu 11.10

     

    
    #! /bin/bash
    echo questo è uno script
    echo i file in \/bin sono:
    ls /bin
    
    
    
    

×
×
  • Create New...