sexta-feira, 27 de fevereiro de 2026

INSTALAR (e jogar) COUNTER STRIKE 1.6 (install cs 1.6) NO LINUX


INTRODUÇÃO

O Counter Strike 1.6 dispensa apresentações, então: estão dispensadas.

Todo mundo sabe que jogo é esse... e se não sabe deveria saber!

A instalação aqui foi testada e aprovada no Debian 13, mas nada impede que não possa ser realizada a contento em outras distribuições, bastando adaptar os comandos, pois o código fonte do CS1.6 serve em qualquer Linux.

Na seção ESTUDO DE CASOS tem algumas coisas para fazer em caso de erros, conexão bloqueada, etc.

Na seção SCRIPTS tem alguns scripts úteis.

O procedimento aqui é puramente didático porque para jogar CS online gratuito basta entrar no link:

https://play-cs.com/pt/servers

escolher um servidor com o "map" desejado e conectar.

Contudo, para quem quer ter o CS1.6 instalado e personalizado no Linux e por uma questão de aprendizado, leia todo o artigo antes de sair executando comandos.

Parece muita coisa para fazer porque está bem explicado, mas é tranqüilo e rápido!


VÍDEO

Vídeo onde você pode me ver jogando e falhando miseravelmente nas missões:

https://drive.google.com/file/d/1lZat4icP9PeSDy14y927XDMi3BAhJ3t6/view?usp=sharing

Sem mais delongas...


Fire in the hole!

Need backup!

Sector clear!

The bomb has been planted!

Go go go!


DOWNLOAD

Abra o terminal.

$ sudo apt update

$ sudo apt install xz-utils dos2unix wget

Qbittorrent é opcional, mas instale caso baixe o .tar da Free Linux PCGames:

$ sudo apt install qbittorrent


Quando tiver de usar "sudo" indicará no comando.

Para o download tem duas opções.

1)

https://freelinuxpcgames.com/counter-strike/

Clique no link acima e mais abaixo na página encontre o link:

Half-Life/Blue Shift/Opposing Force/Counter-Strike 1.6 [x86] [Multi] [Native]

Caso, ao clicar no link, abrir uma janela de propaganda, feche-a e clique novamente no link que o download abrirá.




2)

https://drive.google.com/file/d/1qIWFrOLrUl-GRVX05fcXo35gRGqdUydU/view?usp=sharing


Caso aparecer a mensagem:

"O Google Drive não pode fazer a verificação de vírus neste arquivo.

O arquivo HLCS_Linux.tar.xz (757M) é muito grande para a verificação de vírus do Google. Você ainda quer fazer o download?"

Ignore e clique em "Fazer o download mesmo assim".

Disponibilizei no Google Drive porque, algumas vezes, o download do torrent do Free Linux PCGames falha ou demora muito.


Obs.: disponibilizei, também, no Google Drive, a pasta "cstrike" com "models, "maps, etc, para quem não quiser esperar baixar do servidor, são 387,2 MiB. Basta fazer o download e copiar a pasta para /opt/cstrike/HLCS/game, substituindo a pasta de mesmo nome que ali está:

https://drive.google.com/drive/folders/1X4nTQ_Nd5mG9KQg4x_tm2IEjZmHZGOnh?usp=sharing


INSTALANDO


Execute:

$ sudo apt update
$ sudo apt install locales
$ sudo dpkg-reconfigure locales





Terminará:

/opt/cstrike/HLCS$ sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
  en_US.UTF-8... done
  pt_BR.UTF-8... done
Generation complete.


Habilitando, instalando dependências e bibliotecas de 32 bits:

$ sudo dpkg --add-architecture i386
$ sudo apt update


$ sudo apt install libc6:i386 libstdc++6:i386 libgcc-s1:i386 lib32gcc-s1 \
libgl1:i386 libglu1-mesa:i386 libx11-6:i386 libxext6:i386 \
libxrandr2:i386 libxcursor1:i386 libxinerama1:i386 \
libasound2:i386 libopenal1:i386 libsdl1.2debian:i386 zlib1g:i386 \
libfontconfig1:i386 libxft2:i386 libgtk2.0-0:i386 libnss3:i386 libnspr4:i386


