BetLive - Live Betting System β€” GM Market

BetLive - Live Betting System

BetLive adds real sports betting to DarkRP, with live odds from real-world APIs, and bets auto-resolve when the match ends.

5.0 1 1+ v1.0.2
Garry's Mod darkrpdocumented
€12.50
Secure Instant Support

Wileard

1 products 5.0 β˜…

πŸ‘‘ Bookmaker Economy

  • Players take the Bookmaker job from the F4 menu and place a terminal anywhere on the map.
  • Bookmakers earn a configurable percentage commission on every losing bet placed at their terminal (5% by default).
  • Server-side base salary stacks on top of the commission income.
  • BuralisteMax limits concurrent Bookmaker job slots, MaxPerPlayer limits terminals per dealer.
  • Commission balance persists even if the terminal entity is destroyed.
  • Three terminal modes selectable in config: F4 menu, Bookmaker job, or Perma admin-placed.

🎰 Real Sports Betting

  • Real-world sports betting on actual matches that resolve when the real game ends.
  • 27 active leagues across 5 sports (35 shipped, 8 commented for one-line opt-in).
  • Live odds from two free APIs (The Odds API for European football, TheRundown for American sports).
  • Smart polling adjusts the refresh rate per sport based on activity to stay well under quota limits.

πŸ’° Virtual Currency (WinCoins)

  • WinCoins are layered on top of DarkRP money. Players deposit DarkRP money to get WC and bet with them.
  • Configurable conversion rate between DarkRP money and WinCoins.
  • Withdraw at any time to convert WinCoins back to DarkRP money.
  • Wallet panel shows balance, deposit/withdraw flows, transaction history, and live preview before confirming.

πŸ”— Combo Bets

  • Players can combine up to 10 selections into a single bet for multiplied odds.
  • Configurable max selections, max combo win cap, and max stake per combo.
  • The slip preview shows running total odds and potential payout as picks are added.
  • All-or-nothing: every selection must win for the combo to pay out.

⭐ VIP Perks

  • Two independent VIP tiers controllable by usergroup or SteamID list.
  • Odds Boost: +X% added to winning payouts (default 10%) with a hard cap to prevent high-odds combo abuse.
  • Bet Insurance: opt-in shield that recovers a percentage of stake (default 30%) on a lost bet, once per UTC day.
  • The slip previews the VIP bonus before placing the bet.

πŸ›‘οΈ Anti-Cheat & Anti-Oracle

  • Server-side validation on every bet: rate limits, balance check, odds sanity (1.01-100), match status, time-to-start buffer.
  • Anti-Oracle: when a bet is placed, the server snapshots current odds and waits 5 seconds before committing. If odds shift during the delay, the bet is cancelled.
  • Wash trading detection: rapid deposit/withdraw within a 5-minute window logs an alert and fires a webhook.
  • Violation count per SteamID with configurable auto-kick threshold.
  • SQL atomicity on every wallet operation: a crash mid-transaction cannot dup or lose coins.

🎯 Custom Matches with Dynamic Odds

  • Admins create custom matches in the panel with their own teams, sport, league and start time.
  • Dynamic odds: as players bet on a custom match, the odds shift in real time based on the betting pool.
  • Smoothing pool prevents single-bet whale swings.
  • Useful for in-house events, RP tournaments or special occasions without an API match.

πŸ“Ί Live Scores

  • TheRundown delivers live scores during matches that a player has bet on. Matches in progress show real-time score, period and time elapsed.
  • Scores are only fetched for matches with at least one active bet, so quota is preserved on idle leagues (configurable via ScoresOnlyWithBets).
  • Score updates push to all connected clients without re-fetching the full match data.
  • Score-based auto-resolution: bets resolve as soon as the score is final, no admin intervention needed.

πŸ“Š Admin Panel

  • Live history view paginated 50 bets, combos and transactions per page.
  • Security logs with filters by severity, search by nick, expandable rows for full detail.
  • KPI sparklines for stake, payout, profit and winrate scoped to today / 30 days / 7 days / all-time.
  • BookMaker panel with commission balance, terminal count, active status, last collect timestamp.
  • Inactive dealer cleanup bulk-removes dealers with zero balance and no terminals.

πŸ† Leaderboard

  • Five ranking angles: Total won, Net profit, Biggest win, Bets won, Best streak.
  • Period filter: All-time, 30 days, 7 days, Today.
  • Steam avatars on every row.
  • Sticky self-rank pinned at the bottom when out of top 5 so the player always sees their position.

πŸ… Achievement System

  • 6-tier achievement system tracking First Bet, 10 Bets, 100 Bets, First Win, 10 Wins, Combo Master.
  • Unlock notifications appear in the wallet panel.
  • Player-side stats tracked in the SQLite DB: total wagered, total won, win rate, longest streak.

πŸ“… Daily Stake Cap

  • Configurable percentage of the player's wallet allowed to be staked per 24-hour sliding window.
  • Slip shows a live progress bar and remaining stake.
  • Disabled by default; raise the cap or enable it to slow down compulsive sessions.

🎟️ Promo Codes

  • Admins create redeemable codes with WC reward, max uses and per-player restriction.
  • Players paste a code in the wallet promo section to redeem.
  • Live preview while typing shows code validity and reward before confirming.
  • Each code is single-use per player by SteamID.

πŸ”” Discord Webhook

  • Optional Discord webhook for live event broadcasting.
  • Events covered: bet placed, large claim, fraud alert, auto-kick, maintenance toggle, and more.
  • Configurable per-event filters select which events to push.
  • Customisable colors, bot name, avatar URL and footer text.
  • Test button in the admin panel to verify the URL before going live.

🎨 Themes

  • Four built-in visual themes selectable per player and saved client-side.
  • BetLive (OLED black/red), SportLive (broadcast plum/fuchsia), Petbllic360 (bet365-inspired green), Spartsbaak (FanDuel-inspired blue/navy).
  • Theme picker in the player Settings tab.
  • Pure CSS variable overrides; easy to add a new one by extending the :root block.

πŸ“‘ FastDL

  • Workshop addon (https://steamcommunity.com/sharedfiles/filedetails/?id=3718741564) ships materials, models and sounds so clients without FastDL still get assets fast via Steam CDN.
Secure Purchase Protected by GM Market
Free Updates Lifetime access included
Support Included 6 months of assistance
Source Code Full access & documentation

Credits

Coble: Wileard, swopies

Sound design: Floraphonic, Universfield, Ksjsbwuil, Koiroylers (royalty-free, sourced from Pixabay)

3D mode: "ATM Machine" by oscarherry3d (https://sketchfab.com/3d-models/atm-machine-22ca75eb5e0d4ee0a02c5b5100a55006) Modified for Source Engine (retextured, rescaled)

APIs: The Odds API (the-odds-api.com) and TheRundown (therundown.io), both free tier

Support

Discord: https://discord.gg/CvVGaCEsRW Or Marketplace ticket

Do I need to pay for any API?

No. Both providers ship with a permanent free tier. Smart polling keeps usage at ~370 req/month on The Odds API (cap 500) and ~9k req/day on TheRundown (cap 20k). Hard caps are enforced server-side: the addon physically cannot overshoot.

What happens when a real match is cancelled or postponed?

The match is flagged as stuck. Open Maintenance > Stuck matches in the admin panel for a one-click refund or force-resolve. A Discord webhook alert can be wired to fire automatically when the situation arises.

What if my server hits the API quota or crashes mid-bet?

Both are protected. Hard server-side caps block API calls before quota overshoot; cached odds keep showing until the next refresh window, and the "Unblock both APIs" button in Settings > API clears a 429/auth block manually. On the database side, every wallet debit + bet insert is wrapped in an atomic SQL transaction (sql.Begin / ROLLBACK / Commit), so a crash between the two undoes both: coins stay in the wallet, no orphan bet on record. Same protection covers combo placement, payouts, deposits, withdrawals and insurance claims.

What if The Odds API or TheRundown goes down, is BetLive dead?

No. Cached odds keep being served until the API recovers. Custom admin-built matches, the Bookmaker job, the wallet bridge, pending bet resolution and the entire UI keep working. Only "new matches appearing in the sidebar" is paused. The addon never hammers a degraded API: every fetch respects the cap and the configured cooldown.

What if a player wins while they're disconnected?

The win is stored in SQLite. On their next reconnect, BetLive auto-resolves any orphaned pending bets, then sends a notification with the count of unclaimed winnings to claim from My Bets. Nothing is silently dropped, nothing expires.

Will it work on my DarkRP fork (DarkRP_Modified, NarutoRP, StarWarsRP, MilitaryRP, custom variants)?

Yes for any fork that keeps the standard DarkRP player API (getDarkRPVar("money"), addMoney, canAfford). That covers DarkRP, DarkRP_Modified, NarutoRP, StarWarsRP, MilitaryRP and most custom variants out of the box. Pure-Sandbox is not supported because there's no DarkRP money to bridge.

Will the addon spam the APIs during off-season (e.g. NFL in summer)?

No. Any sport returning 0 matches automatically extends its refresh TTL to up to 14 days. The addon retries occasionally rather than every cycle, so your free quota is preserved year-round even with all leagues enabled.

What if my Discord webhook URL goes down, do I lose the audit trail?

No. Logs storage has three modes (Settings > Server): both (DB + Discord, default), in_game (DB only) or webhook (Discord only). The DB option keeps the full audit trail in winamaw.sqlite regardless of Discord status. Failed webhooks are silently retried, never block a bet.

Full step-by-step guide (FastDL setup, A-to-Z API key tutorial, troubleshooting) in the README, or watch the setup video.

  1. Drop the BetLive folder into your server's addons/ directory.
  2. Generate a free The Odds API key at the-odds-api.com (60-second signup, no credit card).
  3. Optional: generate a free TheRundown key at therundown.io for American sports (NBA, NHL, MLB, NFL).
  4. Open lua/winamaw/code/core/shconfig.lua and paste each key into its respective field. You can also add them live in-game later.
  5. Restart the server.
  6. In-game, type !betlogs and open Settings > API Configuration to verify the keys are working.
  7. Spawn a terminal: winamaw_spawn in console, or let players buy one via F4 / the Bookmaker job.

Worskhop content:

https://steamcommunity.com/sharedfiles/filedetails/?id=3718741564

Historique des versions 2 versions

Actuelle v1.0.2
== Fixed ==
- Discord webhooks could silently never arrive on most hosted servers
(Discord blocks GMod's built-in HTTP client). BetLive now sends them
through the gmsv_reqwest or gmsv_chttp module when installed - free,
one file, 2-minute guide in the README.
- The webhook "Test" button always failed even with a valid URL. It now
reports the real result, and error messages point at the actual cause.
- Some daily limits (VIP insurance, daily betting cap) could reset
earlier than intended.
- Double-clicking while a bet was processing could count against the
player.
- Custom matches now automatically close betting at their configured
end time.
- Bookmakers now also earn their commission on bets that resolve while
they are offline.
- Stricter API budget protection, better handling of malformed sports
data, fresh odds reach players faster.
- Various smaller hardening fixes across betting, refunds, admin panel
and UI.

== Notes ==
- No Workshop update required (3D model, textures and sounds unchanged).
- Existing configs and databases are fully compatible.
- Discord webhook users: after updating, check the server console. If it
prints "[BetLive] webhook HTTP module loaded" you're all set; otherwise
see the README, section Discord webhooks (one file to upload).
v1.0.1
== Fixed ==
- Bet & wallet inputs could freeze the game when spammed with long
numbers. All money fields are now clamped (digits only, capped at the
server limit).
- HTML panel could fail to load ("file not found") for players who
disable downloads. The interface is now streamed reliably over the
network and cached per-server, so it only downloads once.
- Fake matches created from the admin panel started at a fixed +60s and
never auto-ended. They now use the start/duration you set.
- Reopening the panel while the interface was still downloading could
strand a player on the loading screen.

== Added ==
- Per-server disk cache for the panel: after the first download, the
interface loads instantly on every reconnect (auto-refreshes on update).
- Close button on the loading screen.
- Debounce on the terminal so holding Use no longer flickers the panel.

== Changed ==
- Full codebase reorganized into smaller modules for easier maintenance
(no file over ~650 lines).
- Naming convention unified across the whole addon.
- All network messages now use strict typed values.

== Notes ==
- No Workshop update required (3D model, textures and sounds unchanged).
- Existing configs are compatible; the config is now split into several
files under _core/config/.
v1.0.0.2
Bug fixes

- Workshop content (Steam ID 3718741564) was shipping sounds one folder too high. Clients on servers without HTTP FastDL configured had silent terminals. Republished with the correct path.

Improvements

- Split the DHTML panel into partials under html/partials/. You can now mod the admin tab alone without scrolling the entire panel HTML file. Runtime stays the same, partials get concatenated at build time.
- Cleanup pass on duplicated inline styles, pulled into a few shared CSS classes. No visual change.
v1.0.0.1
# BetLive v1.0.1

## Bug fixes

- When a "code already exists" error came back after creating a promo code,
the Create button stayed greyed out until the panel was closed. The button
now releases itself so you can edit and try again right away.

- Placing two bets quickly back to back could play the success animation for
the wrong one, making it look like a single bet got validated twice. The
panel now blocks the second click and shows a clear message while the first
bet is still in flight.

- On some configurations, building a combo in specific conditions threw a
server console error. That path no longer crashes.

- With the panel set to English, match times still rendered in French format
(DD/MM). Dates now follow the active language: MM/DD in EN, DD/MM in FR,
same 24h time on both.

## Improvements

- Admins now get visible feedback when a cooldown blocks a click from
reaching the server (the click used to vanish silently).

- Tighter cooldowns on sensitive admin actions (promo create / delete,
manual match resolve, API key add / remove, maintenance toggle, etc.).
Prevents accidental double-clicks and stray spam.

- More reliable detection of suspicious API key rotations: the red warning
banner now shows up on the second rotation inside a 25h window, without
waiting for a manual settings refresh.

- The custom-match resolve button and the promo-delete button now handle
exotic characters in IDs (quotes, backslashes, etc.) cleanly.
5.0
1 reviews
5β˜…
1
4β˜…
0
3β˜…
0
2β˜…
0
1β˜…
0
Glitch#11348 Verified Purchase
2026-06-29

Fast, helpful, and genuinely kind developers!

This addon works flawlessly and was incredibly easy to set up. My players were so excited when I added it to our serverβ€”we were one of the first servers to offer a feature like this, and it's been a huge hit ever since.

I highly recommend this addon to anyone looking to give their players something unique and fun. It's especially great during the World Cup, since players can place bets on the matches, which adds a whole new level of excitement to the server.

The developers also deserve a special mention. They're very responsive, open to suggestions, and quick to fix any bugs or add requested features. It's rare to find creators who care this much about their community and their product.

Overall, I couldn't be happier with both the addon and the support behind it. I highly recommend these developers and this addon to anyone looking for a high-quality betting system for their server. ⭐⭐⭐⭐⭐