UltimaForum

Skrypty [XP] - Cień pod zdarzeniami

Ayene - Czw 28 Sty, 2010 10:27
Temat postu: Cień pod zdarzeniami
~ Cień pod zdarzeniami XP ~

Krótki opis
Skrypt dodaje cień pod zdarzeniami. Jest to poprawiona wersja skryptu zamieszczonego przez KillYou i przerobiona tak, aby była kompatybilna z XP.

Autor skryptu
Minto

Tłumaczenie i poprawki
KillYou

Kompatybilność
Tylko XP - przerobione z VX przez Ayene

Skrypt
Spoiler:

Kod:
# Cienie pod zdarzeniami [XP]
# Autor : Minto
# Tłumaczenie i poprawki: KillYou
# Przerobione na XP przez Ayene
#------------------------------------------------------------------------------
# Skrypt umożliwia dodanie cienia pod zdarzeniem
#==========================================================================
# Zapisz obrazek w folderze Graphics/Pictures jako 'Shadow'
#==========================================================================

# KONFIGURACJA:
  # Cień wyświetli się pod zdarzeniem, jeśli w nazwie zdarzenia
  # wpiszesz 'S%'. Jeżeli chcesz, by cień był pod każdym zdarzeniem,
  # zmień poniższy fragment "S%" na "" (pozostaw pusty bez spacji)
  NAZWA_ZDARZENIA = "S%"
 
#========================================================================== 
# Sprite_Shadow_Module
#------------------------------------------------------------------------------
module Sprite_Shadow_Module
  def dispose
    unless @character_shadow.nil? then
    @character_shadow.bitmap.dispose
    @character_shadow.dispose
  end
  super
  end
#--------------------------------------------------------------------------
# Opcje
#--------------------------------------------------------------------------
  def character_shadow_set
    @character_shadow = Sprite.new(self.viewport)
    # Nazwa obrazka w cieniem w folderze Pictures
    @character_shadow.bitmap = RPG::Cache.picture("Shadow")
    # Przejrzystość
    @character_shadow.opacity = (self.character.opacity / 2)
    # Rozmiar cienia / pozycja
    @shadow_size = @character_shadow.bitmap.width
    @character_shadow.zoom_x = ((@cw * 100) / @shadow_size) / 100.0
    @character_shadow.zoom_y = @character_shadow.zoom_x
    ox_rate = ((32 * 100) / @cw) / 100.0
    oy_rate = ((48 * 100) / @ch) / 100.0
    @character_shadow.ox = self.ox * ox_rate
    @character_shadow.oy = ((self.oy * oy_rate) / 2) - 4
    @last_character_name = @character_name.dup
    update_character_shadow
  end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
  def update_character_shadow
    if @character_shadow == nil then
      return
    end
    if @character.jumping? then
      @character_shadow.visible = false
      return
    end
    if @last_character_name_shadow != @character_name
      @last_character_name_shadow = @character_name
      @shadow_size = @character_shadow.bitmap.width
      @character_shadow.zoom_x = ((@cw * 100) / @shadow_size) / 100.0
      @character_shadow.zoom_y = @character_shadow.zoom_x
      @zoom_ox = @character_shadow.zoom_x
      @zoom_oy = @character_shadow.zoom_y
      ox_rate = ((32 * 100) / @cw) / 100.0
      oy_rate = ((48 * 100) / @ch) / 100.0
      @character_shadow.ox = self.ox * ox_rate
      @character_shadow.oy = ((self.oy * oy_rate) / 2) - 4
    end
    @character_shadow.x = self.x
    @character_shadow.y = self.y
    @character_shadow.zoom_x = @zoom_ox * self.zoom_x
    @character_shadow.zoom_y = @zoom_oy * self.zoom_y
    @character_shadow.visible = (self.visible and @character_name != "")
    @character_shadow.opacity = (self.character.opacity / 2)
  end
end
#==========================================================================
# Game_Event
#------------------------------------------------------------------------------
class Game_Event < Game_Character
  attr_reader :event
end
#==========================================================================
# Sprite_Character
#------------------------------------------------------------------------------
class Sprite_Character < RPG::Sprite
  include(Sprite_Shadow_Module)
  alias :MINTO_Character_Shadow_initialize :initialize
  def initialize(viewport, character = nil)
    MINTO_Character_Shadow_initialize(viewport, character)
    case @character
    when Game_Player then
      character_shadow_set
    when Game_Event then
      if @character.event.name.include?(NAZWA_ZDARZENIA) == true then
        character_shadow_set
      end
    end
  end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
  alias :update_MINTO_Character_Shadow :update
  def update
    update_MINTO_Character_Shadow
    update_character_shadow
  end
end


Demo
niepotrzebne

