Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
Busque o rank de Teamfight Tactics de qualquer jogador e gere o comando pronto para o chat da sua live no StreamElements.
Translation pending
GamesJavaScript · HTMLGitHub @Asrus21OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Rank de Teamfight Tactics de qualquer jogador e comando pronto para o chat da live (StreamElements). Endereço: https://elorank-games.com.br/rank-tft
Roda em Cloudflare Workers. O gateway do domínio (repositório
elorank-games) repassa /rank-tft e as APIs /api/tft/*, /cmd/tft/* e
api.elorank-games.com.br/tft/* para este Worker.
src/
index.js entrada do Worker (monta banco Neon + Riot com os segredos)
app.js rotas da API (Hono)
banco.js SQL: tft_players + accounts (compartilhada com LoL e Valorant)
riot.js API da Riot (conta e liga de TFT) e regiões
template.js monta o texto do comando (funções puras)
public/
index.html página (visual do design system EloRank: /ds/elorank.css)
test/ testes (npm test)
wrangler.jsonc configuração do Worker
server.js servidor ANTIGO (Express na Vercel) — ver "Transição"
| Rota | O que faz |
|---|---|
GET /api/tft/health | Saúde do serviço |
POST /api/tft/register | { gameName, tagLine, region } → registra e devolve o ID EloRank (account_id) |
POST /api/tft/puuid | Mesmo corpo; só consulta |
POST /api/tft/preview | { riot_puuid, msg, mode, lang } → texto do comando |
GET /api/tft/cmd/:id | Comando do bot (texto puro). :id = ID EloRank ou puuid antigo |
GET /cmd/tft/:id | O mesmo, caminho antigo |
GET /api/tft/cmd?player=Nome%23Tag®ion=br1 | Comando por nome ("!rank Nome#Tag") |
Parâmetros do comando: msg (template; aspas externas são removidas), mode
(tft, tft_double_up, tft_turbo), lang (pt, en), region.
Comando gerado pelo site:
$(customapi https://api.elorank-games.com.br/tft/cmd/ID?msg="(player) está (rank) com (pontos) pontos")
(player) (tag) (region) (modo) · (rank) (tier) (divisao) (pontos) ·
(vitorias) (derrotas) (winrate) (jogos) — também {var}. No TFT,
(vitorias) é top 1 e (derrotas) é do 2º ao 8º (é como a Riot devolve).
Cada comando do bot chama um endereço que faz uma coisa só (src/endpoints.js;
documentação pública em elorank-games.com.br/docs).
| Rota | O que faz | Busca em |
|---|---|---|
GET /api/tft/elo/nick?player=Nome%23Tag (ou /elo/nick/Nome/Tag) | Elo pelo nick | Riot (sem banco) |
GET /api/tft/elo/puuid/:puuid | Elo pelo PUUID | Riot (sem banco) |
GET /api/tft/elo/id/:id | Elo pelo ID EloRank | 1 leitura da accounts + Riot |
GET /api/tft/puuid?player=Nome%23Tag | Só o PUUID | Riot |
GET /api/tft/status | Saúde da API, do banco e da Riot (?format=text para o chat) | banco + da Riot |
Parâmetros: region (br1 padrão), msg, format=json, mode (tft, tft_double_up, tft_turbo), lang. Texto sai sempre
com status 200 (o bot imprime até o erro); respostas boas ficam em cache curto.
${customapi https://api.elorank-games.com.br/tft/elo/nick?player=${queryescape ${1:}}®ion=br1}
Asrus21/rank-tft.
O nome do Worker precisa ser rank-tft. Comando de deploy:
npx wrangler deploy.RIOT_API_KEY — a mesma chave da Riot de hoje;DATABASE_URL — a mesma do LoL e do Valorant (Neon), por causa da
tabela accounts compartilhada.rank-tft.<sua-conta>.workers.dev/api/tft/health.elorank-games, ative o binding RANK_TFT no
wrangler.jsonc. A partir daí, elorank-games.com.br/rank-tft vem deste
Worker.npm install
npm test # rotas e template (banco e Riot falsos)
npm run check # valida o build do Worker
npx wrangler dev # local; segredos em .dev.vars (não vai para o git)
Para testar o SQL de verdade contra um Postgres descartável:
TEST_DATABASE_URL=postgres://... npm test (as tabelas são apagadas).
server.js + vercel.json são o servidor antigo, ainda publicado na Vercel
(rank-tft.vercel.app). Os comandos de bot antigos (api.asrus.app/tft/...,
asrus.app/cmd/tft/...) dependem dele. Quando o asrus.app passar a repassar
esses caminhos para o domínio novo, apague server.js, vercel.json e as
dependências do Express, e desligue o projeto na Vercel.
EloRank Games não é endossado pela Riot Games e não reflete as opiniões da Riot Games ou de quem está envolvido oficialmente com seus produtos. Riot Games, Teamfight Tactics e todas as marcas associadas são marcas registradas da Riot Games, Inc.