Ruszyła konwersja forum! Przez ten czas wyłączyliśmy możliwość pisania nowych postów, ale po zalogowaniu się można pisać na chacie. Poniżej znajdują się też linki do naszej grupy Steam i facebooka, gdzie również będą ogłoszenia. Modernizacja forum powinna zakończyć się najpóźniej do wtorku.

Najnowsze newsy z naszej strony:


    Polub nasz profil na facebooku! oraz dołącz do naszej Grupy STEAM

    Autor Wątek: [MS] Wprowadzenie do skryptów by Manitas  (Przeczytany 12019 razy)

    Opis tematu:

    0 użytkowników i 1 Gość przegląda ten wątek.

    Offline Kolba

    • Użytkownik
    • Wiadomości: 1697
    • Piwa: 2
    • Płeć: Mężczyzna
    • Ten który opowiada kretowi bajki do snu
    [MS] Wprowadzenie do skryptów by Manitas
    « dnia: Sierpnia 15, 2007, 15:08:39 »
    Tutorial by Manitas



    "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"
    « Ostatnia zmiana: Stycznia 26, 2016, 13:40:08 wysłana przez Lew »

    Offline Kuczix

    • Użytkownik
    • Wiadomości: 21
    • Piwa: 0
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #1 dnia: Marca 28, 2010, 12:04:54 »
    Wiem że teraz znoobie ale gdzie sie skrypty wkleja ??

    Offline ShadowBlade

    • Użytkownik
    • Wiadomości: 693
    • Piwa: 1
    • Płeć: Mężczyzna
    • -
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #2 dnia: Marca 28, 2010, 12:17:32 »
    MS - MODULE SYSTEM.

    Offline Kuczix

    • Użytkownik
    • Wiadomości: 21
    • Piwa: 0
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #3 dnia: Marca 28, 2010, 12:26:56 »
    MS - MODULE SYSTEM.

    Co ty nie powiesz ale w JAKIM PLIKU ??

    W różnych, w zależności od skryptu. Wystarczy pokombinować.

    EDIT: Ten skrypt
    Cytuj
        ("exp",[],"Exp...",
           [(add_xp_to_troop, 1000000, "trp_player"),
            ]),
    « Ostatnia zmiana: Marca 28, 2010, 12:59:47 wysłana przez Kuczix »

    Offline PissInPeace

    • Użytkownik
    • Wiadomości: 489
    • Piwa: 0
    • Płeć: Mężczyzna
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #4 dnia: Marca 28, 2010, 20:54:07 »
    MS - MODULE SYSTEM.

    Co ty nie powiesz ale w JAKIM PLIKU ??

    W różnych, w zależności od skryptu. Wystarczy pokombinować.

    EDIT: Ten skrypt
    Cytuj
        ("exp",[],"Exp...",
           [(add_xp_to_troop, 1000000, "trp_player"),
            ]),


    Ten akurat w module_game_menus w "menu" village. Ponieważ chciałeś, aby ta opcja była w każdej wiosce...

    @DOWN: Pogrzeb w tym pliku i sam dojdź gdzie to wkleić... Nikt za Ciebie nie będzie wszystkiego robił.
    « Ostatnia zmiana: Marca 28, 2010, 21:50:12 wysłana przez PissInPeace »

    Offline Kuczix

    • Użytkownik
    • Wiadomości: 21
    • Piwa: 0
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #5 dnia: Marca 28, 2010, 21:45:46 »
    To może jakiś mini tutorial :) Ja jestem amatorem :)

    MS - MODULE SYSTEM.

    Co ty nie powiesz ale w JAKIM PLIKU ??

    W różnych, w zależności od skryptu. Wystarczy pokombinować.

    EDIT: Ten skrypt
    Cytuj
        ("exp",[],"Exp...",
           [(add_xp_to_troop, 1000000, "trp_player"),
            ]),


    Ten akurat w module_game_menus w "menu" village. Ponieważ chciałeś, aby ta opcja była w każdej wiosce...

    Bo to mi bardzo dużo pomogło :)(sarkazm)

    Offline woyo-sensei

    • Użytkownik
    • Wiadomości: 757
    • Piwa: 3
    • Płeć: Mężczyzna
      • Wątek o modzie na oficjalnym forum TaleWorlds
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #6 dnia: Marca 28, 2010, 22:17:43 »
    To potrzebujesz tutoriala czy tego, zeby ktos cie za reke prowadzil? Koledzy pokazali sposob, napisali gdzie i jak to wprowadzic. Czego jeszcze chcesz? Troche samodzielnego myslenia nie zaszkodzi...

    Offline Kuczix

    • Użytkownik
    • Wiadomości: 21
    • Piwa: 0
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #7 dnia: Marca 29, 2010, 19:59:02 »
    Spoko już mam wszystko na 63 i po 10 skill - Nie można mieć więcej ?

    Offline woyo-sensei

    • Użytkownik
    • Wiadomości: 757
    • Piwa: 3
    • Płeć: Mężczyzna
      • Wątek o modzie na oficjalnym forum TaleWorlds
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #8 dnia: Sierpnia 16, 2010, 14:36:25 »
    Panowie skrypterzy, a jak np wysłać po przegranej bitwie naszego herosa do lochu?
    Mam skrypt, w którym toczymy jakąś tam walkę. Po wygraniu tej walki pokazuje się komunikat z wygraną nagrodą, itd. Tu wszystko gra. A jak wysłać naszego dzielnego herosa do lochu, np Sarranidów po przegranej walce? Jest tego trochę w module_mission_templates, ale potrzebuję tylko fragmentu samego wysyłania do lochów, a nie mam pojęcia jak to ugryźć. Coś na wzór send_hero_to_prison (fac_faction_6) :P Nasz hero po wysłaniu odsiedzi jakąś tam karę z losową szansą na ucieczkę. Jego żołnierze przepadają.
    Wie ktoś jak rozwiązać mój problem?
    Jeśli komuś przyda się kod to http://www.wklej.org/id/341953/
    « Ostatnia zmiana: Sierpnia 16, 2010, 14:40:19 wysłana przez woyo-sensei »

    Offline Leinnan

    • Użytkownik
    • Wiadomości: 1537
    • Piwa: 61
    • Płeć: Mężczyzna
    • Szczęść Boże, służby i loże
    • Steam ID: Mój status Steam
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #9 dnia: Września 26, 2010, 19:45:15 »
    Chciałbym sam przydzielać który lord ma mieć jaki banner.
    Znalazłem ten skrypt w module_scripts
    Cytuj
    #normal_banner_begin
              (gt, ":banner", 0),
    #custom_banner_begin
    #          (ge, ":banner", 0),
              (assign, ":comment", "str_comment_intro_noble_liege"),
              (val_add, ":comment", ":reputation"),
           (else_try),
              (assign, ":comment", "str_comment_intro_common_liege"),
              (val_add, ":comment", ":reputation"),
           (try_end),
    Czy to tu trzeba zmienić jakoś lub rozbudować czy gdzie indziej.
    Tak czy inaczej proszę o pomoc.
    Mit der Dummheit kämpfen die Götter selbst vergebens
    steam | slavic castles |  last.fm | moddb.com | Stary, najlepszy lider Sclavinii

    Offline PissInPeace

    • Użytkownik
    • Wiadomości: 489
    • Piwa: 0
    • Płeć: Mężczyzna
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #10 dnia: Września 26, 2010, 20:09:17 »
    Spróbuj dodać takie coś w skrypcie game_start

    (troop_set_slot, "trp_", slot_troop_banner_scene_prop, "spr_"),

    Tam gdzie "trp_" to id lorda, a tam gdzie "spr_" scene prop banneru, np. spr_banner_a (id scene propu możesz zobaczyć w edit mode)

    Offline Leinnan

    • Użytkownik
    • Wiadomości: 1537
    • Piwa: 61
    • Płeć: Mężczyzna
    • Szczęść Boże, służby i loże
    • Steam ID: Mój status Steam
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #11 dnia: Września 26, 2010, 22:35:16 »
    Wielkie dzięki.
    Czy wie ktoś jak zrobić, że gdy podczas bitwy bohater omdleje nasi ludzie dalej walczyli?

    Edit:A można by zrobić ze gdy lord A ma banner B i gdy bohater na początku gry wybierze banner B żeby lordowi A nie zmieniał się banner na jakiś inny? Oczywiście z tym skryptem
    (troop_set_slot, "trp_", slot_troop_banner_scene_prop, "spr_"),
    « Ostatnia zmiana: Września 27, 2010, 22:49:36 wysłana przez rybopiotr »
    Mit der Dummheit kämpfen die Götter selbst vergebens
    steam | slavic castles |  last.fm | moddb.com | Stary, najlepszy lider Sclavinii

    Offline PissInPeace

    • Użytkownik
    • Wiadomości: 489
    • Piwa: 0
    • Płeć: Mężczyzna
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #12 dnia: Września 27, 2010, 23:25:04 »
    Da się, ale musisz ingerować w kod "prezentacji" wybierania banneru.

    W prezentacji banner_selection "zakomentuj" (wstaw przed linijką znak #) to:

                (troop_set_slot, ":cur_troop", slot_troop_banner_scene_prop, banner_scene_props_end_minus_one),

    i to:

                (party_set_banner_icon, ":cur_party", banner_map_icons_end_minus_one),

    Powinno pomóc.
    « Ostatnia zmiana: Września 27, 2010, 23:30:52 wysłana przez PissInPeace »

    Offline Leinnan

    • Użytkownik
    • Wiadomości: 1537
    • Piwa: 61
    • Płeć: Mężczyzna
    • Szczęść Boże, służby i loże
    • Steam ID: Mój status Steam
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #13 dnia: Września 28, 2010, 00:01:45 »
    Niestety nie działa.
    Znalazłem takie coś w Europe 1200:
    Cytuj
    ("assign_banners",
        [    
         (try_for_range, ":center_no", walled_centers_begin, walled_centers_end),
         (try_begin),
            (party_get_slot, ":lord_troop_id", ":center_no", slot_town_lord),
            (troop_get_slot, ":cur_banner", ":lord_troop_id", slot_troop_banner_scene_prop),
            (gt, ":cur_banner", 0),
            (val_sub, ":cur_banner", banner_scene_props_begin),
            (val_add, ":cur_banner", banner_map_icons_begin),
            (party_set_banner_icon, ":center_no", ":cur_banner"),
          (try_end),
          (try_end),]),
    Kurde, sam bym chciał umieć tworzyć skrypty ale dla mnie to czarna magia,jednak staram się nie poddawać.
    Jak na razie moje skrypty = kompletna porażka.
    Mit der Dummheit kämpfen die Götter selbst vergebens
    steam | slavic castles |  last.fm | moddb.com | Stary, najlepszy lider Sclavinii

    Offline Daedalus

    • Użytkownik
    • Wiadomości: 3917
    • Piwa: 143
    Odp: SKRYPTY - wprowadzenie.
    « Odpowiedź #14 dnia: Września 28, 2010, 11:43:19 »
    Cytuj
    A można by zrobić ze gdy lord A ma banner B i gdy bohater na początku gry wybierze banner B żeby lordowi A nie zmieniał się banner na jakiś inny?

    W prezentacji "banner_selection" wykomentuj ten fragment:

    Cytuj
               (assign, ":end_cond", kingdom_heroes_end),
               (try_for_range, ":cur_troop", kingdom_heroes_begin, ":end_cond"),
                 (troop_slot_eq, ":cur_troop", slot_troop_banner_scene_prop, ":selected_banner_spr"),
                 (assign, ":troop_to_change", ":cur_troop"),
                 (assign, ":end_cond", 0),
                 (troop_set_slot, ":cur_troop", slot_troop_banner_scene_prop, banner_scene_props_end_minus_one),
                 (troop_get_slot, ":cur_party", ":cur_troop", slot_troop_leaded_party),
                 (gt, ":cur_party", 0),
                 (party_set_banner_icon, ":cur_party", banner_map_icons_end_minus_one),
               (try_end),