You can also tie player's camera to another entity.
Syntax: Select all
from entities.entity import Entity
from entities.helpers import baseentity_from_index
from events import Event
from players.dictionary import PlayerDictionary
cameras = PlayerDictionary(factory=lambda index: None)
def enable_camera(index, origin, angles):
if cameras[index] is not None:
disable_camera(index)
camera = cameras[index] = Entity.create('point_viewcontrol')
camera.spawn_flags = 8 # "Infinite Hold Time"
camera.spawn()
# Set the angles
camera.angles = angles
# Set the origin (TODO: Might be possible to set angles here, too?)
camera.teleport(origin, None, None)
# You may also tie your camera to an entity pointer!
# camera.set_parent(other_entity.pointer, -1)
base_entity = baseentity_from_index(index)
camera.call_input('Enable', activator=base_entity, caller=base_entity)
def disable_camera(index):
camera = cameras.pop(index, None)
if camera is None:
return
camera.call_input('Disable')
camera.remove()
@Event('round_start')
def on_round_start(game_event):
for camera in cameras.values():
if camera is None:
continue
camera.call_input('Disable')
camera.remove()
cameras.clear()
Usage:
Syntax: Select all
from commands.typed import TypedSayCommand
from mathlib import Vector
@TypedSayCommand(['camera', 'enable'])
def typed_camera_enable(
command_info, x:int, y:int, z:int, pitch:int=0, yaw:int=0, roll:int=0):
origin = Vector(x, y, z)
angles = Vector(pitch, yaw, roll)
enable_camera(command_info.index, origin, angles)
@TypedSayCommand(['camera', 'disable'])
def typed_camera_disable(command_info):
disable_camera(command_info.index)
On CS:GO, de_dust2 the following chat command will let you see the long:
Code: Select all
camera enable 1400 2100 70 0 270 0