Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Nie 11 Paź, 2009 20:41
Skrypt z biblioteką TRGSSX.dll
~ Skrypt z biblioteką TRGSSX.dll ~
Krótki opis
Dodatek do skryptu "Rozszerzone okno statusu". Skrypt powiększa możliwości graficzne RPG Makera VX. Należy go umieścić na takich samych zasadach jak inne skrypty.
Autor skryptu
KGC
Tłumaczenie i przeróbki
Ayene [yurika@o2.pl]
Kompatybilność
Tylko VX.
UWAGA!!! Do prawidłowego działania wymagane jest umieszczenie w folderze z grą biblioteki 'TRGSSX.dll'. Do ściągnięcia w załączniku
Skrypt
Spoiler:
Kod:
# ==========================================================
# ~ Rozszerzona bitmapa ~
# Data publikacji: 11.10.2009
# Autor: KGC
# 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.
# Do poprawnego działania wymagane jest umieszczenie w folderze z grą biblioteki
# TRGSSX.dll. Dostępna jest na stronie www.ultimateam.pl
# ==========================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# --------------------------- POCZĄTEK SKRYPTU ---------------------------------
module KGC
module BitmapExtension
# ---------------------------- POCZĄTEK EDYCJI ---------------------------------
# Tryb wydajności draw_text
# 0 : draw_text (domyślny)
# 1 : draw_text_na
# 2 : draw_text_fast
DEFAULT_MODE = 2
# Nazwa domyślnej czcionki dla każdego z trybów
# ["czcionka 1", "czcionka 2", ...],
DEFAULT_FONT_NAME = [
Font.default_name, # 0
["Verdana"], # 1
["Comic Sans MS"], # 2
]
DEFAULT_FRAME = true
DEFAULT_GRAD_COLOR = nil
# ----------------------------- KONIEC EDYCJI ----------------------------------
end
end
# -----------NIE EDYTUJ PONIŻEJ, CHYBA ŻE WIESZ CO ROBISZ ^^--------------------
$imported = {} if $imported == nil
$imported["BitmapExtension"] = true
module_function
#--------------------------------------------------------------------------
# Wersja 1.23 → 123
#--------------------------------------------------------------------------
def version
return -1 if NO_TRGSSX
class Bitmap
#--------------------------------------------------------------------------
# Tryb wstawiania (interpolacji)
#--------------------------------------------------------------------------
def self.interpolation_mode
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.get_interpolation_mode
end
#--------------------------------------------------------------------------
# Ustawienia trybu wstawiania
#--------------------------------------------------------------------------
def self.interpolation_mode=(value)
return if TRGSSX::NO_TRGSSX
TRGSSX.set_interpolation_mode(value)
end
#--------------------------------------------------------------------------
# Tryb wygładzania
#--------------------------------------------------------------------------
def self.smoothing_mode
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.get_smoothing_mode
end
#--------------------------------------------------------------------------
# Wygładzanie
#--------------------------------------------------------------------------
def self.smoothing_mode=(value)
return if TRGSSX::NO_TRGSSX
TRGSSX.set_smoothing_mode(value)
end
#--------------------------------------------------------------------------
# Info o bimapie (object_id, width, height)
#--------------------------------------------------------------------------
def get_base_info
return [object_id, width, height].pack('l!3')
end
#--------------------------------------------------------------------------
# Operacje rastrowe
#--------------------------------------------------------------------------
def rop_blt(x, y, src_bitmap, src_rect, rop = TRGSSX::SRCCOPY)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.rop_blt(get_base_info,
x, y, src_rect.width, src_rect.height,
src_bitmap.get_base_info, src_rect.x, src_rect.y, rop)
end
#--------------------------------------------------------------------------
# Bitmapa klipu
#--------------------------------------------------------------------------
def clip_blt(x, y, src_bitmap, src_rect, region)
return -1 if TRGSSX::NO_TRGSSX
result = TRGSSX.clip_blt(get_base_info,
x, y, src_rect.width, src_rect.height,
src_bitmap.get_base_info, src_rect.x, src_rect.y, hRgn)
Region.delete_region_handles
return result
end
#--------------------------------------------------------------------------
# Bitmapa mieszania
#--------------------------------------------------------------------------
def blend_blt(x, y, src_bitmap, src_rect, blend = TRGSSX::BLEND_NORMAL)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.blend_blt(get_base_info,
x, y, src_rect.width, src_rect.height,
src_bitmap.get_base_info, src_rect.x, src_rect.y, blend)
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def stretch_blt_r(dest_rect, src_bitmap, src_rect, opacity = 255)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.stretch_blt_r(get_base_info,
dest_rect.x, dest_rect.y, dest_rect.width, dest_rect.height,
src_bitmap.get_base_info,
src_rect.x, src_rect.y, src_rect.width, src_rect.height,
opacity)
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def skew_blt(x, y, src_bitmap, src_rect, slope, opacity = 255)
slope = [[slope, -89].max, 89].min
sh = src_rect.height
off = sh / Math.tan(Math::PI * (90 - slope.abs) / 180.0)
if slope >= 0
dx = x + off.to_i
diff = -off / sh
else
dx = x
diff = off / sh
end
rect = Rect.new(src_rect.x, src_rect.y, src_rect.width, 1)
sh.times { |i|
blt(dx + (diff * i).round, y + i, src_bitmap, rect, opacity)
rect.y += 1
}
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def skew_blt_r(x, y, src_bitmap, src_rect, slope, opacity = 255)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.skew_blt_r(get_base_info,
x, y, src_bitmap.get_base_info,
src_rect.x, src_rect.y, src_rect.width, src_rect.height,
slope, opacity)
end
#--------------------------------------------------------------------------
# Rysowanie wielokąta
#--------------------------------------------------------------------------
def draw_polygon(points, color, width = 1)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.fill_polygon(get_base_info,
_points, points.size, st_color.argb_code, ed_color.argb_code, fill_mode)
end
#--------------------------------------------------------------------------
# Tworzenie listy współrzędnych
#--------------------------------------------------------------------------
def create_point_pack(points)
result = ''
points.each { |pt| result += pt.pack('l!2') }
return result
end
private :create_point_pack
#--------------------------------------------------------------------------
# Rysowanie wielokąta foremnego
#--------------------------------------------------------------------------
def draw_regular_polygon(x, y, r, n, color, width = 1)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.draw_regular_polygon(get_base_info,
x, y, r, n, color.argb_code, width)
end
#--------------------------------------------------------------------------
# Wypełnianie wielokąta foremnego
#--------------------------------------------------------------------------
def fill_regular_polygon(x, y, r, n, st_color, ed_color,
fill_mode = TRGSSX::FM_FIT)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.fill_regular_polygon(get_base_info,
x, y, r, n, st_color.argb_code, ed_color.argb_code, fill_mode)
end
#--------------------------------------------------------------------------
# Elementy koła
#--------------------------------------------------------------------------
def draw_spoke(x, y, r, n, color, width = 1)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.draw_spoke(get_base_info,
x, y, r, n, color.argb_code, width)
end
#--------------------------------------------------------------------------
# Wygładzanie tekstu 'na'
#--------------------------------------------------------------------------
def draw_text_na(*args)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.draw_text_fast(get_base_info, x, y, width, height, text,
fname, font.size, get_text_color, align, flags)
end
#--------------------------------------------------------------------------
# Wielkość tekstu 'na'
#--------------------------------------------------------------------------
def text_size_na(text)
return -1 if TRGSSX::NO_TRGSSX
result = TRGSSX.get_text_size_na(get_base_info, text.to_s,
fname, font.size, flags, size)
size = size.unpack('l!2')
rect = Rect.new(0, 0, size[0], size[1])
return rect
end
#--------------------------------------------------------------------------
# Wielkość tekstu 'fast'
#--------------------------------------------------------------------------
def text_size_fast(text)
return -1 if TRGSSX::NO_TRGSSX
result = TRGSSX.get_text_size_fast(get_base_info, text.to_s,
fname, font.size, flags, size)
size = size.unpack('l!2')
rect = Rect.new(0, 0, size[0], size[1])
return rect
end
#--------------------------------------------------------------------------
# Argumenty
#--------------------------------------------------------------------------
def get_text_args(args)
if args[0].is_a?(Rect)
if args.size.between?(2, 4)
x, y = args[0].x, args[0].y
width, height = args[0].width, args[0].height
text = args[1].to_s
align = (args[2].equal?(nil) ? 0 : args[2])
else
raise(ArgumentError,
"wrong number of arguments(#{args.size} of #{args.size < 2 ? 2 : 4})")
return
end
else
if args.size.between?(5, 7)
x, y, width, height = args
text = args[4].to_s
align = (args[5].equal?(nil) ? 0 : args[5])
else
raise(ArgumentError,
"wrong number of arguments(#{args.size} of #{args.size < 5 ? 5 : 7})")
return
end
end
return [x, y, width, height, text, align]
end
private :get_text_args
#--------------------------------------------------------------------------
# Pobranie dostępnej czcionki
#--------------------------------------------------------------------------
def get_available_font_name
if font.name.is_a?(Array)
font.name.each { |f|
return f if Font.exist?(f)
}
return nil
else
return font.name
end
end
private :get_available_font_name
#--------------------------------------------------------------------------
# Kolor tekstu (main, gradation, shadow, needGrad)
#--------------------------------------------------------------------------
def get_text_color
need_grad = !font.gradation_color.equal?(nil)
result = []
result << font.color.argb_code
result << (need_grad ? font.gradation_color.argb_code : 0)
result << 0xFF000000
result << (need_grad ? 1 : 0)
return result.pack('l!4')
end
private :get_text_color
#--------------------------------------------------------------------------
# Formatowanie tekstu
#--------------------------------------------------------------------------
def get_draw_text_flags
flags = 0
flags |= TRGSSX::FS_BOLD if font.bold
flags |= TRGSSX::FS_ITALIC if font.italic
flags |= TRGSSX::FS_SHADOW if font.shadow && !font.frame
flags |= TRGSSX::FS_FRAME if font.frame
return flags
end
private :get_draw_text_flags
#--------------------------------------------------------------------------
# Zapis
#--------------------------------------------------------------------------
def save(filename)
return -1 if TRGSSX::NO_TRGSSX
return TRGSSX.save_to_bitmap(filename, get_base_info)
end
end
class Color
#--------------------------------------------------------------------------
# Kolory RGB
#--------------------------------------------------------------------------
def argb_code
n = 0
n |= alpha.to_i << 24
n |= red.to_i << 16
n |= green.to_i << 8
n |= blue.to_i
return n
end
end
unless method_defined?(:shadow)
XP_MODE = true
@@default_shadow = false
attr_writer :shadow
def self.default_shadow
return @@default_shadow
end
def self.default_shadow=(s)
@@default_shadow = s
end
def shadow
return (@shadow == nil ? @@default_shadow : @shadow)
end
else
XP_MODE = false
end
end
#--------------------------------------------------------------------------
# Zmienna klasa
#--------------------------------------------------------------------------
@@default_frame = KGC::BitmapExtension::DEFAULT_FRAME
@@default_gradation_color = KGC::BitmapExtension::DEFAULT_GRAD_COLOR
#--------------------------------------------------------------------------
# Zmienne
#--------------------------------------------------------------------------
attr_accessor :gradation_color
#--------------------------------------------------------------------------
# Rozpoczęcie
#--------------------------------------------------------------------------
unless private_method_defined?(:initialize_KGC_BitmapExtension)
alias initialize_KGC_BitmapExtension initialize
end
def initialize(name = Font.default_name, size = Font.default_size)
initialize_KGC_BitmapExtension(name, size)
@frame = nil
@gradation_color = @@default_gradation_color
if XP_MODE
@shadow = nil
end
end
#--------------------------------------------------------------------------
# Domyślna grafika
#--------------------------------------------------------------------------
def self.default_frame
return @@default_frame
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def self.default_frame=(value)
@@default_frame = value
end
#--------------------------------------------------------------------------
# Domyślny kolor gradientu
#--------------------------------------------------------------------------
def self.default_gradation_color
return @@default_gradation_color
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def self.default_gradation_color=(value)
@@default_gradation_color = value
end
#--------------------------------------------------------------------------
# Cień
#--------------------------------------------------------------------------
unless method_defined?(:shadow_eq) || XP_MODE
alias shadow_eq shadow=
end
def shadow=(value)
XP_MODE ? @shadow = value : shadow_eq(value)
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def frame
return (@frame == nil ? @@default_frame : @frame)
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def frame=(value)
@frame = value
end
end
#==============================================================================
# Region
#==============================================================================
class Region
#--------------------------------------------------------------------------
# Zmienna klasy
#--------------------------------------------------------------------------
@@handles = []
#--------------------------------------------------------------------------
# Win32API
#--------------------------------------------------------------------------
@@_api_delete_object = Win32API.new('gdi32', 'DeleteObject', 'l', 'l')
#--------------------------------------------------------------------------
# Tworzenie kształtu
#--------------------------------------------------------------------------
def create_region_handle
return 0
end
#--------------------------------------------------------------------------
# AND (&)
#--------------------------------------------------------------------------
def &(obj)
return nil unless obj.is_a?(Region)
return CombinedRegion.new(CombinedRegion::RGN_AND, self, obj)
end
#--------------------------------------------------------------------------
# AND (*)
#--------------------------------------------------------------------------
def *(obj)
return self.&(obj)
end
#--------------------------------------------------------------------------
# OR (|)
#--------------------------------------------------------------------------
def |(obj)
return nil unless obj.is_a?(Region)
return CombinedRegion.new(CombinedRegion::RGN_OR, self, obj)
end
#--------------------------------------------------------------------------
# OR (+)
#--------------------------------------------------------------------------
def +(obj)
return self.|(obj)
end
#--------------------------------------------------------------------------
# XOR (^)
#--------------------------------------------------------------------------
def ^(obj)
return nil unless obj.is_a?(Region)
return CombinedRegion.new(CombinedRegion::RGN_XOR, self, obj)
end
#--------------------------------------------------------------------------
# DIFF (-)
#--------------------------------------------------------------------------
def -(obj)
return nil unless obj.is_a?(Region)
return CombinedRegion.new(CombinedRegion::RGN_DIFF, self, obj)
end
#--------------------------------------------------------------------------
#
#--------------------------------------------------------------------------
def self.delete_region_handles
@@handles.uniq!
@@handles.each { |h| @@_api_delete_object.call(h) }
@@handles.clear
end
end
class CircularRegion < EllipticRegion
#--------------------------------------------------------------------------
# Zmienne
#--------------------------------------------------------------------------
attr_reader :radius
#--------------------------------------------------------------------------
# Rozpoczęcie
#--------------------------------------------------------------------------
def initialize(x, y, r)
@cx = x
@cy = y
self.radius = r
super(@cx - r, @cy - r, r * 2, r * 2)
end
#--------------------------------------------------------------------------
# Parametr x
#--------------------------------------------------------------------------
def x
return @cx
end
#--------------------------------------------------------------------------
# Parametr y
#--------------------------------------------------------------------------
def y
return @cy
end
#--------------------------------------------------------------------------
# Zmiana parametru x
#--------------------------------------------------------------------------
def x=(value)
@cx = value
@x = @cx - @radius
end
#--------------------------------------------------------------------------
# Zmiana parametru y
#--------------------------------------------------------------------------
def y=(value)
@cy = value
@y = @cy - @radius
end
#--------------------------------------------------------------------------
# Radiany
#--------------------------------------------------------------------------
def radius=(value)
@radius = value
@x = @cx - @radius
@y = @cy - @radius
@width = @height = @radius * 2
end
end
class Bitmap
unless method_defined?(:_draw_text)
alias _draw_text draw_text
alias _text_size text_size
case KGC::BitmapExtension::DEFAULT_MODE
when 1 # na
alias draw_text draw_text_na
alias text_size text_size_na
when 2 # fast
alias draw_text draw_text_fast
alias text_size text_size_fast
end
end
end
Mam pewien problem. Ściągnąłem ów bibliotekę i wkleiłem skrypt. Gdy chciałem odpalić grę zawiesił mi się komputer. Po zresetowaniu gdy próbuję wejść w moją grę, pokazuje mi się tekst:"Niespodziewany format pliku" i wychodzi mi z gry. Nie wiem w czym problem, jeśli komuś przytrafiło się coś podobnego i wie jak mi pomóc będę naprawdę wdzięczny.
________________________ "Darker than Black"
Może taki jestem.
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pon 12 Paź, 2009 17:45
Dziwne... u mnie wszystko poprawnie wyświetla... Zacznijmy od kilku pytań
1. Z jakiego systemu operacyjnego korzystasz?
2. Czy na pewno poprawnie skopiowałeś skrypt?
3. Czy umieściłeś w folderze z grą bibliotekę?
Przetłumaczyłam jednak skrypt na polski (najważniejsze linijki), może teraz nie będzie problemów. Podmień te pliki łącznie ze skryptem rozszerzającym okno statusu i ściągnij jeszcze raz bibliotekę (może nie ściągnęła się do końca).
1 Co do systemu jest to zmodyfikowany xp, mianowicie windows mx rgb.
2 Co do skryptu skopiowałem tylko ten który był w dodatku (i myślę że to może być problem)
3 Bibliotekę umieściłem
Nie mogę wejść wogólę w moją grę, więc podmiana skryptu odpada.
Może to być kwestia systemu, może miałem po prostu pecha i zawiesił mi się komp w złym momencie. Jeśli coś uda ci się wymyślić to pisz, jeśli nie to trudno, będę miał okazję zrobić nowy projekt. I tak dziękuję za zajęcie się tym problemem
________________________ "Darker than Black"
Może taki jestem.
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pon 12 Paź, 2009 18:30
Możemy zrobić tak... Załóż nowy projekt i ze swojego starego zgraj wszystkie pliki z folderu Data (te z rozszerzeniem rxdata) - nadpisz je w nowym projekcie - oprócz pliku 'Scripts.rxdata', który jest Twoim edytorem skryptów. Może uda Ci się uratować mapy i bazę danych, a skrypty sobie uzupełnisz Oczywiście jak masz jakieś dodatki do grafiki i muzykę to też ją skopiuj.
A to że skopiowałeś tylko ten skrypt z dodatku nie powinno psuć gry Jest on przecież samodzielny i ogólnie poprawia grafikę.
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Sob 24 Paź, 2009 16:41
Wystarczy, że - w skrypcie z pierwszego posta - zamiast czcionki Comic Sans MS wpiszesz Calibri (pod warunkiem, że nie zmieniłeś trybu wydajności z DEFAULT_MODE = 2 na inny). Pamiętaj jednak o tym, że w przypadku, gdy wydasz grę, a potencjalny gracz nie będzie miał czcionki Calibri na swoim komputerze - nie będzie mu wyświetlało tekstu.
Wielkie dzięki za pomoc lecz już dawno uporałem się z tym przez inny skrypt lecz muszę powiedzieć że na tej stronce są zej................ skrypty bestiariusza szukałem z 2 miechy i tu nagle na polskiej stronce
lecz niektóre skrypty musiałem edytować żeby napisy były eng
________________________ Pozdrawiam, bo nie chcę zawsze pisać powyżej - KillYou
PS Jeżeli nie rozumiesz (pomoc) co jest napisane powyżej, to wrzucę screeny :)
The Elect
Twórca: KillYou
Pomocnicy Pr0mes, Spino333, Janus, Kacperer
============================================================
============================================================
Tekst Podpisu:
Podpis - dozwolona ilość znaków:500
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