<html lang="fr"><head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <title>zxcmodule — documentation (Garry's Mod)</title>
  <style>
    @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap');
    :root{
      --bg:#0f1724; --card:#0b1220; --muted:#9aa4b2; --accent:#6ee7b7; --glass:rgba(255,255,255,0.03);
      --gap:18px;
    }
    *{box-sizing:border-box;font-family:Inter,system-ui,Segoe UI,Roboto,"Helvetica Neue",Arial;}
    body{margin:0;background:linear-gradient(180deg,#061021 0%,#071229 100%);color:#e6eef6;padding:28px;}
    header{display:flex;align-items:center;gap:16px;margin-bottom:18px}
    header h1{margin:0;font-size:20px}
    header p{margin:0;color:var(--muted);font-size:13px}
    .container{display:grid;grid-template-columns:320px 1fr;gap:20px}
    nav{background:var(--card);border-radius:12px;padding:18px;height:calc(100vh - 128px);overflow:auto}
    nav input{width:100%;padding:10px;border-radius:8px;border:1px solid rgba(255,255,255,0.04);background:var(--glass);color:inherit}
    nav ul{list-style:none;padding:12px 0;margin:0;display:flex;flex-direction:column;gap:6px}
    nav a{display:block;padding:8px 10px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:14px}
    nav a:hover{background:rgba(110,231,183,0.06);color:var(--accent)}
    main{background:linear-gradient(180deg, rgba(255,255,255,0.02), transparent);border-radius:12px;padding:22px;min-height:80vh;overflow:auto}
    section h2{margin-top:6px;margin-bottom:8px;font-size:16px}
    .card{background:rgba(255,255,255,0.02);padding:12px;border-radius:10px;margin-bottom:14px}
    table{width:100%;border-collapse:collapse;font-size:13px}
    th,td{padding:10px 8px;text-align:left;border-bottom:1px solid rgba(255,255,255,0.03)}
    th{color:var(--muted);font-weight:600}
    td.muted{color:var(--muted);font-size:13px}
    .tag{display:inline-block;padding:4px 8px;border-radius:999px;background:rgba(255,255,255,0.02);font-size:12px;color:var(--muted)}
    .note{color:var(--muted);font-size:13px;margin-bottom:12px}
    .sample{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:rgba(255,255,255,0.02);padding:8px;border-radius:8px;font-size:13px;color:#cfeee0}
    footer{margin-top:18px;color:var(--muted);font-size:12px}
    @media (max-width:900px){.container{grid-template-columns:1fr}nav{height:auto}}
  </style>
</head>
<body>
  <header>
    <div>
      <h1>zxcmodule — documentation (client-state cheat module)</h1>
    </div>
    <div style="margin-left:auto;text-align:right">
      <span class="tag">x64 · Client</span>
    </div>
  </header>

  <div class="container">
    <nav>
      <input id="filter" placeholder="Rechercher fonction ou type (ex: number, boolean)">
      <ul id="toc">
        <li><a href="#timing">Fonctions de timing</a></li>
        <li><a href="#network">Fonctions de réseau</a></li>
        <li><a href="#divers">Fonctions diverses</a></li>
        <li><a href="#tickbase">Tickbase shifting</a></li>
        <li><a href="#anim">Fonctions d'animation</a></li>
        <li><a href="#commandes">Fonctions de commande</a></li>
        <li><a href="#prediction">Fonctions de prédiction</a></li>
        <li><a href="#autres">Autres fonctions non catégorisées</a></li>
      </ul>
    </nav>

    <main>
      <section id="timing" class="card">
        <h2>Fonctions de timing</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output (type / valeur)</th></tr></thead>
          <tbody>
            <tr><td>GetCurTime</td><td>—</td><td>number — 27.224998474121</td></tr>
            <tr><td>GetFrameCount</td><td>—</td><td>number — 34569</td></tr>
            <tr><td>GetRealTime</td><td>—</td><td>number — 619.30407714844</td></tr>
            <tr><td>GetServerTime</td><td>usercmd</td><td number="">	number — 319.30407714844</td></tr>
            <tr><td>GetTime</td><td>—</td><td>number — 0.94212478399277</td></tr>
            <tr><td>SetCurTime</td><td>number</td><td>	—</td></tr>
            <tr><td>SetFrameCount</td><td>number</td><td>—</td></tr>
            <tr><td>SetRealTime</td><td>number</td><td>—</td></tr>
          </tbody>
        </table>
      </section>

      <section id="network" class="card">
        <h2>Fonctions de réseau</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output (type / valeur)</th></tr></thead>
          <tbody>
            <tr><td>GetAvgChoke</td><td>number</td><td>number — 0.52941137552261</td></tr>
            <tr><td>GetAvgLatency</td><td>number</td><td>number — 0.042495541274548</td></tr>
            <tr><td>GetAvgLoss</td><td>number</td><td>number — 0</td></tr>
            <tr><td>GetAvgPackets</td><td>number</td><td>number — 41.542682647705</td></tr>
            <tr><td>GetNetAdress</td><td>—</td><td>string — "loopback"</td></tr>
            <tr><td>GetNetBufferSize</td><td>—</td><td>number — 64</td></tr>
            <tr><td>GetNetDataRate</td><td>—</td><td>number — 1048576</td></tr>
            <tr><td>GetNetName</td><td>—</td><td>string — "CLIENT"</td></tr>
            <tr><td>GetNetTime</td><td>—</td><td>number — 621.19689941406</td></tr>
            <tr><td>GetNetTimeConnected</td><td>—</td><td>number — 604.01995849609</td></tr>
            <tr><td>GetPacketBytes</td><td>number</td><td>number</td></tr>
            <tr><td>GetPacketDrop</td><td>—</td><td>number — 480</td></tr>
            <tr><td>GetPacketTime</td><td>number</td><td>number</td></tr>
            <tr><td>NetDisconnect</td><td>string</td><td>—</td></tr>
            <tr><td>NetSetConVar</td><td>string</td><td>—</td></tr>
            <tr><td>NetShutdownStr</td><td>string</td><td>—</td></tr>
            <tr><td>SetDataRate</td><td>number</td><td>—</td></tr>
            <tr><td>SetMaxRoutablePayloadSize</td><td>number</td><td>—</td></tr>
            <tr><td>SetPacketDrop</td><td>number</td><td>—</td></tr>
          </tbody>
        </table>
      </section>

      <section id="divers" class="card">
        <h2>Fonctions diverses</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output (type / valeur)</th></tr></thead>
          <tbody>
            <tr><td>GetClipboardText</td><td>—</td><td>string — "lua_openscript_cl test2"</td></tr>
            <tr><td>GetGameDirectory</td><td>—</td><td>string — "F:\Steam\steamapps\common\GarrysMod\garrysmod"</td></tr>
            <tr><td>GetLocalPlayer</td><td>—</td><td>number — 1</td></tr>
            <tr><td>GetNetworkedVar</td><td>number</td><td>—</td></tr>
            <tr><td>IsBoxInViewCluster</td><td>vector</td><td>—</td></tr>
            <tr><td>IsBoxVisible</td><td>vector</td><td>—</td></tr>
            <tr><td>IsOccluded</td><td>vector</td><td>—</td></tr>
            <tr><td>SetViewAngles</td><td>angle</td><td>—</td></tr>
          </tbody>
        </table>
      </section>

      <section id="tickbase" class="card">
        <h2>Fonctions de tickbase shifting</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output (type / valeur)</th></tr></thead>
          <tbody>
            <tr><td>EnableTickbaseShifting</td><td>boolean</td><td>—</td></tr>
            <tr><td>GetIsShifting</td><td>—</td><td>boolean — false</td></tr>
            <tr><td>SetMaxShift</td><td>number</td><td>—</td></tr>
            <tr><td>SetMinShift</td><td>number</td><td>—</td></tr>
            <tr><td>StartShifting</td><td>boolean</td><td>—</td></tr>
            <tr><td>GetCurrentCharge</td><td>—</td><td>number — 0</td></tr>
            <tr><td>GetIsCharging</td><td>—</td><td>boolean — false</td></tr>
            <tr><td>StartRecharging</td><td>boolean</td><td>—</td></tr>
          </tbody>
        </table>
      </section>

      <section id="anim" class="card">
        <h2>Fonctions d'animation</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output / note</th></tr></thead>
          <tbody>
            <tr><td>AllowAnimationUpdate</td><td>boolean</td><td>—</td></tr>
            <tr><td>EnableAnimFix</td><td>boolean</td><td>—</td></tr>
            <tr><td>EnableBoneFix</td><td>boolean</td><td>—</td></tr>
            <tr><td>UpdateAnimations</td><td>number</td><td>—</td></tr>
            <tr><td>UpdateClientAnimation</td><td>number</td><td>—</td></tr>
            <tr><td>GetCurrentLowerBodyYaw</td><td>number</td><td>—</td></tr>
            <tr><td>GetTargetLowerBodyYaw</td><td>number</td><td>—</td></tr>
            <tr><td>SetCurrentLowerBodyYaw</td><td>number</td><td>—</td></tr>
            <tr><td>SetTargetLowerBodyYaw</td><td>number</td><td>—</td></tr>
          </tbody>
        </table>
      </section>

      <section id="commandes" class="card">
        <h2>Fonctions de commande</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output / note</th></tr></thead>
          <tbody>
            <tr><td>ClientCmd</td><td>string</td><td>—</td></tr>
            <tr><td>ClientCmdUnrestricted</td><td>string</td><td>—</td></tr>
            <tr><td>ExecuteClientCmd</td><td>string</td><td>—</td></tr>
            <tr><td>RawClientCmdUnrestricted</td><td>string</td><td>—</td></tr>
            <tr><td>ServerCmd</td><td>string</td><td>—</td></tr>
            <tr><td>ConVarSetValue</td><td>string</td><td>—</td></tr>
            <tr><td>ConVarSetFlags</td><td>string</td><td>—</td></tr>
            <tr><td>SpoofConVar</td><td>string</td><td>—</td></tr>
            <tr><td>SpoofedConVarSetNumber</td><td>string</td><td>—</td></tr>
          </tbody>
        </table>
      </section>

      <section id="prediction" class="card">
        <h2>Fonctions de prédiction / simulation</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output / note</th></tr></thead>
          <tbody>
            <tr><td>GetAbsFrameTime</td><td>—</td><td>number — 0.052620399743319</td></tr>
            <tr><td>GetFrameTime</td><td>—</td><td>number — 0</td></tr>
            <tr><td>GetInterpoloationAmount</td><td>—</td><td>number — 0.82225805521011</td></tr>
            <tr><td>SetAbsFrameTime</td><td>number</td><td>—</td></tr>
            <tr><td>SetFrameTime</td><td>number</td><td>—</td></tr>
            <tr><td>SetInterpoloationAmount</td><td>number</td><td>—</td></tr>
            <tr><td>StartPrediction</td><td>usercmd</td><td>—</td></tr>
            <tr><td>FinishPrediction</td><td>—</td><td>nil</td></tr>
            <tr><td>StartSimulation</td><td>number</td><td>—</td></tr>
            <tr><td>FinishSimulation</td><td>—</td><td>nil</td></tr>
            <tr><td>EditSimulationData</td><td>table</td><td>—</td></tr>
            <tr><td>GetSimulationData</td><td>—</td><td>table</td></tr>
            <tr><td>SimulateTick</td><td>—</td><td>nil</td></tr>
          </tbody>
        </table>
      </section>

      <section id="autres" class="card">
        <h2>Autres fonctions non catégorisées (sélection)</h2>
        <table>
          <thead><tr><th>Fonction</th><th>Input attendu</th><th>Output / note</th></tr></thead>
          <tbody>
            <tr><td>PushSpecial</td><td>number</td><td>—</td></tr>
            <tr><td>GetSequenceNrFlow</td><td>number</td><td>—</td></tr>
            <tr><td>ExcludeFromCapture</td><td>boolean</td><td>—</td></tr>
            <tr><td>RequestFile / SendFile</td><td>string</td><td>—</td></tr>
            <tr><td>SetRemoteFramerate</td><td>number</td><td>—</td></tr>
            <tr><td>GetIsLoopback</td><td>—</td><td>boolean — true</td></tr>
            <tr><td>SetBSendPacket</td><td>boolean</td><td>—</td></tr>
            <tr><td>SetEntityFlags</td><td>number</td><td>—</td></tr>
            <tr><td>SetRestrictServerCommands</td><td>boolean</td><td>—</td></tr>
            <tr><td>SetLastOutgoingCommand / SetCommandNumber / SetCommandTick</td><td>usercmd / number</td><td>—</td></tr>
            <tr><td>GetOutSequenceNr / GetOutSequenceNrAck / GetInSequenceNr</td><td>—</td><td>number — 40121 / 40120 / 22077</td></tr>
            <tr><td>GetLastCommandAck</td><td>—</td><td>number — 32453</td></tr>
            <tr><td>GetPacketDrop</td><td>—</td><td>number — 480</td></tr>
            <tr><td>GetInReliableState / GetOutReliableState</td><td>—</td><td>number — 1 / 0</td></tr>
            <tr><td>GetNetChokedPackets / GetChokedCommands</td><td>—</td><td>number — 0 / 0</td></tr>
          </tbody>
        </table>
      </section>
    </main>
  </div>

  <script>
    const filter = document.getElementById('filter');
    filter.addEventListener('input', ()=> {
      const q = filter.value.trim().toLowerCase();
      document.querySelectorAll('table tbody tr').forEach(row=>{
        const txt = row.textContent.toLowerCase();
        row.style.display = q === '' || txt.indexOf(q) !== -1 ? '' : 'none';
      });
    });
  </script>

</body></html>