Jump to content
Rpg²S Forum
  • 0

Modifica script


Apocrifis
 Share

Question

Salve,

avrei bisogno dell'aiuto di uno scripter nella modifica di un vehicle system script che ho provato e riprovato a modificare ma non ce la faccio.

Credo sia un problema di script e non di eventi, CREDO.

 

allora, questo è lo script:

 

class Game_Character
 def passable?(x, y, d)
   
   # Get new coordinates
   new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
   new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
   
   # If coordinates are outside of map
   unless $game_map.valid?(new_x, new_y)
     return false
   end
   
   # If through is ON
   if @through
     return true
   end
       
   # If unable to leave first move tile in designated direction
   unless $game_map.passable?(x, y, d, self)
     return false
   end
   
   # If unable to enter move tile in designated direction
   unless $game_map.passable?(new_x, new_y, 10 - d)
     return false
   end
       
   #check terrain for vehicle
   check_terrain(new_x, new_y)    
     
   # Loop all events
   for event in $game_map.events.values
     # If event coordinates are consistent with move destination
     if event.x == new_x and event.y == new_y
       @state = true
       # If through is OFF
       unless event.through
         # If self is event
         if self != $game_player
           return false
         end
         # With self as the player and partner graphic as character
         if event.character_name != ""
           return false
         end
       end
     end
   end
   
   if @state == false
     return false
   end      
   
   # If player coordinates are consistent with move destination
   if $game_player.x == new_x and $game_player.y == new_y
     # If through is OFF
     unless $game_player.through
       # If your own graphic is the character
       if @character_name != ""
         return false
       end
     end
   end
     
   
   return true
   
 end
 
 #--------------------------------------------------------------------------
 # * Check the terrain for the vehicle
 #   @terrain (0=none, 1=river, 2=ocean, 3=air, 4=ground)
 #   @vehicle (0=foot, 1=canoe, 2=boat, 3=dragon)
 #   @state (true=passable tile, false=unpassable tile)
 #--------------------------------------------------------------------------
 def check_terrain(new_x, new_y)  
   @state = false
   @terrain = $game_map.terrain_tag(new_x, new_y)
   @vehicle = $game_variables[1]
   
   @state = true if @vehicle == 0 && @terrain == 4  #foot & ground
   @state = true if @vehicle == 1 && @terrain == 3  #canoe & river
   @state = true if @vehicle == 2 && @terrain == 2  #boat & ocean
   @state = true if @vehicle == 3                   #dragon
   @state = true if @terrain == 0
 end

end

