[Modding] Fragen zum Worldmap-Patching und Areas

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Die Areas haben ja Worldmap-Entrances, also ob man im Norden, Süden, Westen... etc. in der Karte rauskommt, wenn man von Gegend 1 in die Gegend 2 über die Worldmap reist.
Wo sehe ich die nochmal? In der Area.are sehe ich sie nicht, und beim Betrachten der Area über die Worldmap steigt mir NI aus.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Ich habe das mal auch bei G3 angefragt.
 

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.501
In der ARE-Datei stehen Entrances. (z. B. "ExitN", mit Near Infinity über die "Edit"-Ansicht sichtbar)
Diese können in den Area-Einträgen der WMAP-Datei referenziert werden.

Falls du mehr Details benötigst, bitte nochmal nachfragen.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Danke!
k4thos hatte sich bei G3 meiner erbarmt, das hatte ich vergessen, hier zu schreiben. Ich hab das alles ja schonmal angewendet, aber das war mir total entfallen.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Wenn ich für die EET die Worldmap direkt patchen möchte, dann sieht das ja z.B. so aus:
Code:
ACTION_IF GAME_IS ~eet~ BEGIN
    INCLUDE ~ACBre/lib/add_worldmap_tbl.tpa~
    LAF ADD_WORLDMAP_TBL
        INT_VAR
        verbose = 1
        inclSv = 0
        STR_VAR
        path_to_areas = EVAL ~ACBre/Worldmap/EET/areas.tbl~
        path_to_areas_bp = EVAL ~ACBre/Worldmap/EET/areas.tbl~
        path_to_links = EVAL ~ACBre/Worldmap/links.tbl~
        path_to_trans = EVAL ~ACBre/TRA/%LANGUAGE

%/worldmap.tra~
    END
END
Frage hierzu: Was genau besagt eigentlich die unter path_to_areas_bp angegeben Datei? Inwiefern sollte die sich von der unter path_to_areas unterscheiden?
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Und gleich noch eine Frage hinterher.
Wenn eine Mod die nötigen Infos bereiststellt, damit die darin befindlichen Areas von der Worldmap-Mod gepatcht werden können, dann sieht das ja z.B. so aus:
Code:
//Worldmap
MKDIR ~Worldmap~

ACTION_IF FILE_EXISTS ~Worldmap/map_mods_areas.tbl~ THEN BEGIN
  COPY ~Worldmap/map_mods_areas.tbl~  ~Worldmap~
  APPEND_FILE ~ACBre/Worldmap/areas.tbl~
END ELSE BEGIN
  COPY ~ACBre/Worldmap/areas.tbl~ ~Worldmap/map_mods_areas.tbl~
END
ACTION_IF FILE_EXISTS ~Worldmap/map_mods_links.tbl~ BEGIN
  COPY ~Worldmap/map_mods_links.tbl~  ~Worldmap~
  APPEND_FILE ~ACBre/Worldmap/links.tbl~
END ELSE BEGIN
  COPY ~ACBre/Worldmap/links.tbl~ ~Worldmap/map_mods_links.tbl~
END
ACTION_IF FILE_EXISTS ~Worldmap/map_mods_trans.tra~ BEGIN
  COPY ~Worldmap/map_mods_trans.tra~  ~Worldmap~
  APPEND_FILE_EVALUATE ~ACBre/TRA/%LANGUAGE%/worldmap.tra~
END ELSE BEGIN
  COPY ~ACBre/TRA/%LANGUAGE%/worldmap.tra~

~Worldmap/map_mods_trans.tra~
END

Frage hierzu: nun hat die Worldmap-Mod abr zwei unterschiedlich große Worldmaps zur Auswahl, und in der Worldmapmod sind alle möglichen Mods mit verschobenen Koordinaten berücksichtigt (NTotS, DSOtSC, CtB, etcpp).

-Was muss/kann/sollte eine Mod hier anbieten, um mit beiden Kartengrüßen kompatibel zu sein?
-Sollten/müssen(?) alle Mods mit Areas für die Worldmap in der Worldmap mit verschobenen Koordinaten enthalten sein, damit für die große/kleine Worldmap richtig gepatcht wird?
 

Weigo

