.::LvL
Q3A Database
error
Started by xaero350
avatar
xaero350 Rep. 0
#1   26 Aug 2017
I tried to edit a map but I get an error
.bsp has wrong version number
help me please
avatar
Tig Rep. 764
#2   26 Aug 2017
Exactly how did you try to edit this map? What tools did you use and the steps you performed would help a lot.
avatar
CZghost Rep. 1305
#3   27 Aug 2017
Bsp cannot be edited. In order to edit a compiled map, you need to decompile it first (which may be a legal issue, though). To do this, you need to depack the pk3 first (just open it with WinZIP, WinRAR or another favourite archiver, like 7-ZIP, and hit Extract button), then launch command line (press Win+R, type cmd and hit Enter key) and write down "path\to\q3map2.exe" -convert -format MAP "path\to\your\map.bsp" and press Enter. If on Linux, the same thing can be achieved with ordinary archiver and Terminal.

Edited 27 seconds after the original posting.

avatar
Tig Rep. 764
#4   29 Aug 2017
Technically, you can edit the entities within the BSP in a few ways, is that what you are trying to do?
avatar
V1979 Rep. 263
#5   02 Jan 2018
".bsp has wrong version number" commonly means that it's about another version of BSP. I suppose that it's v47(QL) instead of v46 (Q3A).
How to convert v47 to v46 (see pics - https://cloud.mail.r...c/HmyW/3KBeaHCpf) with HEX Editor Neo:
1. Open your map (*.bsp v47) in HEX Editor Neo
2. Select the bit 2f (pic. "01 v47")
3. Use the tool to fix bits (pic. "02 tools")
4. Click the final bit to change it from "2f" to "2e" (pic. "03 2f")
5. Click OK to save your result (pic. "04 2e")
6. Check your result (pic. "05 v46) - now it's v46 *.bsp file
7. Save changes and close your file.

To edit items directly in a new *.bsp file use QuArK. It seems to be easy enough and there is no need to write a manual for it.

avatar
CZghost Rep. 1305
#6   06 Jan 2018
Once you edit the map version using the hex editor, the additional advertisement lump is going to be ignored. Since advertisement boards are part of map geometry, the missing entity isn't a problem. You may miss Green Armor in vanilla or Team Arena, CPMA should load that one up without issues. However, if you want to play with bots, you will need to compile a new AAS file, since the old one is linked with the original and AAS has to be newer date&time than BSP in order to work. And of course the version mismatch. But this is just a single command line :)
avatar
V1979 Rep. 263
#7   06 Jan 2018
Of course, on modifying a *.bsp file one should create a new *.aas file.
Another manuals (https://www.excessiv...34#comment-471457)
To fix "ad_content" troubles:
1. Open a map in QuArK and select "Entitites" section.
2. Select the whole text and copy it into Notepad.
3. Replace all "advertisement" by "func_static" and remove all the lines with "cellid".
4. Replace an old text in QuArK by a new one from Notepad.
5. Save the map and close it.

To fix some textures' troubles:
1. Open a map in a Hex Editor (f.e. Hex Editor Neo).
2. Replace "original_texture" (f.e. "textures/base_wall/concrete_ow2") by "your_new_texture" (f.e. textures/base_wall/concretevow2). NB! Quantity of symbols MUST be the same.
3. Save the map and close it.
4. Write a shader (add lines into the *.shader file ( s ) of the map):

textures/base_wall/concretevow2 //new name of your new virtual texture
{
{
map textures/base_wall/concrete.tga //link to a necessary real texture
rgbGen identity
}
{
map $lightmap
blendfunc filter
rgbGen identity
tcGen lightmap
}
}

avatar
CZghost Rep. 1305
#8   07 Jan 2018
Actually, the texture name (shader name) is strictly 64 bytes long. If the name is shorter, rest of bytes are null. So you only have to ensure to remain within 64 bytes limit. It is good to use hex-editor with overwrite function. DO NOT DELETE BYTES, ONLY OVERWRITE! If you need to shorten the string, overwrite rest of bytes with null bytes. This is also the reason why shader names can't be longer than 64 bytes! Linked textures actually can be in longer paths, but you have to ensure the shader name, including path and directory separators (slash), is 64 bytes or less!

This is how texture looks like in BSP code:
typedef struct {
char[64] name; // Texture name = always 64 bytes long! If texture name is shorter, rest of bytes is NULL.
int flags; // Surface flags - this is surfaceparm definition from shader, in form of binary bitwise content
int contents; // Content flags - not sure what it does, but it's there. I think it has something to do with channels...
} texture_t;

Edited 2 days after the original posting.

Only registered members can post a reply.
Already registered? Sign in.