World of Gothic Archiv > Editing
Wo finde ich Schmiedefunktionen?
Seite 1 von 1  1 
16.11.2002, 23:32 #1
BT-Sleepwalker
Beiträge: 122
Wo finde ich Schmiedefunktionen?
Hallo erstmal, bin neu hier im Forum, ich hab auch noch net viel Ahnung vom Editing, möchte aber gern ein bisschen rumbasteln.
Ich habe mir was ausgedacht, wie man das Schmieden etwas interessanter machen könnte, habe aber leider zum Schmieden keine Funktion(en) gefunden, ich meine, da müsste es doch so Funktionen geben, wo z.B. drinsteht, dass beim Erhitzen des Rohstahls, 1 Rohstahlitem durch ein glühender Stahl (oder so) Item ersetzt wird und sowas habe ich halt noch nicht gefunden:(
Wäre nett wenn mir jemand helfen könnte:)
P.S. Hab mit der Suchenfunktion kein Thread dazu gefunden, also falls ich nur zu doof zu war, n Link würde mir auch reichen ;)
17.11.2002, 11:06 #2
Malek
Beiträge: 6.225

Tut mir leid dich enttäuschen zu müssen, aber so ein Script existiert nicht. Die Funktion die du suchst ist hardcodiert in der Animationsdatei (humans.mds) enthalten, daher also leider für Modder nicht zugänglich.
Du könntest höchstens eine Funktion schreiben, die beim benutzen des Mobs (also des Objekts an dem geschmiedet wird) aufgerufen wird. Am Beispiel der Bedrohung sieht man dass es einigermassen gut klappt (siehe: Alchemist), jedoch gibt es auch ein paar Haken. Beim Schmieden am Ofen hat man immer ein Stück glühender Stahl im Inventar wenn man ihn betätigt hat. Das lässt sich notdürftigerweise umgehen, wenn man die Item-Definition für den Glühstahl ändert und ihm dann z.b. die Parameter einer profanen Münze (fällt am wenigsten auf) gibt.
17.11.2002, 18:41 #3
BT-Sleepwalker
Beiträge: 122

Oh, ok, danke für die Antwort, klingt doch etwas zu kompliziert für den Anfang, da ich net wirklich Ahnung hab bis jetzt, wie man z.B. ne Funktion schreibt, die so ein mob aufruft
Werde wohl doch erstma was anderes versuchen;)
17.11.2002, 20:34 #4
GülleMüller
Beiträge: 472

Tach, Post :)

quote:
Beim Schmieden am Ofen hat man immer ein Stück glühender Stahl im Inventar wenn man ihn betätigt hat.

Nö, einfach inner Humans.mds die eventTags auskommentieren.
Allerdings würd ich den Rohstahl in der linken Hand beim benutzen des Feuers drinn lassen, sieht sonst komisch aus.

Ähm, weiß net, ob ich das jetzt falsch verstanden hab, aber die Animationsdateien sind auch nur scripts und damit doch net hardcodiert, oder?
Nur so nebenbei, stör dich net weida dran :)

@BT-Sleepwalker: Also da du ja das nicht weiter machen wolltest weiß ich nicht ganz, wie weit ich gehen soll. Aber zum Spaß kannst du ja mal die Humans.mds editieren:
1. Suche die Animationen(Anims) für alle Schmiedmobsis (1.Kommentar dort ist "Blacksmith - Splitted", einfach danach suchen)
1.2. Du findest dann alle wichtigen anims für das Benutzen des Fireplace,Amboss und des Wassereimers
2. Die wichtigen Zeilen sind die mit *eventTag. Jetzt kommt es drauf an, was du machen willst, aber damit nach dem Benutzen des Feuers kein Glühstahl im Inventory zurückbleibt ersetze unter
// Fireplace - useWithItem = BS_SWORD_RAW die Zeile
*eventTag (4 "DEF_REMOVE_ITEM") mit
*eventTag (4 "DEF_DESTROY_ITEM").
Gleichermaßen kannst du auch verhindern, daß man beim Amboss eine glühende Klinge und beim Wassereimer eine Klinge bekommt. Dabei aber immer beachten, daß im originalen Script für die Benutzung des Feuers min. ein Rohstahl, beim Amboss ein glühender Stahl, beim Wassereimer eine glühende Klinge und beim Schärfen (shit, wie heißt dat Ding nochmal? :)) eine Klinge erforderlich ist.
Auf deutsch: Wenn du alle Items zerstörst und nicht durch nen script das nächst wichtige Item dem Spieler gibst kann er mit nem Rohstahl net viel anfangen :)

Aber ich glaub das war schon zu weit, naja, vielleicht bringts ja dem einen oder anderen was
cu
GüMü
17.11.2002, 22:48 #5
BT-Sleepwalker
Beiträge: 122

Interessant, klingt zwar trotzdem ziemlich schwierig, aber ma gucken, vielleicht versuch ich mich da mal dran, auf jedenfall ein großes Dankeschön an dich :)
20.11.2002, 11:39 #6
BT-Sleepwalker
Beiträge: 122

Da ich nach ner Deutschklausur mal wieder bissl Zeit und Lust hatte, hab ich mir gedacht, versuch ich das mal, und prompt tritt ein Problem auf, ich find keine humans.mds, muss man die erst irgendwo "raushohlen"? Sry, wie gesagt bin totaler newbie auf dem Gebiet
20.11.2002, 14:46 #7
Veruekteshuhn
Beiträge: 30