Senior Member
Registriert
29.07.2005
Beiträge
360
Die Frage kann ich dir beantworten @Jastey
Grundsätzlich werden die Koordinaten der Gebiete auf die große 8000*6000 Karte (Werte weiß ich nicht mehr exakt) ausgelegt und angegeben.
Für die die kleinere Version, werden die y-Koordinaten automatisch um 1700 verkleinert. Allerdings für Gebiete mit y-Koord. zwischen 0 und 1700 geht die kleinere Karte nicht.
(z.B.: Drizzt Saga ist nicht mit der kleinen Karte kompatibel, da ja das Eiswindtal nicht mehr auf der Karte ist.)
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
@Weigo danke für die Antwort!
Heißt das, dass die in der Worldmapmod enthaltenen Mods die sind, bei denen die automatische Verkleinerung nicht funktioniert?
Und das also nötig ist, wenn der y-Wert unter 1700 ist?
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Frage hierzu: Was genau besagt eigentlich die unter path_to_areas_bp angegeben Datei? Inwiefern sollte die sich von der unter path_to_areas unterscheiden?

@Weigo falls Du nir hierzu noch einen Tipp geben kannst, momentan stehen in beiden Pfaden jeweils das gleiche was keinen Sinn macht.
Meine Vermutung: die unter path_to_areas ist die, die für das Direktpatchen der Worldmap des entsprechenden Spiels nötig ist (z.B. EET) und die unter path_to_areas_bp ist die Version für die Worldmap?
 

Weigo

Senior Member
Registriert
29.07.2005
Beiträge
360
@Weigo danke für die Antwort!
Heißt das, dass die in der Worldmapmod enthaltenen Mods die sind, bei denen die automatische Verkleinerung nicht funktioniert?
Und das also nötig ist, wenn der y-Wert unter 1700 ist?
In der Worldmapmod sind keine Mods enthalten. Nur besteht ein Teil des Worldmap Mods aus Verbesserungen der area und links tables. Aus dem Grund sind eine ganze Reihe von tables mit dabei. Die meisten stammen nicht von mir, ich war nur zum Teil bei Erebusants Verbesserungen dabei.

Während der Installtion wird geprüft, ob die y Werte der Areas kleiner als 1700 sind oder bestimmte Mods, wie Drizzt Saga (die ja Gebiete im Eiswindtal haben) installiert sind (wird daran erkannt, dass in der map_mods_areas.tbl der Gebietsname auftaucht)

@Weigo falls Du nir hierzu noch einen Tipp geben kannst, momentan stehen in beiden Pfaden jeweils das gleiche was keinen Sinn macht.
Meine Vermutung: die unter path_to_areas ist die, die für das Direktpatchen der Worldmap des entsprechenden Spiels nötig ist (z.B. EET) und die unter path_to_areas_bp ist die Version für die Worldmap?
Ich glaub da hast du recht mit der bp Variante. Ich kenne den Code nicht so genau, der stammte nach meiner Worldmap Zeit. Ich werde da morgen mal einen Blick darauf werfen.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
In der Worldmapmod sind keine Mods enthalten.
Ich meinte die tbl Dateien unter original/updates/tbl, z.B. Wenn ich mir da die für NTotSC ansehe, dann sieht die ntotsc_areas.tbl so aus:
Code:
//NTotSC New Areas Table
SHORT_NAME  CONTENT  LONG_NAME  FLAGS  BAM_ANIM  X_POS  Y_POS  NAME         TOOLTIP      LOAD_IM

AR20PB      AR20PB   AR20PB     2      62        1320   1836   @NT_783001   @NT_783001   N        //Northern Coast
AR10PB      AR10PB   AR10PB     4      73        1500   1800   @NT_783002   @NT_783002   N        //Field of the Dead
AR40PB      AR40PB   AR40PB     2      74        1860   1728   @NT_783003   @NT_783003   N        //Northern Wood
AR01PB      AR01PB   AR01PB     2      40        1860   1858   @NT_783004   @NT_783004   N        //Wood of the Dead
AR30PB      AR30PB   AR30PB     4      46        1850   2002   @NT_783005   @NT_783005   N        //Northern Citadel
AR60PB      AR60PB   AR60PB     4      49        2330   2260   @NT_783006   @NT_783006   N        //Temple of the Black Hand

Unter revised/tbl liegt die new_map_mods_areas_ntotsc.tbl, die so aussieht:
Code:
//NTotSC New Areas Table
SHORT_NAME  CONTENT  LONG_NAME  FLAGS  BAM_ANIM  X_POS  Y_POS  NAME         TOOLTIP      LOAD_IM

