World of Gothic Archiv
Alle Beiträge von JonathanSalznik
Seite 1 von 1  1 
22.03.2004, 17:37 #1
JonathanSalznik
Beiträge: 22
NPC erscheint nicht -
Hast du überprüft, ob dein Waynet zusammenhängend ist? Also ob es vom jedem Wegpunkt zu jedem anderen Wegpunkt einen Pfad gibt?

Wenn einzelne Wegpunkte keine Verbindungen haben oder das Waynet in nicht miteinander verbundenen Komponenten zerfällt, finden die NSC unter Umständen den Weg zum Ziel-WP nicht mehr und bleiben einfach stehen.

Die Wegpunkte müssen auch so dicht über die gesamte Welt verteilt sein, dass der NSC immer einen WP in seiner unmittelbaren Umgebung hat.
25.03.2004, 14:40 #2
JonathanSalznik
Beiträge: 22
Cutscene-Sequencer - Cutscene-Sequencer
Ich würde gerne eine Cutscene erstellen, aber leider ist im Spacer der entsprechende Menüpunkt "Cutscene-Sequencer" immer ausgegraut.

Was muss ich tun, um den Sequencer zu aktivieren?
31.03.2004, 18:05 #3
JonathanSalznik
Beiträge: 22
Neuer Zauber...kein Speicher? -
Du kannst keine neuen Zauber hinzufügen, da viele Aspekte eines Zaubers (z.B. bei Teleport, dass der Spieler anfängt zu schweben und von einer Aura umgeben wird) fest in der ZenGin integriert sind.

Du kannst aber z.B. ein Buch erstellen, welches jedes Mal Mana abzieht und den Spieler an einem bestimmten Ort teleportiert, sobald er es liest.
31.03.2004, 19:38 #4
JonathanSalznik
Beiträge: 22
Arbeit nach dem Erscheinen des G2MDKs -
Meiner Ansicht nach ist die größte Schwäche von Daedalus das Fehlen von richtigen Arrays.. Es wäre schön, wenn Sachen wie

var int i;
var int j;
var int a[5];

i = 5;
a[2] = i;
j = a[2];

möglich wäre.
31.03.2004, 20:14 #5
JonathanSalznik
Beiträge: 22
Neuer Zauber...kein Speicher? -
quote:
Zitat von aragorn_16
Natürlich kann man neue Zauber machen. Die von Diccuric habens ja auch geschafft.


Ohne die Sourcecodes kann ich das natürlich nicht eindeutig sagen, aber die Diccuric-Leute haben wahrscheinlich nur die bestehenden Zauber geschickt modifiziert. Das geht sicherlich (mit gewissen Einschränkungen).

Aber alle Gothic-Zauber unverändert zu behalten und zusätzlich neue Zauber hinzuzufügen wie es Raistlin versucht, geht meiner Ansicht nach nicht.
01.04.2004, 02:00 #6
JonathanSalznik
Beiträge: 22
Monolog eines NSCs -
Den Helden kann du mit

code\:

AI_Output(hero, NULL,...)



einen Monolog führen lassen. Dabei werden auch Untertitel angezeigt (allerdings nicht in einem großen Fenster am oberen Bildschirmrand, sondern in einem kleineren auf Höhe des Charakters)

Das funktioniert auch mit anderen NSC, wenn du die entsprechende C_NPC-Instanz als ersten Parameter verwendest. In Zuständen kann man

code\:

AI_Output(self, NULL,..)



benutzen (siehe z.B. ZS_Meditate)
01.04.2004, 02:17 #7
JonathanSalznik
Beiträge: 22
G2 musik -

  • Neues Projekt erstellen (File->New->Project)
  • File->Insert Files into Project. Als Dateityp "DLS Collection File" wählen und die DLS aus einem der Unterverzeichnisse von _workDATAMusic laden
  • Nochmal Insert Files. Diesmal aber ALLE Style Files aus dem selben Unterverzeichnis laden (man kann mehrere Dateien gleichzeitig auswählen).
  • Das gleiche mit den "Segment Files".
  • Eines der Segment Files im Baum durch einen Doppelclick auswählen. Es öffnet sich ein neues Fenster. Jetzt kann man das Lied mit dem Play-Button abspielen.
01.04.2004, 16:38 #8
JonathanSalznik
Beiträge: 22
Neuer Zauber...kein Speicher? -
Sobald du in Magic_Intern.d eine neue Konstante erstellt, ist das ein neuer Zauber. Eine Modifikation wäre es, den Wegpunkt einer der vorhandenen Teleport-Zauber zu ändern ("Teleport zu den Wassermagier" führt dann z.B. woanders hin).

Du solltest Dir allerdings auch mal spells_params.d angucken.. Wenn du die Arrays dort erweiterst und ein passendes Objekt vom C_Spell_Proto erstellt, klappt es vielleicht doch mit dem neuen Zauber.
03.04.2004, 22:53 #9
JonathanSalznik
Beiträge: 22
Wie bekommt man aus .3ds .zen? -
Was genau ist jetzt dein Problem? Eine 3DS-Datei verwandelst du in eine ZEN-Datei, indem du das Mesh lädst, im Nicht-Editormode kompilierst und dann als ZEN speicherst. Aber das weißt du ja scheinbar schon..
04.04.2004, 21:51 #10
JonathanSalznik
Beiträge: 22
Gunther kommt nicht -
Dafür brauchst du den Spacer doch garnicht, das geht auch in Gothic:

Marvin-Mode aktivieren, mit F2 Konsole öffnen, "TOGGLE WAYNET"

