van_Helsng
2008.07.11 22:54
  • Jak w temacie mam parę pytań, głównie na temat opcji w dialogach. Tworzę swojego gościa i nową podklasę w Weidu. Nie denerwujcie się na mnie jak coś źle, To dopiero moj pierwsza postać, ale szybko się uczę.

    Problem 1: nie wyświetla mi się nazwa i opis podklasy, reszta jest git.
    to co wyżej to jest
    SAY ~Gościu~
    SAY ~Gościu~
    SAY ~Gościu: jest jaki jest~
    Czego tu/\ brak?
    Problem 2: robię dialogi dla gościa i chciałbym żeby przed jego przyłączeniem trzeba mu było przynieść kilka przedmiotów
    przykład:(konstrukce dialogów znam)
    SAY ~cześć masz mój miecz?~
    bleble ~HasItem("miecz")~tak~
    bleble ~Nie~
    END
    Chodzi mi o to co trzeba wpisać nad say żeby nie przechodził do następnego polecenia dopuki nie dostanie miecza.

    problem 3: jak zrobić żeby inna postać (jaheira) wtrąciła się do dialogu pierwszego. Wiem że jest to w bibliotece ale przykład jest trochę mętny.
    Gościu: ble ble ble
    Ja: ble ble ble
    Jaheira: ble ble ble
    Gościu: ble ble ble
    Ja: ble ble ble
    Gościu: ble ble ble
    Ja: ble ble ble
    Najlepiej podajcie szkielet takiej rozmowy.

    Problem 4: Tu o dialogi pojawiające się po jakimś momęceie. np od razu po jakiejś innej rozmowie. albo parę dni później.

    Problem 5: jak zrobic przedmiot którego siła rośnie wraz z poziomem właściciela.

    To narazie tyle, a jak skończe postać, przetestuje to ją tutaj dodam.

    Pozdro!
riklaunim
2008.07.11 22:54
  • ja się banterami (pogaduszki) nie zajmowałem bardziej szczegółowo.

    Odnośnie 2, to jest fragment dialogu Hulla, przyniesienie miecza:
    IF WEIGHT #1 ~ReactionGT(LastTalkedToBy,NEUTRAL_UPPER)
     HasItem("SW1H12",LastTalkedToBy)
     ~ THEN BEGIN 1 // from:
     SAY #15983 /* ~dzięki za miecz, masz kasę.~ */
     IF ~~ THEN DO ~AddexperienceParty(50)
     TakePartyItem("SW1H12")
     GivePartyGold(20)
     SetGlobal("HelpHull","GLOBAL",1)
     ~ JOURNAL #16529 /* ~wpis do dziennika.~ */ EXIT
     END
    

    Możesz zobaczyć też np. Cromwella czy Sir Sarlesa w BG 2. Robisz IF/THEN/DO (opis) na przyniesienie przedmiotu, pod tym dajesz wersję gdy go nie ma - i powinno działać.

    Bardziej złożone problemy rozwiążą eksperci: http://forums.spellholdstudios.net/index.php?showforum=395 :grin:


    Odnośnie ulepszanego z poziomem przedmiotu to dla podklasy możesz dać czar, który będzie tworzył przedmiot, a na wyższych zabierał stary a dawał nowy lepszy :)
van_Helsng
2008.07.11 22:54
  • Aha, dzięki
Marcin
2008.07.11 22:54
  • problem 5: Możesz napisać skrypt. Tak się dzieje u Valen prawda.
