• Login

Dear visitor, welcome to RPG Studio - Make your World real. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Flex

Krieger

  • "Flex" started this thread

Motto: Menschen sind doof, Tiere sind doof, Pflanzen sind doof... Steine sind okay.

  • Send private message

1

Sunday, August 2nd 2015, 12:49pm

Stufen á la Pokémon

Moin zusammen.
Ich hab da wieder einmal eine Scriptanfrage.
Und zwar nutze ich ein Tileset, in dem es kleine Felskanten gibt, die den Stufen von Pokemon, bei denen man hinab hüpfen kann, doch sehr ähneln.
Nun ist mir in dem Zusammenhang eingefallen, dass man ihnen vielleicht dieselbe Funktion geben könnte.
Klar wäre das auch mit Events gelöst, das wär kein großes Ding, nur leider wird das Spiel bei ZU vielen Events schnell unperformant, weshalb ein Script sicher die elegantere Lösung wär.

Vielleicht könnte man ja den Scrip so gestalten, dass bei einem speziellen Region-Tag eine Stufe daraus wird, die man hinabspringen kann. Müssten dann allerdings vier geben, denn es wär sinnvoll, wenn man in jede Richtung hüpfen könnte - wobei ich das doch eher den Scriptern unter euch überlasse ^^ (Habe zur Veranschaulichung mal ein Bild im Anhang)

Gerne auch mit einem Sound, der direkt beim Springen abgespielt wird :)
Flex has attached the following file:
  • Unbenannt-1.jpg (39.33 kB - 2 times downloaded - latest: Sep 7th 2015, 5:41pm)
Was lebt, das kann man töten. Was tot ist, das kann man essen.
--------------------------------------------------------------------------
:map: Mapping: :star::star::star::star::star:
:compile: Scripting: :star-empty::star-empty::star-empty::star-empty::star-empty:
:system-monitor: Event: :star::star::star::star::star:
:doc: Story: :star::star::star::star::star-empty:
:pencil: Zeichnen: :star::star::star::star::star:
:palette: Pixeln: :star::star::star-half::star-empty::star-empty:
:music-beam-16: Musik & Sounds: :star::star::star::star-empty::star-empty:
--------------------------------------------------------------------------
Bevorzugter Maker: :ace:
Ebenfalls im Besitzt: :rmxp: :rmvx: :rmmv:

Avery

Dinoritterin mit Herrschaft über die Contests und Ressourcen

  • Send private message

2

Sunday, August 2nd 2015, 5:14pm

Schau mal hier:
Lesson One: Ledges and Jumping - RPG Maker VX Ace Forums

Ich bin grade etwas auf dem Sprung, aber das sollte dein Problem lösen ;3

Flex

Krieger

  • "Flex" started this thread

Motto: Menschen sind doof, Tiere sind doof, Pflanzen sind doof... Steine sind okay.

  • Send private message

3

Sunday, August 2nd 2015, 9:39pm

Das hilft mir nicht wirklich, da diese Lösung nur für Stufen gilt, bei denen man runterspringen kann, wenn ich das richtig verstanden habe :/
Aber ich würde auch gern, dass man auch in die anderen drei Richtungen springen kann, je nach Stufe (wie im Anhang)
Was lebt, das kann man töten. Was tot ist, das kann man essen.
--------------------------------------------------------------------------
:map: Mapping: :star::star::star::star::star:
:compile: Scripting: :star-empty::star-empty::star-empty::star-empty::star-empty:
:system-monitor: Event: :star::star::star::star::star:
:doc: Story: :star::star::star::star::star-empty:
:pencil: Zeichnen: :star::star::star::star::star:
:palette: Pixeln: :star::star::star-half::star-empty::star-empty:
:music-beam-16: Musik & Sounds: :star::star::star::star-empty::star-empty:
--------------------------------------------------------------------------
Bevorzugter Maker: :ace:
Ebenfalls im Besitzt: :rmxp: :rmvx: :rmmv:

Playm

RPG Studio Webmaster

  • Send private message

4

Sunday, August 2nd 2015, 11:58pm

Averys Lösung klappt in alle vier Richtungen, erfordert aber wieder Events an jeder Stelle. Ich setz mich dran und editier das Skript nachher hier rein. :hi:

Edit Whoop whoop :dance:
Testfertige Version im Spoiler
Spoiler

