Tanga 131 Odesláno: 10. Listopad, 2013 Share Odesláno: 10. Listopad, 2013 • Píšte mi SZ, že čo mám doplniť... Po 7 dňoch už nebudem môcť upraviť príspevok! Úvod: • Si profesionál, ktorý je presvedčený, že tento návod byť dobrý nemôže. Pozri si len to čo potrebuješ, nič lepšie spraviť neviem ajtak. • Si začiatočník, ktorý sa chce naučiť pawn čo najrýchlejšie. Toto je najmenej zábavná časť pawna, ale vedieť ju musíš. Čítaj všetko zaradom.Čo je to pawno: • Pawno je program s ktorým vytváraš veci do GTA. Jazyk, ktorý Pawno používa sa volá Pawn. • Pravdepodobne ho už máš stiahnutý (Pawno) so serverom, ak nie, sťahuj tu. Prvý pohľad: • Pre tento návod budeš musieť upraviť súbor server.cfg v tom čo si stiahol na: echo Executing Server Config... lanmode 1 rcon_password asd maxplayers 5 port 7777 hostname SA-MP 0.3 Server gamemode0 Ucenie filterscripts announce 0 query 1 chatlogging 0 weburl www.sa-mp.com onfoot_rate 40 incar_rate 40 weapon_rate 40 stream_distance 300.0 stream_rate 1000 maxnpc 0 logtimeformat [%H:%M:%S] • Pravdepodobne si už otvoril aj nejaký ten skript, ak nie, choď do rozbaleného priečinka čo si stiahol, zložka pawno a otvor pawno.exe. Potom klikni vlavo hore na taký prázdny papier, čím otvoríš nový projekt. • Pre začatie programovania odtiaľ všetko zmaž a prilep tam toto:toto ešte nie je hrateľný mód, len vysvetlenie #include <a_samp> main() { print("Tvoj server funguje!!!"); return 1; } • Stlač F5 a vyskočí ti okno kam chceš súbor uložiť. Vyber priečinok gamemode v tom čo si stiahol a ulož to s názvom Uceniebez mäkčeňa. Vyskočí ti okno s textom Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase - to len znamená, že súbor bol zakódovaný, aby ho vedel server prečítať. Ak ti tam zobrazuje niečo iné než tento text, je to buď chyba, alebo varovanie. • Spusti program samp-server.exe a vyskočí ti čierne okno s nejakými textami. To je tvoj server. Vidíš, že funguje. Môžeš ho zavrieť. • Riadok s príkazom print() zobrazuje správu v tom čiernom okne, tiež známom ako konzola, alebo server, alebo čierne okno . Čo je čo - syntax:tvorba textu • Pri písaní "bloku" (dovtípiš sa nižšie) je vždy nutné ho vytvoriť aj zavrieť zátvorkami {, }.• Príkaz: • Príkaz sa píše v tvare: príkaz(argument); // argument je to s čím príkaz pracuje • To je napríklad print. Tvar príkazu print je: print(text); • Základná podmienka: • Základná podmienka - vykoná sa nejaký príkaz len v prípade, že sa niečo stane. Má nasledujúcu formu if (podmienka) // if = ak (z angličtiny) { príkaz(argument); } else if (podmienka) { príkaz(argument); } ... • Cyklus: • Cyklus je niečo, čo sa opakuje viac krát. Zatiaľ si uvedieme tiež len jeden typ - cyklus while (z angličtiny = "pokial"). Má takýto tvar: while (základnápodmienka) // Pokial platí podmienka, bude sa to opakovať { príkaz(argument); } • Rozdiel medzi podmienkou a cyklom - podmienka sa vykoná len raz a kód pokračuje ďalej, cyklus sa opakuje kým platí základná podmienka a ďalší kód sa dovtedy nevykoná. • Premenná: • Premenná je niečo, čo má nejakú hodnotu. Premenná môže byť "auto" a mať hodnotu "20€", ak je to Škoda 120. Môže byť "Meno hráča" a mať hodnotu "Tango". Použitie new premenna = hodnota; // Textové premenné vysvetlujem nižšie. • Príklady na premenné: new auto = 500; new rychlost = 120; new preplatok = 1; new dlh = 984654896541968156478946541654687435468468796512321035746841318463249684632168798432169749685146984651; new znamka = 5; • Konštanta:Toto si nemusíš čítať • Doom bol poriadne podvedený - údajne mu povedali, že v pawn nie sú konštantné, odkazujem tím čo to povedali - "...". • Ak vytvárate niečo, čo sa nikdy nemení, je rýchlejšie a efektívnejšie použiť konštantu. • Konštanta je niečo, čo má stálu hodnotu - nemení sa. Zapisuje sa takto: new const konstanta = hodnota; • Ako napríklad: new const gravitacia = 9,81; new const tangoveIQ = 160; * Dá sa vytvoriť aj pomocou #define. • String: • String z angličtiny znamená reťazec. • Predstav si premennú. Niečo = niečo. Predstav si tabulku - dva stĺpce. V prvom stĺpci je meno premennej a v druhom hodnota. Akokeby tým, že vytvoríš premennú jej pridelíš jednu bunku do ktorej sa potom zapisuje (len jedno číslo na jednu premennú). Tak a text funguje na tom istom princípe. Predstav si, že každý znak má jeden štvorček v ktorom je uložený... Povedzme, že je premenná X s textom a slovo "slovo" by teda potrebovalo 5 štvorčekov - na každé písmeno jedno. Teda v tabulke v riadku X by bolo 5 štvorčekov. • Definovanie textu vyzerá takto: new premenna[pocetznakov]; premenna = "hodnota"; // treba dať do úvodzoviek • A použitie: #include <a_samp> main() { new text[4]; text = "ahoj"; printf("%s", text); // AK nevieš prečo %s, kukni môj návod na FORMAT return 1; } • Reálne číslo:Aj s desatinnou čiarkou • Nie všade sa uspokojíš s číslom bez desatinnej čiarky. Napríklad poloha hráča je uložená presne na viac desatinných čísel. Ak chceš vytvoriť takú premenú, použi: new Float:premenna = hodnota; • Práca s premennými: 1. Premena textu na celé číslo - číselnápremenná = strval(textovápremenná). 2. Premena celého čísla na text - valstr(textovápremenná, číselná).3. Zaokrúhlenie desatinného čísla - číselnápremenná = floatround(desatinnápremenná, floatround_round). • Čo je to funkcia: • To je ako ten main v príkladoch hore - funkcia je niečo, čo vracia po vykonaní hodnotu. Return z angličtiny znamená návrat - keď sa vykoná blok funkcie main, vráti hodnotu - 1 - je to funkcia. Prvé programovanie: • Vždy keď dopíšeš tento kód, stlač F5 a spusti samp-server.exe - konzolu. • Pod programovaním myslím upravovanie kódu Ucenie, ktorý si vytvoril na začiatku. • Najprv si vyskúšaš, že ako to funguje - jednoduchý program, ktorý len pričituje číslo. Použije sa cyklus while. #include <a_samp> main() { new i = 0; while (i < 5000) // dokým i je menšie než 5000 { i = i + 1; printf("%d",i); // Toto je spôsob napísania hodnoty premennej. Keď si dočítate tento návod, pozrite si návod v mojom podpise FORMAT } return 1; } • Ďalej príklad, ktorý zmení hodnotu konštanty: #include <a_samp> main() { new const i = 0; while (i < 5000) // dokým i je menšie než 5000 { i = i + 1; printf("%d",i); } return 1; } • Vypísalo ti error 022: must be lvalue (non-constant) pri stlačení F5? Dobre, to znamená, že konštanta sa nedá upravovať. (spravil si to správne) • Teraz skúsme nejaké matematické operácie:môžeš si to robiť sám, ja ti len ukazujem ako by som toto spravil ja #include <a_samp> main() { new prvecislo = 1; new druhecislo = 2; new tretiecislo = prvecislo + druhecislo; new const vysledok = tretiecislo + 15; // Tu ti nevyhodí error, že konštantu meníš, pretože tu ju vytváraš printf("%d", vysledok + 10); // Tu ti tiež nevyhodí error, vypíše 28, lebo konštantu nezmení, len vypíše číslo o 10 väčšie new styri = 2 * 2; printf("%d", styri / 2); // Vypíše 2 return 1; } Teraz už normálny kód z SAMP: #include <a_samp> public OnPlayerConnect(playerid) { SendClientMessage(playerid, 0xFFFFFFAA, "Vitaj, hráč, posielam ti správu!"); return 1; } • Presne tak... To je všetko z syntaxe jazyka pawn. Jediné čo treba už len naspamäť vedieť tieto publicy. Matematické a logické operátory:Do rite nejde mi sem dať normálnu velkosť! • Matematické operátory sú tie, ktoré používaš v matematike - znamienka. A logické sú tie, čo používaš v podmienkach. K tomu nemám moc čo dodať, akurát kompletný kód. #include <a_samp> main() { new prvecislo = 1; new druhecislo = 2; new tretiecislo = prvecislo + druhecislo; // 3 druhecislo = druhecislo + 1; // 3 druhecislo += 1; // 3 - pričítanie o jedna druhecislo++; // 4 - pričítanie o jedna druhecislo -= 2; // 2 - odčítanie dvoch druhecislo--; // 1 - odčítanie jedného druhecislo *= 5; // 5 - vynásobí číslo piatimi druhecislo /= 5; // 1 - vydelí číslo piatimi new i = 0; while (i < 2) { druhecislo++; i++; } // druhecislo = 3 if (druhecislo <= tretiecislo) // ak druhé číslo je menšie, alebo rovné tretiemu { if (druhecislo == tretiecislo) // POZOR: AK JE TO V PODMIENKE, ==, AK CHCEŠ ZMENIŤ PREMENNÚ TAK = { print("Tento vysledok nikdy neziskas."); } } if ((druhecislo == 5) && (1 == 1)) { } return 1; } Otázky a odpovede: • Čo je to #include čo sa hore píše? To je vloženie kódu do tvojho kódu. Napríklad a_samp je kód, ktorý obsahuje funkcie zo sa-mp - napríklad poslanie správy - počítač totiž nevie čo to je bez a_samp. Môžeš si stiahnuť include policajné zbrane a príkazom PridajZbran() niekomu pridáš zbraň... • Únikové znaky: • Únikové znaky to sú tie divné veci začínajúce lomítkom. Únikový znak je skratka pre niečo, čo by bol problém zapísať.• Únikový znak vpíšeš do textu normálne akoby dve písmená.• Môžete použiť napr.: "\n" čo je znak na nový riadok, "\a" čo je znak na pípnutie, "\b" čo je backspace, "\t" je tabulátor... Šak si ich vygooglite . #include <a_samp> main() { print("\aPrave som pipol"); return 1; } • Ak máš otázku, prosím pošli mi ju v SZ, aby sa nezaspamoval tento topic. Dakujem . Časté chyby: • warning 211: possibly unintended assignment - namiesto == si dal do podmienky =... • warning 217: loose indentation - zle si to odriadkoval - chýba medzera, alebo tak... • warning 201: redefinition of constant/macro - snažíš sa definovať niečo, čo už je. Predto daj riadok #undef PREMENNA • error 030: compound statement not closed at the end of file (started at line 5) - na konci kódu si neukončil podmienku. • error 003: declaration of a local variable must appear in a compound block - chýba ti dakde zátvorka {. • error 010: invalid function or declaration - neznáma funkcia - najčastejšie pri chýbajúcej zátvorke, alebo pri preklepe. • Ak ti nejaká častá chyba napadne, pošli mi to v SZ, aby tu nebol zaspamovaný topic. Ďakujem . Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný Link to comment Share on other sites More sharing options...
LORD BENDTNER 0 Odesláno: 10. Listopad, 2013 Share Odesláno: 10. Listopad, 2013 Moc pekne Ale má to jeden hačil Pawn sa da použit aj v csku Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 10. Listopad, 2013 Author Share Odesláno: 10. Listopad, 2013 Myslel som, že to niekto napíše :).Díky . Link to comment Share on other sites More sharing options...
Boss 1 Odesláno: 10. Listopad, 2013 Share Odesláno: 10. Listopad, 2013 Celkom pekny TUT pre začiatočnikov zide sa Link to comment Share on other sites More sharing options...
Lax. 28 Odesláno: 10. Listopad, 2013 Share Odesláno: 10. Listopad, 2013 Asi najlepší návod čo si tu zatiaľ napísal, len... main(){print("Tvoj server funguje!!!"); // v print nesmieš použiť mäkčenereturn 1; } - mäkčene tam použiť môžeš. Inak good.. Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 10. Listopad, 2013 Author Share Odesláno: 10. Listopad, 2013 Aha, to som nevedel.. V C čku som mal taký zvyk, že to nešlo... Link to comment Share on other sites More sharing options...
TnS 0 Odesláno: 15. Listopad, 2013 Share Odesláno: 15. Listopad, 2013 Pekný tutorialik. Dík. Prečítam si .. Link to comment Share on other sites More sharing options...
Amenadiel 286 Odesláno: 15. Listopad, 2013 Share Odesláno: 15. Listopad, 2013 PAAAWNNN NENÍÍÍ JAAAZYYYK! Link to comment Share on other sites More sharing options...
Albus Brambůrek 41 Odesláno: 15. Listopad, 2013 Share Odesláno: 15. Listopad, 2013 PAAAWNNN NENÍÍÍ JAAAZYYYK! Asi tě zklamu ale je každý ať scriptovací nebo přímo OOP programovací jazyk je jazykem Link to comment Share on other sites More sharing options...
rhsCZ 19 Odesláno: 15. Listopad, 2013 Share Odesláno: 15. Listopad, 2013 • Príkaz: Spoiler • Príkaz sa píše v tvare: príkaz(argument); // argument je to s čím príkaz pracuje • To je napríklad print. Tvar príkazu print je: print(text); to nejsou příkazy ale funkce skriptovacího jazyka pawn Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 16. Listopad, 2013 Author Share Odesláno: 16. Listopad, 2013 Hej, nižšie to rozoberám, že funkcie a príkazy....Neviem či explicitne, ale niekde sa dole dá naraziť na to, že príkaz čo vracia hodnotu je funkcia.Dík za opravu . Link to comment Share on other sites More sharing options...
ATomas 286 Odesláno: 17. Listopad, 2013 Share Odesláno: 17. Listopad, 2013 Sice ocenuji tvoji dobre minenou myslenku, ale musim upozornit na par nepresnosti... 1. príkaz(argument); "prikaz" je celkem matouci, radci bych pouzil slovo "funkce". Pod príkazem si každý představí "/command" 2. if (podmienka) // if = ak (z angličtiny) { príkaz(argument); } else if (podmienka) { príkaz(argument); } je to matouci muzu pouzit: if(podminka) { promena++; } nikde jsem nepouzil funkci, ale taky je to spravne, takze bych to spis napsal jako: if (podmienka) // if = ak (z angličtiny) { //kod } else if (podmienka) { //kod } navic jsi nikomu nevysvetlil jak tam funguje to else, aby si ho zacatecnik nezacal psat za kazdou druhou podminku a pak se divil proc mu to nedela to co on chce. 3. new const gravitacia = 9,81; v pawnu se pouziva desetina tecka a ne desetina carka. 4. co se tyce cyklu, tak jsi opomenul cyklus for, ktery se vyuziva casteji nez while. Protoze se s nim pohodlneji pracuje, kdyz je treba prochazet napriklad promenou typu array. 5. new dlh = 984654896541968156478946541654687435468468796512321035746841318463249684632168798432169749685146984651; pawno umi jen do 2 147 483 647 Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 17. Listopad, 2013 Author Share Odesláno: 17. Listopad, 2013 1. Dík to mi nenapadlo 2. Dobrý nápad3. Áha, no jasne .4. Chcem spraviť návod na for samostatne, keďže je tak využívaný.5. To bol len vtip, že dlh je taký velký . Ináč ani na 64-bitovom PC by mi nezobralo viac než 2147483647? Toto som nevedel. Link to comment Share on other sites More sharing options...
Albus Brambůrek 41 Odesláno: 17. Listopad, 2013 Share Odesláno: 17. Listopad, 2013 Sice ocenuji tvoji dobre minenou myslenku, ale musim upozornit na par nepresnosti... 1. príkaz(argument); "prikaz" je celkem matouci, radci bych pouzil slovo "funkce". Pod príkazem si každý představí "/command" 2. if (podmienka) // if = ak (z angličtiny) { príkaz(argument); } else if (podmienka) { príkaz(argument); } je to matouci muzu pouzit: if(podminka) { promena++; } nikde jsem nepouzil funkci, ale taky je to spravne, takze bych to spis napsal jako: if (podmienka) // if = ak (z angličtiny) { //kod } else if (podmienka) { //kod } navic jsi nikomu nevysvetlil jak tam funguje to else, aby si ho zacatecnik nezacal psat za kazdou druhou podminku a pak se divil proc mu to nedela to co on chce. 3. new const gravitacia = 9,81; v pawnu se pouziva desetina tecka a ne desetina carka. 4. co se tyce cyklu, tak jsi opomenul cyklus for, ktery se vyuziva casteji nez while. Protoze se s nim pohodlneji pracuje, kdyz je treba prochazet napriklad promenou typu array. 5. new dlh = 984654896541968156478946541654687435468468796512321035746841318463249684632168798432169749685146984651; pawno umi jen do 2 147 483 647 ATomasi chtěl bych se zeptat jaký je rozdíl nebo jak se používá const Link to comment Share on other sites More sharing options...
ATomas 286 Odesláno: 17. Listopad, 2013 Share Odesláno: 17. Listopad, 2013 ATomasi chtěl bych se zeptat jaký je rozdíl nebo jak se používá const Jak bylo receno, je to pevne nastavena hodnota promene, kterou nelze zmenit. Ovsem nevidim tam vyuziti, osobne pouzivam define, protoze to zmeni tu hodnotu pri kompilaci, tedy je to rychlejsi nez tu promenou hledat v pameti. Ale mozna je to pozustatek ze starych jazyku, treba pascal zadne define nema tam vyuziti constanty nejake je Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 17. Listopad, 2013 Author Share Odesláno: 17. Listopad, 2013 ATOMAS:Ja by som to const ani neuvádzal, lenže DOOMa raz potrollili, že const neexistuje..Chcel som napísať define, ale tam explicitne nevidieť, že je to konštanta, tak som použil const.Osobne by som const v živote nepoužil, define zriedka . Link to comment Share on other sites More sharing options...
DooM 93 Odesláno: 17. Listopad, 2013 Share Odesláno: 17. Listopad, 2013 Nepotrolili mě, protože jsem psal o konstantě z PHP a všichni si mysleli, že je řeč o pawn. Link to comment Share on other sites More sharing options...
ATomas 286 Odesláno: 19. Listopad, 2013 Share Odesláno: 19. Listopad, 2013 Vlastne jsem si vzpomel k cemu by se const dal vyuzit Kdyz mas nejakou funkci, do ktere odesilat nejaky udaj, a potrebujes udelat, aby ten udaj nesel zmenit. V podstate const je takova pojistka proti tomu, aby sis ty sam omylem neco nezmenil, kdyz to menit nechces. V podstate te pak compiler upozorni, ze upravujes neco, u ceho sis upravu bloknul. treba: stock fce(const parametr) { parametr = 5;//tady by ti to mnelo hodit chybu.. return 1; } Link to comment Share on other sites More sharing options...
Albus Brambůrek 41 Odesláno: 19. Listopad, 2013 Share Odesláno: 19. Listopad, 2013 Vlastne jsem si vzpomel k cemu by se const dal vyuzit Kdyz mas nejakou funkci, do ktere odesilat nejaky udaj, a potrebujes udelat, aby ten udaj nesel zmenit. V podstate const je takova pojistka proti tomu, aby sis ty sam omylem neco nezmenil, kdyz to menit nechces. V podstate te pak compiler upozorni, ze upravujes neco, u ceho sis upravu bloknul. treba: stock fce(const parametr) { parametr = 5;//tady by ti to mnelo hodit chybu.. return 1; } Tak to se celkem hodí ještě bych se chtěl zeptat když definuji u stocku nebo u publicu nějaké no dám příklad... stock GetPlayerStats(playerid,money=-1) Když tam nedám money a použiji to takto : GetPlayerStats(playerid) tak mi to doplní automaticky hodnotu -1 ale co když tam těch proměnných mám více ? Jak se pawn zachová .. Když použiji: stock GetPlayerStats(playerid,money=-1,points=-1) A co když to použiji takto: GetPlayerStats(playerid,/*Tady jakože money*/,100); A jak se pawn zachová bude to brát jako money nebo points Link to comment Share on other sites More sharing options...
ATomas 286 Odesláno: 19. Listopad, 2013 Share Odesláno: 19. Listopad, 2013 Pokud tam mas vice "defaltnich" parametru. A potrebujes nejaky preskocit, tak to nejde. Musis ho zadat. Jinak to bere jak oten dalsi parametr. GetPlayerStats(playerid,100);//money = 100 points = -1; GetPlayerStats(playerid,-1,100);//money = -1 points = 100; Link to comment Share on other sites More sharing options...
Tanga 131 Odesláno: 19. Listopad, 2013 Author Share Odesláno: 19. Listopad, 2013 Vlastne jsem si vzpomel k cemu by se const dal vyuzit Kdyz mas nejakou funkci, do ktere odesilat nejaky udaj, a potrebujes udelat, aby ten udaj nesel zmenit. V podstate const je takova pojistka proti tomu, aby sis ty sam omylem neco nezmenil, kdyz to menit nechces. V podstate te pak compiler upozorni, ze upravujes neco, u ceho sis upravu bloknul. --------------- Ináč to mám napísané aj v tom príspevku hore xDDDDDDDDDDDDDDDDD. Isigar píš si SZ a nie také veci čo sú dokonca napísané hore... Link to comment Share on other sites More sharing options...
Hlavní moderátor vEnd 279 Odesláno: 9. Prosinec, 2013 Hlavní moderátor Share Odesláno: 9. Prosinec, 2013 Pokud tam mas vice "defaltnich" parametru. A potrebujes nejaky preskocit, tak to nejde. Musis ho zadat. Jinak to bere jak oten dalsi parametr. GetPlayerStats(playerid,100);//money = 100 points = -1; GetPlayerStats(playerid,-1,100);//money = -1 points = 100; jde to: GetPlayerStats(playerid,.points = 99); //money zůstane -1, points bude 99 tím, že před parametr uvedeme tečku, pak jeho identifikátor a nakonec mu přiřadíme hodnotu, kterou chceme, můžeme vynechat defaultní parametry, které jsou před ním (použití je uvedeno třeba zde, u této fce jsou všechny parametry defaultní, tudíž je zde pěkně vidět, že pomocí tohoto můžeme porušit pořadí parametrů) toto ale opravdu nepatří do tutoriálu pro začátečníky, omlouvám se autorovy, jen jsem chtěl podotknout, že to, na co se Isigar ptal, je možné Link to comment Share on other sites More sharing options...
Amenadiel 286 Odesláno: 10. Prosinec, 2013 Share Odesláno: 10. Prosinec, 2013 jde to: GetPlayerStats(playerid,.points = 99); //money zůstane -1, points bude 99 tím, že před parametr uvedeme tečku, pak jeho identifikátor a nakonec mu přiřadíme hodnotu, kterou chceme, můžeme vynechat defaultní parametry, které jsou před ním (použití je uvedeno třeba zde, u této fce jsou všechny parametry defaultní, tudíž je zde pěkně vidět, že pomocí tohoto můžeme porušit pořadí parametrů) toto ale opravdu nepatří do tutoriálu pro začátečníky, omlouvám se autorovy, jen jsem chtěl podotknout, že to, na co se Isigar ptal, je možné A já už myslel že nikdy nepříjdeš Link to comment Share on other sites More sharing options...
ATomas 286 Odesláno: 12. Prosinec, 2013 Share Odesláno: 12. Prosinec, 2013 --------------- Ináč to mám napísané aj v tom príspevku hore xDDDDDDDDDDDDDDDDD. Isigar píš si SZ a nie také veci čo sú dokonca napísané hore... Ne tohle tam nemas Ty tam mas pouze definovanou promenou, coz jsem rikal ze tam nevidim vyuziti kdyz existuje define, ktery se prepisuje pri kompilaci. Takze jedine vyuziti const vydim v callbacku, ale opet jen jako antiblbostni pojistku Link to comment Share on other sites More sharing options...
NoJo_ 0 Odesláno: 18. Prosinec, 2013 Share Odesláno: 18. Prosinec, 2013 Good Work Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now