HL:Counter Strike Decompiling


(hazard) #1

I having trouble decompileing COUnter Strike maps i was able to do it with SoF2 maps but cant seem to get CS maps to work. When ever i try it just turns the bsp file into a 1 kb bsp file. like if I try to decompile de_aztec.bsp its 1500 kb or so it turns into a 1 kb file and i also get a 1 kb de_aztec.srf file dont know what that is. I need help getting it to a .map file this is my command line for the shortcut.
:???:
“C:\Documents and Settings\My User Name\Desktop\q3map_2.5.7_win32_x86\q3map2.exe” -v -hl -convert -format map -noflares de_aztec.bsp

the bsp file is in the same folder as q3map2 it worked with sof2 help me plz

Hazard :bash:


(Valhue2) #2

I dont believe cross platform decompileing is available. Think of it this way, HL is a heavily modified Q1 engine, which is far different then the Q3 engine. Now compare a Worldcraft (Valve Hammer Editor) outputted .map file to a GTkRad outputted .map file (look at their source by opening up the .map files in a text editor), you will see that there is indeed differences between file types. As a matter of fact, im in the process of attempting to get my HL .map file to be able to open w/ GTk… Im having to go through the map and manually remove/add stuff from within the .map file. (if theres an easier way to do this, tell me, if not ill keep searching for a way to do it. I know it can be done, iv seen it b4).

I could very well be mistaken about the -convert feature. But i highly doubt that its possible. There was a file that I remember a long time ago that decompiled halflife BSP’s … as to what it was… im not sure. Do a Google for ‘Halflife BSP Decompiler’… it should hopefully show up. I believe it also decompiles q1 maps too, quite unacceptable though. Basically what it does is take a the BSP, Invert it, make it solid, then create a block bigger then the bounds of the level, then CARVE (Ick Carve… bad… bad i tell you!) out the entire level from that single block, then it “textures” i mean… attempts to match the textures from the origional .bsp file to the new box map. In other words… think of this was as mapping for Unreal Tourney… subtraction style. Not good. This decompiler is mainly to see how complex scripts were set up in levels and to get approxamate sizes of levels… other then that its pure POOP!

you would be better off translating the .bsp into a .map file by hand… meaning you go into a room and for the lack of better wording “guess” the size of the room… or better yet,… use something as a size reference and rebuild the level by hand.

V^2

EDIT: do a search for winBSP… i came across the name mentioned in a site I was browsing through. Thats the POOP converter!


(hazard) #3

That helps but i was reading the readme.txt for q3map2 and it says that i can decompile HL maps thats where i got the idea of doing it. it said in the command line just to add -hl so i did and my end resualt were what i posted above so unless the readme is wrong then it should decompile Hl maps. Just seach for “HL” in the read me file and it should come up with it. But i’ll for you “POOP” decompiler anyways and thxs for the help :clap:

Hazard :bash:


(hazard) #4

