Статья

TEKKENSCRIPT — S2 Edition Release Notes - Tekkenscript

TEKKENSCRIPT — S2 Edition Release Notes is the official release document for the TekkenScript S2 update. It summarizes key changes and usage notes, including required launcher (injector) updates, S2-exclusive features, engine and scripting improvements, stability fixes, and the developer-script licensing workflow. This is the initial public release; some scripts are still being refined and will continue to be improved in upcoming updates.

Release note:

This is the initial public release. Some scripts are still being refined, and we will continue improving them in future updates.


IMPORTANT — UPDATE THE LAUNCHER (INJECTOR) THIS RELEASE

-------------------------------------------------------

This build updates BOTH components. You must update the injector (launcher), not only engine.dll.


 • Use “Check for Updates” in the launcher, or install the latest TekkenScript package.

 • Replace inject.exe together with engine.dll in your launcher folder.

 • If engine.dll is missing after update, restore it from antivirus quarantine or re-run Check for Updates.


Why the injector matters this time:

 • New UI, languages, auto-inject, anti-screenshot, and Lua IDE live in the injector.

 • Startup/login and first-window rendering were reworked (fixes white screen and UI lag).

 • S2 cloud config sync is managed from the injector settings page.


After updating, restart the launcher once so auto-inject and language settings reload correctly.



INJECTOR (LAUNCHER) — NEW & IMPROVED

------------------------------------

 • Redesigned launcher UI.

 • Multi-language support (switch language in settings).

 • Auto-inject: keep the launcher running; no need to reopen it for each game session.

 • Anti-screenshot / capture protection: overlay can be excluded from OBS and similar capture tools (WDA_EXCLUDEFROMCAPTURE).

 • In-game menu uses anti-screenshot by default (same protection model as the launcher).

 • Built-in Lua script editor (S2 license required).

 • S2 cloud config: save/load your client settings to the cloud (auto-fetch once per login session).

 • Improved false-positive handling with antivirus (engine.dll delivery / update flow).

 • Faster startup: non-blocking login, deferred heavy UI refresh, no blocking DNS at launch.



S2 EXCLUSIVE — ENGINE & SCRIPTS

-------------------------------

Unlocks & cosmetics

 • Unlock all costumes (character / avatar / player / jukebox-related custom items, including shop & DLC / Fight Pass entries where supported locally).

 • Local shop item availability unlock.

 • Rank frame local unlock is now a SEPARATE toggle (“Shop / rank frame local unlock”) — no longer tied to “Unlock all costumes”.

  - Uses dedicated ShopItemAvailable hooks; persisted as shopItemAvailableLocalUnlock in config.json.

  - Lets you equip rank frames locally without enabling full costume unlock.

  - Some frames may still fail server validation — use default frames if sync errors appear.

 • Requires S2 license (IsS2EditionFlag). “Unlock all costumes” also enables save integrity bypass automatically.


Online match automation (S2 only) — NEW MODULE

 • Full UE SDK automation module (match_automation.cpp): runs every menu frame via TickMatchAutomation().

 • Auto-accept VS dialog (ranked / quick match confirm).

 • Auto-accept Player Match lobby confirm (Cosmos ID aware).

 • Auto rematch on result screen: ResultNew widget → SetRematchStatus → InvokeSelect/Decide.

 • Each ResultNew instance requests rematch only once (prevents spam / double-confirm).

 • If the opponent leaves or declines rematch, automatically calls AnywhereMatchingStart() to return to matchmaking wait (queue recovery).

 • Menu toggles (Settings page, S2 only):

  - Auto accept match (autoAcceptMatch)

  - Auto rematch (autoRematch)

  - Match automation debug log (matchAutoDebug) — writes to Load Console / DebugView with [match_auto] prefix.

 • All three settings persist in config.json; disabled automatically for non-S2 licenses.

 • SEH-safe ProcessEvent wrappers to avoid crashes when UE widgets are mid-transition.


Evasion script (S2)

 • New “Evasion” script: UE world-coordinate sidestep dodging with geometry-aware positioning.

 • Per-character MoveID adaptive learning (Evasion.learn.json).

 • S2-only sidestep evasion using real attack limb / HitBox positions via bone world queries.

 • New Lua helper getEvasionState(): returns stage bounds, wall list, fighter positions, nearest-wall distance, back-to-wall flag, directional clearance rays (left/right/forward/back), and inter-fighter distance — built on TryGetRadarSnapshot().


Cloud & VIP

 • S2 cloud configuration sync (injector UI).

 • S2 VIP script pack (in development).


Developer / paid scripts — NEW

 • Developer Center: paid script licensing flow for third-party script authors.

 • New dev_license module (dev_license.cpp):

  - Server verify via /api/v1/dev/verify with device-bound encrypted disk cache (script\licenses\*.lic).

  - In-memory cache survives lua_State rebuild on character reload (avoids repeated auth popups during T8 rank calibration).

  - One-time license-code ImGui modal (RenderPendingPrompt): shows server-fetched script name/description, async verify, auto-close on success.

  - Rendered every frame BEFORE script-load early return so the prompt stays visible during reload.

 • Encrypted .luae script loader:

  - Custom package.loaders entry decrypts TKLE blobs (AES-256-CBC + HMAC) using per-script script_secret.

  - Locked modules fail with a clear “[luae] locked: verifyDeveloperScript required” error until verified.

 • New Lua APIs:

  - verifyDeveloperScript(scriptKey [, displayName [, displayDesc]])

  - isDeveloperScriptVerified(scriptKey)

 • devlicense::Init() wired on engine startup (script_hook.cpp + dllmain.cpp standalone build).



GENERAL — ENGINE (S1 & S2)

--------------------------

Overlays & visuals

 • FOV / aspect ratio changer (wider FOV, optional aspect unlock).

 • Skeleton overlay and foot-position circles for distance / spacing reference.

 • Combat minimap: player positions, stage walls, breakable wall HP/state, draggable panel, debug readouts.

 • Minimap positioning overhaul:

  - Uses ImGui main viewport origin/size (correct on multi-monitor and DPI scaling).

  - Default anchor: top-right flush (6 px inset); position persists in config.json.

  - Auto re-snaps when saved position is stale after resolution/DPI change (detects old 24 px margin layout).

 • Minimap debug mode (minimapDebug toggle + config persistence):

  - Footer shows per-fighter distance to nearest wall and distance to stage edge (world units).

 • Minimap wall interaction:

  - Hover highlight with pulsing outline on the wall under the cursor.

  - Tooltip shows wall name, breakable state, and HP.

  - Right-click context menu on hovered wall → copy actor name to clipboard (useful for stage research / script tuning).

 • HLSL-based advantage frame overlay; frame numbers follow the fighter (fixed offset drift vs. character position).


Lua / UE SDK

 • Expanded UE battle data for scripts: radar snapshot, bone world positions, bone-by-name lookup, overlay-ready coordinates.

 • Four new bone-based attack queries to identify which body part initiated an attack.

 • New Lua APIs:

  - getGameFrameCount() — exposes engine frame counter (g_FrameCount).

  - getFighterBoneWorld(slot, nameSub) — substring bone lookup (case-insensitive), 1-based slot.

  - getFighterBoneWorlds(slot) — bulk bone name + world coordinate table.

  - getEvasionState() — full evasion geometry snapshot (see S2 Evasion section).

 • Thread-safe bone snapshot cache (RefreshBoneSnapshotCache):

  - Mesh / ProcessEvent bone queries run ONLY on the battle-frame hook thread.

  - Overlay draw and Lua read a locked cache — no cross-thread UE calls (prevents random crashes).

 • RadarWall now includes cz / halfZ for fuller 3D collision bounds during wall collection.

 • Fixed opponent info panel error (r.size / empty table display).

 • Fixed opponent name display:

  - Player names read as UE5 FString (ReadFString) instead of raw C-string (fixes garbled names when pointer chain is not ready).

  - IsPlausiblePlayerName() filters garbage reads (JSON error fragments, control chars, “which is”, “.size”, etc.).

  - Steam ID change clears cached opponent name/character to force refresh.

  - Panel shows “-” when name is invalid instead of leaking memory junk.

 • Fixed Lua print() UTF-8 handling: no longer routes through stu/ACP conversion — Chinese script logs display correctly in console and ImGui.

 • CoreMenuAPI / SDK site refresh with Lua function reference and samples.

 • Standalone engine.exe stub coverage expanded (ue_stubs.cpp): match automation, bone APIs, IsBattleActive, IsOverlaySdkReady, TryGetRadarSnapshot, RefreshBoneSnapshotCache — non-inject builds link cleanly.


Scripts & tools

 • Guard 2.0 sample updated with multi-language (i18n) template (guard_i18n.lua).

 • Character confirm / whiff-punish routines updated with randomized timing (reduces fixed-pattern repeats and multi-input bugs).

 • Tekken Feng script (major update):

  - Randomized punish selection: multiple punish options per frame tier (10f / 13f / 15f / 16f / 21f / 24f+).

  - Configurable “Punish Randomizer (%)” and “Max Random Punish Delay (frames)” in script menu.

  - Per-step frame jitter (randFrames) and random startup delay to reduce predictable patterns.

  - Fixed broken auto-combo hotkeys: full async macro sequences (queueCombo) instead of incomplete onTick continuations.

   Standard combo: uf+4 → df+4,3 → df+4,2 → Heat(f,f,1+2,f) → uf+3 → b+1+2.

  - Uses engine isCounterAttackPossible() directly (no extra Lua-side block checks that previously broke counterattacks).

 • Auto Tool recorder: more accurate capture; printed output can be used directly.



BUG FIXES & STABILITY

---------------------

 • Fixed injection / hook crashes on Windows 11 and some high-end GPUs (D3D12 Present path, GPU resource lifetime).

 • Fixed advantage-frame HUD misalignment (now tracks character screen position).

 • Fixed menu flicker while scripts run (Lua state machine / menu draw interaction).

 • Fixed script execution randomly stopping due to unhandled Lua errors (errors are caught and logged).

 • Script tick priority raised so automation stays responsive under load.

 • Injector: white screen on first open, UI stutter, blocking login, and IDE refresh lag.

 • Fixed isCounterAttackPossible() returning false for all punish windows after an overly strict rewrite; restored original block-state / ActionTime / RecoveryTime dual-path logic (ComplexMoveState == 11, ±7f recovery window, ActionTime <= 0 fallback).

 • Fixed duplicate counterattack inputs: isCounterAttackPossible() now deduplicates per frame-advantage event (g_localFrameAdvantageSeq) so onTick scripts fire once per block instead of every frame inside the punish window.

 • Fixed S2 license login double-submit: atomic g_isLoggingIn guard + dedicated RenderLicensePopup modal (DPI-scaled, styled header, inline success/error feedback).

 • Fixed feedback tab double-submit and missing login gate: requires S2 login, disables fields when logged out, shows server error messages inline, clears form only on success.

 • Fixed popups disappearing during script reload: developer auth prompt, S2 license popup, and match automation tick now run at the top of menuDraw() before g_loadover early return.

 • Fixed opponent name garbling when FString pointer was not ready (ReadFString + validation filter).

 • Fixed Lua console / ImGui garbled Chinese in print() output (removed ACP round-trip).



NOTES

-----

 • Rank frame local edit: if the server reports data validation failure, switch unavailable frames back to default and keep “save integrity bypass” enabled when using local unlocks.

 • Match automation, costume unlock, cloud config, Lua IDE, and developer script licensing require an active S2 license.

 • Developer scripts: call verifyDeveloperScript() once at script load; .luae modules stay locked until verified. Cached license survives character swap within the same session.

 • Match automation debug: enable “Match auto debug” in Settings, then watch Load Console or DebugView for lines starting with [match_auto].

 • S1 users receive engine improvements (FOV, overlays, SDK, stability, opponent name fix, isCounterAttackPossible dedup) but not S2-only features listed above.