-
Posts
1,288 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Everything posted by giver
-
Nello stesso blocco di codice che hai modificato per l'uscita forzata dal menù, cerca qualche riga più sopra l'istruzione @actor.equip(type, item == nil ? 0 : item.id) Per prima cosa devi riscriverla così @actor.equip(type, item.id) Poi, nella riga sopra quella inserisci unless item == nil Quindi, scendi quasi in fondo al blocco di codice, e SOPRA il return aggiungi un altro end
-
Non sono sicuro di aver capito . . . Se vuoi che non appena viene cambiato un solo elemento dell'equipaggiamento da uno dei PG nel party, tutti i membri del party perdano 100 MP (Magic Points ?) e si torni alla mappa di gioco, ma solo se un determinato switch è attivo, dovresti - Andare nello script Scene_Equip - Cercare il metodo (def) update_item (l'ultimo nello script, di base) - In fondo al blocco di codice che comincia con if Input.trigger?(Input::C), tra le istruzioni @item_window.refresh e return, inserire queste istruzioni if $game_switches[id_dello_switch] for actor in $game_party.actors actor.sp -= 100 end $scene = Scene_Map.new end Dovrebbe funzionare, se ho capito bene . . .
-
Bloccare all'istante anche graficamente gli Eventi!
giver replied to nihil-omen's question in Richieste scripts RGSS (XP)
Prego. Comunque sono corrette entrambe le forme, ossia sia 1..8 che 1...8, ma la seconda esclude dal confronto il secondo estremo indicato, in questo caso 1...8 è come 1..7 . . . Se sono proprio 8 gli eventi da bloccare, ti conviene sostituire, quindi, l'8 con un 9, altrimenti l'evento con ID 8 non viene bloccato assieme agli altri. E se a te lo blocca lo stesso, con 1...8, è davvero strano . . . -
Bloccare all'istante anche graficamente gli Eventi!
giver replied to nihil-omen's question in Richieste scripts RGSS (XP)
Non so se funzioni o se abbia effetti collaterali particolari, perchè non l'ho testato, ma per bloccare i primi 8 eventi, puoi provare a fare così . . . Aggiungi questo snippet come ultimo script, sopra lo script Main. class Game_Event < Game_Character # Inserire qui il numero dello SWITCH che fa bloccare i primi 8 eventi quando ON/true LOCK_NIHIL_EVENTS_SWCID = 1 # alias giver_lock8ev_gevnt_updt update # def update if $game_switches[LOCK_NIHIL_EVENTS_SWCID] and (1..8).include?(@id) return end giver_lock8ev_gevnt_updt endend Scegli uno switch da mettere ON per bloccare i primi 8 eventi e OFF per sbloccarli, quindi inserisci il suo ID al posto dell'1 come valore della costante LOCK_NIHIL_EVENTS_SWCID nel codice che ho postato . . . Per quello che riguarda la distanza, la calcola come se il passo fosse già stato completato . . . EDIT - Aggiunta la superclasse e le parentesi intorno al range 1..8, che dovrebbero evitare l'errore capitato a nihil-omen -
A partire dalla riga 354 c'è questo blocco di codice (sotto @ap = ap, per capirci) for i in 0...$game_party.actors.size actor = $game_party.actors[i] actor.ap += ap actor.exp += exp end Come lo devi sostituire dipende da come vuoi che gli AP vengano appresi . . . Se vuoi che li ricevano anche i PG con HP azzerati (knockout), dovrebbe diventare for i in 0...$game_party.actors.size actor = $game_party.actors[i] actor.ap += ap if actor.cant_get_exp? == false last_level = actor.level actor.exp += exp if actor.level > last_level @status_window.level_up(i) end end end altrimenti, Se vuoi che li ricevano solo i PG che guadagnano exp, dovrebbe diventare for i in 0...$game_party.actors.size actor = $game_party.actors[i] if actor.cant_get_exp? == false last_level = actor.level actor.ap += ap actor.exp += exp if actor.level > last_level @status_window.level_up(i) end end end
-
Prova a vedere se funziona questa versione che ho modificato . . . #==============================================================================# Ring_Menu#==============================================================================# By: XRXS, Dubealex, and Hypershadow180# Converted to RMVX By DouglasMF (RPG Maker Brasil)#==============================================================================# Scene_Menu#------------------------------------------------------------------------------# Esta classe controla o conjunto de objetos que forma o RingMenu#============================================================================== class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # Inicializa #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # Inicia os objetos do menu #-------------------------------------------------------------------------- def start super @spriteset = Spriteset_Map.new @gold_window = Window_Gold.new(0, 360) @win_local = Window_Local.new(0,0) @status_window = Window_MenuStatus.new(160, 0) px = $game_player.screen_x - 16 py = $game_player.screen_y - 28 @ring_menu = Window_RingMenu_Comando.new(px,py) @status_window.z = @ring_menu.z + 20 @status_window.visible = false end #-------------------------------------------------------------------------- # Fexa os objetos do menu #-------------------------------------------------------------------------- def terminate super @spriteset.dispose @ring_menu.dispose @gold_window.dispose @win_local.dispose @status_window.dispose end #-------------------------------------------------------------------------- # Atualiza os objetos do menu #-------------------------------------------------------------------------- def update super @ring_menu.update @gold_window.update @win_local.update @spriteset.update @status_window.update if @ring_menu.active update_command_selection elsif @status_window.active update_actor_selection end end #-------------------------------------------------------------------------- # Atualiza o comando e a seleção do menu #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @ring_menu.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @ring_menu.index == 4 Sound.play_buzzer return end Sound.play_decision case @ring_menu.index when 0 $scene = Scene_Item.new when 1,2,3 start_actor_selection when 4 $scene = Scene_File.new(true, false, false) when 5 $scene = Scene_End.new end end if Input.trigger?(Input::UP) or Input.trigger?(Input::LEFT) Sound.play_cursor @ring_menu.girar(3) return end if Input.trigger?(Input::DOWN) or Input.trigger?(Input::RIGHT) Sound.play_cursor @ring_menu.girar(4) return end end #-------------------------------------------------------------------------- # Inicia a seleção de personagem #-------------------------------------------------------------------------- def start_actor_selection @ring_menu.active = false @status_window.visible = true @status_window.active = true if $game_party.last_actor_index < @status_window.item_max @status_window.index = $game_party.last_actor_index else @status_window.index = 0 end end #-------------------------------------------------------------------------- # Finaliza a seleção de personagens #-------------------------------------------------------------------------- def end_actor_selection @ring_menu.active = true @status_window.active = false @status_window.visible = false @status_window.index = -1 end #-------------------------------------------------------------------------- # Atualiza a seleção de personagens #-------------------------------------------------------------------------- def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection elsif Input.trigger?(Input::C) $game_party.last_actor_index = @status_window.index Sound.play_decision case @ring_menu.index when 1 $scene = Scene_Skill.new(@status_window.index) when 2 $scene = Scene_Equip.new(@status_window.index) when 3 $scene = Scene_Status.new(@status_window.index) end end endend #==============================================================================# Window_RingMenu_Comando#------------------------------------------------------------------------------# Esta classe cria o ring menu.#============================================================================== class Window_RingMenu_Comando < Window_Base DurIni = 30 DurMov = 15 RaioAnel = 64 ModoIni = 1 ModoEsp = 2 ModoMD = 3 ModoME = 4 SE_Inicio = "" attr_accessor :index #-------------------------------------------------------------------------- # Inicia o objeto #-------------------------------------------------------------------------- def initialize(centro_x,centro_y) super(0, 0, 544, 416) self.opacity = 0 self.contents.font.size = 16 s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end @item_name = [s1,s2,s3,s4,s5,s6] @item_max = 6 @item_icon = [144,128,40,137,149,112] @item_hab = [true,true,true,true,true,true] @index = 0 @cx = centro_x - 12 @cy = centro_y - 12 inicia_menu refresh end #-------------------------------------------------------------------------- # Atualiza o objeto #-------------------------------------------------------------------------- def update super refresh end #-------------------------------------------------------------------------- # Atualiza o objeto #-------------------------------------------------------------------------- def refresh self.contents.clear case @modo when ModoIni refresh_inicio when ModoEsp refresh_espera when ModoMD refresh_mover(1) when ModoME refresh_mover(0) end sw = self.contents.width rect = Rect.new((@cx - ((sw-32)/2))+12, @cy - 40, sw-32, 32) self.contents.draw_text(rect, @item_name[@index],1) end #-------------------------------------------------------------------------- # Abre o menu #-------------------------------------------------------------------------- def refresh_inicio d1 = 2.0 * Math::PI / @item_max d2 = 1.0 * Math::PI / DurIni r = RaioAnel - 1.0 * RaioAnel * @passos / DurIni for i in 0...@item_max j = i - @index d = d1 * j + d2 * @passos x = @cx + ( r * Math.sin( d ) ).to_i y = @cy - ( r * Math.cos( d ) ).to_i desenha_item(x, y, i) end @passos -= 1 if @passos < 1 @modo = ModoEsp end end #-------------------------------------------------------------------------- # Atualiza o menu #-------------------------------------------------------------------------- def refresh_espera d = 2.0 * Math::PI / @item_max for i in 0...@item_max j = i - @index x = @cx + ( RaioAnel * Math.sin( d * j ) ).to_i y = @cy - ( RaioAnel * Math.cos( d * j ) ).to_i desenha_item(x, y, i) end end #-------------------------------------------------------------------------- # Movimenta o menu #-------------------------------------------------------------------------- def refresh_mover(modo) d1 = 2.0 * Math::PI / @item_max d2 = d1 / DurMov d2 *= -1 if modo != 0 for i in 0...@item_max j = i - @index d = d1 * j + d2 * @passos x = @cx + ( RaioAnel * Math.sin( d ) ).to_i y = @cy - ( RaioAnel * Math.cos( d ) ).to_i desenha_item(x, y, i) end @passos -= 1 if @passos < 1 @modo = ModoEsp end end #-------------------------------------------------------------------------- # Desenha o icone #-------------------------------------------------------------------------- def desenha_item(x, y, i) if @index == i self.cursor_rect.set(x-4, y-4, 32, 32) draw_icon(@item_icon[i], x, y, @item_hab[i]) else draw_icon(@item_icon[i], x, y, @item_hab[i]) end end #-------------------------------------------------------------------------- # Inicia o menu #-------------------------------------------------------------------------- def inicia_menu @modo = ModoIni @passos = DurIni if SE_Inicio != nil and SE_Inicio != "" Audio.se_play("Audio/SE/" + SE_Inicio, 80, 100) end end #-------------------------------------------------------------------------- # Gira o menu #-------------------------------------------------------------------------- def girar(modo) if modo == ModoMD @index -= 1 @index = @item_hab.size - 1 if @index < 0 elsif modo == ModoME @index += 1 @index = 0 if @index >= @item_hab.size else return end @modo = modo @passos = DurMov end end #==============================================================================# Scene_Title#------------------------------------------------------------------------------# Faz modificações nescessarias para a exibição do nome do mapa#============================================================================== class Scene_Title alias load_database_old load_database def load_database load_database_old $data_mapinfo = load_data("Data/MapInfos.rvdata") endend #==============================================================================# Window_Local#------------------------------------------------------------------------------# Cria a janela responsavel pela exibição do nome do mapa#============================================================================== class Window_Local < Window_Base #-------------------------------------------------------------------------- # Inicia o objeto #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 160, 96) refresh end #-------------------------------------------------------------------------- # Atualiza o objeto #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120, 32, "Local:") self.contents.font.color = system_color self.contents.draw_text(4, 32, 120, 32, $data_mapinfo[$game_map.map_id].name, 2) endend EDIT - Forse l'incompatibilità con l'antilag si può aggirare sostituendo la riga 24 di questo script con un paio di istruzioni, ossia @spriteset = Spriteset_Map.new dovrebbe diventare snapshot_for_backgroundcreate_menu_background e la riga 39 @spriteset.dispose deve diventare dispose_menu_background Però, ripeto, non sono sicuro . . .
-
R: Non so dove puoi trovarne perchè uso l'XP, e non cerco risorse VX. Però ho trovato una utility che crea le skin per VX simile a quella per XP. Ovviamente, richiedendo il VX per poter essere usata, non posso esprimermi sulla sua effettiva validità . . . Pagina con Utility WindowSkin Generator VX
-
R: Woratana, uno dei migliori scripter in circolazione per quello che riguarda il VX, ha realizzato una demo contenente molti dei suoi script, tra cui lo skip title che ti serve. Scarica Wora's Giftbox 2k8 @ Mediafire
-
Nella sezione script VX ce ne sono ben due che fanno questo, e non devi neanche faticare tanto per trovarli . . . Vedi se almeno uno di quelli ti va bene.
-
Richiesta script per status alterati
giver replied to tidus00's question in Richieste scripts RGSS2 (VX)
Figurati, ci ho provato volentieri, ed avrei insistito di più se non dovessi dedicare tempo ed attenzione ad altre faccende. Però, c'è qualcosa che non mi torna, perchè: Ho ricontrollato il pezzo di codice che ho realizzato, e questa volta non mi pare di aver sbagliato a scrivere qualcosa . . . (Magari prova a riscriverlo tu da zero, alla riga 5, dove ti dà il NameError) Se continua a darlo undefined, o hai messo il pezzo di script che ti ho dato SOPRA lo Scene_Battle del VX, o hai pasticciato col Tantenkai, perchè il metodo update_basic c'è e viene pure chiamato dal Tankentai (senza ATB) in diverse occasioni (quindi dovrebbe dare lo stesso ultimo errore usando il Tankentai senza modifiche) . . . E se non veniva sfruttato dal Tankentai, al massimo non avrebbe usato il codice aggiuntivo (a meno di aver eliminato lo Scene_Battle del VX). Non so proprio cosa dirti . . . -
Richiesta script per status alterati
giver replied to tidus00's question in Richieste scripts RGSS2 (VX)
Evidentemente il BS del VX gestisce le fasi in modo diverso dall'XP. Non potendo testare il codice personalmente, ed imparare ad usare il VX non è ciò che desidero, posso solo fare teorie a riguardo. Non so, l'ho riscritto con qualche modifica, dopo un'altra occhiata anche agli script di default del VX. class Scene_Battle < Scene_Base # Indicare il numero dello state CRISI nel DataBase CRISIS_STATE_ID = 21 # alias giver_crsstt_scnbttl_updtbas update_basic # def update_basic(main = false) giver_crsstt_scnbttl_updtbas(main) if (Graphics.frame_count % Graphics.frame_rate) == 0 for member in $game_party.members + $game_troop.members next unless member.exist? if member.state?(CRISIS_STATE_ID) member.force_damage = 1 end end end endend Se non funziona, mi dispiace, ma non servirebbe andare avanti a tentativi, senza studiarsi per bene le migliaia di righe di codice che compongono il BS e senza avere il supporto del debugger del VX . . . In tal caso dovrai aspettare che uno esperto con gli script di questo tool decida di aiutarti, o rinunciare a questa funzione. -
Richiesta script per status alterati
giver replied to tidus00's question in Richieste scripts RGSS2 (VX)
Infatti ho sbagliato a digitare. In quella riga Graphics è scritto due volte e per sbaglio, la seconda volta, ho messo la j invece della i . . . Basta correggere la seconda Graphics per rimediare. -
Richiesta script per status alterati
giver replied to tidus00's question in Richieste scripts RGSS2 (VX)
Come sempre, premetto che non uso il VX. Se preferisci aspettare il parere di uno più esperto con questo tool, l'RGSS2 e il tankentai, ti capisco . . . Allora. Ho scaricato il tankentai 3.3 senza atb postato in questo forum da Amber Rei. Ho estratto gli script dalla demo e ci ho dato un'occhiata: bel malloppino . . . Ho letto il codice abbastanza approfonditamente e mi sono fatto una certa idea di come implementare ciò che hai chiesto. Ho prodotto questo codice: EDIT - 3 - Ho eliminato il codice visto che non funziona . . . Per sicurezza va messo come ultimo degli script custom sopra il Main. Devi indicare all'inizio del codice qual è l'ID dello status CRISI nel DataBase. Non ho idea se possa davvero funzionare . . . Vedi tu se usare o no questo codice. Potrebbe esistere un modo molto più elegante ed adeguato per fare questo, configurando oppurtunamente il BS, ma io questo non ho modo di saperlo. -
Richiesta script per status alterati
giver replied to tidus00's question in Richieste scripts RGSS2 (VX)
E quale Battle System usi, per curiosità ? -
Non ci sono stringhe con i nomi perchè le prende dalle informazioni di sistema. In teoria, quindi, se il computer ha il SO in italiano dovrebbe visualizzarli, sempre abbreviati, ma in italiano, non in inglese. Io non ho il VX, quindi non posso verificare come funziona, ma se mi dai l'elenco di TUTTI i nomi dei mesi e dei giorni che appaiono di base USANDO lo script (non semplicemente leggendone le istruzioni), la modifica che ti serve è facile da fare. Però devi essere preciso.
-
R: Di base non si può perchè non esistono i dati necessari a fare una cosa simile finchè non si comincia una partita da zero o da un salvataggio . . . Una delle soluzioni più usate per aggirare il problema è far partire il gioco direttamente su mappa e fare una di queste cose: A) Creare un Title ad eventi, da usare dopo gli eventi di apertura. B) Passare al title scriptato (Scene_Title) con il comando apposito, ottimizzato per non ripetere la creazione dei dati necessari al gioco, dopo gli eventi di avvio . . . In entrambi i casi, ovviamente, bisogna apportare modifiche ad alcuni script del VX.
-
E perchè non uno script in grado di tenere una conversazione sensata con un essere umano su un argomento scelto a piacere dall'umano ? XD Battute a parte, oltre ad avere poco senso l'inserimento di un gioco tanto impegnativo come gli scacchi all'interno di un RPG, non sarebbe mica uno scherzo da sviluppare per offrire una sfida interessante . . . A livello di intelligenza artificiale persino il tris ce l'ha più complicata di quella del Black Jack che ti ha segnalato Theoras . . . Figurati gli scacchi. Sephiroth Spawn aveva realizzato una versione RGSS del Triple Triad, se non sbaglio . . .
-
Non sono sicuro di aver capito cosa vuoi fare . . . Vuoi che la voce Extra appaia in apertura assieme a Nuovo/Carica/Esci se esiste almeno un Salvataggio ed in almeno uno dei salvataggi è stato sbloccato almeno un Extra ? Se è così, si può fare, ma il tempo di caricamento della prima mappa, quella con il Title, sarebbe ulteriormente rallentato . . . E tra l'altro risulta un pelino incasinato da realizzare, anche usando un'unica Switch/Flag che venga messa ON/true assieme al primo sblocco di un Extra (In pratica sarebbe da creare un evento comune che metta ON la switch Extra Disponibili in caso non lo sia già, da chiamare subito dopo l'attivazione di uno Switch per gli Extra) . . . Mi sono venute in mente un paio di alternative: !) Settare l'informazione nel Game.ini durante il salvataggio e verificarne il contenuto in avvio . . . 2) Creare un file aggiuntivo in fase di salvataggio, che può contenere qualunque cosa, anche solo la parola "extra" o un codice "criptico/criptato" particolare, ed in avvio verifichi se questo file esiste, come si fa per i Salvataggi . . . Un ulteriore alternativa sarebbe inserire l'accesso agli Extra dal Menù di Gioco invece che da quello d'avvio
-
Sì, certo, le guide che hai in firma sono il segno evidente che sei un n00b XD Non conosci bene il VX, ma è una cosa completamente diversa . . . Comunque, nemmeno io ho mai installato il VX, e non lo installerei neanche se me lo regalassero . . . (L'unica miglioria rispetto all'XP, ossia gli script riscritti meglio, è stata realizzata solo grazie agli sforzi di molti scripter dell'XP, mica per sbattimenti della Enterbrain.)
-
Usando la normale composizione delle aree nel VX, quelle dove puoi specificare l'incontro di certi tipi di mostri anzichè tutti quelli del DataBase . . . @Keroro: $data_areas fa parte del normali dati del VX (sono state reintrodotte rispetto all'XP), non è stata aggiunta dal creatore dello script . . .
-
Gli screen degli "altri"
giver replied to Timisci's topic in International Making / Making Internazionale
Dovrebbe essere questo . . . http://www.freebirdgames.com/quintessence.html -
battle system strategico a turni!!!
giver replied to rathalos93's question in Richieste scripts RGSS (XP)
Ce n'è anche un altro che si chiama Zenith TBS, più vecchio e meno aggiornato rispetto al GubiD's TBS . . . -
Da quello che ho capito, elenca solo le funzioni associate ad ogni Button indicato (A, B, C, X). Esistono 3 modalità di funzionamento (Le tre costanti MODE_qualchecosa indicate all'inizio della classe che gestisce quella finestrella), ed ognuna prevede funzioni diverse per gli stessi Button . . . Ora, io non ho approfondito la lettura del codice dello script e non ho il VX, quindi non posso fare esperimenti per vedere cosa accade . . . Posso solo suggerirti di provare a premere i Button indicati nella finestrella e cercare di capire quale funzione è stata attivata in base a quello che accade . . . I nomi delle funzioni associate ai Button, nel refresh di quella classe, sono sostituiti da punti di domanda nella versione che hai postato, ma se nella versione che usi sono sotto forma di ideogrammi o simili, puoi provare ad usare, in alternativa alla sperimentazione, un tool di traduzione online per vedere se esce qualcosa di sensato . . .
-
E' facile, se vuoi solo far svanire la windowskin: attorno al libro però si vedrà il vuoto (tutto nero, insomma) . . . Basta inserire questo codice nel def initialize di quella finestra, sotto listruzione (che suppongo sia impostata così) super(0, 0, 640, 480) self.opacity = 0 Se invece vuoi usare un'immagine che riempia l'intera area visibile, dovrai faticare un po' di più . . . METODO 1 - Modificando la Scene (ancora più utile se si volesse usare un fondale che "copra" più finestre di una Scene) METODO 2 - Modificando il contenuto della Finestra
-
+ Testament
