REu Posted February 23, 2008 Share Posted February 23, 2008 purtroppo anche un grande scripter come me può perdere la testa di fronte a problemi tutt'altro che seri dovuti alla mia iNNioranza... vorrei sapere qual'è il codice script che serve per attivare una switch l'evento sarebbe SWITCH 45 =ON ma io lo dovrei inserire in uno script!E non so come poterlo scrivere! poi mi servirebbe anche il codice script per l'evento if SWITCH 45 IS ON allora ecc ecc. cioè io metto nello scriptife poi? non mi è chiaro il codice cosa vorrei fare in pratica? vorrei che ,una volta finito il gioco, si sbloccasse un'avventura parallela a quella dei protagonisti principali. quindi ricapitolando: se clicco su NUOVO GIOCO spunta Ciccio & co story ------------------- quando il gioco finisce,dopo i titoli di coda si attiva la switch 45e Ciccio & co story Pacchio story ora la seconda avventura si è sbloccata! mi servono solo questi due codici, ho provato a mettere nello script un codice scritto un pò a caso del tipo switch_45 = on ma non ha funzionato grazzie anticipatamente Io sono ciò che voi non siete e voi siete ciò che io sono. Link to comment Share on other sites More sharing options...
0 Sylaer Posted February 23, 2008 Share Posted February 23, 2008 Se ho capito bene quello che vuoi fare è una sorta di New Game+ cioè una scelta diversa al menu iniziale se hai completato il gioco, beh non è una cosa da fare così banale comunque ti dico come si fa ad richiamare le swictch negli script:$game_switches[X]= trueMetti questo se vuoi settare la switch X a ON, metti false al posto di true se invece la voi settare a OFF.Per controllare se una switch è ON o OFF invece metti questoif $game_switches[X]==true QUELLO CHE TI PARE endMetti i comandi al posto di QUELLO CHE TI PARE, e se vuoi vedere se la switch X è OFF metti false al posto di true. http://www.rpg2s.net/awards/bestscripter1.jpgSe avete bisogno di modifiche, correzioni o creazioni da zero di script RGSS, allora visitate la mia bottega.La bottega di Sylaer Link to comment Share on other sites More sharing options...
0 REu Posted February 23, 2008 Author Share Posted February 23, 2008 (edited) mi da errore undefined method []= for nil:NilClass a che altezza devo mettere il codice che attiva la switch? oggi proprio non me ne va bene una EDIT l'errore non me lo da più perchè come un idiota avevo messo il codice sopra il def l'if messo nello scene_title funziona , infatti se non attivo la switch non posso fare l'avventura parallela, tuttavia se metto "$game_switches[49]==true" nello script dei titoli di coda o anche nello stesso scene_title , la switch rimane off e allora ho deciso di attivarla tramite un evento Edited February 23, 2008 by REu Io sono ciò che voi non siete e voi siete ciò che io sono. Link to comment Share on other sites More sharing options...
0 REu Posted February 23, 2008 Author Share Posted February 23, 2008 (edited) niente da fare la switch anche tramite evento non viene attivata , è come se dopo i titoli di coda in qualche modo si resettasse tutto per cui la switch non cambia. adesso posto 2 script , il primo è quello dei titoli di coda e il secondo è lo script di "selezione campagna " preso proprio da questo forum (leggermente modificato da me) titoli coda #================================= #Scene_Ending #------------------------------------------------------------------ # #================================= class Scene_Ending #----------------------------------------------------------------- def main $game_switches[49] = true $data_system = load_data("Data/System.rxdata") $game_system = Game_System.new @start_time = Time.now #--------------------------------- pictures=["A" ] @pic_start_array=[1,9] @pic_end_array=[8,14] #--------------------------------- x_list=[0,0] #------------------------------------ y_list=[0,0] # @fade_in_speed=[100,1] @pic_array=Array.new for i in 0...pictures.size sprite=Sprite.new sprite.bitmap=RPG::Cache.picture("" + pictures[i]) sprite.opacity=0 sprite.x=x_list[i] sprite.y=y_list[i] sprite.z=9997 @pic_array[i]=sprite end strings=["coglione chi legge"] @win=Window_Base.new(0,480,640,64 * strings.size ) @win.contents=Bitmap.new(@win.width-32,@win.height-32) @win.contents.font.name="Kingdom Hearts" @win.contents.font.size=28 @win.opacity=0 @win.z=9998 #(234,236,147,200) @win.contents.font.color=Color.new(192,188,10,200) for i in 0...strings.size cw=@win.contents.text_size(strings[i]).width @win.contents.draw_text(@win.contents.width/2 - cw/2,64*i,cw,32,strings[i]) end @skip_enabled = false for i in 0..3 if FileTest.exist?("Save#{i+1}.sav") @skip_enabled = true end end if $DEBUG @skip_enabled=true end #---------------------------- #--------------------------- #Audio.bgm_play("Audio/BGM/music", 150, 100) Audio.bgm_play("Audio/BGM/KH2 title", 150, 120) Graphics.transition @go_to_title=false @every_other=0 loop do if @go_to_title break end Graphics.update Input.update $game_system.update update end Graphics.freeze for i in 0...@pic_array.size @pic_array[i].dispose end @win.dispose $scene=Scene_Title.new end #----------------------------------------------------------------- def update if Input.trigger?(Input::C) and @skip_enabled $game_system.se_play($data_system.cancel_se) @go_to_title= true end if Time.now >= @start_time + 85 @go_to_title = true end if Time.now <= @start_time + 38 or Time.now >= @start_time +77 phase_1 end if Time.now >= @start_time + 33 phase_2 end end #----------------------------------------------------------------- def phase_1 for i in 0...@pic_array.size time = Time.now - @start_time if time >= @pic_start_array[i] and time <= @pic_end_array[i] @pic_array[i].opacity +=@fade_in_speed[i] else @pic_array[i].opacity -= @fade_in_speed[i] end end end #----------------------------------------------------------------- def phase_2 @every_other+=1 if @every_other % 2 ==1 @win.y -= 1 end end end # Scene_Ending e infine questo è lo script campagna modificato da me #====================================================================== #======== # ** Scene_CampaignSelection #------------------------------------------------------------------------------ # Utile per giochi di azione. Invece di affrontare solo una campagna, si avrà # facoltà di scegliere che avventura giocare per prima. #============================================================================== class Scene_CampaignSelection #-------------------------------------------------------------------------- # * Processo principale #-------------------------------------------------------------------------- def main # Visualizza l'immagine di sfondo (che si trova nella cartella # Graphics/Title e si chiama Campagna.png #------------------@sprite = Sprite.new #-----------@sprite.bitmap = RPG::Cache.title("Campagna.PNG") anim_init(8, 3, true, "anim") # Crea i comandi s0 = "Tutorial" if $game_switches[49]==true s1 = "Campagna 1" else s1 = "--------------------" end s2 = "Campagna 2" s3 = "Campagna 3" s4 = "Indietro" @command_window = Window_Command.new(300, [s0, s1, s2, s3, s4]) @command_window.back_opacity = 160 @command_window.x = 320 - @command_window.width / 2 @command_window.y = 240 - @command_window.height / 2 # Avvio riproduzione BGM #$game_system.bgm_play($data_system.title_bgm) Audio.bgm_play("Audio/BGM/Title definitiva_c", 150, 100) # Ferma la riproduzione di ME e BGS Audio.me_stop Audio.bgs_stop # Esegue la transizione Graphics.transition # Loop principale loop do #animazione animation # Aggiorna la schermata Graphics.update # Aggiorna l'input Input.update # Richiamo della def update update # Ferma il loop se la scene cambia if $scene != self break end end # Prepara la transizione Graphics.freeze # Disposizione della finestra @command_window.dispose # Disposizione dell'immagine di sfondo @sprite.bitmap.dispose @sprite.dispose end #-------------------------------------------------------------------------- # * Aggiornamento #-------------------------------------------------------------------------- def update # Aggiorna la finestra dei comandi @command_window.update # Se si preme Esc torna al titolo if Input.trigger?(Input::B) titolo end # Se si preme il tasto INVIO if Input.trigger?(Input::C) # Casistica della posizione del cursore case @command_window.index when 0 # prima opzione (in BSA: Tutorial) #Le seguenti tre variabili controllano la posizione iniziale. #Cambiarne i valori per cambiare la destinazione. #start_map_id = ID Mappa iniziale #start.x = posizione sull'asse X #start.y = posizione sull'asse Y $data_system.start_map_id = 1 $data_system.start_x = 10 $data_system.start_y = 4 tutorial when 1 # seconda opzione (in BSA: '91 - '05) $data_system.start_map_id = 11 $data_system.start_x = 0 $data_system.start_y = 0 campagna_1 #---------------------------- when 2 # terza opzione (in BSA: 2005 - 2009) $data_system.start_map_id = 7 $data_system.start_x = 0 $data_system.start_y = 0 campagna_2 when 3 # quarta opzione (in BSA: 2010) $data_system.start_map_id = 9 $data_system.start_x = 0 $data_system.start_y = 0 campagna_3 when 4 #torna al titolo titolo end end end #-------------------------------------------------------------------------- # * Trasferimento alla prima campagna. #-------------------------------------------------------------------------- def campagna_1 if $game_switches[49]==true # Riproduci SE $game_system.se_play($data_system.decision_se) # Ferma BGM Audio.bgm_stop # Resetta il frame count (serve per calcolare il tempo di gioco) Graphics.frame_count = 0 # Crea gli oggetti $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new # Imposta il party iniziale $game_party.setup_starting_members # Imposta la mappa iniziale $game_map.setup($data_system.start_map_id) # Coordinate iniziali $game_player.moveto($data_system.start_x, $data_system.start_y) # Refresh del giocatore $game_player.refresh # Riproduce i BGM e BGS propri di quella mappa $game_map.autoplay # Aggiorna mappa (per gli eventi in parallelo) $game_map.update # Vai alla Scene_Map $scene = Scene_Map.new end end #-------------------------------------------------------------------------- # * Trasferimento alla seconda campagna. #-------------------------------------------------------------------------- def campagna_2 # Riproduci SE $game_system.se_play($data_system.decision_se) # Stop BGM Audio.bgm_stop # Reset frame count for measuring play time Graphics.frame_count = 0 # Make each type of game object $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new # Set up initial party $game_party.setup_starting_members # Set up initial map position $game_map.setup($data_system.start_map_id) # Move player to initial position $game_player.moveto($data_system.start_x, $data_system.start_y) # Refresh player $game_player.refresh # Run automatic change for BGM and BGS set with map $game_map.autoplay # Update map (run parallel process event) $game_map.update # Switch to map screen $scene = Scene_Map.new end #-------------------------------------------------------------------------- # * Trasferimento alla terza campagna #-------------------------------------------------------------------------- def campagna_3 # Play decision SE $game_system.se_play($data_system.decision_se) # Stop BGM Audio.bgm_stop # Reset frame count for measuring play time Graphics.frame_count = 0 # Make each type of game object $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new # Set up initial party $game_party.setup_starting_members # Set up initial map position $game_map.setup($data_system.start_map_id) # Move player to initial position $game_player.moveto($data_system.start_x, $data_system.start_y) # Refresh player $game_player.refresh # Run automatic change for BGM and BGS set with map $game_map.autoplay # Update map (run parallel process event) $game_map.update # Switch to map screen $scene = Scene_Map.new end #-------------------------------------------------------------------------- # * Tornare al titolo #-------------------------------------------------------------------------- def titolo # Play decision SE $game_system.se_play($data_system.cancel_se) $scene = Scene_Title.new end #-------------------------------------------------------------------------- # * Trasferimento al tutorial #-------------------------------------------------------------------------- def tutorial # Play decision SE $game_system.se_play($data_system.decision_se) # Stop BGM Audio.bgm_stop # Reset frame count for measuring play time Graphics.frame_count = 0 # Make each type of game object $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new # Set up initial party $game_party.setup_starting_members # Set up initial map position $game_map.setup($data_system.start_map_id) # Move player to initial position $game_player.moveto($data_system.start_x, $data_system.start_y) # Refresh player $game_player.refresh # Run automatic change for BGM and BGS set with map $game_map.autoplay # Update map (run parallel process event) $game_map.update # Switch to map screen $scene = Scene_Map.new end end def anim_init(nb_frame, vitesse, boucle, nom_image) @nb_frame = nb_frame @nom_image = nom_image @vitesse = vitesse @boucle = boucle @compteur = 0 @sprite = Sprite.new @sprite.bitmap = RPG::Cache.picture(@nom_image+"0") end def animation for i in 0..@nb_frame-1 if @compteur == @vitesse * i @sprite.bitmap = RPG::Cache.picture(@nom_image+i.to_s) end end @compteur +=1 if @compteur == @vitesse * @nb_frame if @boucle == true @compteur = 0 else @compteur -= 1 end end end l'if messo in questo script funziona ma non funziona il codice che dovrebbe attivarla la switch vorrei solo sapere dove ho sbagliato... Edited February 24, 2008 by REu Io sono ciò che voi non siete e voi siete ciò che io sono. Link to comment Share on other sites More sharing options...
0 Sylaer Posted February 24, 2008 Share Posted February 24, 2008 (edited) Nel primo script:$scene=Scene_Title.newqui c'è un problema perché il selettore di campagna non si chiama Scene_Title, ma Scene_CampaignSelection, per questo ti dovrebbe andare al titolo invece che in questa scena. Comunque metti lo spoiler, sennò ci vuole mezz'ora per scrollare tutto. Edited February 24, 2008 by Sylaer http://www.rpg2s.net/awards/bestscripter1.jpgSe avete bisogno di modifiche, correzioni o creazioni da zero di script RGSS, allora visitate la mia bottega.La bottega di Sylaer Link to comment Share on other sites More sharing options...
0 REu Posted February 24, 2008 Author Share Posted February 24, 2008 Bè così facendo appena finiscono i titoli di coda invece di andare al menù principale mi và direttamente alla schermata di selezione campagna e la campagna si sblocca, però se metto indietro (ritornando al title) e poi metto nuovo gioco la campagna parallela si blocca di nuovo!Come se non bastasse se io decido di salvare la partita dopo aver attivato la switch e prima dei titoli di coda , poi il BS in tempo reale mi dà errore alla stringa "$ABS.refresh(@event, @list, @character_name)" senza alcun motivo apparente Io sono ciò che voi non siete e voi siete ciò che io sono. Link to comment Share on other sites More sharing options...
Question
REu
purtroppo anche un grande scripter come me può perdere la testa di fronte a problemi tutt'altro che seri dovuti alla mia iNNioranza...
vorrei sapere qual'è il codice script che serve per attivare una switch
l'evento sarebbe SWITCH 45 =ON ma io lo dovrei inserire in uno script!E non so come poterlo scrivere!
poi mi servirebbe anche il codice script per l'evento if SWITCH 45 IS ON allora ecc ecc.
cioè io metto nello script
if
e poi? non mi è chiaro il codice
cosa vorrei fare in pratica? vorrei che ,una volta finito il gioco, si sbloccasse un'avventura parallela a quella dei protagonisti principali.
quindi ricapitolando:
se clicco su NUOVO GIOCO
spunta
Ciccio & co story
-------------------
quando il gioco finisce,dopo i titoli di coda si attiva la switch 45
e
Ciccio & co story
Pacchio story
ora la seconda avventura si è sbloccata!
mi servono solo questi due codici, ho provato a mettere nello script un codice scritto un pò a caso del tipo
switch_45 = on ma non ha funzionato
grazzie anticipatamente
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now