![]() |
Map-making connundrum
Intermittently while I work on my mod, I'm also making maps, but there is something I'm not clear on. Can somebody explain to me the mechanics of adding and removing provinces to/from an existing map? The controls in the editor don't seem very intuitive, and despite testing I cannot figure out how they work.
|
Re: Map-making connundrum
It is late here and I was just skimming the forums before calling it a night so excuse me for not taking more time to explain the following code. If you are familiar with programming then it shouldn't take to much to convert it to your language of choice. Just replace the map name with your own and replace "212" with the province number that you are removing.
Hope this helps. Here is a yabasic script that I wrote to fix an existing map file (AomOrc3.map) when I found a bogus pixel in the map image after all of the neighbor work was already done: <font class="small">Code:</font><hr /><pre> REM used to fix map file after removing province pixel # 212. OPEN 1, "AomOrc3.map", "r" OPEN 2, "AomOrc301fixed.map", "w" while(not eof(1)) x=0 y=0 line input #1 a$ if left$(a$,8)="#terrain" then x=val(mid$(a$,10,(instr(a$," ",10)-10))) xx=val(right$(a$,(len(a$)-instr(a$," ",10)))) if x>212 then x=x-1 a$="#terrain "+str$(x)+" "+str$(xx) endif elseif left$(a$,10)="#neighbour" then i=11 j=instr(a$," ",12) x=val(mid$(a$,12,j-i-1)) xx=val(mid$(a$,j+1)) if x>212 then x=x-1 a$="#neighbour "+str$(x)+" "+str$(xx) endif if xx>212 then xx=xx-1 a$="#neighbour "+str$(x)+" "+str$(xx) endif elseif left$(a$,6)="#start" then x=val(mid$(a$,8)) if x>212 then x=x-1 a$="#start "+str$(x) endif elseif left$(a$,9)="#landname" then x=val(mid$(a$,11,(instr(a$," ",11)-11))) tmpstr$=mid$(a$,(instr(a$," ",11)+1)) if x>212 then x=x-1 a$="#landname "+str$(x)+" "+tmpstr$ endif endif print #2 a$ end while CLOSE #1 close #2 </pre><hr /> |
Re: Map-making connundrum
The province removed and province added commands in the map editor just don't work as they should. So careful with the white pixels. If you forget to add one, you either need some script to fix all neighbors above that one or you need to redo all map neighbors above it by hand. Removing provinces is very much the same thing.
So you can use Ballbarian's script if you need to remove stuff. I expect an additive script would be similar, but comments in the script would be helpful for us non-programmers to tell us what it does and where. |
Re: Map-making connundrum
Again, in a rush. Have to leave for a conference. http://forum.shrapnelgames.com/image...ies/tongue.gif
Added minimal comments: <font class="small">Code:</font><hr /><pre> REM used to fix map file after removing province pixel # 212. REM OPEN ORIG MAP FILE FOR READING OPEN 1, "AomOrc3.map", "r" REM OPEN/CREATE FIXED MAP FILE OPEN 2, "AomOrc301fixed.map", "w" REM READ THE ORIG LINE BY LINE TO END OF FILE while(not eof(1)) x=0 y=0 line input #1 a$ if left$(a$,8)="#terrain" then x=val(mid$(a$,10,(instr(a$," ",10)-10))) xx=val(right$(a$,(len(a$)-instr(a$," ",10)))) REM IF THIS LINE IS TERRAIN AND PROV# GREATER THAN REMOVED PROV# THEN REDUCE PROV# BY 1 if x>212 then x=x-1 a$="#terrain "+str$(x)+" "+str$(xx) endif elseif left$(a$,10)="#neighbour" then i=11 j=instr(a$," ",12) x=val(mid$(a$,12,j-i-1)) xx=val(mid$(a$,j+1)) REM IF THIS LINE IS NEIGHBOUR AND PROV# GREATER THAN REMOVED PROV# THEN REDUCE PROV# BY 1 (1ST NEIGHBOUR) if x>212 then x=x-1 a$="#neighbour "+str$(x)+" "+str$(xx) endif REM IF THIS LINE IS NEIGHBOUR AND PROV# GREATER THAN REMOVED PROV# THEN REDUCE PROV# BY 1 (2ND NEIGHBOUR) if xx>212 then xx=xx-1 a$="#neighbour "+str$(x)+" "+str$(xx) endif elseif left$(a$,6)="#start" then x=val(mid$(a$,8)) REM IF THIS LINE IS START AND PROV# GREATER THAN REMOVED PROV# THEN REDUCE PROV# BY 1 if x>212 then x=x-1 a$="#start "+str$(x) endif elseif left$(a$,9)="#landname" then x=val(mid$(a$,11,(instr(a$," ",11)-11))) tmpstr$=mid$(a$,(instr(a$," ",11)+1)) REM IF THIS LINE IS LANDNAME AND PROV# GREATER THAN REMOVED PROV# THEN REDUCE PROV# BY 1 if x>212 then x=x-1 a$="#landname "+str$(x)+" "+tmpstr$ endif endif REM PRINT THE LINE WITH ANY CHANGES TO THE FIXED MAP FILE print #2 a$ end while CLOSE #1 close #2 </pre><hr /> |
All times are GMT -4. The time now is 06:09 PM. |
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©1999 - 2025, Shrapnel Games, Inc. - All Rights Reserved.