Gói nhiệm vụ

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Gói tính năng Nhiệm vụ cung cấp chức năng sẵn có để tạo ra các nhiệm vụ mà người chơi có thể hoàn thành để đạt được phần thưởng và tiến bộ trong trò chơi của bạn. Tất cả các nhiệm vụ phải có một ID, danh mục và một danh sách các nhiệm vụ mà người chơi phải hoàn thành để hoàn tất nhiệm vụ. Tuy nhiên, danh sách nhiệm vụ có thể trống, cho phép phần thưởng của nhiệm vụ được nhận ngay lập tức.

Sử dụng các tùy chọn tùy chỉnh của gói, bạn có thể cá nhân hóa tất cả các nhiệm vụ để đáp ứng các yêu cầu gameplay độc đáo của bạn, chẳng hạn như:

  • Tạo ra các nhiệm vụ để hướng dẫn người chơi mới vào trò chơi của bạn và cải thiện tỷ lệ giữ chân D1.
  • Nhắm đến tỷ lệ giữ chân D7 và D30 bằng cách thêm các mục tiêu trung hạn đến dài hạn và cảm giác tiến bộ.
  • Tăng cường sự tham gia bằng cách làm nổi bật các hệ thống khác nhau trong trò chơi của bạn và thưởng cho người chơi khi tương tác với chúng.

Nhận gói

Cửa hàng Tạo là một tab của Toolbox mà bạn có thể sử dụng để tìm tất cả các tài sản được tạo bởi Roblox và cộng đồng Roblox để sử dụng trong các dự án của bạn, bao gồm mô hình, hình ảnh, mesh, âm thanh, plugin, video và tài sản phông chữ. Bạn có thể sử dụng Cửa hàng Tạo để thêm một hoặc nhiều tài sản trực tiếp vào một trò chơi đang mở, bao gồm cả các gói tính năng!

Mỗi gói tính năng yêu cầu gói tính năng Core để hoạt động đúng cách. Khi các tài sản gói CoreNhiệm vụ có trong kho của bạn, bạn có thể tái sử dụng chúng trong bất kỳ dự án nào trên nền tảng.

Để đưa các gói từ kho của bạn vào trò chơi:

  1. Từ menu Cửa sổ của Studio hoặc thanh công cụ tab Trang chủ, mở Toolbox.

  2. Trong cửa sổ Toolbox, nhấp vào tab Kho. Phân loại Mô hình của tôi sẽ hiển thị.

    Cửa sổ Toolbox của Studio với tab Kho được làm nổi bật.
  3. Nhấp vào ô Gói Tính Năng Core, sau đó nhấp vào ô Gói Tính Năng Nhiệm Vụ. Cả hai thư mục gói sẽ hiển thị trong cửa sổ Explorer.

  4. Kéo các thư mục gói vào ReplicatedStorage.

Định nghĩa nhiệm vụ

Mỗi nhiệm vụ có thể hoàn thành bao gồm một tập hợp các nhiệm vụ phải được hoàn thành để hoàn tất nhiệm vụ, các tùy chọn cấu hình và siêu dữ liệu hiển thị tùy chọn, tất cả đều có thể được định nghĩa trong ReplicatedStorage.Missions.Configs.Missions, với các loại được xuất từ script Types trong cùng thư mục.

Các trường bắt buộc

Các trường sau là bắt buộc cho mỗi nhiệm vụ.

TênLoạiMô tả
missionIdstringKhóa chính của bảng Nhiệm vụ. Tất cả các nhiệm vụ được xác định bằng chuỗi duy nhất của riêng chúng.
categoryIdstringCác nhiệm vụ phải thuộc về một danh mục, và được nhóm theo danh mục trong giao diện người dùng.
taskstableMột danh sách các nhiệm vụ mà người chơi phải hoàn thành để hoàn tất nhiệm vụ.

Điều kiện mở khóa

Theo mặc định, các nhiệm vụ được mở khóa cho người chơi tự động và có thể được hoàn thành đúng một lần. Tuy nhiên, bạn có thể sử dụng các tùy chọn cấu hình tùy chọn sau để thay đổi hành vi này.

TênLoạiMô tả
prerequisitestableMột danh sách các missionIds khác phải được hoàn thành trước khi nhiệm vụ có thể được mở khóa.
manualOnlyboolVô hiệu hóa việc mở khóa tự động của nhiệm vụ. Thay vào đó, một hàm phải được gọi để mở khóa nhiệm vụ. Bất kỳ điều kiện mở khóa nào khác cũng phải được đáp ứng.
availableAfterUtcboolNhiệm vụ không thể được mở khóa trước thời gian chỉ định theo UTC.
availableBeforeUtcboolNhiệm vụ không thể được mở khóa sau thời gian chỉ định theo UTC. Nếu nó được mở khóa nhưng không hoàn thành trước thời gian này, nhiệm vụ sẽ bị thất bại.
repeatableboolNhiệm vụ sẽ được mở khóa lại sau khi nó được hoàn thành.
repeatLimitnumberNếu nhiệm vụ có thể lặp lại, nó không thể được lặp lại nhiều hơn số lần này.
repeatCooldownSecondsnumberNếu nhiệm vụ có thể lặp lại, sẽ có một khoảng thời gian trước khi nó được mở khóa.
expireSecondsnumberNếu nhiệm vụ được mở khóa và không hoàn thành trong số giây chỉ định, thì nó sẽ thất bại thay vào đó.
expireCountOfflineboolNếu nhiệm vụ có expireSecondsexpireCountOffline được đặt thành true, thời gian khi người chơi không thực sự trong trò chơi sẽ được tính vào thời gian hết hạn nhiệm vụ.

Siêu dữ liệu

Các nhiệm vụ có siêu dữ liệu xác định cách chúng sẽ được hiển thị trong giao diện người dùng Nhiệm vụ. Bạn có thể sử dụng các trường tùy chọn sau để tùy chỉnh siêu dữ liệu của nó.

TênLoạiMô tả
displayNamestringTên hiển thị cho nhiệm vụ trong giao diện người dùng thay vì missionId.
descriptionstringMột khối văn bản dài hơn cung cấp thông tin hoặc ngữ cảnh bổ sung về nhiệm vụ.
visibleAfterCompleteboolNếu được đặt thành true, nhiệm vụ sẽ xuất hiện trong danh sách các nhiệm vụ ngay cả sau khi nó đã hoàn thành nhưng được đánh dấu là đã hoàn thành.
visibleAfterFailedboolNếu được đặt thành true, nhiệm vụ sẽ xuất hiện trong danh sách các nhiệm vụ ngay cả sau khi nó đã thất bại nhưng được đánh dấu là đã thất bại.
visibleBeforeUnlockedboolNếu được đặt thành true, nhiệm vụ sẽ hiển thị nhưng bị khóa trong danh sách các nhiệm vụ trước khi có sẵn để hoàn thành.
invisibleWhileActiveboolNếu được đặt thành true, nhiệm vụ sẽ không hiển thị ngay cả khi đang trong quá trình thực hiện.
rewardstableMột danh sách thông tin hiển thị phần thưởng.
  • assetID (number) - ID hình ảnh hiển thị trong giao diện người dùng nhiệm vụ dưới phần thưởng cho một nhiệm vụ. Điều này là bắt buộc nếu có phần thưởng.
  • displayName (string) - Tên hiển thị trong giao diện người dùng nhiệm vụ dưới biểu tượng.

Định nghĩa nhiệm vụ

Mỗi nhiệm vụ có thể có không hoặc nhiều nhiệm vụ. Nếu một nhiệm vụ có không nhiệm vụ nào, nó có thể được nhận ngay sau khi nó được mở khóa; nếu một nhiệm vụ có một hoặc nhiều nhiệm vụ, khi các nhiệm vụ hoàn thành, người chơi có thể thu thập bất kỳ phần thưởng nào liên quan đến nhiệm vụ. Mỗi nhiệm vụ có một taskId, là khóa liên kết với nhiệm vụ cho một nhiệm vụ nhất định.

Nhiệm vụ có hai loại:

  • Nhiệm vụ Thời gian - Cho phép bạn bắt đầu và dừng nhiệm vụ tại các thời điểm khác nhau. Một khoảng thời gian nhất định phải trôi qua trong khi bộ đếm thời gian của nhiệm vụ đang chạy, sau đó nhiệm vụ sẽ hoàn thành.
  • Nhiệm vụ Đếm - Cho phép bạn thêm vào hoặc đặt tiến độ của nhiệm vụ. Khi tiến độ đạt đến một giá trị nhất định, nhiệm vụ sẽ hoàn thành.

Cả hai loại nhiệm vụ đều chia sẻ các trường sau:

TênLoạiMô tả
taskTypestringXác định xem loại nhiệm vụ là đếm hay thời gian.
counterobject(Tùy chọn) Bộ đếm mà nhiệm vụ này theo dõi. Các bộ đếm là lưu trữ bền vững cụ thể cho người chơi cho một số hoặc một bộ đếm thời gian. Nhiều nhiệm vụ có thể theo dõi một bộ đếm duy nhất; ví dụ, nếu có nhiều nhiệm vụ theo dõi số lượng xu mà người chơi đã thu thập, thì tất cả chúng có thể chia sẻ cùng một bộ đếm “xu”. Các nhiệm vụ này có thể theo dõi độc lập số xu mới thu thập, bắt đầu từ không, hoặc tiếp tục đếm từ giá trị bộ đếm (tất cả các xu đã thu thập).
  • counterId (string) - ID của bộ đếm cần được theo dõi. Sử dụng ID này để lấy hoặc đặt giá trị của bộ đếm.
  • continueFromCounter (Tùy chọn bool) - Nếu được đặt thành true, tiến độ nhiệm vụ sẽ trực tiếp khớp với giá trị của bộ đếm thay vì số lượng mà nó đã tăng lên.
metadataobject(Tùy chọn) Thông tin về cách nhiệm vụ hiển thị trong giao diện người dùng.
  • displayName (string) - Tên của nhiệm vụ, được sử dụng khi hiển thị trong giao diện người dùng.
  • numericType (Tùy chọn string) - cách số tiến độ trong nhiệm vụ nên được hiển thị.
    • Phân số, ví dụ: 5/10 hoặc 5k/50k
    • Phần trăm, ví dụ: 50% hoặc 10%
    • Phân số dài, ví dụ: 5/10 hoặc 5000/50000
    • Boolean, ví dụ: Chưa hoàn thành
callToActionobject(Tùy chọn) Một nút kích hoạt một hàm callback.
  • callback (function) - Hàm được kích hoạt bởi nút callToAction.
  • buttonText (string) - Văn bản hiển thị trong giao diện nút.

Các trường nhiệm vụ đếm

Nhiệm vụ đếm có một giá trị bắt buộc. Khi tiến độ nhiệm vụ đạt đến số lượng này, nhiệm vụ sẽ hoàn thành.

TênLoạiMô tả
goalCountnumber(Tùy chọn) Tiến độ cần thiết để hoàn thành nhiệm vụ.

Các trường nhiệm vụ thời gian

Nhiệm vụ thời gian có một khoảng thời gian mục tiêu cần chi tiêu, và được bắt đầu và dừng. Khi khoảng thời gian mục tiêu được đáp ứng, nhiệm vụ sẽ hoàn thành.

TênLoạiMô tả
goalSecondsnumberSố giây phải trôi qua để hoàn thành nhiệm vụ.
startImmediatelyboolNếu nhiệm vụ nên bắt đầu đếm thời gian ngay khi nó được mở khóa, thay vì chỉ sau khi nó được bắt đầu.
includesOfflineTimeboolNếu nhiệm vụ nên bao gồm thời gian chi tiêu khi người chơi không hoạt động trong trò chơi.

Cấu hình danh mục

Các danh mục không cần phải được định nghĩa rõ ràng để được sử dụng, vì danh mục cho một nhiệm vụ có các giá trị mặc định sẽ được sử dụng. Tuy nhiên, bạn có thể cấu hình các giá trị này trong ReplicatedStorage.Missions.Configs.Categories để thêm các hiệu ứng bổ sung cho danh mục. Các danh mục được xác định bằng các CategoryIds duy nhất, giống như những cái được tham chiếu trong cấu hình nhiệm vụ.

TênLoạiMô tả
repeatDelaySecondsnumber(Tùy chọn) Nếu được đặt, tất cả các nhiệm vụ trong danh mục sẽ được đặt lại mỗi khi khoảng thời gian chỉ định trôi qua, và có thể được mở khóa, hoàn thành và nhận phần thưởng của chúng một lần nữa. Điều này tách biệt với các nhiệm vụ có thể lặp lại, mà có thể lặp lại trong một danh mục lặp lại nhất định.