AR20PB      AR20PB   AR20PB     2      62        1010   1425   @NT_783001   @NT_783001   N        //Northern Coast
AR10PB      AR10PB   AR10PB     4      73        1505   1325   @NT_783002   @NT_783002   N        //Field of the Dead
AR40PB      AR40PB   AR40PB     2      74        2085   1295   @NT_783003   @NT_783003   N        //Elven Wood
AR01PB      AR01PB   AR01PB     2      40        1660   1723   @NT_783004   @NT_783004   N        //Wood of the Dead
AR30PB      AR30PB   AR30PB     4      46        2675   1500   @NT_783005   @NT_783005   N        //Northern Citadel
AR60PB      AR60PB   AR60PB     4      49        2460   2185   @NT_783006   @NT_783006   N        //Temple of the Black Hand
AR9PBA      AR9PBA   AR9PBA     4      62        1050   2350   @NT_783007   @NT_783007   N        //Sirene's Island


In der Mod selbst sieht die areas.tbl so aus:
Code:
//NTotSC New Areas Table
SHORT_NAME  CONTENT  LONG_NAME  FLAGS  BAM_ANIM  X_POS  Y_POS  NAME         TOOLTIP      LOAD_IM

AR20PB      AR20PB   AR20PB     2      62       1320    36     @NT_783001   @NT_783001   N        //Northern Coast
AR10PB      AR10PB   AR10PB     4      73       1500    100    @NT_783002   @NT_783002   N        //Field of the Dead
AR40PB      AR40PB   AR40PB     2      74       1860    28     @NT_783003   @NT_783003   N        //Northern Wood
AR01PB      AR01PB   AR01PB     2      40       1860    158    @NT_783004   @NT_783004   N        //Wood of the Dead
AR30PB      AR30PB   AR30PB     4      46       1850    302    @NT_783005   @NT_783005   N        //Northern Citadel
AR60PB      AR60PB   AR60PB     4      49       2330    560    @NT_783006   @NT_783006   N        //Temple of the Black Hand

Ich sehe als Unterschied, dass in der Worldmapmod in der original/updates/tbl/ntotsc_areas.tbl die Koordinaten um meist 1700 größer sind als in der eigentlichen Mod angegeben. Nach welchen Gesichtspunkten unter revised/ die Koordinaten angeben wurden, weiß ich nicht.

Ich weiß von Bugreporst von DSotSC, dass für das Worldmap-Patchen statt der in der Originalmod enthaltenen tbl-Angaben die aus der Worldmapmod genommen wurden (war zu sehen an fehlerhaften Areabezeichnungen).

Daher meine (wiederholten) Fragen:
1. warum sind für einige Mods in der Worldmapmod tbl-Dateien enthalten?
2. was bewirken diese Dateien?
3. Wozu liegen in der Mod selbst Dateien vor, wenn sie nicht verwendet werden?
4. Was bedeuten die veränderten Koordinaten in den Optionen "original" und "revised" der Worldmapmod für Mods, die nicht mit veränderten Koordinaten enthalten sind?

Falls Du einige der Fragen bereits beantwortet hast, dann entschuldige bitte die Wiederholung. Ich habe bisher keine konkreten Antworten auf diese Fragen erhalten oder sie zumindest nicht verstanden.
Ich werde da morgen mal einen Blick darauf werfen.
Danke!
 

Weigo

Senior Member
Registriert
29.07.2005
Beiträge
360
Huiuiui, da ist von meinem tp2 Code eigentlich fast gar nichts mehr vorhanden. :)

Ich versuche dir alles zu erklären (soweit ich es selber verstehe) und wenn was nicht klar ist, dann frag ruhig nochmal nach :D

Code:
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
/////                                                  \\\\\
///// Part 1: New Clothmap-style map                   \\\\\
/////                                                  \\\\\
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\


BEGIN @1000
DESIGNATED 0
REQUIRE_PREDICATE ENGINE_IS ~tob bgee bg2ee~ ~This mod cannot be installed on this game~
//REQUIRE_PREDICATE "%WEIDU_OS%" STRING_COMPARE_CASE osx OR FILE_EXISTS ~bp-bgt_worldmap/bin/osx/mosunpack~ ~This mod is not available for your platform~

COPY_EXISTING sw1h01.itm ~override/bp-bgt_wm6.wm6~ // flag to say we've installed wm6 in our game

// ==============================
// Part 1.1: Travel Times and Area Visibility, also input construction (areas, links and translations etc) for build_worldmap
// ==============================

