PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein Luftschiff erstellen mit RMXP



8-Bit Black Mage
02.02.2010, 19:07
Hallo Community,

ich hätte mal eine Frage:
Wie kann ich folgendes Szenario verwirklichen, man besteigt auf der Weltkarte ein Luftschiff. Mit diesem kann man dann herum fliegen (so wie in Final Fantasy z.B.) Man sollte natürlich auch wieder landen können. Und wenn möglich nicht z.B. auf dem Wasser oder auf Städten. Also, wie bewerkstellige ich das? Wäre dankbar über Hilfe.

SMWma
02.02.2010, 19:34
also wie man es einstellt, dass der Held über alles fliegen kann solltest du ja wissen? Set Move Route und dort irgendwo^
Nun frägst du bei einem Druck auf enter ab, darf man landen? Wenn ja, landet man, wenn nein halt net. Das kannst du einfach machen, indem du nachfrägst, ist das Feld passierbar? Benutzmal die Sufu mit meinen Namen, dann erden alle Threads von mir aufgelistet. In einen von denen steckt die Antwort^^

~Jack~
02.02.2010, 19:54
Oder du lädst dir einfach das Vehicle Script von hier (http://rmrk.net/index.php/topic,36470.0.html) (ist im Anhang) runter. Laut der Beschreibung kann man damit auch Luftschiffe erstellen.

Blacki
07.02.2010, 14:50
Oder du machst ein Event in dem als char graphic das luftschiff ist und tust es auf "action button" oder so und dan stellst du den player auf trough 1 schritt vor so das er im luftschiff steckt und dann party member ändern, den jetzigen "held" durch den held ersetzen der die Graphic des luftschiffes hat und dann die graphic des luftschiff events ändern auf nichts. Den player auf trough,always on top stellen und fertig o.o

Und zum landen benötigt man auch nicht wirklich ein Script, ein common event sollte ausreichen nur hab ich ab da keine Ahnung mehr :I verwende lieber das vehicle script.

8-Bit Black Mage
21.02.2010, 16:55
Habs mal mit diesem Script ausprobiert doch der funktioniert nur in seinem Projekt und nicht wenn ich es in meiner Liste hinzufügen möchte.

Anstatt das Vehicle zu betreten wird der Charakter zu einem (was ja fürs erste zwar richtig ist) doch dann wird auch noch eine andere Grafik gespeichert die man auf der Map erkennen kann. Man steigt wieder aus und man wird in eine andere Map tranferiert. Wenn das Luftschiff genutzt wird kann es keine Berge überqueren und zum Floß sag ich mal das es nur zum anschauen zu gebrauchen ist. Im großem und ganzem haben diese Vehicle auf der Map keine besondere Funktion auch wenn ich diese mit mehreren Funktionen ausstatte oder Tilesets der Nummerierung zuteilen möchte.

Der Script ist dieser:

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

Letzten Endes brachte es auch nichts sich darüber zu informieren da dies wohl ein besonderer Fall ist wie ich es in der Internetrecherche gemerkt habe.