junoo/nso-auto-capture

Ninja School Online screenshot client package for Laravel.

Maintainers

Package info

github.com/xJunoo/nso-auto-capture

pkg:composer/junoo/nso-auto-capture

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1 2026-06-18 15:48 UTC

This package is auto-updated.

Last update: 2026-06-18 15:53:12 UTC


README

Package Laravel hỗ trợ gửi account Ninja School Online sang worker chụp ảnh và nhận callback ảnh/thông tin nhân vật.

Cài đặt

composer require junoo/nso-auto-capture

Nếu repo private:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "git@github.com:xJunoo/nso-auto-capture.git"
        }
    ],
    "require": {
        "junoo/nso-auto-capture": "^1.0"
    }
}

Publish config:

php artisan vendor:publish --tag=nso-auto-capture-config

.env:

NSO_AUTO_CAPTURE_API_URL=http://api.tungduy.com/api/v1/ninja/capture
NSO_AUTO_CAPTURE_PUSH_ENDPOINT=push-account
NSO_AUTO_CAPTURE_INFO_ENDPOINT=api/get
NSO_AUTO_CAPTURE_TIMEOUT=30

Nếu dùng route web, nhớ thêm callback vào CSRF exception:

protected $except = [
    'nso-auto-capture/callback',
];

Function push

use Junoo\NsoAutoCapture\ScreenshotClient;

$client = app(ScreenshotClient::class);

$result = $client->push([
    'id' => 123,
    'username' => 'ninja-account',
    'password' => 'matkhau-goc',
    'server' => 1,
    'charname' => 'TenNhanVat',
]);

push() mặc định gọi:

POST {NSO_AUTO_CAPTURE_API_URL}/push-account

Payload gửi đi đúng theo module hiện tại:

{
    "callback_url": "https://shop.test/api/capture/nso/callback",
    "charname": "TenNhanVat",
    "id": 123,
    "server": 1,
    "username": "ninja-account",
    "password": "matkhau-goc"
}

Get partner info

$result = app(ScreenshotClient::class)->get();

Package gọi:

GET {NSO_AUTO_CAPTURE_API_URL}/api/get

Callback event

Route callback mặc định:

POST /nso-auto-capture/callback

Function callback

Có thể nhận callback qua route package:

POST /nso-auto-capture/callback

Hoặc gọi trực tiếp trong route/module hiện tại:

use Junoo\NsoAutoCapture\ScreenshotClient;

$result = app(ScreenshotClient::class)->callback($request->all());

callback() normalize payload rồi dispatch event ScreenshotProcessed.

Đăng ký listener trong app/Providers/EventServiceProvider.php:

use App\Listeners\SaveNsoCaptureResult;
use Junoo\NsoAutoCapture\Events\ScreenshotProcessed;

protected $listen = [
    ScreenshotProcessed::class => [
        SaveNsoCaptureResult::class,
    ],
];

Listener mẫu:

namespace App\Listeners;

use Junoo\NsoAutoCapture\Events\ScreenshotProcessed;

class SaveNsoCaptureResult
{
    public function handle(ScreenshotProcessed $event)
    {
        $data = $event->data;

        $accountId = $data['id'] ?? data_get($data, 'data.id');
        $captures = data_get($data, 'data.CAPTURES', []);
        $info = data_get($data, 'data.INFO', []);

        // Lưu ảnh và update GameAccounts tại đây.
    }
}

Payload callback:

{
    "id": 123,
    "username": "ninja-account",
    "status": 1,
    "message": "Thành công",
    "data": {
        "id": 123,
        "CAPTURES": {
            "TRANGBI1": "iVBORw0KGgoAAAANSUhEUg...",
            "THONGTIN1": "iVBORw0KGgoAAAANSUhEUg..."
        },
        "INFO": {
            "CHAR_NAME": "tennhanvat",
            "CHAR_LEVEL": 69,
            "CHAR_CLASS": 6,
            "CHAR_XU": 5000000,
            "CHAR_YEN": 10000000,
            "CHAR_XU_IN_BOX": 0
        }
    }
}