<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.beyonderluu.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.beyonderluu.com/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-06-03T08:02:57+00:00</updated><id>https://www.beyonderluu.com/feed.xml</id><title type="html">luthebao</title><subtitle>Personal site of luthebao (BaoLT) — native apps, developer tools, and the occasional Flash emulator. Write-ups on the software I build.</subtitle><author><name>BaoLT</name></author><entry><title type="html">Llflash — A Flash Player emulator in Rust, with a one-line RTMP host install</title><link href="https://www.beyonderluu.com/2026/05/21/long-live-flash/" rel="alternate" type="text/html" title="Llflash — A Flash Player emulator in Rust, with a one-line RTMP host install" /><published>2026-05-21T00:00:00+00:00</published><updated>2026-05-21T00:00:00+00:00</updated><id>https://www.beyonderluu.com/2026/05/21/long-live-flash</id><content type="html" xml:base="https://www.beyonderluu.com/2026/05/21/long-live-flash/"><![CDATA[<p><strong>Llflash</strong> is an Adobe Flash Player emulator written in <a href="https://www.rust-lang.org/">Rust</a>, targeting both desktop and the web via WebAssembly. It’s a fork of <a href="https://ruffle.rs/">Ruffle</a> with one headline addition: <strong>RTMP support</strong>, delivered through a small native messaging host that pairs with the browser extension. The rest of the runtime tracks upstream — ActionScript 1, 2, and 3 are all supported, enough to bring most legacy <code class="language-plaintext highlighter-rouge">.swf</code> content back to life: games, animations, learning tools, and the multiplayer-streaming SWFs that vanilla Ruffle can’t reach because browsers don’t expose raw TCP.</p>

<p>Desktop builds and the RTMP native messaging host are published on the <a href="https://github.com/luthebao/luthebao/releases/tag/llflash"><code class="language-plaintext highlighter-rouge">llflash</code> release</a>. Questions, bug reports, and feature requests go through the <a href="https://github.com/luthebao/luthebao/discussions">luthebao discussions tab</a> — there’s no public issue tracker.</p>

<h2 id="setup-in-three-steps">Setup in three steps</h2>

<ol>
  <li><strong>Install the browser extension.</strong> <em>Coming soon</em> — the Chrome Web Store / Firefox Add-ons listing isn’t published yet. Until then, you can side-load the unpacked extension from the <a href="https://github.com/luthebao/luthebao/releases/tag/llflash">release page</a>.</li>
  <li><strong>Install the RTMP native messaging host</strong> with the one-liner for your OS (see below). This is the small out-of-process helper that lets SWFs reach <code class="language-plaintext highlighter-rouge">rtmp://</code> servers.</li>
  <li><strong>Visit any page that uses Flash.</strong> The extension picks up <code class="language-plaintext highlighter-rouge">.swf</code> embeds automatically and routes RTMP traffic through the host you just installed — no per-site configuration.</li>
</ol>

<h2 id="install-the-rtmp-native-messaging-host">Install the RTMP native messaging host</h2>

