Jump to content
Rpg²S Forum

mikb89

Utenti
  • Posts

    655
  • Joined

  • Last visited

Posts posted by mikb89

  1. Fondamentalmente dovreste mettere in chiaro da che progetto cominciare o addirittura abbozzare già 2-3 progetti e farvi un'idea chiara di chi e cosa vi serve.

    Fatto, fatto. (:

    E ci servono grafici! Come dice Flame.

    E un altro programmatore, che fra sito, forum, editor e infine giochi finisce che resto indietro. C'è ProGM in sospeso, ma se soddisfate i requisiti e la cosa vi interessa (ma vi deve interessare per davvero), proponetevi.

    Questo in generale, anche per i grafici. E se siete idonei o meno lasciatelo scegliere a noi. Non abbiate paura (:

     

    Ora io probabilmente sono più bravo a scrivere codice che parole di incoraggiamento, ma il concetto è quello.

     

    Anche io ci avevo pensato su e pure Pech mi aveva contattato, ma non mi sento "professionale" sotto quel punto di vista e neanche abbastanza versatile per ciò che può essermi chiesto di disegnare.

    Non ce lo si aspetta da uno come te un messaggio che dice di non essere abbastanza adatto D:

    Così terrorizzi anche gli altri xD

     

    Scherzi a parte, cercate di non autogiudicarvi!

    Ora io non so quanto Pech è sceso nel dettaglio su quel che c'è da fare, e magari, Test, avevi abbastanza elementi per valutare. Ma in generale, guardate la mappa del team nel primo topic. Dice che c'è un posto vuoto come disegnatore. È quello che fate? Basta questo, non andate a pensare "Oddio, se mi si chiede questa cosa non so farla... no, no, non posso partecipare D: D:"

    Più che altro perché è una cosa che pensiamo un po' tutti (: ed è l'80% delle volte una cosa intangibile.

     

     

    Ah, e pm per Blackbird ^^

  2. Beh sì, coi computer di oggi si può anche dire: "Oh, a me vien facile svilupparci e le uso. L'utente che s'arrangi."

     

    Però appunto perché ti facilitano di tanto il lavoro, i problemi che avrai quando non potrai usarle saranno ancora più problematici xD

     

    Personalmente comunque ho preso ad usarle, da quando ho comprato il computer nuovo e le utility che ho fatto sono tutte e tre in C#.

     

    Ciò non toglie però un grosso disagio a chi ha computer più vecchiotti e quindi con spazio limitato (che non è che puoi installarle su disco esterno come se niente fosse) e a chi non ha una connessione ADSL per scaricarle.

    Ma va bene, alla fine ci evolviamo quindi ok, facciamo che le tollero xD

     

    (Comunque ti odio perché hai ripreso questo topic vecchio xD)

  3. Guardian, intendi un Project Templater, un Demo Templater, un Resource Templater e così via? xD

    Si potrebbe fare :D Magari però tutto in uno, ma non vorrei appesantire troppo... vediamo che penso ^^

     

    Comunque un altro script pronto da postare ce l'ho (ma non vi dico che cosa riguarda :P) e poi sto lavorando su quello delle ombre (conversione per VX e VX Ace + potenziamento, se mi riesce).

    E il programmino l'ho fatto prima di postarli, così avrei faticato di meno xD

  4. http://img804.imageshack.us/img804/4681/scripttemplater64.png

     

    Fremi dalla voglia di postare script, desideri vedere quei topic col tuo nome e con tanti bei contenuti dentro, ma ti scoccia terribilmente?

     

    Con questo programma tutto sarà più semplice e divertente!

     

    http://img607.imageshack.us/img607/2980/scriptt11.png

    Tutto quello che dovete fare è compilare i campi desiderati.

    Posizionandosi col mouse sulla parte sinistra, sui nomi dei campi, vi appariranno dei suggerimenti che vi aiuteranno nella compilazione.

     

    Una volta completato, potete salvare il tutto come file .stf (Script Templater File), oppure scegliere il forum di destinazione e cliccare su Esporta per copiare negli appunti il template pronto per essere incollato su un nuovo topic.

    I tasti disattivati (quelli per caricare e postare roba dal programma stesso), sono disattivati. Non l'avreste mai detto, eh? In una prossima versione penserò a farli funzionare, se possibile (anche se ho già visto che per Mediafire non ci sono speranze).

    Consentendo di supportare il programma, nel vostro template sarà inserito alla fine un link a questo topic.

     

    La nuova versione (1.3) consente inoltre di poter aprire direttamente i file .stf, che assumeranno un'icona di queste fattezze:

    http://img109.imageshack.us/img109/5990/stf4.png

    L'associazione verrà eseguita all'apertura del programma (su Windows Vista, 7 e 8 sarà necessario avviarlo come amministratore), memorizzando automaticamente l'applicazione nell'indirizzo corrente.

     

    Questo è il link: http://www.mediafire.com/?kj4rg53j3ag3osc

     

    E adesso, postate un sacco! xD

  5. Per fare un'intro ti basta toccare lo Scene_Title, non c'è bisogno di gesti radicali tipo eliminare tutto quanto xD

    Comunque sì, dovresti riprogrammare tutto, e il miglior modo per farlo è sapere come funziona, e puoi impararlo spulciando appunto gli script standard.

     

    Per mostrare un'immagine devi creare un oggetto Sprite (@spr = Sprite.new), dopodichè assegnare l'immagine al parametro bitmap.

    L'immagine puoi caricarla tramite le funzioni Cache (vedi primi script, dovrebbe essere il terzo) oppure con Bitmap.new("Graphics/sottocartella/nomefile").

    Quindi: @spr.bitmap = Bitmap.new("Graphics/Pictures/Blablabla")

    Ricordati che a ogni ciclo (dentro la def update) lo sprite va aggiornato con @spr.update e che la bitmap una volta non più necessaria va liberata dalla memoria con @spr.bitmap.dispose

    Quest'ultima operazione va effettutata anche se devi caricare una seconda bitmap (per ottenere l'animazione).

    Alla fine, dentro la def dispose, liberi l'ultima bitmap e poi anche lo sprite con @spr.dispose

     

    Non so a che livello sei, nel caso se qualcosa l'ho spiegata troppo superficialmente chiedi ^^

  6. Grazie ^^

    Su XP ho avuto difficoltà per quanto riguarda l'audio D: ha un sistema diverso da quello di VX e Ace.

    Comunque alla fine ne sono uscito vittorioso! :D

     

    E prima della solita lunga pausa che intercorre tra una tua apparizione e l'altra! XD

    ahahah mi sono fatto conoscere xD

  7. Non ho nulla! D: Nè android nè Iqualcosa nè nè! D:

    :(

     

    Sì, si programma con XNA! :D

    E per quanto riguarda la fisica ci sono un sacco di cose già a disposizione di standard ^^

    Ho seguito una volta un Microsoft Lab di un paio d'ore passate quasi interamente per installare Visual Studio e SDK e gli ultimi 10 minuti a creare un gioco in cui c'è un uovo che cade e tu lo puoi prendere e lanciare xD

  8. Io qualche menata in vettoriale so farla, ma credo di servire più come programmatore xD

     

    Comunque anche qui c'è un programma open source abbastanza valido che si chiama Inkscape.

    Qualcosina di vettoriale è possibile farla anche tramite Photoshop, con le forme modificando i punti. Ci ho fatto così i personaggi di Cut the angry fruit, se vuoi ti passo i psd. Solo che in Photoshop mancano (o è difficile trovarli) gli strumenti per combinare le forme. Intersezione, differenza, somma, divisione, ecc. In compenso ci sono più effetti preimpostati e maneggiare le forme è più intuitivo.

    Probabilmente Illustrator (che non ho provato) sarà un mix dei due, però c'è sempre da comprare la licenza e, conoscendo l'Adobe, costerà un botto xD

     

    Il 3D è più difficile da imparare, se vogliamo è un vettoriale tridimensionale, quindi magari per adesso concentrati sul vettoriale se vuoi impararlo tu.

  9. Mh a mettere le icone non ci avevo pensato, potrebbe essere un'idea per la prossima versione (:

    Oppure sì, si mette una picture con icona + testo ^^

     

    Vedrò, l'idea era di mantenerlo semplice come impostazione, però un'icona credo ci possa stare. Grazie! :)

  10. Capisco, il fatto è che in questo modo se faccio cambiamenti al codice mi basta aggiornarlo un volta sola per tutti i forum.

    Appena posso sistemo tutto ^^

     

    Mh a differenza dell'event's balloon qui il popup non puoi richiamarlo a piacimento ma appare solo quando l'evento è vicino. Quello è più indicato per messaggi, questo per popup informativi (anche se nella demo l'ho usato per fare apparire messaggi). Comunque sì, grosso modo si possono alternare.

  11. Some Popup

    Versione 2.8

    Descrizione



    http://img818.imageshack.us/img818/2406/somepopupxp.png


    Con questo script potrete specificare del testo in un evento che verrà mostrato quando il giocatore si avvicina. Sono disponibili diversi effetti di comparsa ed è possibile utilizzare picture anziché testo. Il testo può essere mostrato, oltre che sul giocatore, anche agganciato all'evento, per scomparire quando questo si allontana. È possibile riprodurre un suono SE, ME, BGM e BGS, sia generico che personalizzato per evento.



    Autore




    mikb89


    Allegati





    Demo multilingua v. 2.8 (800.43 KB)

    http://www.mediafire.com/?mmg50jxofjq9jtl



    Istruzioni per l'uso



    Inserite lo script sotto Materials. Le istruzioni sono fra i commenti.



    Script



     

    # Some Popup v 2.8
    # XP version
    # by mikb89
    
    # Dettagli:
    # Mostra del testo in popup quando vicino a un evento.
    # Il testo può essere piazzato al centro dello schermo, sul giocatore o
    # sull'evento.
    # Scrivi [pop] in un commento per assegnare il popup e scrivi nel commento
    # successivo il testo che verrà mostrato.
    # NOTA: [pop] è di default, ma puoi cambiarlo dalle configurazioni.
    # Il testo può essere anche ingrigito, per indicare qualcosa non disponibile.
    # Per far questo, scrivi [npop] invece di [pop].
    # Puoi anche mostrare una Picture anziché testo. Per far ciò, il primo
    # commento deve essere [ppop] e il secondo conterrà il nome della Picture.
    # È possibile riprodurre suoni/musica per ogni evento. Scrivi in un terzo
    # commento queste linee:
    # SE (o ME o BGM o BGS)
    # Nome del file audio
    # Volume (1-100)
    # Pitch (50-150)
    # Puoi omettere le ultime due e saranno impostate di default:
    # Volume 80 per BGS e SE, 100 per BGM e ME
    # Pitch 100
    # ATTENZIONE: i commenti devono essere i primi due (o tre) comandi dell'evento.
    #
    # Puoi anche chiamare uno script con:
    # $game_player.remove_town_sprite
    # scritto per togliere il popup. Ad esempio se metti il popup su un evento
    # con cui parlerai.
    
    # Configurazioni:
    module SPOP
    ID = "pop" # Metti "loc" per compatibilità con vecchie versioni.
    # Cosa scrivere per identificare l'evento con del popup.
    # Se il valore è ad esempio "pop" dovrai scrivere:
    # - [pop] per il tipico popup;
    # - [npop] per il popup ingrigito;
    # - [ppop] per il popup con Picture.
    AUTO_REMOVE_AT_TRANSFER = true
    # Testa per capire cosa intendo.
    # true - stesso effetto delle città in Chrono Trigger.
    # false - il popup rimarrà al trasporto. Se ne andrà al primo movimento.
    GRAYED_COLOR = Color.new(255,245,255,175)
    # Valore del colore grigio. Rosso, verde, blu, alpha. Da 0 a 255.
    WALK_8_DIR = true
    # Non devi aggiungere lo script per le 8 direzioni. Metti true qui.
    POPUP_TRANSITION = 9
    # Effetti di s/comparsa del popup.
    # 0: nessun effetto
    # 1: dissolvenza
    # 2: movimento su/giù
    # 3: movimento & dissolvenza
    # 4: movimento ridotto
    # 5: movimento ridotto & dissolvenza
    # 6: zoom in/out
    # 7: zoom & dissolvenza
    # 8: zoom & movimento
    # 9: zoom, movimento, dissolvenza
    # 10: zoom & movimento ridotto
    # 11: zoom, movimento ridotto, dissolvenza
    POPUP_SOUND = ["SE", "046-Book01", 80, 100]
    # Cosa riprodurre al popup.
    # 4 parametri:
    # 1. Tipo di suono ("SE", "ME", "BGS", "BGM");
    # 2. Nome del file;
    # 3. Volume (0-100);
    # 4. Pitch (50-150 (o 15-453 se vuoi i MASSIMI valori)).
    # Per disattivare metti "" al 2. O metti 0 al 3. Esempi:
    # POPUP_SOUND = ["SE", "", 80, 100]
    # POPUP_SOUND = ["SE", "046-Book01", 0, 100]
    # Non saranno riprodotti.
    # Eventuali BGM o BGS in riproduzione dissolveranno insieme alla grafica
    # e poi ripartiranno. Non valido se usi SE/ME.
    
    # Esempi con ME, BGM, BGS:
    # POPUP_SOUND = ["ME", "010-Item01", 100, 100]
    # POPUP_SOUND = ["BGM", "023-Town01", 100, 100]
    # POPUP_SOUND = ["BGS", "016-Drips01", 100, 100]
    POPUP_BINDING = 2
    # Dove deve essere agganciato il popup.
    # 0: centro dello schermo
    # 1: sul giocatore
    # 2: sugli eventi
    end
    
    # Altro:
    # Vedrai 'town' (città) ovunque nello script. Questo perché il SECONDO nome
    # dato allo script era: "Popup town name".
    # Il PRIMO nome originale era "Location system", da qui il [loc] da mettere
    # nel commento. Comunque non ho mai pubblicato la versione con questo nome
    # quindi non troverai niente riguardo a questa.
    
    #Codename: spop
    
    ($imported ||= {})[:mikb89_spop] = true
    
    # Licenza:
    # - Puoi chiedermi di includere il supporto per altri script, a patto che usino
    # il $imported[script] = true;
    # - Puoi modificare e anche ripostare i miei script, dopo una mia risposta. Per
    # ripostarli, comunque, devi aver fatto pesanti modifiche o porting, non puoi
    # fare un post con lo script così com'è;
    # - Puoi usare i miei script per fare quel che vuoi, da giochi gratis a liberi
    # a commerciali. Apprezzerei comunque essere messo al corrente di quello che
    # stai creando;
    # - Devi creditarmi, se usi questo script o parte di esso.
    
    class Game_Player < Game_Character
    #--------------------------------------------------------------------------
    # * Object Initialization
    #--------------------------------------------------------------------------
    #class Game_Player#def initialize()
    def initialize
    super
    @town_sprite = nil
    @town_text = ""
    reset_audio
    @town_ex_audio = [nil, ""]
    @sync_event = nil
    end
    #--------------------------------------------------------------------------
    # * Frame Update
    #--------------------------------------------------------------------------
    #class Game_Player#def update() <- rewritten
    def update
    # Remember whether or not moving in local variables
    last_moving = moving?
    # If moving, event running, move route forcing, and message window
    # display are all not occurring
    unless moving? or $game_system.map_interpreter.running? or
    @move_route_forcing or $game_temp.message_window_showing
    # Move player in the direction the directional button is being pressed
    move_by_input # Edited from the original
    end
    # Remember coordinates in local variables
    last_real_x = @real_x
    last_real_y = @real_y
    super
    # Some Popup addition START
    update_town_sprite
    # Some Popup addition END
    # If character moves down and is positioned lower than the center
    # of the screen
    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
    # Scroll map down
    $game_map.scroll_down(@real_y - last_real_y)
    end
    # If character moves left and is positioned more let on-screen than
    # center
    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
    # Scroll map left
    $game_map.scroll_left(last_real_x - @real_x)
    end
    # If character moves right and is positioned more right on-screen than
    # center
    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
    # Scroll map right
    $game_map.scroll_right(@real_x - last_real_x)
    end
    # If character moves up and is positioned higher than the center
    # of the screen
    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
    # Scroll map up
    $game_map.scroll_up(last_real_y - @real_y)
    end
    # If not moving
    unless moving?
    # If player was moving last time
    if last_moving
    # Event determinant is via touch of same position event
    result = check_event_trigger_here([1,2])
    # If event which started does not exist
    if result == false
    # Disregard if debug mode is ON and ctrl key was pressed
    unless $DEBUG and Input.press?(Input::CTRL)
    # Encounter countdown
    if @encounter_count > 0
    @encounter_count -= 1
    end
    end
    end
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
    # Same position and front event determinant
    check_event_trigger_here([0])
    check_event_trigger_there([0,1,2])
    end
    end
    end
    #--------------------------------------------------------------------------
    # * Part of the update
    #--------------------------------------------------------------------------
    #class Game_Player#def update_town_sprite()
    def update_town_sprite
    if @town_sprite != nil
    case SPOP::POPUP_BINDING
    when 1
    @town_sprite.x = screen_x
    if @town_sprite.y != screen_y && screen_y != @sync_y
    @town_sprite.y = screen_y - (@town_sprite.y - @sync_y).abs
    @sync_y = screen_y
    end
    when 2
    if @sync_event != nil
    @town_sprite.x = @sync_event.screen_x
    if @town_sprite.y != @sync_event.screen_y && @sync_event.screen_y != @sync_y
    @town_sprite.y = @sync_event.screen_y - (@town_sprite.y - @sync_y).abs
    @sync_y = @sync_event.screen_y
    end
    sx = @sync_event.x - @x
    sy = @sync_event.y - @y
    remove_town_sprite if Math.hypot(sx, sy) > 2
    end
    end
    rem = false
    @town_sprite.update
    if [1,3,5,7,9,11].include?(SPOP::POPUP_TRANSITION)
    @town_sprite.opacity -= 15 if @town_sprite.z == 5 && @town_sprite.opacity > 0
    @town_sprite.opacity += 15 if @town_sprite.z == 10 && @town_sprite.opacity < 255
    rem = true if @town_sprite.opacity <= 0
    end
    if [2,3,4,5,8,9,10,11].include?(SPOP::POPUP_TRANSITION)
    mov = [4,5,10,11].include?(SPOP::POPUP_TRANSITION) ? 32 : 64
    val = mov/16
    t = @town_sprite.y
    @town_sprite.y += val if @town_sprite.z == 5 && @toadd > -mov
    @town_sprite.y -= val if @town_sprite.z == 10 && @toadd > 0
    @toadd -= val if t != @town_sprite.y
    rem = true if @toadd <= -mov
    end
    if [6,7,8,9,10,11].include?(SPOP::POPUP_TRANSITION)
    if @town_sprite.z == 5 && @town_sprite.zoom_x > 0
    @town_sprite.zoom_x -= 0.25
    @town_sprite.zoom_y -= 0.25
    end
    if @town_sprite.z == 10 && @town_sprite.zoom_x < 1
    @town_sprite.zoom_x += 0.25
    @town_sprite.zoom_y += 0.25
    end
    rem = true if @town_sprite.zoom_x <= 0
    end
    if @town_ex_audio[0] != nil
    if @audiowait > 0
    @audiowait -= 1
    elsif @audiowait == 0
    if @town_audio[0] != nil
    $game_system.method("#{@town_audio[1]}_play").call(@town_audio[0])
    if @town_ex_audio[1] != @town_audio[1]
    $game_system.method("#{@town_ex_audio[1]}_play").call(@town_ex_audio[0])
    @town_ex_audio = [nil, ""]
    end
    reset_audio if @town_audio[0].name != SPOP::POPUP_SOUND[1]
    end
    @audiowait = -1
    end
    end
    remove_town_sprite(true) if rem
    end
    end
    #--------------------------------------------------------------------------
    # * Popup removal at straighten (scene change)
    #--------------------------------------------------------------------------
    if method_defined?(:straighten)
    alias_method(:straighten_b4_spop, :straighten) unless method_defined?(:straighten_b4_spop)
    end
    #class Game_Player#def straighten() <- aliased/added
    def straighten
    remove_town_sprite(true)
    if respond_to?(:straighten_b4_spop)
    straighten_b4_spop
    else
    super
    end
    end
    #--------------------------------------------------------------------------
    # * Player has moved?
    #--------------------------------------------------------------------------
    alias_method(:increase_steps_b4_spop, :increase_steps) unless method_defined?(:increase_steps_b4_spop)
    #class Game_Player#def increase_steps() <- aliased
    def increase_steps
    increase_steps_b4_spop
    @move_failed = false
    end
    #--------------------------------------------------------------------------
    # * Processing of Movement via input from the Directional Buttons
    #--------------------------------------------------------------------------
    #class Game_Player#def move_by_input()
    def move_by_input
    x, y = self.x, self.y
    @move_failed = true
    case SPOP::WALK_8_DIR ? Input.dir8 : Input.dir4
    when 1
    move_lower_left
    if @move_failed
    check_town(x-1, y+1)
    else
    check_town(x-2, y+2)
    end
    when 2
    move_down
    if @move_failed
    check_town(x, y+1)
    else
    check_town(x, y+2)
    end
    when 3
    move_lower_right
    if @move_failed
    check_town(x+1, y+1)
    else
    check_town(x+2, y+2)
    end
    when 4
    move_left
    if @move_failed
    check_town(x-1, y)
    else
    check_town(x-2, y)
    end
    when 6
    move_right
    if @move_failed
    check_town(x+1, y)
    else
    check_town(x+2, y)
    end
    when 7
    move_upper_left
    if @move_failed
    check_town(x-1, y-1)
    else
    check_town(x-2, y-2)
    end
    when 8
    move_up
    if @move_failed
    check_town(x, y-1)
    else
    check_town(x, y-2)
    end
    when 9
    move_upper_right
    if @move_failed
    check_town(x+1, y-1)
    else
    check_town(x+2, y-2)
    end
    end
    end
    #--------------------------------------------------------------------------
    # * Operations for sprite removal and audio stopping
    #--------------------------------------------------------------------------
    #class Game_Player#def remove_town_sprite(instant, audio)
    def remove_town_sprite(instant=false, audio=true)
    if @town_sprite != nil
    if instant || SPOP::POPUP_TRANSITION == 0
    if audio
    $game_system.method("#{@town_audio[1]}_stop").call if @town_audio[1] != ""
    $game_system.method("#{@town_ex_audio[1]}_play").call(@town_ex_audio[0]) if @town_ex_audio[1] != ""
    end
    @town_ex_audio = [nil, ""]
    @town_sprite.dispose
    @town_sprite = nil
    @sync_event = nil
    else
    @town_sprite.z = 5
    unless ["se", "me", ""].include?(@town_audio[1])
    $game_system.method("#{@town_audio[1]}_fade").call(4)
    end
    end
    end
    end
    #--------------------------------------------------------------------------
    # * Set the audio as the one specified in SPOP or passed
    #--------------------------------------------------------------------------
    #class Game_Player#def reset_audio(spn)
    def reset_audio(spn = SPOP::POPUP_SOUND)
    @town_audio = [(spn[1] == "" || spn[2] <= 0) ? nil :
    RPG::AudioFile.new(spn[1], spn[2], spn[3]),
    spn[0].downcase]
    end
    #--------------------------------------------------------------------------
    # * Check if there is a town event in front of the player
    #--------------------------------------------------------------------------
    #class Game_Player#def check_town(x, y)
    def check_town(x, y)
    return false if $game_system.map_interpreter.running?
    result = false
    for event in $game_map.events_xy(x, y)
    unless [1,2].include?(event.trigger) and event.priority_type == 1
    if event.list != nil
    if event.list[0].code == 108 and
    ["[#{SPOP::ID}]", "[n#{SPOP::ID}]", "[p#{SPOP::ID}]"].include?(event.list[0].parameters[0])
    result = true
    next if @town_sprite != nil && @town_sprite.z == 10 && @town_text == event.list[1].parameters[0]
    remove_town_sprite(true)
    @town_sprite = Sprite.new
    @town_sprite.z = 10
    if [6,7,8,9,10,11].include?(SPOP::POPUP_TRANSITION)
    @town_sprite.zoom_x = @town_sprite.zoom_y = 0.0
    end
    @town_sprite.opacity = 15 if [1,3,5,7,9,11].include?(SPOP::POPUP_TRANSITION)
    if event.list[0].parameters[0] != "[p#{SPOP::ID}]"
    @town_sprite.bitmap ||= Bitmap.new(1,1)
    siz = @town_sprite.bitmap.text_size(event.list[1].parameters[0])
    h = siz.height
    s = siz.width
    @town_sprite.bitmap.dispose
    @town_sprite.bitmap = Bitmap.new(s, 24)
    if event.list[0].parameters[0] == "[n#{SPOP::ID}]"
    ex = @town_sprite.bitmap.font.color
    @town_sprite.bitmap.font.color = SPOP::GRAYED_COLOR
    end
    @town_sprite.bitmap.draw_text(0,2,s,22,event.list[1].parameters[0],1)
    @town_sprite.bitmap.font.color = ex if event.list[0].parameters[0] == "[n#{SPOP::ID}]"
    else
    @town_sprite.bitmap = Cache.picture(event.list[1].parameters[0])
    s = @town_sprite.bitmap.width
    h = @town_sprite.bitmap.height
    end
    @town_text = event.list[1].parameters[0]
    @town_sprite.ox = s/2
    @town_sprite.oy = h/2
    case SPOP::POPUP_BINDING
    when 1
    @town_sprite.x = screen_x#*32+16
    @town_sprite.y = @sync_y = screen_y#*32+16
    when 2
    @town_sprite.x = event.screen_x#*32+16
    @town_sprite.y = @sync_y = event.screen_y#*32+16
    @sync_event = event
    else
    @town_sprite.x = 544/2# - s/2
    @town_sprite.y = 416/2# - h/2
    end
    @town_sprite.y -= 64 if [0,1,6,7].include?(SPOP::POPUP_TRANSITION)
    @town_sprite.y -= 32 if [4,5,10,11].include?(SPOP::POPUP_TRANSITION)
    @toadd = [2,3,4,5,8,9,10,11].include?(SPOP::POPUP_TRANSITION) ? 64 : 0
    @toadd -= 32 if [4,5,10,11].include?(SPOP::POPUP_TRANSITION)
    if @town_audio[0] != nil || event.list[2].code == 108
    if ["BGM", "ME", "BGS", "SE"].include?(event.list[2].parameters[0]) &&
    event.list[3].code == 408
    arr = []
    arr.push(event.list[2].parameters[0])
    arr.push(event.list[3].parameters[0])
    if event.list[4].code == 408
    arr.push(event.list[4].parameters[0].to_i)
    arr.push(event.list[5].parameters[0].to_i) if event.list[5].code == 408
    else
    arr.push(["BGS", "SE"].include?(event.list[2].parameters[0]) ? 80 : 100)
    end
    arr.push(100) if arr.size < 4
    reset_audio(arr)
    end
    if ["bgm", "bgs"].include?(@town_audio[1])
    @town_ex_audio = [$game_system.method("playing_#{@town_audio[1]}").call,
    @town_audio[1]]
    else
    @town_ex_audio[0] = nil
    end
    if @town_ex_audio[0] != nil
    $game_system.method("#{@town_ex_audio[1]}_fade").call(4)
    @audiowait = 4
    else
    $game_system.method("#{@town_audio[1]}_play").call(@town_audio[0])
    reset_audio if arr != nil
    end
    end
    end
    end
    end
    end
    remove_town_sprite unless result
    return result
    end
    end
    
    if SPOP::AUTO_REMOVE_AT_TRANSFER
    class Scene_Map
    #--------------------------------------------------------------------------
    # * Removing of town sprite when changing map
    #--------------------------------------------------------------------------
    alias_method(:transfer_player_b4_spop, :transfer_player) unless method_defined?(:transfer_player_b4_spop)
    #class Scene_Map#def transfer_player() <- aliased
    def transfer_player
    $game_player.remove_town_sprite(true, false)
    transfer_player_b4_spop
    end
    end
    end
    
    class Game_Map
    #--------------------------------------------------------------------------
    # * Get event list in x, y
    #--------------------------------------------------------------------------
    #class Game_Map#def events_xy(x, y)
    unless method_defined?(:events_xy)
    def events_xy(x, y)
    result = []
    for event in $game_map.events.values
    result.push(event) if event.x == x and event.y == y
    end
    return result
    end
    end
    end 

     



    Visibile anche su Pastebin.



    Bugs e Conflitti Noti



    Sovrascrive lo script per la camminata in 8 direzioni. O viene sovrascritto, a seconda. Per ovviare, questo script è stato incorporato ed è attivabile/disattivabile tramite opzione.



    Altri Dettagli



    Ringrazio Unamuno per aver chiesto la versione VX altrimenti non l'avrei postata né convertita e Guardian of Irael per avermi suggerito molti miglioramenti.

  12. Some Popup

    Versione 2.8

    Descrizione

     

     

    http://img835.imageshack.us/img835/5082/somepopupvxace.png

     

    Con questo script potrete specificare del testo in un evento che verrà mostrato quando il giocatore si avvicina. Sono disponibili diversi effetti di comparsa ed è possibile utilizzare picture anziché testo. Il testo può essere mostrato, oltre che sul giocatore, anche agganciato all'evento, per scomparire quando questo si allontana. È possibile riprodurre un suono SE, ME, BGM e BGS, sia generico che personalizzato per evento.

     

     

    Autore

     

    mikb89

     

    Allegati

     

     

    Demo multilingua v. 2.8 (1.35 MB)

     

     

    Istruzioni per l'uso

     

    Inserite lo script sotto Materials. Le istruzioni sono fra i commenti.

     

    Script

     

     

    # Some Popup v 2.8
    # VX Ace version
    # by mikb89
    
    # Dettagli:
    #  Mostra del testo in popup quando vicino a un evento.
    #  Il testo può essere piazzato al centro dello schermo, sul giocatore o
    #   sull'evento.
    #  Scrivi [pop] in un commento per assegnare il popup e scrivi nel commento
    #   successivo il testo che verrà mostrato.
    # NOTA: [pop] è di default, ma puoi cambiarlo dalle configurazioni.
    #  Il testo può essere anche ingrigito, per indicare qualcosa non disponibile.
    #   Per far questo, scrivi [npop] invece di [pop].
    #  Puoi anche mostrare una Picture anziché testo. Per far ciò, il primo
    #   commento deve essere [ppop] e il secondo conterrà il nome della Picture.
    #  È possibile riprodurre suoni/musica per ogni evento. Scrivi in un terzo
    #   commento queste linee:
    #    SE (o ME o BGM o BGS)
    #    Nome del file audio
    #    Volume (1-100)
    #    Pitch (50-150)
    #    Puoi omettere le ultime due e saranno impostate di default:
    #    Volume 80 per BGS e SE, 100 per BGM e ME
    #    Pitch 100
    # ATTENZIONE: i commenti devono essere i primi due (o tre) comandi dell'evento.
    #
    #  Puoi anche chiamare uno script con:
    #    $game_player.remove_town_sprite
    #   scritto per togliere il popup. Ad esempio se metti il popup su un evento
    #   con cui parlerai.
    
    # Configurazioni:
    module SPOP
     ID = "pop" # Metti "loc" per compatibilità con vecchie versioni.
      # Cosa scrivere per identificare l'evento con del popup.
      # Se il valore è ad esempio "pop" dovrai scrivere:
      #  - [pop] per il tipico popup;
      #  - [npop] per il popup ingrigito;
      #  - [ppop] per il popup con Picture.
     AUTO_REMOVE_AT_TRANSFER = true
      # Testa per capire cosa intendo.
      #  true - stesso effetto delle città in Chrono Trigger.
      #  false - il popup rimarrà al trasporto. Se ne andrà al primo movimento.
     GRAYED_COLOR = Color.new(255,245,255,175)
      # Valore del colore grigio. Rosso, verde, blu, alpha. Da 0 a 255.
     WALK_8_DIR = true
      # Non devi aggiungere lo script per le 8 direzioni. Metti true qui.
     POPUP_TRANSITION = 9
      # Effetti di s/comparsa del popup.
      #  0: nessun effetto
      #  1: dissolvenza
      #  2: movimento su/giù
      #  3: movimento & dissolvenza
      #  4: movimento ridotto
      #  5: movimento ridotto & dissolvenza
      #  6: zoom in/out
      #  7: zoom & dissolvenza
      #  8: zoom & movimento
      #  9: zoom, movimento, dissolvenza
      # 10: zoom & movimento ridotto
      # 11: zoom, movimento ridotto, dissolvenza
     POPUP_SOUND = ["SE", "Book1", 80, 100]
      # Cosa riprodurre al popup.
      # 4 parametri:
      #  1. Tipo di suono ("SE", "ME", "BGS", "BGM");
      #  2. Nome del file;
      #  3. Volume (0-100);
      #  4. Pitch (50-150 (o 15-453 se vuoi i MASSIMI valori)).
      # Per disattivare metti "" al 2. O metti 0 al 3. Esempi:
      #  POPUP_SOUND = ["SE", "", 80, 100]
      #  POPUP_SOUND = ["SE", "Book1", 0, 100]
      # Non saranno riprodotti.
      # Eventuali BGM o BGS in riproduzione dissolveranno insieme alla grafica
      #  e poi ripartiranno. Non valido se usi SE/ME.
    
      # Esempi con ME, BGM, BGS:
      #  POPUP_SOUND = ["ME", "Item", 100, 100]
      #  POPUP_SOUND = ["BGM", "Town1", 100, 100]
      #  POPUP_SOUND = ["BGS", "Clock", 100, 100]
     POPUP_BINDING = 2
      # Dove deve essere agganciato il popup.
      #  0: centro dello schermo
      #  1: sul giocatore
      #  2: sugli eventi
    end
    
    # Altro:
    #  Vedrai 'town' (città) ovunque nello script. Questo perché il SECONDO nome 
    #   dato allo script era: "Popup town name".
    #  Il PRIMO nome originale era "Location system", da qui il [loc] da mettere
    #   nel commento. Comunque non ho mai pubblicato la versione con questo nome
    #   quindi non troverai niente riguardo a questa.
    
    #Codename: spop
    
    ($imported ||= {})[:mikb89_spop] = true
    
    # Licenza:
    # - Puoi chiedermi di includere il supporto per altri script, a patto che usino
    #   il $imported[script] = true;
    # - Puoi modificare e anche ripostare i miei script, dopo una mia risposta. Per
    #   ripostarli, comunque, devi aver fatto pesanti modifiche o porting, non puoi
    #   fare un post con lo script così com'è;
    # - Puoi usare i miei script per fare quel che vuoi, da giochi gratis a liberi
    #   a commerciali. Apprezzerei comunque essere messo al corrente di quello che
    #   stai creando;
    # - Devi creditarmi, se usi questo script o parte di esso.
    
    class Game_Player < Game_Character
     #--------------------------------------------------------------------------
     # * Object Initialization
     #--------------------------------------------------------------------------
     alias_method(:initGP_b4_spop, :initialize) unless method_defined?(:initGP_b4_spop)
    #class Game_Player#def initialize() <- aliased
     def initialize
       initGP_b4_spop
       @town_sprite = nil
       @town_text = ""
       reset_audio
       @town_ex_audio = nil
       @sync_event = nil
     end
     #--------------------------------------------------------------------------
     # * Frame Update
     #--------------------------------------------------------------------------
     alias_method(:updateGP_b4_spop, :update) unless method_defined?(:updateGP_b4_spop)
    #class Game_Player#def update() <- aliased
     def update
       updateGP_b4_spop
       if @town_sprite != nil
         case SPOP::POPUP_BINDING
         when 1
           @town_sprite.x = $game_player.screen_x
           if @town_sprite.y != $game_player.screen_y && $game_player.screen_y != @sync_y
             @town_sprite.y = $game_player.screen_y - (@town_sprite.y - @sync_y).abs
             @sync_y = $game_player.screen_y
           end
         when 2
           if @sync_event != nil
             @town_sprite.x = @sync_event.screen_x
             if @town_sprite.y != @sync_event.screen_y && @sync_event.screen_y != @sync_y
               @town_sprite.y = @sync_event.screen_y - (@town_sprite.y - @sync_y).abs
               @sync_y = @sync_event.screen_y
             end
             remove_town_sprite if Math.hypot(@sync_event.distance_x_from($game_player.x), @sync_event.distance_y_from($game_player.y)) > 2
           end
         end
         rem = false
         @town_sprite.visible = SceneManager.scene_is?(Scene_Map)
         @town_sprite.update
         if [1,3,5,7,9,11].include?(SPOP::POPUP_TRANSITION)
           @town_sprite.opacity -= 15 if @town_sprite.z == 5 && @town_sprite.opacity > 0
           @town_sprite.opacity += 15 if @town_sprite.z == 10 && @town_sprite.opacity < 255
           rem = true if @town_sprite.opacity <= 0
         end
         if [2,3,4,5,8,9,10,11].include?(SPOP::POPUP_TRANSITION)
           mov = [4,5,10,11].include?(SPOP::POPUP_TRANSITION) ? 32 : 64
           val = mov/16
           t = @town_sprite.y
           @town_sprite.y += val if @town_sprite.z == 5 && @toadd > -mov
           @town_sprite.y -= val if @town_sprite.z == 10 && @toadd > 0
           @toadd -= val if t != @town_sprite.y
           rem = true if @toadd <= -mov
         end
         if [6,7,8,9,10,11].include?(SPOP::POPUP_TRANSITION)
           if @town_sprite.z == 5 && @town_sprite.zoom_x > 0
             @town_sprite.zoom_x -= 0.25
             @town_sprite.zoom_y -= 0.25
           end
           if @town_sprite.z == 10 && @town_sprite.zoom_x < 1
             @town_sprite.zoom_x += 0.25
             @town_sprite.zoom_y += 0.25
           end
           rem = true if @town_sprite.zoom_x <= 0
         end
         if @town_ex_audio != nil
           if @audiowait > 0
             @audiowait -= 1
           elsif @audiowait == 0
             if @town_audio != nil
               @town_audio.play
               if @town_ex_audio.class != @town_audio.class
                 @town_ex_audio.replay
                 @town_ex_audio = nil
               end
               reset_audio if @town_audio.name != SPOP::POPUP_SOUND[1]
             end
             @audiowait = -1
           end
         end
         remove_town_sprite(true) if rem
       end
     end
     #--------------------------------------------------------------------------
     # * Removing of town sprite when changing map
     #--------------------------------------------------------------------------
     alias_method(:perform_transfer_b4_spop, :perform_transfer) unless method_defined?(:perform_transfer_b4_spop)
    #class Game_Player#def perform_transfer() <- aliased
     def perform_transfer
       remove_town_sprite(true, false) if SPOP::AUTO_REMOVE_AT_TRANSFER
       perform_transfer_b4_spop
     end
     #--------------------------------------------------------------------------
     # * Processing of Movement via input from the Directional Buttons
     #--------------------------------------------------------------------------
    #class Game_Player#def move_by_input() <- rewritten
     def move_by_input
       return unless movable?
       return if $game_map.interpreter.running?
       x, y = self.x, self.y
       case SPOP::WALK_8_DIR ? Input.dir8 : Input.dir4
       when 1
         move_diagonal(4,2)#lower_left
         if !@move_succeed
           check_town(x-1, y+1)
         else
           check_town(x-2, y+2)
         end
       when 2
         move_straight(2)#down
         if !@move_succeed
           check_town(x, y+1)
         else
           check_town(x, y+2)
         end
       when 3
         move_diagonal(6,2)#lower_right
         if !@move_succeed
           check_town(x+1, y+1)
         else
           check_town(x+2, y+2)
         end
       when 4
         move_straight(4)#left
         if !@move_succeed
           check_town(x-1, y)
         else
           check_town(x-2, y)
         end
       when 6
         move_straight(6)#right
         if !@move_succeed
           check_town(x+1, y)
         else
           check_town(x+2, y)
         end
       when 7
         move_diagonal(4,8)#upper_left
         if !@move_succeed
           check_town(x-1, y-1)
         else
           check_town(x-2, y-2)
         end
       when 8
         move_straight(8)#up
         if !@move_succeed
           check_town(x, y-1)
         else
           check_town(x, y-2)
         end
       when 9
         move_diagonal(6,8)#upper_right
         if !@move_succeed
           check_town(x+1, y-1)
         else
           check_town(x+2, y-2)
         end
       end
     end
     #--------------------------------------------------------------------------
     # * Operations for sprite removal and audio stopping
     #--------------------------------------------------------------------------
    #class Game_Player#def remove_town_sprite(instant, audio)
     def remove_town_sprite(instant=false, audio=true)
       if @town_sprite != nil
         if instant || SPOP::POPUP_TRANSITION == 0
           if audio
             @town_audio.class.stop if @town_audio != nil
             @town_ex_audio.replay if @town_ex_audio != nil
           end
           @town_ex_audio = nil
           @town_sprite.dispose
           @town_sprite = nil
           @sync_event = nil
         else
           @town_sprite.z = 5
           unless @town_audio.is_a?(RPG::SE)
             @town_audio.class.fade(4) if @town_audio != nil
           end
         end
       end
     end
     #--------------------------------------------------------------------------
     # * Set the audio as the one specified in SPOP or passed
     #--------------------------------------------------------------------------
    #class Game_Player#def reset_audio(spn)
     def reset_audio(spn = SPOP::POPUP_SOUND)
       @town_audio = (spn[1] == "" ||
                     spn[2] <= 0) ? nil :
                       case spn[0]
                       when "BGM"; RPG::BGM.new(spn[1], spn[2], spn[3])
                       when "BGS"; RPG::BGS.new(spn[1], spn[2], spn[3])
                       when "ME"; RPG::ME.new(spn[1], spn[2], spn[3])
                       when "SE"; RPG::SE.new(spn[1], spn[2], spn[3])
                       end
     end
     #--------------------------------------------------------------------------
     # * Check if there is a town event in front of the player
     #--------------------------------------------------------------------------
    #class Game_Player#def check_town(x, y)
     def check_town(x, y)
       return false if $game_map.interpreter.running?
       result = false
       for event in $game_map.events_xy(x, y)
         unless [1,2].include?(event.trigger) and event.priority_type == 1
           if event.list != nil
             if event.list[0].code == 108 and
               ["[#{SPOP::ID}]", "[n#{SPOP::ID}]", "[p#{SPOP::ID}]"].include?(event.list[0].parameters[0])
               result = true
               next if @town_sprite != nil && @town_sprite.z == 10 && @town_text == event.list[1].parameters[0]
               remove_town_sprite(true)
               @town_sprite = Sprite.new
               @town_sprite.z = 10
               if [6,7,8,9,10,11].include?(SPOP::POPUP_TRANSITION)
                 @town_sprite.zoom_x = @town_sprite.zoom_y = 0.0
               end
               @town_sprite.opacity = 15 if [1,3,5,7,9,11].include?(SPOP::POPUP_TRANSITION)
               if event.list[0].parameters[0] != "[p#{SPOP::ID}]"
                 @town_sprite.bitmap ||= Bitmap.new(1,1)
                 siz = @town_sprite.bitmap.text_size(event.list[1].parameters[0])
                 h = siz.height
                 s = siz.width
                 @town_sprite.bitmap.dispose
                 @town_sprite.bitmap = Bitmap.new(s, 24)
                 if event.list[0].parameters[0] == "[n#{SPOP::ID}]"
                   ex = @town_sprite.bitmap.font.color
                   @town_sprite.bitmap.font.color = SPOP::GRAYED_COLOR
                 end
                 @town_sprite.bitmap.draw_text(0,2,s,22,event.list[1].parameters[0],1)
                 @town_sprite.bitmap.font.color = ex if event.list[0].parameters[0] == "[n#{SPOP::ID}]"
               else
                 @town_sprite.bitmap = Cache.picture(event.list[1].parameters[0])
                 s = @town_sprite.bitmap.width
                 h = @town_sprite.bitmap.height
               end
               @town_text = event.list[1].parameters[0]
               @town_sprite.ox = s/2
               @town_sprite.oy = h/2
               case SPOP::POPUP_BINDING
               when 1
                 @town_sprite.x = $game_player.screen_x#*32+16
                 @town_sprite.y = @sync_y = $game_player.screen_y#*32+16
               when 2
                 @town_sprite.x = event.screen_x#*32+16
                 @town_sprite.y = @sync_y = event.screen_y#*32+16
                 @sync_event = event
               else
                 @town_sprite.x = 544/2# - s/2
                 @town_sprite.y = 416/2# - h/2
               end
               @town_sprite.y -= 64 if [0,1,6,7].include?(SPOP::POPUP_TRANSITION)
               @town_sprite.y -= 32 if [4,5,10,11].include?(SPOP::POPUP_TRANSITION)
               @toadd = [2,3,4,5,8,9,10,11].include?(SPOP::POPUP_TRANSITION) ? 64 : 0
               @toadd -= 32 if [4,5,10,11].include?(SPOP::POPUP_TRANSITION)
               if @town_audio != nil || event.list[2].code == 108
                 if ["BGM", "ME", "BGS", "SE"].include?(event.list[2].parameters[0]) &&
                   event.list[3].code == 408
                   arr = []
                   arr.push(event.list[2].parameters[0])
                   arr.push(event.list[3].parameters[0])
                   if event.list[4].code == 408
                     arr.push(event.list[4].parameters[0].to_i)
                     arr.push(event.list[5].parameters[0].to_i) if event.list[5].code == 408
                   else
                     arr.push(["BGS", "SE"].include?(event.list[2].parameters[0]) ? 80 : 100)
                   end
                   arr.push(100) if arr.size < 4
                   reset_audio(arr)
                 end
                 @town_ex_audio = @town_audio.class.last if [RPG::BGM, RPG::BGS].include?(@town_audio.class)
                 if @town_ex_audio != nil
                   @town_ex_audio.class.fade(4)
                   @audiowait = 4
                 else
                   @town_audio.play
                   reset_audio if arr != nil
                 end
               end
             end
           end
         end
       end
       remove_town_sprite unless result
       return result
     end
    end
    
    #--------------------------------------------------------------------------
    # * Sprite removal at Save (can't save a Sprite) and End
    #--------------------------------------------------------------------------
    class Scene_Save < Scene_File
     if method_defined?(:start)
       alias_method(:start_SSav_b4_spop, :start) unless method_defined?(:start_SSav_b4_spop)
     end
    #class Scene_Save#def start() <- aliased/added
     def start
       if respond_to?(:start_SSav_b4_spop)
         start_SSav_b4_spop
       else
         super
       end
       $game_player.remove_town_sprite(true)
     end
    end
    
    class Scene_End < Scene_MenuBase
     alias_method(:start_SEnd_b4_spop, :start) unless method_defined?(:start_SEnd_b4_spop)
    #class Scene_End#def start() <- aliased
     def start
       start_SEnd_b4_spop
       $game_player.remove_town_sprite(true)
     end
    end

     

    Visibile anche
    .

     

    Bugs e Conflitti Noti

     

     

    Sovrascrive lo script per la camminata in 8 direzioni. O viene sovrascritto, a seconda. Per ovviare, questo script è stato incorporato ed è attivabile/disattivabile tramite opzione.

     

    Altri Dettagli

     

     

    Ringrazio
    per aver chiesto la versione VX altrimenti non l'avrei postata né convertita e
    per avermi suggerito molti miglioramenti.
  13. Le risoluzioni (intese come larghezza x altezza) possono essere senza limiti, però il sistema fa in modo di suddividerle in 4 (mi pare) cioè low - mid - normal - hi. Gli eventuali pixel in più si tagliano mettendo bordi neri oppure se c'è una mappa facciamo vedere più tile o soluzioni di questo tipo. In alternativa si può stretchare tutto quanto, ma non so quanto sia buona come scelta.

     

    Dall'emulatore però possiamo provare tutte le risoluzioni che vogliamo quindi non c'è il problema di dover possedere millemila Android per essere sicuri che non sfori nulla (:

     

    OpenGL ES è una versione mobile delle OpenGL. Sono delle librerie, cioè contengono funzioni per gestire la grafica.

     

     

    La pagina del forum credo parli di license di un altro tipo, ma a dire il vero non ci ho capito molto nemmeno io ^^

    Guardian tu hai un Android? :)

  14. Scusa Pech xD

     

     

    Allora, io ho iniziato un po' di tempo fa a sviluppare qualcosa per Android, che a quanto credo non richiede acquisto di licenze per pubblicare. Giusto?

     

    Per Windows Phone 7 ho fatto qualche prova ma il mio computer riesce a fare girare l'emulatore a fatica quindi mi sono stancato. Comunque se ci si mette seriamente so che la Microsoft (non so se lo fa ancora) ti manda uno smartphone per testarci le tue applicazioni, quindi il problema emulatore non sarebbe un problema.

     

    Però boh, io direi di investire il meno possibile all'inizio e pensare ad Android, che credo conti più dispositivi rispetto a iPhone e WP7 messi assieme (o almeno vedo un sacco di gente in possesso di un Android).

     

     

     

    Per quanto riguarda la programmazione vera e propria non è un problema, quindi almeno su questo qualsiasi piattaforma scegliamo va benissimo.

  15. Ambient Sound

    Descrizione

     

    Con questo script puoi impostare gli eventi per riprodurre suoni se accanto al giocatore, variando volume, pitch, ecc.

    Puoi anche personalizzare gli effetti cambiando le caratteristiche audio, via codice.

    Per usare questo script bisogna configurare nello script gli effetti, quindi scriverne solo il nome in un commento nella pagina dell'evento voluto.

     

     

    Autore

     

    mikb89

     

     

    Allegati

     

    Demo multilingua v. 1.0 (1,33MB)

     

     

    Istruzioni per l'uso

     

    Copiare lo script normalmente sotto Modules e sopra Main, quindi configurare gli effetti voluti.

     

     

    Script

     

    # Ambient Sound v. 1.0
    # VX Ace version
    # by mikb89
    
    # Dettagli:
    #  Le possibilità audio di RPG Maker fanno schifo. C'è questo Audio Pump
    #   Up - FMOD Ex (script che estende il sistema audio usando le librerie FMod)
    #   e lo menzionerò pressoché ovunque qui e lì nella demo. Comunque questo
    #   script funziona lo stesso anche senza aggiungerlo.
    #  Quello che QUESTO script fa penso sia chiaro. Puoi impostare gli eventi per
    #   riprodurre suoni se accanto al giocatore, variando volume, pitch, ecc.
    #  Puoi anche personalizzare gli effetti, come quello sotto del gallo, cambiando
    #   le caratteristiche audio, via codice.
    #  Per usare questo script bisogna configurare QUI gli effetti, quindi scriverne
    #   il nome in un commento nella pagina dell'evento voluto.
    
    # Configurazioni:
    module AMBISOUND
     # Impostazioni se usi Audio Pump Up - FMOD Ex.
       SOUND_CHANNEL = 3
        # Canale da usare per ogni suono. Metti 0 o negativo per disattivare.
       USE_PAN = true # Vuoi sentire i suoni da vero sistema stereo?
        # Es. se un suono viene da destra, si sentirà di più nella cassa destra.
       # Fine della configurazione APU.
    
     DELAY = 10
      # Consente di non aggiornare l'audio troppo spesso. Più grande il numero,
      #  minore il lag.
     EFFECTS = {
     #"name"    => ["TYPE", "filename", max_vol, pitch, range, vol_min, :def]
      "radio"   => ["BGM",  "Airship",  100,     100,   8,     10,      nil], # <- metti , finché non è l'ultimo
      "radioLow"=> ["BGM",  "Airship",  70,      100,   2,     0,       nil],
      "chicken" => ["SE",   "Chicken",  80,      80,    3,     0,       :chicken],
      "tremolo" => ["BGS",  "Wind",     80,      100,   5,     0,       :tremolo]
     }
     # Spiegazione:
     # "name" è quel che andrai a scrivere nel commento per usare l'effetto.
     # "TYPE" è uno fra "BGM", "BGS", "ME", "SE".
     # "filename" è il nome del file che vuoi ascoltare.
     # max_volume è il massimo volume che il suono può raggiungere.
     #  cioè quando il pg è sopra l'evento.
     # pitch è il pitch. Standard per BGM/BGS è 100, per ME/SE è 80.
     # range è la distanza massima in cui è possibile udire il suono.
     # volume_min è il volume minimo da avere per far partire il suono. Se il pg è
     #  nei limiti del range, ma il volume sarebbe minore di questo valore, l'audio
     #  non partirà, in modo da lasciar dissolvere meglio il precedente.
     # :def ti lascia creare una funzione per gestire l'audio. Puoi sceglierne una
     #  fra quelle di default o aggiungerne se te la cavi con gli script.
    
     # def di esempio
     def self.chicken(sound) # pollo! o qualcosa di simile
       return unless sound # sound è nil quando la def viene chiamata come stop.
        # scriviamo return perché non è necessario stoppare un se.
       if (@last_chick ||= 0) >= 4+rand(6) # evita di riprodurre ogni volta
         @last_chick = 0
         pitchange = rand(20)-10 # pitch cambiato a caso
         sound.pitch += pitchange
         volchange = rand(1) == 0 ? rand(30)-10 : sound.volume*-1 # evitiamo ancora (volume 0)
         sound.volume += volchange
         sound.play # DOBBIAMO chiamare questo per riprodurre il suono
       else
         @last_chick += 1
       end
     end
    
     def self.tremolo(sound) # questo esempio richiede Audio Pump Up - FMOD Ex
       return if !$imported || !$imported[:mikb89_apu_fmod]
       unless sound # fermiamo il suono
         return unless @trem_chan # il canale è nil???
         FMod.bgs_stop(@trem_chan) # stop
         return # ci fermiamo
       end
       return if (@last_tremolo_volume ||= sound.volume) == sound.volume
       @last_tremolo_volume = sound.volume # ultimo volume
        # evitiamo di riprodurre lo stesso bgs allo stesso volume (questo è default
        #  per bgm e bgs quando non sono specificate def)
       cv = APU::CURRENT_CHANNEL_VARIABLE # variabile canale da opzioni APU
       var = @trem_chan = $game_variables[cv] # canale corrente
       $game_variables[cv] = @trem_chan = APU::MAX_CHANNELS - 1 if var < 1
       add_eff = true # tremolo già aggiunto?
        # se il canale corrente è 0 usiamo l'ultimo, quindi:
       sound.play # prima riproduciamo il BGS (vedi documentazione APU)
       for e in 0...FMod.bgs_DSP(@trem_chan)
         t = FModEx::FMOD_DSP_TYPES[FMod.bgs_getType(@trem_chan, e)]
         if t.downcase == "tremolo" # se tremolo esiste
           add_eff = false # non aggiungerlo
           break
         end
       end
       FMod::Audio.bgs_add_effect("tremolo", @trem_chan) if add_eff
        # aggiungiamo il DSP se necessario
       $game_variables[cv] = var if var < 1 # ripristiniamo il canale
     end
    end
    
    #Codename: ambisound
    
    ($imported ||= {})[:mikb89_ambisound] = true
    
    # Licenza:
    # - Puoi chiedermi di includere il supporto per altri script, a patto che usino
    #   il $imported[script] = true;
    # - Puoi modificare e anche ripostare i miei script, dopo una mia risposta. Per
    #   ripostarli, comunque, devi aver fatto pesanti modifiche o porting, non puoi
    #   fare un post con lo script così com'è;
    # - Puoi usare i miei script per fare quel che vuoi, da giochi gratis a liberi
    #   a commerciali. Apprezzerei comunque essere messo al corrente di quello che
    #   stai creando;
    # - Devi creditarmi, se usi questo script o parte di esso.
    
    class Game_Event
    #class Game_Event#def get_audio(spn)
     def get_audio(spn)
       audio_eff = (spn[1] == "" ||
                     spn[2] <= 0) ? nil :
                     case spn[0]
                     when "BGM"; RPG::BGM.new(spn[1], spn[2], spn[3])
                     when "BGS"; RPG::BGS.new(spn[1], spn[2], spn[3])
                     when "ME"; RPG::ME.new(spn[1], spn[2], spn[3])
                     when "SE"; RPG::SE.new(spn[1], spn[2], spn[3])
                     end
     end
     alias_method(:clear_page_settings_b4_ambisound, :clear_page_settings) unless method_defined?(:clear_page_settings_b4_ambisound)
    #class Game_Event#def clear_page_settings() <- aliased
     def clear_page_settings
       clear_page_settings_b4_ambisound
       @sound_type = ""
       @last_volume = 0
     end
     alias_method(:setup_page_settings_b4_ambisound, :setup_page_settings) unless method_defined?(:setup_page_settings_b4_ambisound)
    #class Game_Event#def setup_page_settings() <- aliased
     def setup_page_settings
       setup_page_settings_b4_ambisound
       @sound_type = ""
       @last_volume = 0
       unless empty?
         for par in @list
           if [408, 108].include?(par.code) && AMBISOUND::EFFECTS.has_key?(par.parameters[0])
             @sound_type = par.parameters[0]
           end
         end
       end
     end
     alias_method(:updateGE_b4_ambisound, :update) unless method_defined?(:updateGE_b4_ambisound)
    #class Game_Event#def update() <- aliased
     def update
       updateGE_b4_ambisound
       if (@sdelay ||= AMBISOUND::DELAY) == 0
         @sdelay = nil
         var = nil
         if @sound_type != ""
           xv = $game_map.adjust_x(@real_x) - $game_map.adjust_x($game_player.real_x)
           yv = $game_map.adjust_y(@real_y) - $game_map.adjust_y($game_player.real_y)
           v = Math.hypot(xv, yv)
           if v <= AMBISOUND::EFFECTS[@sound_type][4]
             if @ae_playing
               spn = AMBISOUND::EFFECTS[@sound_type][0..3]
               spn[2] *= 1 - v/AMBISOUND::EFFECTS[@sound_type][4]
               met = AMBISOUND::EFFECTS[@sound_type][6]
               if @last_volume != spn[2] || met
                 @last_volume = spn[2]
                 if spn[2] >= AMBISOUND::EFFECTS[@sound_type][5]
                   at = get_audio(spn)
                   # REQUIRE Audio Pump Up - FMOD Ex
                     if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                       var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                       $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
                     end
                   # END REQUIRE
                   if at != nil
                     if met
                       AMBISOUND.method(met).call(at)
                     else
                       at.play
                       # REQUIRE Audio Pump Up - FMOD Ex
                         if $imported[:mikb89_apu_fmod] && AMBISOUND::USE_PAN && $game_variables[APU::CURRENT_CHANNEL_VARIABLE] > 0
                           pan = 1.0 * case $game_player.direction
                                 when 2; -xv; when 8; xv
                                 when 4; yv; when 6; -yv; else; 0; end
                           pan /= AMBISOUND::EFFECTS[@sound_type][4]
                           if pan != 0
                             case AMBISOUND::EFFECTS[@sound_type][0]
                             when "BGM"; FMod.bgm_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                             when "BGS"; FMod.bgs_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                             when "ME"; FMod.me_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                             when "SE"; FMod.se_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE], 0)
                             end
                           end
                         end
                       # END REQUIRE
                     end
                   end
                   # REQUIRE Audio Pump Up - FMOD Ex
                     $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
                   # END REQUIRE
                 end
               end
             else
               if @audiowait
                 @audiowait -= 1
                 @ae_playing = !(@audiowait = false) if @audiowait == 0
               else
                 at = get_audio(AMBISOUND::EFFECTS[@sound_type])
                 # REQUIRE Audio Pump Up - FMOD Ex
                   if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                     var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                     $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
                   end
                 # END REQUIRE
                 if var != nil
                   # REQUIRE Audio Pump Up - FMOD Ex
                     FMod::Audio.bgm_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if at.class == RPG::BGM
                     FMod::Audio.bgs_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if at.class == RPG::BGS
                   # END REQUIRE
                 else
                   @ex_audio = at.class.last if [RPG::BGM, RPG::BGS].include?(at.class)
                 end
                 if @ex_audio != nil
                   @ex_audio.class.fade(40*AMBISOUND::DELAY)
                   @audiowait = 4
                 else
                   @ae_playing = true
                 end
                 # REQUIRE Audio Pump Up - FMOD Ex
                   $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
                 # END REQUIRE
               end
             end
           else
             @ae_playing = false
             met = AMBISOUND::EFFECTS[@sound_type][6]
             # REQUIRE Audio Pump Up - FMOD Ex
               if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                 var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                 $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
               end
             # END REQUIRE
             if @ex_audio
               @ex_audio.replay if [RPG::BGM, RPG::BGS, RPG::ME].include?(@ex_audio.class)
               @ex_audio = nil
               AMBISOUND.method(met).call(nil) if met
             else
               AMBISOUND.method(met).call(nil) if met
               if !met && var != nil
                 t = AMBISOUND::EFFECTS[@sound_type][0]
                 # REQUIRE Audio Pump Up - FMOD Ex
                   FMod::Audio.bgm_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if t.upcase == "BGM"
                   FMod::Audio.bgs_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if t.upcase == "BGS"
                 # END REQUIRE
               end
             end
             # REQUIRE Audio Pump Up - FMOD Ex
               $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
             # END REQUIRE
           end
         elsif @ae_playing
           @ae_playing = false
           # REQUIRE Audio Pump Up - FMOD Ex
             if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
               var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
               $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
             end
           # END REQUIRE
           if @ex_audio
             @ex_audio.replay if [RPG::BGM, RPG::BGS, RPG::ME].include?(@ex_audio.class)
             @ex_audio = nil
           end
           # REQUIRE Audio Pump Up - FMOD Ex
             $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
           # END REQUIRE
         end
       else
         @sdelay -= 1
       end
     end
    end

     

    Visibile anche

     

     

    Bugs e Conflitti Noti

     

    N/A

     

     

    Altri Dettagli

     

    Consiglio di usarlo in combinazione con
    script.
  16. Ambient Sound

    Descrizione

     

    Con questo script puoi impostare gli eventi per riprodurre suoni se accanto al giocatore, variando volume, pitch, ecc.

    Puoi anche personalizzare gli effetti cambiando le caratteristiche audio, via codice.

    Per usare questo script bisogna configurare nello script gli effetti, quindi scriverne solo il nome in un commento nella pagina dell'evento voluto.

     

    Autore

     

    mikb89

     

     

    Allegati

     

    Demo multilingua v. 1.0 (257KB)

     

     

    Istruzioni per l'uso

     

    Copiare lo script normalmente sotto Modules e sopra Main, quindi configurare gli effetti voluti.

     

     

    Script

     

    # Ambient Sound v. 1.0
    # VX version
    # by mikb89
    
    # Dettagli:
    #  Le possibilità audio di RPG Maker fanno schifo. C'è questo Audio Pump
    #   Up - FMOD Ex (script che estende il sistema audio usando le librerie FMod)
    #   e lo menzionerò pressoché ovunque qui e lì nella demo. Comunque questo
    #   script funziona lo stesso anche senza aggiungerlo.
    #  Quello che QUESTO script fa penso sia chiaro. Puoi impostare gli eventi per
    #   riprodurre suoni se accanto al giocatore, variando volume, pitch, ecc.
    #  Puoi anche personalizzare gli effetti, come quello sotto del gallo, cambiando
    #   le caratteristiche audio, via codice.
    #  Per usare questo script bisogna configurare QUI gli effetti, quindi scriverne
    #   il nome in un commento nella pagina dell'evento voluto.
    
    # Configurazioni:
    module AMBISOUND
     # Impostazioni se usi Audio Pump Up - FMOD Ex.
       SOUND_CHANNEL = 3
        # Canale da usare per ogni suono. Metti 0 o negativo per disattivare.
       USE_PAN = true # Vuoi sentire i suoni da vero sistema stereo?
        # Es. se un suono viene da destra, si sentirà di più nella cassa destra.
       # Fine della configurazione APU.
    
     DELAY = 10
      # Consente di non aggiornare l'audio troppo spesso. Più grande il numero,
      #  minore il lag.
     EFFECTS = {
     #"name"    => ["TYPE", "filename", max_vol, pitch, range, vol_min, :def]
      "radio"   => ["BGM",  "Airship",  100,     100,   8,     10,      nil], # <- metti , finché non è l'ultimo
      "radioLow"=> ["BGM",  "Airship",  70,      100,   2,     0,       nil],
      "chicken" => ["SE",   "Chicken",  80,      80,    3,     0,       :chicken],
      "tremolo" => ["BGS",  "Wind",     80,      100,   5,     0,       :tremolo]
     }
     # Spiegazione:
     # "name" è quel che andrai a scrivere nel commento per usare l'effetto.
     # "TYPE" è uno fra "BGM", "BGS", "ME", "SE".
     # "filename" è il nome del file che vuoi ascoltare.
     # max_volume è il massimo volume che il suono può raggiungere.
     #  cioè quando il pg è sopra l'evento.
     # pitch è il pitch. Standard per BGM/BGS è 100, per ME/SE è 80.
     # range è la distanza massima in cui è possibile udire il suono.
     # volume_min è il volume minimo da avere per far partire il suono. Se il pg è
     #  nei limiti del range, ma il volume sarebbe minore di questo valore, l'audio
     #  non partirà, in modo da lasciar dissolvere meglio il precedente.
     # :def ti lascia creare una funzione per gestire l'audio. Puoi sceglierne una
     #  fra quelle di default o aggiungerne se te la cavi con gli script.
    
     # def di esempio
     def self.chicken(sound) # pollo! o qualcosa di simile
       return unless sound # sound è nil quando la def viene chiamata come stop.
        # scriviamo return perché non è necessario stoppare un se.
       if (@last_chick ||= 0) >= 4+rand(6) # evita di riprodurre ogni volta
         @last_chick = 0
         pitchange = rand(20)-10 # pitch cambiato a caso
         sound.pitch += pitchange
         volchange = rand(1) == 0 ? rand(30)-10 : sound.volume*-1 # evitiamo ancora (volume 0)
         sound.volume += volchange
         sound.play # DOBBIAMO chiamare questo per riprodurre il suono
       else
         @last_chick += 1
       end
     end
    
     def self.tremolo(sound) # questo esempio richiede Audio Pump Up - FMOD Ex
       return if !$imported || !$imported[:mikb89_apu_fmod]
       unless sound # fermiamo il suono
         return unless @trem_chan # il canale è nil???
         FMod.bgs_stop(@trem_chan) # stop
         return # ci fermiamo
       end
       return if (@last_tremolo_volume ||= sound.volume) == sound.volume
       @last_tremolo_volume = sound.volume # ultimo volume
        # evitiamo di riprodurre lo stesso bgs allo stesso volume (questo è default
        #  per bgm e bgs quando non sono specificate def)
       cv = APU::CURRENT_CHANNEL_VARIABLE # variabile canale da opzioni APU
       var = @trem_chan = $game_variables[cv] # canale corrente
       $game_variables[cv] = @trem_chan = APU::MAX_CHANNELS - 1 if var < 1
       add_eff = true # tremolo già aggiunto?
        # se il canale corrente è 0 usiamo l'ultimo, quindi:
       sound.play # prima riproduciamo il BGS (vedi documentazione APU)
       for e in 0...FMod.bgs_DSP(@trem_chan)
         t = FModEx::FMOD_DSP_TYPES[FMod.bgs_getType(@trem_chan, e)]
         if t.downcase == "tremolo" # se tremolo esiste
           add_eff = false # non aggiungerlo
           break
         end
       end
       FMod::Audio.bgs_add_effect("tremolo", @trem_chan) if add_eff
        # aggiungiamo il DSP se necessario
       $game_variables[cv] = var if var < 1 # ripristiniamo il canale
     end
    end
    
    #Codename: ambisound
    
    ($imported ||= {})[:mikb89_ambisound] = true
    
    # Licenza:
    # - Puoi chiedermi di includere il supporto per altri script, a patto che usino
    #   il $imported[script] = true;
    # - Puoi modificare e anche ripostare i miei script, dopo una mia risposta. Per
    #   ripostarli, comunque, devi aver fatto pesanti modifiche o porting, non puoi
    #   fare un post con lo script così com'è;
    # - Puoi usare i miei script per fare quel che vuoi, da giochi gratis a liberi
    #   a commerciali. Apprezzerei comunque essere messo al corrente di quello che
    #   stai creando;
    # - Devi creditarmi, se usi questo script o parte di esso.
    
    class Game_Event
    #class Game_Event#def get_audio(spn)
     def get_audio(spn)
       audio_eff = (spn[1] == "" ||
                     spn[2] <= 0) ? nil :
                     case spn[0]
                     when "BGM"; RPG::BGM.new(spn[1], spn[2], spn[3])
                     when "BGS"; RPG::BGS.new(spn[1], spn[2], spn[3])
                     when "ME"; RPG::ME.new(spn[1], spn[2], spn[3])
                     when "SE"; RPG::SE.new(spn[1], spn[2], spn[3])
                     end
     end
     alias_method(:setup_b4_ambisound, :setup) unless method_defined?(:setup_b4_ambisound)
    #class Game_Event#def setup(new_page) <- aliased
     def setup(new_page)
       setup_b4_ambisound(new_page)
       @sound_type = ""
       @last_volume = 0
       if @list != nil
         for par in @list
           if [408, 108].include?(par.code) && AMBISOUND::EFFECTS.has_key?(par.parameters[0])
             @sound_type = par.parameters[0]
           end
         end
       end
     end
     alias_method(:updateGE_b4_ambisound, :update) unless method_defined?(:updateGE_b4_ambisound)
    #class Game_Event#def update() <- aliased
     def update
       updateGE_b4_ambisound
       if (@sdelay ||= AMBISOUND::DELAY) == 0
         @sdelay = nil
         var = nil
         if @sound_type != ""
           xv = $game_map.adjust_x(@real_x) - $game_map.adjust_x($game_player.real_x)
           yv = $game_map.adjust_y(@real_y) - $game_map.adjust_y($game_player.real_y)
           v = Math.hypot(xv/256.0, yv/256.0)
           if v <= AMBISOUND::EFFECTS[@sound_type][4]
             if @ae_playing
               spn = AMBISOUND::EFFECTS[@sound_type][0..3]
               spn[2] *= 1 - v/AMBISOUND::EFFECTS[@sound_type][4]
               met = AMBISOUND::EFFECTS[@sound_type][6]
               if @last_volume != spn[2] || met
                 @last_volume = spn[2]
                 if spn[2] >= AMBISOUND::EFFECTS[@sound_type][5]
                   at = get_audio(spn)
                   # REQUIRE Audio Pump Up - FMOD Ex
                     if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                       var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                       $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
                     end
                   # END REQUIRE
                   if at != nil
                     if met
                       AMBISOUND.method(met).call(at)
                     else
                       at.play
                       # REQUIRE Audio Pump Up - FMOD Ex
                         if $imported[:mikb89_apu_fmod] && AMBISOUND::USE_PAN && $game_variables[APU::CURRENT_CHANNEL_VARIABLE] > 0
                           pan = 1.0 * case $game_player.direction
                                 when 2; -xv; when 8; xv
                                 when 4; yv; when 6; -yv; else; 0; end
                           pan /= AMBISOUND::EFFECTS[@sound_type][4]
                           if pan != 0
                             case AMBISOUND::EFFECTS[@sound_type][0]
                             when "BGM"; FMod.bgm_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                             when "BGS"; FMod.bgs_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                             when "ME"; FMod.me_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE])
                             when "SE"; FMod.se_set_pan(pan, $game_variables[APU::CURRENT_CHANNEL_VARIABLE], 0)
                             end
                           end
                         end
                       # END REQUIRE
                     end
                   end
                   # REQUIRE Audio Pump Up - FMOD Ex
                     $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
                   # END REQUIRE
                 end
               end
             else
               if @audiowait
                 @audiowait -= 1
                 @ae_playing = !(@audiowait = false) if @audiowait == 0
               else
                 at = get_audio(AMBISOUND::EFFECTS[@sound_type])
                 # REQUIRE Audio Pump Up - FMOD Ex
                   if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                     var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                     $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
                   end
                 # END REQUIRE
                 if var != nil
                   # REQUIRE Audio Pump Up - FMOD Ex
                     FMod::Audio.bgm_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if at.class == RPG::BGM
                     FMod::Audio.bgs_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if at.class == RPG::BGS
                   # END REQUIRE
                 else
                   @ex_audio = at.class.last if [RPG::BGM, RPG::BGS].include?(at.class)
                 end
                 if @ex_audio != nil
                   @ex_audio.class.fade(40*AMBISOUND::DELAY)
                   @audiowait = 4
                 else
                   @ae_playing = true
                 end
                 # REQUIRE Audio Pump Up - FMOD Ex
                   $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
                 # END REQUIRE
               end
             end
           else
             @ae_playing = false
             met = AMBISOUND::EFFECTS[@sound_type][6]
             # REQUIRE Audio Pump Up - FMOD Ex
               if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
                 var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
                 $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
               end
             # END REQUIRE
             if @ex_audio
               @ex_audio.play if [RPG::BGM, RPG::BGS, RPG::ME].include?(@ex_audio.class)
               @ex_audio = nil
               AMBISOUND.method(met).call(nil) if met
             else
               AMBISOUND.method(met).call(nil) if met
               if !met && var != nil
                 t = AMBISOUND::EFFECTS[@sound_type][0]
                 # REQUIRE Audio Pump Up - FMOD Ex
                   FMod::Audio.bgm_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if t.upcase == "BGM"
                   FMod::Audio.bgs_fade(20*AMBISOUND::DELAY, AMBISOUND::SOUND_CHANNEL) if t.upcase == "BGS"
                 # END REQUIRE
               end
             end
             # REQUIRE Audio Pump Up - FMOD Ex
               $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
             # END REQUIRE
           end
         elsif @ae_playing
           @ae_playing = false
           # REQUIRE Audio Pump Up - FMOD Ex
             if $imported[:mikb89_apu_fmod] && AMBISOUND::SOUND_CHANNEL > 0
               var = $game_variables[APU::CURRENT_CHANNEL_VARIABLE]
               $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = AMBISOUND::SOUND_CHANNEL
             end
           # END REQUIRE
           if @ex_audio
             @ex_audio.play if [RPG::BGM, RPG::BGS, RPG::ME].include?(@ex_audio.class)
             @ex_audio = nil
           end
           # REQUIRE Audio Pump Up - FMOD Ex
             $game_variables[APU::CURRENT_CHANNEL_VARIABLE] = var if var != nil
           # END REQUIRE
         end
       else
         @sdelay -= 1
       end
     end
    end

     

    Visibile anche

     

     

    Bugs e Conflitti Noti

     

    N/A

     

     

    Altri Dettagli

     

    Consiglio di usarlo in combinazione con
    script.
  17. Ahahah sì, a scrivere quella frase mi sono divertito xD

     

    Purtroppo no, se clicchi fuori dalla finestra gli script smettono di eseguirsi, quindi non si può fare proprio niente :( anche il fading non viene completato se la finestra non è più attiva.

    Però in compenso ci sono tante cose fighe :D

    Ho fatto un altro script che sfrutta questo, presto spero di postarlo :D

×
×
  • Create New...