Hast du das Dev-Kit? Versuch mal die Windowsfunktion: "Suchen".
20.11.2002, 17:29 #8
GülleMüller
Beiträge: 472

Hai,
quote:
ich find keine humans.mds, muss man die erst irgendwo "raushohlen"?

Ja, du mußt das GothicVDFS Tool runterladen und auf den Button neben "Filename" klicken. Dann unter [Gothic]Data die Datei anmis.vdf auswählen und entweder alles extrahieren oder nur die Humans.mds (müßte eigentlich auch gehen, hab ich aber noch nicht probiert, ich hab alles entpackt). Diese liegt dann unter [Gothic]_workDATAANIMS .
Hinweis: Damit die Änderungen auch übernommen werden immer im GothicStarter "reparse all scripts" und "process physical files on disk first..." aktivieren.

So kannst du auch die Sound- und Texturdateien(u.v.m.) extrahieren und bearbeiten.

Das sollte ausreichend sein, wen nich, frag einfach ;)


cu
GüMü
21.11.2002, 20:21 #9
BT-Sleepwalker
Beiträge: 122

@GülleMüller thx nochmals :)
@Veruekteshuhn so schlau war ich dann grad noch selber :D
25.11.2002, 16:48 #10
Graue Eminenz
Beiträge: 12

quote:
Zitat von Malek
Du könntest höchstens eine Funktion schreiben, die beim benutzen des Mobs (also des Objekts an dem geschmiedet wird) aufgerufen wird.


gut, gut, aber ich habe auch nach langer Suche keine Funktion gefunden, in der es mit CreateInvItem klappt.

Wenn ich sagen wir mal bei der Benützung der Pfanne abfragen will, wie groß die Geschicklichkeit ist, und ab 15 das eine Item erzeugen will, unter 15 das andere, wo und wie müsste ich das eintragen?
04.12.2002, 13:16 #11
Malek
Beiträge: 6.225

Du musst eine Funktion schreiben, die den gewünschten Effekt (z.B. das erstellen von Inventaritems) beinhaltet. Am besten schreibst du die zu den anderen in die MOB.D .

Beispiel (enthält übr. auch schon die Geschick-Abfrage):
quote:

FUNC int MC_PAN_USE ()
{
if (hero.attribute[ATR_Dexterity]>=(15))
{
CreateInvItem(HERO, Item_1);
return TRUE;
}
else
{
CreateInvItem(HERO, Item_2);
return FALSE;
};
};



Nun musst du nur noch die Pfanne, bei deren Benutzung die Funktion aufgerufen werden soll im Spacer editieren.
Nun wirds ein bisschen kniffliger:

Markiere die Pfanne, und trage bei
TriggerTarget
einen beliebigen Namen ein, allerdings muss er in dem entsprechenden level einzigartig sein. Nehmen wir einfach mal
PAN_USE_TRIGGER_01
Apply drücken, und auf "Create" gehen. Dort hangelst du dich jetzt bis zum TriggerScript hinunter.
Und zwar:
zCVOB/zCTriggerBase(abstract)/zCTrigger/oCTriggerScript
Diesen Vob erstellst du (markieren und in der Welt auf
insert[oCTriggerScript]
Nun solltest du den neuen Vob unbedingt markiert lassen, da er unsichtbar ist! Gib ihm sofort einen Namen (also bei vobName eintragen), und zwar denselben wie bei TriggerTarget eingetragen wurde. Hier also wieder
PAN_USE_TRIGGER_01
Die restlichen Werte lässt du am Besten unangetastet. Wichtig ist hier nur, dass du bei scriptFunc (ganz unten) den Namen der Funktion die du aufrufen möchtest einträgst, also wieder
MC_PAN_USE
Jetzt ist der Trigger fertig, wenn du jetzt die Pfanne markierst siehst du einen blauen Strich als Verbindung zum ScriptTrigger.
Wenn die Pfanne nun aktiviert wird, sendet sie einen OnTrigger Befehl an den Scripttrigger, der daraufhin die Funktion aufruft.

Noch ein Zusatz: Du solltest bei der Pfanne den Wert
UseWithItem
beachten bzw editieren, wenn du nicht möchtest dass man beim benutzen ein rohes Stück Fleisch braucht.
04.12.2002, 14:30 #12
Graue Eminenz
Beiträge: 12
DANKE
Hab wenigstens was zu tun, während ich auf Gothic 2 warte... es gibt es zwar schon in meiner Nähe, aber ich bekomme erst in den nächsten Tagen Geld dafür
08.12.2002, 18:26 #13
GülleMüller
Beiträge: 472
Einspruch!
Und noch ein Zusatz:
Falls du nach dem Benutzen der Pfanne sowohl ein Stück gebratenes Fleisch und dein Item im Inventory hast das folgende eventTag in der Humans.mds auskommentieren:

*eventTag (33 "DEF_EXCHANGE_ITEM" "ZS_LEFTHAND" "ItFoMutton")


oder wie bereits oben beschrieben:

*eventTag (26 "DEF_REMOVE_ITEM")

wird zu

*eventTag (26 "DEF_DESTROY_ITEM")


Würde mich mal interessieren, ob das immernoch ausgeführt wird, wenn kein DEF_INSERT_ITEM definiert wurde (über UseWithItem).

cu
GüMü
[EDIT]
achja, das alles im Unterpunkt // TA_CookForMe (Pfanne über Lagerfeuer)
[/EDIT]
Seite 1 von 1  1