Subscriptions & Features
แพ็ก Full vs Lite ต่อคีย์ — เซิร์ฟส่ง level + features หลัง login/license/check · SDK HasFeature ใช้ grant นี้โดยตรง
if (name == "Premium") ให้ถาม HasFeature("inject") หรืออ่าน info.all_featuresโมเดล
- แต่ละ Subscription ใน Panel มี level (ตัวเลข) และ features (whitelist)
- All functions (ว่าง /
null/["*"]) = ทุกฟังก์ชัน — คีย์ Default เก่าทำงานเหมือนเดิม []= ไม่มีฟีเจอร์เพิ่ม ·["loader","menu"]= เฉพาะรายการ- ผู้ใช้ถือหลายแพ็กที่ยังไม่หมดอายุ = union · แพ็กใดเป็น all ชนะทั้งหมด ·
levelใช้ค่าสูงสุด
Response shape
หลัง login / license (v1 และ v2) และหลัง check เมื่อ session ผ่าน:
{
"info": {
"username": "player1",
"level": 2,
"features": ["loader", "menu"],
"all_features": false,
"subscriptions": [
{
"subscription": "Lite",
"expiry": "2026-12-01 00:00:00",
"level": 1,
"features": ["loader"],
"all": false
}
]
},
"level": 2,
"features": ["loader", "menu"],
"all_features": false
}check ใส่ level / features / all_features ทั้งใน info และ top-level — SDK อ่านได้ทั้งสองที่
HasFeature ใน SDK
- ถ้าชื่ออยู่ใน app entitlements จาก
init/check(var,ops, …) → ใช้ boolean นั้น - ไม่เช่นนั้นถ้า
all_features→true - ไม่เช่นนั้นถ้าชื่ออยู่ใน
features(lowercase) →true - นอกนั้น →
false
if (!la_auth::HasFeature("inject")) return;
int lv = la_auth::LicenseLevel();if (!Authority.HasFeature("inject")) return;
int lv = Authority.LicenseLevel();if (!Authority::HasFeature('inject')) return;
$lv = Authority::LicenseLevel();Login/license ของ Protocol v2 เรียก ApplySubGrant อัตโนมัติ · heartbeat check อัปเดต grant ซ้ำ
HasFeature ของชื่อแพ็กคืน false จนกว่า SessionGate.MarkLicensed — กันข้ามหน้า login แล้วยังเรียก inject ได้
type=feature (Protocol v2)
เมื่อ session มี user_id เซิร์ฟตรวจ SubCore::HasFeature ก่อน — ไม่ผ่านได้ HTTP 403 Feature not entitled จากนั้นถึงคิว app entitlement ถ้ามีคีย์นั้นในแผนแอป
หลัง license เรียก SessionGate.RequireFeatureOrDie(client, "inject") — SDK ขอ type=feature แล้วเก็บ feature_token (TTL 60s). เปิด Panel Require Feature Ack แล้วเรียก FeatureAck เมื่อใช้สิทธิ์แล้ว
Panel
แอป → Subscriptions · คอลัมน์ Features · Add/Edit: ชิป loader inject spoof menu premium files chat หรือพิมพ์ชื่อเอง · ติ๊ก All functions = Full
ผูกคีย์กับแพ็กตอนสร้างคีย์ (ไม่ใช่แก้สตริงใน loader)
Seller API
addsub— ส่งfeaturesเป็น JSON array, CSV, หรือ*สำหรับ allfetchsubs— แต่ละแถวมีfeatures- คีย์ —
subscription+featuresจากแพ็กที่ผูก