Jump to content
Rpg²S Forum
  • 0

aiutatemiiii grazzie


REu
 Share

Question

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

Io sono ciò che voi non siete e voi siete ciò che io sono.
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

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]= true

Metti 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 questo

if $game_switches[X]==true
QUELLO CHE TI PARE
end

Metti 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.jpg

Se 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

  • 0

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 by REu
Io sono ciò che voi non siete e voi siete ciò che io sono.
Link to comment
Share on other sites

  • 0

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 by REu
Io sono ciò che voi non siete e voi siete ciò che io sono.
Link to comment
Share on other sites

  • 0

Nel primo script:

$scene=Scene_Title.new

qui 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 by Sylaer

http://www.rpg2s.net/awards/bestscripter1.jpg

Se 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

  • 0
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...