- 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!
-
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ę.
- 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 :)
-
ja się banterami (pogaduszki) nie zajmowałem bardziej szczegółowo.
- van_Helsng
2008.07.11 22:54 -
-
Aha, dzięki
-
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.
-
Do 3.
- 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.
-
Do problemu 5
Nie możesz dodawać nowych Tematów
Nie możesz dodawać nowych postów
Nie jesteś moderatorem