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...
#-----------------------------------------------
#-------------------------------------------------------------
# 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
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