.com.unity Forums

.com.unity Forums (http://forum.shrapnelgames.com/index.php)
-   Scenarios, Maps and Mods (http://forum.shrapnelgames.com/forumdisplay.php?f=146)
-   -   Map-making connundrum (http://forum.shrapnelgames.com/showthread.php?t=38884)

Professor_Dyar May 22nd, 2008 12:29 AM

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.

Ballbarian May 22nd, 2008 02:01 AM

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&gt;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&gt;212 then
x=x-1
a$="#neighbour "+str$(x)+" "+str$(xx)
endif
if xx&gt;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&gt;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&gt;212 then
x=x-1
a$="#landname "+str$(x)+" "+tmpstr$
endif
endif

print #2 a$
end while
CLOSE #1
close #2
</pre><hr />

Edi May 22nd, 2008 02:14 AM

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.

Ballbarian May 22nd, 2008 08:30 AM

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&gt;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&gt;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&gt;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&gt;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&gt;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.