Posted: 2011-07-15, 23:08 Jak wystartować grę HOTSEAT na mapie ziemia z TSL
Ok, ostatnio chciałem wystartować grę HOTSEAT na mapie świata z prawdziwymi pozycjami startowymi [TSL] civek i CS. Niestety Firaxis znowu się nie popisał i nie jest to wcale takie łatwe. Po kilku próbach okazało się że problem można rozwiązać następująco:
1) Generujemy sobie mapę w WorldBuilder lub za pomocą jakiegoś skryptu.
2) Następnie musimy wyedytować plik AssignStartingPlots.lua który przypisuje pozycje startowe.
Wystarczy że dla każdej cywilizacji którą chcemy umieścić na mapie wpiszemy coś takiego
Code:
local player = Players[player_ID];
local CivName = player:GetName();
local CivName2 = "Washington";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(13,32);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
Szczegółów nie chce opisywać, nie chce żeby koledzy z COPa nie mieli frajdy z główkowania. W każdym razie da się tak ustawić ręcznie graczy w grze HOTSEAT na dowolnej mapie. Jak będzie taka potrzeba to dajcie znać. Możemy sobie nawet ustawić TEAMy.
3) Później odpalamy normalnie grę HOTSEAT na mapie którą sobie przygotowaliśmy.
for player_ID = 0, GameDefines.MAX_MAJOR_CIVS + GameDefines.MAX_MINOR_CIVS - 1 do
local player = Players[player_ID];
if isValidPlayer(player) then
local CivName = player:GetName();
local CivName2 = "Washington";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(13,32);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Harun al-Rashid";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(49,16);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Montezuma";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(5,27);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Wu Zetian";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(60,35);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Ramesses II";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(44,16);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Elizabeth";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(34,34);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Napoleon";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(33,29);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Bismarck";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(39,32);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Alexander";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(42,23);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Gandhi";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(58,22);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Hiawatha";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(17,36);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Oda Nobunaga";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(60,45);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Suleiman";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(46,24);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Darius I";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(53,22);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Augustus Caesar";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(37,24);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Catherine";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(45,36);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Ramkhamhaeng";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(62,25);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Askia";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(32,14);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Pachacuti";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(14,12);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Isabella";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(32,24);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
CivName = player:GetName();
CivName2 = "Harald Bluetooth";
if CivName == CivName2 then
local playerStartPlot = Map.GetPlot(38,37);
player:SetStartingPlot(playerStartPlot);
end -- if civnamed
end -- ifvalid end
end -- for end
a tutaj kod za pomocą którego ułatwiłem sobie sprawę, automatycznie szczytuje pozycje startowe. Wystarczy go dodać do skryptu mapy.
Spoiler:
print("========================================positions==============================================")
print("");
print("for player_ID = 0, GameDefines.MAX_MAJOR_CIVS + GameDefines.MAX_MINOR_CIVS - 1 do");
print("local player = Players[player_ID];");
print("if isValidPlayer(player) then");
local firstgo = true;
for player_ID = 0, GameDefines.MAX_MAJOR_CIVS + GameDefines.MAX_MINOR_CIVS - 1 do
local player = Players[player_ID];
if isValidPlayer(player) then
local playerStartPlot = player:GetStartingPlot();
local plotX = playerStartPlot:GetX();
local plotY = playerStartPlot:GetY();
local CivName = player:GetName();
if (firstgo) then
firstgo = false;
print("local CivName = player:GetName();");
print("local CivName2 = \"" .. CivName .. "\";");
else
print("CivName = player:GetName();");
print("CivName2 = \"" .. CivName .. "\";");
end
text = "if CivName == CivName2 then "
print(text);
text = "player:SetStartingPlot(playerStartPlot); "
print(text);
print("end -- if civnamed");
print("");
end
end
print("end -- ifvalid end");
print("end -- for end");
print("");
print("========================================positions end==============================================")
Poproszę o jakieś piwko bo podobno nie dało się tego zrobić
Last edited by Nefliqus on 2011-07-16, 07:54; edited 4 times in total
Czajmen ty niewdzięczna "świnio" , ten Twój komentarz na COP to cały ty. Nawet nie wiedziałeś gdzie zacząć szukać na początku i chodziłeś jak matoł settlersami. A tak a propos to spytałeś się czy możesz używać kodu napisanego przez kogoś innego? Nic tylko podkradać czyjeś pomysły i później przypisywać sobie zasługi.
Last edited by Nefliqus on 2011-07-18, 12:32; edited 1 time in total
xfire: czajmen Helped: 2 times Age: 37 Joined: 16 Sep 2010 Posts: 1534 Piwa: 20/39 Location: Kraków
Posted: 2011-07-18, 12:33
Nefliqus wrote:
Szczegółów nie chce opisywać, nie chce żeby koledzy z COPa nie mieli frajdy z główkowania. W każdym razie da się tak ustawić ręcznie graczy w grze HOTSEAT na dowolnej mapie. Jak będzie taka potrzeba to dajcie znać. Możemy sobie nawet ustawić TEAMy.
możesz już szczegółowo opisać i nie zapomnij podziękować Gedemon
xfire: czajmen Helped: 2 times Age: 37 Joined: 16 Sep 2010 Posts: 1534 Piwa: 20/39 Location: Kraków
Posted: 2011-07-18, 12:36
Nefliqus wrote:
Czajmen ty niewdzięczna "świnio" , ten Twój komentarz na COP to cały ty. Nawet nie wiedziałeś gdzie zacząć szukać na początku i chodziłeś jak matoł settlersami. A tak a propos to spytałeś się czy możesz używać kodu napisanego przez kogoś innego? Nic tylko podkradać czyjeś pomysły i później przypisywać sobie zasługi.
twojego kodu nie użyłem - nie potrzebowałem go, jedne co ci zawdzięczam to informacja, że da się inaczej. i za to ci bardzo dziękuje
Czajmen ty niewdzięczna "świnio" , ten Twój komentarz na COP to cały ty. Nawet nie wiedziałeś gdzie zacząć szukać na początku i chodziłeś jak matoł settlersami. A tak a propos to spytałeś się czy możesz używać kodu napisanego przez kogoś innego? Nic tylko podkradać czyjeś pomysły i później przypisywać sobie zasługi.
twojego kodu nie użyłem - nie potrzebowałem go, jedne co ci zawdzięczam to informacja, że da się inaczej. i za to ci bardzo dziękuje
właśnie widziałem, zrobiłem błąd że ci pomogłem ale nie mogłem patrzyć jak się męczysz z tymi settlersami.
Last edited by Nefliqus on 2011-07-18, 12:38; edited 1 time in total
oj scooby już nie przesadzaj z tym obrażaniem, kopiują cudze pomysły bez mrugnięcia okiem i później piszą ze to nie twoja zasługą że jakiś problem został rozwiązany. To ze takie zachowanie jest w Polsce powszechnie akceptowalne i nie ma szacunku dla cudzej pracy nie znaczy że nie należy takiego zachowania piętnować. Zresztą już się przyzwyczaiłem ale to nie znaczy że mam siedzieć cicho i nie pisać co o tym myślę. Czajmen i tak ma to w nosie, dalej będzie podkradał pomysły i przypisywał sobie zasługi. Nie sądzę aby poczuł się obrażony.
xfire: czajmen Helped: 2 times Age: 37 Joined: 16 Sep 2010 Posts: 1534 Piwa: 20/39 Location: Kraków
Posted: 2011-07-19, 14:53
Nefliqus jak sam napisałeś, szczegółów nie zdradziłeś - napisałeś się, że się da. To raz.
Opisany sposób zawiera błąd - zapewne celowy - to dwa.
Jeżeli chodzi o kod jaki tu opublikowałeś, to był mi on nie potrzebny, bo ja zrobiłem to mega chamsko - to trzy:
A cztery, to gdybym nie trafił na odpowiedni temat na fanatykach, to bym raczej tego nie zrobił.
jakby od razu opublikował całe Know-how, to na COPie bym napisał, że całą zasługa spływa na Ciebie. Tak to musiałem sam gość z pomocą wskazówki, którą sam dostałeś jak to zrobić. to pięć.
mogłeś nie publikować, to pewnie bym chodził setami, a tak to sam (bo nie napisałeś jak) musiałem dość co i jak. I powiem ci jeszcze jedno - jestem zawodowym programistą - znam kilka języków programowania, więc umiem skumać w skryptach dostarczonych przez twórców gry co i jak się robi. jak sam wiesz dokumentacja jest uboga, ale dzięki ludziemu nazwaniu funkcji, stały itp. idzie skumać o co chodzi ewentualnie wyszukać w innych skryptach jak co działa (twoich nie mam - już dawno pokasowałem, ściągam tylko jak mój oponent w multi chce na twoim zagrać).
nie mniej doceniam twoja pracę jaką wkładasz w rozwijanie swoich skryptów - pewnie część tak jak kopiujesz z oryginałów, a inną cześć sam tworzysz - za to należą ci się brawa i słowa uznania. ja zapewne wiesz, w moim skrypcie są pewne pomysły, które później pi razy oko przeniosłeś i dodałeś do swoich skryptów.
I dla mnie to koniec tematu - więcej na tematy skryptów i innych pierdół nie będę się wypowiadać. Możesz sobie pisać co chcesz - mnie to *** obchodzi.
PS. jak nie chcesz inspirować innych i poddawać im pomysłów, to nic nie publikuj - zabierz swoje odkrycia i ciekawe pomysły do grobu.
Nefliqus jak sam napisałeś, szczegółów nie zdradziłeś - napisałeś się, że się da. To raz.
Opisany sposób zawiera błąd - zapewne celowy - to dwa.
Jeżeli chodzi o kod jaki tu opublikowałeś, to był mi on nie potrzebny, bo ja zrobiłem to mega chamsko - to trzy:
A cztery, to gdybym nie trafił na odpowiedni temat na fanatykach, to bym raczej tego nie zrobił.
jakby od razu opublikował całe Know-how, to na COPie bym napisał, że całą zasługa spływa na Ciebie. Tak to musiałem sam gość z pomocą wskazówki, którą sam dostałeś jak to zrobić. to pięć.
mogłeś nie publikować, to pewnie bym chodził setami, a tak to sam (bo nie napisałeś jak) musiałem dość co i jak. I powiem ci jeszcze jedno - jestem zawodowym programistą - znam kilka języków programowania, więc umiem skumać w skryptach dostarczonych przez twórców gry co i jak się robi. jak sam wiesz dokumentacja jest uboga, ale dzięki ludziemu nazwaniu funkcji, stały itp. idzie skumać o co chodzi ewentualnie wyszukać w innych skryptach jak co działa (twoich nie mam - już dawno pokasowałem, ściągam tylko jak mój oponent w multi chce na twoim zagrać).
nie mniej doceniam twoja pracę jaką wkładasz w rozwijanie swoich skryptów - pewnie część tak jak kopiujesz z oryginałów, a inną cześć sam tworzysz - za to należą ci się brawa i słowa uznania. ja zapewne wiesz, w moim skrypcie są pewne pomysły, które później pi razy oko przeniosłeś i dodałeś do swoich skryptów.
I dla mnie to koniec tematu - więcej na tematy skryptów i innych pierdół nie będę się wypowiadać. Możesz sobie pisać co chcesz - mnie to *** obchodzi.
PS. jak nie chcesz inspirować innych i poddawać im pomysłów, to nic nie publikuj - zabierz swoje odkrycia i ciekawe pomysły do grobu.
Tylko zobacz kto zainicjował ten temat na fanatykach i jaka była kolejność postów. To że uważasz że ktoś wprowadził Cię specjalnie w błąd świadczy o Twoim charakterze, postrzeganiu świata i ogólnie o postawie adminów COPa. Opublikowałem ten pomysł bo chciałem Ci pomóc w rozwiązaniu problemu, do niektórych rozwiązań dochodzi się etapami. Pisząc posta na KAC nie wiedziałem że AssignStartingPlots.lua działa tylko w single. Uważam że współpraca i ujawnianie rozwiązań, pomysłów wpływa na rozwój tej gry. Dalej nie rozumiesz że nie chodzi tu o kopiowanie, bo naśladownictwo jest najwyższą oznaką aprobaty i to mi nawet schlebia, tylko przypisywanie sobie zasług u udawanie że nie korzysta się z pracy i pomysłów kogoś innego. Na odkrycie notyfikacji jako jedynego możliwego sposobu przekazania informacji z skryptu do gry poświęciłem 1 tydzień siedzenia, próbowania i testowania różnych rozwiązań, które były bardziej oczywiste a nie działały. Tobie to zajmie 5 minut oglądania kodu. Dodatkowo jestem ciekaw jaka była Twoja opinia w momencie gdy była możliwość skorzystania z NOVAL na cop. Jestem przekonany że byłeś przeciw. To w połączeniu faktu że teraz kupujesz po kolei rozwiązania których wypracowanie zajęło komuś dużo czau pozwala mi mieć o Tobie negatywne zdanie i nazywać to co robisz kradzieżą. Normalnie powinieneś napisać że "kopiujesz jakiś fragment kodu lub rozwiązanie", ja nie miałbym nic przeciwko gdyby to było tak oficjalnie zrobione. Każdy chce żeby jego praca się do czegoś przydała. Niestety nie możesz tego zrobić przez politykę cop, gdzie administratorzy zdecydowali że zamiast dogadać się skorzystać z tego co ktoś inny przygotował wolą chyłkiem podkradać cudzą pracę. I tak na prawdę to tu jest sedno problemu.
Last edited by Nefliqus on 2011-07-19, 19:59; edited 5 times in total
xfire: czajmen Helped: 2 times Age: 37 Joined: 16 Sep 2010 Posts: 1534 Piwa: 20/39 Location: Kraków
Posted: 2011-07-19, 20:41
Nef masz DLC i scenariusz Nowy Świat - w jednym z plików (TurnsRemaining.lua) jest przykład użycia funkcji Player:AddNotification
(http://wiki.2kgames.com/civ5/index.php/Lua_Game_Objects/Player#AddNotification)
Spoiler:
Code:
if (GenerateTreasureFromRazedCity(Game:GetHandicapType(), city:GetOwner(), city:GetPreviousOwner())) then
local player = Players[city:GetOwner()];
local iUnitID;
iUnitID = GameInfoTypes["UNIT_TREASURE"];
player:InitUnit (iUnitID, iX, iY);
local text;
local heading;
text = Locale.ConvertTextKey("TXT_KEY_NEWWORLD_SCENARIO_TREASURE_RAZED_CITY", city:GetName());
heading = Locale.ConvertTextKey("TXT_KEY_NEWWORLD_SCENARIO_TREASURE_FOUND");
player:AddNotification(NotificationTypes.NOTIFICATION_GENERIC, text, heading);
end
end
Nef wybacz, ale nie przyjmuje twojego tłumaczenia, że ten temat zrobiłeś bo chciałeś mi pomóc - jakbyś naprawdę chciał, to po pierwsze napisał byś mi PW czy w jakikolwiek sposób dałbyś mi znać o tym temacie, a przede wszystkim dałbyś dokładny algorytm jak to zrobić. Powiedz mi - jaki ja kod skopiowałem od ciebie? nawet nie wiem co ciekawego robi twoja funkcja isValidPlayer - sądząc po nazwie sprawdza czy gracz jest poprawny (cokolwiek miało by to znaczyć).
co do faktu jakby na COPie byłby nOval - bym się cholernie cieszył, bo nie musiałbym robić skryptów tylko i wyłącznie dlatego, ze jest jakiś konflikt, którego nie rozumiem i osobiście wolałbym, żeby go nie było, bo tylko szkodzi nam wszystkim - graczom. ale te sprawy ode mnie nie zależą.
co do czasu - to myślisz, że ja go nie tracę - oj ile razy ja już civke uruchamialem i później musiałem resetować bo były błędy. po za tym nie wiem jak ty to robisz, ale ja patrze na dostępne funkcje i po nazwach mniej więcej rozumie jak działają. później pozostaje przeszukać folder Asserts w celu znalezienia przykładu jej użycia - czasem jest czasem nie.
napisanie mojej pierwsze mapy zajęło mi coś koło 2 miesięcy i wtedy dużo zrozumiałem co i jak działa. po za tym nie wiem czym ty się zawodowo (ba nawet nie wiem ile masz lat) zajmujesz - ja programuje prawie 20 lat, przez ten czas bardzo dużo się nauczyłem, zwłaszcza jak rozumować kod i analizować sposób jego działania (tak się nauczylem działania EJB, Strutsów) - jestem praktykiem, a nie teoretykiem. więc prosze daj sobie siana - nie jesteś jedyna osoba na świecie, która może napisać to co ty. po za tym, jak nie zauważyłeś, to ja dopisuje, to co chcą ode mnie ludzie, a ze oni się wzorują na ciebie, cóż nie moja wina.
na koniec zostawiam sobie sprawę "kradzieży" - bądź tak uprzejmy i powiedz co ja ci ukradłem? udowodnij mi to.
tylko, ze nie jesteś w stanie - bo dobrze wiesz, ze to nie prawda. nie wiem w czym masz problem - może to, ze ja dostałem zaproszenie do redakcji na COPie, a ty tutaj nie dostałeś (tego akurat nie wiem - może się mylę), może wkurza cie, ze inni tez potrafią coś zrobić i nie jesteś jedyny - pamiętaj Polacy, to bardzo mądry naród, który w informatyce jest w czołówce.
Nef masz DLC i scenariusz Nowy Świat - w jednym z plików (TurnsRemaining.lua) jest przykład użycia funkcji Player:AddNotification
(http://wiki.2kgames.com/civ5/index.php/Lua_Game_Objects/Player#AddNotification)
Spoiler:
Code:
if (GenerateTreasureFromRazedCity(Game:GetHandicapType(), city:GetOwner(), city:GetPreviousOwner())) then
local player = Players[city:GetOwner()];
local iUnitID;
iUnitID = GameInfoTypes["UNIT_TREASURE"];
player:InitUnit (iUnitID, iX, iY);
local text;
local heading;
text = Locale.ConvertTextKey("TXT_KEY_NEWWORLD_SCENARIO_TREASURE_RAZED_CITY", city:GetName());
heading = Locale.ConvertTextKey("TXT_KEY_NEWWORLD_SCENARIO_TREASURE_FOUND");
player:AddNotification(NotificationTypes.NOTIFICATION_GENERIC, text, heading);
end
end
Nef wybacz, ale nie przyjmuje twojego tłumaczenia, że ten temat zrobiłeś bo chciałeś mi pomóc - jakbyś naprawdę chciał, to po pierwsze napisał byś mi PW czy w jakikolwiek sposób dałbyś mi znać o tym temacie, a przede wszystkim dałbyś dokładny algorytm jak to zrobić. Powiedz mi - jaki ja kod skopiowałem od ciebie? nawet nie wiem co ciekawego robi twoja funkcja isValidPlayer - sądząc po nazwie sprawdza czy gracz jest poprawny (cokolwiek miało by to znaczyć).
co do faktu jakby na COPie byłby nOval - bym się cholernie cieszył, bo nie musiałbym robić skryptów tylko i wyłącznie dlatego, ze jest jakiś konflikt, którego nie rozumiem i osobiście wolałbym, żeby go nie było, bo tylko szkodzi nam wszystkim - graczom. ale te sprawy ode mnie nie zależą.
co do czasu - to myślisz, że ja go nie tracę - oj ile razy ja już civke uruchamialem i później musiałem resetować bo były błędy. po za tym nie wiem jak ty to robisz, ale ja patrze na dostępne funkcje i po nazwach mniej więcej rozumie jak działają. później pozostaje przeszukać folder Asserts w celu znalezienia przykładu jej użycia - czasem jest czasem nie.
napisanie mojej pierwsze mapy zajęło mi coś koło 2 miesięcy i wtedy dużo zrozumiałem co i jak działa. po za tym nie wiem czym ty się zawodowo (ba nawet nie wiem ile masz lat) zajmujesz - ja programuje prawie 20 lat, przez ten czas bardzo dużo się nauczyłem, zwłaszcza jak rozumować kod i analizować sposób jego działania (tak się nauczylem działania EJB, Strutsów) - jestem praktykiem, a nie teoretykiem. więc prosze daj sobie siana - nie jesteś jedyna osoba na świecie, która może napisać to co ty. po za tym, jak nie zauważyłeś, to ja dopisuje, to co chcą ode mnie ludzie, a ze oni się wzorują na ciebie, cóż nie moja wina.
na koniec zostawiam sobie sprawę "kradzieży" - bądź tak uprzejmy i powiedz co ja ci ukradłem? udowodnij mi to.
tylko, ze nie jesteś w stanie - bo dobrze wiesz, ze to nie prawda. nie wiem w czym masz problem - może to, ze ja dostałem zaproszenie do redakcji na COPie, a ty tutaj nie dostałeś (tego akurat nie wiem - może się mylę), może wkurza cie, ze inni tez potrafią coś zrobić i nie jesteś jedyny - pamiętaj Polacy, to bardzo mądry naród, który w informatyce jest w czołówce.
sorry ale nie chce mi się tego czytać , zostawie to bez odpowiedzi
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum