[Modding] Modding-Tutorials

Ascalon

Senior Member
Registriert
08.04.2008
Beiträge
2.730
Ja okay, aber wann braucht man das schonmal als Durchschnittsmodder...
 

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.501
Du musst ja kein Hex nehmen – binär, oktal und dezimal tun es auch. :)
 

Arren

Senior Member
Registriert
28.04.2009
Beiträge
421
Hey, in dezimal rechnen kann ich!!!:D
Mir schwirrt aber der Kopf, was der Unterschied zwischen Patchen einer Datei udn überschreiben dieser ist versteh ich, aber wie bewirkt man das eine oder das andere?
Wenn ich mir *.ds und die zugehörigen *.bcs` mache und das dann per WeiDU installiere, patche ich die vorhandenen Dateien, oder überschreibe ich die? Und was sind Offsets?

Tja, ich lerne lieber erstmal krabbeln.
 

Ascalon

Senior Member
Registriert
08.04.2008
Beiträge
2.730
Der Unterschied ist zwischen Patchen und Überschreiben ist ganz einfach: Patchen bereichert die Spielerfahrung bei Baldur's Gate, fügt sich harmonisch in eine Big World Installation ein und sorgt dafür, das Modder und Spieler auf der ganzen Welt zu einer riesigen Community zusammenwachsen. Und Überschreiben ist vom Teufel.

Angenommen, du erschaffst ein Skript, das das Originalskript vom Areal 0400 ersetzen soll, dann legst du in der TP2 (die Datei, die dem Setup sagt, was es machen soll) fest:

COPY ~mymod/my0400.bcs~ ~/override/AR0400.BCS~

Alle Sachen, die im Overrideordner liegen, werden von Baldur's Gate zu allererst benutzt, bevor man sich den fest installierten Digen zuwendet. In diesem Falle würde jedes Mal, wenn du das Areal 0400 betrittst, nur deine BCS Datei aufgerufen, was bedeutet, dass alle Mods, die vor deinem installiert wurden, ihre Änderungen an der 0400 vergessen können - sie wurden ja überschrieben.

Beim Patchen würdest du so vorgehen:

EXTEND_TOP ~AR0400.bcs~ ~mymod/my0400.baf~

Hier würden deine Inhalte einfach nur denen der existierenden AR0400.bcs hinzugefügt. Entweder mit EXTEND_TOP ganz oben oder mit EXTEMD_BOTTOM ganz unten dran. Je nach dem, ob deine Veränderungen schnell passieren sollen oder nicht. Das hat den Vorteil, dass exisiterendes eben nicht überschrieben, sondern nur erweitert wird.

Mit den D-Dateien ist das wieder was anderes, wenn du nach den meisten Tutorials gehst, dann werden erstmal ganz neue Dateien angelegt. Um bestehende Ds zu erweitern brauchs andere Befehle als BEGIN, aber das kommt ja dann später. :)
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Das gleiche wie

COPY ~mymod/my0400.bcs~ ~/override/AR0400.BCS~

wäre in diesem Fall auch

COMPILE ~mymod/AR0400.baf~

Da durch das compilieren die Datei auch überschrieben werden würde... ;)

Ds hingegene kann man auch compilieren wenn der Name gleich ist, solang in der d nicht BEGIN verwendet wird, sondern zB APPEND...

Bei Ares/Cres/Itms/Spls sieht das patchen schon ganz anders aus, hier mal ein "kleiner" Beispielcode wie man nen Trigger hinzufügt...:

Code:
COPY_EXISTING ~AR3302.are~ ~override~
READ_SHORT ~0x05a~ ~#ofTrigg~
READ_SHORT ~0x080~ ~#ofVerti~
READ_SHORT ~0x05c~ ~triggOff~
READ_SHORT ~0x060~ ~spawnOff~
READ_SHORT ~0x068~ ~entraOff~
READ_SHORT ~0x070~ ~contaOff~
READ_SHORT ~0x078~ ~itemsOff~
READ_SHORT ~0x084~ ~ambiaOff~
READ_SHORT ~0x0A8~ ~doorsOff~
READ_SHORT ~0x07c~ ~vertiOff~
READ_SHORT ~0x0B0~ ~animaOff~
READ_SHORT ~0x0BC~ ~songsOff~
READ_SHORT ~0x0C0~ ~restcOff~
READ_SHORT ~0x0C4~ ~automOff~

WRITE_SHORT 0x05a (~%#ofTrigg%~ + 1)
WRITE_SHORT 0x060 (~%spawnOff%~ + 196)
WRITE_SHORT 0x068 (~%entraOff%~ + 196)
WRITE_SHORT 0x070 (~%contaOff%~ + 196)
WRITE_SHORT 0x078 (~%itemsOff%~ + 196)
WRITE_SHORT 0x084 (~%ambiaOff%~ + 196)
WRITE_SHORT 0x0A8 (~%doorsOff%~ + 196)
WRITE_SHORT 0x07c (~%vertiOff%~ + 196)

INSERT_BYTES (~%triggOff%~ + ~%#ofTrigg%~ * 196) 196

SET ~newVert~ = 6
WRITE_SHORT 0x080 (~%#ofVerti%~ + ~%newVert%~)

INSERT_BYTES (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196) (~%newVert%~ * 4)

WRITE_SHORT 0x0B0 (~%animaOff%~ + 196 + (~%newVert%~ * 4))  
WRITE_SHORT 0x0BC (~%songsOff%~ + 196 + (~%newVert%~ * 4))
WRITE_SHORT 0x0C0 (~%restcOff%~ + 196 + (~%newVert%~ * 4))
WRITE_SHORT 0x0C4 (~%automOff%~ + 196 + (~%newVert%~ * 4))
WRITE_ASCII (~%triggOff%~ + ~%#ofTrigg%~ * 196) ~Door3302~  
WRITE_SHORT (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 32) 2    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 34) 311  
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 36) 483    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 38) 429    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 40) 566    
WRITE_SHORT (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 42) ~%newVert%~
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 44) ~%#ofVerti%~
WRITE_SHORT (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 52) 28    
WRITE_ASCII  (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 56) ~CM3370~  
WRITE_ASCII (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 64) ~Exit3302~    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 96) 04    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 100) ~-1~    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 104) 0    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 106) 0    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 108) 00    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 110) 00    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 112) 370    
WRITE_LONG (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 114) 524    
WRITE_ASCII  (~%triggOff%~ + ~%#ofTrigg%~ * 196 + 124) ~None~  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196) 371    
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 2) 490  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 4) 311  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 6) 527  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 8) 371  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 10) 566  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 12) 429  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 14) 516  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 16) 381  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 18) 482  
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 20) 371
WRITE_SHORT (~%vertiOff%~ + ~%#ofVerti%~ * 4 + 196 + 22) 490
 

Arren

Senior Member
Registriert
28.04.2009
Beiträge
421
Heiho,
ich hätt noch eine Frage zum allgemeinen Modden:

Müssen die WeiDu befehle immer Groß geschrieben werden und sind die variablen auch fest in der Schreibweise, unterscheidet WeiDu also allgemein zwischen Groß- und Kleinschreibung?
Wahrscheinlich schon, wollt mich aber noch mal vergewissern.

MfG,

Arren
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Jep, Weidu unterscheidet zwischen Groß- und Kleinschreibung. (Genauso, wenn nicht sogar noch mehr penibel, als hier im Forum. :D)

Also Befehle wie BEGIN, COMPILE, EXTEND_TOP, COPY, etc. werden alle komplett GROßGESCHRIEBEN...

Bei Ordner- oder Dateiangaben ist es egal ob Groß- oder Kleinschrift...

Der Variablentext ist eigentlich egal, der kann Groß- und/oder Kleingeschrieben werden, die Abfrage/das Setzen folgt aber wieder dem Standardmuster:

Global("vaRiAbLenText","Global")
SetGlobal("vaRiAblenText","Global",x)
 

Ascalon

Senior Member
Registriert
08.04.2008
Beiträge
2.730
Wobei Baldur's gate dann später so tut, als würden Variablen alle groß geschrieben, SetGlobal("TesT","Global",1) macht genau das gleiche wie SetGlobal("TEST","GLOBAL",1), es wird also nicht zwei Variablen TesT und TEST geben, sondern nur TEST.
 

Chrono

Junior Member
Registriert
19.08.2009
Beiträge
16
Oh mann das kann ja noch heiter werden.... aber probieren geht über studieren.

Vieleich bekomm ich das ja auch hin. =)
Echt erstaunlich was das Game nach so vielen Jahren noch hergibt und das sich noch so eine menge Leute dafür interessieren.

Aber irgendwie hat mich das Moddingfieber gepackt.

Ich will das auch können. : )
Ich darf ja auch fragen wenn was unklar ist oder? *lieb guck:shine:*
 

Wedge

Wedgetarian
Registriert
04.07.2007
Beiträge
9.373
Nur wenn du vorher ungeahnt hohe Summen auf mein geheimes Bankkonto überweist, von dem ich ein Leben in Saus und Braus führen werde, wenn ich in 10 Jahren endlich nach Sibirien auswandern tue!


Du solltest dich btw. nicht für Fragen schämen, mögen sie dir noch so doof vorkommen. Das gibt der ganzen Sache nur die richtige Würze. :D
 

Chrono

Junior Member
Registriert
19.08.2009
Beiträge
16
Ich wusste garnicht das du Moddingkurse anbietest. Wir müssen uns mal über den Preis verhandeln.:rolleyes:

Aber ich glaub nicht das ich dir Saus und/oder Braus ermöglichen werde. :D

*edit* Ach ja damit du weist wo du hinkommen musst, ich Wohne in München. :p
Aber da ich ein totaler Anfänger bin, kann es vieleicht doch hinkommen.... ich mein jetzt das mit dem Saus und Braus. :rolleyes:
 
Zuletzt bearbeitet:

Wedge

Wedgetarian
Registriert
04.07.2007
Beiträge
9.373
Wer redet hier von Kursen? :p Du darfst Fragen in dem Thread stellen, wenn die Kohle angekommen ist. Vorher werde ich das nicht erlauben. Selbst wenn ich mich heulend darniederwerfen und mit den Fäusten auf den kalten, unnachgiebigen Boden trommeln muss, um das durchzusetzen. :D

Je nachdem wie gut dein englisch ist, gibt es natürlich einen ganzen Haufen sehr, sehr einfache Einsteigertutoriale, in denen die Grundlagen Schritt für Schritt erklärt werden. Meist fängt man wohl mit denen an und stellt dann die ersten Fragen, wenn man dort etwas nicht versteht.
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Also ich denke am besten liest man sich wie Wedge schon gesagt hat ein paar Tutorials durch und setzt sich dann an bereits bestehende Mods und schaut sich deren Code an 8und versucht ihn zu verstehen...)
Ein Vorteil ist es auch, wenn du bereits Grundlagen von anderen Programmiersprachen mitbringst.

*Achja die Antwort hat dich gerade 100€ gekostet, bitte überweise sie innerhalb der nächsten Fünf Tage auf mein Konto. ;)*
 

Chrono

Junior Member
Registriert
19.08.2009
Beiträge
16
OK werde ich mal machen.

Das mit dem Geld von mir haben wollen werde ich wohl jetzt nicht mehr los im Forum. :c:

Ich mach n Deckel.:D
 

Vernochan

Schabrackentapir
Registriert
09.07.2001
Beiträge
8.884
Das is übrigens das beste am Forum: Da es keinen Ausgang gibt, kannst du auch nich die Zeche prellen :D
 

Wedge

Wedgetarian
Registriert
04.07.2007
Beiträge
9.373
Nich solange du nicht anfängst zu bezahlen. :p


Anyway, ein paar wirklich simple Anfängertuts sind:
http://www.katbella.net/npcguide.htm (Sehr, sehr einfach, aber auch sehr begrenzt auf die Grundlagen. Guter Einstieg halt, nachdem man sich dann weiter umschauen muss.)

http://www.shsforums.net/index.php?showtopic=32380 (beginnt ganz am Anfang mit dem reinen Dialogtext, beschränkt sich dann aber auch auf das Proggen von Dialogen. Verlinkt aber am Ende weitere Tuts, die die fehlenden Teile zum ersten eigenen NPC behandeln.)

Die beiden Tuts erklären halt Schritt für Schritt, wie du von hier nach hier kommst. :D

Ein wenig mehr bietet dieses Tut von Maus. Ist deutsch, etwas veraltet, dafür aber viel, viel umfangreicher.
 
Oben