Koniec misji

Wszelkie pytania na temat SAIL'a i modowania OW.
User avatar
Pawel orginal
Soldier level 1
Soldier level 1
Posts: 13
Joined: Thu Mar 20, 2008 2:29 pm
Location: Radom

Koniec misji

Post by Pawel orginal »

mam taki problem w sailu!
co mam wpisać,aby zakończyć misję po dojściu do danej areii???:oops:

ps: Jak taki temat był już założony to dajcie linka bo szukałem i nie mogłem znaleźć

proszę o szybką odpowiedź
User avatar
NNPlaya
Community Veteran
Community Veteran
Posts: 372
Joined: Sat Oct 14, 2006 4:52 pm
Location: Tuszyn, Polska
Contact:

Post by NNPlaya »

http://forum.original-war.net/viewtopic.php?t=551

Konkretnie chodzi o ostatni fragment kodu:

Code: Select all

every 0$1 trigger IsInArea(heros,Area02) do
Begin
Case Query("Zapytanie1") of
1 : begin
ComEnterUnit(kolo1,eon);
Wait(0$3);
ComEnterUnit(kolo2,eon);
Wait(0$3);
ComEnterUnit(kolo3,eon);
Wait(0$3);
ComEnterUnit(heros,eon);
AddMedal('med1',1);
AddMedal('med2',1);
AddMedal('med3,-1); //Tutaj też -, czyli nie dostajesz medalu.
GiveMedals('Main');
RewardPeople(heros);
SaveCharacters(heros,'heros');
YouWin;
end;
2: begin
YouLost('tchorz');
end;
end;
end;
Przeróbmy go na Twoje potrzeby. Najpierw podsumujmy - potrzebna nam reakcja w postaci zakończenia misji (zakładam, że obejmuje to rówież medale i zapisywanie postaci). Ta reakcja ma mieć miejsce gdy spełniamy warunek - ktoś jest w określonej arei. Teraz przetłumaczmy to na język zrozumiały dla kompilatora SAIL.

Code: Select all

every 0$1 trigger IsInArea(Twoj_identyfikator_postaci,Twoja_area) do //1
Begin
AddMedal('med1',1); //2
AddMedal('med2',1);
AddMedal('med3,-1); 

GiveMedals('Main'); //3

RewardPeople(Twoj_identyfikator_postaci); //4
SaveCharacters(Twoj_identyfikator_postaci,'Twoj_identyfikator_postaci_do_zapisu_w_pamięci_gry'); //5
YouWin; //6
end;
Objaśnienie sekcji po kolei:
  1. Deklaracja powtarzania co 1 sekundę (0$1 - 1 sekunda) operacji sprawdzania, czy warunek IsInArea(Twoj_identyfikator_postaci,Twoja_area) jest prawdziwy. Warunek to taka funkcja, która przyjmuje pewną liczbę argumentów(wpisuje się je w nawiasy i oddziela przecinkami) i na podstawie ich stanu zwraca wartości typu boolean - true(czyli prawdziwy warunek) bądź false w przypadku gdy warunek nie jest spełniony. Instrukcja every pozwala na reakcję tylko w przypadku spełnienia bądź nie spełnienia warunku, żeby wprowadzić jakąś reakcję gdy nie ma określonego gościa w arei należy utworzyć drugie every.
  2. W drugiej sekcji w pamięci dodawane są medale. O medalach jest nawet w poradniku dołączonym do patcha, więc sobie daruję opisywanie.
  3. Trzecia sekcja zawiera komendę wyświetlającą tablicę z medalami (oczywiście wcześniej muszą zostać dodane komendami AddMedal;). Ponownie odsyłam do poradnika załączonego do patcha.
  4. W sekcji nr 4 masz komendę RewardPeople, która jako argument przyjmuje identyfikator jednego gostka bądź grupy ludzi. Wyświetla tablicę rozdzielania doświadczenia.
  5. Piąta sekcja to nic innego jak zapisanie postaci do pamięci pod dowolnym identyfikatorem podawanym w drugim argumencie jako ciąg literowy w apostrofach.
  6. Szósta i ostatnia sekcja to instrukcja YouWin nie wymagająca argumentów; kończy ona misję wygraną.
Na koniec jeszcze na pewno zauważyłeś bloki Begin end;. Oznaczają one, że zawarte w nich kod należy do wyrażenia warunkowego, w tym przypadku every. To się tyczy większości, o ile nie wszystkich języków programowania. Akurat bloki Begin end; zaczerpnięto z Pascala, w innych językach np PHP czy C++ są one zastąpione znakami nawiasów klamrowych. To wszystko :wink:
Radzio
Site Administrator
Site Administrator
Poland
Posts: 2898
Joined: Fri Jul 28, 2006 10:58 am
Location: Bialystok, Poland

Post by Radzio »

Wow, spadłem z krzesła. (boli!)
Niezłe wytłumaczenie kodu ;p
BTW, wpadłbyś mi pomóc z wiki na OWS'ie ;p
User avatar
Pawel orginal
Soldier level 1
Soldier level 1
Posts: 13
Joined: Thu Mar 20, 2008 2:29 pm
Location: Radom

Post by Pawel orginal »

:shock: :shock: :shock:
wielkie dzięki ale mam jeszcze jeden problem:
wpisuje

every 0$1 trigger (nazwa arei) do
begin
setside(nazwa arei,'bohater');
end;


aby wszystko co znajduje się w arei przeszło na moją stronę
no i wszystko wchodzi ale jak włączam grę i dochodzę tam to nic się nie dzieje
Radzio
Site Administrator
Site Administrator
Poland
Posts: 2898
Joined: Fri Jul 28, 2006 10:58 am
Location: Bialystok, Poland

Post by Radzio »

Bo powinno być:

Code: Select all

every 0$1 trigger IsInArea(postac,area) do
begin
SetSide(FilterUnitsInArea(area,[]),nowa_strona);
end;
User avatar
Gothuk
Site Administrator
Site Administrator
Poland
Posts: 985
Joined: Tue Sep 04, 2007 6:10 pm
Location: Poland, Warsaw
Contact:

Post by Gothuk »

Tam gdzie jest nowa_strona, to wstawiasz numer nacji,
tu masz spis tych numerów:
http://forum.original-war.net/viewtopic.php?t=816

Jeśli chcesz aby jednostki przeszły na strone bohatera bez względu w jakiej się znajduje, to zrób tak:

Code: Select all

every 0$1 trigger IsInArea(postac,area) do 
begin 
SetSide(FilterUnitsInArea(area,[]),GetSide(bohater)); 
end;
EDIT
@down, nie mogłem się powstrzymać ^^,
Radzio wrote:I kto wam kazał wstawiać wszędzie cudzysłowy
a co do cudzysłowiów to masz racje, jakoś przypadkowo wstawiły się :P.
Last edited by Gothuk on Sun Mar 23, 2008 10:38 pm, edited 1 time in total.
Radzio
Site Administrator
Site Administrator
Poland
Posts: 2898
Joined: Fri Jul 28, 2006 10:58 am
Location: Bialystok, Poland

Post by Radzio »

Musiałeś to dopisać ;p ?
I kto wam kazał wstawiać wszędzie cudzysłowy. Przecież tak nie pójdzie...
User avatar
Pawel orginal
Soldier level 1
Soldier level 1
Posts: 13
Joined: Thu Mar 20, 2008 2:29 pm
Location: Radom

prrrrrrrrrrrrrrrrrrrrrrrroblemo

Post by Pawel orginal »

mam jeszcze jeden problem!!!
przy tworzeniu misji.
kiedy w sailu i w texts wpisuje to co trzeba żeby wyświetlały się moje cele to sail chodzi i nie widzi erroru.
Lecz kiedy włączam grę to pokazują mi się cele z misji z original war.

kiedy stworzyłem 2 misję i przypisałem do misji amerykanów to miałe cele takie jakie są w grze (skrzynki przenieść na północ)



JAK TO NAPRAWIć :?: :?: :?: :?: :?: :!: :!: :!: :!:
User avatar
NNPlaya
Community Veteran
Community Veteran
Posts: 372
Joined: Sat Oct 14, 2006 4:52 pm
Location: Tuszyn, Polska
Contact:

Post by NNPlaya »

Mimo kilkakrotnego przeczytania Twojego posta i usilnych chęci nic nie zrozumiałem oprócz tego, że coś celami misji jest nie tak :? Wklej kod SAILa - najlepiej w całości, to samo z texts.txt.

a i jeszcze coś...
Po kiego grzyba nadal używacie texts.txt? :roll: Przecież i tak potem będziecie musieli to kopiować do pliku wri, więc po co dorabiać sobie pracy? Bodajże od patcha 1.07 o ile mnie pamięć nie myli edytor potrafi czytać teksty także z plików wri z folderu Campaigns
User avatar
Pawel orginal
Soldier level 1
Soldier level 1
Posts: 13
Joined: Thu Mar 20, 2008 2:29 pm
Location: Radom

Post by Pawel orginal »

chodzi mi o to ,że kiedy tworzę mapę i przypisuje do np.2 misji amerykańskiej i do saila piszę komendę na to żeby wyświetlały się moje cele misji to wyświetlają się cele z 2 misji amerykańskiej (oryginalnej)

co tu nie rozumiesz??? :twisted:
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

Najpierw usun oryginalne moduły z SAIL z misji zapisz mapę i usuń moduły z folderu tej misji którą wyodrębniłes włącz "Go To Mode" i wróć odrazu do edytora zapisz iz wpisz swoj kod i powinno działac ( oczywiscie w nowym module). P

PS: Jak ci wyjdzie Misison restarting czy cos tkaiwego przy kompilownaiu to po prostu zapisz moduły i mape i otwórz ją spowrtoem wtedy kompilacja jest mozliwa
Jeanks zgarnia wszystko ot co xD
Radzio
Site Administrator
Site Administrator
Poland
Posts: 2898
Joined: Fri Jul 28, 2006 10:58 am
Location: Bialystok, Poland

Post by Radzio »

Jeanks wrote:włącz "Go To Mode" i wróć odrazu do edytora zapisz iz wpisz swoj kod i powinno działac
Nie rób tego, bo nie będzie dobrze!
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

Ja tak robię i zawsze jest dobrze.Jeżeli tego nie zrobi to w czasie gry będą się ładować kody sail które są w oryginalnej misji
Jeanks zgarnia wszystko ot co xD
Radzio
Site Administrator
Site Administrator
Poland
Posts: 2898
Joined: Fri Jul 28, 2006 10:58 am
Location: Bialystok, Poland

Post by Radzio »

Jeanks wrote:Ja tak robię i zawsze jest dobrze.Jeżeli tego nie zrobi to w czasie gry będą się ładować kody sail które są w oryginalnej misji
Zapytaj Stu albo NNPlaya. Powiedzą ci to samo co ja.
User avatar
Jeanks
Soldier level 6
Soldier level 6
Posts: 305
Joined: Fri Feb 16, 2007 1:34 pm
Location: Grudziądz

Post by Jeanks »

Ale co z tego że powiedza skoro ja mówie ze to działa to jemu też podziała. Jeśli nawet nie w co wątpie to załaduje pliki od nowa ale problem
Jeanks zgarnia wszystko ot co xD
Post Reply