$ sudo apt install libgpg-error0:i386 libcurl4:i386 libsdl2-2.0-0:i386 libxi6:i386 libvdpau-dev:i386 libgl1-mesa-dri:i386
$ sudo apt install libnss-myhostname:i386 libnm0:i386 libnss3:i386 libnss-mdns:i386 libpulse0:i386


Criando uma pasta para instalação (instalei em /opt):

$ cd /opt
$ sudo mkdir cstrike
$ cd cstrike


Copie o arquivo de onde você o baixou, no caso, da pasta Downloads, adapte se o caminho for diferente:

$ sudo cp ~/Downloads/HLCS_Linux.tar.xz /opt/cstrike/


Verifique:

$ ls

HLCS_Linux.tar.xz


Descompacte:

$ sudo tar -xJf HLCS_Linux.tar.xz
$ ls

HLCS  HLCS_Linux.tar.xz


Garanta que seu usuário é o dono:

$ cd
$ sudo chown -R $USER:$USER /opt/cstrike/HLCS


Agora faremos cópia e executaremos o jogo pela primeira vez para criar automaticamente o diretório /opt/cstrike/HLCS/game/platform/config:

$ cd /opt/cstrike/HLCS
$ ls

bshift.sh  cstrike.sh  game  hl.sh  oforce.sh  steam-runtime


$ cp cstrike.sh cstrike.sh.bkp
$ vim cstrike.sh (uso o vim, use o teu editor de texto)

Apague o conteúdo e coloque dentro:

#!/bin/bash

export SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
export DIR="$(dirname "$SCRIPT")"

cd "$DIR/game"

# Para executar em tela cheia basta tirar -window -w 1024 -h 768
"$DIR/steam-runtime/run.sh" ./hl.sh -game cstrike -window -w 1024 -h 768


Salve e saia.


Somente acrescentamos os parâmetros "-window -w 1024 -h 768" para definir a tela do jogo em 1024/768, depois, caso queira, basta retirar os parâmetros que o jogo abrirá em tela cheia.

Garantindo que seja um arquivo unix/linux/ascii:

$ dos2unix cstrike.sh

dos2unix: convertendo o arquivo cstrike.sh para formato Unix...


Garanta a permissão de execução:

$ chmod +x cstrike.sh


Testando:

$ ./cstrike.sh


Teste clicando em New Game > de dust2 > Start > OK escolha as opções, por exemplo, 1 TERRORIST FORCES > 1 PHOENIX CONNEXION.


Entrarás no jogo, mas ainda não estás conectado em um servidor para jogar.

Neste momento tu podes atirar (botão esquerdo), movimentar-se (setas de direção), apreciar o cenário, etc, mas nada além disso.

Saia pressionando a tecla Esc depois escolha Quit > Quit game.

Verifique se a pasta foi criada automaticamente com os arquivos:

$ ls /opt/cstrike/HLCS/game/platform/config/

InGameDialogConfig.vdf ServerBrowser.vdf


Criando link para a pasta de downloads:

$ ln -s /opt/cstrike/HLCS/game/cstrike_downloads /opt/cstrike/HLCS/game/cstrike


CONECTANDO


Entre no jogo novamente:

$ cd /opt/cstrike/HLCS
$ ./cstrike.sh


Faça o caminho novamente: New Game > de dust2 > Start > OK. Escolha as opções, por exemplo, 1 TERRORIST FORCES > 1 PHOENIX CONNEXION.

Tentaremos conectar em um servidor.

Dentro do jogo digite a tecla aspas_duplas/apóstrofo (",'): abrirá o console.

Lembrando que, para abrir o console, deve-se sempre abrir um New Game > etc > etc e entrar no jogo para depois conectar em um servidor.


Comandos:

cl_allowdownload 1
cl_allowupload 1
connect 91.211.247.221:27015


Obs.: depois veremos como tornar permanente os comandos cl_allowdownload 1 e cl_allowupload 1.

Caso você tiver sorte e completar a conexão de primeira, começará a baixar os arquivos e depois você entrará no CS1.6 online com outros jogadores de várias partes do mundo, agora é com você!

Caso aparecer uma mensagem: "SERVER IS FULL", parábens, você também é uma pessoa de sorte, pois realizou a conexão "de prima", porém, o servidor está cheio, aguarde e tente de novo mais tarde ou tente outro servidor.

Em alguns servidores pode demorar horas para baixar os arquivos da primeira vez (depende da conexão), depois é mais rápido em qualquer servidor, pois os arquivos, muitas vezes, são os mesmos.

Caso mudar de computador pode copiar a pasta /opt/cstrike/HLCS/game/cstrike.

Segue link para um site com uma porção de servidores espalhados pelo mundo (inclusive no Brasil), os quais você pode testar antes de realizar outros procedimentos.


Link geral:

https://www.gametracker.com/search/cs/


Link Brasil:

https://www.gametracker.com/search/cs/BR/


Caso terminar com "Disconnected Failed to contact game server", clique em "Close" para fechar a janela.

Caso terminar com "Cannot continue without model models/player/ugc_terror_vip/ugc_terror_vip.mdl, disconnecting.", feche a janela.

Você terá de ver o porquê não conectou.

Desligue o Firewall (se tiver), o Selinux, etc, para testar.

Sugestão de servidores (prontos para copiar e colar no console).


O formato é: "connect" seguido do IP e, depois dos dois pontos, a porta na qual o servidor atua:

connect 91.211.247.221:27015 (Omonas)
connect 93.114.82.202:27015 (Brasil ZMX League CS)
connect 5.199.130.133:27015 (Romênia)
connect 155.133.248.50:27015
connect 177.54.152.56:27015
connect 131.196.198.52:27052
connect 216.52.148.19:27011 (topfrag chicago)
connect 66.165.238.178:27018 (so-cal los angeles)
connect 45.32.174.155:27015 (dreampoint miami 1)
connect 172.96.172.86:27015 (dreampoint 2)
connect 172.96.172.84:27015 (dreampoint 3)
connect 172.96.172.84:27016 (dreampoint 4)


Caso, mesmo assim, não conseguir conexão de jeito nenhum, sugiro alguns procedimentos:

desabilite o firewall (se tiver), desabilite o Selinux e quaisquer módulos de segurança que, porventura, tenha no computador, somente para testar.

Caso tiver roteamento na sua máquina, desabilite para testar e identificar quem está bloqueando a conexão.

Além disso, tem provedores que utilizam CGNAT (Carrier Grade NAT) que é uma técnica usada por provedores de internet para compartilhar um único endereço IPv4 público entre vários clientes, contornando o esgotamento global de endereços IPv4. Vários usuários compartilham o mesmo IP público, mas cada um recebe um conjunto de portas lógicas diferentes e isso ocasiona problemas de NAT fechado em jogos, dificuldades no acesso remoto a câmeras/servidores, ou serviços de P2P.

As soluções para isso são:

1- Entrar em contato com o provedor para solicitar um IP público (cobrado geralmente);

2- Utilizar IPv6, que não precisa de NAT.

Contudo, nenhuma dessas é viável para muitos usuários de internet, mas vamos contornar isso na seção CONFIGURANDO.


OPCIONAL


TCPDUMP

Esta seção é OPCIONAL, caso queira, pode pular para a seção CONFIGURANDO:

Veja a placa de rede:

$ ip addr


Execute o jogo e com ele rodando abra outra janela do terminal e rode (substitua o nome da placa de rede enp3s0 pela sua):

$ sudo tcpdump -i enp3s0 -n udp port port (caso não tiver instale com sudo apt install tcpdump)


Exemplo:

$ sudo tcpdump -i enp3s0 -n udp port 27015




Caso der "Disconnected Failed to contact game server" e a saída do tcpdump der algo parecido com:

[sudo] senha para usuario: 
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp8s0f0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:00:02.357829 IP 172.16.5.99.27005 > 91.211.247.221:27015: UDP, length 23
10:00:08.360962 IP 172.16.5.99.27005 > 91.211.247.221:27015: UDP, length 23
10:00:14.360969 IP 172.16.5.99.27005 > 91.211.247.221:27015: UDP, length 23
10:00:20.377670 IP 172.16.5.99.27005 > 91.211.247.221:27015: UDP, length 23


Vemos que os pacotes estão tentando sair, mas tem algo bloqueando a volta, provavelmente o firewall, um proxy, o CGNAT, etc, pois não tem nenhum registro.

172.16.5.99.27005 < 91.211.247.221:27015: UDP, length 23

ou

91.211.247.221:27015 > 172.16.5.99.27005:num_porta: UDP, length 23.


No comando "sudo tcpdump -i enp3s0 -n udp port 27015" tenha o cuidado de colocar a sua placa de rede e coloque a porta correspondente ao connect do jogo, por exemplo, connect xxx.xxx.xxx.xxx:27052, connect xxx.xxx.xxx.xxx:27015, etc.

É de bom tom, de vez em quando, limpar o rastreador de conexões antes de abrir o jogo e executar o tcpdump:


$ sudo conntrack -F (se o comando não existir, instale com sudo apt install conntrack).


CONFIGURANDO

Caso tenha conseguido a conexão de primeira, as configurações que seguem são opcionais, contudo, aconselho a fazer até a seção "CloudflareWARP", exclusive - pois se você conseguiu a conexão "de prima" não precisa do CloudflareWARP -, mas depois configure o arquivo userconfig.cfg com as suas configurações pessoais (se souber o que está fazendo).


Vá em /opt/cstrike/HLCS/game/cstrike (ou o caminho que você escolheu para instalar) e altere o arquivo ServerBrowser.vdf:

$ cd /opt/cstrike/HLCS/game/platform/config/
$ cp ServerBrowser.vdf ServerBrowser.vdf.bkp
$ vim ServerBrowser.vdf


No início, substitua "internet" por "favorites", ficando assim:

"Filters"
{
    "gamelist" "favorites"
    "Filters"
    {
...


Salve e saia.


Retirando caracteres nulos e convertendo:

$ sed -i 's/\x0//g' ServerBrowser.vdf
$ dos2unix ServerBrowser.vdf


Crie o arquivo:

$ vim MasterServers.vdf


Coloque dentro:

"MasterServers"
{
    "0"
 { 
 "name" "Omona"
        "addr" "91.211.247.221:27015"
 }
    "1"
 { 
 "name" "ZMX League CS"
        "addr" "93.114.82.202:27015"
 }
    "2"
     {
        "name" "Romenia"
 "addr" "5.199.130.133:27015"
     }
    "3"
     {
        "name" "BR CSNaPegada DM"
        "addr" "131.196.196.44:27015"
     }
    "4"
     {
        "name" "BRXGames Fun"
        "addr" "177.54.151.114:27042"
     }
    "5"
     {
        "name" "BRXGames Pega Bandeira"
        "addr" "177.54.151.234:27030"
     }
    "6"
     {
        "name" "ClaN Brasilia"
        "addr" "177.54.152.56:27015"
     }
}


Salve e saia.


Altere a ordem do servidores masters como quiser.

Caso, futuramente, queira acrescentar/tirar servidores, edite o arquivo MasterServers.vdf e acrescente/tire os servidores desejados.

$ dos2unix MasterServers.vdf


Removendo todos os atributos ocultos do sistema e setando permissões:

$ cd
$ sudo chattr -i /opt/cstrike/HLCS/game/platform/config/ServerBrowser.vdf
$ sudo chattr -i /opt/cstrike/HLCS/game/platform/config/MasterServers.vdf
$ sudo chown -R $USER:$USER /opt/cstrike/HLCS/
$ chmod 644 /opt/cstrike/HLCS/game/platform/config/MasterServers.vdf
$ chmod 644 /opt/cstrike/HLCS/game/platform/config/ServerBrowser.vdf


CloudflareWARP

Agora vamos instalar o Cloudflare-Warp que é um serviço gratuito de Domain Name System (DNS) da empresa americana Cloudflare em parceria com a APNIC. O serviço funciona como um servidor de nomes recursivo fornecendo resolução de nomes de domínio para qualquer host na Internet.

Serve para vários jogos, downloads bloqueados pelo provedor, etc. Na seção SCRIPTS tem um script pronto que desliga o WARP.

Veremos o passo a passo para instalar no Debian.

Para outras distribuições veja o link:

https://pkg.cloudflareclient.com/


Adicione a chave e o repositório.

Adicionando cloudflare gpg key:

$ curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg


Adicionando o repo no repositório:

$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list


Instalando:

$ sudo apt update && sudo apt install cloudflare-warp
$ sudo systemctl enable warp-svc
$ sudo systemctl start warp-svc


Registre o cliente (apenas na primeira vez):

$ warp-cli registration new

...
Accept Terms of Service and Privacy Policy? [y/N] y
Success


Conecte:

$ warp-cli connect

Success


Verificando o status:

$ warp-cli status

Status update: Connected

Network: healthy


$ ip addr

Na saída terá algo assim, podendo mudar a numeração dependendo de quantas placas de rede o vivente tem:

4: CloudflareWARP: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc mq state UNKNOWN group default qlen 500
    link/none 
    inet 172.16.0.2/32 scope global CloudflareWARP
       valid_lft forever preferred_lft forever
    inet6 2608:4710:111:879c:4b44:ebb:317a:cacb/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fd80::ca44:f9cc:aec0:681b/64 scope link stable-privacy proto kernel_ll 
       valid_lft forever preferred_lft forever


Geralmente o WARP cria uma interface chamada CloudflareWARP.

Você pode ver o tráfego passando por ela com:

$ sudo tcpdump -i CloudflareWARP -n udp


Se a interface não aparecer é porque algumas distribuições Linux precisam que o módulo "tun" do kernel esteja carregado.

$ sudo modprobe tun
$ sudo systemctl restart warp-svc
$ warp-cli connect


Para tornar permanente:

$ sudo vim /etc/modules-load.d/modules.conf

Acrescente no final o nome do módulo: tun.

Salve e saia.

Reinicie o gerenciador de internet e tente de novo "ip addr".


Começando:

$ warp-cli disconnect
$ warp-cli mode warp
$ warp-cli connect


Criando o diretório para armazenar os Favoritos e Servidores Masters:

$ mkdir -p "$HOME/.hlcs/platform/config"
$ cp /opt/cstrike/HLCS/game/platform/config/ServerBrowser.vdf ~/.hlcs/platform/config/
$ cp /opt/cstrike/HLCS/game/platform/config/MasterServers.vdf ~/.hlcs/platform/config/


Faz symlink de /opt/cstrike/HLCS/game/platform/config e garante persistência:

$ ln -s ~/.hlcs/platform/config /opt/cstrike/HLCS/game/platform/config


Criando o script cstrike_com.sh

$ cd /opt/cstrike/HLCS
$ vim cstrike_com.sh


Coloque dentro:

#!/bin/bash
# Script que roda e conecta o CS1.6 com WARP

# Otimiza o MTU da interface
sudo ip link set dev CloudflareWARP mtu 1280

# Limpa a rota anterior e fixa com o IP CloudflareWARP
sudo ip route add 131.196.198.52 dev CloudflareWARP 2>/dev/null

export SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
export DIR="$(dirname "$SCRIPT")"

cd "$DIR/game"

# Executa o jogo usando o tunel
# -window: abre em modo janela
# -w 1024 -h 768: define o tamanho da janela
# -nomousegrab: evita que o mouse fique preso
#./hl_linux -game cstrike -nomousegrab -ip 0.0.0.0 +clientport 27005
# Pode colocar -ip 0.0.0.0 no lugar de -ip 172.16.0.2

"$DIR/steam-runtime/run.sh" ./hl_linux -game cstrike -window -w 1024 -h 768 -nomousegrab -nofbo -nomsaa -gl_clear 1 -windowed -gl -ip 0.0.0.0 +clientport 27005


Salve e saia.


$ dos2unix cstrike_com.sh
$ chmod +x cstrike_com.sh


Execute o script cstrike_com.sh (deve ser executado como usuário):

$ ./cstrike_com.sh


Sempre faça o procedimento de New Game > Escolher um map > Start > etc, até entrar no jogo para depois conectar no servidor.

Abra o console digitando a tecla aspas_duplas/apóstrofo ("').

Em outro terminal rode, caso quiser:

$ sudo tcpdump -i CloudflareWARP -n udp


Tente uma conexão no console do jogo, por exemplo:

cl_allowdownload 1
cl_allowopload 1
connect 91.211.247.221:27015


Agora é contigo!!!

Caso der "Server is full" vá tentando outro servidor.

Em alguns servidores pode demorar horas para baixar os arquivos da primeira vez (depende da conexão), depois é mais rápido em qualquer servidor, pois os arquivos, muitas vezes, são os mesmos.


Caso mudar de computador pode copiar a pasta /opt/cstrike/HLCS/game/cstrike.

Na saída do tcpdump, caso estiver usando, procure algo assim:


10:59:20.103549 IP 162.159.200.123.123 > 172.16.1.22.52574: NTPv4, Server, length 48
10:59:23.018999 IP 172.16.1.22.27005 > 93.114.82.202:27015: UDP, length 23
10:59:23.179207 IP 91.211.247.221:27015 > 172.16.1.22.27005: UDP, length 32
10:59:23.202248 IP 172.16.1.22.27005 > 91.211.247.221:27015: UDP, length 452
10:59:23.360583 IP 91.211.247.221:27015 > 172.16.1.22.27005: UDP, length 40
10:59:23.402670 IP 172.16.1.22.27005 > 91.211.247.221:27015: UDP, length 16


Terá ida e volta:

172.16.0.2.27005 > 91.211.247.221:27015 (SAINDO)

91.211.247.221:27015 > 172.16.0.2.27005 (ENTRANDO)


Para remover:

$ sudo apt purge cloudflare-warp
$ sudo rm -rf /etc/cloudflare-warp
$ sudo rm -rf /var/lib/cloudflare-warp


ESTUDO DE CASOS

Os comandos apresentados não serão explicados, você pode (e deve, se quiser) pesquisar o significado de cada um. A internet é auto-explicativa.


1) Caso tiver proxy na rede e não dê para desabilitá-lo, teste mudando de modo WARP para PROXY, por exemplo:

$ warp-cli disconnect
$ warp-cli mode proxy
$ warp-cli connect


Para voltar:

$ warp-cli disconnect
$ warp-cli mode warp
$ warp-cli connect


Mas o modo WARP deve bastar.

Para ver mais opções:

$ warp-cli --help


2) Caso aparecer a mensagem "Sorry, no-steam p48 clients are not allowed on this server", significa que o servidor de Counter-Strike 1.6 que você está tentando acessar bloqueia jogadores que usam versões "piratas" (No-Steam) com um protocolo de rede antigo (p48, ou protocolo 48), uma vez que versões piratas (No-Steam) são mais fáceis de burlar e não possuem verificação de integridade oficial (VAC - Valve Anti-Cheat).

No nosso caso significa somente que a versão do CS é muito antiga (32 Bits), a 1.6.



3) Caso aparecer uma mensagem dizendo "Cannot continue without model models/player/ugc_terror_vip/ugc_terror_vip.mdl, disconnecting.", feche ela e execute no console do jogo (caso não quiser copiar e colar, basta digitar as primeiras letras que o console abrirá o leque de opções):

cl_allowdownload 1
cl_allowupload 1
setmaster enable 1
setmaster add xxx.xxx.xxx.xxx:xxxx
sv_lan 0
region 255
heartbeat




Especialmente no servidor "5.199.130.133:27015" que aparece essa mensagem.

Caso isso persistir, tente conectar utilizando o CloudflareWARP com seu respectivo script.

Caso ainda assim persistir, baixe a pasta "cstrike" de:

https://drive.google.com/drive/folders/1X4nTQ_Nd5mG9KQg4x_tm2IEjZmHZGOnh?usp=sharing


Copie a pasta para /opt/cstrike/HLCS/game, substituindo a pasta de mesmo nome que está ali.

Depois que você colocar manualmente, esse loop deve parar. Mas, se ao tentar conectar você ainda vir essas mensagens viciadas, digite isso no console para "resetar" a pilha de rede do jogo:

clcli
clientport 27005
net_resend 3
reconnect


4) Estando atrás de um PFSense numa rede interna, provavelmente não conseguirá jogar em alguns servidores.

Primeiro tente fixando os DNSs no arquivo /etc/resolv.conf, por exemplo:

nameserver 1.1.1.1
nameserver 8.8.8.8


Caso persistir, peça para o Administrador do pfSense...

Criar Regra de NAT Estático:

Ir em Firewall > NAT > Outbound.

Mudar o modo para Hybrid Outbound NAT (se estiver em Automatic).


Criar uma Mapping Rule no topo:

Interface: WAN

Protocol: UDP

Source: [Seu IP Local ou o Alias do seu PC]

Source Port: Any (ou 27000-27030)

Destination: Any

Translation/target: Marcar a caixa [x] Static Port.


Sem o Static Port, o pfSense faz o "Source Port Remap". O servidor envia os dados do jogo de volta para a porta X, mas o seu PC está ouvindo na porta Y. Isso causa o erro de "Reliable channel overflow" ou pings instáveis.

Ajuste de MTU/MSS (Opcional se o Lag continuar):

Se o download de outros arquivos continuar falhando, peça para ele verificar se há um MSS Clamping ativo em Interfaces > WAN. Para redes com túneis (como o WARP), setar o MSS para 1300 costuma estabilizar o tráfego fragmentado.


5) Exemplo de regras para liberar no firewall, principalmente as portas nas chains input e output.

