UltimaForum

Skrypty [VX] - Mgła VX by Avara

Avara - Sro 19 Paź, 2011 20:26
Temat postu: Mgła VX by Avara

PaayJer - Pią 21 Paź, 2011 15:19

Nie no perfect :) Na coś takiego czekałem!
PaayJer - Nie 23 Paź, 2011 13:31

Witam, mam jedno pytanko:
Gdy klikam Esc i ponownie Esc to mgła się restartuje... :(

Vrona - Nie 23 Paź, 2011 16:08

Krążą plotki,ze istnieje na tym forum opcja edytuj post.

Skrypt bardzo fajny,zawsze biedziłem się nad mgłą.Kapitalka.

PS Wydaję mi się,że wszyscy na Ultimie umieją skryptować,tylko ja nie :-?

Salan - Nie 23 Paź, 2011 16:55

Dosyć Fajny skrypt :D[b][/b]
Finwe - Nie 23 Paź, 2011 17:19

Przyda się, naprawdę dobry skrypcik. Dotychczas minusem w walce VX z XP był brak mgły. Teraz oba mają mgłę.
Avara - Nie 23 Paź, 2011 18:48

PaayJer napisał/a:
Witam, mam jedno pytanko:
Gdy klikam Esc i ponownie Esc to mgła się restartuje... :(

Nie sądziłam, że będzie to komuś przeszkadzać. Poniżej umieszczam nową wersję skryptu.


Mgła VX by Avara

Wersja

1.1

Zmiany
Podczas wyjścia z menu lub innej sceny mgła się nie "restartuje".

Skrypt
Spoiler:

Kod:
=begin
********************************************************************
*                          Mgła VX by Avara                       *
*                            Autor:  Avara                         *
*                              Wersja 1.1                           *
**********************************************************************
Skrypt ten pozwala na dopasowanie mgły/chmór do konkretnej mapy.
Należy go umieścić nad Main w edytorze skryptu.

Pliki mgły umieszczamy w folderze "System" naszej gry. Pliki muszą mieć nazwę
"Mgła" + numer mgły + ".png", np. "Mgła1.png", "Mgła24.png" itd.
=end
class Mgla_Konfiguracja # <-- nie usuwać!
 
  def initialize # <-- nie usuwać!
   
=begin
                                KONFIGURACJA
Najpierw wpisujemy numer mapy, do której chcemy dodać mgłę.
    m =
Następnie wpisujemy numer mgły (taki jak w nazwie pliku), np. 1.
    $numer_mgly[m] =
Powyższe dwie zmienne są niezbędne do pojawienia się mgły na konkretnej mapie.
Poniższe można pominąć. W takim wypadku zostaną ustawione wartości domyślne.

Przezroczystość (od 0 - niewidoczna - do 255 - całkowicie zakrywająca) mgły.
Domyślnie 255.
    $przezroczystosc[m] =
Ruch mgły w lewo ustaloną ilość kratkę na sekundę. Gdy chcemy, by mgła poruszała
się w prawo, przed liczbą należy umieścić myślnik i spację.
Domyślnie 0 (brak ruchu).
    $w_lewo[m] =
Tak samo jak wyżej, lecz w górę.
    $w_gore[m] =
Jeśli ustawimy dwie ostatnie zmienne powyżej zera, mgła będzie się poruszać
po skosie.

Gdy chcemy ustawić mgłę do kolejnej mapy wystarczy pod wszystkimi ustawieniami
poprzedniej mapy umieścić nowe ustawienia zaczynając od "m = " (numer mapy).
=end
    m = 1
    $numer_mgly[m] = 1
    $przezroczystosc[m] = 200
    $w_lewo[m] = - 1
    $w_gore[m] = 1
   
    m = 2
    $numer_mgly[m] = 2
    $przezroczystosc[m] = 100
    $w_gore[m] = - 2
=begin
                            KONIEC KONFIGURACJI
Życzę miłego korzystania ze skryptu.
Cokolwiek dalej zmienicie, robicie to na własną odpowiedzialność!
Nie zapomnij wspomnieć o autorze skryptu w swoim projekcie!
=end
  end
end


class Scene_Map < Scene_Base
 
  alias avara_mgla_start start
  def start
    avara_mgla_start
    @mg_konf = Mgla_Konfiguracja.new
    @mapa = $game_map.map_id
    $m = @mapa
    if $numer_mgly[@mapa] != nil
      @obrazek = Plane.new
      @obrazek.bitmap = Cache.system("Mgła" + $numer_mgly[@mapa].to_s + ".png")   
      @obrazek.z = 1
      if $przezroczystosc[@mapa] != nil
        @obrazek.opacity = $przezroczystosc[@mapa]
      end
      if $m == @mapa
        @obrazek.ox = $obrazek_x
        @obrazek.oy = $obrazek_y
      else
        $obrazek_x = 0
        $obrazek_y = 0
      end
      $a = 1
    end
  end
 
  alias avara_mgla_terminate terminate
  def terminate
    avara_mgla_terminate
    if $numer_mgly[@mapa] != nil
      @obrazek.dispose
    end
  end
 
  alias avara_mgla_update update
  def update
    avara_mgla_update
    @mapa = $game_map.map_id
    if $m != @mapa
      if $numer_mgly[$m] != nil
        @obrazek.visible = false
      end
      $a = 0
      $m = @mapa
    end
    if $numer_mgly[@mapa] != nil
      if $a == 0
        @obrazek = Plane.new
        @obrazek.bitmap = Cache.system("Mgła" + $numer_mgly[@mapa].to_s + ".png")   
        @obrazek.z = 1
        $a = 1
        if $przezroczystosc[@mapa] != nil
          @obrazek.opacity = $przezroczystosc[@mapa]
        else
          @obrazek.opacity = 255
        end
      end
      if $w_lewo[@mapa] != nil
        @obrazek.ox += $w_lewo[@mapa]
      end
      if $w_gore[@mapa] != nil
        @obrazek.oy += $w_gore[@mapa]
      end
      $obrazek_x = @obrazek.ox
      $obrazek_y = @obrazek.oy
    else
      if $a == 1
        @obrazek.visible = false
        $a = 0
      end
    end
  end
end


class Scene_Title < Scene_Base
 
  alias avara_mgla_cr_ga_ob create_game_objects
  def create_game_objects
    avara_mgla_cr_ga_ob
    $numer_mgly = []
    $przezroczystosc = []
    $w_lewo = []
    $w_gore = []
    $obrazek_x = 0
    $obrazek_y = 0
    $a = 0
    $m = 3
  end
end


class Scene_File < Scene_Base
 
  alias avara_mgla_wr_sa_da write_save_data
  def write_save_data(file)
    avara_mgla_wr_sa_da(file)
    Marshal.dump($obrazek_x, file)
    Marshal.dump($obrazek_y, file)
    Marshal.dump($a, file)
    Marshal.dump($m, file)
  end
 
  alias avara_mgla_re_sa_da read_save_data
  def read_save_data(file)
    avara_mgla_re_sa_da(file)
    $w_lewo = Marshal.load(file)
    $w_gore = Marshal.load(file)
    $a = Marshal.load(file)
    $m = Marshal.load(file)
  end
end


Uwagi
Wady wymienionej w pierwszym poście, nie udało się usunąć. Jeśli ktoś ściągnął sobie demo, proszę o indywidualną podmianę skryptu.

PaayJer - Nie 23 Paź, 2011 18:57

Eee... No raczej, że to przeszkadza... Ale dzięki za czas :)
Narfann - Pon 24 Paź, 2011 17:34

A nie dałoby się jeszcze zwolnić tej mgły i chmurek ??
Z góry dzięki...

Avara - Wto 25 Paź, 2011 01:45

Narfann napisał/a:
A nie dałoby się jeszcze zwolnić tej mgły i chmurek ??
Z góry dzięki...

Nie można ustawić, by mgła poruszała się o mniejszą odległość, ale da się ustawić, by robiła to rzadziej, a przez to będzie poruszała się wolniej. Wszystko potrzebne umieszczam poniżej:

Mgła VX by Avara


Wersja

1.2

Zmiany
Można ustawić mniejszą prędkość mgły w danym kierunku.
Kilka poprawek w kodzie.
Poprawiona i uzupełniona instrukcja.

Skrypt
Spoiler:

Kod:
=begin
********************************************************************
*                          Mgła VX by Avara                       *
*                            Autor:  Avara                         *
*                              Wersja 1.2                           *
**********************************************************************
Skrypt ten pozwala na dopasowanie mgły/chmór do konkretnej mapy.
Należy go umieścić nad Main w edytorze skryptu.

Pliki mgły umieszczamy w folderze "System" naszej gry. Pliki muszą mieć nazwę
"Mgła" + numer mgły + ".png", np. "Mgła1.png", "Mgła24.png" itd.
=end
class Mgla_Konfiguracja # <-- nie usuwać!
 
  def initialize # <-- nie usuwać!
   
=begin
                                KONFIGURACJA
Najpierw wpisujemy numer mapy, do której chcemy dodać mgłę.
    m =
Następnie wpisujemy numer mgły (taki jak w nazwie pliku), np. 1.
    $av_mgla_numer_mgly[m] =
Powyższe dwie zmienne są niezbędne do pojawienia się mgły na konkretnej mapie.
Poniższe można pominąć. W takim wypadku zostaną ustawione wartości domyślne.

Przezroczystość (od 0 - niewidoczna - do 255 - całkowicie zakrywająca) mgły.
Domyślnie 255.
    $av_mgla_przezroczystosc[m] =
Ruch mgły w lewo ustaloną ilość kratek na prawie pół sekundy. Gdy chcemy, by mgła
poruszała się w prawo, przed liczbą należy umieścić myślnik i spację. Można
wpisywać tylko liczby całkowite.
Domyślnie 0 (brak ruchu).
    $av_mgla_w_lewo[m] =
Tak samo jak wyżej, lecz w górę.
    $av_mgla_w_gore[m] =
Jeśli ustawimy dwie ostatnie zmienne różne od zera, mgła będzie się poruszać
po skosie.
Nie można ustawić, by mgła poruszała się o mniejszą odległość, ale da się ustawić,
by robiła to rzadziej, a przez to będzie poruszała się wolniej. Do tego
potrzebujemy kolejnych zmiennych dla ruchu w pionie i poziomie. Lewo/prawo:
    $av_mgla_zwolnienie_l[m] =
Tu wpisujemy cyfrę, przez którą chcemy podzielić prędkość ruchu mgły. Radzę nie
ustawiać tej wartości powyżej 3. W przeciwnym razie mgła/chmury będą nam się
"zacinać".
Domyślnie 1 (nie zmienia podanej prędkości).
I dla ruchu w górę/dół:
    $av_mgla_zwolnienie_g[m] =


Gdy chcemy ustawić mgłę do kolejnej mapy wystarczy pod wszystkimi ustawieniami
poprzedniej mapy umieścić nowe ustawienia zaczynając od "m = " (numer mapy).
=end
    m = 1
    $av_mgla_numer_mgly[m] = 1
    $av_mgla_przezroczystosc[m] = 200
    $av_mgla_w_lewo[m] = - 1
    $av_mgla_w_gore[m] = 1
    $av_mgla_zwolnienie_l[m] = 3
   
    m = 2
    $av_mgla_numer_mgly[m] = 2
    $av_mgla_przezroczystosc[m] = 100
    $av_mgla_w_gore[m] = - 2
=begin
                            KONIEC KONFIGURACJI
Życzę miłego korzystania ze skryptu.
Cokolwiek dalej zmienicie, robicie to na własną odpowiedzialność!
Nie zapomnij wspomnieć o autorze skryptu w swoim projekcie!
=end
  end
end


class Scene_Map < Scene_Base
 
  alias avara_mgla_start start
  def start
    avara_mgla_start
    @l = 0
    @g = 0
    @mg_konf = Mgla_Konfiguracja.new
    @mapa = $game_map.map_id
    $av_mgla_m = @mapa
    if $av_mgla_numer_mgly[@mapa] != nil
      @obrazek = Plane.new
      @obrazek.bitmap = Cache.system("Mgła" + $av_mgla_numer_mgly[@mapa].to_s + ".png")   
      @obrazek.z = 1
      if $av_mgla_przezroczystosc[@mapa] != nil
        @obrazek.opacity = $av_mgla_przezroczystosc[@mapa]
      end
      if $av_mgla_m == @mapa
        @obrazek.ox = $av_mgla_obrazek_x
        @obrazek.oy = $av_mgla_obrazek_y
      else
        $av_mgla_obrazek_x = 0
        $av_mgla_obrazek_y = 0
      end
      $av_mgla_a = 1
    end
  end
 
  alias avara_mgla_terminate terminate
  def terminate
    avara_mgla_terminate
    if $av_mgla_numer_mgly[@mapa] != nil
      @obrazek.dispose
    end
  end
 
  alias avara_mgla_update update
  def update
    avara_mgla_update
    @mapa = $game_map.map_id
    if $av_mgla_m != @mapa
      if $av_mgla_numer_mgly[$av_mgla_m] != nil
        @obrazek.visible = false
      end
      $av_mgla_a = 0
      $av_mgla_m = @mapa
      @l = 0
      @g = 0
    end
    if $av_mgla_numer_mgly[@mapa] != nil
      @l += 1
      @g += 1
      if $av_mgla_zwolnienie_l[@mapa] == nil
        $av_mgla_zwolnienie_l[@mapa] = 1
      end
      if $av_mgla_zwolnienie_g[@mapa] == nil
        $av_mgla_zwolnienie_g[@mapa] = 1
      end
      if $av_mgla_a == 0
        @obrazek = Plane.new
        @obrazek.bitmap = Cache.system("Mgła" + $av_mgla_numer_mgly[@mapa].to_s + ".png")   
        @obrazek.z = 1
        $av_mgla_a = 1
        if $av_mgla_przezroczystosc[@mapa] != nil
          @obrazek.opacity = $av_mgla_przezroczystosc[@mapa]
        else
          @obrazek.opacity = 255
        end
      end
      if $av_mgla_w_lewo[@mapa] != nil and @l == $av_mgla_zwolnienie_l[@mapa]
        @obrazek.ox += $av_mgla_w_lewo[@mapa]
        @l = 0
      end
      if $av_mgla_w_gore[@mapa] != nil and @g == $av_mgla_zwolnienie_g[@mapa]
        @obrazek.oy += $av_mgla_w_gore[@mapa]
        @g = 0
      end
      $av_mgla_obrazek_x = @obrazek.ox
      $av_mgla_obrazek_y = @obrazek.oy
    else
      if $av_mgla_a == 1
        @obrazek.visible = false
        $a = 0
      end
    end
  end
end


class Scene_Title < Scene_Base
 
  alias avara_mgla_cr_ga_ob create_game_objects
  def create_game_objects
    avara_mgla_cr_ga_ob
    $av_mgla_numer_mgly = []
    $av_mgla_przezroczystosc = []
    $av_mgla_w_lewo = []
    $av_mgla_w_gore = []
    $av_mgla_obrazek_x = 0
    $av_mgla_obrazek_y = 0
    $av_mgla_a = 0
    $av_mgla_m = 3
    $av_mgla_zwolnienie_l = []
    $av_mgla_zwolnienie_g = []
  end
end


class Scene_File < Scene_Base
 
  alias avara_mgla_wr_sa_da write_save_data
  def write_save_data(file)
    avara_mgla_wr_sa_da(file)
    Marshal.dump($av_mgla_obrazek_x, file)
    Marshal.dump($av_mgla_obrazek_y, file)
    Marshal.dump($av_mgla_a, file)
    Marshal.dump($av_mgla_m, file)
    Marshal.dump($av_mgla_zwolnienie_l, file)
    Marshal.dump($av_mgla_zwolnienie_g, file)
  end
 
  alias avara_mgla_re_sa_da read_save_data
  def read_save_data(file)
    avara_mgla_re_sa_da(file)
    $av_mgla_obrazek_x = Marshal.load(file)
    $av_mgla_obrazek_y = Marshal.load(file)
    $av_mgla_a = Marshal.load(file)
    $av_mgla_m = Marshal.load(file)
    $av_mgla_zwolnienie_l = Marshal.load(file)
    $av_mgla_zwolnienie_g = Marshal.load(file)
  end
end


Demo
Mediafire
Badongo


Prośba do moderatora
Proszę o dodanie/podmianę w pierwszym poście części: Wersja (przed autorem proszę), Skrypt i Demo (tylko linki). Przepraszam za kłopot.

Narfann - Wto 25 Paź, 2011 15:57

Sory, że cię tak męczę, ale widzę, że pisanie skryptów dobrze ci idzie ( a mgła jest z kolei bardzo fajnym dodatkiem) więc chce aby wszystko było doskonałe...
Jest jeden mały błąd ( może to wina mojego komputera), przy przejściach między mapami na około 1 sekundę zostaje dawna mgła bądź chmury...
A z kolei prośba jaką mam do ciebie to czy nie możliwa byłaby większa władza nad np. chmurami, czy nie udało by się wykombinować ( nawet jeśli w cyklu) zmiany ruchu chmur... np. przez pierwsze 3 sekundy wolno do góry potem 5 sekund szybko po skosie i potem znów wolno do góry ( to oczywiście tylko przykład) ???

Avara - Wto 25 Paź, 2011 16:23

Jestem początkującym skrypterem. Na to pierwsze jeszcze nie znalazłam rozwiązania i dlatego napisałam o tym w "Wadach". To drugie dosyć łatwo zrobić, ale nie wiem po co komplikować ten skrypt i dodawać kolejne zmienne. W naturze chmury nie krążą w kółko po niebie, ani nie zmieniają co kilka sekund swojej prędkości i kierunku, więc byłoby to co najmniej dziwne :-/ :shock:
Tjef - Pon 31 Paź, 2011 11:38

też mam błąd, że na nowej mapce zostaje przez tę jedną sekundę, ale pominąć tylko to - skrypt świetny :) Powoli z Vx-a robi się taki mini Xp-ek :PP
MrDawnok - Nie 04 Gru, 2011 19:32

Nie próbowałem ale może...skrypt dosyć fajny też zawsze biedziłem nad mgłą tylko na pierwszym screenie te chmury są w takich regularnych odstępach i jest ich w %#?* co wygląda trochę nieefektownie(proszę nie komentować nie mam duszy artysty!) Vrona witaj w klubie


Proszę nie używać słów niecenzuralnych!

Nhadala

Virandar - Nie 18 Gru, 2011 12:40

Dawno nie byłem tu na forum, i widzę, że jest teraz bardzo dużo postępów. Oby tak dalej!
A skrypt ~ świetny!


Powered by phpBB modified by Przemo © 2003 phpBB Group