Kiavo
2008.07.11 22:54
  • Do 3.

    BEGIN ~ILIAV~

    (...)

    IF ~~ THEN BEGIN iavtalk
    SAY ~Rozumiem, że nie rozumiecie. Wy jesteście całkiem normalni i normalne jest, że nie pojmiecie wszystkich rzeczy na świecie w jednej sekundzie.~
    IF ~IsValidForPartyDialog("Jaheira")~ THEN EXTERN JAHEIRAJ iavjaheira // teraz Jaheira ma swoje pięć minut
    IF ~!IsValidForPartyDialog("Jaheira")~ THEN GOTO iavmuchtime // jeśli nie ma Jaheiry, rozmowa przejdzie do tej kwestii
    END

    IF ~~ THEN BEGIN iavmuchtime
    SAY ~Och, ale wy nie mieliście całej wieczności na wiele pożytecznych rzeczy. (ble ble ble aż do końca tego pliku dialogowego...)
    END

    //i blok wtrącenia Jaheiry

    APPEND JAHEIRA
    IF ~~ THEN BEGIN iavjaheira
    SAY ~(np.) Nie próbuj go obrazić, . Wyczuwam w nim moc... której nie chciałabym doświadczyć na mojej skórze.~
    IF ~~ THEN EXTERN ILIAV iavmuchtime
    END
    END //muszą być dwa END na końcu bloku APPEND.

    Do 4.

    Jeżeli mają być one po jakimś zdarzeniu, to na końcu dialogu/cutscenki/skryptu wydarzenia wstaw ustawienie jakiejś zmiennej, np.:

    IF ~~ THEN DO ~SetGlobal("nazwa_zmiennej1","GLOBAL",1)~ EXIT
    END
    W skrypcie dialogu.

    Potem napisz taki blok w skrypcie postaci, która ma rozpoczynać dialog:

    IF
    Global("nazwa_zmiennej1","GLOBAL",1)
    Global("zmienna_bezpieczeństwa1","LOCALS",0) //żeby dialog włączył Ci się tylko raz
    THEN
    RESPONSE #100
    SetGlobal("zmienna_bezpieczeństwa1","LOCALS",1)
    StartDialogueNoSet(Player1) //rozpoczyna dialog z główną postacią
    END

    A jeżeli chodzi o określony czas od zdarzenia:

    Zamiast zmiennej na końcu skryptu ustaw timer, np:

    SetGlobalTimer("nazwa_timera","GLOBAL",FIVE_DAYS)

    W skrypcie postaci dodaj taki blok:

    IF
    GlobalTimerExpired("nazwa_timera","GLOBAL")
    Global("zmienna_bezpieczeństwa1","LOCALS",0)
    THEN
    RESPONSE #100
    SetGlobal("zmienna_bezpieczeństwa1","LOCALS",1)
    StartDialogueNoSet(Player1)
    END

    I w ten sposób rozmowa rozpocznie się 5 dni czasu gry od wydarzenia, w którego skrypcie umieściłeś rozpoczęcie timera.

    Do 5.

    Przeglądałem zakładkę Extended Effects w DLTCEP i nie znalazłem nic, co by zmieniało efekt przedmiotu w zależności od poziomu bohatera. Takie rzeczy to tylko w tworzeniu czarów;]

    Się rozpisałem... That's All.
Marcin
2008.07.11 22:54
  • Do problemu 5

    Pomyśmy, że mamy miecz +2 (MIECZ2) i miecz +3 (MIECZ3). Chcemy aby nasz postać gdy osiągnie 10 poziom to aby miecz +2 zmienił się w +3.

    W skrypcie naszej postaci piszemy coś takiego:


    IF
    LevelGT(Myself,9) // sprawdz, czy postać ma poziom 10 (piszemy zawsze cyfrę o 1 poziom mniej, czyli 9)
    Global("nazwa_zmiennej","GLOBAL",0)// ustawienie zmiennej
    HasItem("MIECZ2",Myself) //sprawdza, czy postać ma przy sobie miecz +2
    THEN
    RESPONSE #100
    DestroyItem("MIECZ2") // zniszczenie miecza +2
    CreateItem("MIECZ3",1,1,1) //Tworzy miecz +3
    SetGlobal("nazwa_zmiennej","GLOBAL",1) //zmiana zmiennej
    END

    Dosyć proste wystarczy napisać skrypt do naszej postaci.


Nie możesz dodawać nowych Tematów
Nie możesz dodawać nowych postów
Nie jesteś moderatorem



Biblioteka Riklaunima. Hosting NRC-FOSS na AU-KBC. Serwis oparty o Django/Python.