Jump to content
Rpg²S Forum

Squall_Leonheart

Utenti
  • Posts

    1,352
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Squall_Leonheart

  1.  

    Mi scuso se rispondo dopo tanto cosi tempo da quando e' stato creato questo topic, e' tanto che non partecipo.

    E' assolutamente possibile, io l'ho cominciato a sviluppare per il mio gioco su Ken il Guerriero sin dai primi anni '10 (sono in procinto di caricare una release aggiornata, con tutte le migliorie elencate sotto)

    Ho usato come base lo XAS e ne ho modificato le funzioni per adattarlo ad un RPG picchiaduro. Ho inoltre creato un sistema ad eventi che ne supporti la funzionalita. E' un lavoro per cui ho impegato anni...

    Sono riuscito a programmare l'IA dei nemici in modo che gli attacchi da vicino avvengano solo quando sono sullo stesso asse orizzontale, i nemici si muovono su 8 direzioni, ti girano attorno, ho programmato i salti e gli attacchi al volo etc. Ho persino la possibilita di fare interagire i chars in 2,5D.

     

    Se hai delle domande specifiche chiedi pure.

     

    Dani perdonami ho letto solo ora!!!

    Io nel mio progetto ho molta grafica già pronta ma mi ero fermato a causa degli intoppi nella programmazione. Condivideresti lo script?

  2. Ti consiglio di passare direttamente a MV. Io ho fatto un gioco stile platform. Non esce LA COSA PIU' FIGA DEL MONDO, ma si può fare un buon gioco.

    Se poi vuoi proprio dedicarti ai platform nel vero senso della parola, ti conviene passare ad un engine come Construct

    Per MV esistono dei plugin giusto?

  3. Ciao a tutti ragazzi!

    Ormai è tanto tempo che posto su questo forum, ed è per questo che mi sembra giusto condividere con voi chi sono e cosa faccio nella vita.
    In realtà io sono un musicista, attualmente insegnante di liceo, che ha dedicato alla musica e, nella fattispecie al canto e alla chitarra, buona parte della sua vita.
    Ho fatto il conservatorio come chitarrista classico e al contempo ho preso diplomi di Canto alla London University, per arrivare oggigiorno a comporre colonne sonore per videogiochi e brani per artisti di diverso genere.
    Questo virus ha momentaneamente bloccato i miei progetti (sono al lavoro su di un album solista, dove ci sono brani inediti e cover) ma nonostante tutto voglio condividere con voi la DEMO di questa mia cover del celebre brano di Bon Jovi "Livin on a prayer", ispirato dalla versione presente nel loro album acustico.
    Ho scelto di caricare questo video, ma non appena avrò nuovamente i mezzi e i consensi vi aggiornerò su altri brani, compresi quelli di natura videoludica che sono più coerenti con il forum.

    Mi auguro vi possa piacere, grazie per eventuali visualizzazioni, mi piace ed iscrizioni.

  4. Non mi è ben chiara la cosa. L'ultimo problema che avevi era che @spriteset = Spriteset_Map.new ti dava problemi con il codice del refresh per il cambio switch scritto sopra? Però solo se quella variabile la scrivi su un call script? > <

    Aspetta, ricapitolo altrimenti ti confondo solo le idee.

    Il primo problema era che, la switch locale, nonostante si attivasse non cambiasse la grafica dell'evento disposto nella pagina che si attiva con la switch.

    Adesso, per cercare di ovviare questa cosa, ho fatto un cambia grafica con "muovi evento" prima di chiamare la scena. Il problema è che la scena nonostante mantenga le animazioni, riporta l'evento alla grafica iniziale.

    Credo che tutto ciò avvenga proprio a causa dello Spritsetmap, perché appunto con la dicitura .new resetta i valori no?

  5. Nell'evento c'è solamente un messaggio ed un muovi evento, cambia grafica in "conteggio"

    Questa è poi la Scene che chiamo via script:

    class Scene_Rianimazione
       
      def main
        @window_rianimazione = Window_Rianimazione.new
        @window_rianimazione.opacity = 100
        @window_help = Window_Help.new
        @window_help.opacity = 100
        @window_help.y = 100
        @window_help.width = 320
        @window_help.set_text("Premi invio per recuperare le forze e liberarti!")
        @time = 0
        @conteggio = Sprite.new
        @conteggio.bitmap = RPG::Cache.picture("1") rescue nil 
        @conteggio.x = -0
        @conteggio.y = 60 
        @conteggio.z = 255
        @conteggio.opacity = 255
        @spriteset = Spriteset_Map.new
        Graphics.transition
        loop do
        @spriteset.update  
        $game_map.update
        Graphics.update
        Input.update
        update
        time
        if $scene != self  
          break  
        end
      end
      Graphics.freeze
      @spriteset.dispose
      @conteggio.dispose
      @window_rianimazione.dispose
      @window_help.dispose
    end
    
    def update
      
        @window_help.update
       if Input.trigger?(Input::C)
         if $game_variables[5] == 0
           $game_actors[1].hp += 3
           @window_rianimazione.refresh
         else if $game_variables[5] == 1
           $game_actors[1].hp += 2
           @window_rianimazione.refresh
         else if $game_variables[5] > 2
           $game_actors[1].hp += 1
           @window_rianimazione.refresh
         end
       end
       end
         end
        end
     end
    
    
       def time  
         
         case @time 
         when 100
            Audio.se_play ("Audio/SE/3Pin.wav")
            @conteggio.bitmap = RPG::Cache.picture("3") rescue nil 
         end
         case @time 
         when 50
            Audio.se_play ("Audio/SE/2Pin.wav")
            @conteggio.bitmap = RPG::Cache.picture("2") rescue nil 
         end
          case @time 
          when 0
            Audio.se_play ("Audio/SE/1Pin.wav")
            @conteggio.bitmap = RPG::Cache.picture("1") rescue nil 
          end
          @time += 1
          $game_map.need_refresh = true
            if $game_actors[1].hp >= ($game_actors[1].maxhp * 30 / 100)
             @window_help.set_text("SI LIBERA!")
             $game_variables[5] += 1
             $game_switches[1] = true
             $game_map.need_refresh = true
             $scene = Scene_Map.new
             end
         if @time > 150
           if $game_actors[1].hp >= ($game_actors[1].maxhp * 30 / 100)
             @window_help.set_text("SI LIBERA!")
             $game_variables[5] += 1
             $game_switches[1] = true
             $game_map.need_refresh = true
             $scene = Scene_Map.new
           else 
           $scene = Scene_Gameover.new
           end
           end
         end
    

    Ora mi basterebbe che l'animazione dell'evento proseguisse con la grafica che imposto, per poter settare il time in modo sincronizzato al movimento. Il tutto simula un arbitro che conta come nel wrestling.

  6. Dovrebbero essere comandi impostabili dal muovi evento/percorso evento, prova a guardare l'interpreter per vedere se trovi lo script associato a tali comandi.

    ^ ^

    Guardian ho capito il problema! L'errore non stava nel tuo codice, bensì nel fatto che, per rimanere lo sfondo della mappa attivo, avevo questa stringa : @spriteset = Spriteset_Map.new - Con i successivi update e dispose.

     

    Ora se la tolgo non ho la mappa con le animazioni alle spalle... Cosa che mi serve. Così purtroppo cambiava ma la mappa diventava sempre nuova e quindi non andava.

     

    Come posso rimanere gli spriteset senza farli ricreare?

  7. Purtroppo non saprei cosa suggerire. Non è che la nuova pagina è ad inizio automatico? XD La mappa si blocca anche senza quel pezzo di codice? Cioè senza le due righe delle switch? Tutte le volte prova a debuggare linea per linea.

    ^ ^

    No assolutamente. L'evento è su pressione del tasto. Diciamo che siccome sto programmando una Scene, sono riuscito a mettere che nonostante la Window_Command le animazioni della mappa continuino. Ora la seconda pagina dell'evento credo si attivi, perché cambia la frequenza e la velocità dell'animazione. Quello che non cambia è il file immagine che ho impostato nella seconda pagina come characters!

    Mi chiedo se esiste un modo per cambiare grafica, frequenza dell'animazione e pagina all'evento nel corso di una Scene.

  8. Solitamente si consiglia sempre di mettere i numeri senza gli zero davanti, quello dovrebbe essere sicuramente un errore, non so se può dare altri problemi.

    ^ ^

    Adesso va avanti ma non accade niente. Effettivamente cambiando pagina all'evento la cosa principale che cambia è l'animazione.

    Cosa suggerisci?

     

    Ho attivato gli update della mappa quindi le animazioni presenti continuano. Sembra come se non connettesse la switch locale.. Anche se ho notato che cambia la frequenza dell'animazione. Come se non cambiasse la grafica ma leggesse tutto il resto.

  9. Questo è il frammento di codice

          case @time 
          when 0
            Audio.se_play ("Audio/SE/1Pin.wav")
            @conteggio.bitmap = RPG::Cache.picture("1") rescue nil
            $game_self_switches[[001, 009, 'A']] = false
            $game_self_switches[[001, 009, 'B']] = true
            $game_map.need_refresh = true
    

    In questo modo mi da Syntax error.
    Secondo te qual è il problema?

  10. Nell'altro sportello avevo suggerito una cosa, non so se l'hai vista: semplicemente attivare tramite script una switch che appunto attiva la nuova pagina.

    Serve per forza forzare manualmente via script il cambio pagina? Non ritorni sulla mappa per averlo automatico? ^ ^

    Guardian ma dove posso trovare diciamo tutti i comandi della sintassi? Principalmente ho questo problema.

     

    Riguardo la switch avevo pensato di assegnargli una $game_local_switches[A] == true ma nemmeno funziona >.<

     

    Il problema principale subentra perché attraverso una Scene devo cambiare pagina all'evento. O il mio comando è sbagliato (probabile) oppure devo passare ad una switch non locale.

     

    Tu cosa mi consigli?

     

  11. Ciao ragazzi!
    Esiste uno script che consenta di cambiare pagina ad un evento attraverso un semplice comando?

    In giro ho trovato questo ma non funziona...


    =begin
    EST - SIMPLE EVENT PAGES CONTROLLER
    v.1.2a
    Author: Estriole
    
    also credits: 
    1) Tsukihime
    for giving me inspiration to create this script.
    2) Killozapit
    for giving me idea to use actual event pages so it can used by other event
      
    Version History
    v.1.0  - 2013-01-13 - finish the script
    v.1.1  - 2013-01-16 - add ability to change event force page by name using string
                          or regexp.
                          example string: set_event_force_page(4,"test 1",3)
                          this will change all event with the name test 1 (not case sensitive)
                          example regexp: set_event_force_page(4,/test (.*)/i,3)
                          this will change all event that contain test x in name. 
                          so event with these name will change it's force page:
                          test 1, test 2, test 3, battle test 1, battle test abc, etc
                          this feature only useful for people who generate event ingame
                          using either event spawner, copier, etc. since they won't know the id
                          of that event until generated.
    v.1.2  - 2013-01-18 - add function to use other event pages by setting the force page
                          to RPG::Event:Page object. also added new game interpreter
                          method to make even beginner able to use it. :D(hopefully)
    v.1.2a - 2013-01-18 - fix some error with new method if map/event not exist.
                          also renamed the script (change system to controller) to
                          describe this script better. (i decide to stick with simple word :D)
                          
    Introduction
    Did you have many pages event and have hard time setting it right. this might be
    your answer. by default the event page system is like this:
    from the last page it check for that page condition. if condition met than use that
    page. 
    
    Imagine if your event pages is 100. and at start it use page 100. then you want by
    choosing something in page 100 will make the event goes to page 1.
    if default system you need to make ALL the event page 2 to 100 condition to NOT met.
    this could cost you a whole lots of Switches...
    
    this script make you able to bypass those. now you can just specify the event pages
    you want to the event to use. and if not set it still use default event pages system.
    if you want simpler explanation. just imagine this as label and go to label command.
    but for pages.
    
    and i also add that that chosen page also get checked for it's condition. so if that
    chosen page condition not met it will be no page selected (blank event)
    
    example i have these event pages:
    page 1 - condition switch 1 on - set force page to page 2
    page 2 - condition none - do something
    page 3 - condition none - set force page to page 1
    
    the event will be use page 3 (since you havent interact / turn on /off switch and also
    because that last page condition is met thus that last page used)
    
    then by talking to that event you set force page to page 1.
    but you haven't turn on the switch 1 so it will be blank event. then when you
    turn on switch 1. that event will use page 1. and by talking to that event will
    proceed to page 2. and by talking again to event it will do something
    note: should i make demo about this? i think it's clear enough.
    
    you could also make all the pages without condition and then treat it like go to page.
    just remember the event will pick your last page at the first time
    
    How to use
    1) Script call:
    
    set_this_event_force_page(page_id)
    
    ->this will set current event to that page id
    
    2) Script call:
    
    set_event_force_page(map_id,event_id,page_id)
    
    ->this will set event id in that map id to that page id
    ->from 1.1 above: event_id can be number/event name/ regexp format
    
    you could set the page_id to nil for both method to use default event page system
    
    *** new from v.1.2 above ***
    3) Script call:
    
    event_use_page(map_id,event_id,source_map_id,source_event_id,source_page_id)
    
    ->this will set event id in that map id to use page from another event.
    ->event_id can be number/event name/ regexp format
    ->source_event_id cannot use event name/regexp. it must be number.
    
    you could set the page_id to nil for both method to use default event page system
    
    
    Compatibility
    i think this compatible with most script. and it also don't break existing project.
    since existing project event don't have force page set for them thus using default
    event page system.
    
    =end
    class Game_Event < Game_Character
      attr_accessor :force_page  
      attr_reader   :event  
      alias est_force_event_page_find_page find_proper_page
      def find_proper_page
        return [@force_page].find{|page| conditions_met?(page)} if @force_page.is_a?(RPG::Event::Page) 
        if @force_page && @force_page > 0 && @force_page <= @event.pages.size
        return [@event.pages[@force_page-1]].find{|page| conditions_met?(page)}
        end
        est_force_event_page_find_page
      end
    end
    
    class Game_Interpreter
      def set_this_event_force_page(page_id)
        $game_map.force_pages[@map_id] = {} if !$game_map.force_pages[@map_id]
        $game_map.force_pages[@map_id][@event_id] = page_id
        $game_map.events[@event_id].force_page = page_id
        $game_map.refresh
      end
      def set_event_force_page(map_id,event_id,page_id)
        $game_map.force_pages[map_id] = {} if !$game_map.force_pages[map_id]
        $game_map.force_pages[map_id][event_id] = page_id
        if @map_id == map_id
          event_id = $game_map.get_event_id_by_name(event_id) if event_id.is_a?(String) or event_id.is_a?(Regexp)
          event_id = [event_id] if event_id.is_a?(Fixnum)
          event_id = event_id.to_a if !event_id.is_a?(Array)
          return if event_id == nil
          event_id.each do |id|  
            if $game_map.events[id]
            $game_map.events[id].force_page = page_id
            $game_map.refresh
            end #end if 
          end #end do
        end #end if
      end #end def
      def event_use_page(map_id,event_id,source_map_id,source_event_id,source_page_id)
        map = load_data(sprintf("Data/Map%03d.rvdata2", source_map_id)) rescue nil
        #event = map.events[source_event_id] rescue nil#if map
        page = map.events[source_event_id].pages[source_page_id-1] rescue nil#if event
        return if !page
        $game_map.force_pages[map_id] = {} if !$game_map.force_pages[map_id]
        $game_map.force_pages[map_id][event_id] = page
        if @map_id == map_id
          event_id = $game_map.get_event_id_by_name(event_id) if event_id.is_a?(String) or event_id.is_a?(Regexp)
          event_id = [event_id] if event_id.is_a?(Fixnum)
          event_id = event_id.to_a if !event_id.is_a?(Array)
          return if event_id == nil
          event_id.each do |id|  
            if $game_map.events[id]
            $game_map.events[id].force_page = page
            $game_map.refresh
            end #end if 
          end #end do
        end #end if
      end #end def set event force page pm
    end #end class game interpreter
    
    class Game_Map
      attr_accessor :force_pages
      alias est_force_event_page_game_map_init initialize
      def initialize
        est_force_event_page_game_map_init
        @force_pages = {}
      end
    
      alias est_force_event_page_setup_events setup_events
      def setup_events
          est_force_event_page_setup_events
          if @force_pages[@map_id]
            @force_pages[@map_id].each do |key,value|
              ids = key
              ids = get_event_id_by_name(key) if ids.is_a?(String) or ids.is_a?(Regexp)
              ids = [ids] if ids.is_a?(Fixnum)
              ids = ids.to_a if !ids.is_a?(Array)
              next if !ids
              ids.each do |id|
                @events[id].force_page = value if @events[id]
              end
            end
          end
          refresh
          refresh_tile_events
      end
      
      def get_event_id_by_name(string)
        event = []
         @events.each do |key,value|
           if string.is_a?(String)
           event.push(value) if value.name.upcase == string.upcase 
           else
           event.push(value) if string.match(value.name)
           #event.push(value) if value.name.match(string)
           end
         end
        return false if !event
        return id = event.collect{|ev|ev.id}
      end  
    end
    

     

  12. Ho risolto, adesso funziona!

    $game_actors[1].hp >= ($game_actors[1].maxhp * 30 / 100)

    Questo è il comando giusto.

    Ragazzi necessito di cambiare grafica ad un evento attraverso in una Scene.
    Quale comando va utilizzato?

    Ho provato $game_map_events [009] = percorso grafica NON VA
    Ho collegato una variabile scrivendo lo stesso manco >.<

  13.    def time  
         @time += 1
         case @time 
         when 100
            @conteggio.bitmap = RPG::Cache.picture("3") rescue nil 
         end
         case @time 
         when 50
            @conteggio.bitmap = RPG::Cache.picture("2") rescue nil 
         end
          case @time 
          when 0
            @conteggio.bitmap = RPG::Cache.picture("1") rescue nil 
            end
         if @time > 150
           if  $game_actors[1].hp >= ($game_actors[1].hp / 100 * 30)
             $game_variables[5] += 1
             $game_switches[1] = true
             $game_map.need_refresh = true
             $scene = Scene_Map.new
           else  $game_actors[1].hp <= ($game_actors[1].hp / 100 * 30)
           $scene = Scene_Gameover.new
           end
           end
         end
    

    Ho scritto così ma nonostante non recuperi il 30% la scene_Gameover non avviene.

    Inoltre effettivamente in caso di raggiungimento del 30% dovrei anche interrompere la scena, essendo che l'eroe si è ripreso.

  14. Thund:

     

     

    screenshotcontestrpg2s89.png

     

     

     

    Master Danix:

     

     

    Screen02.png

     

     

     

    Kamikun:

     

     

    Screen-Contest-Wo-C.png

     

     

     

    AliceMisaki:

     

     

    o3g3fjoszrx4j18zg.jpg

     

     

     

    Shiki Ryougi:

     

     

    Immagine.png

     

     

    Ci tengo a precisare che sono tutti lavori con "carattere" e che sicuramente chi per un motivo chi per un altro potrebbe tranquillamente vincere uno Screen contest. Cercherò di scrivere la mia opinione tenendo conto anche del tema.

     

    Thund

     

    Grafica molto bella ed il progetto sembra interessante. Sicuramente c'è un senso di libertà in questa scena fantasiosa. Una sorta di liberazione della principessa?

    Comunque ti consiglio di utilizzare un colore diverso per la nave che sembra fuori contesto, nonostante isolandola è molto bella. Magari anche solo scurirla un po'. Anche se credo che differirla in un modo netto sia anche il tuo modo di definire il "cambiamento".

     

    Master Danix

     

    Devo essere sincero, se dovessi valutare il gameplay, avresti vinto. Ma purtroppo nel complesso l'idea del tema è troppo velata. Sicuramente vuoi dare un idea di conquista della libertà. Ma al contrario questo Screen mi occlude. La visuale in prima persona non aiuta. Nonostante tutto rimane un bel lavoro.

     

    Kamikun

     

    Screen con un mapping molto simmetrico, ma che viene ben supportato dal gioco di luci presente nella scena. Anche qui, ottimo lavoro, ma non rispecchia facilmente il tema.

     

    AliceMisaki

     

    Sicuramente sotto il profilo tecnico il migliore, per la sua completezza e identità. L'aspetto della libertà risultata in un modo horror/affascinante. Il suicidio non è la via, sia chiaro XD Però mi piace la visione del passaggio ad un mondo più spensierato e sopratutto può richiamare il cambiamento.

     

    Shiki Ryougi

     

     

    Apprezzo tantissimo il fatto che hai messo solo farina del tuo sacco. Ti consiglio di aggiungere più dettagli. Tra tutti è lo screen meno tecnico ma con più impegno alle spalle. Complimenti davvero per questo. La pertinenza al tema è dettata dalo scenario abbastanza sereno.

     

     

     

     

    Complimenti a tutti ragazzi, spero che le mie parole vi diano modo di migliorarvi e portare i vostri progetti ad un livello superiore!

  15. Eccomi di nuovo XD
    Praticamente mi servirebbe, sempre tramite script far accadere un paio di cosucce:

       def time  
         @time += 1
         case @time
         when 100
            @conteggio.bitmap = RPG::Cache.picture("3") rescue nil
         end
         case @time
         when 50
            @conteggio.bitmap = RPG::Cache.picture("2") rescue nil
         end
          case @time
          when 0
            @conteggio.bitmap = RPG::Cache.picture("1") rescue nil
            end
         if @time > 110
           if  $game_actors[1].hp >= 1
             $game_variables[5] += 1
             $game_switches[1] = true
             $game_map.need_refresh = true
             $scene = Scene_Map.new
           else  $game_actors[1].hp == 0
           $scene = Scene_Gameover.new
           end
           end
         end
    

    Praticamente questo è un frammento dello script_rianimazione modificato da me. Lo scopo è quello di simulare uno schienamento di wrestling.
    In questo modo in 110 di tempo, l'arbitro conta i famosi 3 tempi e funziona.
    Il problema subentra nel momento in cui vorrei che se l'eroe si ricarica del 30 % prima del terzo tempo, avviene la scene_map. Ovviamente dovrei modificare anche la condizione della Scene_Gameover.new con Se eroe hp è -30%

    Quindi il mio dubbio è:

    Come posso modificare questo punto if $game_actors[1].hp >= 1 per renderlo in "Se l'eroe ha recuperato il 30% dell'hp"?

    E:

    Come posso via script modificare la grafica di un evento su mappa? (Per intenderci dovrei far contare l'arbitro e quindi assegnargli la grafica del conteggio)
    Anche se questo punto potrei sorvolarlo rendendo magari l'arbitro una picture e quindi dilazionando i when in altri frammenti e quindi mostrare la posa come picture.

  16. Gabriel il tuo suggerimento old school è valido e ti ringrazio per l'intervento.

    In questi giorni ho adattato anche lo script di Guardian modificando semplicemente il valore in queste righe:

          # If height exceeds 32, then add 31
          if @event.name[-6,6] == "bottom"
            return z - 40
          end
          return z + ((height > 32) ? 31 : 0)
    

    return z era uguale a 32, di conseguenza lo script si muoveva solo verso la distanza di 32 pixel. Aumentandolo, aumenta anche il range, portandolo ben oltre la sola casella.

×
×
  • Create New...