-
Posts
74 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by lzol
-
-
Ciao a tutti, qualcuno sa come poter dare un tocco di personalizzazione al menu e alle window in generale? Sono prossimo a rilasciare una breve demo e mentre la realizzazione generale mi soddisfa abbastanza, la windowskin è l'unica cosa che non ho toccato e mi sembra piuttosto scialba e poco coerente. Grazie.
-
La trama sembra piuttosto carina e fa venire molta curiosità! xD
riguardo ai personaggi, mi ha fatto un po' strano leggere, riguardo a Main, timido ed introverso e dal carattere tagliente e sarcastico perchè in genere sono abituato al fatto che, se uno è timido ed introverso, in genere viene fatto anche gentile, però vabè, può essere interessante anche così, anzi forse è più originale.
Sì, è il tipo di personaggio molto selettivo nelle amicizie, un po' restìo allo "stare in gruppo", un po' fuori moda, un po' fuori tutto, anche a causa del carattere "difensivo" che si esprime
attraverso il sarcasmo.
Un buon inizio. A quando una demo ?
In questo fine settimana farò gli ultimi test :D
Ci tenevo a ringraziare anche gli altri per l'interesse (soprattutto Guardian che ogni anno viene a commentare lo stesso progetto su tool diversi che puntualmente non finisce mai :D);
aggiornamenti a breve ;)
EDIT: aggiunta la schermata del titolo tra gli screenshot e alcuni dettagli riguardo il gameplay.
-
http://i68.tinypic.com/24eb30o.png
presenta
http://i63.tinypic.com/ohvgup.png
Introduzione
E dopo qualche anno ritorno qui, con l'ennesimo tentativo di portare avanti questo progetto, dopo le fallimentari esperienze con XP e VX. MV mi ha concesso una personalizzazione più intuitiva e poi c'è javascript che preferisco molto al ruby; ho molto apprezzato la facilità di implementazione dei plugin. La storia è stata concepita diversi anni fa, ma essendo ancora alle prime armi potete intuire che è stato un continuo cancella-e-riscrivi; il capriccio del basarsi su persone reali, conoscenti e amici ha fatto via via spazio ad
una reinterpretazione più distaccata (anche se non nego di aver comunque preso ispirazione da alcuni personaggi "reali"); è la prima volta in cui credo
di riuscire a pubblicare una demo giocabile in tempi brevi; ma ora veniamo al sodo (Inoltre vorrei chiedere gentilmente all'admin di cambiare il titolo del topic, se possibile, visto che ho cambiato il titolo del gioco).
Trama
Cinque anni prima degli eventi narrati, il nonno del nostro protagonista, Victor Wyte, scompare in circostanze misteriose, a detta di qualcuno a causa di alcuni
terribili segreti riguardo le Forze Primordiali, ossia gli elementi che hanno dato inizio all'universo conosciuto: il Flusso Cremisi (Crimson Stream) controlla ilcontinuum spazio-temporale e le abilità intellettive di un individuo, il Flussoscuro (Black Stream) controlla tutti gli elementi esistenti e le abilità fisiche. Victor avrebbescoperto la struttura primordiale appena trentenne ma aveva anche sentenziato che nessun essere umano comune avrebbe mai potuto controllare un poterecosì grande.Nella (solitamente) tranquilla cittadina di Bosko, due sette segrete, di cui una fortemente in combutta con il governo, studiano le proprietà di queste Forze grazie ad alcuni appunti rinvenuti dopo la scomparsa di Victor; la chiave dei misteri relativi potrebbe celarsi nei due nipoti di quest'ultimo, che per qualche motivo (che verrà poi spiegato nel gioco) possiedono una struttura genetica compatibile.Personaggi (Ad ora...)Main: Protagonista del gioco (ma và? Main...), il nome potrebbe essere fisso o scelto dal giocatore, devo ancora decidere. Ragazzo di 16 anni, timido ed introverso e dal carattere tagliente e sarcastico; è iscritto al campus di Bosko assieme ai suoi amici e suo fratello minore ed è l'unico in tutto il campus ad indossare la misteriosa uniforme nera. Main può controllare il Crimson Stream, cosa che gli permette di massimizzare le proprie facoltà intellettive e, più in là, di manipolare lo spazio-tempo.Janky: Cugino di Main, è la sua perfetta antitesi: bello, ricco ed è conosciuto in tutto il campus; ha un carattere estremamente arrogante e altezzoso ma, a dispettodelle apparenze, è anche una persona molto astuta. Può controllare il Black Stream, che gli concede una forza sovrumana e la capacità di manipolare gli elementi.Blaze e Josef: Amici di Main, coppia inseparabile, accomunati anche dall'antipatia verso Janky. Blaze ha sempre la testa fra le nuvole e raramente presta attenzionea quello che gli si dice; Josef ha invece un carattere polemico e coglie ogni occasione per esprimere ciò che pensa e contraddire il punto di vista degli altri. Entrambihanno due dipendenze molto particolari: Blaze è un fumatore accanito, ma fa della sua dipendenza la sua arma migliore; Josef è un alcolista e, col passare degli anni, non accusa più alcun effetto dovuto agli alcolici.Mary: Amica di Main, Josef e Blaze; gentile e disponibile, ha un atteggiamento molto protettivo nei confronti di Main, in quanto crede che Janky lo condizioni negativamente e fa di tutto per far sì che il nostro protagonista decida per sé.Dani: Fratello minore di Main, provocatorio e arrogante ma molto spigliato e intelligente; anche lui, tanto per cambiare, ritiene Janky un poco di buono.Alex: Diminutivo di Alexandra; ragazza introversa e misteriosa, ancora non si sa quale sia il suo ruolo in questa faccenda.http://i67.tinypic.com/5wzcyr.pngDa sinistra a destra e dall'alto verso il basso:Blaze, Josef, Dani, Main, Padre John (parroco), Janky, MaryGameplaySarà possibile spostarsi in ogni zona di Bosko attraverso una "World Map", Bosko comprenderà un'area commerciale, dove sarà possibile acquistare oggetti, armi e vestiario; il centro abitato dove di notte sarà possibile attivare missioni di "furto", che permettono di entrare in possesso di oggetti molto utili; sobborgo, ospedale e fabbrica dove, oltreagli eventi di storyline sarà possibile accedere ad altre missioni secondarie; ovviamente ci sarà anche il campus.Le battaglie seguiranno il classico side-view e tra i nemici vi saranno i classici bulletti che cercheranno di svuotarvi il portafoglio, i secchioni che vi annoieranno con leloro prediche, i vari scagnozzi delle organizzazioni che vi daranno la caccia e anche "fauna locale" (topi, pantegane, ci siamo capiti...); più qualche altro soggettostereotipato.Qui c'è da ridere. Premessa: amo la serie Persona e devo ammettere che ho tratto molta ispirazione dal terzo capitolo; tra le caratteristiche legate al suddetto titolo abbiamo:* La possibilità di seguire le lezioni tenute nel campus che possono aumentare uno o più parametri;* La possibilità di prendere parte a progetti extrascolastici;* Il Social Rank (ribattezzato brutalmente Friend Rate) che stabilisce il "grado di amicizia" con un personaggio; permette di potenziare gli attacchi e di sbloccare abilità uniche o temporanee. Per aumentare il Friend Rate di un personaggio bisogna completare missioni secondarie/trascorrere del tempo con lui.La vita al campus, per ora, in sostanza funziona così: la giornata è divisa in tre momentiMattina: si possono seguire le lezioni oppure completare alcune missioni secondarie;Pomeriggio: riservato al Friend Rate, è possibile trascorrere del tempo (brevissime cutscene in fermo immagine, almeno per ora) con uno dei personaggi disponibili;Sera: è possibile reclutare tutti i personaggi a disposizione e livellarli (se avete giocato a Persona 3, consideratela come una specie di Dark Hour).Ogni volta che si segue una lezione, si svolge una missione secondaria, si aumenta il friend rate o ci si allena, si passa al momento successivo della giornata. Di sera possono essere disponibili ulteriori quest secondarie oppure basta mandare il pg a letto per passare al giorno successivo. Non c'è bisogno che vi dica che potete anche ignorare tutto e tutti e andare a letto per far trascorrere velocemente i momenti di giornata (è pressoché inutile, ma potreste voler accedere alle missioni "serali" e saltare lezioni, friend rate, ecc.).Tutto ciò non intaccherà le missioni principali che, proprio come le quest secondarie, saranno disponibili in determinati momenti della giornata e sarà possibile attivarle cliccando,parlando o recandosi in un certo luogo.Altre simpatiche aggiunte riguardano le abilità:* Josef può sfruttare la sua passione per l'alcol: lo status Ebbrezza altera determinati parametri e permette di utilizzare delle abilità esclusive. Ovviamente bisogna essere in possesso della "materia prima";* Blaze fuma erba e il discorso per lo status Assuefazione è simile a quello di Ebbrezza; alterazione dei parametri, abilità esclusive e necessità degli oggetti giusti.* Altre abilità sono state concepite tramite le custom formulas: alcune sono utilizzabili solo se si verificano certe condizioni, altre infliggono danno utilizzando parametridifferenti e altre possono ignorare la difesa dei nemici; tutto questo oltre alle classiche "Furto" ecc.Alcuni oggetti possono essere utilizzati solo da determinati membri: ogni personaggio utilizza un tipo differente di armi, Josef è invece specializzato nell'uso degliesplosivi;Infine anche gli oggetti curativi hanno diversi effetti a seconda del personaggio su cui sono utilizzati.CreditiYanfly, che un petosecondo dopo l'uscita dell'mv ha rilasciato il Battle Core;Kaimen per alcune soundtracks, anche se non so se saranno definitive;Kas per l'Ultimate Overlay;Galv per il MessageSoundEffects;chiunque abbia scritto il plugin BattleWeatherEffect;Screenshot ("Lo schermo ha sparato"(cit.))Schermata titolohttp://i64.tinypic.com/2nv4dp5.pngArboretohttp://i66.tinypic.com/15xtyeg.pngIngresso del Campushttp://i67.tinypic.com/detkrq.pngDormitoriohttp://i64.tinypic.com/2a0fjoh.pngLayout del BS di Moghunterhttp://i68.tinypic.com/s13jlt.jpgLink alla demo giocabile -
Salve a tutti, come da titolo, mi chiedevo se fosse possibile fare una cosa del genere: all'inizio ci sono determinati mostri in cui ci si imbatte nella mappa; a seguito di
un evento, se ne aggiungono altri (ES. all'inizio incontro solo ratti e pipistrelli, una volta sconfitti alcuni membri di una gang, i vari sicari mi cercano).
È fattibile? Grazie in anticipo.
-
Salve a tutti, giocando a The World Ends With You ho notato una meccanica interessante: il consumo di cibi permette all'utente di beneficiare di bonus una volta digeriti (si "digerisce" tramite battaglie), volevo implementare una versione più grezza di questa meccanica, ossia ogni qualvolta si consuma del cibo, si entra in uno status "digestione" che dimezza le statistiche e che termina entro un tot di passi; una volta terminato, a seconda del cibo consumato, si possono aumentare le statistiche oppure ripristinare gli hp.
Ciò pone una problematica: diventa quasi "pericoloso" curarsi in battaglia, al punto che pensavo di eliminare la cura tramite oggetti in battaglia e lasciarla unicamente a chi possiede le varie abilità 'Cura' ecc. il mio dubbio è se questa caratteristica del gameplay può aggiungere profondità o rende solamente frustrante la cosa. Attendo suggerimenti.
-
Credo che tu lo stia scrivendo male
(b.id === 4) ? 500 : 100
Niente, non va.
EDIT: Ho provato la mia formula su VXAce e funziona normalmente. Sarà cambiato qualcosa nell'accesso al parametro 'id' in MV?
-
Salve a tutti, sto provando ad implementare la meccanica dei "cibi preferiti", ho creato un oggetto con 'recupero HP' basato sulla formula:
b.id == 4? 500 : 100
Ma non va, risulta sempre falsa. Quale può essere il problema?
-
Buco Nero è applicabile ad un nemico alla volta (tipo Kamui di Tobi, non so se ho reso l'idea...e in effetti mi ero espresso male prima), Buco Bianco colpisce tutti i nemici, tra cui, se ce n'è uno che è stato risucchiato (ovvero con lo status 'morte2') può (con scarsa probabilità) riportarlo in vita, tipo coda di fenice. In tutto ciò non posso usare lo status 'morte' di default perché significherebbe che un nemico sconfitto normalmente, senza l'ausilio di buco nero, potrebbe erroneamente essere riportato in vita.
-
Puoi mettere la spunta in sistema per permettere agli HP di arrivare a 0 con danni da 'slittamento'.
Questo però porrebbe un altro problema: una volta subito il danno da slittamento verrebbe applicato lo stato knockout e non più morte2.
Cerco di spiegare più dettagliatamente il mio problema: voglio creare una skill "Buco Nero" che risucchia i nemici, che tecnicamente "muoiono" (stato 'morte2'); poi voglio
creare una seconda skill "Buco Bianco" che fa l'esatto opposto: mentre il buco nero risucchia energia, buco bianco "sputa fuori" energia, tra cui (con una piccola probabilità)
anche il mostro risucchiato. Perciò ho bisogno di un secondo stato morte, di modo che, se lo applico e tutti i nemici crepano, si vince, ma se si usa buco bianco c'è una possibilità
di riportarlo fuori.
-
La skill OHKO infligge lo status Morte2.
Lo stato Morte2 ha come Tratto il Parametro E Rigenera PV: -100% (analogamente a Veleno, che ha Rigenera PV: -10%).
Lo stato Nega-OHKO ha come Tratto il Prob. Stato Morte2 0%.
Grazie per la soluzione, ma ho provato e il nemico rimane con 1 HP senza morire.
-
Salve a tutti, come da titolo, volevo creare uno stato 'knockout' alternativo, questo perché ho un'abilità OHKO che però non ha effetto se l'avversario è affetto da un particolare power-up. Il fatto è che rpgmv assegna lo stato id:1 di default ed è anche l'unico utilizzabile a quanto sembra.
L'alternativa è stata creare una skill che controlla se l'avversario è in possesso del suddetto power-up e, in caso negativo, one-shotta.
Formula:
b.state?(12) ? 0 : b.addState(1)
Ovviamente non va. La 'state?' la usai su rpgvxace, qualcuno sa se è ancora disponibile? O è la sintassi che non va?
-
Salve a tutti, mi servirebbero dei battlers moderni in front-view. In parole povere esseri umani ma più simili a persone comuni che cavalieri, spadaccini o cose così, non so se ho reso l'idea, grazie.
-
Salve a tutti, mi servirebbe un battler il cui formato sia simile all'immagine che ora allego, qualcuno
sa dove osso trovarne di simili?
http://i59.tinypic.com/2z678fn.jpg
-
D: E' possibile, tramite evento, fare in modo che la mappa "lampeggi"?
Mi spiego, vorrei che in una mappa ci fosse una specie di "allarme" che, una volta attivato, fa lampeggiare lo schermo di rosso all'infinito (almeno fino a quando l'allarme non si disattiva). Il mio problema sta nel fatto che non riesco a mantenere l'evento all'infinito. Una volta che lo schermo si tinge di rosso rimane rosso. Grazie.
-
Grazie mille. Mi dici il motivo di questa cosa?
-
Allego uno screen dei settaggi del mio tileset, qualcuno mi spiega il motivo per cui il mio pg non si muove? Entra nella mappa ma si gira solamente, perché? Grazie in anticipo.
http://i62.tinypic.com/2s6on54.png
-
Idea decisamente macabra, attendo impaziente ulteriori sviluppi

-
Salve a tutti, qualcuno di voi sa se ci sono degli RPG ambientati nei tempi moderni? Penso di averne avuto abbastanza di cavalieri, paladini, maghi neri, bahamut e ambientazioni medievali e anche di ambientazioni ultrafuturistiche.
Non so se avete giocato ai vari Persona o The World Ends With You (per me, quest'ultimo il miglior gioco degli ultimi anni), ma, almeno sull'ambientazione, mi riferisco a questo tipo di rpg. Sentitevi liberi di segnalarmi anche giochi realizzati con rpgmaker nel forum o oltre, se ce ne sono, grazie.
-
Premessa: ho cercato in più sezioni il problema che cercavo ma non ho trovato niente.
Come forse sapete, rpg maker vx non può essere avviato con risoluzione minore di 1024x768. Ho un netbook acer aspire one con windows 7 e volevo cambiare la risoluzione attraverso il trucchetto con regedit -> display1downscale (qualcosa del genere...) ma non ho trovato la voce nel registro e ho problemi vari ad installare i driver.
Volevo chiedere se c'è un modo per cambiare la risoluzione del pc senza il regedit oppure se c'è un modo, un trucco qualsiasi (tipo tramite file .bat) per poter avviare rpg maker vx anche con la risoluzione nativa del netbook. Grazie.
-
Salve a tutti, come da titolo, sto usando lo script di Moghunter per creare delle skill con combinazioni di tasti, il problema è che, una volta implementata l'abilità, nel battle test non compare la sequenza di tasti. Mi spiego meglio:
Per creare una skill con la chain basta inserire nelle note la stringa "<Chain Action = X>" Dove X è l'ID della combinazione di tasti specificata nello stesso script. Il problema è che se uso l'abilità nel battle test tale sequenza non appare, qualcuno mi sa dire perché? Allego lo script nel caso. Grazie in anticipo.
#============================================================================== # +++ MOG - Active Chain Commands (v2.7) +++ #============================================================================== # By Moghunter # http://www.atelier-rgss.com/ #============================================================================== # Permite combinar (Linkar) ataques consecutivos através do uso de # sequência de botões. #============================================================================== # Arquivos necessários. Graphics/System/ # # Chain_Command.png # Chain_Battle_Layout.png # Chain_Battle_Meter.png # #============================================================================== # UTILIZAÇÃO #============================================================================== # No banco de dados use o sequinte comentário para linkar as ações. # # <Chain Action = X> # # X - ID da habilidade. #============================================================================== #============================================================================== # ● Histórico (Version History) #============================================================================== # v2.7 - Melhoria na compatibilidade de scripts. #============================================================================== $imported = {} if $imported.nil? $imported[:mog_active_chain] = true module MOG_CHAIN_ACTIONS #============================================================================= # CHAIN_ACTIONS = { SKILL_ID => [COMMAND] } # # SKILL_ID = ID da habilidade no banco de dados. # COMMANDS = Defina aqui a sequência de botões. # (Para fazer a sequência use os comandos abaixo) # # "Down" ,"Up" ,"Left" ,"Right" ,"Shift" ,"D" ,"S" ,"A" ,"Z" ,"X" ,"Q" ,"W" # # Exemplo de utilização # # CHAIN_SWITCH_COMMAND = { # 25=>["Down","D","S","Right"], # 59=>["Down","Up","Left","Right","Shift","D","S","A","Z","X","Q","W"], # 80=>["Shift","D"] # } #============================================================================== CHAIN_ACTIONS = { 29=>["Left","Up","Right","Down"], 52=>["Up","Down","Left","Right","Z"], 70=>["X","Right","Left","Z","Z"], 138=>["X"], 139=>["A","S"], 140=>["Z","D","X"], 141=>["Up","Down"], 142=>["Left","Right","Z"], 999=>["Left","Right","Left","Right","Left","Right","Q","Z","Up","A","S", "Down","D","Z","Right","Up","Up","Z","W","Left","Down","D","A","W"] } #Definição padrão do tempo limite para pressionar o botão. CHAIN_DEFAULT_INPUT_DURATION = 60 #60 = 1s #Definição do tempo limite para pressionar o botão. CHAIN_INPUT_DURATION = { 138=>60, 139=>40, 140=>30 #141=>160, #240=>2000 } #Som ao acertar. CHAIN_RIGHT_SE = "Chime1" #Som ao errar. CHAIN_WRONG_SE = "Buzzer1" #Definição do som ao ativar o sistema de chain. CHAIN_START_SE = "Open1" #Definição da posição do botão. CHAIN_SPRITE_POSITION = [0,-15] #Posição do layout do medidor. CHAIN_LAYOUT_POSITION = [1,-7] #Posição do medidor de tempo. CHAIN_METER_POSITION = [0,-6] #Posição do Ícone CHAIN_ICON_POSITION = [0,-32] #Definição da palavra Chain. CHAIN_COMMAND_WORD = "Chain Action!" #Definição das palavras de erro. CHAIN_MISSED_WORDS = ["Missed!", "Timeover"] #Definição da posição da palavra. CHAIN_COMMAND_WORD_POSITION = [0,0] #Definição do tamanho da fonte CHAIN_WORD_FONT_SIZE = 20 #Definição da cor da fonte CHAIN_WORD_FONT_COLOR = Color.new(255,255,255) #Prioridade do sprite. CHAIN_SPRITE_Z = 150 end #============================================================================== # ■ Game Temp #============================================================================== class Game_Temp attr_accessor :chain_actions attr_accessor :active_chain attr_accessor :chain_ot attr_accessor :chain_action_phase #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_chain_actions_initialize initialize def initialize @chain_actions = [0,0,0,false] ; @active_chain = false @chain_action_phase = false mog_chain_actions_initialize end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● Use Item #-------------------------------------------------------------------------- alias mog_chain_actions_use_item use_item def use_item prepare_chain_command if can_use_chain_commands? mog_chain_actions_use_item execute_chain_actions if can_use_chain_commands? end #-------------------------------------------------------------------------- # ● Can Use Chain Commands #-------------------------------------------------------------------------- def can_use_chain_commands? return false if @subject == nil return false if !@subject.is_a?(Game_Actor) return false if @subject.restriction != 0 return true end #-------------------------------------------------------------------------- # ● Prepare Chain Commands #-------------------------------------------------------------------------- def prepare_chain_command @chain_skill_original = @subject.current_action.item rescue nil if $game_temp.chain_ot == nil and @subject.is_a?(Game_Actor) targets = @subject.current_action.make_targets.compact $game_temp.chain_ot = targets[0] end check_chain_targets end #-------------------------------------------------------------------------- # ● Check Chain Command Position #-------------------------------------------------------------------------- def check_chain_command_position scx = $game_temp.chain_ot.screen_x rescue nil return if scx == nil if $game_temp.chain_ot != nil and !$game_temp.chain_ot.dead? $game_temp.chain_actions = [$game_temp.chain_ot.screen_x,$game_temp.chain_ot.screen_y,true] end end #-------------------------------------------------------------------------- # ● Check Chain Targets #-------------------------------------------------------------------------- def check_chain_targets return if @subject == nil or $game_temp.chain_ot == nil if [1,7,9,10,11].include?(@subject.current_action.item.scope) @pre_target = $game_temp.chain_ot ; @pre_target_hp = $game_temp.chain_ot.hp else @pre_target = nil ; @pre_target_hp = nil end end #-------------------------------------------------------------------------- # ● Execute Chain Actions #-------------------------------------------------------------------------- def execute_chain_actions $game_temp.active_chain = false return if !can_execute_chain_actions_base? check_chain_command_position skill = @subject.current_action.item rescue nil skill = @chain_skill_original rescue nil action_id = skill.note =~ /<Chain Action = (\d+)>/i ? $1.to_i : nil rescue nil return if action_id == nil or action_id < 1 chain_command_sequence = MOG_CHAIN_ACTIONS::CHAIN_ACTIONS[action_id] $game_temp.chain_actions[2] = action_id if can_execute_chain_sequence?(chain_command_sequence,action_id) chain_act_before_action if @chain_command == nil chain_sq = Chain_Actions.new(chain_command_sequence,$game_temp.chain_actions) loop do $game_temp.chain_action_phase = true (chain_sq.update ; Input.update) unless @spriteset.animation? $game_temp.active_chain = true ; chain_sq.update_skill_name @spriteset.update ; Graphics.update break if chain_sq.phase == 9 end action_id = nil if !chain_sq.success or $game_temp.chain_ot.dead? chain_sq.dispose ; set_chain_skill(action_id) if action_id != nil end $game_temp.active_chain = false ; $game_temp.chain_ot = nil $game_temp.chain_action_phase = false end #-------------------------------------------------------------------------- # ● Chain Act Before Action #-------------------------------------------------------------------------- def chain_act_before_action @chain_command = true record_window_data if $imported[:mog_atb_system] if $imported[:mog_menu_cursor] @chain_curor_x = $game_temp.menu_cursor[2] $game_temp.menu_cursor[2] = -999 force_cursor_visible(false) end end #-------------------------------------------------------------------------- # ● Turn End #-------------------------------------------------------------------------- alias mog_chain_command_process_action_end process_action_end def process_action_end mog_chain_command_process_action_end chain_act_after_action end #-------------------------------------------------------------------------- # ● Chain Act After ACtion #-------------------------------------------------------------------------- def chain_act_after_action @chain_skill_original = nil $game_temp.chain_ot = nil return if @chain_command == nil restore_window_data if $imported[:mog_atb_system] $game_temp.menu_cursor[2] = @chain_curor_x if $imported[:mog_menu_cursor] @chain_command = nil end #-------------------------------------------------------------------------- # ● Set Chain Skill #-------------------------------------------------------------------------- def set_chain_skill(action_id) return if action_id == nil @subject.input.set_skill(action_id) $game_temp.chain_actions = [0,0,0,false] ; execute_action end #-------------------------------------------------------------------------- # ● Can Execute Chain Sequence? #-------------------------------------------------------------------------- def can_execute_chain_sequence?(chain_command_sequence = nil,action_id = nil) return false if chain_command_sequence == nil skill = $data_skills[action_id] rescue nil return false if skill == nil return false if $game_temp.chain_ot == nil or $game_temp.chain_ot.dead? if [9,10].include?(skill.scope) $game_party.battle_members.each do |i| return true if i.dead? end return false end return true end #-------------------------------------------------------------------------- # ● Can Execute Chain Actions Base #-------------------------------------------------------------------------- def can_execute_chain_actions_base? return false if @subject == nil or @subject.dead? return false if $game_temp.chain_ot == nil or $game_temp.chain_ot.dead? return false if @subject.is_a?(Game_Enemy) return false if @subject.current_action == nil @subject.states.each do |i| return false if i.restriction > 0 end return false if $game_party.members.empty? return false if $game_party.all_dead? return false if $game_troop.all_dead? if @pre_target != nil and $game_temp.chain_ot.hp == @pre_target_hp return false if $game_temp.chain_ot.result.missed return false if $game_temp.chain_ot.result.evaded end return true end end #============================================================================== # ■ Game Temp #============================================================================== class Game_Temp attr_accessor :cache_active_chain #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_active_chain_initialize initialize def initialize mog_active_chain_initialize cache_act_chain end #-------------------------------------------------------------------------- # ● Cache Act Chain #-------------------------------------------------------------------------- def cache_act_chain @cache_active_chain = [] @cache_active_chain.push(Cache.system("IconSet")) @cache_active_chain.push(Cache.system("Chain_Battle_Layout")) @cache_active_chain.push(Cache.system("Chain_Battle_Meter")) @cache_active_chain.push(Cache.system("Chain_Battle_Command")) end end #============================================================================== # ■ Spriteset Battle #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- alias mog_active_chain_commands_initialize initialize def initialize $game_temp.cache_act_chain ; $game_temp.active_chain = false $game_temp.chain_ot = nil mog_active_chain_commands_initialize end end #============================================================================== # ■ Chain Actions #============================================================================== class Chain_Actions include MOG_CHAIN_ACTIONS attr_accessor :phase attr_accessor :success #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def initialize(sequence,chain_temp) $game_temp.chain_actions[3] = true @chain_command = sequence @x = chain_temp[0] + CHAIN_SPRITE_POSITION[0] @y = chain_temp[1] + CHAIN_SPRITE_POSITION[1] @y = (Graphics.height - 36) if @y > (Graphics.height - 36) @y = 0 if @y < 0 @skill = $data_skills[chain_temp[2]] @skillname = @skill.name if CHAIN_INPUT_DURATION[chain_temp[2]] != nil @duration = [CHAIN_INPUT_DURATION[chain_temp[2]],CHAIN_INPUT_DURATION[chain_temp[2]]] else @duration = [CHAIN_DEFAULT_INPUT_DURATION, CHAIN_DEFAULT_INPUT_DURATION] end @phase = 0 ; @success = false ; @com = 0 ; @com_index = 0 @initial_wait = 1 ; @wrong_commnad = [false,0,0] Audio.se_play("Audio/SE/" + CHAIN_START_SE, 100, 100) rescue nil create_button_sprite ; create_skill_name ; create_icon ; create_meter end #-------------------------------------------------------------------------- # ● Create Icon #-------------------------------------------------------------------------- def create_icon @icon_image = $game_temp.cache_active_chain[0] @icon_sprite = Sprite.new ; @icon_sprite.bitmap = Bitmap.new(24,24) @icon_sprite.z = CHAIN_SPRITE_Z + 1 @org_x2 = @x - 12 + CHAIN_ICON_POSITION[0] - @center @icon_sprite.x = @org_x2 - 50 @icon_sprite.y = @y + CHAIN_ICON_POSITION[1] icon_rect = Rect.new(@skill.icon_index % 16 * 24, @skill.icon_index / 16 * 24, 24, 24) @icon_sprite.bitmap.blt(0,0, @icon_image, icon_rect) end #-------------------------------------------------------------------------- # ● Create Meter #-------------------------------------------------------------------------- def create_meter @meter_layout = Sprite.new @meter_layout.bitmap = $game_temp.cache_active_chain[1] @meter_layout.z = CHAIN_SPRITE_Z @meter_layout.x = @x - (@meter_layout.width / 2) + CHAIN_LAYOUT_POSITION[0] @meter_layout.y = @y + CHAIN_LAYOUT_POSITION[1] @meter_image = $game_temp.cache_active_chain[2] @meter_cw = @meter_image.width ; @meter_ch = @meter_image.height @meter = Sprite.new @meter.bitmap = Bitmap.new(@meter_image.width, @meter_image.height) @meter.z = CHAIN_SPRITE_Z + 1 @meter.x = @x - (@meter_image.width / 2) + CHAIN_METER_POSITION[0] @meter.y = @y + CHAIN_METER_POSITION[1] @meter.visible = false ; @meter_layout.visible = false ; update_meter end #-------------------------------------------------------------------------- # ● Update Meter #-------------------------------------------------------------------------- def update_meter return if @meter == nil @meter.bitmap.clear ; range = @meter_cw * @duration[0] / @duration[1] m_scr = Rect.new(0,0,range,@meter_ch ) @meter.bitmap.blt(0,0, @meter_image ,m_scr) end #-------------------------------------------------------------------------- # ● Initialize #-------------------------------------------------------------------------- def create_skill_name @skill_name = Sprite.new ; @skill_name.bitmap = Bitmap.new(200,32) @skill_name.bitmap.font.size = CHAIN_WORD_FONT_SIZE @skill_name.bitmap.font.color = CHAIN_WORD_FONT_COLOR @skill_name.z = CHAIN_SPRITE_Z @skill_name.y = @y - 32 + CHAIN_COMMAND_WORD_POSITION[1] refresh_skill_name end #-------------------------------------------------------------------------- # ● Refresh Skill Name #-------------------------------------------------------------------------- def refresh_skill_name cm = @skillname.to_s.split(//).size @center = ((200 / @skill_name.bitmap.font.size) * cm / 2) + 5 @org_x = @x - (@button_cw / 2) - 85 + CHAIN_COMMAND_WORD_POSITION[0] @skill_name.x = @org_x - 50 @skill_name.bitmap.draw_text(0,0,200,32,@skillname.to_s,1) end #-------------------------------------------------------------------------- # ● Create Button Sprite #-------------------------------------------------------------------------- def create_button_sprite @button_image = $game_temp.cache_active_chain[3] @button_cw = @button_image.width / 13 ; @button_ch = @button_image.height @button_sprite = Sprite.new @button_sprite.bitmap = Bitmap.new(@button_cw,@button_ch) @button_sprite.z = CHAIN_SPRITE_Z + 1 @button_sprite.ox = @button_cw / 2 ; @button_sprite.oy = @button_ch / 2 @button_sprite.x = @x + @button_sprite.ox - (@button_cw / 2) @button_sprite.y = @y + @button_sprite.oy end #-------------------------------------------------------------------------- # ● Refresh Button Command #-------------------------------------------------------------------------- def refresh_button_command return if @button_sprite == nil @duration[0] = @duration[1] command_list_check(@chain_command[@com_index]) @button_sprite.bitmap.clear button_scr = Rect.new(@com * @button_cw , 0,@button_cw,@button_ch) @button_sprite.bitmap.blt(0,0,@button_image,button_scr) @button_sprite.zoom_x = 2 ; @button_sprite.zoom_y = 2 @button_sprite.opacity = 255 end #-------------------------------------------------------------------------- # ● Dispose #-------------------------------------------------------------------------- def dispose dispose_button ; dispose_meter ; dispose_name ; dispose_icon_sprite $game_temp.chain_actions[3] = false ; $game_temp.active_chain = false end #-------------------------------------------------------------------------- # ● Dispose Icon Sprite #-------------------------------------------------------------------------- def dispose_icon_sprite return if @icon_sprite == nil @icon_sprite.bitmap.dispose ; @icon_sprite.dispose ; @icon_sprite = nil end #-------------------------------------------------------------------------- # ● Dispose Name #-------------------------------------------------------------------------- def dispose_name return if @skill_name == nil @skill_name.bitmap.dispose ; @skill_name.dispose ; @skill_name = nil end #-------------------------------------------------------------------------- # ● Dispose Button #-------------------------------------------------------------------------- def dispose_button return if @button_sprite == nil @button_sprite.bitmap.dispose ; @button_sprite.dispose ; @button_sprite = nil end #-------------------------------------------------------------------------- # ● Dispose Meter #-------------------------------------------------------------------------- def dispose_meter return if @meter_layout == nil @meter_layout.dispose ; @meter_layout = nil @meter.bitmap.dispose ; @meter.dispose end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update if @initial_wait > 0 @initial_wait -= 1 if @initial_wait == 0 refresh_button_command ; @meter.visible = true @meter_layout.visible = true end return end if @wrong_commnad[0] update_fade_command return end update_command ; update_sprite_button ; update_time ; update_meter end #-------------------------------------------------------------------------- # ● Update Skill Name #-------------------------------------------------------------------------- def update_fade_command fade_speed = 6 @skill_name.opacity -= fade_speed ; @meter.opacity -= fade_speed @meter_layout.opacity -= fade_speed ; @icon_sprite.opacity -= fade_speed @button_sprite.opacity -= fade_speed * 2 ; missed if @meter.opacity == 0 end #-------------------------------------------------------------------------- # ● Update Skill Name #-------------------------------------------------------------------------- def update_skill_name return if @skill_name == nil if @skill_name.x < @org_x @skill_name.x += 3 ; @icon_sprite.x += 3 if @skill_name.x > @org_x @skill_name.x = @org_x ; @icon_sprite.x = @org_x2 end end end #-------------------------------------------------------------------------- # ● Update Time #-------------------------------------------------------------------------- def update_time return if @button_sprite == nil @duration[0] -= 1 if @duration[0] > 0 wrong_command(1) if @duration[0] == 0 end #-------------------------------------------------------------------------- # ● Update Sprite Button #-------------------------------------------------------------------------- def update_sprite_button return if @button_sprite == nil if @button_sprite.zoom_x > 1.00 @button_sprite.zoom_x -= 0.05 @button_sprite.zoom_x = 1.00 if @button_sprite.zoom_x < 1.00 end @button_sprite.zoom_y = @button_sprite.zoom_x end #-------------------------------------------------------------------------- # ● Update Command #-------------------------------------------------------------------------- def update_command if Input.trigger?(:X) ; check_command(0) elsif Input.trigger?(:Z) ; check_command(1) elsif Input.trigger?(:Y) ; check_command(2) elsif Input.trigger?(:A) ; check_command(3) elsif Input.trigger?(:C) ; check_command(4) elsif Input.trigger?(:B) ; check_command(5) elsif Input.trigger?(:L) ; check_command(6) elsif Input.trigger?(:R) ; check_command(7) elsif Input.trigger?(:RIGHT) ; check_command(8) elsif Input.trigger?(:LEFT) ; check_command(9) elsif Input.trigger?(:DOWN) ; check_command(10) elsif Input.trigger?(:UP) ; check_command(11) end end #-------------------------------------------------------------------------- # ● command_list_check #-------------------------------------------------------------------------- def command_list_check(command) case command when "A" ; @com = 0 when "D" ; @com = 1 when "S" ; @com = 2 when "Shift" ; @com = 3 when "Z" ; @com = 4 when "X" ; @com = 5 when "Q" ; @com = 6 when "W" ; @com = 7 when "Right" ; @com = 8 when "Left" ; @com = 9 when "Down" ; @com = 10 when "Up" ; @com = 11 else ; @com = 12 end end #-------------------------------------------------------------------------- # ● check_command #-------------------------------------------------------------------------- def check_command(com) if com != -1 right_input = false @chain_command.each_with_index do |i, index| if index == @com_index command_list_check(i) ; right_input = true if @com == com end end else command_list_check(@com_index) ; right_input = true end if right_input next_command else wrong_command(0) end end #-------------------------------------------------------------------------- # ● Next Command #-------------------------------------------------------------------------- def next_command @com_index += 1 Audio.se_play("Audio/SE/" + CHAIN_RIGHT_SE, 100, 100) if @com_index == @chain_command.size @phase = 9 ; @success = true return end refresh_button_command end #-------------------------------------------------------------------------- # ● wrong_command #-------------------------------------------------------------------------- def wrong_command(type = 0) @wrong_commnad[0] = true ; @wrong_commnad[1] = type @skill_name.bitmap.clear Audio.se_play("Audio/SE/" + CHAIN_WRONG_SE, 100, 100) wname = type == 0 ? CHAIN_MISSED_WORDS[0] : CHAIN_MISSED_WORDS[1] @skill_name.bitmap.draw_text(0,0,200,32,wname.to_s,1) end #-------------------------------------------------------------------------- # ● missed #-------------------------------------------------------------------------- def missed @success = false ; @phase = 9 end end -
Salve a tutti, vorrei chiedervi se sia possibile creare uno script o un evento comune per poter utilizzare un'abilità che richieda una combinazione di tasti per funzionare. (Tipo le turbo di Auron in FFX).
Grazie.
-
Salve a tutti, da sempre ho voluto iniziare un progetto con rpg maker ma c'è un dubbio che mi assale da sempre: come potete notare da titolo, nel mio progetto vorrei mantenere il BS standard di rpgvx (per tutta una serie di motivi, tra gli altri perché non sono bravo a scriptare e perché non voglio prendere script sviluppati da altri utenti).
Fatta questa premessa, vorrei chiedervi, dato che il mio progetto prevede una stragrande maggioranza di battaglie 1v1, come fare per rendere tali battaglie meno scontate, noiose e prevedibili; vorrei evitare che la battaglia si riducesse ad una semplice alternanza di attacchi tra protagonista e nemico e poi chi ha più HP e più attacchi potenti vince.
Qualche consiglio? Magari sviluppando la cosa tramite gestione di eventi...Grazie.
-
Salve makers, stavo pensando che nel mio progetto è implementato il BS Tankentai ma ci sono molte battaglie 1 vs 1, come faccio a renderle più "avvincenti"? Altrimenti diventerebbe una semplice noiosa e morbosa alternanza di colpi.
-
Salve a tutti, in un semplice esercizio c'era bisogno di creare uno script di base per stampare su terminale la lista delle cartelle nella directory /bin/bash. Solo che mandando in esecuzione il file di testo (che ho chiamato "bash") con il comando "source bash" mi dice "impossibile eseguire il file binario". Qual è il problema?
Ecco il codice. Premetto che uso ubuntu 11.10
#! /bin/bash echo questo è uno script echo i file in \/bin sono: ls /bin

modificare windowskin interno
in Grafica
Posted · Edited by lzol
Buonasera, come da titolo, sto modificando la windowskin di base di rpg maker mv, ho un paio di piccoli intoppi, finora ho fatto questo:
http://i66.tinypic.com/2jb1rit.png
Il problema ora è riempire la skin, poiché il bordo frastagliato che vedete in alto a destra è riuscito, ma il risultato è questo
http://i64.tinypic.com/b4jmom.png
Come posso riempire la parte trasparente della windowskin? Grazie.
EDIT: Ho provato ad usare il Yanfly Engine Core e settare il campo 'Window Opacity' a 255 ma niente.