-
Wie verhindere ich, dass Schmiede immer wieder neue Rohlinge haben?
Hallo,
ich hatte mich bereits vor einigen Jahren an eine kleine Balancingmod des Originalspiels gesetzt für den Eigenkonsum. Diese möchte ich jetzt optimieren.
Denn der ständige Nachschub an Rohlingen ist ein Balancingkiller.
Neue Schmiederohlinge landen ja stets dann im Inventar, wenn sich der Schmied am Ofen oder Amboss zu schaffen macht. Die einfachste Lösung wäre jetzt natürlich, wenn er nur noch vornehmlich am Wassertrog beschäftigt wäre. Das wäre aber sicherlich nicht die eleganteste. Falls jedoch niemandem spontan etwas besseres einfallen sollte, wo kann ich die Zeitdauer regulieren, die ein Schmied an der jeweiligen Station verbringt?
Hmm, und wo ist es eigentlich geregelt, dass er immer 2 Rohlinge im Inventar hat? Wenn ich jetzt die Zeitdauer am Ofen und Amboss senke und die Anzahl auf einen Rohling reduziere, dann kommt der Spieler zumindest nicht mehr in so kurzer Zeit an massenhaft Stahl.
Schön wäre es auch, wenn ich irgendeine Form von counter einbauen könnte, dass Harad nach einer gewissen Anzahl an verkauften Schwertern eines Typus weniger zahlt.
Ja, ich weiß. Da werden die Ansprüche schon größer... .
Danke schon mal für die Antworten.
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
-
02.02.2019 01:33
#2
Du kannst die Schwerter günstiger machen oder du verhinderst, dass man den Rohstahl plündern kann.
-
Die Rohlinge kommen (unglücklicherweise) aus den Animationen, da werden die ihm in die Hand gelegt, wenn er den Amboss verwendet (oder die Esse?) und wenn die Animation vorüber ist, landen die im Inventar. Falls er bereits die entsprechenden Items besitzt, werden keine neuen erstellt - daher werden das nicht dauerhaft mehr sondern es bleibt bei 2. Den Counter kannst du einfach im Dialog zum Verkaufen der entsprechenden Schwerter einführen, wenn ich mich recht erinnere wird das ja nicht über die normale Handelsmechanik geregelt.
-
Zitat von Falugify
Du kannst die Schwerter günstiger machen oder du verhinderst, dass man den Rohstahl plündern kann.
Es wäre interessant zu wissen, wie es sich verhindern lässt. Händler verlieren ja auch ihr Inventar, sobald sie zu Boden gehen. Wo finde ich diese Funktion?
Zitat von Lehona
Die Rohlinge kommen (unglücklicherweise) aus den Animationen, da werden die ihm in die Hand gelegt, wenn er den Amboss verwendet (oder die Esse?) und wenn die Animation vorüber ist, landen die im Inventar. Falls er bereits die entsprechenden Items besitzt, werden keine neuen erstellt - daher werden das nicht dauerhaft mehr sondern es bleibt bei 2. Den Counter kannst du einfach im Dialog zum Verkaufen der entsprechenden Schwerter einführen, wenn ich mich recht erinnere wird das ja nicht über die normale Handelsmechanik geregelt.
Hmm, nun sind ja die Schmiedeknechte an dem Schleifstein beschäftigt, ohne, dass bei diesen Klingen im Inventar erscheinen. Womit hängt das dann zusammen. Dass bei dieser Animation die Klingen quasi ,,vernichtet'' werden?
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
-
Zitat von axon
Es wäre interessant zu wissen, wie es sich verhindern lässt. Händler verlieren ja auch ihr Inventar, sobald sie zu Boden gehen. Wo finde ich diese Funktion?
Bewusstlose landen im Zustand ZS_Unconscious. In ZS_Unconscious() wird unter anderem B_ClearRuneInv(self); aufgerufen um zu verhindern das bestimmte items geplündert werden können.
Du könntest in B_ClearRuneInv deine items ergänzen.
Zitat von axon
Hmm, nun sind ja die Schmiedeknechte an dem Schleifstein beschäftigt, ohne, dass bei diesen Klingen im Inventar erscheinen. Womit hängt das dann zusammen. Dass bei dieser Animation die Klingen quasi ,,vernichtet'' werden?
Allgemeines zu Mob Animation in diesem thread von Dalai Zoll:
https://forum.worldofplayers.de/foru...obsi-Animation
Ob das slotitem am Ende im Inventar landet ist abhängig von DEF_DESTROY_ITEM/DEF_REMOVE_ITEM.
-
Vielen Dank für die Tipps und links. Da werde ich mich mal in den nächsten Tagen einarbeiten.
Nur um nochmal sicherzugehen: Unter Scripts\Content werde ich also keine Option finden, die Dauer festzulegen, über die eine Animation durch einen NPC ausgeführt wird, ich muss dazu unter Anims Änderungen vornehmen?
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
-
Was ein NPC macht hängt vom Zustand ab. Du kannst da durchaus Veränderungen vornehmen.
Als Beispiel:
Code:
FUNC int ZS_Smith_Anvil_Loop ()
{
// ------ Schmieden ------
if (!C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT))
&& (Wld_IsMobAvailable(self,"BSANVIL"))
{
AI_UseMob (self, "BSANVIL", 1);
};
if(C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT)){
if(NPC_getStateTime(self) > 10){ // schmiedet schon einige Zeit
NPC_SetStateTime(self, 0);
AI_UseMob (self, "BSANVIL", -1); // aufhören mob zu nutzen
AI_Wait(self, 5); // kurze Pause
};
};
return LOOP_CONTINUE;
};
Diese ZS_Smith_Anvil_Loop() führt dazu das der Schmied regelmäßige Pausen macht und nur in der Gegend rum steht(AI_Wait). Das kannst du dir beliebig kompliziert machen.
-
Zitat von Cryp18Struct
Was ein NPC macht hängt vom Zustand ab. Du kannst da durchaus Veränderungen vornehmen.
Als Beispiel:
Code:
FUNC int ZS_Smith_Anvil_Loop ()
{
// ------ Schmieden ------
if (!C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT))
&& (Wld_IsMobAvailable(self,"BSANVIL"))
{
AI_UseMob (self, "BSANVIL", 1);
};
if(C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT)){
if(NPC_getStateTime(self) > 10){ // schmiedet schon einige Zeit
NPC_SetStateTime(self, 0);
AI_UseMob (self, "BSANVIL", -1); // aufhören mob zu nutzen
AI_Wait(self, 5); // kurze Pause
};
};
return LOOP_CONTINUE;
};
Diese ZS_Smith_Anvil_Loop() führt dazu das der Schmied regelmäßige Pausen macht und nur in der Gegend rum steht(AI_Wait). Das kannst du dir beliebig kompliziert machen.
Das hört sich doch wirklich gut an. Danke.
Jetzt muss ich mir nur noch in den nächsten Tagen erarbeiten, wo ich das einbaue, wie ich die Bezüge herstelle. Bisher hatte ich ja - vor einigen Jahren - kleinere Sachen verändert, wie das eben bei einer Balancing-Mod der Fall ist. Hier und da paar Werte geändert, dort ein paar logische Lücken geschlossen, jenem NPC neue Lehroptionenn verpasst und so weiter und so fort.
Wenn ich das jetzt hinbekäme, wäre das auf jeden Fall schon mal ein großer persönlicher Erfolg... auch, wenn das für einen erfahrenen Scripter natürlich absolutes Grundlagenwissen darstellt.
Edit:
Hoppla, unter Story/NPC kann man ja alles gemütlich einstellen.
Das ich das übersehen habe.
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
Geändert von axon (02.02.2019 um 16:31 Uhr)
-
Zitat von Cryp18Struct
Was ein NPC macht hängt vom Zustand ab. Du kannst da durchaus Veränderungen vornehmen.
Als Beispiel:
Code:
FUNC int ZS_Smith_Anvil_Loop ()
{
// ------ Schmieden ------
if (!C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT))
&& (Wld_IsMobAvailable(self,"BSANVIL"))
{
AI_UseMob (self, "BSANVIL", 1);
};
if(C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT)){
if(NPC_getStateTime(self) > 10){ // schmiedet schon einige Zeit
NPC_SetStateTime(self, 0);
AI_UseMob (self, "BSANVIL", -1); // aufhören mob zu nutzen
AI_Wait(self, 5); // kurze Pause
};
};
return LOOP_CONTINUE;
};
Diese ZS_Smith_Anvil_Loop() führt dazu das der Schmied regelmäßige Pausen macht und nur in der Gegend rum steht(AI_Wait). Das kannst du dir beliebig kompliziert machen.
Ich hatte auch ursprünglich damit gerechnet, dass es alles über eine loop-Funktion gesteuert wird. Dabei wurde es einfach tabelarisch über die Uhrzeit festgelegt, zu welchem Zeitpunkt der NPC was macht. Nicht ganz so elegant, wie deine Lösung.
Ich hätte eine kurze Anfängerfrage, da ich vergessen habe, wie das nochmal war. Beim Erstellen eines Installers ist von einer ini Datei die Rede, welche man nebst der mod Datei in NSIS einspeisen muss. Welche ini Datei ist genau gemeint? Da stoße ich aktuell nicht ganz dazu.
Wohl möglich, dass ich in nächster Zeit noch die eine, oder andere Frage stellen werde, deren Antwort darauf euch banal erscheint. Ich hoffe das ist ok.
Edit:
Ok, ich habe mal die ini der Vorgängerversion angepasst:
[INFO]
Title=SimpBal_Mod
Version=1.71
Authors=axon
usw.
Denke mal, dass sollte passen?
Diese habe ich dann, wie auch die mod in die angegebenen Ordner verfrachtet.
Dann habe ich die die setup.nis folgendermaßen geändert:
; Definitionen
; TODO: Version der Modifikation
!define VER_MAJOR 1 ; Major Version
!define VER_MINOR 0 ; Minor Version
!define VER_PATCH 0 ; Patch-Version (1=a, ...)
!define VER_FLAGS 0 ; Sprachversion
!define VER_FILE "${VER_MAJOR}.${VER_MINOR}"
!define VER_TEXT "${VER_MAJOR}.${VER_MINOR}"
; TODO: Eigenschaften der Modifikation
!define MOD_FILE "SimpBal_Mod" ; Mod-Dateiname (KEINE Leer- oder Sonderzeichen!)
!define MOD_NAME "SimpBal_Mod" ; Mod-Titel
!define MOD_COPY "Copyright © 2004, Pluto 13 GmbH" ; Mod-Copyright
!define MOD_COMP "Piranha Bytes" ; Mod-Herausgeber
!define MOD_LINK "http://www.piranha-bytes.de" ; Herausgeber-Link
!define MOD_HELP "http://www.gothic2.de/mod" ; Support-Link
Irgendwo hier muss ein Fehler liegen, da ein Error auftrat bei dem Versuch einen Installer zu erstellen. Muss ich bei Ver_Minor 71 eingeben, oder wie?
Edit:
Hmm, nope.
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
Geändert von axon (04.02.2019 um 12:57 Uhr)
-
Zitat von axon
Irgendwo hier muss ein Fehler liegen, da ein Error auftrat bei dem Versuch einen Installer zu erstellen.
Bei so was ist immer hilfreich den genauen Wortlaut der Fehlermeldung zu posten, da sollte ja drin stehen was schief geht.
Allgemeines zum installer erstellen:
https://forum.worldofplayers.de/foru...1#post14305268
-
Zitat von Cryp18Struct
An dem Tutorial habe ich mich auch orientiert.
Die Fehlermeldung lautet:
Output: "C:\Program Files (x86)\JoWooD\Gothic 2 Gold\_work\demo\SimpBal_Mod-1.71.exe"
Can't open output file
Error - aborting creation process
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
-
Hast du den Prozess mit Administratorrechten gestartet? Auf Grund der Fehlermeldung und des Pfades würde ich auf fehlende Rechte tippen.
-
Zitat von Lehona
Hast du den Prozess mit Administratorrechten gestartet? Auf Grund der Fehlermeldung und des Pfades würde ich auf fehlende Rechte tippen.
Ahh, ok. Super, hat jetzt geklappt. Vielen Dank.
Ich bin vorher einfach der Anweisung des Tutorials gefolgt, habe also den Prozess über rechtsklick auf die setup.nsi gestartet.
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
-
etwas umständlicher aber auch machbar ist es die animationen zu editieren.. man fügt einfach in diese ein item ein.. und heftet es an einen bone
beim schmied bsp die klinge die er schmiedt, erst im boden und dann von einem frame auf den anderen in die hand. das kommt einem port gleich.
dann kann man die eventag sache auch draußen lassen und hat solche probleme nichtmehr
-
Zitat von Ska-Ara
etwas umständlicher aber auch machbar ist es die animationen zu editieren.. man fügt einfach in diese ein item ein.. und heftet es an einen bone
beim schmied bsp die klinge die er schmiedt, erst im boden und dann von einem frame auf den anderen in die hand. das kommt einem port gleich.
dann kann man die eventag sache auch draußen lassen und hat solche probleme nichtmehr
Hmm, ich bin mir nicht sicher, ob ich als noob alles verstanden habe. Vermutlich nicht im Ansatz.
Aber mir kam dabei der Gedanke, dass der Schmied an einer Klinge, statt an einem Rohling weiterschmiedet.
Aktuell habe ich einfach die Dauer am Amboss und an der Esse auf ein Minimum reduziert, womit der Schmied unverhältnismäßig viel Zeit am Härten des Stahles zubringt, und der Spieler nun viel seltener die Gelegenheit besitzt Schmiederohlinge aus dem Schmied rauszuprügeln, oder von ihm abzukaufen. Darunter leidet eventuell ein bisschen die Immersion.
Aber fürs Balancing ist es ganz gut so, alldieweil ich die Lernpunktkosten auch deutlich erhöht habe - eine Crawlerplatte abzutrennen soll schwerer sein, als anständig schmieden zu lernen? - aber den Wert der begehrten Erzwaffen deutlich erhöht habe, sodass diese nun einen echten wirtschaftlichen Faktor darstellen.
Nun denn, bis ich mich an eine Animation traue vergeht wohl noch etwas Zeit. Ich will mir erst mal in aller Ruhe die Grundlagen des scriptens näherbringen. Vielleicht bin ich irgendwann gut genug, um an der X in 1 weiterzuarbeiten.
By the way, kann ich überhaupt die Daten aus der X in 1 irgendwie exttrahieren, um daran rumzuwerkeln?
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
-
Zitat von axon
By the way, kann ich überhaupt die Daten aus der X in 1 irgendwie exttrahieren, um daran rumzuwerkeln?
Die Antwort dazu ist ein solides Jein Es gibt hier im Forum ein paar Tools, um aus den kompilierten Daten (bei Scripts vor allem die Gothic.dat) wieder Scripte zu gewinnen, namentlich den GothicSourcer und DecDat. Der GothicSourcer hat meines Wissens nach allerdings Probleme, bestimmte Scripte zu decompilen (Ikarus und LeGo), weil diese die erlaubten Script-Konstrukte, sagen wir, ausreizen :P DecDat wiederum kann an bestimmten Stellen nicht unterscheiden, ob es sich um eine Instanz (z.B. PC_HERO) oder einfach eine Zahl handelt. Das ist allerdings ein grundsätzliches Problem, um dass der GothicSourcer meines Wissens nur herumkommt, weil er gut rät. In jedem Fall sind diese Tools vor allem dazu nützlich, um sich den Code anzusehen, als Grundlage zum Weiterarbeiten sind sie nur eingeschränkt zu verwenden.
Am einfachsten ist es, wenn du den Ersteller der X in 1-Mod um die Scripte bittest (bonne6, wenn mich nicht alles täuscht). Die gute Nachricht ist, dass die bereits frei verfügbar auf GitHub sind: https://github.com/BonneCW/X-in-1-Mod Und auch wenn ich nicht direkt für Bonne sprechen kann, bin ich mir doch sehr sicher, dass er nichts gegen eine Weiterarbeit daran hat
-
Zitat von Lehona
Die Antwort dazu ist ein solides Jein Es gibt hier im Forum ein paar Tools, um aus den kompilierten Daten (bei Scripts vor allem die Gothic.dat) wieder Scripte zu gewinnen, namentlich den GothicSourcer und DecDat. Der GothicSourcer hat meines Wissens nach allerdings Probleme, bestimmte Scripte zu decompilen (Ikarus und LeGo), weil diese die erlaubten Script-Konstrukte, sagen wir, ausreizen :P DecDat wiederum kann an bestimmten Stellen nicht unterscheiden, ob es sich um eine Instanz (z.B. PC_HERO) oder einfach eine Zahl handelt. Das ist allerdings ein grundsätzliches Problem, um dass der GothicSourcer meines Wissens nur herumkommt, weil er gut rät. In jedem Fall sind diese Tools vor allem dazu nützlich, um sich den Code anzusehen, als Grundlage zum Weiterarbeiten sind sie nur eingeschränkt zu verwenden.
Am einfachsten ist es, wenn du den Ersteller der X in 1-Mod um die Scripte bittest (bonne6, wenn mich nicht alles täuscht). Die gute Nachricht ist, dass die bereits frei verfügbar auf GitHub sind: https://github.com/BonneCW/X-in-1-Mod Und auch wenn ich nicht direkt für Bonne sprechen kann, bin ich mir doch sehr sicher, dass er nichts gegen eine Weiterarbeit daran hat
Vielen Dank für den link, Lehona.
Ursprünglich wollte er das Material ja scripten, was ich für die X in 1 zusammengeschrieben habe... sonst hätte ich es ja garnicht verfasst. Er hat dann aber eben doch nicht die Zeit gefunden. Also versuche ich mich jetzt mal daran. Solange kein explizites Veto kommt, wird es passen, denke ich mal.
Bin eben etwas zwanghaft und will unbedingt das zu Ende bringen, was ich begonnen habe, auch, wenn ich in Informatik eine Null bin.
Natürlich wird das ein wenig dauern – Monate, Jahre? -, aber ich bin zuversichtlich, dass ich – zumindest das meiste - mit Unterstützung aus dem Forum hinbekommen kann.
So Sachen wie Werwolfsverwandlungen von NPCs sind dann aber doch ein Meistergrad, der für mich eher nicht erreichbar sein wird.
So zumindest meine fachfremde Einschätzung.
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
-
Zöger einfach nicht, dich mit Fragen an dieses Forum zu wenden - wir freuen uns immer über neue Leute
-
Zitat von Lehona
Zöger einfach nicht, dich mit Fragen an dieses Forum zu wenden - wir freuen uns immer über neue Leute
Vielen Dank. Die Hand, die mir gereicht wird, ergreife ich mit Freuden.
So, und nachdem ich jetzt das Modkit endlich auch auf meinem Win10 rechner zum Laufen gebracht habe - war wohl nur eine sache der Installationsreihenfolge - bin ich auch schon auf die erste Hürde gestoßen. Ich habe mal die Scripte der X in 1 geparst und erhielt folgende Fehlermeldung:
U:PAR:File CONTENT\STORY\NPC\VLK 6013_S+ÄLDNER.D not found (line 47)
Bevor ich mich später auf die Fehlersuche begebe will ich besser mal sicherstellen, dass es sich auch lohnt, dass es nur einzelne Fehler sind, und nicht, dass die Scripte irgendwie komplett zerschossen und voll davon sind.
Edit:
Hmm, zudem steht ja etwas von line 47. Wenn ich jedoch die Datei mit dem editor öffne, so befindet sich alles in 2 langgezogenen Zeilen.
Edit: Ok, habe nun S+Äldner 6013 und 6014 in ,,Soeldner'' umbenannt und jetzt ging es schon fast bis an den Spielstart. Nun hat er jedoch wegen des Vampirumhanges rumgemeckert und anschließend kam eine Access Violation.
D: (zCVob:: SetVisual)
:could not load visual 'NEW_ARMOR_05.3DS' for vob Name
'ITAR_VAMPIRE2' of class 'oCitem'
Mitgewirkt an:
Das Korsarennest (Tester, Sprecher), Dunkle Geheminisse (Übersetzer), Odyssee (Sprecher), X in 1 Mod (Tester), Xeres‘ Rückkehr (Storywriter, Tester, Sprecher)
Geändert von axon (06.02.2019 um 12:18 Uhr)
-
Da fehlt dir das entsprechende 3d Modell(NEW_ARMOR_05.3DS).
Entpack mal alle .mod Dateien der mod, damit du die Rohdaten in deinem _work Ordner hast.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|