Forum Forum poświecone modyfikacji do gry mountblade
Forum of "With Fire And Sword mod"
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Skrypty - Wprowadzenie.

 
Napisz nowy temat   Odpowiedz do tematu    Forum Forum poświecone modyfikacji do gry mountblade Strona Główna -> Tutorials
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Manitas
Administrator



Dołączył: 12 Lip 2006
Posty: 348
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Sob 21:10, 18 Lis 2006    Temat postu: Skrypty - Wprowadzenie.

Skrypt jest to ciąg operacji rozdzielonych przecinkami, wykonywanych po kolei.

Kazda operacja wyglada nastepujaco:

(nazwa_operacji, argument1, arg2, arg3)
Przy czym kazda operacja ma wlasciwa dla niej liczbe adgumentow, od 0 do 3.

Wszystkie dostepne operacje mozna obejrzec w pliku header_operations.py
Na szczescie w wiekszosci wypadkow z nazwy operacji mozna wywnioskowac co dana operacja robi.

przykład:
(troop_add_gold, "trp_player", 100)
i stówka ląduje w kieszeni naszego bohatera.

Jako argumenty operacji mozna podawac liczby calkowite, lub zmienne.
Glupio mi pisac o zmiennych, ale napisze na wszelki wypadek gdyby ktos nie wiedzial.
Otoz zmienna jest jakby pojemnikiem ktory jest opatrzony nazwą, ktory moze przechowywac jakąs wartosc liczbową.

Są 2 głowne rodzaje zmiennych:
- zwykłe, np "$nazwa_zmiennej" (cudzyslowy i znak $ sa obowiazkowe)
- rejestry, np reg(numer), gdzie numer moze przybierac wartosci od 0 do 40.
Roznia sie one tym, ze jezeli ustawimy wartosc zmiennej zwyklej w jednym skrypcie, mozemy miec pewnosc ze jej wartosc bedzie taka sama w innym, co do rejestrow takiej pewnosci miec nie mozna.


Przy okazji zmiennych trzeba wymienic operacje assign, ktora przypisuje wartosc zmiennej.

Przyklad:
(assign, "$ile_kasy", 100),
(val_add, "$ile_kasy, 1),
(troop_add_gold, "trp_player", "$ile_kasy"),


Tym razem w kieszeni naszego hero wyląduje 101 dukatów.


Rodzaje operacji.


1. Jeden rodzaj juz poznalismy - troop_add_gold jest to tzw. konsekwencja, czyli operacja ktora zmienia stan rzeczy w grze (w tym wypadku stan posiadania bohatera).

2. Zapytania - operacje ktore nie zmieniaja stanu rzeczy w grze ale pozwalaja uzyskac pewne informacje np:
Założmy że nasz hero ma przy sobie 101 dukatów.
operacja (store_troop_gold, "$ile_on_ma", "trp_player") spowoduje ze od tej chwili w zmiennej "$ile_on_ma" pojawi sie wartosc 101. Jakakolwiek wartosc ktora mogla tam byc przed wykonaniem operacji zostanie stracona.

3. Warunki np:
eq - equal - równy
gt - greater than - wiekszy
lt - less than - mniejszy
ge - greater or equal - wiekszy lub rowny
le - zgadnijcie ;)
(main_hero_fallen) - sprawdza czy hero poległ w boju

Warunki dzialaja w ten sposob, ze jezeli ktorys z nich jest falszywy dzialanie skryptu zostaje przerwane.

przyklad:
Zalozmy ze nasz hero ma 100 gold
(store_troop_gold, "$ile_on_ma", "trp_player"),
(gt, "$ile_on_ma", 100),
(troop_deduce_gold, "trp_player", 100),


Ostatnia operacja zabiera graczowi 100 gold.
Na szczescie w tym przypadku sie nie wykona, gdyz warunek (100 > 100) jest rzecz jasna falszywy i skrypt zakonczy dzialanie zaraz po operacji 'gt'.

4. Operacje grupujace
Sa to operacje blokowe. Blok zaczynaja sie od jednej z operacji (try_...) a konczy operacją (end_try)

Najprostszą operacja tego typu jest (try_begin). Sluzy ona do wydzielenia ciagu operacji w skrypcie, glownie do stosowania z operacjami warunkowymi.
przyklad:
Kod:
(try_begin),
  (store_troop_gold, "$ile_on_ma", "trp_player"),
  (gt, "$ile_on_ma", 100),
  (troop_deduce_gold, "trp_player", 100),
(end_try),
(jakas_inna_operacja),

W tym przypadku, jezeli warunek gt bedzie falszywy, nie spowoduje to zakonczenia dzialania calego skryptu, ale tylko jego czesci znajdujacej sie w bloku (try. Czyli w tym przykladzie operacja troop_deduce_gold sie nie wykona, ale jakas_inna_operacja zostanie wykonana bez przeszkod. Dla wtajemniczonych, dzialanie tej konstrukcji jest podobne do bloku 'if' z normalnych językow.
Kod:
(try_begin),
  (store_troop_gold, "$ile_on_ma", "trp_player"),
  (gt, "$ile_on_ma", 100),
  (troop_deduce_gold, "trp_player", 100),
(else_try),
  (jakas_inna_operacja),
(end_try),
przyklad podobny, z tym ze dodatkowo zawiera operacje (else_try). W tym przypadku jakas_inna_operacja wykona sie tylko wtedy jezeli warunek gt jest falszywy. W przeciwnym wypadku wykona sie tylko deduce_gold.

Pozostale operacje grupujace to:

(try_for_range, "$zmienna", start, end) operacje zamkniete w takim bloku wykonaja sie start - end + 1 razy, za kazdym razem zmieniajac zawartosc zmiennej "$zmienna" od wartosci start do end co 1.

(try_for_agents, "$numer_agenta") - agent jest to kazda istota ozywiona ktora moze pojawic sie w bitwie, czyli agentem jest player, agentami sa jego zolnierze, wrogowie i konie.
Operacje zamkniete w takim bloku wykonaja sie tyle razy ile agentow jest obecnych na placu boju, za kazdym razem podstawiajac pod zmienna "$numer_agenta" numer kolejnego agenta na polu bitwy.


CDN...


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Forum poświecone modyfikacji do gry mountblade Strona Główna -> Tutorials Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
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


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
Regulamin