Ayene - Sro 16 Wrz, 2009 09:57 Temat postu: Tło walki
~ Tło walki ~
Krótki opis
Skrypt pozwala na zmianę tła walki oraz przyporządkowanie poszczególnych obrazków tła do konkretnej mapy. Ponadto zawiera opcję wyłączenia podłoża walki (BattleFloor).
Autor skryptu
Claimh
Poprawki
Ayene [yurika@o2.pl]
Kompatybilność
Tylko VX.
Skrypt
Spoiler:
Kod:
# ==============================================================================
# ~ Tło walki ~
# Data publikacji: 16.09.2009
# Autor: Claimh
# Tłumaczenie i poprawki: Ayene [yurika@o2.pl]
# Zapraszam na stronę UltimaForum - http://www.ultimateam.pl
# ==============================================================================
# Instalacja: Umieść ten skrypt nad Main w Edytorze Skryptu.
# ==============================================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# --------------------------- POCZĄTEK SKRYPTU ---------------------------------
module BattleBack
# ---------------------------- POCZĄTEK EDYCJI ---------------------------------
# Poniżej możesz ustawić rodzaj tła walki:
# 0 -> falujące tło (domyślne w VX)
# 1 -> tłem jest mapa, na której walka ma miejsce
# 2 -> tłem walki jest obrazek (patrz niżej M_B_BACK)
BB_TYPE = 2
# Wyświetlanie podłoża (obrazka o nazwie 'BattleFloor' w folderze 'System')
# true -> wyświetla
# false -> nie wyświetla
BT_FLOOR = false
# Tło walki w postaci obrazka (BB_TYPE = 2)
M_B_BACK = {
# ID mapy => nazwa obrazka z folderu 'Graphics/System'
0 => "mapa_0", # 0 => domyślnie dla map, którym nie ustawiono innego tła.
1 => "mapa_1",
3 => "mapa_3"
}
# (optymalna wielkość grafiki to 544 x 416 px; format -> PNG i JPG)
# ----------------------------- KONIEC EDYCJI ----------------------------------
end
# -----------NIE EDYTUJ PONIŻEJ, CHYBA ŻE WIESZ CO ROBISZ ^^--------------------
#==============================================================================
# ¦ Klasa Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# Tło walki
#--------------------------------------------------------------------------
def create_battleback
case BattleBack::BB_TYPE
when 0
source = $game_temp.background_bitmap
bitmap = Bitmap.new(640, 480)
bitmap.stretch_blt(bitmap.rect, source, source.rect)
bitmap.radial_blur(90, 12)
@battleback_sprite = Sprite.new(@viewport1)
@battleback_sprite.bitmap = bitmap
@battleback_sprite.ox = 320
@battleback_sprite.oy = 240
@battleback_sprite.x = 272
@battleback_sprite.y = 176
@battleback_sprite.wave_amp = 8
@battleback_sprite.wave_length = 240
@battleback_sprite.wave_speed = 120
when 1
source = $game_temp.background_bitmap
bitmap = Bitmap.new(640, 480)
bitmap.stretch_blt(bitmap.rect, source, source.rect)
@battleback_sprite = Sprite.new(@viewport1)
@battleback_sprite.bitmap = bitmap
@battleback_sprite.ox = 320
@battleback_sprite.oy = 240
@battleback_sprite.x = 272
@battleback_sprite.y = 176
when 2
@battleback_sprite = BattleBackSprite.new(@viewport1)
end
end
#--------------------------------------------------------------------------
# Wgranie podłoża walki -> 'BattleFloor'
#--------------------------------------------------------------------------
alias create_battlefloor_mbb create_battlefloor
def create_battlefloor
create_battlefloor_mbb if BattleBack::BT_FLOOR
end
#--------------------------------------------------------------------------
# Koniec walki -> Zamknięcie 'BattleFloor'
#--------------------------------------------------------------------------
alias dispose_battlefloor_mbb dispose_battlefloor
def dispose_battlefloor
dispose_battlefloor_mbb if BattleBack::BT_FLOOR
end
#--------------------------------------------------------------------------
# Aktualizacja podłoża walki -> Odświeżenie 'BattleFloor'
#--------------------------------------------------------------------------
alias update_battlefloor_mbb update_battlefloor
def update_battlefloor
update_battlefloor_mbb if BattleBack::BT_FLOOR
end
end
#==============================================================================
# ¦ Klasa BattleBackSprite
#==============================================================================
class BattleBackSprite < Sprite
# Wielkość okna z tłem
WIDTH = 544.00
HEIGHT = 288.00
#--------------------------------------------------------------------------
# Rozpoczęcie
#--------------------------------------------------------------------------
def initialize(viewport = nil)
super(viewport)
if $BTEST
self.bitmap = Cache.system(BattleBack::M_B_BACK[0])
elsif BattleBack::M_B_BACK[$game_map.map_id].nil?
self.bitmap = Cache.system(BattleBack::M_B_BACK[0])
else
self.bitmap = Cache.system(BattleBack::M_B_BACK[$game_map.map_id])
end
# Dopasowanie tła w szerokości i wysokości
@x_zoom = WIDTH / self.bitmap.width
@y_zoom = HEIGHT / self.bitmap.height
@zoom = @x_zoom > @y_zoom ? @x_zoom : @y_zoom
# Zoom -> przybliżenie
self.zoom_x = @zoom
self.zoom_y = @zoom
# Pozycja tła -> wycentrowanie tła
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height / 2
self.x = (self.bitmap.width / 2) * @zoom
self.y = (self.bitmap.height / 2) * @zoom
end
end
# --------------------------- KONIEC SKRYPTU -----------------------------------
Demo
niepotrzebne
Screenshot
Spoiler:
Domyślne tło walki
Tłem jest mapa, na której walka ma miejsce
Tłem walki jest ustawiony w skrypcie obrazek
Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.
Piszcie w razie problemów.Hemp Gru - Wto 12 Sty, 2010 23:07 Ej skąd wziąc te tła????????bionicl - Wto 12 Sty, 2010 23:52 Najlepiej z XP-ka... Jeżeli nie masz, to ściągnij RTP...Hemp Gru - Sro 13 Sty, 2010 09:09 Kurcze no jak wklejam do vx to przy walce wyświetla mi się tylko połowa tła Ayene - Sro 13 Sty, 2010 16:01 Jasiekrpg, wystarczy przeczytać instrukcję zawartą w skrypcie:
Kod:
(optymalna wielkość grafiki to 544 x 416 px; format -> PNG i JPG)
dawidos989 - Czw 04 Lut, 2010 17:17 a jak to dodać? to tłobionicl - Czw 04 Lut, 2010 17:21
Cytat:
Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.
Domyśl się...dawidos989 - Czw 04 Lut, 2010 17:22 tak tylko że nie kumam nic z niego nie kumamAyene - Czw 04 Lut, 2010 18:20 Przeczytaj dokładnie część konfiguracji skryptu, a dokładnie tę część:
Kod:
# Tło walki w postaci obrazka (BB_TYPE = 2)
M_B_BACK = {
# ID mapy => nazwa obrazka z folderu 'Graphics/System'
0 => "mapa_0", # 0 => domyślnie dla map, którym nie ustawiono innego tła.
1 => "mapa_1",
3 => "mapa_3"
}
Valdali - Pon 19 Kwi, 2010 20:25 nie kumam tego :D. moze jestem ciemny. wytłumaczyłby mi ktoś jak to sie robi xd?Drawestien - Pon 10 Sty, 2011 20:40 Bleah...szukałem tego a ty dopiero to na 5 stronie pozostawiasz bez opieki?
Nie będźie lizaka! Czeliosss - Pią 04 Lut, 2011 19:59 A ja mam prośbę. Czy dałoby radę zrobić, żeby ustawić odcień tła walki taki co jest np. ustawiony? Używam skryptu dnia i nocy.Shlizer - Sob 05 Lut, 2011 01:43 Wszystko się da.. nawet na wiele sposobów. Odcień tła zmieniasz konwertując grafikę z RGB na HSB/HSL i zmieniając pierwszą wartość - hue.. brzmi groźnie, ale całe szczęście w RMXP (więc i zapewne VX) jest funkcja bitmap.hue_change(stopnie), gdzie stopnie to liczba z przedziału 0-360 (http://en.wikipedia.org/wiki/Hue).
Możesz też najzwyczajniej tylko przyciemnić obraz w zależności od pory dnia (nie znam tego skryptu, ale masz pewnie zmienną odpowiedzialną za sprawdzenie godziny/pory dnia). Wtedy rysujesz bitmapę wielkości pola bitwy, wypełniasz ją czarnym kolorem ( 'fill_rect(x, y, width, height, color)' lub 'fill_rect(rect, color)' ), a następnie zmieniasz opacity bitmapy (a w zasadzie sprite'a)..
sorry jeśli coś zamotałem albo źle zrozumiałem =pjmielczarek7 - Nie 06 Lut, 2011 20:54 ja nie rozumiem jak mam ustawić to tło proszę o pomocCzeliosss - Nie 06 Lut, 2011 21:28 Shlizer, nie kapuję tego. Może Ayene dałaby radę to przerobić? Ja się na tym ruby nie znam.
jmielczarek7,
Cytat:
# Tło walki w postaci obrazka (BB_TYPE = 2)
M_B_BACK = {
# ID mapy => nazwa obrazka z folderu 'Graphics/System'
0 => "mapa_0", # 0 => domyślnie dla map, którym nie ustawiono innego tła.
1 => "mapa_1",
3 => "mapa_3"
}
Shlizer - Nie 06 Lut, 2011 22:26 Nie wiem jak wygląda skrypt dnia i nocy, do tego nie posiadam VX, ale spróbuj pobawić się wartościami tonu:
Kod:
def create_battleback
(...)
@battleback_sprite.tone = Tone.new(-50,-50,-100)
end
ew. drugi sposób (gorszy):
Kod:
def create_battleback
(...)
dim = Bitmap.new
dim.fill_rect(@battleback_sprite.src_rect, Color.new(0,0,0))
# tu zmieniasz przezroczystość czarnej warstwy
dim.opacity = 150
end
W drugim wypadku wypada zwolnić jeszcze zasób, ale tym się nie przejmuj do czasu optymalizacji kodu =p
Mam nadzieję, że będzie działać, bo pisałem z głowy i dokumentacji..Czeliosss - Pon 07 Lut, 2011 08:38 No może bym dał radę to wklepać, ale gorzej jest jak walczę np. w dzień, a mam odcień nocy.
Tutaj jest ten skrypt dnia i nocy.
http://www.ultimateam.pl/viewtopic.php?t=2128Eleanor - Czw 05 Maj, 2011 13:35 Witam
Mam problem jak włączam gre to mi się pokazuje
Kod:
??? 'Tło walki' ? 32 ??? SyntaxError ???
w linijce 32 mam
Kod:
5 => "mapa_6"
i chcę mieć to do mapy "Dróżka". (MAP002 to MAP001)
nie wiem, o co chodzi, proszę o pomoc.Ayene - Czw 05 Maj, 2011 18:18 Pewnie brakuje przecinka na końcu wcześniejszej linijki. Patrzę jednak, że nie powinnam w ogóle udzielać odpowiedzi, bo masz "polskiego" makera, a jak wiadomo jest wersją piracką filiotef - Czw 11 Sie, 2011 19:46 Da się zrobić tak aby dane pole walki było w danym obszarze ?jacorex1 - Pią 01 Cze, 2012 16:28 Super Skrypt ! Opanowałem w 100 % dzięki