Tích hợp logic máy chủ

Hãy xem ReplicatedStorage.Missions.Server.Examples.MissionsExample, cho thấy cách máy chủ của bạn sẽ tương tác với gói tính năng Nhiệm vụ.

Bạn chủ yếu cần kết nối bốn điều khiển khi kéo gói tính năng Nhiệm vụ vào trò chơi của bạn:

  1. Định nghĩa các nhiệm vụ trong cấu hình nhiệm vụ của bạn.

  2. Thêm logic vào trò chơi của bạn để cập nhật tiến độ nhiệm vụ hoặc các bộ đếm mà tiến độ được liên kết.

    README
    -- Tăng tiến độ trên một nhiệm vụ Nhảy với một nhiệm vụ Nhảy
    Missions.addProgressToTask(player, "Nhảy", "Nhảy", 1)
    -- Bắt đầu bộ đếm thời gian trên một nhiệm vụ Thời gian Chiến đấu với một nhiệm vụ Thời gian trong Trận chiến
    Missions.startTimedTask(player, "Thời gian Chiến đấu", "Thời gian trong Trận chiến")
    -- Dừng bộ đếm thời gian trên một nhiệm vụ Thời gian Chiến đấu với một nhiệm vụ Thời gian trong Trận chiến
    Missions.stopTimedTask(player, "Thời gian Chiến đấu", "Thời gian trong Trận chiến")
    -- Tăng tiến độ trên tất cả các nhiệm vụ liên kết với bộ đếm Nhảy
    CounterSystem.addCounter(player, "Nhảy", 1)
    -- Bắt đầu bộ đếm thời gian trên tất cả các nhiệm vụ thời gian liên kết với bộ đếm thời gian trong Trận chiến
    CounterSystem.startTimer(player, "Thời gian trong Trận chiến")
    -- Dừng bộ đếm thời gian trên tất cả các nhiệm vụ thời gian liên kết với bộ đếm thời gian trong Trận chiến
    CounterSystem.stopTimer(player, "Thời gian trong Trận chiến")
  3. Đặt các trình xử lý hoàn thành nhiệm vụ, và tùy chọn các trình xử lý mở khóa hoặc thất bại. Sử dụng trình xử lý hoàn thành để thưởng cho người chơi phần thưởng từ nhiệm vụ trong trò chơi của bạn.

    README
    local function completeHandler(player: Player, missionId: Types.MissionId)
    print(`{player} đã hoàn thành nhiệm vụ {missionId}`)
    -- Thưởng cho người chơi phần thưởng của họ.
    end
    Missions.setCompletionHandler(missionId, completeHandler)
  4. Mở khóa các nhiệm vụ không được mở khóa tự động. Logic gói tính năng Nhiệm vụ đảm bảo rằng tất cả các yêu cầu nhiệm vụ được đáp ứng trước khi nhiệm vụ hoàn thành, và phần thưởng của nó có thể được thu thập.

    README
    Missions.unlockMission(player, "Thủ công")

Cấu hình hằng số

Các hằng số cho gói tính năng Core sống trong hai vị trí:

  • Các hằng số chung sống trong ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.

  • Các hằng số cụ thể cho gói, trong trường hợp này là gói tính năng Nhiệm vụ, sống trong ReplicatedStorage.Missions.Configs.Constants.

Ngoài ra, bạn có thể tìm thấy các chuỗi để dịch được phân tách thành một vị trí: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

Tùy chỉnh các thành phần UI

Bằng cách sửa đổi các đối tượng gói, chẳng hạn như màu sắc, phông chữ và độ trong suốt, bạn có thể điều chỉnh cách trình bày hình ảnh của giao diện người dùng nhiệm vụ của bạn. Ví dụ, trong ReplicatedStorage.Missions.Configs.Constants, bạn có thể bật SingleTaskMode để hiển thị một thanh tiến độ cho một nhiệm vụ trực tiếp trên nhiệm vụ đó cho các nhiệm vụ chỉ có một nhiệm vụ duy nhất.

Ngoài ra, nếu trò chơi của bạn đã có một giao diện người dùng hiện có mà bạn muốn tích hợp với gói tính năng Nhiệm vụ, ModuleScript MissionsClient của client chứa tất cả các hàm cần thiết để lấy thông tin về các nhiệm vụ của người chơi được gửi từ máy chủ.

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.