Ruby Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#==============================================================================
# ** Jump cliffs like in Pokemon [Version 1.0]
#------------------------------------------------------------------------------
#  Ermöglicht es den Helden von kleinen Anhöhen herunterspringen zu lassen.
#  Dafür muss die Stelle der Anhöhe selber passierbar sein und im Tileset bei
#  den Passierbarkeitseinstellungen für vier Richtungen entsprechend eine 
#  einzelne Richtung gesperrt sein.
#  Wenn ihr an dieser Stelle auf der Map nun die Region 50 (in Zeile 46 anpass-
#  bar) platziert, kann der Held von diesem Punkt die Anhöhe herunterspringen.
#------------------------------------------------------------------------------
#  Autor: Playm
#  Datum: August 2015
#  Maker: RPG Maker VX Ace
#  Einfache Nutzung in nicht-kommerziellen VX Ace Projekten ist gestattet.
#  Keine kommerzielle Nutzung gestattet. Für Lizenzen an den Autor wenden.
#  Keine Weiterverbreitung in originaler oder abgeänderter Form gestattet.
#==============================================================================
# ** Game_CharacterBase
#==============================================================================
class Game_CharacterBase
  #--------------------------------------------------------------------------
  # * Move Straight
  #     d:        Direction (2,4,6,8)
  #     turn_ok : Allows change of direction on the spot
  #--------------------------------------------------------------------------
  def move_straight(d, turn_ok = true)
    @move_succeed = passable?(@x, @y, d)
    if @move_succeed
      set_direction(d)
      @x = $game_map.round_x_with_direction(@x, d)
      @y = $game_map.round_y_with_direction(@y, d)
      @real_x = $game_map.x_with_direction(@x, reverse_dir(d))
      @real_y = $game_map.y_with_direction(@y, reverse_dir(d))
      increase_steps
    elsif on_jump_location?
      jump_forward(d)
    elsif turn_ok
      set_direction(d)
      check_event_trigger_touch_front
    end
  end
  #--------------------------------------------------------------------------
  # * Is Character on a special position?
  #--------------------------------------------------------------------------
  def on_jump_location?
    region_id == 50
  end
  #--------------------------------------------------------------------------
  # * Jump one Step forward
  #     d: Direction (2,4,6,8)
  #--------------------------------------------------------------------------
  def jump_forward( d )
    tx = $game_map.round_x_with_direction(@x, d)
    ty = $game_map.round_y_with_direction(@y, d)
    if passable?(tx, ty, d)
      x_plus = (d == 4) ? -1 : (d == 6) ? 1 : 0
      y_plus = (d == 8) ? -1 : (d == 2) ? 1 : 0
      jump(x_plus, y_plus)
      increase_steps
    end
  end
end
#==============================================================================
# ** Game_Player
#==============================================================================
class Game_Player
  #--------------------------------------------------------------------------
  # * Move Straight
  #--------------------------------------------------------------------------
  def move_straight(d, turn_ok = true)
    @followers.move if passable?(@x, @y, d) or on_jump_location?
    super
  end
end
highlight to read

Edit Im Skript gibt es einen Fehler. Bitte Version 1.1 weiter unten im Thread beachten.

Flex

Krieger

  • "Flex" started this thread

Motto: Menschen sind doof, Tiere sind doof, Pflanzen sind doof... Steine sind okay.

  • Send private message

5

Monday, August 3rd 2015, 8:27pm

Super, danke für den Script!
An einer Stelle funktioniert er jedoch etwas seltsam, finde ich.
Obwohl zwischen der Klippe, die man hinab springen kann, und einem unpassierbaren Objekt noch ein freier Block ist, kann man diese nicht hinab springen. Man muss scheinbar immer mindestens 2 Blöcke freies Feld vor sich haben, um springen zu können

> Hab da mal ein Bild im Anhang. Der blaue Bereich ist begehbar, dennoch kann man dort, am roten Pfeil, nicht hinunterspringen. Könnte man das noch ändern?

Edit Und könnte man vielleicht noch die Möglichkeit einbauen, einen Sound abzuspielen, wenn man springt? =) Das wär noch das Sahnehäupchen ^^
Flex has attached the following file:
  • Unbenannt-1.jpg (226.39 kB - 9 times downloaded - latest: Oct 19th 2017, 10:18am)
Was lebt, das kann man töten. Was tot ist, das kann man essen.
--------------------------------------------------------------------------
:map: Mapping: :star::star::star::star::star:
:compile: Scripting: :star-empty::star-empty::star-empty::star-empty::star-empty:
:system-monitor: Event: :star::star::star::star::star:
:doc: Story: :star::star::star::star::star-empty:
:pencil: Zeichnen: :star::star::star::star::star:
:palette: Pixeln: :star::star::star-half::star-empty::star-empty:
:music-beam-16: Musik & Sounds: :star::star::star::star-empty::star-empty:
--------------------------------------------------------------------------
Bevorzugter Maker: :ace:
Ebenfalls im Besitzt: :rmxp: :rmvx: :rmmv:

Playm

RPG Studio Webmaster

  • Send private message

6

Monday, August 3rd 2015, 11:05pm

Hm, auf deinem Screenshot sieht es aus, als würden die Klippen ein ganzes Tile einnehmen, wobei beim schreiben des Skripts die Idee war, das die Klippen zwischen zwei Tiles liegen (siehe Beispielscreenshot).

Mit der Fehlermeldung hast Du recht, hatte ausversehen die falsche passable?-Methode verwendet, ist jetzt korrigiert. Hier das neue Skript:
Spoiler

Ruby Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#==============================================================================
# ** Jump cliffs like in Pokemon [Version 1.1]
#------------------------------------------------------------------------------
#  Ermöglicht es den Helden von kleinen Anhöhen herunterspringen zu lassen.
#  Dafür muss die Stelle der Anhöhe selber passierbar sein und im Tileset bei
#  den Passierbarkeitseinstellungen für vier Richtungen entsprechend eine 
#  einzelne Richtung gesperrt sein.
#  Wenn ihr an dieser Stelle auf der Map nun die Region 50 (in Zeile 49 anpass-
#  bar) platziert, kann der Held von diesem Punkt die Anhöhe herunterspringen.
#  Bei jedem Sprung wird ein SE abgespielt, legt fest welcher das seien soll
#  in Zeile 85, oder gebt einen leeren Namen '' an, wenn keiner abgespielt
#  werden soll.
#------------------------------------------------------------------------------
#  Autor: Playm
#  Datum: August 2015
#  Maker: RPG Maker VX Ace
#  Einfache Nutzung in nicht-kommerziellen VX Ace Projekten ist gestattet.
#  Keine kommerzielle Nutzung gestattet. Für Lizenzen an den Autor wenden.
#  Keine Weiterverbreitung in originaler oder abgeänderter Form gestattet.
#==============================================================================
# ** Game_CharacterBase
#==============================================================================
class Game_CharacterBase
  #--------------------------------------------------------------------------
  # * Move Straight
  #     d:        Direction (2,4,6,8)
  #     turn_ok : Allows change of direction on the spot
  #--------------------------------------------------------------------------
  def move_straight(d, turn_ok = true)
    @move_succeed = passable?(@x, @y, d)
    if @move_succeed
      set_direction(d)
      @x = $game_map.round_x_with_direction(@x, d)
      @y = $game_map.round_y_with_direction(@y, d)
      @real_x = $game_map.x_with_direction(@x, reverse_dir(d))
      @real_y = $game_map.y_with_direction(@y, reverse_dir(d))
      increase_steps
    elsif on_jump_location?
      jump_forward(d)
    elsif turn_ok
      set_direction(d)
      check_event_trigger_touch_front
    end
  end
  #--------------------------------------------------------------------------
  # * Is Character on a special position?
  #--------------------------------------------------------------------------
  def on_jump_location?
    region_id == 50
  end
  #--------------------------------------------------------------------------
  # * Jump one Step forward
  #     d: Direction (2,4,6,8)
  #--------------------------------------------------------------------------
  def jump_forward( d )
    tx = $game_map.round_x_with_direction(@x, d)
    ty = $game_map.round_y_with_direction(@y, d)
    if map_passable?(tx, ty, d)
      x_plus = (d == 4) ? -1 : (d == 6) ? 1 : 0
      y_plus = (d == 8) ? -1 : (d == 2) ? 1 : 0
      jump(x_plus, y_plus)
      increase_steps
      Sound.play_jump
    end
  end
end
#==============================================================================
# ** Game_Player
#==============================================================================
class Game_Player
  #--------------------------------------------------------------------------
  # * Move Straight
  #--------------------------------------------------------------------------
  def move_straight(d, turn_ok = true)
    @followers.move if passable?(@x, @y, d) or on_jump_location?
    super
  end
end
#==============================================================================
# ** Sound
#==============================================================================
module Sound
  # Play Jump SE
  def self.play_jump
    Audio.se_play( 'Audio/SE/Jump1', 80, 100 )
  end
end
highlight to read
Playm has attached the following file:
  • Jumpbeispiel.png (23.39 kB - 9 times downloaded - latest: Oct 19th 2017, 10:18am)

Similar threads

Social bookmarks