Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Ulepszone komendy ruchu + Nowe komendy
Autor Wiadomość
przemusiek25 



Pomógł: 21 razy
Dołączył: 26 Sty 2012
Posty: 84
Wysłany: Wto 20 Lis, 2012 16:40
Ulepszone komendy ruchu + Nowe komendy
~ Ulepszone Komendy ruchu + Nowe ~


Krótki opis:
Poprawia komendy ruchu i dodaje nowe.
Skrypt przetłumaczony dla moich potrzeb, ale co przeszkadza aby inni też go zassali :)
Ulepsza:
- Skok
- Losowy krok
- Chodzenie na zdarzeniach

Dodaje
- idź do pozycji/zdarzenia
- uciekaj od pozycji/zdarzenia
- patrz w kierunku pozycji/zdarzenia
- odwróc się od pozycji/zdarzenia

Autor:
Woratana

Tłumaczenie:
Przemusiek25

Skrypt:
Spoiler:

Kod:
#===============================================================
# ● [VX] ◦ Ulepszone Komendy ruchu + Nowe ◦ □
# * Poprawia polecenia ruchu i dodaje nowe~
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Tłumaczył : Przemusiek25 [użytkownik ultimateam.pl]
# ◦ Thaiware RPG Maker Community
# ◦ Ostatnia Aktualizacja: 20/03/2008
# ◦ Wersja: 1.0
#--------------------------------------------------------------
=begin
========================================================
                ● UDOSKONALONE KOMENDY RUCHU ●
========================================================

>> UDOSKONALONY SKOK:
Nie skacze jeśli cel jest POZA EKRANEM (lub) NA TERENIE ZABLOKOWANYM DLA CHODZENIA.
(Stary skok nie sprawdzał i można było skoczyć wszędzie)

>> UDOSKONALONY LOSOWY KROK
Znajduje możliwy losowy kierunek zanim zrobi krok.
(Stary losowy krok gdy zdarzenia nie mogło poruszyć się w określonym kierunku - ruch pomijał.)

>> UDOSKONALONE CHODZENIE NA_ZDARZENIACH SPRAWDZANIE
'Identycznie, jak Gracz' Zdarzenia chodzą po zdarzeniach 'ułożonych poniżej'.

● Notka: Jeśli nie chcesz używać jakiegoś z ulepszeń poprostu usuń linie skryptu
 odpowiedzialne za te ulepszenia:
  UDOSKONALONY SKOK (linia 65 (def jump) - do linii 82 (końcowe end)
  UDOSKONALONY LOSOWY KROK (linia 88 (def move_random) - do linii 113 (końcowe end)
  UDOSKONALONE CHODZENIE NA_ZDARZENIACH SPRAWDZANIE (linia 188 (def collide_with_characters?) - do linii 130 (końcowe end)
#=====================================

========================================================
                ● SPECJALNE (NOWE) KOMENDY RUCHU ●
========================================================
# >> JAK UŻYWAĆ
#-------------------------------------------
● Ustaw Ruch na Ścieżke i wybierz Okreś ruch zdarzenia
 (lub wybierz komende ruszaj zdarzeniem), następnie wśród komend ruchu
 wybierz Skrypt... i poprostu wpisz jedną z poniższych komend...
#-----------------------------------------------

idz_do_pozycji(x,y)
uciekaj_od_pozycji(x,y)

idz_do_zdarzenia(id)
uciekaj_od_zdarzenia(id)

patrz_na_pozycje(x,y)
odwroc_od_pozycji(x,y)

patrz_na_zdarzenie(id)
odwroc_od_zdarzenia(id)
#============================================================

=end
class Game_Character
  ##################################################################
  # ULEPSZONE KOMENDY RUCHU
  ##################################################################
  #-------------------------------------------------------------
  # ULEPSZONY SKOK
  #-------------------------------------------------------------
  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
 
  #-------------------------------------------------------------
  # ULEPSZONY LOSOWY RUCH
  #-------------------------------------------------------------
  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
 
  #----------------------------------------------------------------------
  # ULEPSZONE CHODZENIE_NA_ZDARZENIACH
  #----------------------------------------------------------------------
  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
 
  ##################################################################
  # SPECJALNE [NOWE] KOMENDY RUCHU
  ##################################################################
  #--------------------------------------------------------------------------
  # * IDŹ DO OKREŚLONEJ POZYCJI
  #--------------------------------------------------------------------------
  def idz_do_pozycji(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
  #--------------------------------------------------------------------------
  # * UCIEKAJ OD OKREŚLONEJ POZYCJI
  #--------------------------------------------------------------------------
  def uciekaj_od_pozycji(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
  #--------------------------------------------------------------------------
  # * IDŹ DO OKREŚLONEGO ZDARZENIA
  #--------------------------------------------------------------------------
  def idz_do_zdarzenia(id)
    idz_do_pozycji($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * UCIEKAJ OD OKREŚLONEGO ZDARZENIA
  #--------------------------------------------------------------------------
  def uciekaj_od_zdarzenia(id)
    uciekaj_od_pozycji($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * PATRZ W KIERUNKU OKREŚLONEJ POZYCJI
  #--------------------------------------------------------------------------
  def patrz_na_pozycje(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
  #--------------------------------------------------------------------------
  # * ODWRÓC SIĘ OD OKREŚLONEJ POZYCJI
  #--------------------------------------------------------------------------
  def odwroc_od_pozycji(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
  #--------------------------------------------------------------------------
  # * PATRZ W KIERUNKU OKREŚLONEGO ZDARZENIA
  #--------------------------------------------------------------------------
  def patrz_na_zdarzenie(id)
    patrz_na_pozycje($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * ODRÓC SIĘ OD OKREŚLONEGO ZDARZENIA
  #--------------------------------------------------------------------------
  def odwroc_od_zdarzenia(id)
    odwroc_od_pozycji($game_map.events[id].x,$game_map.events[id].y)
  end
  #--------------------------------------------------------------------------
  # * Oblicza dystans zdarzenia od określonej pozycji x
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # * Oblicza dystans zdarzenia od określonej pozycji y
  #--------------------------------------------------------------------------
  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


Dodatkowe informacje:
Screenshoty oraz demo nie potrzebne, wszystko powinno być zrozumiałe dla zwykłego laika.
Skrypt wyciągłem z paczki skryptów Woratana
 
 
makerowiec64 




Preferowany:
RPG Maker 95

Pomógł: 2 razy
Dołączył: 02 Wrz 2012
Posty: 181
Skąd: się tu wziąłem?
Wysłany: Nie 23 Gru, 2012 13:29
Ciekawy skrypt nawet,ale taki chyba trochę nieprzydatny.
Daję 7/10 za całokształt.

A tak poza tym to lepiej żeby były screeny bo się złamie regulamin :-)
________________________
99 % świrów czyta mój podpis z ręką na myszce.
Nie odchylaj ręki - jest już za późno :haha:

Wiem,to mogłem zrobić w większym rozmiarze.Przypatrz się bardziej!
 
 
 
Avara 





Pomogła: 32 razy
Dołączyła: 15 Gru 2010
Posty: 331
Skąd: Łódź
Wysłany: Nie 23 Gru, 2012 13:32
makerowiec64, do niektórych skryptów nie ma możliwości lub nie ma sensu robić screenów :kable:
________________________


Drakensang - przeglądarkowa gra RPG online
Spoiler:

 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene