[Release] BG2 Alanya NPC-Mod

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
COPY_EXISTING ~ar0500.are~ ~override~
WRITE_ASCII 0x94 ~AR0500~
READ_LONG 0xa4 "door_num"
READ_LONG 0xa8 "door_off"
WHILE ("%door_num%" > 0) BEGIN
SET "door_num" = ("%door_num%" - 1)
READ_BYTE ("%door_off%" + 0x28 + ("%door_num%" * 0xc8)) "locked"
READ_BYTE ("%door_off%" + 0x29 + ("%door_num%" * 0xc8)) "usekey"
READ_ASCII ("%door_off%" + 0x20 + ("%door_num%" * 0xc8)) "doorname"
PATCH_IF ("%doorname%" STRING_COMPARE_CASE "Door0506" = 0) BEGIN
WRITE_ASCII ("%door_off%" + 0x78 + ("%door_num%" * 0xc8)) ~A#IT009.itm~ // sets the door to use this key
WRITE_BYTE ("%door_off%" + 0x28 + ("%door_num%" * 0xc8)) ("%locked%" BOR 0b01000010) // sets locked and openable bits
WRITE_BYTE ("%door_off%" + 0x29 + ("%door_num%" * 0xc8)) ("%usekey%" BOR 0b00000100) // sets uses up key bit
WRITE_LONG ("%door_off%" + 0x8c + ("%door_num%" * 0xc8)) 100 // sets lock difficulty
END
END
BUT_ONLY_IF_IT_CHANGES

Hmm, ich kann jetzt nicht genau sagen, wo dein Fehler liegt, denn ich arbeite nie mit WHILE Schleifen. ^^
Ich hab dir das ganze in ner FOR Schleife mal vorbereitet (nicht getestet, aber ich benutze nen ähnlichen Code, bloß für ne andere Area...)

Code:
COPY_EXISTING ~ar0500.are~ ~override~
WRITE_ASCII 0x94 ~AR0500~ // Script [Wieso setzt du das Script, dass ist doch bereits AR0500]
READ_LONG 0xa8 door_off //Read Door Offset
READ_LONG 0xa4 door_num //Read Door Number
		FOR (cnt=0;cnt<"%door_num%";cnt+=1) BEGIN //Start Loop
   		 READ_ASCII ("%door_off%" + "%cnt%"*0xc8) ~door_name~ (32) NULL //Read Door Name
   		 	PATCH_IF (("%door_name%" STRING_COMPARE_CASE "Door0506")=0) BEGIN //Patch if Door Name = Door0506
   		 		SET offset = ("%door_off%"+0xc8*cnt) // Set Door Offset for Door 0506
   		 		READ_BYTE (offset+0x28) "flag_off1" //Read Flag Offset1
   		 		READ_BYTE (offset+0x29) "flag_off2" //Read Flag Offset2
      		                WRITE_BYTE (offset + 0x28) ("%flag_off1%" BOR 0b01000010) //Write Flag Offset 1 locked & openable
      		                WRITE_BYTE (offset + 0x29) ("%flag_off2%" BOR 0b00000100) //Write Flag Offset 2 used up Key
      		                WRITE_ASCII (offset + 0x78) "A#IT009" //Write Key Name (ohne itm!)
      		                WRITE_LONG (offset + 0x8c) 100 //Write Lock difficulty
    		           END
            	END

€dith: Hatte nen kleinen Fehler im Code, ausserdem hab ich dass auslesen des Door Name geändert, damit auch nur wirklich Door0506 geändert wird und nicht auch Door0506b (Hab in der Area nachgeschaut, es gibt Door0506 und Door0506b und nach der vorherigen Methode würden beide gepatcht...)

€dith2:
Wenn ich dir Code für das hinzufügen eines Actors zu einer Area bereitstellen soll, mach ich das natürlich gerne... ;)
 
Zuletzt bearbeitet:

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Ersteinmal vielen Dank an Euch beide, dass hat schonmal super geklappt :)

Was ich bei der ganzen Sache mit dem Gehe-bei-Nacht-Skript aber noch gar nicht bedacht hatte, ist das ich selbiges ja nicht nur für Statisten wie Bürger und Tiere verwende, sondern auch für "richtige" Kreaturen mit Dialogen und Aufgaben etc.
Da ist natürlich das Problem vorhanden, dass sie einen nach jedem Wechsel von Nacht auf Tag immer wieder mit dem Ursprungstext ansprechen, da sie ja immer wieder neu geladen werden.

Also in diesem Fall wäre es dann wohl angebracht, die Kreaturen wie von Euch vorgeschlagen bzw. angeboten in die Areas zu patchen.

Dazu habe ich aber noch eine Frage.
Es gibt ja bereits Kreaturen im Spiel, die dummerweise Nachts nicht die Strassen räumen, wie bestimmte Händler (nicht die Schwarzmarktdiebe) etc.
Ich habe versucht, die mit einer neuen und bis auf die neu hinzugefügt Script-Variable identischen Kreatur zu überschreiben (ursprünglich haben sie oder zumindest viele glaube ich keine Script-Variable) und dann auf die bereits erwähnte Weise verschwinden zu lassen, aber leider tut sich da nichts.
Vielleicht ist da das Present at-Flag stärker?
Besteht da mit dem patchen eine Möglichkeit, auch solche Kreaturen zum schlafen gehen zu bewegen?

Es gibt da noch etwas, was nur auf diese Weise getan werden kann, da dies jedoch eindeutig zu viel verraten würde, würde ich dir, also White Agnus, gerne eine PN dazu schreiben.
Ich habe da auch schon Brocken aus anderen Mods zusammengeklaubt, aber natürlich funktioniert das alles nicht wirklich.

Vielen Dank nocheinmal,
Malthis
 
Zuletzt bearbeitet:

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Also erstmal stell ich dir den Code für das hinzufügen von Actors zu einer Area zur Verfügung:

Code:
COPY_EXISTING ~AREANAME.are~ ~override~		//Hier den Areanamen angeben
//Einlesen der Offsets
 READ_LONG  0x54  "actors_offset"
 READ_SHORT 0x58  "actors_num"
 READ_SHORT 0x5a  "infotrig_num"
 READ_LONG  0x5c  "infotrig_offset"
 READ_LONG  0x60  "spawns_offset"
 READ_LONG  0x64  "spawns_num"
 READ_LONG  0x68  "entrances_offset"
 READ_LONG  0x6c  "entrances_num"
 READ_LONG  0x70  "cont_offset"
 READ_SHORT 0x74  "cont_num"
 READ_SHORT 0x76  "items_num"
 READ_LONG  0x78  "items_offset"
 READ_LONG  0x7c  "vert_offset"
 READ_SHORT 0x80  "vert_num"
 READ_SHORT 0x82  "amb_num"
 READ_LONG  0x84  "amb_offset"
 READ_LONG  0x88  "vars_offset"
 READ_LONG  0x8c  "vars_num"
 READ_LONG  0xa0  "expbmp_offset"
 READ_LONG  0xa4  "doors_num"
 READ_LONG  0xa8  "doors_offset"
 READ_LONG  0xac  "anim_num"
 READ_LONG  0xb0  "anim_offset"
 READ_LONG  0xb4  "tiled_num"
 READ_LONG  0xb8  "tiled_offset"
 READ_LONG  0xbc  "songs_offset"
 READ_LONG  0xc0  "rest_spawns_offset"
 READ_LONG  0xc4  "automap_offset"
 READ_LONG  0xc8  "automap_num"
 READ_LONG	0xcc	"projectile_traps_offset"
 READ_LONG	0xd0	"projectile_traps_num"

//Loop um zu überprüfen, ob der Actor bereits vorhanden ist...
SET acto_1=1
 FOR( cnt=0; cnt<"%actors_num%"; cnt=cnt+1 ) BEGIN  //Start Loop
   READ_ASCII ("%actors_offset%"+0x110*cnt)  "actor_name"
   PATCH_IF (("%actor_name%" STRING_COMPARE_CASE "Actorname")=0) BEGIN  //Hier den Actorname angeben, falls er existiert wird der nächste Block nicht ausgeführt!
     acto_1=0
   END
 END

//In diesem Block wird der Actor hinzugefügt...
 PATCH_IF (acto_1=1) BEGIN
   SET offset = ("%actors_offset%"+0x110*"%actors_num%")
   INSERT_BYTES offset 0x110
   WRITE_ASCII offset ~Actorname~			//Name
   WRITE_SHORT (offset+0x20) xxx       			//X
   WRITE_SHORT (offset+0x22) xxx      			//Y
   WRITE_SHORT (offset+0x24) xxx    			//destination X
   WRITE_SHORT (offset+0x26) xxx  			//destination Y
   WRITE_LONG  (offset+0x28) xxx         		//Flags
   WRITE_LONG  (offset+0x2c) xxx			//Has been spawned
   WRITE_LONG  (offset+0x30) xxx        		//Actor Animation
   WRITE_LONG  (offset+0x34) xxx        		//Actor orientation
   WRITE_LONG  (offset+0x38) xxx   			//unknown
   WRITE_LONG  (offset+0x3c) xxx   			//unknown
   WRITE_LONG  (offset+0x40) xxx   			//Actor appearence schedule(Present at...)
   WRITE_LONG  (offset+0x44) xxx   			//NumTimesTalkedTo (ins SAV Files)
   WRITE_ASCII (offset+0x48) xxx   			//Dialog
   WRITE_ASCII (offset+0x50) xxx   			//Script (Override)
   WRITE_ASCII (offset+0x58) xxx   			//Script (General)
   WRITE_ASCII (offset+0x60) xxx   			//Script (Class)
   WRITE_ASCII (offset+0x68) xxx   			//Script (Race)
   WRITE_ASCII (offset+0x70) xxx   			//Script (Default)
   WRITE_ASCII (offset+0x78) xxx   			//Script (Specific)
   WRITE_ASCII (offset+0x80) ~CreFileName~              //CreFile
   WRITE_LONG  (offset+0x88) xxx   			//Offset to Cre
   WRITE_LONG  (offset+0x8c) xxx   			//Size of stored Cre
   SET "actors_num"="%actors_num%"+1
   WRITE_SHORT 0x58  "%actors_num%"
 END


