-
Posts
655 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by mikb89
-
-
Dai, sto scherzando, non ti odio tanto tanto xD
Capita di voler rispondere a un topic, anche se vecchio
(: -
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)
-
In effetti per di qua ci passano in pochi... ma è il posto giusto dove postare le utility? D:
Perché il C# è sì "Oltre RpgMaker", ma i tool che ne vengono fuori ne hanno a che fare.
Non avevo capito che eri ironico xD
-
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
-
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
-
Ottimo! Grazie Flame ^^
Ma la lunghezza del post non si potrebbe aumentare, già che ci siamo? (:
-
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 ^^
-
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! XDahahah mi sono fatto conoscere xD
-
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
-
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.
-
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! :)
-
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.
-
Altri due script per XP e Ace che sono conversioni di uno per VX di tempo fa: Some Popup XP Some Popup VX Ace
FATTO
-
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.
-
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
mikb89Allegati
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 endVisibile 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
Ringrazioper aver chiesto la versione VX altrimenti non l'avrei postata né convertita eper avermi suggerito molti miglioramenti. -
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? :)
-
4 script:
Probabilmente due saranno valutati come script da zero e gli altri come semplici conversioni ^^
C'è da dire anche che nell'Audio Pump Up sono partito da uno script già esistente, quindi non è fatto proprio da zero.
FATTO
-
Per WP7 sì, c'è il Visual Studio da acquistare. Per Android invece uso Eclipse che è open source.
-
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.
-
La citazione credo di essermela persa, però sembra interessante xD
-
In realtà sarebbe stato anche quadruplo xD
Script di questo tipo ne esistevano già, però ci volevo mettere le mani anch'io xD
Mi pare di capire comunque che gli script sulla parte sonora non interessino molto, mmm
-
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
mikb89Allegati
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 endVisibile ancheBugs e Conflitti Noti
N/AAltri Dettagli
Consiglio di usarlo in combinazione conscript. -
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
mikb89Allegati
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 endVisibile ancheBugs e Conflitti Noti
N/AAltri Dettagli
Consiglio di usarlo in combinazione conscript. -
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

Team a PAGAMENTO per sviluppo giochi Android
in Parlando del Making...
Posted · Edited by mikb89
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.
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 ^^