<p>Llflash plays static SWFs entirely in the browser, but <strong>RTMP-based content</strong> (legacy live-streaming SWFs, multiplayer games that talk to <code class="language-plaintext highlighter-rouge">rtmp://</code> servers) needs an out-of-process helper — browsers can’t open raw TCP sockets. The <strong>RTMP native messaging host</strong> is a small Rust binary the browser extension launches over Chrome / Firefox’s native-messaging protocol. Once registered, RTMP traffic inside any SWF is routed through it transparently.</p>

<p>Pick the line that matches your OS.</p>

<h3 id="macos--linux">macOS / Linux</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-fsSL</span> https://github.com/luthebao/luthebao/releases/download/llflash/rtmp-host-install.sh | bash
</code></pre></div></div>

<p>Supports <strong>macOS (Apple Silicon)</strong> and <strong>Linux x86_64</strong>. The script downloads the latest release tarball, drops the binary under <code class="language-plaintext highlighter-rouge">~/.llflash/rtmp-host/</code>, and writes the native-messaging manifest (<code class="language-plaintext highlighter-rouge">com.longliveflash.rtmp_host</code>) into the right per-browser directory. Default target is Chrome — pass a browser name to install for a different one:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># chrome | chromium | edge | brave | firefox | all</span>
curl <span class="nt">-fsSL</span> https://github.com/luthebao/luthebao/releases/download/llflash/rtmp-host-install.sh | bash <span class="nt">-s</span> <span class="nt">--</span> firefox
</code></pre></div></div>

<h3 id="windows">Windows</h3>

<p>In <strong>PowerShell</strong>:</p>

<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">irm</span><span class="w"> </span><span class="nx">https://github.com/luthebao/luthebao/releases/download/llflash/rtmp-host-install.ps1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">iex</span><span class="w">
</span></code></pre></div></div>

<p>Same behaviour as the bash version: pulls the latest zip, extracts to <code class="language-plaintext highlighter-rouge">%LOCALAPPDATA%\LongLiveFlash\rtmp-host\</code>, and registers the native-messaging manifest. To pass a browser argument, save the script first and run it locally:</p>

<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$u</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'https://github.com/luthebao/luthebao/releases/download/llflash/rtmp-host-install.ps1'</span><span class="w">
</span><span class="n">iwr</span><span class="w"> </span><span class="nv">$u</span><span class="w"> </span><span class="nt">-OutFile</span><span class="w"> </span><span class="nx">rtmp-host-install.ps1</span><span class="w">
</span><span class="n">PowerShell</span><span class="w"> </span><span class="nt">-ExecutionPolicy</span><span class="w"> </span><span class="nx">Bypass</span><span class="w"> </span><span class="nt">-File</span><span class="w"> </span><span class="o">.</span><span class="nx">\rtmp-host-install.ps1</span><span class="w"> </span><span class="nx">all</span><span class="w">
</span></code></pre></div></div>

<p>After install, restart your browser and reload the extension — the host appears under <code class="language-plaintext highlighter-rouge">chrome://extensions/</code> (or the Firefox equivalent) and RTMP-backed SWFs should connect straight away.</p>

<h3 id="environment-overrides">Environment overrides</h3>

<p>Both scripts honour the same overrides if you need to pin a specific release or change the install location:</p>

<table>
  <thead>
    <tr>
      <th>Variable</th>
      <th>Default</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">LLFLASH_REPO</code></td>
      <td><code class="language-plaintext highlighter-rouge">luthebao/luthebao</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">LLFLASH_TAG</code></td>
      <td><code class="language-plaintext highlighter-rouge">llflash</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">LLFLASH_INSTALL_DIR</code></td>
      <td><code class="language-plaintext highlighter-rouge">~/.llflash/rtmp-host</code> (Unix) / <code class="language-plaintext highlighter-rouge">%LOCALAPPDATA%\LongLiveFlash\rtmp-host</code> (Windows)</td>
    </tr>
  </tbody>
</table>

<h2 id="desktop-builds">Desktop builds</h2>

<p>Standalone desktop builds are listed on the <a href="https://github.com/luthebao/luthebao/releases/tag/llflash">release page</a> alongside the install scripts:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">llflash-rtmp-host-1.1.0-macOS-arm64.tar.gz</code></li>
  <li><code class="language-plaintext highlighter-rouge">llflash-rtmp-host-1.1.0-Linux-x64.tar.gz</code></li>
  <li><code class="language-plaintext highlighter-rouge">llflash-rtmp-host-1.1.0-Windows-x64.zip</code></li>
</ul>

<p>Each archive contains the host binary plus the install script for that platform — useful if you’d rather audit the script and run it offline instead of piping from <code class="language-plaintext highlighter-rouge">curl</code>.</p>

<h2 id="relationship-to-ruffle">Relationship to Ruffle</h2>

<p>Llflash is a fork of <a href="https://github.com/ruffle-rs/ruffle">Ruffle</a>, not a rewrite. The AVM1/AVM2 interpreters, the renderer, and the SWF parser are Ruffle’s work — credit and thanks go to that project and its contributors. What this fork adds is the <code class="language-plaintext highlighter-rouge">rtmp://</code> path: the <code class="language-plaintext highlighter-rouge">llflash-rtmp-host</code> binary you just installed terminates the RTMP/RTMPE/RTMPT protocols outside the browser sandbox, and a thin bridge inside the wasm module forwards <code class="language-plaintext highlighter-rouge">NetConnection</code> / <code class="language-plaintext highlighter-rouge">NetStream</code> traffic to it. With that in place, SWFs that depend on Flash Media Server, Wowza, or any RTMP origin keep working — which is the gap that kept a noticeable slice of legacy Flash content from running under stock Ruffle.</p>

<p>Everything else — including most ActionScript edge cases, codec coverage, and the desktop player — behaves like upstream Ruffle. Questions, bug reports, and feature requests live on the <a href="https://github.com/luthebao/luthebao/discussions">luthebao discussions tab</a> (the source repo is private, so there’s no public issue tracker)</p>

<h2 id="privacy">Privacy</h2>

<p>Long Live Flash respects user privacy. The browser extension searches website HTML for embedded Flash content without storing or transmitting browsing activity.</p>

<p>Flash content may store data locally using browser LocalStorage APIs and make network requests to third-party servers, potentially transmitting personally identifiable or “fingerprintable” information. The <code class="language-plaintext highlighter-rouge">llflash-rtmp-host</code> extends that surface in one direction only: when a SWF opens an <code class="language-plaintext highlighter-rouge">rtmp://</code> connection, the host establishes a TCP connection to that origin on the SWF’s behalf. Llflash itself does not inspect, log, or retain RTMP payloads — they pass through the host and back to the wasm runtime — but the destination server will see traffic from your IP address, exactly as it would have under the original Flash Player.</p>

<p>LLFlash stores settings locally via the browser’s extension storage API. These settings don’t contain identifying information and aren’t transmitted to servers.</p>

<p>When errors occur, users can optionally submit crash reports through the <a href="https://github.com/luthebao/luthebao/discussions">luthebao discussions tab</a>. These reports include browser and site information but aren’t stored or transmitted without explicit user consent.</p>

<p>The project is a fork of <a href="https://github.com/ruffle-rs/ruffle">Ruffle</a>, which is open-source; LLflash’s additions are distributed via the <a href="https://github.com/luthebao/luthebao/releases/tag/llflash">release page</a> above.</p>

<p>Users should exercise caution with untrusted content. LLflash isn’t responsible for third-party privacy practices, and we encourage reviewing the applicable privacy policies and terms of the websites and services visited.</p>]]></content><author><name>BaoLT</name></author><category term="rust" /><category term="flash" /><category term="wasm" /><summary type="html"><![CDATA[Llflash is an Adobe Flash Player emulator written in Rust, targeting both desktop and the web via WebAssembly. It’s a fork of Ruffle with one headline addition: RTMP support, delivered through a small native messaging host that pairs with the browser extension. The rest of the runtime tracks upstream — ActionScript 1, 2, and 3 are all supported, enough to bring most legacy .swf content back to life: games, animations, learning tools, and the multiplayer-streaming SWFs that vanilla Ruffle can’t reach because browsers don’t expose raw TCP.]]></summary></entry><entry><title type="html">mac-cli — A multi-purpose macOS command-line tool</title><link href="https://www.beyonderluu.com/2026/05/20/mac-cli/" rel="alternate" type="text/html" title="mac-cli — A multi-purpose macOS command-line tool" /><published>2026-05-20T00:00:00+00:00</published><updated>2026-05-20T00:00:00+00:00</updated><id>https://www.beyonderluu.com/2026/05/20/mac-cli</id><content type="html" xml:base="https://www.beyonderluu.com/2026/05/20/mac-cli/"><![CDATA[<p><strong>mac-cli</strong> is a multi-purpose command-line tool for macOS, written in <a href="https://odin-lang.org/">Odin</a>. It bundles several utilities I reach for daily — disk cleaning, image/video optimisation, and screenshots — behind one small, agent-friendly binary. Currently ships an Apple Silicon (<code class="language-plaintext highlighter-rouge">arm64</code>) build only.</p>

