Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2017-08-01, 17:58


marcin778

Krytyk serwerów MTA






Wiek: 24
Na forum: 4149 dni
Posty: 2268
Nick w MP: Marcineg

Piwa: 4662

Respekt: 1436,8
Respekt: 1436,8

Witam!


W trzeciej cz??ci zajmiemy si? rodzajami zmiennych,komentarzami oraz wszystkimi operatorami tj. arytmetyczne,matematyczne,relacji oraz logiczne. Poruszymy te? kwesti? instrukcji warunkowych dla przypomnienia.


Operatory


Logiczne:
Operator?w logicznych mamy trzy i s? to and,or,not.

AND

Operator logiczny "and" co z angielskiego oznacza "oraz"/"i" czyli je?li spe?ni? si? dwa warunki wtedy nasz kod przejdzie dalej. Np je?li po wpisaniu komendy 'zniszcz' gracz siedzi w poje?dzie i id tego pojazdu to 611 (nie wiem co to :P ) to wtedy nasz pojazd zniszczy to zamiast robi? zb?dnie dwa warunki mo?emy u?y? operatora.
Zamiast

addCommandHandler("zniszcz",function(plr,cmd)
if getPedOccupiedVehicle(plrthen
 if getElementModel(getPedOccupiedVehicle(plr)) == 611 then
   destroyElement(getPedOccupiedVehicle(plr))
  end
 end
end
)
tak, to robimy tak:
addCommandHandler("zniszcz",function(plr,cmd)
 if getPedOccupiedVehicle(plr) and getElementModel(getPedOccupiedVehicle(plr)) == 611 then
  destroyElement(getPedOccupiedVehicle(plr))
 end
end
)
end jest jeden od if'a ?aden z operator?w nie potrzebuje dodatkowego end'a.

Jednymi s?owy
if warunek1 and warunek2 then
jesli warunek1 i warunek2 sie spe?niaj? to kod leci dalej.

OR

Operator logiczny "or" co z angielskiego oznacza "lub"/"albo" czyli je?li spe?nia si? warunek pierwszy LUB spe?nia si? warunek drugi wtedy nasz kod przechodzi dalej. Np je?li chcemy zrobi? tak, ?e skin o id 180 mo?emy ubra? tylko wtedy gdy mamy skin 185 lub 190 to nie u?yjemy operatora "and", poniewa? nie mo?emy mie? dw?ch skin?w na raz i nasz warunek nigdy si? nie spe?ni. U?yjemy operatora "or". Czyli:

addCommandHandler("skin",function(plr,cmd)
 if getElementModel(plr) == 185 or getElementModel(plr) == 190 then
  setElementModel(plr,180)
 end
end
)
Operator "or" r?wnie? nie potrzebuje dodatkowego end'a. Reasumuj?c
if warunek1 or warunek2
Je?li warunek1 si? spe?nia lub warunek2 si? spe?nia to kod leci dalej.

NOT

Operator "not" co z angielskiego oznacza "nie" czyli je?li co? si? nie spe?nia wtedy nasz kod przechodzi dalej. Np gdy wpiszemy komend? "ulecz" i nie siedzimy w poje?dzie wtedy nas uleczy to zrobimy to tak:

addCommandHandler("ulecz",function(plr,cmd)
 if not getPedOccupiedVehicle(plrthen
   setElementHealth(plr,100)
 end
end
)
Operator "not" tak?e nie potrzebuje dodatkowego end'a. Jednymi s?owy
if not warunek1 then
Je?li nasz warunek1 si? nie spe?ni wtedy nasz kod leci dalej.

Ciekawostki

Ciekawosta nr 1

Ciekawostk? jest to, ?e w/w operator?w mo?emy u?ywa? tyle ile chcemy, przyk?adowo
if getElementModel(plr) == 270 and getElementModel(plr) == 280 and getElementModel(plr) == 290
i tak do woli. Z operatorami "or" oraz "not" te? mo?emy tak post?powa?.
if getElementModel(plr) == 270 or getElementModel(plr) == 280 or getElementModel(plr) == 290 then
Oraz z "not"
 if not getPedOccupiedVehicle(plr) and not getElementData(plr,"data") and not getElementData(plr,"data1"then 

Ciekawosta nr 2
Drug? wa?n? informacj?/ciekawostk? jest to i? operatory mo?emy ??czy? a czasem nawet musimy. ??czy? w kontek?cie u?ycia ich w jednym warunku, czyli:
if getElementModel(plr) == 280 and getPedOccupiedVehicle(plr) and getElementModel(getPedOccupiedVehicle(plr)) == 526 or getElementModel(getPedOccupiedVehicle(plr)) == 527 and not getElementData(plr,"data1"then
Czyli je?li mamy skin o id 280 i mamy pojazd oraz id pojazdu to 526 lub 527 i nie mamy elementdaty "data1" wtedy nasz kod leci dalej.
Ciekawosta nr 3
R?wnie? wa?n? informacj? jest to i? operatora "or" mo?emy u?y? r?wnie? poza instrukcj? warunkow?
local data getElementData(plr,"data") or "Brak"
W takim wypadku je?li gracz nie posiada elementdaty "data" czyli jej nie ma lub jej warto?? to fa?sz (false) to wtedy zmienna data b?dzie zawiera? warto?? "Brak". Stanie si? tak jedynie je?li gracz nie b?dzie posiada? elementdaty.
Ciekawosta nr 4
Kolejn? ciekawostk? jest to i? operatora "not" r?wnie? mo?emy u?y? poza instrukcj? warunkow?. Przyk?adowo zamiast
local zmienna false
Mo?emy zrobi? tak
local zmienna not true
Czyli nasza zmienna jest r?wna "not true" co oznacza "nie prawda" czyli "fa?sz" tak wi?c nasza zmienna b?dzie r?wna false, czyli to na jedno wychodzi.
Ciekawosta nr 5
I ostatni? ciekawostk? z operator?w jest fakt, ?e operatora "and" tak?e mo?emy u?y? poza instrukcj? warunkow?. Przyk?adowo

local wynik 0
local function wynik()
wynik wynik 1
return (wynik-1) and or wynik-1
end

addCommandHandler("wynik",function(plr,cmd)
outputChatBox(wynik(),plr,255,255,255)
end
)
Taki kod poka?e nam na "czacie" 4 a operator "and" zadzia?a tak, ?e zwr?ci wynik - 1 mniejszy od 1 i 1 lub wynik-1.

Matematyczne:
Operator?w matematycznych mamy kilka.

Dodatni (+)

Operator dodatni to zwyk?y znak + czyli dodawanie warto?ci. Przyk?adowo
addCommandHandler("ile",function(plr,cmd)
local wynik 4
outputChatBox(wynik,plr,255,255,255)
end
)

Wypisze nam na "czacie" 8 i operatorem tutaj jest znak dodawania. Drugi przyk?ad:

addCommandHandler("nadaj",function(plr,cmd)
setElementData(plr,"data",4)
setElementData(plr,"data1",8)
end
)

addCommandHandler("dodaj",function(plr,cmd)
 local d getElementData(plr,"data") or 0
 setElementData(plr,"data",tonumber(d)+2)
end
)
Czyli mo?emy dodawa? warto?ci liczbowe z elementdat do siebie. Mo?emy te? je odejmowa?,mno?y?,dzieli?,pot?gowa?.

Ujemny (-)

Operator ujemny to nic innego jak zwyk?y znak '-' czyli odejmowanie warto?ci. Przyk?adowo
addCommandHandler("ile2",function(plr,cmd)
local wynik 4 
outputChatBox(wynik,plr,255,255,255)
end
)
Wypisze nam na "czacie" 4 i operatorem tutaj jest znak odejmowania.

Mno??cy (*)

Operator mno??cy to nic innego jak zwyk?e mno?enie czyli znak * Czyli mno?enie warto?ci. Przyk?adowo
addCommandHandler("mnoz",function(plr,cmd)
local wynik 4*2
outputChatBox(wynik,plr,255,255,255)
end
)
Wypisze nam na "czacie" 8 i operatorem tutaj jest znak mno?enia.

Dziel?cy (/)

Operator dziel?cy to po prostu zwyk?e dzielenie czyli znak / Czyli dzielenie warto?ci. Przyk?adowo
addCommandHandler("dziel",function(plr,cmd)
local wynik 4/2
outputChatBox(wynik,plr,255,255,255)
end
)
Wypisze nam na "czacie" 2 i operatorem tutaj jest znak dzielenia. Znak dzielenia to slash lub jak nie kt?rzy to nazywaj? "uko?nik" w praw? stron?. Poniewa? \ a / to dwa r??ne znaki a \ nie jest ?adnym z operator?w tak wi?c nie zadzia?a on jak dzielenie tylko spowoduje b??d.

Pot?guj?cy (^)

Operator pot?guj?cy to pot?gowanie czyli znak ^ Czyli pot?guje warto?ci, podnosi je do pot?gi. Przyk?adowo
addCommandHandler("poteguj",function(plr,cmd)
 local wynik 4^2
 outputChatBox(wynik,plr,255,255,255)
 end
)
Wypisze nam na "czacie" 16 czyli 4*4 i operatorem tutaj jest znak pot?gowania.

Arytmetyczne:
Operator?w arytmetycznych r?wnie? jest kilka.

R?wno?ci

Operator r?wno?ci to znak == sprawdzaj?cy czy warto?ci s? do siebie r?wne. Przyk?adowo
 if 4+== 6 then
taki warunek przepu?ci nasz kod dalej, poniewa? 4 + 2 = 6. Operator r?wno?ci nie dzia?a tylko na liczbach, dzia?a r?wnie? na stringach oraz boolean. Przyk?adowo
addCommandHandler("daj",function(plr,cmdsetElementData(plr,"data","hello")
setElementData(plr,"data1","world")
end
)

addCommandHandler("spr",function(plr,cmd)
local d getElementData(plr,"data") or ""
local d2 getElementData(plr,"data1") or ""
if == d2 then -- je?li d r?wne d2 czyli hello world wtedy
outputChatBox("tak")
end
end
)

taki warunek nam si? nie spe?ni, poniewa? d to "hello" a d2 to "world". Mo?na te? u?y? tego w taki spos?b
if == "hello" and d2 == "world" then
taki zapis sprawdzi czy d to "hello" i czy d2 to "world".

Negacji R?wno?ci

Operator negacji r?wno?ci to znak ~= sprawdzaj?cy czy warto?ci nie s? sobie r?wne. Przyk?adowo
addCommandHanlder("check",function(plr,cmd)
if 4-~= 2 then
outputChatBox("tak")
end
end
)
taki przyk?ad poka?e nam na "czacie" ,"tak", poniewa? 4 - 1 nie jest r?wne 2, tylko 3. Tak samo mo?na zrobi? ze stringiem czy te? boolean. Przyk?ad boolean czyli true/false
local z true
addCommandHandler("bl",function(plr,cmd)
if == true then
setElementModel(plr,0)
end
end
)
taki kod sprawdzi czy z jest r?wne true. Zamiast takiego zapisu mo?na po prostu omin?? operator i zrobi?
 if z then
ze stringiem to
 if ~= "hello" then

Nier?wno?ci Ostre

• Mniejszy

Operator "mniejszy" z nier?wno?ci ostrych to po prostu znak < sprawdzaj?cy czy warto?? jest mniejsza od drugiej. Przyk?adowo
if 6-3 then
taki warunek nam si? nie spe?ni, poniewa? 6-2 to 4 a 4 nie jest mniejsze od 3.

• Wi?kszy

Operator "wi?kszy" z nier?wno?ci ostrych to po prostu znak > sprawdzaj?cy czy warto?? jest wi?ksza od drugiej. Przyk?adowo
 if 7-1 then
taki warunek nam si? spe?ni, poniewa? 7-3 to 4 a 4 jest wi?ksze od 1.

Nier?wno?ci Nieostre

• Mniejszy Lub R?wny

Operator "mniejszy lub r?wny" z nier?wno?ci nieostrych to znak <= sprawdzaj?cy czy warto?? jest mniejsza od drugiej lub jej r?wna. Przyk?adowo
 if 7-<= 6 then
taki warunek nam si? spe?ni, poniewa? 7-1 to 6 a znak <= sprawdzi czy 7-1 jest mniejsze od 6 lub r?wne 6 tak wi?c warunek si? spe?ni.

• Wi?kszy Lub R?wny

Operator "wi?kszy lub r?wny" z nier?wno?ci nieostrych to znak >= sprawdzaj?cy czy warto?? jest wi?ksza od drugiej lub jej r?wna. Przyk?adowo
 if 7->= 6 then
taki warunek r?wnie? si? spe?ni, poniewa? 7-1 to 6 a znak >= sprawdza czy 7-1 jest wi?ksze lub r?wne 6, co prawda nie jest wi?ksze ale jest r?wne 6 tak wi?c nasz warunek si? spe?ni.

Przynale?no?ci

Operator przynale?no?ci to znak/s?owo/wyraz/sformu?owanie "in" czyli z angielskiego "w" przyk?ad:
 local tbl = {1,2}
for k,v in ipairs(tbl) do
operatorem przynale?no?ci jest 'in' czyli sprawdza on czy przynale?ne warto?ci np z tabeli/tablicy.

Modulo (%)

Operator modulo to znak %, modulo to reszta z dzielenia. Mo?emy sprawdzi? czy liczba jest parzysta. Przyk?adowo
local wynik 8.5%2
if wynik == 0.5 then
taki warunek si? spe?ni poniewa? reszta z dzielenia 8.5 przez 2 to w?a?nie po?owa czyli 0.5

Relacji:
Relacji

Operator relacji dzia?a tak jak arytmetyczny, przyk?adowo
local a 2
local b 3

if b then
warunek si? nie spe?ni bo 2 nie jest wi?ksze od 3. Operatory relacji to tak na prawd? to samo co operatory arytmetyczne tyle, ?e z wyj?tkiem modulo, w operatorach relacji nie ma modulo.

Rodzaje Zmiennych

Rodzaj zmiennej to nie to samo co typ zmiennej czyli globalna lub lokalna.

String

String to rodzaj zmiennej, string to ci?g znak?w umieszczony w cudzys?owach " " lub apostrofach ' ' - zazwyczaj jest to cudzys??w. String wygl?da nast?puj?co
local string "ciag znakow"
W stringu mo?emy u?ywa? polskich znak?w ?,? itd. Aby przej?? lini? ni?ej w stringu wykorzystujemy zapis
local string "ci?g\nznak?w"
znak \n spowoduje przej?cie do nast?pnej linii. Je?li chcemy umie?ci? jaki? cudzys??w w stringu to niestety jest to nie mo?liwe, natomiast mo?liwe jest zastosowanie apostrof?w
local string "ci?g "znak?w""
takie co? nie zadzia?a,
local string "ci?g 'znak?w'"
natomiast taki zapis jak najbardziej zadzia?a. String mo?emy zapisa? te? w taki spos?b
 local string = [[ci?g znak?w]]
w takim przypadku je?li chcemy zej?? linijk? ni?ej to nie u?yjemy ju? \n tylko po prostu entera
local string = [[ci?g
znak?w]]
Istnieje co? takiego jak funkcja tostring w lua. Mo?na o niej poczyta? w dokumentacji Funkcja tostring

Number

Number to rodzaj zmiennej, number to zmienna liczbowa. Przyk?ad:

local number 4
Istnieje r?wnie? co? takiego jak funkcja tonumber w lua, r?wnie? odsy?am do dokumentacji.
Funkcja tonumber

Boolean

Boolean to rodzaj zmiennej, boolean to zmienna logiczna czyli prawda lub fa?sz true/false Przyk?ad
local boolean true
mo?emy te? zrobi? false. True czy "prawda"/"tak", false czy "fa?sz"/"nie"

Array/Table

Array lub jak kto woli table to rodzaj zmiennej, a konkretnie tabela, przyk?ad
 local array = {}
zmienna 'array' jest tabel? po takiej deklaracji.

Nil

Nil to tak?e rodzaj zmiennej a konkretnie 'pustej' zmiennej czyli nic nie zawieraj?cej, nil to z angielskiego "zero"/"nic".
local puste nil

Function

Function to tak?e rodzaj zmiennej, czyli za pomoc? zmiennej deklarujemy funkcj?.
local funkcja = function() outputChatBox("deklaracja"end
wtedy mo?emy do takiej zmiennej si? odwo?a? za w taki spos?b
funkcja()

Pomocne Linki


Instrukcje Warunkowe

Instrukcje warunkowe ifElse

If

If z angielskiego "gdy"/"je?li", przyk?adowy warunek sprawdzaj?cy czy mamy skin o id 200 to
if getElementModel(plr) == 200 then
ka?y warunek if ko?czymy s?owem "then" czyli z angielskiego "potem"/"wtedy" ka?y if potrzebuje swojego end'a.
 if getElementModel(plr) == 200 then
outputChatBox("200",plr,255,255,255)
end

Else

Else czyli z angielskiego "lub" dzia?a przeciwnie do if'a czyli je?li warunek sprawdza czy mamy skin 200 to else b?dzie przeciwie?stwem wi?c co ma si? sta? je?li go nie mamy.
if getElementModel(plr) == 200 then
outputChatBox("tak",plr)
else
outputChatBox("nie",plr)
end
wyra?enie "else" nie potrzebuje dodatkowego end'a.

Elseif

Elseif czyli z angielskiego "lub je?li" dzia?a przeciwnie do g??wnego if'a. Mo?emy sprawdzi? np czy gracz ma skin 200 je?li tak wtedy da nam 100 hp, je?li ma skina 100 da nam 50 hp. a je?li nie ma ?adnego z nich da nam 20 hp.
 if getElementModel(plr) == 200 then
setElementHealth(plr,100)
elseif getElementModel(plr) == 100 then
setElementHealth(plr,50)
else
setElementHealth(plr,20)
end
elseif tak?e nie potrzebuje dodatkowego end'a. Warunk?w elseif mo?emy da? ile chcemy do danego warunku, ja tylko pokaza?em jedno ale mo?e by? np 5,10,50 itd, natomiast else zawsze jest tylko jedno. Tyczy si? ono g??wnego warunku i wszystkich tak jakby 'podwarunk?w' czyli elseif. To tak jak drzewo, if to korze? drzewa, elseif to ga??zie a else to pie?. g??wny korze? jest tylko jeden, ga??zi jest mn?stwo, pie? jest tylko jeden.

Komentarze

Wyr??niamy dwa rodzaje komentarzy, blokowe/wielo liniowy i liniowe/jedno liniowe.

Liniowe

Komentarz liniowy czyli na jedn? linie, komentarz liniowy zaczynamy znakiem -- czyli dwa minusy. Przyk?ad
function hello() -- funkcja
outputChatBox("witaj ?wiecie!",255,255,255) -- wiadomosc
end -- koniec funkcji
-- to jest komentarz jedno liniowy lub jak kto woli liniowy
komentarzy mo?emy da? ile chcemy.

Blokowe

Komentarz blokowy czy jak kto woli wielo liniowy to komentarz na kilka linii, komentarz taki ma sw?j koniec i pocz?tek. Komentarz blokowy zaczynamy --[[ takim znakiem, czyli dwa minusy i dwa nawiasy kwadratowe, natomiast zamykamy/ko?czymy go tak --]] lub ]] czyli dwa minusy i dwa nawiasy kwadratowe lub same dwa nawiasy kwadratowe.
--[[
To jest komentarz blokowy tutaj pisze co chce i ile chce i jak chce
?ężź????? mogtu napisaco tylko zechc? 
--]]
w komentarzu r?wnie? mo?emy pisa? polskie znaki. Wszystko co jest w komentarzu jest przez kod ignorowane, mo?emy w nim umie?ci? funkcj? i ona zostanie pomini?ta.


My?l?, ?e by?oby to na tyle z tej cz??ci.


Podpis
Moje prace: https://www.youtube.com/c...MuaWGHPp1mhlGnw

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- dawniej
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 10 piw(a):
Citrus, STOPseba, Kalizman, KocurekTiyLife, Kerel, jagoreq, Devileczek, DeeX, MrManiak, Kosma
Wysłany: 2017-08-01, 19:04


Kalizman







Wiek: 23
Na forum: 3651 dni
Posty: 1394

Piwa: 4619

Respekt: 358,8
Respekt: 358,8Respekt: 358,8Respekt: 358,8Respekt: 358,8

Poradnik jak najbardziej na wielki plus!
Kiedy kolejne wydanie? Umie?cisz tam funkcj? destroyElement?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-01, 20:32


_Haze

Peace Yo!






Wiek: 24
Na forum: 4184 dni
Posty: 1648
Nick w MP: Haze

Piwa: 2628

Respekt: 1020
Respekt: 1020

Brawo Marcin, w ko?cu si? postara?e?, bardzo przejrzysty i dobrze zbudowany poradnik. Tylko te ciekawostki to bardziej wiedza przydatna ni? takie ciekawostki. BBCode bardzo fajnie zrobiony. Wszystko po kolei, fajnie t?umaczone. Nie ma si? do czego przyczepi?. Powodzenia w dalszym tworzeniu poraadnik?w. 8-)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-02, 09:13


Kerel

Uczeń Lua






Wiek: 22
Na forum: 3503 dni
Posty: 47
Nick w MP: Kerel

Piwa: 338

Respekt: 50

Fajny poradnik licz? na wi?cej poradnik?w w twoim wykonaniu. Dam Ci R*

Podpis
-- Uczę sie
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-02, 11:56


KocurekTiyLife







Wiek: 25
Na forum: 3627 dni
Posty: 4
Nick w MP: KOCUr.

Piwa: 22

Respekt: 50

Ostrzeżeń: 60%
Pomocny Poradnik
++++ daje :piwo:
licz? na wi?cej

Podpis
============
GG: ✖ 62944654 ✖
Steam : pawelekb
============
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-07, 02:28


.RiV







Wiek: 25
Na forum: 3588 dni
Posty: 554
Nick w MP: Split

Piwa: 2596

Respekt: 597,8
Respekt: 597,8

"Cannabis1995" napisał/a:

Wszystko to mo?na znale?? w wyszukiwarce.


To dlaczego Ty si? nie podzieli?e? takowymi informacjami ? Znajd? takie informacje po Polsku dla os?b kt?re z Angielskim maj? problemy, to zwr?c? honor :)

Podpis

Autor OGRPG, na scenie MTA od 2012 roku.




Użytkownik: 08.08.2016
GTAO Member: 06.02.2017
Support-Team: 17.06.2017 & 01.06.2019 - 18.11.2019
Moderator: 14.01.2018 - 09.08.2018

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-07, 18:16


AteX







Wiek: 26
Na forum: 4015 dni
Posty: 927
Nick w MP: #AteX

Piwa: 8360

Respekt: 775,3
Respekt: 775,3Respekt: 775,3

".WhiteBlue" napisał/a:

"Cannabis1995" napisał/a:

Wszystko to mo?na znale?? w wyszukiwarce.


To dlaczego Ty si? nie podzieli?e? takowymi informacjami ? Znajd? takie informacje po Polsku dla os?b kt?re z Angielskim maj? problemy, to zwr?c? honor :)


Jak osoby maj? problemy z angielskim to mo?e nie powinny bra? si? za skryptowanie/programowanie?
Jednak lepiej czyta? informacje napisane w oryginale, a nie t?umaczone, bo jak wida? po wielu poradnikach w tym dziale to troch? wprowadzaj? w b??d i nie wyja?niaj? do ko?ca dzia?ania ni? jakby si? czyta?o orygina? w j?zyku angielskim.

Cytat:

Operator logiczny "and" co z angielskiego oznacza "oraz"/"i"

Takich informacji to w podstaw?wce ucz?. Wi?c po co si? z tym dzieli??

Podpis
MultiTheftAuto++ dla MTA 1.5.7 już dostępne.
Postaw piwo autorowi tego posta
 

 
Tagi: lua :: kurs :: lekcja :: nr.
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Poradniki do LUA » Lua Kurs Lekcja nr. 3 Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

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
Dodaj temat do Ulubionych
Wersja do druku