Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Nie 11 Paź, 2009 21: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
# ==========================================================
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 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
_points = create_point_pack(points)
return TRGSSX.draw_polygon(get_base_info,
_points, points.size, color.argb_code, width)
end
#--------------------------------------------------------------------------
# WypeĹnianie wielokÄ ta
#--------------------------------------------------------------------------
def fill_polygon(points, st_color, ed_color, fill_mode = TRGSSX::FM_FIT)
return -1 if TRGSSX::NO_TRGSSX
_points = create_point_pack(points)
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
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
@region = nil
(s..e).each { |i|
break if i * 90 >= ed_deg
if diff > 0
st_rad = (i * 90 + diff) * Math::PI / 180.0
diff = 0
else
st_rad = i * HALF_PI
end
if (i + 1) * 90 > ed_deg
ed_rad = ed_deg * Math::PI / 180.0
else
ed_rad = (i + 1) * HALF_PI
end
pt1 = [@cx, @cy]
pt2 = [
@cx + Integer(Math.cos(st_rad) * r),
@cy + Integer(Math.sin(st_rad) * r)
]
pt3 = [
@cx + Integer(Math.cos(ed_rad) * r),
@cy + Integer(Math.sin(ed_rad) * r)
]
rgn = PolygonRegion.new(pt1, pt2, pt3)
if @region == nil
@region = rgn
else
@region |= rgn
end
}
@region &= CircularRegion.new(@cx, @cy, @radius)
return @region
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
create_pie_region
end
#--------------------------------------------------------------------------
# Zmiana parametru y
#--------------------------------------------------------------------------
def y=(value)
@cy = value
@y = @cy - @radius
create_pie_region
end
#--------------------------------------------------------------------------
# Radiany
#--------------------------------------------------------------------------
def radius=(value)
@radius = value
@x = @cx - @radius
@y = @cy - @radius
create_pie_region
end
#--------------------------------------------------------------------------
# KÄ ty
#--------------------------------------------------------------------------
def start_angle=(value)
@start_angle = value
create_pie_region
end
#--------------------------------------------------------------------------
# Zmiana kÄ ta
#--------------------------------------------------------------------------
def sweep_angle=(value)
@sweep_angle = [[value, -360].max, 360].min
create_pie_region
end
#--------------------------------------------------------------------------
# Tworzenie ksztaĹtu
#--------------------------------------------------------------------------
def create_region_handle
return @region.create_region_handle
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 18: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 19: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 17: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