Gothic wird du wegen deiner Tests doch so oder so ständig laufen.. :D
06.04.2004, 14:13 #11
JonathanSalznik
Beiträge: 22
Schmieden -
Die Funktion muss SMITH_S1() heißen. Gothic hängt immer ein _S<erreichter Zustand des MOBs> hinten an.

Bei deiner Lösung wirst du außerdem eine Mischung von "Schlafen" und "Schmieden"-Optionen im erscheinen Mulitple-Choice-Fenster bekommen. Das wird auch passieren, wenn sich der Spieler ins Bett legt. Du mußt leider sowohl sleepabit als auch deine Smith-Funktion so anpassen, dass die Conditions der C_Info-Objektt nur dann wahr sind, wenn der Spieler ein Bett bzw. einen Amboss verwendet.
06.04.2004, 14:25 #12
JonathanSalznik
Beiträge: 22
Schmieden -
Leider ja.. Die Auswahl wird realisiert, indem der Spieler mit sich selbst "spricht".. und für Dialoge trägt Gothic alle passenden C_Info-Objekte aus allen Source-Dateien zusammen.
06.04.2004, 14:50 #13
JonathanSalznik
Beiträge: 22
Schmieden -
Am besten definierst du an zentraler Stelle

code\:

var int mobInUse;

const int MOBINUSE_ANVIL = 1;
const int MOBINUSE_BED = 2;
const int MOBINUSE_PSILAB = 3;
..



Die *_S1-Funktionen setzen die mobInUse-Variable dann entsprechend und die Conditions fragen sie ab.

Ich habe es gerade mal ausprobiert: Wenn ich bei der "onStateFunc" vom Amboss im Aussenring des alten Lager SMITH eintrage, wird bei mir SMITH_S1() korrekt aufgerufen. Vielleicht Probleme mit der Groß-/Kleinschreibung?
06.04.2004, 15:09 #14
JonathanSalznik
Beiträge: 22
Schmieden -
Dann hat es nicht funktioniert. "ENDE." mit Punkt ist ein spezieller Eintrag, den Gothic automatisch anzeigt, wenn überhaupt kein C_Info-Objekt gefunden wurde, bei dem die Condition wahr ist.
06.04.2004, 16:59 #15
JonathanSalznik
Beiträge: 22
Schmieden -
Poste bitte mal, was du genau gemacht hast.

Sehen deine Condition-Funktionen so aus?

code\:

FUNC INT PC_Smith_easy_Condition()
{
if (mobInUse == MOBINUSE_ANVIL)
{
return 1;
};
};



Steht in SMITH_S1()

code\:

mobInUse = MOBINUSE_ANVIL;



und in SLEEPABIT_S1()

code\:

mobInUse = MOBINUSE_BED;



jeweils direkt VOR dem Ai_ProcessInfos (her)?
06.04.2004, 18:04 #16
JonathanSalznik
Beiträge: 22
Schmieden -
quote:
Zitat von König Rhobar II
Jetzt schon :D
Danke



Kein Problem, ich habe die Infos mal ins Wiki eingetragen..

@aragorn_16: Was für Schmiedebedingungen meinst du genau? In conditionFunc kannst du eine Funktion einfügen, die TRUE zurückgeben muss, damit der Character das MOB benutzen kann. In useWithItem kommt der Name des Gegenstandes rein, den man im Inventar haben muss, um den MOB zu verwenden.
07.04.2004, 22:59 #17
JonathanSalznik
Beiträge: 22
Schmieden -
Zentrale Stelle = (hier)Eine Datei, die vor sleepabit.d und deinen erstellten Variationen in gothic.src steht. Entweder erstellt du selbst eine oder verwendest z.B. STORYSTORY_GLOBALS.D

Danach geht die Fehlermeldung auch weg.. Die kommt daher, dass die Variable mobInUse und die Konstante MOBINUSE_BED nicht vorher definiert wurden.
07.04.2004, 23:11 #18
JonathanSalznik
Beiträge: 22
Script Problem -
Die Zahlen 6, 7, 13 beziehen sich auf die Stimme des NSCs und nicht auf dessen Position.

Willst du die Info nur den sechs Gardisten im Aussenring zuweisen, musst du dafür leider einen neuen Eintrag in B_AssignAmbientInfos.d erzeugen.
17.04.2004, 00:01 #19
JonathanSalznik
Beiträge: 22
[G1]Item Flags -
Npc_RemoveInvItems funktioniert nur korrekt bei Gegeständen, die gestapelt werden können (flag |= ITEM_MULTI) wie Pfeile oder Bolzen.

Gegenstände zu stapeln, die angezogen werden können, macht meistens wenig Sinn, da man dann nur noch einen der gestapelten Gegenstände anziehen kann. Bei Gürteln sollte es allerdings kein grosses Problem sein, da man eh nur einen gleichzeitig tragen darf.
20.04.2004, 20:32 #20
JonathanSalznik
Beiträge: 22
Anfänger =) -
GothicEditingWiki
26.04.2004, 16:53 #21
JonathanSalznik
Beiträge: 22
Pause -

  • CTriggerScript-Objekt in die ZEN einfügen und eindeutigen Namen geben (z.B. DELAY_1)
  • Unter fireDelaySec den gewünschten Abstand zwischen den beiden Funktionsaufrufen eintragen
  • Ins Feld scriptFunc kommt ein Funktionsname, z.B. ON_DELAY_1
  • Direkt hinter AI_PrintScreen kommt dann Wld_SendTrigger("DELAY_1");
  • In FUNC VOID ON_DELAY_1() kommt das zweite AI_PrintScreen
26.04.2004, 17:44 #22
JonathanSalznik
Beiträge: 22
Pause -
In die Weltdatei natürlich.. Der Spieler muss sich in der editierten ZEN befinden, sonst funktioniert es nicht.
Seite 1 von 1  1