O exemplo é com o NFTables, mas é somente um exemplo onde você deve mudar/acrescentar regras para seu cenário específico, não copie e cole essas regras como elas estão, pois pode acontecer de perder o acesso à internet:

table inet filter {

    chain input {
        type filter hook input priority 0; policy drop;

        # Loopback
        iif lo accept

        # Conexoes ja estabelecidas
 ct state invalid drop
        ct state established,related accept
        tcp dport { 22, 80, 443 } ct state new accept

        # DHCP
        udp dport {67,68} accept

        # Portas abertas jogo
        udp dport 27000-28015 accept

  ip protocol icmp accept
    }

    chain forward {
        type filter hook forward priority 0; policy drop;

        # Conexoes ja estabelecidas
 ct state invalid drop
        ct state established,related accept
    
 # DHCP
 udp dport {67,68} accept

 # Portas abertas jogo
        udp dport 27000-28015 accept

 ip protocol icmp accept
    }

   chain output {
        type filter hook output priority 0; policy drop;

        # Conexoes ja estabelecidas
 ct state invalid drop
        ct state established,related accept
 tcp dport { 22, 80, 443 } ct state new accept

        # DNS
        udp dport 53 accept
        tcp dport 53 accept

        # NTP/NTS
        udp dport 123 accept
        tcp dport 4460 accept

        # DHCP (cliente, se aplicavel)
        udp dport 67 accept
        udp sport 68 accept

 ip protocol icmp accept
    }


SCRIPTS

1) fechar_cs.sh

