Ads keep us online. Without them, we wouldn't exist. We don't have paywalls or sell mods - we never will. But every month we have large bills and running ads is our only way to cover them. Please consider unblocking us. Thank you from GameBanana <3

create a map openspades - A Tutorial for Ace of Spades.

1-Create your base map in pyspades map editor, Terravox (vxl) or
with [Create a Heightmap Tutorial]

PySpades Map Editor

Terravox needs Visual C++ 2013 64bits

2-In Goxel, Slab6, VoxelShop or use a voxelizer [How to Voxelize Tutorial]
(  you create all kinds of models exported in .kvx

3-You open your map (vxl) with voxed to place your .kvx models with the U then save the result with Alt + F3 the controls can be annoying I recommend you change them

Voxed download link

Change voxed and slab6 controls Tutorial

Voxed Controls

Can use this Base Map
and this 450 models

(to save parts of the map in slab6 kv6 [max 256x256x256 voxels] you must select with the spacebar the area you want to save then duplicate it with D or T if you changed the voxed controls then move it to the air with the numpad [4,Intro,5,1,2,3 or  ←,→,↑,↓, Backspace, L Ctrl, L Alt if you changed the voxed controls] and press F7 on the object to save)

4-You create a .txt file with the name of your map inside the maps folder to be able to configure which game mode you want it to be in (it is not necessary to put scripts to play in ctf but if you want to configure it create a .txt file)
(To test your map you will need to create a server [Create a Server OpenSpades Tutorial]


name = 'aim_pro'
version = '1.1'
author = 'iSkyte'
description = 'Map specialized in aim training (rifle) and 1v1.'
extensions = {
    'water_damage' : 200,
    'arena': True,
    'arena_blue_spawn' : (272, 255, 60),
    'arena_green_spawn' : (240, 263, 60),
    'arena_gates': ((239, 267, 60), (270, 244, 60))
from pyspades.constants import RIFLE_WEAPON
from pyspades.server import ServerConnection

def get_spawn_location(self):
    if != "Rifle":
        if not
        if self.on_weapon_set(RIFLE_WEAPON) == False:
        self.weapon = RIFLE_WEAPON
    return ServerConnection.get_spawn_location(self)


name = 'Blood Gulch'
version = '1.0'
author = 'X-DE'
description = 'Remake of the Halo Combat Evolved map Blood Gulch'
extensions = { 'water_damage' : 100 }
protected = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7', 'E8', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8']


from random import randrange, choice
from pyspades.constants import *
from pyspades.server import ServerConnection
from commands import choice

def get_entity_location(team, entity_id):
    if entity_id == BLUE_FLAG:
        return (357, 393, 62)
    if entity_id == BLUE_BASE:
        return (357, 393, 62)
    if entity_id == GREEN_FLAG:
        return (161, 110, 62)
    if entity_id == GREEN_BASE:
        return (161, 110, 62)

spawn_locations_blue = [
    (357, 393, 62),
    (341, 370, 61),
    (376, 376, 61),
    (337, 414, 61),
    (380, 409, 60),
    (356, 384, 55)

spawn_locations_green = [
    (162, 120, 55),
    (161, 110, 62),
    (146, 88, 61),
    (172, 84, 61),
    (142, 128, 61),
    (184, 125, 61)

def get_spawn_location(connection):
    if is connection.protocol.blue_team:
        x, y, z = choice(spawn_locations_blue)
        return x, y, z
    if is connection.protocol.green_team:
       x, y, z = choice(spawn_locations_green)
       return x, y, z

No comments yet