[Modding] BG1 NPC Startposition ändern

Lokadamus

Buddelmagier
Registriert
01.03.2000
Beiträge
4.861
Grundlage ist der Mod https://forums.beamdog.com/discussion/72746/bg1-npcs-at-beginning-v3-0
Xzar und Montaron wollte ich zu Quayle eine Karte weiter verschieben.
Leider werden die alten Einträge nicht entfernt, weshalb Xzar und Montaron sowohl in Area 6600 (Imoen ist auch da) und Area 6900 (die Kreuzung) erscheinen.

Die TP2- Datei habe ich am Ende um folgendes Erweitert.
Code:
// *** Xzar & Montaron ***

BEGIN @220 DESIGNATED 220
REQUIRE_PREDICATE GAME_IS ~totsc bgt bgee~ @999

ACTION_IF GAME_IS ~bgt~ BEGIN
	COPY_EXISTING ~ar6600.bcs~ ~override~
	DECOMPILE_BCS_TO_BAF
	REPLACE_TEXTUALLY ~CreateCreature("BGXZAR",[4581.2694],0)~ ~~
	REPLACE_TEXTUALLY ~CreateCreature("MONTAR",[4514.2705],0)~ ~~
	REPLACE_TEXTUALLY ~CreateCreature("XZAR2",[4581.2694],0)~ ~~
	REPLACE_TEXTUALLY ~CreateCreature("MONTAR2",[4514.2705],0)~ ~~
	REPLACE_TEXTUALLY ~CreateCreature("XZAR4",[4581.2694],0)~ ~~
	REPLACE_TEXTUALLY ~CreateCreature("MONTAR4",[4514.2705],0)~ ~~
	REPLACE_TEXTUALLY ~CreateCreature("XZAR6",[4581.2694],0)~ ~~
	REPLACE_TEXTUALLY ~CreateCreature("MONTAR6",[4514.2705],0)~ ~~
	REPLACE_TEXTUALLY ~GlobalGT("Chapter","GLOBAL",3)~ ~GlobalGT("Chapter","GLOBAL",8)~
	COMPILE_BAF_TO_BCS

	EXTEND_BOTTOM ~ar6900.bcs~ ~bg1npcbeg/add-xzar-6900.baf~

END

Die BAF sieht wie folgt aus:
Code:
IF
  Global("h#xzar","GLOBAL",0)
  Level(Player1,1)
THEN
  RESPONSE #100
    SetGlobal("h#xzar","GLOBAL",1)
    CreateCreature("BGXZAR",[950.2000],0)
    CreateCreature("MONTAR",[900.2000],0)
END

IF
  Global("h#xzar","GLOBAL",0)
  OR(2)
    Level(Player1,2)
    Level(Player1,3)
THEN
  RESPONSE #100
    SetGlobal("h#xzar","GLOBAL",1)
    CreateCreature("XZAR2",[950.2000],0)
    CreateCreature("MONTAR2",[900.2000],0)
END

IF
  Global("h#xzar","GLOBAL",0)
  OR(2)
    Level(Player1,4)
    Level(Player1,5)
THEN
  RESPONSE #100
    SetGlobal("h#xzar","GLOBAL",1)
    CreateCreature("XZAR4",[950.2000],0)
    CreateCreature("MONTAR4",[900.2000],0)
END

IF
  Global("h#xzar","GLOBAL",0)
  LevelGT(Player1,5)
THEN
  RESPONSE #100
    SetGlobal("h#xzar","GLOBAL",1)
    CreateCreature("XZAR6",[950.2000],0)
    CreateCreature("MONTAR6",[900.2000],0)
END
Der Teil mit dem Selbstentfernen nach Chapter 3 habe ich entfernt.

Die setup.tra ist in der deutschen Sprache um @220 erweitert und wird auch als "successfull installiert" angezeigt.

Was mache ich falsch, dass in Area 6600 die Einträge von Xzar und Montaron nicht entfernt werden?
Das Area Skript wird bei Chapter angepasst von 3 auf 8, was durchgeführt wird.
 

Maus

Senior Member
Registriert
07.08.2002
Beiträge
9.378
Na, du musst die Area, in der sie normalerweise erscheinen per area-Skript noch ändern und die beiden ursprünglichen dort wegteleportieren an deine neue Wunschlocation. Nicht töten, das gibt Ärger mit der Dead-Variable. Wenn du sie einfach neu erschaffst, dann sind sie halt doppelt...
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.918
Um genau zu sein, müsstest Du in der Wunscharea im Skript die NPCs über MoveGlobal hinschieben. Dann verschwinden sie automatisch in den ursprünglichen und Du hast genau die, die dort rumstanden. Geht bei den originalen NPCs direkt, bei Mod-NPCs müsste man sie erst global machen (mit MakeGlobal).
 

Lokadamus