#!/bin/bash

echo "Encerrando o Counter-Strike e limpando o ambiente..."

# 1. Mata o processo do jogo e do carregador
pkill -9 hl_linux
pkill -9 hl.sh

# 2. Desconecta o Cloudflare WARP
warp-cli disconnect

# 3. Mata o Xephyr (caso tenha ele, descomente)
# pkill -9 Xephyr

# 4. Restaura o MTU da placa física para o padrão (1500)
# Ajuste para tua placa de rede
sudo ip link set dev enp3s0 mtu 1500

echo "Túnel WARP desligado. Internet restaurada para o padrão!"


Salve e saia.


Dando permissão de execução:

$ dos2unix ~/fechar_cs.sh
$ sudo chmod +x ~/fechar_cs.sh


2) cstrike_com.sh

#!/bin/bash
# Script que roda e conecta o CS1.6 com WARP

# Otimiza o MTU da interface
sudo ip link set dev CloudflareWARP mtu 1280

# Limpa a rota anterior e fixa com o IP CloudflareWARP
sudo ip route add 131.196.198.52 dev CloudflareWARP 2>/dev/null

export SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
export DIR="$(dirname "$SCRIPT")"

cd "$DIR/game"

# Executa o jogo usando o tunel
# -window: abre em modo janela
# -w 1024 -h 768: define o tamanho da janela
# -nomousegrab: evita que o mouse fique preso
#./hl_linux -game cstrike -nomousegrab -ip 0.0.0.0 +clientport 27005
# Pode colocar -ip 0.0.0.0 no lugar de -ip 172.16.0.2
"$DIR/steam-runtime/run.sh" ./hl_linux -game cstrike -window -w 1024 -h 768 -nomousegrab -nofbo -nomsaa -gl_clear 1 -windowed -gl -ip 0.0.0.0 +clientport 27005

