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
Question
Apocrifis
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 endcon 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 ende 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
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