collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: [Tutorial] Freies Springen  (Gelesen 4362 mal)

Offline PatrickStar

  • SH1>RE, aber RE>SH5
  • Database-Verunstalter
  • **
  • Beiträge: 152
[Tutorial] Freies Springen
« am: Oktober 03, 2009, 20:26:07 »
                                       Freies Springen





Moin moin^^ Ich mache mal ein Tutorial über freies Springen damit das Forum nicht mehr zugespammt wird.

Also als erstes gehen wir in die Database und dann auf generelles Ereignis.
Und machen ein Ereignis mit der Bedingung Schalter X ist an.
Auslöser ist ein Paralleler Prozess.
Dann machen wir in der Eventseite eine Bedingung.
In diesem Fall "Button X wurde gedrückt"   (X Gamepad-Taste = A Tastaturtaste)
Dann fragen wir ab in welcher Richtung der Spieler steht.
Also Bedingung Spieler ist Richtung rechts andernfalls Bedingung Spieler ist links ...USW.
Ich habe vor jedem Jump noch ein SE eingefügt und am Ende einen kleinen Wait.
Das Ganze kann dann so aussehen:

Dannach gehen wir auf Skript Editor : (dieses Zeichen )
Scrollen runter.
Und fügen Woratana´s Skript einfach über Main ein. Damit man nicht aus dem Bildschirm springen kann und Ähnliches. (bei Benutzung Crediteintrag für Woratana)

Skript:
#===============================================================
# ? [VX] ? Improved & Special Move Commands ? ?
#--------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Released on: 20/03/2008
# ? Version: 1.0
#--------------------------------------------------------------
=begin
?=====?=====?=====?=====?=====?=====?=====?=====?=====?
                   + COMMANDS LIST +
?=====?=====?=====?=====?=====?=====?=====?=====?=====?
################################
? IMPROVED MOVE COMMANDS ?

? SAFE JUMP:
Don't Jump if its destination is OUT OF THE SCREEN (or) NOT PASSABLE.
(Old jump will not check before jump)

? IMPROVED RANDOM MOVE
Find the movable direction before move.
(Old random move will just skip to move in that frame, if its destination is not passable.)

? IMPROVED COLLIDE_WITH_CHARACTERS CHECK
'Same as Characters' events are able to walk on other 'Below Characters' events.

? Note: If you don't want one of this improved command, just delete its part.
(I put all of their command name above their script part)
################################

################################
? SPECIAL(NEW) MOVE COMMANDS ?

++[HOW TO USE]++
? Open 'Move Route' window, (or event command 'Set Move Route')
Click 'Script...' and type the move command you want...

? MOVE TOWARD POSITION X/Y
move_toward_pos(x,y)

? MOVE AWAY FROM POSITION X/Y
move_away_from_pos(x,y)

? MOVE TOWARD EVENT ID
move_toward_event(id)

? MOVE AWAY FROM EVENT ID
move_away_from_event(id)

? TURN TOWARD POSITION X/Y
turn_toward_pos(x,y)

? TURN AWAY FROM POSITION X/Y
turn_away_from_pos(x,y)

? TURN TOWARD EVENT ID
turn_toward_event(id)