Salve e saia e dê permissão de execução.


Para criar um ícone na área de trabalho do Debian 13, vamos criar um arquivo .desktop. Isso permitirá que você abra o jogo como qualquer outro aplicativo do sistema, sem precisar abrir o terminal.

Abra o terminal e crie o arquivo na sua pasta de Área de Trabalho:

$ vim ~/Área\ de\ Trabalho/CounterStrike.desktop


Coloque dentro:

[Desktop Entry]
Name=Counter-Strike 1.6
Comment=Jogar CS 1.6 no Debian 13 via WARP
Exec=bash -c "/opt/cstrike/HLCS/game/cstrike.sh"
Icon=/opt/cstrike/HLCS/game/cstrike.ico
Terminal=false
Type=Application
Categories=Game;

Nota: Se você não tiver um arquivo .ico, pode usar o caminho /usr/share/icons/gnome/48x48/devices/input-gaming.png para um ícone genérico.

$ chmod +x ~/Área\ de\ Trabalho/CounterStrike.desktop


Como agora você vai abrir pelo ícone, certifique-se de que o seu script cstrike_com.sh comece garantindo que o WARP esteja conectado automaticamente:

#!/bin/bash
# Garante que o WARP está ligado antes do jogo
warp-cli connect
sleep 2

# ... restante do seu script (caminhos, bibliotecas e execução) ...