INCLUDE ~bp-bgt_worldmap/lib/load_tables.tpa~
Die letzte Zeile ist entscheidend, dort werden in der load_tables.tpa die areas.tbl und link.tbl vorbereitet, bevor sie in der worldmap.wmp installiert werden

load_tables.tpa
Code:
///////////////////////////////////////////////////////////////////////////
// Before tables are loaded ///////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////

MKDIR worldmap

ACTION_IF MOD_IS_INSTALLED dq.tp2 0 BEGIN
  INCLUDE "bp-bgt_worldmap/lib/compat/fft.tpa"
END
ACTION_IF MOD_IS_INSTALLED wheels.tp2 0 BEGIN
  INCLUDE "bp-bgt_worldmap/lib/compat/wheels.tpa"
END
ACTION_IF FILE_EXISTS_IN_GAME "l-sar1.are" AND GAME_INCLUDES ~tob~ BEGIN // Almateria's Restoration Project
  INCLUDE "bp-bgt_worldmap/lib/compat/arestorationp.tpa"
END

///////////////////////////////////////////////////////////////////////////
// Tables are loaded //////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////

OUTER_SET got_revised = GAME_IS ~tutu tutu_totsc tob bgt~ ? 1 : 0

//Original or Revised?
ACTION_IF got_revised BEGIN
  PRINT @2000
  ACTION_READLN how
  OUTER_WHILE NOT IS_AN_INT how OR how > 2 OR how < 1 BEGIN
    PRINT @2000
    ACTION_READLN how
  END
END ELSE BEGIN
  OUTER_SET how = 1
END

ACTION_IF how = 1 BEGIN
  INCLUDE ~bp-bgt_worldmap/lib/original.tpa~
END ELSE BEGIN
  INCLUDE ~bp-bgt_worldmap/lib/revised.tpa~
END
Der obere Teil benutzt nochmals Tabellen und Funktionen, die Verbesserungen der einzelnen Mods einfügen.
Beim unteren Teil kommt nun die Auswahl Original oder Revised.
Original war ursprünglich so gedacht, dass wirklich nur die aus den Mod mitgelieferten tbls benutzt werden.
Revised stammt von Erebusant, er hat damals sehr viel überarbeitet, viele neue Links, neue Trigger, alte Trigger deaktiviert, neue Reisezeiten usw.

Nun zur original.tpa
Code:
ACTION_IF GAME_IS ~tob bgt~ BEGIN
  OUTER_SPRINT fl#area_table ~bp-bgt_worldmap/2da/original_soa_tob_areas.2da~
  OUTER_SPRINT fl#link_table ~bp-bgt_worldmap/2da/original_soa_tob_links.2da~
END ELSE ACTION_IF GAME_IS ~tutu tutu_totsc~ BEGIN
  OUTER_SPRINT fl#area_table ~bp-bgt_worldmap/2da/original_tutu_areas.2da~
  OUTER_SPRINT fl#link_table ~bp-bgt_worldmap/2da/original_tutu_links.2da~
END ELSE ACTION_IF GAME_IS ~bgee~ BEGIN
  OUTER_SPRINT fl#area_table ~bp-bgt_worldmap/2da/original_bg1ee_areas.2da~
  OUTER_SPRINT fl#link_table ~bp-bgt_worldmap/2da/original_bg1ee_links.2da~
END ELSE ACTION_IF GAME_IS ~bg2ee eet~ BEGIN
  OUTER_SPRINT fl#area_table ~bp-bgt_worldmap/2da/original_bg2ee_areas.2da~
  OUTER_SPRINT fl#link_table ~bp-bgt_worldmap/2da/original_bg2ee_links.2da~
END

////////////////////////////////////////////
//Standard areas and links
////////////////////////////////////////////
COPY ~%fl#area_table%~ ~%fl#area_table%~
  LPM read_area_array_from_2da
BUT_ONLY

COPY ~%fl#link_table%~ ~%fl#link_table%~
  LPM read_link_array_from_2da
BUT_ONLY
Hier werden die Areas und links von BG1 und BG2 aller Versionen in einen Array eingelesen.

Dann kommen die originalen worldmap/map_mods_areas.tbl (Das sind die, die im hauptverzeichnis von BG liegen und jeder Mod seine areas und links angehängt hat.)
Code:
////////////////////////////////////////////
//Mod-added areas
////////////////////////////////////////////
ACTION_IF FILE_EXISTS "worldmap/map_mods_areas.tbl" BEGIN
  COPY "worldmap/map_mods_areas.tbl" "worldmap/map_mods_areas.tbl"
    LPF fix_table END
    LPM read_area_array_from_2da
  BUT_ONLY