//Ab hier werden die anderen Offsets der Area gepatcht, daran muss nichts geändert werden...
 SET "info_ext"=0x110*acto_1
 PATCH_IF ("%infotrig_offset%">"%actors_offset%") 
 OR (("%infotrig_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "infotrig_offset"="%infotrig_offset%"+"%info_ext%"
   WRITE_LONG  0x5c "%infotrig_offset%"
 END
 
 PATCH_IF ("%spawns_offset%">"%actors_offset%") 
 OR (("%spawns_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "spawns_offset"="%spawns_offset%"+"%info_ext%"
   WRITE_LONG  0x60  "%spawns_offset%"
 END
 
 PATCH_IF ("%entrances_offset%">"%actors_offset%") 
 OR (("%entrances_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "entrances_offset"="%entrances_offset%"+"%info_ext%"
   WRITE_LONG  0x68  "%entrances_offset%"
 END
 
 PATCH_IF ("%cont_offset%">"%actors_offset%") 
 OR (("%cont_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "cont_offset"="%cont_offset%"+"%info_ext%"
   WRITE_LONG  0x70  "%cont_offset%"
 END
 
 PATCH_IF ("%items_offset%">"%actors_offset%") 
 OR (("%items_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "items_offset"="%items_offset%"+"%info_ext%"
   WRITE_LONG  0x78  "%items_offset%"
 END
 
 PATCH_IF ("%vert_offset%">"%actors_offset%") 
 OR (("%vert_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "vert_offset"="%vert_offset%"+"%info_ext%"
   WRITE_LONG  0x7c  "%vert_offset%"
 END
 
 PATCH_IF ("%amb_offset%">"%actors_offset%") 
 OR (("%amb_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "amb_offset"="%amb_offset%"+"%info_ext%"
   WRITE_LONG  0x84  "%amb_offset%"
 END
 
 PATCH_IF ("%vars_offset%">"%actors_offset%") 
 OR (("%vars_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "vars_offset"="%vars_offset%"+"%info_ext%"
   WRITE_LONG  0x88  "%vars_offset%"
 END
 
 PATCH_IF ("%expbmp_offset%">"%actors_offset%") 
 OR (("%expbmp_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "expbmp_offset"="%expbmp_offset%"+"%info_ext%"
   WRITE_LONG  0xa0  "%expbmp_offset%"
 END
 
 PATCH_IF ("%doors_offset%">"%actors_offset%") 
 OR (("%doors_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "doors_offset"="%doors_offset%"+"%info_ext%"
   WRITE_LONG  0xa8  "%doors_offset%"
 END
 
 PATCH_IF ("%anim_offset%">"%actors_offset%") 
 OR (("%anim_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "anim_offset"="%anim_offset%"+"%info_ext%"
   WRITE_LONG  0xb0  "%anim_offset%"
 END
 
 PATCH_IF ("%tiled_offset%">"%actors_offset%") 
 OR (("%tiled_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "tiled_offset"="%tiled_offset%"+"%info_ext%"
   WRITE_LONG  0xb8  "%tiled_offset%"
 END
 
 PATCH_IF ("%songs_offset%">"%actors_offset%") 
 OR (("%songs_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "songs_offset"="%songs_offset%"+"%info_ext%"
   WRITE_LONG  0xbc  "%songs_offset%"
 END
 
 PATCH_IF ("%rest_spawns_offset%">"%actors_offset%") 
 OR (("%rest_spawns_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "rest_spawns_offset"="%rest_spawns_offset%"+"%info_ext%"
   WRITE_LONG  0xc0  "%rest_spawns_offset%"
 END
 
 PATCH_IF ("%automap_offset%">"%actors_offset%") 
 OR (("%automap_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "automap_offset"="%automap_offset%"+"%info_ext%"
   WRITE_LONG  0xc4  "%automap_offset%"
 END
 
 PATCH_IF ("%projectile_traps_offset%">"%actors_offset%") 
 OR (("%projectile_traps_offset%" == "%actors_offset%") AND ("%actors_num%" == 0))   
 BEGIN
   "projectile_traps_offset"="%projectile_traps_offset%"+"%info_ext%"
   	 WRITE_LONG  0xcc  "%projectile_traps_offset%"
   END
BUT_ONLY_IF_IT_CHANGES

Vielleicht ist da das Present at-Flag stärker?
Besteht da mit dem patchen eine Möglichkeit, auch solche Kreaturen zum schlafen gehen zu bewegen?

Ja, wäre wahrscheinlich besser dass ganze über die Present at-Flags zu regeln...
Ich kann dir hierzu aber leider erst morgen Code zur verfügung stellen, da ich heute erstens nicht allzuviel Lust habe und zweitens ins Kino eingeladen worden bin... ;)

Es gibt da noch etwas, was nur auf diese Weise getan werden kann, da dies jedoch eindeutig zu viel verraten würde, würde ich dir, also White Agnus, gerne eine PN dazu schreiben.

Schreib ruhig eine, ich bin für alles offen... ;)
 
Zuletzt bearbeitet:

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Ich weiß, Doppelpost, aber ich will den vorherigen nicht so lang werden lassen...

Hier ist der Code um einem bestehenden Actor das Present Flag zu setzen:

Code:
COPY_EXISTING ~Areaname.are~ ~override~
 READ_LONG  0x54  "actors_offset"
 READ_SHORT 0x58  "actors_num"
		FOR (cnt=0;cnt<"%actors_num%";cnt+=1) BEGIN //Start Loop
   		 READ_ASCII ("%actors_offset%" + "%cnt%"*0x110) ~actors_name~ (32) NULL
   		 	PATCH_IF (("%actors_name%" STRING_COMPARE_CASE "Actorname")=0) BEGIN //Hier den entsprechenden Actornamen eintragen
   		 		SET offset = ("%actors_offset%"+0x110*cnt)
   		 		READ_ASCII (offset+0x80) "crename"
    		                        PATCH_IF (("%crename%" STRING_COMPARE_CASE "CRENAME")=0) BEGIN //Hier den Namen der Creature (ohne .cre) angeben, da Bioware für seine Actors gerne mal den gleichen Actornamen verwendet...
  		 		             WRITE_LONG (offset+0x40) 0xYYYYYYYY //Hier werden die Zeiten gesetzt des Present Flags gesetzt...
    		                        END
   		 	END
		END
BUT_ONLY

Damit das ganze vielleicht etwas anschaulicher wird, hab ich den Code mal für Rampa in AR0500 für die Zeiten 06:30-20:30 gemacht:

Code:
COPY_EXISTING ~ar0500.are~ ~override~
 READ_LONG  0x54  "actors_offset"
 READ_SHORT 0x58  "actors_num"
		FOR (cnt=0;cnt<"%actors_num%";cnt+=1) BEGIN //Start Loop
   		 READ_ASCII ("%actors_offset%" + "%cnt%"*0x110) ~actors_name~ (32) NULL
   		 	PATCH_IF (("%actors_name%" STRING_COMPARE_CASE "Beggar")=0) BEGIN //Actorname=Beggar
   		 		SET offset = ("%actors_offset%"+0x110*cnt)
   		 		READ_ASCII (offset+0x80) "crename"
   		 		PATCH_IF (("%crename%" STRING_COMPARE_CASE "MURDBEGG")=0) BEGIN //Crename=Murdbegg
   		 		      WRITE_LONG (offset+0x40) 0xff0fffc0 // Die ersten beiden ff nach dem 0x stehen für die Unknown Flags, die anderen 6 Hexwerte stehen für die 23 Bit, mit denen die Zeiten gesetzt werden...
   		 		END
   		 	END
		END
BUT_ONLY
 

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Also der Code für die bereits vorhandenen CREs hat schonmal super funktioniert, vielen Dank :)

Der andere Code für die noch nicht vorhandenen CREs ist allerdings sehr lang und da ich nicht gerade wenige CREs auf den Hauptkarten von Amn spawnen lasse, habe ich soetwas wie

COPY ~Alanya/Creatures/A#D129.cre~ ~override/A#D129.cre~
SAY NAME1 ~Bagsnikbag~
SAY NAME2 ~Bagsnikbag~
WRITE_LONG (offset+0x40) 0xff0fffc0

versucht, ähnlich dem Code von Wedge.
Das scheint aber leider nicht so zu klappen.
Gibt es da auch eine weniger aufwendige Möglichkeit, um dieses Problem zu lösen?

MFG Malthis
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Gibt es da auch eine weniger aufwendige Möglichkeit, um dieses Problem zu lösen?

Nein, denn du musst eine Area patchen, sobald da ein Offset nicht gepatcht wurde, machst du diese kaputt... ;)

Man könnte aber das Auslesen der Offsets und das Patchen der Offsets in nen Patch Makro einfügen und ihn auslesen lassen, so hätte man den Code nur einmal drin... (Ich bereite dir mal was vor und schicks dir via PN...)
 

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Für alle Interessierten habe ich einmal ein paar Screenshots gemacht und hochgeladen, hier ist die Adresse:
http://www.bilder-space.de/galerie/7942-alanya-npc-mod-screenshots

Ansonsten habe ich erfahren, dass ich doch noch bis zum 21. September Semesterferien habe, also werde ich zusehen, dass ich bis dahin auch endlich in soweit fertig werde, als das ich eine Beta veröffentlichen kann.

MFG, Malthis
 

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Es geht weiter gut voran (vielen, vielen Dank an dieser Stelle an White Agnus!), doch damit selbiger auch einmal wieder etwas Zeit ohne meine Fragen und Anliegen verbringen kann, stelle ich diese Frage nun öffentlich.

Zur Zeit bepinsele ich einige der Animation_IDs um, doch da gibt es ein Problem, dass auch in im unverändertem Spiel bereits vorhanden war:
Wenn man z.B. einen Eistroll tötet, nimmt er nach seinem Ableben wieder die voreingestelle Hautfarbe seiner Animation_ID an.
Das empfand ich da schon als etwas störend, doch nun ist es doch mehr als auffällig.
Kennt da jemand eine Möglichkeit, dies antsprechend anzupassen?

Ansonsten weigern sich IC_OROG1 - IC_OROG3 bis jetzt erfolgreich gegen jede farbliche Anpassung.
Character Color 1 - Character Color 3 und auch das zuweisen einer Farbe über ein Item per Skin Color und Hair Color funktioniert leider nicht.
Aber vielleicht gibt es ja doch einen Weg.

Gruß,
Malthis
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Zur Zeit bepinsele ich einige der Animation_IDs um, doch da gibt es ein Problem, dass auch in im unverändertem Spiel bereits vorhanden war:
Wenn man z.B. einen Eistroll tötet, nimmt er nach seinem Ableben wieder die voreingestelle Hautfarbe seiner Animation_ID an.
Das empfand ich da schon als etwas störend, doch nun ist es doch mehr als auffällig.
Kennt da jemand eine Möglichkeit, dies antsprechend anzupassen?

Hmm, ich denke, dass hier einfach nur eine Animation fehlt und deswegen die des anderen Trolles genommen wurde...
Genaueres hierzu kann ich dir leider nicht sagen...

Ansonsten weigern sich IC_OROG1 - IC_OROG3 bis jetzt erfolgreich gegen jede farbliche Anpassung.
Character Color 1 - Character Color 3 und auch das zuweisen einer Farbe über ein Item per Skin Color und Hair Color funktioniert leider nicht.
Aber vielleicht gibt es ja doch einen Weg.

Hmm, an den IC_OROG Animationen würde ich nicht viel rumbasteln, die großen BG2 Mods, nehmen IC_OROG2 schon für die Riesen Animation und wenn die anderen zwei auch noch verändert werden, fänd ich das nicht so gut (weil man sonst keine originalen Orogs mehr im Spiel hat...)
Genaueres hierzu kann ich dir aber leider auch nicht sagen...
 

Lich

Senior Member
Registriert
14.09.2007
Beiträge
1.560
@Malthis
Hast du dir schon aTweaks 2.61 angeschaut? Dort gibt es die Komponente "distinctive creature coloring", vielleicht hilft dir das weiter.

Lich
 

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Hallo, ich bin´s wieder.

Es ist mal wieder Zeit für einen kurzen Zwischenbericht, aber zuvor möchte ich noch einmal Lich für seinen Hinweis danken, auch wenn meine Pläne in diesem Fall vielleicht nicht durchführbar sein werden - Aber die Lösung hätte sich ja da verstecken können. Also nochmal danke.

Ansonsten denke ich, dass ich in zwei Tagen 99% von allem, was in ~~ steht beta-final haben werde - löslichem Kaffee sei Dank, auch wenn ich gestern Nacht so um 1 Uhr schon nahe an einem Nervenzusammenbruch war ;)

Ich werde mich dann nur noch fast ausschließlich mit technischen Details beschäftigen müssen und denke, dass ich die Deadline bis zum 21.9. halten kann :)

Ein paar Fragen sind aber wieder aufgetaucht und ich hoffe dabei erneut auf Eure Hilfe:

1. Wo kann ich denn eine Tabelle finden, die mir aufzeigt, ab wie vielen XP-Punkten welche Klasse die nächste Stufe erreicht?
Mein BG2-Handbuch ist irgendwo im Keller ;)

2. Gibt es eine Möglichkeit, eine Kreatur "künstlich" erschöpft werden zu lassen? So etwas bräuchte ich schon recht dringend.

3. Kann man auch bestehende Automap-Notes entfernen? Der entsprechende Skript-Befehl scheint sie nicht zum verschwinden bewegen zu können.

Ich glaube, das war´s erstmal (irgendetwas habe ich doch noch vergessen, es waren doch vier Punkte :hae:, naja, egal).

Gruß,
Malthis

Edit: Ja genau, Strings. Was ist da die beste Möglichkeit, sie möglichst kompatibel unterzubringen?
 
Zuletzt bearbeitet:

Lich

Senior Member
Registriert
14.09.2007
Beiträge
1.560
1. XPLevel.2da beinhaltet alles was du brauchst.

2. Rein aus dem Bauch heraus, würde ich einen eigenen Zauber mit dem fatigue bonus verwenden.

Lich
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Bei 1. und 2. hätte ich genau das gleiche wie Lich gesagt... ;)


3. Kann man auch bestehende Automap-Notes entfernen? Der entsprechende Skript-Befehl scheint sie nicht zum verschwinden bewegen zu können.

Was funktioniert den am Script befehl nicht?
Du musst doch nur die richtigen Koordinaten (kannst du via NI rausfinden) und die Nummer der String Reference (kannst du auch mit NI rausfinden ;)) bei RemoveMapNote(P:Position*,I:STRREF*) angeben...
Also zB bei der ersten Automap in AR0300.are:
Code:
RemoveMapNote([1075.792],20989)

20989 steht hierbei für "Gilde der Schattendiebe"

Edit: Ja genau, Strings. Was ist da die beste Möglichkeit, sie möglichst kompatibel unterzubringen?

Hmm, was meinst du mit Strings? Vielleicht die Dialoge?
 

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Hallo nochmal,

Danke für Eure Antworten für Frage 1 - 2 :)

Was Punkt 3 betrifft: RemoveMapNote([3431.360],194) als Teil des Area Scripts für die AR2600 funktioniert aber leider nicht.

Zu Punkt 3: Ja, ich meine Dialoge, die dann per DisplayString(Head) angezeigt werden sollen.
Wenn einer StringRef nun bei mir z.B. die Stelle 10001 zugewiesen wird ist ja alles ok, aber bei mehreren gleichzeitig installierten Mods muss das meines Wissens ja nicht so sein.
Deswegen meine Frage nach einer Art konstanten Zuweisung, damit nicht auf einmal die falschen Sätze angezeigt werden.

Gruß,
Malthis
 

White Agnus

Senior Member
Registriert
05.09.2008
Beiträge
5.088
Was Punkt 3 betrifft: RemoveMapNote([3431.360],194) als Teil des Area Scripts für die AR2600 funktioniert aber leider nicht.

Hmm, ich hab die Action nie ausprobiert, aber sie wird so genutzt...
Eine andere Möglichkeit die MapNote zu entfernen kenn ich leider nicht...

Zu Punkt 3: Ja, ich meine Dialoge, die dann per DisplayString(Head) angezeigt werden sollen.
Wenn einer StringRef nun bei mir z.B. die Stelle 10001 zugewiesen wird ist ja alles ok, aber bei mehreren gleichzeitig installierten Mods muss das meines Wissens ja nicht so sein.
Deswegen meine Frage nach einer Art konstanten Zuweisung, damit nicht auf einmal die falschen Sätze angezeigt werden.

Schreib den Text halt einfach rein, der erscheinen soll:

Code:
DisplayStringHead(Myself,~Mein Text~)

Du kannst das ganze natürlich auch traifien dann sieht es ungefähr so aus:

Code:
DisplayStringHead(Myself,@1)

Und in der tra steht dann:

Code:
@1 = ~Mein Text~
 

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Ersteinmal wieder vielen Dank für Eure Hilfe!

Leider war ich in den letzten Tagen krank, was es mir wohl unmöglich machen wird, meinen Plan vom 21.9. zu halten.
Aber ich war dennoch so fleissig wie ich nur sein konnte und habe nun wirklich (ja, diesmal wirklich!), so gut wie alles in den Tilden, die mich nun wohl bis an den Rest meines Lebens verfolgen werden, in den Beta-Status gebracht.
Probleme mit ihr bzw. Ihr sind da noch mit drin und auch was das ss bzw. ß betraf war ich mir wohl manchmal unsicher/uneinig und natürlich enthalten die .ds auch bestimmt noch Rechtschreibefehler, ABER sie sind fertig und das war wirklich eine wahnsinnige Arbeit.
Wenn ich das vorher gewusst hätte, hätte ich bestimmt mit Alanya niemals angefangen, naja, oder zumindest die ganzen anderen Dinge um sie herum rausgelassen.

Was ich nun also tun werde ist folgendes: Ein großes, wirklich großes Blatt Papier nehmen und einmal einen Playthrough machen und dabei alles aufschreiben, was noch nicht so ist, wie es sein sollte.

Aber ansonsten kann der Sekt schoneinmal kalt gestellt werden, denke ich :)

Im Zeichen des Fortschritts meiner Mod werde ich auch morgen oder so eine Q&A sowie eine Liste hier online stellen, für wen ich denke, dass diese Mod geeignet ist und für wen wohl eher nicht.

Das wars erstmal wieder.
Gruß,
Malthis
 

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Was bietet die Beta dieser Modifikation:

-Den neuen NPC Alanya, Kind der Ebenen
-Neue Aufgaben
-Eine Itensivierung der Spielwelt
-Logische Verbesserungen
-Taktische Herausfoderungen
-Neue Gegner, teils frei erfunden, teils aus "echten" Vorlagen übernommen
-Stärkere Gegner
-Epische (Massen)Kämpfe
-Neue Waffen und Gegenstände
-Portraits für einige Personen/Kreaturen

Was bietet sie nicht:

-So gut wie keine Veränderungen in Irenicus Dungeon (Den spielt ja wohl ohnehin keiner mehr freiwillig ;))
-So gut wie keine Veränderungen in der Wachenden Festung
-Keine neugestalteten Gebiete (eventuell für die Zukunft vorgemerkt)
-Keine Einbeziehung der bereits vorhandenen und (Mod-)NPCs (für die Zukunft vorgemerkt)
-Kaum Veränderungen der Nebenquests der bereits vorhandenen NPCs (eventuell für die Zukunft vorgemerkt)
-Keine Veränderungen für Thron des Bhaals
-Vertone Texte

Für wen ist diese Modifikation geeignet:

-Spieler die Alanya mögen ;)
-Spieler die gerne Exoten in der Gruppe haben
-Spieler die eine romantische Beziehung in erster Linie mit Gefühlen und nicht mit ausführlich geschilderten
sexuellen Handlungen verbinden
-Spieler die <CHARNAME> mit einer Gesinnung von Neutral bis Neutral Gut versehen und sich auch dementsprechend verhalten
-Spieler die einen NPC wollen, der nicht den Spielfluss unterbricht, aber dennoch etwas zu sagen hat
-Spieler die auch ein wenig Spass und Easter-Eggs nicht abgeneigt sind

Für wen ist sie nicht geeignet:

-Spieler die das Gegenteil oder etwas anderes bevorzugen


Q&A folgt (Fragen werden gerne entgegengenommen)


Gruß,
Malthis
 

Yago

Senior Member
Registriert
28.05.2007
Beiträge
469
Hallo, ich war einige Monate nicht gerade aktiv und habe wohl den Fortschrit hier übersehen. Finde es sehr schade dass letzlich keine Reaktion auf die Ankündigung der Beta gekommen ist.
Erstmal Gratulation dazu wie weit du gekommen bist, viele sind schon weit früher gescheitert aber wie es scheint hast du auf der Zielgeraden erst mal eine Pause eingelegt ;-) Also wenn es dir gut geht und du dies hier siehst so denke doch Bitte über eine Release nach... Ich denke es wäre für uns alle schade würde die Arbeit verloren gehen zumal ich den Mod immer im Hinterkopf hatte und mich auch sehr auf das Spielen gefreut hätte!

edit
Hab eben gesehen dass du im Januar nochmal gepostet hast und den Release "verschoben" hast. Der Post ist aber trotzdem nicht schlecht um bestehendes Interesse zu zeigen. Wünsche viel Gelingen im weiterem Entwicklungsverlauf.
 
Zuletzt bearbeitet:

Malthis

Junior Member
Registriert
03.09.2008
Beiträge
29
Hallo Forumsmitglieder (und speziell auch an Yago :)),

Ein release soll weiterhin erfolgen und an Alanya wurde von mir auch weiterhin beinahe täglich gearbeitet, wenn auch manchmal natürlich nur Details.
Alanya soll nun definitiv innerhalb dieses Jahres als Beta veröffentlicht werden, aber es ist viel, wirklich viel Arbeit nötig, um so ein großes Projekt zu realisieren und in der Zwischenzeit habe ich mich auch an die Wachende Festung gemacht bzw. sie in meine Veränderungen miteinbezogen.
Es kann sich also nun auf noch mehr gefreut werden ;)

Falls noch Fragen oder ähnliches zu Alanya aufgekommen wären, wäre ich auch noch aktiver im Forum gewesen, aber so habe ich die Zeit lieber hinter den Kulissen zum arbeiten genutzt.

Also Alanya ist nicht tot, sondern erfreut sich bester Gesundheit :)

Es grüßt,
Malthis
 

Wedge

Wedgetarian
Registriert
04.07.2007
Beiträge
9.373
[...]aber es ist viel, wirklich viel Arbeit nötig, um so ein großes Projekt zu realisieren[...]

Nicht viele hier wissen, wie sche**e wahr DAS ist... :)
 
Oben