Você também pode criar um atalho para o seu script de fechar (fechar_cs.sh) seguindo os mesmos passos acima ou simplesmente rode o comando warp-cli disconnect para liberar a internet para outros usos (como streaming/downloads pesados) quando terminar a jogatina.


3) cstrike_sem.sh

#!/bin/bash

# Script que conecta CS1.6 sem WARP

export SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
export DIR="$(dirname "$SCRIPT")"

cd "$DIR/game"

# Para executar em tela cheia basta tirar -window -w 1024 -h 768
"$DIR/steam-runtime/run.sh" ./hl.sh -game cstrike -window -w 1024 -h 768

Salve, saia e dê permissão de execução.

Pode criar um atalho na área de trabalho também ficando com três ícones: um para entrar no CS1.6 pelo WARP, outro sem o WARP e outro para fechar o CS.


CONCLUSÃO

Os procedimentos aqui foram puramente didáticos porque para jogar CS online gratuito basta entrar no link:

https://play-cs.com/pt/servers


Escolher um servidor com o "map" desejado e conectar.


Para remover:

$ cd /opt/cstrike
$ sudo rm -rf HLCS


Descompacte novamente e reinicie o processo após a descompactação.


Configurações pessoais


$ vim /opt/cstrike/HLCS/game/cstrike/userconfig.cfg

// ====================================
// Configurações permanentes do jogador
// ====================================

// Downloads
cl_allowdownload 1
cl_download_ingame 1
cl_allowupload 0

// --------------------
// PERFORMANCE / FPS
// --------------------
fastsprites 0
fps_max 101
fps_override 0
gl_vsync 0
gl_overbright 0
gl_polyoffset 0
gl_monolights 1
gl_dither 0
r_detailtextures 0
mp_decals 20
r_decals 20
cl_showfps 1

// Mouse
m_filter 1
m_rawinput 1
m_customaccel 0
sensitivity 2.5
m_pitch 0.022
m_yaw 0.022
lookstrafe 0
lookspring 0

// Rede
rate 25000
cl_cmdrate 101
cl_updaterate 101
cl_cmdbackup 2
cl_interp 0
cl_interp_ratio 1
cl_lc 1
cl_lw 1
cl_dlmax 1024
cl_timeout 60

// --------------------
// HUD / VISUAL LIMPO
// --------------------
cl_himodels 0
cl_minmodels 1
cl_shadows 0
cl_weather 0
hud_fastswitch 1
hud_centerid 0
net_graph 3
net_scale 5

// --------------------
// SOM (CLARO E PRECISO)
// --------------------
hisound 1
snd_noextraupdate 1
_snd_mixahead 0.1
room_off 1
voice_enable 1
voice_scale 0.75

// --------------------
// MISC / QUALIDADE DE VIDA
// --------------------
cl_dynamiccrosshair 1
cl_crosshair_translucent 1
developer 0
con_mono 0
console 1


Salve e saia.


$ dos2unix /opt/cstrike/HLCS/game/cstrike/userconfig.cfg


O arquivo acima deve ser utilizado com cuidado.

Comece testando com somente os três parâmetros da seção Downloads, depois vá acrescentando e testando.

As configurações feitas no console sobrescrevem temporariamente o arquivo /opt/cstrike/HLCS/game/cstrike/config.cfg, o userconfig.cfg é o arquivo persistente.

Qualquer configuração deve ser feita somente nele.

Se mudar algo no console do jogo, o userconfig.cfg continua intacto.

No jogo você pode conversar com outros malucos.

SHALL WE PLAY A GAME?