<p>Source and releases live at <a href="https://github.com/luthebao/mac-cli">github.com/luthebao/mac-cli</a>.</p>

<h2 id="install">Install</h2>

<p>One-liner — pulls the latest release binary, no Odin toolchain required:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-fsSL</span> https://raw.githubusercontent.com/luthebao/mac-cli/main/install.sh | bash
</code></pre></div></div>

<p>The script downloads the latest tarball, picks a sensible install dir (<code class="language-plaintext highlighter-rouge">/usr/local/bin</code> if writable, otherwise <code class="language-plaintext highlighter-rouge">~/.local/bin</code>), strips the macOS quarantine xattr so Gatekeeper doesn’t block the first run, and prints a <code class="language-plaintext highlighter-rouge">PATH</code> hint if the chosen dir isn’t already on <code class="language-plaintext highlighter-rouge">$PATH</code>.</p>

<h2 id="self-update">Self-update</h2>

<p>The binary updates itself — same install logic, no flags needed:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mac-cli update            <span class="c"># install latest if newer</span>
mac-cli update <span class="nt">--check</span>    <span class="c"># report only; exits non-zero when update available</span>
mac-cli update <span class="nt">--force</span>    <span class="c"># re-run the installer even if already current</span>
</code></pre></div></div>

<h2 id="commands">Commands</h2>

<h3 id="clean--disk-cleaner"><code class="language-plaintext highlighter-rouge">clean</code> — disk cleaner</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mac-cli clean                        <span class="c"># interactive cleaner</span>
mac-cli clean <span class="nt">--risky</span>                <span class="c"># include risky categories</span>
mac-cli clean categories             <span class="c"># list all 16 cleanable categories</span>
mac-cli clean uninstall              <span class="c"># remove apps + their leftovers</span>
mac-cli clean maintenance <span class="nt">--dns</span>      <span class="c"># flush DNS cache</span>
mac-cli clean backup <span class="nt">--list</span>          <span class="c"># list pre-delete backups</span>
</code></pre></div></div>

<h3 id="clop--image--video-optimiser"><code class="language-plaintext highlighter-rouge">clop</code> — image &amp; video optimiser</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mac-cli clop                         <span class="c"># interactive picker</span>
mac-cli clop <span class="nt">-o</span> photo.png            <span class="c"># optimise in place</span>
mac-cli clop <span class="nt">-o</span> ~/Pictures <span class="nt">-r</span>        <span class="c"># recurse into a directory</span>
mac-cli clop <span class="nt">-d</span> 50% clip.mp4         <span class="c"># downscale by factor</span>
mac-cli clop <span class="nt">-c</span> webp cover.png       <span class="c"># convert image format</span>
mac-cli clop <span class="nt">-s</span> IMG_2156.jpg         <span class="c"># strip EXIF metadata</span>
</code></pre></div></div>

<p>Shells out to format-specific CLIs (<code class="language-plaintext highlighter-rouge">pngquant</code>, <code class="language-plaintext highlighter-rouge">jpegoptim</code>, <code class="language-plaintext highlighter-rouge">gifsicle</code>, <code class="language-plaintext highlighter-rouge">ffmpeg</code>, <code class="language-plaintext highlighter-rouge">vips</code>, <code class="language-plaintext highlighter-rouge">cwebp</code>, <code class="language-plaintext highlighter-rouge">heif-enc</code>, <code class="language-plaintext highlighter-rouge">exiftool</code>). Missing tools trigger an interactive <code class="language-plaintext highlighter-rouge">brew install</code> prompt on first use. Supported formats: <code class="language-plaintext highlighter-rouge">.png .jpg .jpeg .gif</code> (images) and <code class="language-plaintext highlighter-rouge">.mp4 .mov .m4v</code> (videos).</p>

<h3 id="shot--screenshots"><code class="language-plaintext highlighter-rouge">shot</code> — screenshots</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mac-cli shot                         <span class="c"># interactive picker (type to filter)</span>
mac-cli shot <span class="nt">-s</span>                      <span class="c"># capture full screen</span>
mac-cli shot <span class="nt">-l</span>                      <span class="c"># list running GUI apps with PIDs</span>
mac-cli shot <span class="nt">-p</span> 1234                 <span class="c"># capture a specific app by PID</span>
</code></pre></div></div>

<p>All screenshots land in <code class="language-plaintext highlighter-rouge">~/Desktop</code> as PNGs. First run may prompt for the Screen Recording permission in System Settings → Privacy.</p>

<h2 id="claude-code-agent-skill">Claude Code agent skill</h2>

<p>If you use <a href="https://claude.com/claude-code">Claude Code</a>, install the companion agent skill so Claude can drive <code class="language-plaintext highlighter-rouge">mac-cli</code> for you — cleaning caches, taking app-specific screenshots, optimising media, and so on:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npx skills add luthebao/mac-cli
</code></pre></div></div>

<p>The skill assumes the <code class="language-plaintext highlighter-rouge">mac-cli</code> binary is already on <code class="language-plaintext highlighter-rouge">$PATH</code>, so install that first.</p>

<h2 id="build-from-source">Build from source</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/luthebao/mac-cli.git
<span class="nb">cd </span>mac-cli
make build                           <span class="c"># → build/mac-cli</span>
make <span class="nb">test
</span>make <span class="nb">install</span>
</code></pre></div></div>

<p>Licensed under MIT.</p>]]></content><author><name>BaoLT</name></author><category term="odin" /><category term="macos" /><category term="cli" /><summary type="html"><![CDATA[mac-cli is a multi-purpose command-line tool for macOS, written in Odin. It bundles several utilities I reach for daily — disk cleaning, image/video optimisation, and screenshots — behind one small, agent-friendly binary. Currently ships an Apple Silicon (arm64) build only.]]></summary></entry><entry><title type="html">MMStock — Native terminal for the Vietnamese stock-futures market</title><link href="https://www.beyonderluu.com/2026/05/20/mm-vnstock/" rel="alternate" type="text/html" title="MMStock — Native terminal for the Vietnamese stock-futures market" /><published>2026-05-20T00:00:00+00:00</published><updated>2026-05-20T00:00:00+00:00</updated><id>https://www.beyonderluu.com/2026/05/20/mm-vnstock</id><content type="html" xml:base="https://www.beyonderluu.com/2026/05/20/mm-vnstock/"><![CDATA[<p><strong>MMStock</strong> is a native desktop terminal for the Vietnamese stock-futures market. It connects directly to the VPS data feed (<code class="language-plaintext highlighter-rouge">web7.vps.com.vn</code>) — no separate backend service in between — and renders charts, indicators, and a real-time price stream entirely on the client.</p>

<p>The app is written in <a href="https://odin-lang.org/">Odin</a> on top of <a href="https://github.com/floooh/sokol">Sokol</a>, <a href="https://github.com/ocornut/imgui">Dear ImGui</a>, and <a href="https://github.com/epezent/implot">ImPlot</a>. Builds run on macOS (Apple Silicon and Intel), Linux x86_64, and Windows x86_64.</p>

<h2 id="download">Download</h2>

<p><a href="https://github.com/luthebao/luthebao/releases/tag/mmstock"><strong>Download MMStock</strong></a> — macOS and Windows builds available on the release page.</p>

<h2 id="what-it-does">What it does</h2>

<ul>
  <li><strong>Charts</strong> — candlestick, line, and Heiken Ashi, across multiple timeframes (1m, 5m, 15m, 30m, 1H, 4H, 8H, 1D, 1W, 1M).</li>
  <li><strong>Real-time stream</strong> — live prices over WSS, historical bars over HTTPS, both from VPS directly.</li>
  <li><strong>Drawing tools</strong> — per-chart horizontal line, rectangle, and point-line annotations.</li>
  <li><strong>Indicators</strong>
    <ul>
      <li><strong>VPVR</strong> — volume-by-price overlay.</li>
      <li><strong>BLT-ID-RSI</strong> — a Pine-script port combining RSI with Fast (RMA 5) and Slow (WMA 45) moving averages, regular and hidden bull/bear divergence detection, a VMC gold buy signal, a Stoch-RSI sell signal, and a configurable multi-timeframe table.</li>
    </ul>
  </li>
</ul>

<h2 id="architecture-in-one-paragraph">Architecture in one paragraph</h2>

<p>A single Odin binary holds the UI (ImGui/ImPlot rendered through Sokol), the VPS HTTPS + WSS client, and a local SQLite store for cached bars. There is no server-side component to deploy — the terminal is the entire app, and updates ship as new binaries.</p>

<h2 id="why-a-native-client">Why a native client</h2>

<p>Two reasons. First, charting tens of thousands of bars at 60 fps with smooth pan/zoom is straightforward in ImPlot and painful in a browser. Second, going straight to the exchange feed cuts an entire layer of infrastructure: no API gateway, no backend cache, no queue — fewer moving parts to break and nothing to host.</p>

<h2 id="status">Status</h2>

<p>Active development. The Vietnamese stock-futures market is a relatively niche audience, so MMStock is built primarily as a tool I want to use myself, with an eye on making it pleasant for anyone with a similar workflow.</p>]]></content><author><name>BaoLT</name></author><category term="odin" /><category term="trading" /><category term="desktop" /><summary type="html"><![CDATA[MMStock is a native desktop terminal for the Vietnamese stock-futures market. It connects directly to the VPS data feed (web7.vps.com.vn) — no separate backend service in between — and renders charts, indicators, and a real-time price stream entirely on the client.]]></summary></entry><entry xml:lang="vi"><title type="html">VPT Helper — Phần mềm hỗ trợ chơi game Vua Pháp Thuật</title><link href="https://www.beyonderluu.com/2016/05/20/vpthelper/" rel="alternate" type="text/html" title="VPT Helper — Phần mềm hỗ trợ chơi game Vua Pháp Thuật" /><published>2016-05-20T00:00:00+00:00</published><updated>2016-05-20T00:00:00+00:00</updated><id>https://www.beyonderluu.com/2016/05/20/vpthelper</id><content type="html" xml:base="https://www.beyonderluu.com/2016/05/20/vpthelper/"><![CDATA[<p><strong>VPT Helper</strong> là phần mềm hỗ trợ tự động (auto) dành cho game <strong>Vua Pháp Thuật</strong>, do mình phát triển và cập nhật trong nhiều năm. Bài viết này tổng hợp lại các thông tin cơ bản về phần mềm: yêu cầu hệ thống, hướng dẫn cài đặt, và các chức năng chính hiện có.</p>

<h2 id="yêu-cầu-hệ-thống">Yêu cầu hệ thống</h2>

<ul>
  <li>Hệ điều hành: <strong>Windows 10 64-bit</strong> hoặc <strong>Windows Server 2016 64-bit</strong> trở về sau.</li>
  <li>Các tài khoản game cần để <strong>chế độ hình ảnh cao nhất</strong> trong game.</li>
  <li>Trong cài đặt Display của Windows: đặt <strong>Scale màn hình về 100%</strong>.</li>
</ul>

<h2 id="hướng-dẫn-cài-đặt">Hướng dẫn cài đặt</h2>

<p><strong>Bước 1 — Giải nén và phân quyền:</strong>
Sau khi tải về, hãy giải nén vào ổ <strong>D</strong> hoặc <strong>E</strong> (không nên là ổ C để tránh các vấn đề về quyền admin). Tiếp đó, cấp <strong>quyền Admin</strong> cho toàn bộ thư mục auto. Nếu Windows Defender báo virus với file <code class="language-plaintext highlighter-rouge">VPTHelper.exe</code>, bạn cần <strong>allow</strong> nó trong Defender để phần mềm có thể chạy được.</p>

<p><strong>Lưu ý xử lý lỗi trị an / trừ ma:</strong> Trước khi giải nén bản mới, chuột phải vào file <code class="language-plaintext highlighter-rouge">.zip</code> → chọn <strong>Properties</strong> → tích vào ô <strong>Unblock</strong> ở phía dưới → <strong>Apply</strong>. Bước này khắc phục lỗi do Windows chặn file tải từ Internet.</p>

<p><strong>Bước 2 — Mở chương trình:</strong>
Mở file <code class="language-plaintext highlighter-rouge">VPTHelper.exe</code>. Từ phiên bản <strong>3.2.0</strong> trở đi, bạn <strong>không cần kích hoạt</strong> — phần mềm <strong>hoàn toàn miễn phí</strong>.</p>

<p><strong>Bước 3 — Sử dụng.</strong></p>

<h2 id="quản-lý-key">Quản lý key</h2>

<p>Để quản lý key (đăng ký, gia hạn, kiểm tra trạng thái, đổi key cho các tính năng VIP), truy cập trang quản lý chính thức:</p>

<blockquote>
  <p>🔑 <a href="https://vpthelper.beyonderluu.com/"><strong>vpthelper.beyonderluu.com</strong></a></p>
</blockquote>

<p>Toàn bộ thao tác liên quan đến key đều được xử lý trên trang này. Bạn nên ghi lại key của mình ở nơi an toàn để tránh thất lạc.</p>

<h2 id="các-chức-năng-chính">Các chức năng chính</h2>

<ol>
  <li><strong>Auto Ngày mới</strong> — chạy lần lượt các auto cơ bản theo lịch admin cài sẵn, bắt đầu từ 0h ngày mới: Auto phụ bản, Tu hành, Thần tu, Ước nguyện, nhận quà không gian điêu khắc, quà hành lang, và auto trồng cây, đấu pet lặp đi lặp lại.
    <ul>
      <li>Hoạt động từ <strong>0h sáng đến 9h sáng</strong> hàng ngày (sau 9h sẽ nghỉ tới 0h ngày hôm sau).</li>
      <li>Hoạt động tất cả các ngày trừ giờ bảo trì.</li>
    </ul>
  </li>
  <li><strong>Auto Lập tức</strong> — chạy ngay auto Phụ bản, Thần tu, Ước nguyện… mà không cần chờ tới 0h.</li>
  <li><strong>Trị An</strong> — chạy auto trị an. Hiện có thể chạy cho các tài khoản không VIP hoặc VIP thấp.</li>
  <li><strong>Load Cache</strong> — xoá cache và cập nhật cache mới nhất mà không cần load lại bản đồ. Sau khi sử dụng, đợi từ 5–10 phút để map được cập nhật.</li>
  <li><strong>Trừ Ma</strong> — chạy auto trừ ma, có thể party team để nhanh hơn. Không cần phù nhóm.</li>
  <li><strong>VPT Login</strong> — tích hợp từ VPT Login, các chức năng yêu cầu login qua VPT Login sẽ sử dụng được sau khi đăng nhập.</li>
  <li><strong>Auto Clicks</strong> — các chức năng bổ trợ: auto mở tàng bảo đồ, auto click ks shop limit, v.v.</li>
  <li><strong>Auto Bắt Pet</strong> — tự động bắt pet, hỗ trợ cả map chỉ có 1 NPC.</li>
  <li><strong>Combo XT</strong> — hướng dẫn bắn combo hệ cho xạ thủ, tích hợp <strong>check realtime</strong> để gợi ý skill theo hệ. Yêu cầu vào game bằng tính năng Login của phần mềm.</li>
  <li><strong>Các tính năng VIP (đang phát triển)</strong> — sẽ có thêm các chức năng VIP có tính phí, giá hợp lý, được mở khi đủ ổn định. Dự kiến bao gồm:
    <ul>
      <li>Auto Kỹ năng sống: Hái, Trồng, Câu.</li>
      <li>Auto Đổi KP.</li>
      <li>Auto Boss tộc.</li>
      <li>Auto Nhiệm vụ 200 vòng.</li>
    </ul>
  </li>
</ol>

<h2 id="ghi-chú">Ghi chú</h2>

<p>Phần mềm được cập nhật thường xuyên. Những bạn đã sử dụng VPT Helper trước đây sẽ không lạ gì với phần lớn chức năng. Người dùng mới nên xem các video hướng dẫn để làm quen, đặc biệt là với <strong>Auto Bắt Pet</strong> và <strong>Combo XT</strong>.</p>

<p>Chúc anh em chơi game vui vẻ!</p>]]></content><author><name>BaoLT</name></author><category term="windows" /><category term="game" /><category term="auto" /><summary type="html"><![CDATA[VPT Helper là phần mềm hỗ trợ tự động (auto) dành cho game Vua Pháp Thuật, do mình phát triển và cập nhật trong nhiều năm. Bài viết này tổng hợp lại các thông tin cơ bản về phần mềm: yêu cầu hệ thống, hướng dẫn cài đặt, và các chức năng chính hiện có.]]></summary></entry></feed>