Pridanie novej lokácie do worldmapy
Moderátor: Razfallow
- Valiant
- Sigilan
- Příspěvky: 95
- Registrován: 6.1.2006 9:49
- Bydliště: Levice (hometown), Sliač (worktown), Slovakia
- Kontaktovat uživatele:
Pridanie novej lokácie do worldmapy
Zdravím vsetkých
Táto otázka je adresovaná hlavne Vlasákovi (..mimochodom, cau Vlasy ), ale ak vie odpovedať aj niekto iný, budem len vdačný...
Moja otázka znie: Ako mám pomocou WeiDU pridať novú lokáciu do worldmapy? Táto lokácia nemá mať žiadne linky, t.j. mám na mysli linky na krajoch mapy (N,W,E,S)... proste len pridanie lokácie na mapu.... s vlastnou ikonou...
Dostat sa do nej bude možné len cez skripty, ale to uz by som si vyriešil sám...
Druhá otázka: Tú novú ikonu, ktorú vyrobím, mám pridať do súboru MAPICONS.BAM alebo nie....??
Prosil by som o napísanie vzorového skriptu...
Dík
Táto otázka je adresovaná hlavne Vlasákovi (..mimochodom, cau Vlasy ), ale ak vie odpovedať aj niekto iný, budem len vdačný...
Moja otázka znie: Ako mám pomocou WeiDU pridať novú lokáciu do worldmapy? Táto lokácia nemá mať žiadne linky, t.j. mám na mysli linky na krajoch mapy (N,W,E,S)... proste len pridanie lokácie na mapu.... s vlastnou ikonou...
Dostat sa do nej bude možné len cez skripty, ale to uz by som si vyriešil sám...
Druhá otázka: Tú novú ikonu, ktorú vyrobím, mám pridať do súboru MAPICONS.BAM alebo nie....??
Prosil by som o napísanie vzorového skriptu...
Dík
Kiski aka Valiant, the 3ds Max mage
Slovakia
Tower Of Deception creator
Slovakia
Tower Of Deception creator
Kiski: promiň odmlku...
Já se ve weidu moc nevyznám, takže ti přímo s ním moc neporadím, ale aspoň globální myšlenky.
afaik weidu žádnou přímou funkci pro vložení lokace do worldmapy nemá, tudíž se to musí udělat ručně.
Jednou možností by tady bylo vyloženě "ručně" - číst offsety, počty elemetnů sekcí a v cyklech aktualizovat tyhle hodnoty.
S pomocí informací odsud:
http://iesdp.gibberlings3.net/ieformats/wmap_v1.htm
...bys musel načítat příslušné hodnoty a aktualizovat je. Podstatný by tady byl offset 0x0020 ve worldmap entry, který představuje počet lokací v mapě - ten bys musel o 1 zvýšit.
Pak bys za poslední area entry musel vložit celou strukturu area entry s tvými hodnotami. A protože tím se ti posunou area links, musel bys ve všech area entries přepsat jejich offsety na tyto linky (posunují se o délku area entry).
Ono to zní složitě, složité to ani tak moc ale není, ale do detailů to nerozebírám, protože je zde elegatnější možnost (pouze při použití s ToB):
soubor XNEWAREA.2da a přidání řádku do něj.
http://iesdp.gibberlings3.net/2da/2da_tob/xnewarea.htm
Jeho vyplnění je v zásadě intutivní - pouze položka flags ne. Jde tam o bitovou mapu velikosti 4 bytů (byte=8 bitů). Na místo daného bitu se dá 1, pokud má ona vlastnost platit.
O těchto flags jsou známé následující údaje:
Pokud např. chci, aby byla lokace viditelná a jakoby začáteční (umělý příklad), musím ji nastavit bity 0 a 3 na hodnotu 1. Jak to vypadá (bit nejvíce vlevo je 31., bit nejvíce vpravo 0.):
000...(nepoužité bity 31-4 - nuly)...1001
Tohle je dvojkové (binární) číslo, které převedeš na desítkové a dostaneš hodnotu, kterou zapsat do sloupce FLAGS. V tomto případě 00...0001001 = 9.
Pro druhý příklad - u ar3000, jak je zapsáno v tom .2da, je flags na 7, což dává bitovou mapu 00...000111 (visible, unknown, can be visited).
(pro převod čísel lze použít kalkulačku ve windows se zapnutým vědeckým rozhraním - tam jsou pak volby mezi dec, hex, bin, oct.
Dále je tam pak sloupec LINK_2DA, kam zapíšeš .2da soubor tvé lokace, kam zapíšeš případné linky.
Takže celý proces spočívá v tom, že pomocí weidu přidáš řádek do XNewArea.2da
Takhle nějak rámcově by to mohlo fungovat... ale ber to spíš jako mustr...
jj, ikony patří do mapicons.bam...
Já se ve weidu moc nevyznám, takže ti přímo s ním moc neporadím, ale aspoň globální myšlenky.
afaik weidu žádnou přímou funkci pro vložení lokace do worldmapy nemá, tudíž se to musí udělat ručně.
Jednou možností by tady bylo vyloženě "ručně" - číst offsety, počty elemetnů sekcí a v cyklech aktualizovat tyhle hodnoty.
S pomocí informací odsud:
http://iesdp.gibberlings3.net/ieformats/wmap_v1.htm
...bys musel načítat příslušné hodnoty a aktualizovat je. Podstatný by tady byl offset 0x0020 ve worldmap entry, který představuje počet lokací v mapě - ten bys musel o 1 zvýšit.
Pak bys za poslední area entry musel vložit celou strukturu area entry s tvými hodnotami. A protože tím se ti posunou area links, musel bys ve všech area entries přepsat jejich offsety na tyto linky (posunují se o délku area entry).
Ono to zní složitě, složité to ani tak moc ale není, ale do detailů to nerozebírám, protože je zde elegatnější možnost (pouze při použití s ToB):
soubor XNEWAREA.2da a přidání řádku do něj.
http://iesdp.gibberlings3.net/2da/2da_tob/xnewarea.htm
Jeho vyplnění je v zásadě intutivní - pouze položka flags ne. Jde tam o bitovou mapu velikosti 4 bytů (byte=8 bitů). Na místo daného bitu se dá 1, pokud má ona vlastnost platit.
O těchto flags jsou známé následující údaje:
Kód: Vybrat vše
bit 0: is area visible? // je lokace od začátku hry viditelná
bit 1: unknown //? mám tady podezření, že jde o lokace přístupné bez průchodu městskou bránou
bit 2: set if area can be visited // lze do ní rovnou cestovat kliknutím
bit 3: set if area has been visited // zřejmě použito je pro začátek hry pro lokaci, kde se začalo...
bits 4-31: unused?
000...(nepoužité bity 31-4 - nuly)...1001
Tohle je dvojkové (binární) číslo, které převedeš na desítkové a dostaneš hodnotu, kterou zapsat do sloupce FLAGS. V tomto případě 00...0001001 = 9.
Pro druhý příklad - u ar3000, jak je zapsáno v tom .2da, je flags na 7, což dává bitovou mapu 00...000111 (visible, unknown, can be visited).
(pro převod čísel lze použít kalkulačku ve windows se zapnutým vědeckým rozhraním - tam jsou pak volby mezi dec, hex, bin, oct.
Dále je tam pak sloupec LINK_2DA, kam zapíšeš .2da soubor tvé lokace, kam zapíšeš případné linky.
Takže celý proces spočívá v tom, že pomocí weidu přidáš řádek do XNewArea.2da
Kód: Vybrat vše
COPY_EXISTING ~xnewarea.2da~ ~override~
COUNT_2da_ROWS 5, "numRows" // zjistění, kolik řádků už máme (včetně záhlaví sloupců); 5 zvoleno jen tak, aby se do filtru dostaly důležité řádky a ne i hlavička atp.
APPEND ~xnewarea.2da~ ~("%numRows%" - 1 ) AR9876 AR9876 7 .......~
//a případný APPEND do .2da linků tvé lokace
jj, ikony patří do mapicons.bam...
- Valiant
- Sigilan
- Příspěvky: 95
- Registrován: 6.1.2006 9:49
- Bydliště: Levice (hometown), Sliač (worktown), Slovakia
- Kontaktovat uživatele:
To Vlasak: Ano, ale XNEWAREA mozem pouzit len vtedy, ked chcem pridat nejaku lokaciu do mapy, ak mam ToB nainstalovany. Ale ak ho nemam, tato moznost tym padom pada...
Videl som .tp2 skripty niektorych modov, ktore pridavaju lokacie do mapy. Zaciatkom kodov som rozumel, lenze vsetky co som videl, pridavali aj area links, a to som ja nechcel. No ked som z nich zobral iba tu cast kodu, ktora sa tykala iba pridania oblasti na mapu, tak hra padla... Jasne ze padla, lebo som neposunul linky...
Takze zaverecna otazka: je mozne, ze by si mi taky vzorovy skript napisal??
Nazov lokacie daj akychces, ten si zmenit dokazem...
Viem, ze to zvladnes, takze by som ta chcel o to velmi poprosit...
No ak sa ti nechce alebo nemas cas, tak sa na to vykasli...
Videl som .tp2 skripty niektorych modov, ktore pridavaju lokacie do mapy. Zaciatkom kodov som rozumel, lenze vsetky co som videl, pridavali aj area links, a to som ja nechcel. No ked som z nich zobral iba tu cast kodu, ktora sa tykala iba pridania oblasti na mapu, tak hra padla... Jasne ze padla, lebo som neposunul linky...
Takze zaverecna otazka: je mozne, ze by si mi taky vzorovy skript napisal??
Nazov lokacie daj akychces, ten si zmenit dokazem...
Viem, ze to zvladnes, takze by som ta chcel o to velmi poprosit...
No ak sa ti nechce alebo nemas cas, tak sa na to vykasli...
Kiski aka Valiant, the 3ds Max mage
Slovakia
Tower Of Deception creator
Slovakia
Tower Of Deception creator
- Valiant
- Sigilan
- Příspěvky: 95
- Registrován: 6.1.2006 9:49
- Bydliště: Levice (hometown), Sliač (worktown), Slovakia
- Kontaktovat uživatele:
To Vlasak: Bude toto pracovat??
Ak nie, fixni to plz...Dik..
Kód: Vybrat vše
COPY ~TOD/Subory/Worldmap.wmp~ ~override~
READ_LONG 0x30 "area_num"
READ_LONG 0x34 "area_off"
READ_LONG 0x38 "link_off"
READ_LONG 0x3c "link_num"
WRITE_LONG 0x30 ("%area_num%" + 1)
WRITE_LONG 0x38 ("%link_off%" + 0xf0)
WRITE_LONG 0x3c ("%link_num%" + 4)
//Area Ofsety
INSERT_BYTES ("%area_off%" + (0xf0 * "%area_num%")) 0xf0 // vlozenie novel lokacie do worldmapy
WRITE_ASCII ("%area_off%" + (0xf0 * "%area_num%")) ~VA#001~
WRITE_ASCII ("%area_off%" + 0x08 + (0xf0 * "%area_num%")) ~VA#001~
WRITE_ASCII ("%area_off%" + 0x10 + (0xf0 * "%area_num%")) ~VA#001~
WRITE_LONG ("%area_off%" + 0x34 + (0xf0 * "%area_num%")) 27 // cislo ikony v MAPINONS.BAM - neexistuje zamerne
WRITE_LONG ("%area_off%" + 0x38 + (0xf0 * "%area_num%")) 503 // koordinat X
WRITE_LONG ("%area_off%" + 0x3C + (0xf0 * "%area_num%")) 269 // koordinat Y
WRITE_LONG ("%area_off%" + 0x50 + (0xf0 * "%area_num%")) 0 // Ziadna linka na N
WRITE_LONG ("%area_off%" + 0x54 + (0xf0 * "%area_num%")) ("%link_num%") // N link index
WRITE_LONG ("%area_off%" + 0x58 + (0xf0 * "%area_num%")) 0 // Ziadna linka na W
WRITE_LONG ("%area_off%" + 0x5c + (0xf0 * "%area_num%")) ("%link_num%" + 3) // W link index
WRITE_LONG ("%area_off%" + 0x60 + (0xf0 * "%area_num%")) 0 // Ziadna linka na S
WRITE_LONG ("%area_off%" + 0x64 + (0xf0 * "%area_num%")) ("%link_num%" + 2) // S link index
WRITE_LONG ("%area_off%" + 0x68 + (0xf0 * "%area_num%")) 0 // Ziadna linka na E
WRITE_LONG ("%area_off%" + 0x6c + (0xf0 * "%area_num%")) ("%link_num%" + 1) // E link index
END
Kiski aka Valiant, the 3ds Max mage
Slovakia
Tower Of Deception creator
Slovakia
Tower Of Deception creator
Kiski: zkusím to projít se začátkem týdne, mrknu na to
Ještě jeden trik k řešení - zkus tam tu svou lokaci přidat natvrdo třeba přes DLTCEP nebo NI a nastavuj to tak dlouho, až to bude fungovat Pak se podívej, co se přidalo do worldmap.wmp a přidané hodnoty jsou samozřejmě ty, kterými to pak přes weidu budeš patchovat při distribuci modu.
Ještě jeden trik k řešení - zkus tam tu svou lokaci přidat natvrdo třeba přes DLTCEP nebo NI a nastavuj to tak dlouho, až to bude fungovat Pak se podívej, co se přidalo do worldmap.wmp a přidané hodnoty jsou samozřejmě ty, kterými to pak přes weidu budeš patchovat při distribuci modu.
- Valiant
- Sigilan
- Příspěvky: 95
- Registrován: 6.1.2006 9:49
- Bydliště: Levice (hometown), Sliač (worktown), Slovakia
- Kontaktovat uživatele:
Takže výsledný kód pre pridanie novej lokácie do worldmapy je tu. Jedná sa ale o lokaciu, do ktorej sa partia premiestňuje skriptom, t.j. nemá žiadne S,J,Z a V linky. V tom prípade by bol kód zložitejší. Uvádzam ho tu len kvôli zaujímavosti, hádam ho niekto využije, ako to bolo aj v mojom prípade...
Kód: Vybrat vše
COPY_EXISTING ~worldmap.wmp~ ~override~
READ_LONG 0x30 "area_num"
READ_LONG 0x34 "area_off"
READ_LONG 0x38 "link_off"
WRITE_LONG 0x30 ("%area_num%" + 1)
WRITE_LONG 0x38 ("%link_off%" + 0xf0)
INSERT_BYTES ("%area_off%" + (0xf0 * "%area_num%")) 0xf0 // inserting new area to wmp
WRITE_ASCII ("%area_off%" + (0xf0 * "%area_num%")) ~G3G12B~ // area name
WRITE_ASCII ("%area_off%" + 0x08 + (0xf0 * "%area_num%")) ~G3G12B~ // .are resref
WRITE_ASCII ("%area_off%" + 0x10 + (0xf0 * "%area_num%")) ~G3G12B~ // area long name
WRITE_LONG ("%area_off%" + 0x34 + (0xf0 * "%area_num%")) 27 // mapicon number--set to invalid (no icon)
WRITE_LONG ("%area_off%" + 0x38 + (0xf0 * "%area_num%")) 0 // x coordinate
WRITE_LONG ("%area_off%" + 0x3C + (0xf0 * "%area_num%")) 0 // y coordinate
WRITE_LONG ("%area_off%" + 0x54 + (0xf0 * "%area_num%")) ("%link_num%") // N link index
WRITE_LONG ("%area_off%" + 0x5c + (0xf0 * "%area_num%")) ("%link_num%") // W link index
WRITE_LONG ("%area_off%" + 0x64 + (0xf0 * "%area_num%")) ("%link_num%") // S link index
WRITE_LONG ("%area_off%" + 0x6c + (0xf0 * "%area_num%")) ("%link_num%") // E link index
Kiski aka Valiant, the 3ds Max mage
Slovakia
Tower Of Deception creator
Slovakia
Tower Of Deception creator