This information, originally posted here, should help in sorting out the capture town problems we're having at the moment:
Making boarding locators in towns.
First, make sure that logging is enabled (check PROGRAM\engine.ini file for settings):
(the full_screen is 0 because we'll have to do Alt+Tab).
Essentially, someone has to check every location listed in the towns entries in PROGRAM\Towns\InitTowns.c (look for the lines starting with ctown.boarding.l*).
Check where the model of that location is (you can find the file names in PROGRAM\Locations\init\<island>.c, at the end of the Locations[n].models.always.locators lines for each location listed in InitTowns.c), go to that folder and edit the file with boarding locators (look in RESOURCE\MODELS\Locations\Town_<name>\, and you will find the relevant files ending in _lb.gm) with Inez Dias' TOOL.
(If the *_lb.gm file doesn't exist, you can create it by copying the original *_l.gm.)
Then, the "reload", "goto" and "rld" locators can be deleted from the *_lb.gm file, with the exception of one temporary locator, which would need to be renamed to loc and be a type of rld.
You also need to generate a text file of the locators (go to Locators->Write to File in Tool).
Check PROGRAM\Console.c for this line:
Change "Oxbay_port" with the ID of the desired location (see PROGRAM\Towns\InitTowns.c), remove the "//" from the beginning of the line, and save the file.
Now, start the game and load either a new game or save game, and press F12 to execute the code. When executed, the player character should be teleported to the desired location. The character should be able to walk freely there.
(*) When the character reaches a point which would be good to place a friendly soldier (on the player's side), use Alt + Tab to temporarily exit the game and open console.c.
Towards the top of the file, change switch(0) to switch(1), and then find this line:
Remove the "//" from the beginning of the line; then find this line:
This time, add "//" to the beginning. Finally, save the file.
Now, go back into the game and press F12 again. On the screen, the string "Player and enemy locator generated." should appear, and in PROGRAM\compile.log, a line starting with "rld,loc" should appear.
The locator coordinates are compatible with text output from Tool; loc is for player soldiers. After producing some amount of positions (less than 16 for a side; it would be, say 14 for a side for most of locations), use Alt + Tab to open console.c again. Find the two lines from above, undo the changes you made (i.e. add or remove "//" from the lines), and save the file.
After making those changes, repeat steps from (*), but this time for enemy soldiers. If in port, friendly soldiers were put on a pier and/or near the sea, the enemies should be on the other side, closer to the entrance to the town. The amount of enemy locators should be equal to that of friendly locators. After this, you can exit the game normally. Now, compile.log should be edited: sequential integer numbers should be added starting from 0 after each loc and aloc. For example:
into:
Then all those lines should be copied to locators file we saved in Tool earlier; line starting with
as well as any earlier lines with "rld,loc1,...", "rld,loc2,...", ... and "rld,aloc1,...", "rld,aloc2,...", ... should be deleted now. After saving that file, open Tool again, load proper *_lb.gm file, use option Locators->Read from File and save in gm format - file *_lb_x.gm should appear in a folder with model. Before proceeding to a next location PROGRAM\console.c should be reseted to starting form. After making locations you can upload that *_lb_x.gm files on ftp so I could use them.
Note 28/12/2012: post edited by Armada to fix formatting errors from the old forum.
Making boarding locators in towns.
First, make sure that logging is enabled (check PROGRAM\engine.ini file for settings):
Code:
full_screen = 0
...
tracefilesoff = 0
[script]
debuginfo = 1
codefiles = 0
runtimelog = 1
Essentially, someone has to check every location listed in the towns entries in PROGRAM\Towns\InitTowns.c (look for the lines starting with ctown.boarding.l*).
Check where the model of that location is (you can find the file names in PROGRAM\Locations\init\<island>.c, at the end of the Locations[n].models.always.locators lines for each location listed in InitTowns.c), go to that folder and edit the file with boarding locators (look in RESOURCE\MODELS\Locations\Town_<name>\, and you will find the relevant files ending in _lb.gm) with Inez Dias' TOOL.
(If the *_lb.gm file doesn't exist, you can create it by copying the original *_l.gm.)
Then, the "reload", "goto" and "rld" locators can be deleted from the *_lb.gm file, with the exception of one temporary locator, which would need to be renamed to loc and be a type of rld.
You also need to generate a text file of the locators (go to Locators->Write to File in Tool).
Check PROGRAM\Console.c for this line:
Code:
//DoQuestReloadToLocation("Oxbay_Port", "reload", "reload1" ,"");
Now, start the game and load either a new game or save game, and press F12 to execute the code. When executed, the player character should be teleported to the desired location. The character should be able to walk freely there.
(*) When the character reaches a point which would be good to place a friendly soldier (on the player's side), use Alt + Tab to temporarily exit the game and open console.c.
Towards the top of the file, change switch(0) to switch(1), and then find this line:
Code:
//trace("rld,loc,"+xx+",0,"+y+","+xz+",0,1,0,"+zx+",0,"+zz+","+x+","+y+","+z+",1,0,0,0,0,0,0,0,0,");
Code:
trace("rld,aloc,"+xx+",0,"+xz+",0,1,0,"+zx+",0,"+zz+","+x+","+y+","+z+",1,0,0,0,0,0,0,0,0,");
Now, go back into the game and press F12 again. On the screen, the string "Player and enemy locator generated." should appear, and in PROGRAM\compile.log, a line starting with "rld,loc" should appear.
The locator coordinates are compatible with text output from Tool; loc is for player soldiers. After producing some amount of positions (less than 16 for a side; it would be, say 14 for a side for most of locations), use Alt + Tab to open console.c again. Find the two lines from above, undo the changes you made (i.e. add or remove "//" from the lines), and save the file.
After making those changes, repeat steps from (*), but this time for enemy soldiers. If in port, friendly soldiers were put on a pier and/or near the sea, the enemies should be on the other side, closer to the entrance to the town. The amount of enemy locators should be equal to that of friendly locators. After this, you can exit the game normally. Now, compile.log should be edited: sequential integer numbers should be added starting from 0 after each loc and aloc. For example:
Code:
rld,loc,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
rld,loc,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
...
rld,loc,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
rld,aloc,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
rld,aloc,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
...
rld,aloc,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
Code:
rld,loc0,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
rld,loc1,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
...
rld,locn,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
rld,aloc0,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
rld,aloc1,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
...
rld,alocn,1,0,1,1,0,1,0,1,0,0,1.000,1.000,1.000,1,0,0,0,0,0,0,0,0,
Code:
rld,loc,...
Note 28/12/2012: post edited by Armada to fix formatting errors from the old forum.
Last edited: