StalkerCell
26 paź 2013, 16:08
Posty: 7• Strona 1 z 1
Stalker Zew Prypeci – dodawanie zadań z wykorzystaniem własnego skryptu
Jak wiadomo Stalker Cień Czarnobyla ma inną strukturę plików niż Zew Prypeci. Właśnie przez to nie mogłem dodać questów (sugerowałem się tutorialami pod Cień). Szukałem i znalazłem w sieci post użytkownika z AMK Team – XMK. Przestudiowałem najważniejsze pliki i dodałem nowy quest. Z chęci pomocy przerobiłem jego tutorial i tym sposobem mamy poradnik na stalker.pl. Dodam, że nie jest to tutorial do dodawania zadań zaawansowanych skryptowo – jest to zupełnie ogólny poradnik. Więc zaczynajmy.
Po pierwsze podam pliki, które będziemy przerabiać lub pisać od nowa:
*dialogs_zaton (gamedata>configs>gameplay) szkielet drzewka dialogowego,
*info_zaton (gamedata>configs>gameplay) infoportion dla lokacji w której robimy zadanie (tu Zaton),
*character_desc_zaton (gamedata>configs>gameplay) plik, w którym dodamy dialog do postaci,
*st_dialogs_zaton (gamedata>configs>text>pol) teksty dialogu,
*st_quest_zaton (gamedata>configs>text>pol) opis zadania,
*tm_zaton (gamedata>configs>misc) plik, w którym musimy dodać sekcję zadania,
*nowy skrypt (gamedata>scripts) skrypt, który sami napiszemy w celu zdefiniowania akcji dialogu,
Polecam edytować pliki tekstowe za pomocą Notepad++, ponieważ otwarte pliki mamy w przyborniku (lub jak kto woli - zakładce).
Nasze zadanie polegać będzie na przyniesieniu kiełbasy Sowie.
1. Otwieramy plik st_dialogs_zaton by napisać tekst dialogu. Najlepiej od tego zacząć, gdyż będzie prościej w późniejszej części. Piszemy na przykład to (Sowa, Major):
M:Mogę w czymś pomóc?
S:Tak. Przynieś mi kiełbasę. Jestem bardzo głodny, a nie chce mi się iść do Brodacza... Wynagrodzę cię.
M:Zgoda.
Będzie to dialog, w którym dostaniemy informację o zadaniu. Jednak musimy napisać frazę taką, by gra rozpoznała dialog. Przykładowa forma tego dialogu będzie taka:
Mamy dialog rozpoczynający. Teraz musimy napisać zakańczający. Jego przykładowa, poprawna forma:
Tutaj uwagę zwróćcie na <string id="...">. W części początkującej dialog zadania było to <string id="kolbasa_dialog_0"> a w części kończącej dialog zadania - <string id="kolbasa_end_0">. Dlaczego jest to takie ważne? Ano dlatego, że kolbasa_dialog i kolbasa_end to inne dialogi. Lepiej będzie jak omówimy poszczególne części dialogu:
*<string id="kolbasa_dialog_0">, <string id="kolbasa_end_0"> - "link" do dialogu w pliku dialogs_zaton,
*1, 2, 3 - numery dialogu (muszą być, by dobrze zdefiniować drzewko dialogu),
*<text></text> - miejsce do wpisania tekstu,
*</string> - zakończenie sekcji,
2. Przechodzimy do pliku dialogs_zaton. Dodajemy - najlepiej na końcu - tą oto frazę:
Jest to część dialogu początkującego zadanie. Na razie to tylko dialog, później po dopisaniu funkcji będzie to dialog właściwy pod zrobienie zadania. Skupmy się na części kończącej dialog:
Opiszę funkcję poszczególnych fraz:
*<dialog id="kolbasa_dialog">, <dialog id="kolbasa_end"> - "link" do pliku character_desc_zaton, sekcja dialogu,
*</dialog> - zakończenie sekcji dialogu,
*<phrase_list> - lista dialogu ( dla początkującego i kończącego zadanie osobna),
*</phrase_list> - koniec listy dialogu,
*<phrase id="..."> - "link" frazy,
*</phrase> - zakończenie linku frazy,
*<text></text> - "link" do dialogu w pliku st_dialogs_zaton,
*<next></next> - następna fraza,
*1, 2, 3 - "linki" fraz,
3. Przechodzimy do pliku character_desc_zaton i znajdujemy sekcję Sowy (początek pliku). Szukamy sekcji supplies i pod nią dopisujemy:
Możemy zobaczyć, czy sam dialog działa. Wchodzimy do gry i klikamy "F" przy Sowie. Wywala? Przeczyjajcie loga. Nie pamiętam, jakie logi były, ale możemy zastosować manewr przyklejając:
pod:
Jeżeli nadal wywala pokombinuj z przeklejaniem, lub podaj loga na stalker.pl w temacie tutoriala.
Hmm, widzimy <actor_dialog> i <start_dialog>. Co one mogą oznaczać? <actor_dialog> oznacza, że dialog rozpoczyna gracz, zaś<start_dialog> oznacza, że rozpoczyna NPC. Osądzić można to na podstawie wpisu w st_dialogs_zaton:
Jest to pierwsze zdanie w tym dialogu. Tak samo jest z kolbasa_end_0.
4. Czas na dopisywanie funkcji i napisanie skryptu. Wchodzimy w plik dialogs_zaton. Szukamy sekcji napisanego dialogu.
gdzie:
*<dont_has_info>quest_kolbasa_done</ dont_has_info> - to jeden z warunków pojawienia się dialogu,
*<dont_has_info>quest_kolbasa_give</ dont_has_info> - drugi warunek pojawienia się dialogu w menu,
*<give_info>quest_kolbasa_give</ give_info> - wpis kontrolujący infoprtion,
*<action>nowy_skrypt.give_kolbasa_quest</ action> - wpis w nowo utworzonym skrypcie oznaczający iż dostaliśmy zadanie,
*<action>dialogs.break_dialog</action> - wpis ten ucina dialog tak, by nie zapętlał się (powtarzał),
gdzie:
*<precondition>nowy_skrypt.actor_has_kolbasa</precondition> -warunek pojawienia się dialogu,
*<has_info>quest_has_kolbasa</ has_info> - wpis kontrolujący infoportion,
*<action>nowy_skrypt.transfer_kolbasa_to_owl</ action> - funkcja dająca przedmiot Sowie,
*<give_info>quest_kolbasa_done</ give_info> - wpis kontrolujący infoportion,
Mamy dialog z funkcjami, teraz pora na napisanie skryptu. Przechodzimy do folderu "scripts" i tworzymy skrypt o dowolnej nazwie. Pamiętajmy, że skrypt musi mieć taką samą nazwę jak funkcje w drzewku dialogowym!!! Jest to cholernie ważne. W pliku utworzonego skryptu wpisujemy to:
Funkcje skryptu:
*function give_kolbasa_quest - jak sama nazwa mówi otrzymaliśmy quest,
*actor_has_kolbasa - funkcja, która wie, czy mamy kiełbasę czy nie (albo zaktualizowano zadania, alebo szukamy dalej),
* function transfer_kolbasa_to_owl(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "kolbasa")
- funkcja dzięki której możemy ukończyć zadanie,
*dialogs.relocate_money_to_actor - funkcja dająca nagrodę (dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000) ta funkcja daje 5000 Rubli, a ta:
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 6)
daje sześć sztuk bandaży.
5. Wchodzimy do pliku info_zaton. Wpisujemy tam (najlepiej na samym dole) te frazy:
Pliki te odnoszą się do zapisu w pliku dialogs_zaton.
6. Wchodzimy do pliku tm_zaton. Wpisujemy poniższą frazę:
Funkcje fraz:
*icon = ui_inGame2_Put_v_pripyat - ikonka zadania, można wybrać inną,
*prior = 2 - zdanie przed zdaniem, w którym wzięliśmy zadanie, ja to usuwałem i zadanie działało,
*storyline = false - jeżeli jest to zadanie fabularne wpisujemy "true", jeżeli nie - "false",
*title = {= actor_has_item (kolbasa)} kolbasa_owl_prinesti_name, kolbasa_owl_naiti_name - nazwy zadania (prinesti = przynieś, naiti = znajdź) w pliku st_quest_zaton,
*descr = kolbasa_owl_descr - opis zadania w pliku st_quest_zaton,
*target = {= actor_has_item (kolbasa)} zat_b30_owl_stalker_trader - cel i klient, do którego ma trafić,
*condlist_0 = {+ quest_kolbasa_done} complete - fraza ta powoduje zaliczenie zadania
Mam nadzieję, że przyda się komuś ten tutek.
All Rights Reserved
Jak wiadomo Stalker Cień Czarnobyla ma inną strukturę plików niż Zew Prypeci. Właśnie przez to nie mogłem dodać questów (sugerowałem się tutorialami pod Cień). Szukałem i znalazłem w sieci post użytkownika z AMK Team – XMK. Przestudiowałem najważniejsze pliki i dodałem nowy quest. Z chęci pomocy przerobiłem jego tutorial i tym sposobem mamy poradnik na stalker.pl. Dodam, że nie jest to tutorial do dodawania zadań zaawansowanych skryptowo – jest to zupełnie ogólny poradnik. Więc zaczynajmy.
Po pierwsze podam pliki, które będziemy przerabiać lub pisać od nowa:
*dialogs_zaton (gamedata>configs>gameplay) szkielet drzewka dialogowego,
*info_zaton (gamedata>configs>gameplay) infoportion dla lokacji w której robimy zadanie (tu Zaton),
*character_desc_zaton (gamedata>configs>gameplay) plik, w którym dodamy dialog do postaci,
*st_dialogs_zaton (gamedata>configs>text>pol) teksty dialogu,
*st_quest_zaton (gamedata>configs>text>pol) opis zadania,
*tm_zaton (gamedata>configs>misc) plik, w którym musimy dodać sekcję zadania,
*nowy skrypt (gamedata>scripts) skrypt, który sami napiszemy w celu zdefiniowania akcji dialogu,
Polecam edytować pliki tekstowe za pomocą Notepad++, ponieważ otwarte pliki mamy w przyborniku (lub jak kto woli - zakładce).
Nasze zadanie polegać będzie na przyniesieniu kiełbasy Sowie.
1. Otwieramy plik st_dialogs_zaton by napisać tekst dialogu. Najlepiej od tego zacząć, gdyż będzie prościej w późniejszej części. Piszemy na przykład to (Sowa, Major):
M:Mogę w czymś pomóc?
S:Tak. Przynieś mi kiełbasę. Jestem bardzo głodny, a nie chce mi się iść do Brodacza... Wynagrodzę cię.
M:Zgoda.
Będzie to dialog, w którym dostaniemy informację o zadaniu. Jednak musimy napisać frazę taką, by gra rozpoznała dialog. Przykładowa forma tego dialogu będzie taka:
Kod: Zaznacz cały
<string id="kolbasa_dialog_0">
<text> Mogę w czymś pomóc? </text>
</string>
<string id="kolbasa_dialog_1">
<text>Tak. Przynieś mi kiełbasę. Jestem bardzo głodny, a nie chce mi się iść do Brodacza... Wynagrodzę cię.</text>
</string>
<string id="kolbasa_dialog_2">
<text>Zgoda.</text>
</string>Mamy dialog rozpoczynający. Teraz musimy napisać zakańczający. Jego przykładowa, poprawna forma:
Kod: Zaznacz cały
<string id="kolbasa_end_0">
<text> Mam kiełbasę </text>
</string>
<string id="kolbasa_end_1">
<text>Dzięki ci bardzo! Nie wiesz nawet jak mi pomogłeś. Trzymaj nagrodę.</text>
</string>
<string id="kolbasa_end_2">
<text>Również dzięki.</text>
</string>Tutaj uwagę zwróćcie na <string id="...">. W części początkującej dialog zadania było to <string id="kolbasa_dialog_0"> a w części kończącej dialog zadania - <string id="kolbasa_end_0">. Dlaczego jest to takie ważne? Ano dlatego, że kolbasa_dialog i kolbasa_end to inne dialogi. Lepiej będzie jak omówimy poszczególne części dialogu:
*<string id="kolbasa_dialog_0">, <string id="kolbasa_end_0"> - "link" do dialogu w pliku dialogs_zaton,
*1, 2, 3 - numery dialogu (muszą być, by dobrze zdefiniować drzewko dialogu),
*<text></text> - miejsce do wpisania tekstu,
*</string> - zakończenie sekcji,
2. Przechodzimy do pliku dialogs_zaton. Dodajemy - najlepiej na końcu - tą oto frazę:
Kod: Zaznacz cały
<dialog id="kolbasa_dialog">
<phrase_list>
<phrase id="0">
<text>kolbasa_dialog_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>kolbasa_dialog_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>kolbasa_dialog_2</text>
</phrase>
</phrase_list>
</dialog> Jest to część dialogu początkującego zadanie. Na razie to tylko dialog, później po dopisaniu funkcji będzie to dialog właściwy pod zrobienie zadania. Skupmy się na części kończącej dialog:
Kod: Zaznacz cały
<dialog id="kolbasa_end">
<phrase_list>
<phrase id="0">
<text>kolbasa_end_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>kolbasa_end_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>kolbasa_end_2</text>
</phrase>
</phrase_list>
</dialog> Opiszę funkcję poszczególnych fraz:
*<dialog id="kolbasa_dialog">, <dialog id="kolbasa_end"> - "link" do pliku character_desc_zaton, sekcja dialogu,
*</dialog> - zakończenie sekcji dialogu,
*<phrase_list> - lista dialogu ( dla początkującego i kończącego zadanie osobna),
*</phrase_list> - koniec listy dialogu,
*<phrase id="..."> - "link" frazy,
*</phrase> - zakończenie linku frazy,
*<text></text> - "link" do dialogu w pliku st_dialogs_zaton,
*<next></next> - następna fraza,
*1, 2, 3 - "linki" fraz,
3. Przechodzimy do pliku character_desc_zaton i znajdujemy sekcję Sowy (początek pliku). Szukamy sekcji supplies i pod nią dopisujemy:
Kod: Zaznacz cały
<actor_dialog>kolbasa_dialog</actor_dialog>
<actor_dialog>kolbasa_end</actor_dialog>Możemy zobaczyć, czy sam dialog działa. Wchodzimy do gry i klikamy "F" przy Sowie. Wywala? Przeczyjajcie loga. Nie pamiętam, jakie logi były, ale możemy zastosować manewr przyklejając:
Kod: Zaznacz cały
<actor_dialog>kolbasa_dialog</actor_dialog>
<actor_dialog>kolbasa_end</actor_dialog>pod:
Kod: Zaznacz cały
<start_dialog>zat_b30_owl_stalker_trader_start_dialog</start_dialog>Jeżeli nadal wywala pokombinuj z przeklejaniem, lub podaj loga na stalker.pl w temacie tutoriala.
Hmm, widzimy <actor_dialog> i <start_dialog>. Co one mogą oznaczać? <actor_dialog> oznacza, że dialog rozpoczyna gracz, zaś<start_dialog> oznacza, że rozpoczyna NPC. Osądzić można to na podstawie wpisu w st_dialogs_zaton:
Kod: Zaznacz cały
<string id="kolbasa_dialog_0">
<text> Mogę w czymś pomóc? </text>
</string>Jest to pierwsze zdanie w tym dialogu. Tak samo jest z kolbasa_end_0.
4. Czas na dopisywanie funkcji i napisanie skryptu. Wchodzimy w plik dialogs_zaton. Szukamy sekcji napisanego dialogu.
Kod: Zaznacz cały
<dialog id="kolbasa_dialog">
<dont_has_info>quest_kolbasa_done</ dont_has_info>
<dont_has_info>quest_kolbasa_give</ dont_has_info>
<phrase_list>
<phrase id="0">
<text>kolbasa_dialog_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>kolbasa_dialog_1</text>
<next>2</next>
</phrase>
<phrase id="2">
<text>kolbasa_dialog_2</text>
<give_info>quest_kolbasa_give</ give_info>
<action>nowy_skrypt.give_kolbasa_quest</ action>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
gdzie:
*<dont_has_info>quest_kolbasa_done</ dont_has_info> - to jeden z warunków pojawienia się dialogu,
*<dont_has_info>quest_kolbasa_give</ dont_has_info> - drugi warunek pojawienia się dialogu w menu,
*<give_info>quest_kolbasa_give</ give_info> - wpis kontrolujący infoprtion,
*<action>nowy_skrypt.give_kolbasa_quest</ action> - wpis w nowo utworzonym skrypcie oznaczający iż dostaliśmy zadanie,
*<action>dialogs.break_dialog</action> - wpis ten ucina dialog tak, by nie zapętlał się (powtarzał),
Kod: Zaznacz cały
Teraz część, w której kończymy zadanie:
<dialog id="kolbasa_end">
<dont_has_info>quest_kolbasa_done</ dont_has_info>
<has_info>quest_kolbasa_give</ has_info>
<precondition>nowy_skrypt.actor_has_kolbasa</precondition>
<phrase_list>
<phrase id="0">
<text>kolbasa_end_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<has_info>quest_has_kolbasa</ has_info>
<text>kolbasa_end_1</text>
<action>nowy_skrypt.transfer_kolbasa_to_owl</ action>
<next>2</next>
</phrase>
<phrase id="2">
<text>kolbasa_end_2</text>
<give_info>quest_kolbasa_done</ give_info>
</phrase>
</phrase_list>
</dialog>
gdzie:
*<precondition>nowy_skrypt.actor_has_kolbasa</precondition> -warunek pojawienia się dialogu,
*<has_info>quest_has_kolbasa</ has_info> - wpis kontrolujący infoportion,
*<action>nowy_skrypt.transfer_kolbasa_to_owl</ action> - funkcja dająca przedmiot Sowie,
*<give_info>quest_kolbasa_done</ give_info> - wpis kontrolujący infoportion,
Mamy dialog z funkcjami, teraz pora na napisanie skryptu. Przechodzimy do folderu "scripts" i tworzymy skrypt o dowolnej nazwie. Pamiętajmy, że skrypt musi mieć taką samą nazwę jak funkcje w drzewku dialogowym!!! Jest to cholernie ważne. W pliku utworzonego skryptu wpisujemy to:
Kod: Zaznacz cały
function give_kolbasa_quest()
task_manager.get_task_manager():give_task("give_kolbasa_quest")
end
function actor_has_kolbasa()
if db.actor:object("kolbasa") then
return true
end
return false
end
function transfer_kolbasa_to_owl(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "kolbasa")
dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
end Funkcje skryptu:
*function give_kolbasa_quest - jak sama nazwa mówi otrzymaliśmy quest,
*actor_has_kolbasa - funkcja, która wie, czy mamy kiełbasę czy nie (albo zaktualizowano zadania, alebo szukamy dalej),
* function transfer_kolbasa_to_owl(first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "kolbasa")
- funkcja dzięki której możemy ukończyć zadanie,
*dialogs.relocate_money_to_actor - funkcja dająca nagrodę (dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000) ta funkcja daje 5000 Rubli, a ta:
dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 6)
daje sześć sztuk bandaży.
5. Wchodzimy do pliku info_zaton. Wpisujemy tam (najlepiej na samym dole) te frazy:
Kod: Zaznacz cały
<info_portion id="quest_kolbasa_give"></ info_portion>
<info_portion id="quest_has_kolbasa"></ info_portion>
<info_portion id="quest_kolbasa_done"></ info_portion> Pliki te odnoszą się do zapisu w pliku dialogs_zaton.
6. Wchodzimy do pliku tm_zaton. Wpisujemy poniższą frazę:
Kod: Zaznacz cały
[quest_kolbasa_give]
icon = ui_inGame2_Put_v_pripyat
prior = 2
storyline = false
title = {= actor_has_item (kolbasa)} kolbasa_owl_prinesti_name, kolbasa_owl_naiti_name
descr = kolbasa_owl_descr
target = {= actor_has_item (kolbasa)} zat_b30_owl_stalker_trader
condlist_0 = {+ quest_kolbasa_done} complete Funkcje fraz:
*icon = ui_inGame2_Put_v_pripyat - ikonka zadania, można wybrać inną,
*prior = 2 - zdanie przed zdaniem, w którym wzięliśmy zadanie, ja to usuwałem i zadanie działało,
*storyline = false - jeżeli jest to zadanie fabularne wpisujemy "true", jeżeli nie - "false",
*title = {= actor_has_item (kolbasa)} kolbasa_owl_prinesti_name, kolbasa_owl_naiti_name - nazwy zadania (prinesti = przynieś, naiti = znajdź) w pliku st_quest_zaton,
*descr = kolbasa_owl_descr - opis zadania w pliku st_quest_zaton,
*target = {= actor_has_item (kolbasa)} zat_b30_owl_stalker_trader - cel i klient, do którego ma trafić,
*condlist_0 = {+ quest_kolbasa_done} complete - fraza ta powoduje zaliczenie zadania
Mam nadzieję, że przyda się komuś ten tutek.
All Rights Reserved
Jeszcze przydałby się osobny tutek co do dialogów - jak dodawałem bronie Żwawemu, to najwięcej problemów miałem właśnie z dialogami. Ostatecznie udało mi się je zrobić (wzorowałem się na tym, co już było w grze), tylko w sumie nie wiem do końca, co czemu odpowiada. Np. po co jest <has_info>, <dont_has_info>, <give_info> itp.
Proszę państwa, sto pięćdziesiąt kilometrów na godzinę w ciągu kilku sekund, wspaniały wynik. Gdyby w ten sposób można było wypie*dolić z polskiej polityki tych wszystkich śmieci z Okrągłego Stołu, Leszka Millera, byłoby… cudownie i każdemu bym ku*wa kupił po takim Ferrari, byleby w piz*u pojechali tym PROSTO do swojego ukochanego… Izraela. SYJONIŚCI Europy, jedźcie do siebie! Pozdrawiam, Zbigniew Stonoga. Nie jestem antysemitą!
To są infoportion. Przykład - jeżeli w pierwszym zdaniu masz <dont_has_info> w pierwszym zdaniu, a w ostatnim <give_info> to znaczy, że dialog już się nie pojawi, jak raz go przeczytałeś.
Czyli dialogi u Żwawego mają mieć tylko <dont_has_info>?
Proszę państwa, sto pięćdziesiąt kilometrów na godzinę w ciągu kilku sekund, wspaniały wynik. Gdyby w ten sposób można było wypie*dolić z polskiej polityki tych wszystkich śmieci z Okrągłego Stołu, Leszka Millera, byłoby… cudownie i każdemu bym ku*wa kupił po takim Ferrari, byleby w piz*u pojechali tym PROSTO do swojego ukochanego… Izraela. SYJONIŚCI Europy, jedźcie do siebie! Pozdrawiam, Zbigniew Stonoga. Nie jestem antysemitą!
Kod: Zaznacz cały
<dialog id="nazwa_dialogu">
[b]<dont_has_info>dał_broń_give</dont_has_info>[/b]
<phrase_list>
<phrase id="0">
<text>daj_broń_0</text>
<next>1</next>
</phrase>
<phrase id="1">
<text>daj_broń_1</text>
<next>3</next>
</phrase>
<phrase id="2">
<text>daj_bron_2</text>
[b]<give_info>dał_broń_give</give_info>[/b]
[b]<action>skrypt.give_broń</action>[/b]
</phrase>
</phrase_list>
</dialog>Jeżeli będzie <dont_has_info>dał_broń_give</dont_has_info> i <give_info>dał_broń_give</give_info> to dialog już się nie pojawi, bo złamiemy pewien warunek. Jeżeli będzie <action>skrypt.give_broń</action> to da nam broń (trzeba wpisać jej nazwę systemową).
Dobra, i tak dalej niewiele z tego rozumiem (to z <action> chyba kapuję - piszemy skrypt, w którym NPC daje nam broń i później to z <action> się do niego odnosi), ale z tamtym dalej nic. No, trudno, jakby co, to będę się wzorował na tym, co już zrobiłem.
A w ogóle to jest o tym tutek? Kurde, może też bym zrobił.
A w ogóle to jest o tym tutek? Kurde, może też bym zrobił.
Proszę państwa, sto pięćdziesiąt kilometrów na godzinę w ciągu kilku sekund, wspaniały wynik. Gdyby w ten sposób można było wypie*dolić z polskiej polityki tych wszystkich śmieci z Okrągłego Stołu, Leszka Millera, byłoby… cudownie i każdemu bym ku*wa kupił po takim Ferrari, byleby w piz*u pojechali tym PROSTO do swojego ukochanego… Izraela. SYJONIŚCI Europy, jedźcie do siebie! Pozdrawiam, Zbigniew Stonoga. Nie jestem antysemitą!
Tutek z AMK
Tutek ze STALKER Team
Ja z nich się nauczyłem. W tutku ze STALKER Team są opisane wszystkie funkcje.
Tutek ze STALKER Team
Ja z nich się nauczyłem. W tutku ze STALKER Team są opisane wszystkie funkcje.
Posty: 7• Strona 1 z 1