I downloaded WinBSPc which converts HL files but as u said the .map file is a little differen’t i want u to tell me if i’m converting it to a Q3 map file heres what i’ve done(its looks a little dofferen’t than in notepad but same order u just have to get rid of some of the space between the lines:

//brush 0
{
( -1024 8192 8192 ) (-1024 -8192 8192 ) ( -1024 8192 -8192 )

-1AzMoss 0 0 180 1 1
( -768 -8192 8192 ) ( -768 8192 8192 ) ( -768 8192 -8192 ) -1AzMoss

0 0 180 1 1
( -8192 256 8192 ) ( 8192 256 8192 ) ( -8192 256 -8192 )

-1AzMoss 0 0 180 1 1
( 8192 1152 8192 ) ( -8192 1152 8192 ) ( -8192 1152 -8192 )

-1AzMoss 0 0 180 1 1
( 8192 -8192 -352 ) ( 8192 8192 -352 ) ( -8192 -8192 -352 ) -1AzMoss

0 0 270 1 1
( 8192 8192 -224 ) ( 8192 -8192 -224 ) ( -8192 -8192 -224 ) AzRoad 0

0 0 1 1
( 4832 6752 8192 ) ( -6752 -4832 8192 ) ( -6752 -4832 -8192 )

-1AzMoss 0 0 180 1 1
}

from soemthing like this

{ //brush 6
( 1472 8192 8192 ) ( 1472

-8192 8192 ) ( 1472 8192 -8192 ) AzGrass 0 0 180 1 1
( 2240 -8192

8192 ) ( 2240 8192 8192 ) ( 2240 8192 -8192 ) AzGrass 0 0 180 1 1

( -8192 304 8192 ) ( 8192 304 8192 ) ( -8192 304 -8192 )

AzGrass 0 0 0 1 1
( 8192 576 8192 ) ( -8192 576 8192 ) ( -8192

576 -8192 ) AzGrass 0 0 0 1 1
( 8192 -8192 -672 ) ( 8192 8192

-672 ) ( -8192 -8192 -672 ) AzGrass 0 0 0 1 1
( 8192 8192 -512 ) (

8192 -8192 -512 ) ( -8192 -8192 -512 ) AzGrass 0 0 0 2 2
( 8192

7857 -2348 ) ( 8192 -8037 1625 ) ( -8192 -8037 1625 ) AzGrass -24 128

0 2 2
}


(Valhue2) #5

Im not sure what your asking… but ill take a shot:

This is the format for Halflife .map files(forgive the length of this, i kept the level simple):


{
"classname" "worldspawn"
"sounds" "1"
"MaxRange" "4096"
"mapversion" "220"
"wad" "\zoners3\zhlt.wad;\sierra\half-life\valve\asylum.wad"
{
( -384 -256 0 ) ( 384 -256 0 ) ( 384 -256 -16 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 256 -16 ) ( 384 256 -16 ) ( 384 256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 -256 0 ) ( -384 -256 -16 ) ( -384 256 -16 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 256 0 ) ( 384 256 -16 ) ( 384 -256 -16 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 -256 0 ) ( -384 -256 0 ) ( -384 256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 384 256 -16 ) ( -384 256 -16 ) ( -384 -256 -16 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
}
{
( -384 -256 272 ) ( 384 -256 272 ) ( 384 -256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 256 256 ) ( 384 256 256 ) ( 384 256 272 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 -256 272 ) ( -384 -256 256 ) ( -384 256 256 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 256 272 ) ( 384 256 256 ) ( 384 -256 256 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 -256 272 ) ( -384 -256 272 ) ( -384 256 272 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 384 256 256 ) ( -384 256 256 ) ( -384 -256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
}
{
( 384 -256 256 ) ( 400 -256 256 ) ( 400 -256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 256 0 ) ( 400 256 0 ) ( 400 256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 -256 256 ) ( 384 -256 0 ) ( 384 256 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 400 256 256 ) ( 400 256 0 ) ( 400 -256 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 400 -256 256 ) ( 384 -256 256 ) ( 384 256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 400 256 0 ) ( 384 256 0 ) ( 384 -256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
}
{
( -400 -256 256 ) ( -384 -256 256 ) ( -384 -256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -400 256 0 ) ( -384 256 0 ) ( -384 256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -400 -256 256 ) ( -400 -256 0 ) ( -400 256 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 256 256 ) ( -384 256 0 ) ( -384 -256 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 -256 256 ) ( -400 -256 256 ) ( -400 256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( -384 256 0 ) ( -400 256 0 ) ( -400 -256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
}
{
( -384 256 256 ) ( 384 256 256 ) ( 384 256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 272 0 ) ( 384 272 0 ) ( 384 272 256 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 256 256 ) ( -384 256 0 ) ( -384 272 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 272 256 ) ( 384 272 0 ) ( 384 256 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 256 256 ) ( -384 256 256 ) ( -384 272 256 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 384 272 0 ) ( -384 272 0 ) ( -384 256 0 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
}
{
( -384 -272 256 ) ( 384 -272 256 ) ( 384 -272 0 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 -256 0 ) ( 384 -256 0 ) ( 384 -256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -384 -272 256 ) ( -384 -272 0 ) ( -384 -256 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 -256 256 ) ( 384 -256 0 ) ( 384 -272 0 ) CONCRETE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 384 -272 256 ) ( -384 -272 256 ) ( -384 -256 256 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 384 -256 0 ) ( -384 -256 0 ) ( -384 -272 0 ) CONCRETE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
}
}
{
"classname" "info_player_start"
"angles" "0 0 0"
"origin" "-256 1 48"
}
{
"classname" "light"
"_light" "255 255 255 200"
"_fade" "1.0"
"origin" "0 0 128"
}

The above map is a simple box map w/ a info_player_start and a light entity.

You should notice some things when dealing w/ solid brushes… take the line:

( -384 -256 0 ) ( 384 -256 0 ) ( 384 -256 -16 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 

This line is defining a point in 3D space. Err before i go any further… ill point out this link here explaining what the .map file format specs are for HL. Ill attempt to explain it a bit more simple:

The world geometry IS considered an entity, and much like the other entities in HL, they cant be converted easily over to Q3. They may have similarities,… but they are different. With that said, the World geometry is placed inside the worldspawn entity (which would be Entity 0, if you were to number it). Back to the line:

( -384 -256 0 ) ( 384 -256 0 ) ( 384 -256 -16 ) CONCRETE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 

it can be written like this:

( x1 y1 z1 ) ( x2 y2 z2 ) ( x3 y3 z3 ) TEXTURE_NAME [ tx1 ty1 tz1 toffs1 ] [ tx2 ty2 tz2 toffs2 ] rotation scaleX scaleY

When Defining a point on a 2D plane, it is written ( x , y ). But in 3D space, you need another point the Z point => ( x , y , z ). Now to define a plane, you need 3 points, Why not 4? Well thats a good question, first answer that I would reason being that one additional line of code w/in a .map file will increase that file size by 1/4,… when you map file gets to have a large ammount of brushes (up in the 120000 range) you can see that the file size will increase quite a bit. Anyway… im getting OT,… you only need 3 points to define a plane (a 2D triangle), so inorder to get a 3D cube you would need 6 lines of points.

Think of it this way:
A Cube has 6 sides, A square has 4 sides but can be split into a minimum of 2 triangles, now a cube has 6 squares that define its sides, each of those sides can be split into 2 triangles… now doing the math thats [6 sides] * [a minimum of 2 triangles] = [12 triangles] just for a cube. But as I said previously, you only need 3 points to define a plane, instead of the 6 needed for a square [2 triangles make up a square, each triangle has 3 points = 6 points for a square].

So you see

( x1 y1 z1 ) ( x2 y2 z2 ) ( x3 y3 z3 )

6 lines of this will represent a cube.

All the other stuff that follows after this bit of information is required for Texture orientation:

TEXTURE_NAME [ tx1 ty1 tz1 toffs1 ] [ tx2 ty2 tz2 toffs2 ] rotation scaleX scaleY

If you read that link i sent you to, it will attempt to explain this to you (its not important in the sence of what im attempting to explain.

Now on to Q3’s file format

// entity 0
{
"classname" "worldspawn"
// brush 0
{
( 256 192 -8 ) ( -192 192 -8 ) ( -192 -192 -8 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 -192 0 ) ( -192 192 0 ) ( 256 192 0 ) base_floor/concrete 0 0 0 0.500000 0.500000 0 0 0
( -192 -192 0 ) ( 256 -192 0 ) ( 256 -192 -8 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 -192 0 ) ( 256 192 0 ) ( 256 192 -8 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 192 0 ) ( -192 192 0 ) ( -192 192 -8 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 192 0 ) ( -192 -192 0 ) ( -192 -192 -8 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
}
// brush 1
{
( -192 192 136 ) ( -192 -192 136 ) ( -192 -192 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 192 136 ) ( -192 192 136 ) ( -192 192 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 -192 136 ) ( 256 192 136 ) ( 256 192 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 -192 136 ) ( 256 -192 136 ) ( 256 -192 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 -192 136 ) ( -192 192 136 ) ( 256 192 136 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 192 128 ) ( -192 192 128 ) ( -192 -192 128 ) base_floor/concrete 0 0 0 0.500000 0.500000 0 0 0
}
// brush 2
{
( 272 192 0 ) ( -176 192 0 ) ( -176 -192 0 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -184 -192 128 ) ( -184 192 128 ) ( 264 192 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -184 -192 128 ) ( 264 -192 128 ) ( 264 -192 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 264 -192 128 ) ( 264 192 128 ) ( 264 192 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 264 192 128 ) ( -184 192 128 ) ( -184 192 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 192 104 ) ( 256 -192 104 ) ( 256 -192 96 ) base_floor/concrete 0 0 0 0.500000 0.500000 0 0 0
}
// brush 3
{
( -200 192 104 ) ( -200 -192 104 ) ( -200 -192 96 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 192 128 ) ( -640 192 128 ) ( -640 192 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 -192 128 ) ( -192 192 128 ) ( -192 192 120 ) base_floor/concrete 0 0 0 0.500000 0.500000 0 0 0
( -640 -192 128 ) ( -192 -192 128 ) ( -192 -192 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -640 -192 128 ) ( -640 192 128 ) ( -192 192 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -184 192 0 ) ( -632 192 0 ) ( -632 -192 0 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
}
// brush 4
{
( -176 184 0 ) ( -624 184 0 ) ( -624 -200 0 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -632 -200 128 ) ( -632 184 128 ) ( -184 184 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 -200 128 ) ( 256 -200 128 ) ( 256 -200 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 -576 128 ) ( 256 -192 128 ) ( 256 -192 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -184 -192 128 ) ( -632 -192 128 ) ( -632 -192 120 ) base_floor/concrete 0 0 0 0.500000 0.500000 0 0 0
( -192 184 104 ) ( -192 -200 104 ) ( -192 -200 96 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
}
// brush 5
{
( -192 576 104 ) ( -192 192 104 ) ( -192 192 96 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -184 200 128 ) ( -632 200 128 ) ( -632 200 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( 256 -184 128 ) ( 256 200 128 ) ( 256 200 120 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -192 192 128 ) ( 256 192 128 ) ( 256 192 120 ) base_floor/concrete 0 0 0 0.500000 0.500000 0 0 0
( -632 192 128 ) ( -632 576 128 ) ( -184 576 128 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
( -176 576 0 ) ( -624 576 0 ) ( -624 192 0 ) common/caulk 0 0 0 0.500000 0.500000 0 4 0
}
}
// entity 1
{
"light" "300"
"origin" "0 0 64"
"classname" "light"
}
// entity 2
{
"origin" "-128 0 24"
"classname" "info_player_deathmatch"
}

Right away you should see some similarities, such that there is a worldspawn entity and there are 6 lines defining a Cube.

But there are also slight differences, if you notice how a texture is projected onto a brush in Q3, it is a bit different. Now here is where Im a bit sketchy, as i forgot to study for this exam… i cant remember exactly what it means:

common/caulk 0 0 0 0.500000 0.500000 0 4 0

Im guessing that the first 3 numbers, in this case 0 0 0, is the texture orientation relative to the brush, the 0.500000 number is its offset, and the 0 4 0 is its rotation x scale y scale relative to the face of the brush. You can see though that the numbers arent exactly the same, such as the floating point decimal that would (im assuming) define its offset.

Also another difference you will notice is the commented out
// entity #
&
// brush #
Im not sure if these are truely necessary, though it may be necessary for the Editor to function properly.

This concludes our breif explination in my own words of how the file types are different

To point out to you about q3map2 having a -hl tab… iv been under the impression that this was part of an April Fools joke which I believe I fell for as seen in this thread… if you notice the date of April 1 april fools day… Now I could very well be mistaken about this, but I believe it was a Joke. As you can see, i believe I was the first to get Duped by this post. :blah: EDIT: it seems that ydnar has edited that post to remove the malicious lines… but its quite possible that he forgot to edit the readme.

Now on to winBSPc:

Take a peek at this website… it has a fairly good tutorial on how to use winBSPc, although i havent personally followed this tut, its been way too long since iv used winBSPc to decompile Halflife’s Boot_Camp level (which brought my computer to a screaming hault -> crash) when i attempted to open the file in WC2.1… when i finally got it to work… it was horribly mishapen much like a badly put together Frakenstein…

I believe off the top of my head that there is a Convert to HL.map tick-button and a Convert to Q1 2 &3 tick-button in winBSPc… but i cant remember that far back. It may be possible that you have ticked the Q3 button instead of the HL button (if such a button exists).

Well hopefully I at least enlightened you w/ some knowlege… if not then I atleast Confuzed the POOP out of you! (hehe… i like to type POOP!) Maybe you could refraze your initial question if it wasnt answered in this post… hell… maybe you didnt even bother to get down to this point in reading it… who knows…

END

V^2

EDIT#2: upon further examination of your last post, am I correct to assume that you want to decompile de_aztec into a HL map format, then convert that .map format to Q3’s map format? Please correct me if im wrong.


(SCDS_reyalP) #6

Uhhm that was the version released on April 1 (known as april fools day, in the US), FWIW.

Q3map2 really only supports various q3 engine games and Tenebrae. No HL or UT2k3 :stuck_out_tongue:


(hazard) #7

Yes thats what i want to decompile a HL map and convert it to a q3 map. I’ve gotten to the part of decompiling the HL map. And u did a very good job of explaining the differences between the two but went a little of topic with telling me about why i need a (x,y,z) instead of just (x,y) HEHE i’m not that dumb even though i’m only 13 i’m in Pre-Calc :eek3: But u did ansawer my question as well as i might of liked :bash: See what i wanted to know was if i could retype then lines and format it so it would open in q3Radiant. EVEn though theres over 1000 brushes and it would take forever. And after doing a little reseach i found muitiple sites with a Q2 to Q3 .map converter. and if i’m not mistaken HL is a modifyed version of Q2 correct me if i’m wrong. But anyways they all had broken links and i was wonder if you or anyone else know where i can find it?

SO to make it simple here are my questions:

  1. Can i retype all the lines so i works with Q3
    2.Is HL based on a modifyed Q2 engin
    3.If answer to 2 is yes: Can I use and Q2 to Q3 map converter to change the Hl map to Q3
  2. If answer to 3 is yes: Where can i find it ever where i look for it theres a broken link to the file
  3. IS this the right conversion the first is Hl the Second is Q3

HL:
( -2176 8192 8192 ) ( -2176 -8192 8192 ) ( -2176 8192 -8192 ) -0AzWll 0 0 0 2 2

Q3:
( -2176 8192 8192 ) ( -2176 -8192 8192 ) ( -2176 8192 -8192 ) MyFile/TestTexture 0 0 0 0.500000 0.500000 0 0 0


(Valhue2) #8

The reason I went into all that detail wasnt specifically for you, I wasnt at all questioning your knowlege. It is for the other people out there that dont know, and when they search for a topic such as this, its answered for them. Now on to your post:

1: In theory, yes but manually changing lines will take (and I quote from the great movie ‘The Sandlot’) Foooooooooorrrrrrrrrrrrreeeeeeeeeevvvvvvvvveeeeeeeeerrrrrrrr! The map i converted took up 571 pages in a word document in HL .map form. Thats a lot of pages to convert manually.

2: Suprisingly, no it isnt. Its based off the Q1 engine… highly modified of course.

3: no, but there is a converter I found when I was in your shoes (difference is that i have the source for my map i made for HL so it wont be as messy as a decompiled map from winBSPc)… This is his website, im not sure if this file is located there (I searched for a long time for this) [url removed, 404] Look for a link to ‘bi-hlq3map-convert.zip’ <- this zip file may be located on vileplanet. Search for it there if its not on his site. I did the work for you

4: Check #3

5: Well, your Q3 file looks good, but your HL file is borked. It should look like this:

( x1 y1 z1 ) ( x2 y2 z2 ) ( x3 y3 z3 ) TEXTURE_NAME [ tx1 ty1 tz1 toffs1 ] [ tx2 ty2 tz2 toffs2 ] rotation scaleX scaleY

Notice the brackets ‘[ & ]’ around the texture coords.

You are deffinatly on your way to a q3 map file… This is how I would do it, if i didnt have the source file for a HL.map file. winBSPc --> hl.map --> use the hl q3 map convert tool --> open .map in GTk.
Now there is still that naggy little issue of the malformed brushes that are going to be created when you winBSPc a hl map file. If you havent seen what im talking about then your in for a treat!. Talk about headaches! It wont be pretty. Enough of that… you will get a .map file output, and it will be able to open in GTk… but it wont be pretty.

Hopefully that answers your questions

V^2


(hazard) #9

I just started D/Ling fbi-hlq3map_convert.zip i’m 197th in line but i hope it works and i dont know why my .map file code it broken in my HL .map file probably WinBSPc :banghead:

Thanks for doing all the work for me i went though 160 seach resualts with out finding a single thing that works :bash: :banghead:


(hazard) #10

I downloaded the HL - Q3 map converter and it worked not much wrong with my map just have to apply textures to walls and put in light enitys and CTF sites other than that it looks good but its hard to tell when all you can see is a lot of red saying “shader not found” :bump:

Thxs

Hazard I’ll post if i have any other problems u seem like u can help


(Valhue2) #11

well as i coined that winBSPc was, infact, POOP… thus your decompiled map looks like POOP w/ errors. Decompile the map again (should only take like 1min), open the map up in WC3.3 (Valve Hammer Editor), then “save as” whatever.map… then run the q3 converter on this map.

Doing this means that when you open the .map file in WC3.3, it will find the errors, and remove the malicious brushes… now saving the file will create a new.map file that shouldnt contain any errors (err… you should remove all of the entities from the HL.map file as they wont transfer over to Q3). Thus a smoother transition over to GTk. Now all your Shader not found’s are a result of the texture not being found thats applied to your brushes. What you should do is select the entire map and texture it w/ the caulk shader. You will then have to retexture the entire map because all of the textures have been borked.

Hypothesis: You could try to extract the textures from the .wad file included w/ the HL map, and store them in their own directory and point to them in your shader script file… but i doubt that this will work. Never hurts to try it… you could learn somtin from it.

Good luck fixing the problems w/ the map is all I have to say…

V^2


(hazard) #12

OK well if u ever played Counter Strike then your’d know about de_aztec if u haven’t o well. BUt anyways thats the map i’m trying to convert to Q3. actually SoF2 but same platform. I put textures on about half the brushes then compiled it (fullvis) and tryed to play it but when i started to load i got the error “SV_SETBRUSH NULL” do i have to have a texture on ever brush for it to load properly cause i dont really feel like doing that all right now. I just want to play it and see how what i’v done looks so far.

o yeah it takes about 5 seconds for it to decompile (i got a fast comp and felt like bragging plz ignore me) :bump:

Hazard :bash:


(Valhue2) #13

Yes I know de_aztec…

do i have to have a texture on ever brush for it to load properly cause i dont really feel like doing that all right now.

I believe that you do need to texture every brush for it to load properly, just ‘select all’ and texture w/ the caulk shader, you can filter this texture so that it doesnt render in the 3d viewing plane… you would have to again retexture the insides of your level but the level of complexity will decrease as far as ineditor rendering.

Do a forum search for ‘sv_setbrush null’ see what comes up.

V^2


(nUllSkillZ) #14

I confess:
I’ve tried to decompile a CS map, too.

Here’s the way that works for me:

  1. [li]BSPtwoMAP
    [/li]BSPtwoMAP converts a Half-Life / CS “.bsp”-file into a Half-Life / CS “.map”-file.
    [li]hlq3map_convertor
    [/li]hlq3map_convertor converts a Half-Life / CS “.map”-file into a Quake 3 “.map”-file.

Brushwork seems to be OK.
But textures get lost.

Remark:
Please don’t use this to rip things of.
Please ask the original author if you can use his brushwork.
Credit the original author.
Mention the original author as creator of the brushwork.
And please don’t make sh*tty conversions like “de_dust” for ET.


(ensiform) #15

ive successfully ported dust and militia too q3 engine with winbspc but a few cs maps will make the app freeze.

i did ask valve so dont go saying stuff about legal issues.