Skip to main content

A library to open, read, modify and write goldsrc .map files

Project description

goldsrcmap


Python library to manipulate goldsrc engine .map files

work in progress...

Usage

https://github.com/G2Pavon/goldsrcmap/wiki

Load map:

#../Mapping/Scripting/example1.py
import goldsrcmap as gsm

# Load .map file
m = gsm.load_map('Mapping/maps/file.map')

for entity in m.entities:
  if entity.classname == 'func_door': # classname @property
    for brush in entity.brushes:
      brush.rotate_z(45)
  if entity.properties['classname'] == 'func_wall': # using properties attribute
    for brush in entity: # alternative syntax without using brushes @property
      brush.move_by(256, 256, 64)
  if entity['classname'] == 'func_plat': # without using properties attribute
    for brush in entity:
      brush.move_to(32,32,256, centroid=True)
            
  # more logic here

# Save the edited map in /Scripting/ folder
gsm.save_map(m, 'edited.map')

Create from scratch:

#../Mapping/Scripting/example2.py
import goldsrcmap as gsm

m = gsm.new_map()

# Edit worldspawn properties
m.worldspawn.properties['wad'] = 'path/to/zhlt.wad; path/to/other.wad' # get worldspawn entity directly with @property
m.worldspawn['skyname'] = 'nebula' # alternative way to add entity property without using properties attribute

# Create brushes
skybox_room = gsm.BrushGenerator.room(2048, 2048, 2048, 16, [0,0,0], center=True)
floor = gsm.BrushGenerator.cuboid(512, 512, 32, [0,0,-128], texture="grass")

# Create entities
player = gsm.EntityGenerator.info_player_start([0,0,0])
light = gsm.EntityGenerator.light_environment([0,0,1024], angle=180, pitch=-70)

# append brush and entities in map
m.add_brush(skybox_room, floor) # adding individually or as a list also works add_brush([skybox_room, floor])
m.add_entity(player, light) # same here

button = Entity()
button.add_brush(gsm.BrushGenerator.cuboid(16, 16, 48, [82,82,0], texture="black"))
button.properties = {
                    "classname":"func_button",
                    "spawnflags":"1",
                    "speed":"5",
                    "lip":"0",
                    "wait":"2",
                    "delay":"0",
                    "target":"counter_off",
                    "master":"stopsource",
                    "targetname":"counter_stop_button"
                    }
m.add_entity(button)

# Save the new map in cstrike
gsm.save_map(m, 'cstrike/maps/generated.map')

Project details


Release history Release notifications | RSS feed

This version

1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

goldsrcmap-1.tar.gz (31.2 kB view hashes)

Uploaded Source

Built Distribution

goldsrcmap-1-py3-none-any.whl (37.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page