class Game_Player < Game_Character
 
 alias in_vehicle_alias update
 #--------------------------------------------------------------------------
 # * Memorize actor graphic
 #--------------------------------------------------------------------------      
 def actor_memorize
   @actor_name = $game_actors[1].character_name
   @actor_hue = $game_actors[1].character_hue
   @battler_name = $game_actors[1].battler_name
   @battler_hue = $game_actors[1].battler_hue
   return true
 end

 #--------------------------------------------------------------------------
 # * Restore actor graphic
 #--------------------------------------------------------------------------      
 def actor_restore
   actor = $game_actors[1]
   actor.set_graphic(@actor_name.to_s, @actor_hue, @battler_name.to_s, @battler_hue)
   $game_player.refresh
   return true
 end    
 
 #--------------------------------------------------------------------------
 # * Enter a vehicle
 #--------------------------------------------------------------------------        
 def enter_vehicle(type)
   
   $game_system.menu_disabled = true
   $game_system.save_disabled = true    
   
   if type != "dragon"
     @through = true
     move_forward
     @through = false    
   end
   
   actor_memorize
   actor = $game_actors[1]    
   actor.set_graphic(type, @actor_hue, @battler_name.to_s, @battler_hue) 
   
   $game_switches[1] = false    #Canoe Off     
   $game_switches[2] = false    #Boat Off     
   $game_switches[3] = false    #Dragon Off         
   
   if type == "canoe"
     $game_variables[1] = 1       #set terrian
     $game_switches[1] = true    #Canoe On
     Audio.bgm_play("Audio/BGM/047-Positive05", 100, 100) #play canoe music
 
   elsif type == "boat"
     $game_variables[1] = 2       #set terrian
     $game_switches[2] = true    #Boat On      
     Audio.bgm_play("Audio/BGM/046-Positive04", 100, 100) #play ship music
     
   elsif type == "dragon"
     $game_variables[1] = 3       #set terrian
     $game_switches[3] = true    #Dragon On  
     Audio.bgm_play("Audio/BGM/045-Positive03", 100, 100) #play dragon music
     
   end
   
   $game_player.refresh
   $game_map.refresh
   
   return true
 end

 #--------------------------------------------------------------------------
 # * Enter a vehicle
 #--------------------------------------------------------------------------        
 def exit_vehicle

   $game_system.menu_disabled = false    
   $game_system.save_disabled = false
   
   if @terrain == 4
           
     if $game_switches[1] == true      #getting off canoe
       canoe = $game_map.events[1]     #get canoe event
       canoe.moveto(x, y)              #move to player's x, y coords
       $game_switches[1] = false       #Canoe Off   
       $game_variables[2] = x          #set canoe x coord
       $game_variables[3] = y          #set canoe y coord
       @through = true
       move_forward
       @through = false          
       
     elsif $game_switches[2] == true   #getting off boat
       boat = $game_map.events[2]      #get boat event
       boat.moveto(x, y)               #move to player's x, y coords        
       $game_switches[2] = false       #Boat Off    
       $game_variables[4] = x          #set boat x coord
       $game_variables[5] = y          #set boate y coord  
       @through = true
       move_forward
       @through = false                  
       
     elsif $game_switches[3] == true   #getting off dragon
       dragon = $game_map.events[3]    #get dragon event
       dragon.moveto(x, y)             #move to player's x, y coords        
       $game_switches[3] = false       #Dragon Off    
       $game_variables[6] = x          #set dragon x coord
       $game_variables[7] = y          #set dragon y coord 
     end
     
     # get off vehicle
     actor_restore
   
     # reset terrain
     $game_variables[1] = 0           
   
     # play walking music
     Audio.bgm_play("Audio/BGM/044-Positive02", 100, 100) #play music
     
     $game_player.refresh  
     $game_map.refresh    
   
   end
 
 end 
 
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   in_vehicle_alias
   # if not on ground terrain, check for boat exit
   if $game_variables[1] != 0
     if Input.trigger?(Input::C)
       exit_vehicle
     end   
   end
 end

end

 

con questo sistema il personaggio mi scende solamente sulla terra ed è giusto ke sia così, ma mi servirebbe che "scendesse" anche quando il drago o la barca solcano rispettivamente aria e mare e questo per fare un sistema di "entrata" all'interno del veicolo come nelle FFseries.

io nei miei test ho alternato un common event che schiacciando un tasto mi avrebbe traspostato alla data mappa e una leggera modifica allo script dalla riga 236:

 

def update
   in_vehicle_alias
   # if not on ground terrain, check for boat exit
   if $game_variables[1] != 0
     if Input.trigger?(Input::C)
       exit_vehicle
     elsif Input.trigger?(Input::R)
       exit_vehicle
     end

 

e il common event in sotanza faceva si che pressando il tasto R il pg si trasportasse nell'interno del veicolo;

purtroppo lo faceva solamente sopra la terra quindi se ero sopra il mare o in giro non entrava.. T_T

 

credo di aver spiegato tutto..aiutatemi!!

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
potresti spiegare meglio???

 

Si certo che si.

 

Allora, lo script che ho messo abilita il vehicle system in una ipotetica world map.

Nei vari Final Fantasy, parlo x esperienza del VII, VIII, IX, mentre si utilizzava la hairship, o navicella o dir si voglia, si poteva premento un tasto entrare nell'abitacolo della navicella e quindi "esplorarla" nel suo interno, per poi tornare, dopo aver parlato cn il "commandante", a viaggiare con la navicella per il mondo.

questo è quello che mi servirebbe, ossia, che tramite la pressione di un tasto (che sia R, W, Q o qualsiasi altro non cambia) si possa entrare nell'abitacolo della navicella ovunque ci si trovi con essa (sopra la terra, il mare o le montagne).

 

E' possibile da fare?

come ho scritto io sono riuscito a farlo funzionare tramite common event e parte di uno script, ma mi funzionava solamente mentre ero sopra la terra

Link to comment
Share on other sites

  • 0

ho capito tu lo vuoi come in ff8 che premendo triangolo entra nella navicella e poi parlando col pilota ritorni al comando della nave.(ora ci provo).E poi ti faccio sapere

 

mi servirebbero le istruzioni dello script

Edited by Darkshiva
Link to comment
Share on other sites

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