? TURN AWAY FROM EVENT ID
turn_away_from_event(id)
################################
=end
class Game_Character
  ##################################################################
  # IMPROVED MOVE COMMANDS
  ##################################################################
  #-------------------------------------------------------------
  # SAFE JUMP
  #-------------------------------------------------------------
  def jump(x_plus, y_plus)
    if x_plus.abs > y_plus.abs            # ??????????
      x_plus < 0 ? turn_left : turn_right
    elsif x_plus.abs > y_plus.abs         # ??????????
      y_plus < 0 ? turn_up : turn_down
    end
    new_x = @x + x_plus
    new_y = @y + y_plus
    if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y)
      @x += x_plus
      @y += y_plus
      distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round
      @jump_peak = 10 + distance - @move_speed
      @jump_count = @jump_peak * 2
      @stop_count = 0
      straighten
    end
  end
 
  #-------------------------------------------------------------
  # IMPROVED RANDOM MOVE
  #-------------------------------------------------------------
  def move_random
    safe = false
    checked = []
    while safe == false
      break if checked.include?(0) and checked.include?(1) and
      checked.include?(2) and checked.include?(3)
      case rand(4)
      when 0; return if checked.include?(0); checked.push 0
        if passable?(@x, @y + 1)
          safe = true; move_down(false)
        end
      when 1; return if checked.include?(1); checked.push 1
        if passable?(@x - 1, @y)
          safe = true; move_left(false)
        end
      when 2; return if checked.include?(2); checked.push 2
        if passable?(@x + 1, @y)
          safe = true; move_right(false)
        end
      when 3; return if checked.include?(3); checked.push 3
        if passable?(@x - 1, @y)
          safe = true; move_up(false)
        end
      end
    end
  end
 
  #----------------------------------------------------------------------
  # IMPROVED COLLIDE_WITH_CHARACTERS CHECK
  #----------------------------------------------------------------------
  def collide_with_characters?(x, y)
    for event in $game_map.events_xy(x, y)          # Matches event position
      unless event.through                          # Passage OFF?
        return true if event.priority_type == 1     # Target is normal char
      end
    end
    if @priority_type == 1                          # Self is normal char
      return true if $game_player.pos_nt?(x, y)     # Matches player position
      return true if $game_map.boat.pos_nt?(x, y)   # Matches boat position
      return true if $game_map.ship.pos_nt?(x, y)   # Matches ship position
    end
    return false
  end
 
  ##################################################################
  # SPECIAL(NEW) MOVE COMMANDS
  ##################################################################
  #--------------------------------------------------------------------------
  # * Move toward Position
  #--------------------------------------------------------------------------
  def move_toward_pos(x,y)
    sx = distance_x_from_pos(x)
    sy = distance_y_from_pos(y)
    if sx != 0 or sy != 0
      if sx.abs > sy.abs                  # Horizontal distance is longer
        sx > 0 ? move_left : move_right   # Prioritize left-right
        if @move_failed and sy != 0
          sy > 0 ? move_up : move_down
        end
      else                                # Vertical distance is longer
        sy > 0 ? move_up : move_down      # Prioritize up-down
        if @move_failed and sx != 0
          sx > 0 ? move_left : move_right
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Move away from Position
  #--------------------------------------------------------------------------
  def move_away_from_pos(x,y)
    sx = distance_x_from_pos(x)
    sy = distance_y_from_pos(y)
    if sx != 0 or sy != 0
      if sx.abs > sy.abs                  # Horizontal distance is longer
        sx > 0 ? move_right : move_left   # Prioritize left-right
        if @move_failed and sy != 0
          sy > 0 ? move_down : move_up
        end
      else                                # Vertical distance is longer
        sy > 0 ? move_down : move_up      # Prioritize up-down
        if @move_failed and sx != 0
          sx > 0 ? move_right : move_left
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Move toward Event
  #--------------------------------------------------------------------------
  def move_toward_event(id)
    move_toward_pos($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * Move away from Event
  #--------------------------------------------------------------------------
  def move_away_from_event(id)
    move_away_from_pos($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * Turn toward Position
  #--------------------------------------------------------------------------
  def turn_toward_pos(x,y)
    sx = distance_x_from_pos(x)
    sy = distance_y_from_pos(y)
    if sx.abs > sy.abs                    # Horizontal distance is longer
      sx > 0 ? turn_left : turn_right
    elsif sx.abs < sy.abs                 # Vertical distance is longer
      sy > 0 ? turn_up : turn_down
    end
  end
  #--------------------------------------------------------------------------
  # * Turn away from Position
  #--------------------------------------------------------------------------
  def turn_away_from_pos(x,y)
    sx = distance_x_from_pos(x)
    sy = distance_y_from_pos(y)
    if sx.abs > sy.abs                    # Horizontal distance is longer
      sx > 0 ? turn_right : turn_left
    elsif sx.abs < sy.abs                 # Vertical distance is longer
      sy > 0 ? turn_down : turn_up
    end
  end
  #--------------------------------------------------------------------------
  # * Turn toward Event
  #--------------------------------------------------------------------------
  def turn_toward_event(id)
    turn_toward_pos($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * Turn away from Event
  #--------------------------------------------------------------------------
  def turn_away_from_event(id)
    turn_away_from_pos($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * Calculate X Distance From Event
  #--------------------------------------------------------------------------
  def distance_x_from_pos(x)
    sx = @x - x
    if $game_map.loop_horizontal?         # When looping horizontally
      if sx.abs > $game_map.width / 2     # Larger than half the map width?
        sx -= $game_map.width             # Subtract map width
      end
    end
    return sx
  end
  #--------------------------------------------------------------------------
  # * Calculate Y Distance From Event
  #--------------------------------------------------------------------------
  def distance_y_from_pos(y)
    sy = @y - y
    if $game_map.loop_vertical?           # When looping vertically
      if sy.abs > $game_map.height / 2    # Larger than half the map height?
        sy -= $game_map.height            # Subtract map height
      end
    end
    return sy
  end
end


Ok das wars dann auch schon.
Für Leute bei denen Fehler kommen etc.
Hier noch eine kleine Demo: http://www.mediafire.com/download.php?m0nma2d42wb

Viel Spass Wünscht

¥ PatrickStar ¥
« Letzte Änderung: Oktober 03, 2009, 20:28:23 von PatrickStar »


Treffen sich 2 stumme sagt der eine: " ".
Darauf der andere: " ".

Re: [Tutorial] Freies Springen

Offline Boogatie Roll

  • VX-Meister
  • ****
  • Beiträge: 676
  • Java[Spiele] Programmierer
    • BRolls Game Website
Re: [Tutorial] Freies Springen
« Antwort #1 am: Oktober 04, 2009, 13:03:55 »
hab das selbe schon mal ohne script nur über Database gemacht.
Bloß konnte man da überall springen.
Das heißt auch auf gesperrte Gegenstände (mit einem X belegt) wie Wände konnte man springen.
Und auch aus dem Bildschirm.
Korigiert das Script beide Fehler?

Re: [Tutorial] Freies Springen

Offline OceanBlue

  • Palmenfan
  • VX-Großmeister
  • *****
  • Beiträge: 822
  • Back from the Dead
Re: [Tutorial] Freies Springen
« Antwort #2 am: Oktober 04, 2009, 13:29:00 »
Zitat
? IMPROVED MOVE COMMANDS ?

? SAFE JUMP:
Don't Jump if its destination is OUT OF THE SCREEN (or) NOT PASSABLE.
(Old jump will not check before jump)

Wer lesen und englisch kann ist klar im Vorteil.
Nochmal für die, dies nicht können: Ja.


Re: [Tutorial] Freies Springen

Offline PatrickStar

  • SH1>RE, aber RE>SH5
  • Database-Verunstalter
  • **
  • Beiträge: 152
Re: [Tutorial] Freies Springen
« Antwort #3 am: Oktober 04, 2009, 14:36:21 »
Ach du Kacke dieser alte Beitrag war so peinlich und bähh das ich ihn geändert hab. wär froh wenn jemand ihn löschen würde.
« Letzte Änderung: Januar 05, 2012, 23:39:48 von PatrickStar »


Treffen sich 2 stumme sagt der eine: " ".
Darauf der andere: " ".

Re: [Tutorial] Freies Springen

Offline Boogatie Roll

  • VX-Meister
  • ****
  • Beiträge: 676
  • Java[Spiele] Programmierer
    • BRolls Game Website
Re: [Tutorial] Freies Springen
« Antwort #4 am: Oktober 05, 2009, 12:44:30 »
Zitat
? IMPROVED MOVE COMMANDS ?

? SAFE JUMP:
Don't Jump if its destination is OUT OF THE SCREEN (or) NOT PASSABLE.
(Old jump will not check before jump)

Wer lesen und englisch kann ist klar im Vorteil.
Nochmal für die, dies nicht können: Ja.

Super! Ich wollt halt nicht den ganzen Code durchlesen..
den meistens sind die Mega Lang und ich blick Ruby eh nicht.
Trotzdem danke...
(hätte man vorher schon besser beschreiben können)

Re: [Tutorial] Freies Springen

Offline Soraphis

  • RTP-Mapper
  • *
  • Beiträge: 37
Re: [Tutorial] Freies Springen
« Antwort #5 am: Oktober 05, 2009, 19:24:12 »
ich will ja jetzt nicht auf dir rumhacken .... aber:

Zitat
[....]Und fügen Woratana´s Skript einfach über Main ein. Damit man nicht aus dem Bildschirm springen kann und Ähnliches.

^^
» #Es gibt 10 Arten von Menschen. Diejenigen, die das Binärsystem verstehen und diejenigen, die es nicht tun# «

Re: [Tutorial] Freies Springen

Offline PatrickStar

  • SH1>RE, aber RE>SH5
  • Database-Verunstalter
  • **
  • Beiträge: 152
Re: [Tutorial] Freies Springen
« Antwort #6 am: Oktober 06, 2009, 14:41:35 »
Ach du Kacke dieser alte Beitrag war so peinlich und bähh das ich ihn geändert hab. wär froh wenn jemand ihn löschen würde.
« Letzte Änderung: Januar 05, 2012, 23:49:14 von PatrickStar »


Treffen sich 2 stumme sagt der eine: " ".
Darauf der andere: " ".

Re: [Tutorial] Freies Springen

Offline Psychodelics

  • RTP-Mapper
  • *
  • Beiträge: 21
Re: [Tutorial] Freies Springen
« Antwort #7 am: Oktober 07, 2009, 08:04:14 »
Cooles Tutorial. Ist dir gut gelungen^^

Re: [Tutorial] Freies Springen

Offline PatrickStar

  • SH1>RE, aber RE>SH5
  • Database-Verunstalter
  • **
  • Beiträge: 152
Re: [Tutorial] Freies Springen
« Antwort #8 am: Oktober 11, 2009, 23:11:05 »
Cooles Tutorial. Ist dir gut gelungen^^

Danke,
ich freue mich wirklich über alle Antworten.

mfg

Offtopic:
Juhu 50. Beitrag^^
« Letzte Änderung: Oktober 11, 2009, 23:12:12 von PatrickStar »


Treffen sich 2 stumme sagt der eine: " ".
Darauf der andere: " ".

Re: [Tutorial] Freies Springen

Offline A-Towner

  • RTP-Mapper
  • *
  • Beiträge: 22
Re: [Tutorial] Freies Springen
« Antwort #9 am: Oktober 12, 2009, 12:09:28 »
Geht Hamma ^^ aber manchmal springt er einfach nich

Re: [Tutorial] Freies Springen

Offline PatrickStar

  • SH1>RE, aber RE>SH5
  • Database-Verunstalter
  • **
  • Beiträge: 152
Re: [Tutorial] Freies Springen
« Antwort #10 am: Oktober 12, 2009, 17:46:58 »
Geht Hamma ^^ aber manchmal springt er einfach nich
Ja wegen dem Wait.
Es wäre ja sche***e wenn man tausendmal hintereinander springen könnte.
Ich find Abstände besser als sowas.
Aber wer will kann den Wait auch wegmachen.

mfg

PatrickStar


Treffen sich 2 stumme sagt der eine: " ".
Darauf der andere: " ".

Re: [Tutorial] Freies Springen

Offline Colonios

  • Maker Nerd
  • VX-Kenner
  • ****
  • Beiträge: 596
  • Events <3
Re: [Tutorial] Freies Springen
« Antwort #11 am: Oktober 14, 2009, 11:35:51 »
Man kann das Problem auf 2 Arten minimieren:

1. Das wait einfach hinter das Springen setzten
2. Das wait kürzer machen.

Hoffe, dass das hilft.

MfG

Re: [Tutorial] Freies Springen

Offline Silvanus

  • Der längste regestrierte User hier xD
  • VX-Großmeister
  • *****
  • Beiträge: 984
  • Makerer im Ruhezustand
Re: [Tutorial] Freies Springen
« Antwort #12 am: Oktober 17, 2009, 15:09:59 »
Gutes Tutorial^^

Werd damit mal rumspielen wenn ich Zeit hab x)

Re: [Tutorial] Freies Springen

Offline Links Bruder

  • RTP-Mapper
  • *
  • Beiträge: 40
Re: [Tutorial] Freies Springen
« Antwort #13 am: März 12, 2010, 09:15:18 »
Gutes tut

Re: [Tutorial] Freies Springen

Offline _D3nn!§_

  • Hat Haare auf dem Kopf =D
  • Database-Verunstalter
  • **
  • Beiträge: 148
  • ~~(Dennisoftware)~~
    • Willste wohl gerne wissen wa? xD
Re: [Tutorial] Freies Springen
« Antwort #14 am: März 12, 2010, 16:57:00 »
Gut tut
allerdings...

...würde ich den ganzen CE in einer folgenden Skriptbedingung stecken, und zwar unter false :
$game_map.interpreter.running?Sonst würde der Character auch springen, wenn man einen event anspricht und sonst auch auf der map .
Spoiler for Hiden:
-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------

Spoiler for Hiden:
[desc=Es fehlen nur
nochmal eine kleine
Bugsäuberung und
der Feinschliff ! ^^
]The new Horizon of Evil 2[/desc]
[desc=Downloadbereit ! (Mein Profil oder VX Spiele !)]Gun For Fun[/desc]

 


 Bild des Monats

rooftop party

Views: 3214
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal