Atualização do CS2 (25 de ago. de 2026)
CS2 adiciona um addon de demonstração oficial `cs_script`, referência completa da API JavaScript e suporte a layouts de HUD Panorama controlados por scripts, oferecendo novas ferramentas poderosas para criadores de mapas.
Resumo rápido
- Addon oficial de demonstração `cs_script` com mapa exemplo, scripts e UI customizada.
- Arquivo de declarações TypeScript documenta a API JavaScript `cs_script` para entidades `point_script`.
- Vários scripts de exemplo mostram tracing, treino de granadas, mudanças de modelos, debug de input e UI de boas-vindas.
- Suporte a HUD Panorama customizada habilitado e novos caminhos de busca para layouts e estilos customizados.
- Tooltips do editor e a tela de boas-vindas do zoo foram atualizados para direcionar criadores ao `cs_script_demo`.
- Ajustes nas ferramentas e visibilidade de assets de script para melhorar integração com o editor.
- Builds cliente/servidor atualizados com pequenas mudanças internas de engine e schema.
Uma nova build de Counter-Strike 2 foca em scripting e UI personalizada: a Valve disponibilizou um addon de demonstração oficial cs_script, uma referência completa da API JavaScript para scripts de mapa e suporte a layouts personalizados de HUD Panorama controlados por scripts. A atualização é claramente direcionada a mapeadores, modders e criadores do Workshop, com mudanças visíveis mínimas para jogadores comuns.
Addon de demonstração oficial cs_script e mapa exemplo
- Novo addon de demonstração: Um addon chamado
cs_script_demofoi definido emcsgo_addons, com umaddoninfo.txtapontando para um mapacs_script_demo. Parece ser um pacote de exemplo oficial feito para acompanhar as ferramentas. - Conteúdo do mapa de demonstração: O manifesto do addon lista um mapa
cs_script_demo.vmap, vários arquivos de script compilados (.vjs) e um layout/estilo Panorama customizados. Isso indica que o mapa demonstrará as capacidades docs_scriptde ponta a ponta: lógica de jogo, utilitários de trace, HUD customizado e interações scriptadas. - Como acessar: O texto do welcome diz explicitamente que "The cs_script demo has moved to csgo_addons/cs_script_demo" e instrui a "launch with workshop tools." Isso sugere fortemente que a demo deve ser aberta a partir do ambiente Workshop/Ferramentas, não via matchmaking padrão.
Para jogadores que não usam as ferramentas, esse conteúdo pode não aparecer na jogabilidade normal, mas deve facilitar o aprendizado do sistema de scripting e a criação de mapas personalizados de maior qualidade.
Referência completa da API JavaScript para cs_script
-
Declarações TypeScript para
point_script: Um grande arquivopoint_script.d.tsfoi adicionado emcs_script_demo/maps/scripts. Ele documenta a API JavaScript exposta a scripts ligados a entidadespoint_scriptvia o módulo"cs_script/point_script". -
Integração com editores: Comentários explicam que colocar
point_script.d.tse umtsconfig.jsonao lado dos seus scripts permite que editores ofereçam IntelliSense, checagem de tipos e ferramentas para JavaScript visando o runtime atual do CS2. Isso deve melhorar bastante o fluxo de trabalho de quem cria scripts. -
Escopo principal da API: As declarações expõem um objeto central
Instancecom callbacks e helpers para:- Ciclo de vida do jogo:
OnActivate,OnPlayerConnect,OnPlayerActivate,OnPlayerDisconnect,OnRoundStart,OnRoundEnd, hooks de reinício de round, eventos de planta/desarme da bomba, e mais. - Combate e dano:
OnModifyPlayerDamage(com capacidade de alterar dano, flags ou cancelar hits),OnPlayerDamage,OnPlayerKill,OnGunFire,OnGunReload,OnBulletImpact, ataques de faca, lançamentos e ricochetes de granadas. - Interação com jogadores: chat (
OnPlayerChat), pings (OnPlayerPing), pulos e pousos, pickups e drops de armas. - Traces e queries físicas:
TraceLine,TraceSphere,TraceBox,TracePlayereTraceBullet, com tipos de resultado estruturados. - Interação com o mundo: disparar inputs de entidade (
EntFireAtName,EntFireAtTarget), ouvir outputs viaConnectOutput/DisconnectOutput, e helpers de busca de entidade (FindEntityByName,FindEntitiesByClass, etc.). - Utilitários de tempo: sistema de think (
SetThink,SetNextThink), PromisesDelay, eQueueAfterThinkspara modificações seguras pós-física. - Consultas de estado do jogo: tempo de round, warmup/freeze, tipo/modo de jogo, nome do mapa e contagem de rounds, além de controle sobre o tempo restante do round.
- Comandos:
ClientCommand,ServerCommandeRegisterCheatCommandpara utilitários de console via script. - Dados persistentes:
SetSaveDataeGetSaveDatapara strings de save associadas ao addon.
- Ciclo de vida do jogo:
-
Classes de entidade e jogador: As declarações incluem classes como
Entity,BaseModelEntity,CSWeaponBase,CSPlantedC4,CSGrenadeProjectileBase,CSPlayerPawn,CSPlayerController,CSObserverPawn,CustomHudLayout,CSPlayerCameraePointTemplate, cada uma com APIs focadas em movimento, modelos, vida, armas, armadura, dinheiro, controle de câmera e comportamento de HUD customizado. -
Enums e estruturas de dados: Uma ampla gama de enums (tipo de movimento, tipo de arma, tipos e flags de dano, hitgroups, flags de input, tipo de granada, slots de loadout, etc.) e interfaces de dados (para traces de bala, traces de jogador, eventos de dano, ricochetes de granada e eventos da bomba) estão formalmente documentados.
-
Deprecações sinalizadas: Vários métodos e overloads estão marcados com
@deprecatede indicados como removidos em atualizações futuras, dando aviso antecipado para autores de script migrarem de helpers legados comoOnBeforePlayerDamagee overloads antigos de debug drawing.
No geral, esse arquivo formaliza a superfície de scripting que muitos mapeadores vinham experimentando e deve tornar o cs_script menos baseado em tentativa e erro e mais estável para projetos sérios do Workshop.
Novos scripts de exemplo: traces, inputs, granadas, modelos e UI
Vários scripts JavaScript concretos agora vêm no cs_script_demo. Eles mostram como usar a API na lógica real de mapas e servem como referência prática.
Tracing e visualização de balas (trace.js)
- Comando cheat para traces de debug: Um comando
script_zoo_tracealterna modos de trace:line,sphere,box,playeroubullet. - Traces de linha/esfera/caixa: O script:
- Obtém a posição do olho e a direção de visão do primeiro jogador.
- Realiza diferentes tipos de trace conforme o modo (linha, esfera, ou uma caixa alinhada aos eixos), ignorando o jogador quando necessário.
- Usa
DebugSphere,DebugBoxeDebugLinepara desenhar pontos de impacto e normais da superfície.
- Traces de colisão de jogador: Um exemplo
TracePlayermostra como a colisão se comporta conforme o jogador se move, usando a altura agachada do pawn para dimensionar a caixa. - Simulação de bala: Um exemplo
TraceBulletusa alcance, dano, modificador de alcance e valores de penetração da arma ativa para simular o trajeto e penetração da bala. Ele:- Colore impactos de forma distinta para acertos no mundo, dano baixo, dano normal e dano muito alto.
- Marca headshots com uma pequena esfera e outros acertos com uma pequena caixa.
Esse script demonstra como criar visualizadores para movimento, colisão e comportamento de balas, úteis para mapas de treino e debug de mecânicas personalizadas.
Mini-modo de treino de granadas (grenadetraining.js)
- Seleção rotativa de alvos: O script rastreia rounds, acertos e um índice de alvo atual e:
- Seleciona aleatoriamente entre múltiplos alvos com uma regra simples anti-repetição.
- Ajusta a dificuldade com base no número de rounds.
- Usa inputs de entidade (
cover.*,tele.*e entidades de texto do mundo) para revelar o próximo alvo e resetar o jogador.
- Fluxo de treino: Inputs de script gerenciam a máquina de estados:
ResetAndCleanUpreseta triggers, timers, texto, sons e props de cover, desliga munição infinita, destrói as armas do jogador e força o slot de granada.StartTrainingarma o modo: habilita munição infinita, dá uma granada HE ao jogador, inicia contagens e timers, e reseta rounds/acertos.GrenadeHitincrementa um contador de acertos, toca um som, atualiza texto na UI e remove projétil rastreado se existir.SetNextTargeté acionado por timer, rotacionando para um novo alvo por até 10 rounds e então limpando e tocando um som final.
- Desenho ao vivo da trajetória de granada: Usando
OnGrenadeThrow, o script rastreia o projétil lançado e desenha uma linha de debug contínua atrás dele a cada tick até desaparecer, ajudando a visualizar a trajetória.
Isso demonstra como construir um modo de treino scriptado, com UI, que reage a ações do jogador e entidades do jogo sem depender apenas de cadeias lógicas tradicionais do Hammer.
Manipulação de modelos e efeitos de glow (mdlchange.js)
- Modelos dinâmicos: O script encontra um prop nomeado (
mdlchange.prop_dyn) e mostra como:- Mudar seu modelo em runtime via
SetModelpara um entre vários exemplos. - Escalar o prop ao longo do tempo com
SetModelScalee um multiplicador simples.
- Mudar seu modelo em runtime via
- Alternar glow: Um input
GlowToggleusaGlow,UngloweIsGlowingpara destacar o prop, ilustrando como mapas customizados podem evidenciar objetos interativos ou alvos.
Inspeção de input do jogador (input.js)
- Comando de debug de input: Um comando
script_zoo_showinputalterna qual pawn de jogador é observado (o pawn do primeiro controller). - Status de input na tela: A cada tick, o script imprime três linhas de debug HUD para o pawn observado:
- Inputs atualmente pressionados (
IsInputPressed). - Inputs pressionados neste tick (
WasInputJustPressed). - Inputs liberados neste tick (
WasInputJustReleased).
- Inputs atualmente pressionados (
Esse exemplo mostra como inspecionar e visualizar flags de input em tempo real, útil para análise de movimento ou mapas didáticos.
Fluxo de boas-vindas, bots e ajustes de dano (setup.js)
- Comandos de setup do servidor: Ao carregar, a demo:
- Habilita
sv_cheats, warmup offline e pausa o timer de warmup, criando um ambiente seguro para experimentos.
- Habilita
- Auto-configuração do primeiro jogador: No primeiro
OnPlayerActivate, o script:- Força o jogador para o time
2. - Para bots existentes e adiciona um bot como alvo de treino.
- Mostra uma UI de boas-vindas para esse jogador.
- Força o jogador para o time
- Modificações de dano: Usando
OnModifyPlayerDamageeOnPlayerDamage:- Dano contra bots recebe a flag
CSDamageFlags.PREVENT_DEATH, tornando bots imortais para fins de treino. - Dano por corte (ex.: faca) causa um efeito adicional: após o dano, o script agenda ajuste de velocidade que impulsiona a vítima para cima via
Teleportcom um vetor de velocidade modificado.
- Dano contra bots recebe a flag
- Diálogo de boas-vindas customizado: O script conecta uma entidade
CustomHudLayoutchamadawelcome_layoutpara:- Mostrar um diálogo a jogadores que entram via
SetHasClassForPlayereSetInputCaptureEnabled. - Ocultá-lo quando o jogador clicar num botão com id
dismiss_button, detectado viaOnCustomHudClicked.
- Mostrar um diálogo a jogadores que entram via
- Comando para reexibir manualmente: Um comando
script_zoo_show_welcomereexibe o diálogo para todos os controllers conectados.
Esse exemplo combina eventos do ciclo de vida do jogador, hooks de dano, movimento de entidades, bots e controles de HUD customizados em uma experiência estilo tutorial.
Script mínimo hello-world (hello.js)
- Saída básica: O exemplo mais simples apenas importa
Instancee imprime"Hello cs_script!"no console, servindo como primeiro passo para quem verifica a configuração.
Suporte a HUD customizado e UI de jogo
-
UI de jogo customizada habilitada: A configuração principal do jogo agora define
AllowCustomGameUIcomo1. Isso indica que o motor permite que UI Panorama customizada para jogos/mapas fique ativa, algo que antes estava desabilitado. -
Caminhos de busca para layouts customizados: A configuração
gameinfoinclui novos caminhos de recurso:"panorama/layout/custom_game""panorama/styles/custom_game"
Isso significa que layouts e estilos colocados nessas pastas podem ser carregados pelo jogo.
-
Documentação da entidade de HUD customizado: A definição
csgo.fgdparacustom_hud_layout(a entidade que conectacs_scripta layouts Panorama) continua descrita como "Panorama UI that can be controlled by cs_script." Uma pequena alteração remove uma referência de ajuda no editor ao comandodev_report_info_hud_layout, simplificando o texto da tooltip. A entidade continua usando um campolayout(resource:xml)para especificar um layout Panorama. -
Atualização do conteúdo da tela de boas-vindas: Os arquivos do editor zoo
welcome.xmlewelcome.cssforam ajustados:- A caixa de diálogo agora é mais larga e um pouco mais alta (520x220 em vez de 350x200), deixando mais espaço para texto.
- O texto agora informa que "The cs_script demo has moved to csgo_addons/cs_script_demo. Launch with workshop tools to view." Redirecionando mapeadores ao novo addon e afastando-os do mapa embutido antigo.
Criadores provavelmente poderão projetar HUDs e diálogos mais expressivos controlados diretamente por scripts, usando a classe CustomHudLayout junto com layouts e CSS Panorama nas novas pastas.
Editor e mudanças nas ferramentas para assets de script
- Visibilidade de tipos de asset: A configuração compartilhada de tipos de asset não esconde mais certos tipos de asset relacionados a scripts do ambiente retail CS:GO/CS2. Especificamente, referências a
m_HideForRetailMods = [ "csgo" ]foram removidas para alguns recursos KV3-based de layout/estilo Panorama. Isso pode permitir que esses assets sejam mais amplamente reconhecidos nas ferramentas em vez de serem estritamente somente-editor. - Arquivos atualizados do editor zoo: Recursos compilados do layout/estilo
welcome(welcome.vxml_c/welcome.vcss_c) estão relistados no manifesto do pacote do mapa do editor zoo, indicando que continuam parte das ferramentas e foram atualizados junto ao novo texto e dimensões. - Limpeza de enums de movimento em stubs do editor: A versão do
point_script.d.tsusada no mapazooteve duas entradas de enum de movimento (FLY,PUSH) removidas deCSMoveType, alinhando-a com a API canônica do novo demo. Isso deve reduzir confusão entre o stub do editor e a versão oficial do addon.
Essas alterações afetam principalmente como assets aparecem e se comportam nas ferramentas, não a jogabilidade normal, mas ajudam a manter pipelines de scripting e UI consistentes.
Mudanças internas e versionamento
- Bump de build cliente/servidor: O arquivo
steam.infmostra as versões cliente e servidor mudando de2000888para2000891, com revisão de origem e build time atualizados. Isso indica uma nova build lançada, embora o comportamento de jogo fora de scripting/UI não aparente mudanças óbvias. - Ajustes menores de engine e schema: Há pequenas mudanças em tabelas de string da engine e em dois headers de schema internos relacionados a pitch/volume dinâmicos (
dynpitchvol_*). Parecem ajustes de base, não recursos novos voltados ao usuário.
Impacto geral
Para jogadores comuns, a atualização é discreta: dificilmente haverá mudanças de jogabilidade ou balance. A mudança mais visível é que o painel de boas-vindas do editor zoo agora orienta a usar o novo addon cs_script_demo.
Para mapeadores, modders e criadores do Workshop, esta build é significativa:
- Recebem uma referência oficial fortemente tipada da API
cs_script, facilitando a escrita e manutenção de lógica em JavaScript. - Ganham um addon de demonstração completo com múltiplos scripts de exemplo mostrando hooks de dano, tracing, balas, granadas, bots, HUDs customizados, manipulação de modelos e input de jogador.
- O motor agora parece suportar layouts Panorama de HUD customizados controlados por
cs_script, abrindo portas para mapas de treino, cenários e UIs sob medida.
No conjunto, a atualização eleva o cs_script de uma funcionalidade ainda experimental para algo bem mais próximo de um ambiente de scripting de primeira classe para conteúdo customizado do CS2, e provavelmente prepara o caminho para criações comunitárias mais sofisticadas.