Dodatki
Umieść poniższy obrazek w folderze Graphics/Pictures jako plik 'Shadow.png'
Spoiler:


Screenshot
Spoiler:


Instrukcja
1. Wklej skrypt nad "Main" w Edytorze Skryptu.
2. Reszta instrukcji znajduje się w treści skryptu.

Piszcie w razie problemów.

Czeliosss - Czw 28 Sty, 2010 15:32

Na pewno się przyda, a dało by się tak jak u KillYou, że pokazuje tekst??
Malian - Czw 28 Sty, 2010 17:22

To inny skrypt dałem już do tego pytanie o ile pamiętam.
alintes - Sob 30 Sty, 2010 10:44

Fajny skrypt Ayene, napewno go uzyje w swojej grze, a tak wogole juz niedlugo oficjalna zapowiedz gry!!Może tak jakos po feriach bedzie demko. :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Boniek2000 - Wto 16 Lut, 2010 15:29

mam 2 problemy jak skopiuje obrazek to czarny jest bez efektu sam zrobiłem cień
2.jak jestem np pod górą to cień jest na wierzchu help

Ayene - Wto 16 Lut, 2010 16:41

Po co robiłeś cień, skoro jest już zrobiony gotowiec?! Drugiej części nie rozumiem, jak możesz zobrazuj mi to za pomocą screenshota.
Boniek2000 - Wto 16 Lut, 2010 16:52

no właśnie z tym gotowcem problem... jak kopiuje obrazek wklejam w painat'a
to wkleja się wszystko czarne nima obrazk
a drugi to jak jestem pod np drzewem to jakby cień wyrasta z niego jest nad nim ale podemną

Ayene - Wto 16 Lut, 2010 16:57

A p co Ty wklejasz obrazek do painta? Paint nie obsługuje przezroczystości, dlatego robi Ci się plama. Ten obrazek, który jest zamieszczony w pierwszym poście po prostu zapisz na dysku i wklej do folderu Graphics/Pictures jako plik 'Shadow.png'
HESEE - Sob 01 Maj, 2010 11:07

Mam problem z cieniem jak np. podejdę do jakiegoś obiektu.
Tutaj obrazek....
Spoiler:



Pomocy co z tym zrobić!?
Ps:ten problem psuje wszystko i on wszędzie się pojawia.

Ayene - Sob 01 Maj, 2010 11:17

To wejdź w bazę danych, zakładka Tilesets, wybierz tileset, kliknij 'priority' i ustaw priorytet środkowej części stołu na *1
Scot - Wto 07 Wrz, 2010 13:21

Tylko szkoda ,że skrypt nie jest całkowicie napisany :-/ Nie ma cienie pod normalnymi zdarzeniami :/ Przynajmniej mogło by być ,że samemu się ustawia pod czym ma być cień :/ Ale i tak fajny :p



Ps.Może mi ktoś na pw napisać jak wstawić skrypt z demkiem?Albo link do tutka?Będe bardzo wdzięczny :-D

Ayene - Wto 07 Wrz, 2010 13:36

Cień może być albo pod wszystkim zdarzeniami, albo pod wybranymi. Wszystko zależy od konfiguracji:
Kod:
# KONFIGURACJA:
  # Cień wyświetli się pod zdarzeniem, jeśli w nazwie zdarzenia
  # wpiszesz 'S%'. Jeżeli chcesz, by cień był pod każdym zdarzeniem,
  # zmień poniższy fragment "S%" na "" (pozostaw pusty bez spacji)
  NAZWA_ZDARZENIA = "S%"

Zeno3939 - Sob 04 Gru, 2010 17:31

Witam mam dość ważne pytanie . Czy mogę użyć skryptu do mojej gry ? Chciałbym by moje gry były ciekawsze . Prosił bym o szybką odpowiedź
kamillo112 - Sob 04 Gru, 2010 19:32

Zeno3939, twoje pytanie mnie rozśmieszyło tym że nazwałeś je ważnym, skrypty dawane są po to na forum aby z nich korzystać niektórzy chcą aby dać ich w CREDITS a tak po za tym
możesz z niego korzystać do woli.

Zeno3939 - Nie 05 Gru, 2010 22:14

Nie byłem pewny .Jestem tu nowy i znalazłem wiele ciekawych skryptów .To forum to prawdziwa kopalnia złota :mrgreen:
Kongo21 - Pon 02 Maj, 2011 21:07

Skrypt jest super !
Aż się zarejestrowałem !
Myślałem, że to cień tylko pod takimi ludźmi jakich ja postawie, a tu szok ! Na każdej :]

Melvin - Pon 02 Maj, 2011 22:16

Nigdy nie myślałem, że go użyje... Ale teraz może się przydać :-P
Dzięki za wstawkę!


Powered by phpBB modified by Przemo © 2003 phpBB Group