END
und dann werden die originalen nochmals geupdated
Code:
//"Update" the area info with stuff we provide
//This really should be done as patches insead of overwriting all the area info
ACTION_DEFINE_ASSOCIATIVE_ARRAY mod_tables BEGIN
  AR6526 => BGT
  AR4220 => SOS
  DD3300 => TDD
  AR3610 => CtB
  RR3100 => RoT
  DSC001 => DSotSC
  AR01PB => NTotSC
  BH0100 => SoBH
  g3g12a => G3Anniversary
  F_7777 => DS
END

ACTION_PHP_EACH mod_tables AS area => table BEGIN
  ACTION_IF FILE_EXISTS_IN_GAME "%area%.are" BEGIN
    COPY "bp-bgt_worldmap/original/tbl/updates/%table%_areas.tbl" "bp-bgt_worldmap/original/tbl/updates/%table%_areas.tbl"
      LPM read_area_array_from_2da
    BUT_ONLY
  END
END

Nun zur revised.tpa
Code:
ACTION_IF GAME_IS ~tob bgt~ BEGIN
  INCLUDE ~bp-bgt_worldmap/lib/revised/megamods.tpa~
END ELSE ACTION_IF GAME_IS ~tutu tutu_totsc~ BEGIN
  INCLUDE ~bp-bgt_worldmap/lib/revised/tutu_revised.tpa~
END
megamods.tpa
Code:
////////////////////////////////////////////
//Standard SoA and ToB areas and links
////////////////////////////////////////////
COPY "bp-bgt_worldmap/2da/revised_soa_tob_areas.2da" "bp-bgt_worldmap/2da/revised_soa_tob_areas.2da"
  LPM read_area_array_from_2da
BUT_ONLY

COPY "bp-bgt_worldmap/2da/revised_soa_tob_links.2da" "bp-bgt_worldmap/2da/revised_soa_tob_links.2da"
  LPM read_link_array_from_2da
BUT_ONLY


////////////////////////////////////////////
//Mod-added areas
////////////////////////////////////////////
//Add areas from "worldmap/map_mods_areas.tbl"
ACTION_IF FILE_EXISTS "worldmap/map_mods_areas.tbl" BEGIN
  COPY "worldmap/map_mods_areas.tbl" "worldmap/map_mods_areas.tbl"
    LPF fix_table END
    LPM read_area_array_from_2da
  BUT_ONLY
END
Erst werden die revised_soa_tob_areas.2da eingelesen und dann werden auch die originalen map_mods_areas.tbl (Die von den Mods selber hinterlegt sind) eingelesen und dann werden sie gepatched (siehe Erebusant)

Ich hoffe ich habe dich nicht zu sehr verwirrt. Allerdings, was genau die Änderung der einzelnen Koordinaten auf sich hat, dass kann man nur auf der Karte nachvollziehen.
 

Weigo

Senior Member
Registriert
29.07.2005
Beiträge
360
@Weigo falls Du nir hierzu noch einen Tipp geben kannst, momentan stehen in beiden Pfaden jeweils das gleiche was keinen Sinn macht.
Meine Vermutung: die unter path_to_areas ist die, die für das Direktpatchen der Worldmap des entsprechenden Spiels nötig ist (z.B. EET) und die unter path_to_areas_bp ist die Version für die Worldmap?
Jetzt ist es mir wieder eingefallen, wass das genau bedeutet. Wir haben das ja letztens bei BST angesprochen.
Wenn man einen Mod nach der BP_Weltkarte installieren will, benutzt man ja diese install worldmap function. Deshalb braucht man diese zusätzliche path_to_areas_bp.
(Die Funktion sucht automatisch nach der BP Karte) Soll oder muss der Mod vor der Weltkarte installiert werden, kann man diese Zeile getrost ignorieren.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.922
Wenn man einen Mod nach der BP_Weltkarte installieren will
Aah, das macht Sinn!
Vielen Dank für die Erklärungen. Warum die Mods unter "original" mit drin sind und ob die nicht raus könnten wenn die Angaben in der Mod selbst enthalten sind muss ich mir nochmal genauer ansehen, abe der Hinweis mit vorher/nachher Installieren macht total Sinn! Ich merke, dass mir nicht klar war, wie das Patchen funktioniert bzw. dass es wirklich zwei verschiedene Dateien sind, die dann entsprechend im Spiel verwendet werden.
 
Oben