Bỏ qua

Phát triển Plugin

Wayward Crown hỗ trợ hệ thống plugin cho phép bạn thêm hoặc ghi đè lớp nhân vật, kẻ thù, công trình và gói ngôn ngữ.


Cấu trúc Plugin

Plugin được đặt dưới dạng thư mục trong thư mục plugins/:

plugins/
└── my_plugin/
    ├── plugin.json           # Siêu dữ liệu plugin (bắt buộc)
    ├── content/
    │   ├── adventurer_classes.json   # Lớp nhân vật tùy chỉnh
    │   ├── enemies.json              # Kẻ thù tùy chỉnh
    │   └── buildings.json            # Công trình tùy chỉnh
    ├── lang/
    │   ├── en.json                   # Bản dịch tiếng Anh
    │   └── zh_TW.json               # Bản dịch tiếng Trung phồn thể
    └── assets/                       # Tài nguyên hình ảnh tùy chỉnh

plugin.json

{
  "id": "my_plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "author": "Author Name",
  "description": "Plugin description"
}

Thứ tự tải

  1. Nội dung lõi (game/content/) được tải trước
  2. Plugin bên ngoài được tải theo thứ tự bảng chữ cái của tên thư mục
  3. Plugin tải sau sẽ ghi đè các mục đã định nghĩa trước đó có cùng ID
  4. Plugin được liệt kê trong plugins/disabled.json sẽ bị bỏ qua hoàn toàn

Lớp nhà phiêu lưu tùy chỉnh

Định nghĩa lớp nhân vật trong content/adventurer_classes.json:

[
  {
    "id": "NINJA",
    "i18n_key": "class_ninja",
    "color": [30, 30, 30],
    "stats": {
      "hp": [35, 80],
      "str": [5, 15],
      "agi": [10, 25],
      "int": [3, 10],
      "lck": [5, 15]
    },
    "desires": {
      "gold": [0.3, 0.8],
      "safety": [0.0, 0.2],
      "glory": [0.5, 1.0],
      "curiosity": [0.3, 0.7]
    },
    "level_up": {
      "primary": "agi",
      "primary_range": [3, 7],
      "secondary": "str",
      "secondary_range": [1, 3]
    },
    "attack_stat": "agi",
    "attack_range": 5,
    "skills": {
      "3": {"id": "shadow_step", "i18n": "advskill_shadow_step", "effect": {"dodge": 0.2}},
      "6": {"id": "poison_blade", "i18n": "advskill_poison_blade", "effect": {"atk_flat": 6}}
    }
  }
]

Ghi đè lớp nhân vật lõi

Sử dụng cùng id với lớp nhân vật lõi (ví dụ: "WARRIOR") sẽ ghi đè định nghĩa lớp nhân vật lõi đó.


Kẻ thù tùy chỉnh

Định nghĩa kẻ thù trong content/enemies.json:

[
  {
    "id": "ORC",
    "i18n_key": "enemy_orc",
    "color": [100, 150, 50],
    "spawn_tile": "MOUNTAIN",
    "danger_level": 3,
    "stats": {
      "hp": 200,
      "attack": 10,
      "defense": 8,
      "speed": 0.8,
      "xp": 50,
      "gold": 25,
      "attack_range": 3,
      "sight_range": 18
    }
  }
]

Công trình tùy chỉnh

Định nghĩa công trình trong content/buildings.json:

[
  {
    "id": "TAVERN",
    "i18n_key": "building_tavern",
    "color": [160, 120, 60],
    "cost": 180,
    "hp": 700,
    "max_level": 2,
    "upgrade_costs": [300],
    "attracts": null,
    "category": "shop"
  }
]

Plugin gói ngôn ngữ

Loại plugin đơn giản nhất — chỉ cần plugin.jsonlang/*.json:

plugins/example_jp/
├── plugin.json
└── lang/
    └── ja.json

Tệp JSON ngôn ngữ sử dụng định dạng khóa-giá trị với hỗ trợ thay thế {placeholder}:

{
  "window_title": "ウェイワード・クラウン",
  "log_defeated_enemy": "{adv}が{enemy}を倒した(金:{gold} XP:{xp})"
}

Bật / Tắt

  • Plugin có thể được bật hoặc tắt từ menu cài đặt trong trò chơi
  • Plugin bị tắt được ghi nhận trong plugins/disabled.json
  • Cần khởi động lại trò chơi sau khi tắt plugin để thay đổi có hiệu lực

Kho plugin từ xa

Trò chơi hỗ trợ tải plugin từ nguồn từ xa:

  • Chỉ mục plugin được lưu trong plugins/repo.json
  • Bạn có thể duyệt và cài đặt plugin từ menu cài đặt
  • Plugin đã tải về sẽ được tự động giải nén vào thư mục plugins/