Rower a system pływania - Shadi - 12-09-19 11:14
Witajcie.
Korzystam z skryptu na pływanie w tłumaczeniu Ayene i pojawił się pewien problem. Otóż jeden z testujących moją grę zauważył, że jest on niekompatybilny z systemem roweru zrobionego na zdarzeniach. Chodzi o to, że postać zamiast wchodzić do wody w grafice do tego przewidzianej, jeździ sobie na wodzie rowerem. Próbowałem to naprawić poprzez zrobienie dwóch grafik z dodatkiem "-SWIM" jednej kiedy postać w momencie wchodzenia do wody jest już na rowerze (PostaćBike-SWIM) i drugą zwykłą, kiedy tylko chodzi (Postać-SWIM). Przyniosło to połowiczny rezultat, gdyż owszem, postać na rowerze weszła do wody i uzyskała grafikę pływającą. Niestety przy wyjściu z wody miała prędkość przewidzianą dla roweru, a grafikę pieszego. Niestety wyjście z wody w tym skrypcie, a nie zrobione na zdarzeniach, toteż nie wiem, co jest nie tak.
Oto skrypt:
Kod:
#--------------------------------------------------------------------------
# System Pływania
# Autorzy: Amaranth & MCgamer
# Tłumaczenie i poprawki: Ayene
#--------------------------------------------------------------------------
# Instalacja: Umieść skrypt nad Main
#--------------------------------------------------------------------------
# Grafikę postaci pływającej umieść w folderze Graphics/Characters.
# Nazwa pliku to nazwa grafiki domyślnej postaci + '-SWIM'.
# Przykładowo:
# Gdy postać ma przyporządkowaną grafikę o nazwie Aurora,
# to nazwa pliku z animacją pływania powinna być Aurora-SWIM
#--------------------------------------------------------------------------
# true / false
BLOKADA_MENU = true # <- wyłącza możliwość wejścia do menu podczas pływania
BLOKADA_ZAPISU = true # <- wyłącza możliwość zapisu gry podczas pływania
#--------------------------------------------------------------------------
# Game_Map
#--------------------------------------------------------------------------
class Game_Map
def terrain_tag(x, y)
if @map_id != 0
for i in [2, 1, 0]
tile_id = data[x, y, i]
if tile_id == nil
return 0
elsif tile_id > 0
return @terrain_tags[tile_id]
end
end
end
return 0
end
end
#--------------------------------------------------------------------------
# Grafika pływaka
#--------------------------------------------------------------------------
$swimmers = []
graphics = []
graphics = Dir.entries("Graphics/Characters")
for file in graphics
if file.include?('-SWIM')
file.gsub!(/-SWIM.*/){||''}
$swimmers << file
end
end
class Game_Temp
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :in_water
end
#--------------------------------------------------------------------------
# Game_Character
#--------------------------------------------------------------------------
class Game_Character
def moving?
check_terrain_type()
return (@real_x != @x * 128 or @real_y != @y * 128)
end
def check_terrain_type()
@terrain = $game_map.terrain_tag(@x, @y)
name = @character_name
swim = name.match("-SWIM")
enter_water(swim) if @terrain == 3
exit_water(swim) if @terrain != 3
end
def enter_water(swim)
$game_temp.in_water = true
if swim == nil and $swimmers.include?(@character_name)
@character_name += "-SWIM"
$game_system.menu_disabled = BLOKADA_MENU
$game_system.save_disabled = BLOKADA_ZAPISU
Audio.se_play("Audio/SE/127-Water02", 50, 100)
@step_anime = true
$game_map.refresh
return true
end
end
def exit_water(swim)
@step_anime = false
$game_system.menu_disabled = false
$game_system.save_disabled = false
$game_temp.in_water = false
if swim != nil
@character_name = @character_name.chomp("-SWIM")
$game_map.refresh
end
end
end
Z góry dziękuję, jakby ktoś był w stanie mi tutaj pomóc, bo to trochę głupie wychodzić z wody, być pieszym, a mieć prędkość roweru. Przy czym preferowałbym nie blokować, nawet jak się da, wchodzenia do wody, kiedy jest się na rowerze.
Miłego dnia.
|