Buddelmagier
Registriert
01.03.2000
Beiträge
4.861
@Maus. Dafür sind die Zeilen da:
COPY_EXISTING ~ar6600.bcs~ ~override~
DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~CreateCreature("BGXZAR",[4581.2694],0)~ ~~

@Jastey. Äh, nein. Ich will gerade nicht, dass sie in der ursprünglichen Area überhaupt erschaffen werden.

Hat sich einer auch das Original angeschaut? Es ist nur ein Copy and Paste, was ich für Xzar und Montaron angepasst habe.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.918
Ah, stimmt. Hm, dann schieb sie zusätzlich in der Originalarea rüber mit MoveGlobal. Bei Verwendung derselben Variablen passiert das dann auch nur einmal.
EDIT: MoveGlobal korrigiert
 
Zuletzt bearbeitet:

Lokadamus

Buddelmagier
Registriert
01.03.2000
Beiträge
4.861
Fehler gefunden:
REPLACE_TEXTUALLY ~CreateCreature("BGXZAR",\[4581.2694\],0)~ ~~

Vor dem [ oder dem ] muss ein \ sein, damit sie erkannt werden. Dadurch werden Xzar und Montaron nicht mehr in AR6600 erschaffen.
Jetzt kann ich noch Edwin in die Taverne schubsen, Minsc in den kleinen Tempel, Coran ebenfalls ins Gebetshaus und Shar Teel wandert in eine Spelunke. Da kann sie sich mit Männern prügeln.
Was ich mit Imoen mache, weiß ich noch nicht.

Edit: Wer bastelt so spät in der Abendschicht? Irgendwann muss es mal gemacht werden.
Wer Langeweile hat, kann sich den kompletten Mod von oben herunterladen und meinen Anhang dazu entpacken. Wenn es richtig entpackt wird, sollte es die Dateien überschreiben und Xan & Montaron, Edwin und Minsc und Coran werden leicht versetzt.
Und könnte jemand noch das Fileformat 7z für erlaubte Dateianhänge freischalten? Das hätte die Dateien auf 3KB komprimiert.

Edit: 22.09,. 15:10: Text von Coran geändert.
Von ~Es tut gut auf andere Leute an diesem Ort zu stoßen. Mein Name ...
auf ~Es ist erfrischend andere Leute an diesem Ort zu sehen. Mein Name ...
 

Anhänge

  • bg1npcbeg.zip
    7 KB · Aufrufe: 0
Zuletzt bearbeitet:

Lokadamus

Buddelmagier
Registriert
01.03.2000
Beiträge
4.861
Hat jemand ein gutes Tutorial, wie man die Aktionen bei jemanden verändern kann?
Nachdem ich Garrick in die Taverne/ Spelunke verschoben habe, kann er seine Sequenz nicht starten. Ich hoffe, es reicht aus seinem EscapeArea ein EscapeAreaMove mit den richtigen Parametern zu machen.
Alternativ würde ich bei Firebeard noch BAG03 hinzufügen. Das dürfte über ADD_CRE_ITM gehen. Sein Dialog müsste noch angepasst werden und erweitert werden um GiveItem. Wie stell ich das am besten an?
Ich hab ein bischen Probleme damit zu verstehen, wie ich die Texte bzw. Trigger bearbeiten kann. Vor allem, wenn sie durch einen anderen Mod verschoben sind.
 
Zuletzt bearbeitet:

Lokadamus

Buddelmagier
Registriert
01.03.2000
Beiträge
4.861
Garrick hatte ich in die Taverne verschoben. Die Sequenz habe ich so zum Laufen bekommen. Allerdings habe ich dazu nur die Garric.d bearbeitet.
Wie ich es per Skript hinbekommen kann, ist mir weiterhin unklar.
Code:
  IF ~~ THEN DO ~ClearAllActions()
	EscapeAreaMove("AR6700", 2630, 2230, 12) // Garrick walk to next exxit
	ActionOverride(Player1,LeaveAreaLUA("AR6700","",[2600.2215],12)) // move Player1 to other place
	ActionOverride(Player2,LeaveAreaLUA("AR6700","",[2600.2215],12))
	ActionOverride(Player3,LeaveAreaLUA("AR6700","",[2600.2215],12))
	ActionOverride(Player4,LeaveAreaLUA("AR6700","",[2600.2215],12))
	ActionOverride(Player5,LeaveAreaLUA("AR6700","",[2600.2215],12))
	ActionOverride(Player6,LeaveAreaLUA("AR6700","",[2600.2215],12))
	LeaveAreaLUAPanic("AR6700","",[2600.2215],12) // Switch Area
StartCutSceneMode()
StartCutScene("Garrcut")
~ EXIT
Damit Garrick nicht mehr verschwindet, muss die eine Variable ersetzt werden
Code:
//IF ~  NumberOfTimesTalkedTo(0)
IF ~
GlobalLT("TalkedToGarrick","GLOBAL",1)
 
Zuletzt bearbeitet:
Oben