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 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ải nghiệm của bạn. Tất 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.

Bằng cách 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ả 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 nhiệm vụ để hướng dẫn người chơi mới vào trải nghiệm 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 hiển thị các hệ thống khác nhau trong trò chơi của bạn và thưởng cho người chơi vì đã 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, lưới, â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ải nghiệm đang mở, bao gồm 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ụ nằm 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ải nghiệm:

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

  2. Trong cửa sổ Toolbox, nhấp vào tab Kho. Sắp xếp Mô hình của tôi 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ổ Khám phá.

  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à metadata hiển thị tùy chọn, tất cả đều có thể được xác định trong ReplicatedStorage.Missions.Configs.Missions, với các loại được xuất từ tập lệnh Types trong cùng thư mục.

Các trường cần thiết

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

TênLoạiMô tả
missionIdstringKhóa bảng Nhiệm vụ chính. Tất cả nhiệm vụ được xác định bằng chuỗi duy nhất của 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 UI.
taskstableMột danh sách 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ụ sẽ đượ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 missionId khác mà phải được hoàn thành trước khi nhiệm vụ có thể được mở khóa.
manualOnlyboolVô hiệu hóa sự 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 đượ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ì hoãn trước khi nhiệm vụ được mở khóa.
expireSecondsnumberNếu nhiệm vụ được mở khóa và không được hoàn thành trong khoảng thời gian chỉ định, thì nhiệm vụ sẽ bị thất bại.
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ải nghiệm sẽ được tính vào thời gian hết hạn nhiệm vụ.

Metadata

Các nhiệm vụ có metadata chỉ đị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 đây để tùy chỉnh metadata của nó.

TênLoạiMô tả
displayNamestringMột tên để hiển thị cho nhiệm vụ trong giao diện người dùng thay vì missionId.
descriptionstringMột đoạn văn bản dài hơn cung cấp thông tin hoặc bối 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 nhiệm vụ trước khi có sẵn để hoàn thành.
invisibleWhileActiveboolNếu được đặt thành true, nhiệm vụ sẽ bị vô hình ngay cả khi đang trong tiến trình hoạt động.
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 UI 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 UI 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 có nhiều nhiệm vụ. Nếu một nhiệm vụ không có nhiệm vụ nào, nó có thể được nhận ngay sau khi mở khóa; nếu một nhiệm vụ có một hoặc nhiều nhiệm vụ, một khi các nhiệm vụ hoàn tất, người chơi có thể nhận bất kỳ phần thưởng nào liên kết với 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.

Các 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 điểm khác nhau trong thời gian. Một khoảng thời gian nhất định phải trôi qua khi đồng hồ đếm ngược của nhiệm vụ đang chạy, sau đó nhiệm vụ sẽ hoàn tất.
  • Nhiệm vụ Đếm - Cho phép bạn thêm vào hoặc thiết lập tiến trình của nhiệm vụ. Khi tiến trình đạt một giá trị đã thiết lập, nhiệm vụ sẽ hoàn tất.

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

TênLoạiMô tả
taskTypestringXác định nếu loại nhiệm vụ là đếm hoặc 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 trưng 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; chẳng hạn, nếu có nhiều nhiệm vụ theo dõi số lượng đồng xu mà người chơi đã thu thập, thì chúng có thể chia sẻ cùng một bộ đếm “đồng xu”. Các nhiệm vụ này có thể độc lập theo dõi số đồng xu mới đã thu thập, bắt đầu từ số không, hoặc tiếp tục đếm từ giá trị bộ đếm (tất cả đồng xu đã thu thập trước đó).
  • counterId (string) - ID của bộ đếm để được theo dõi. Sử dụng ID này để nhận hoặc đặt giá trị của bộ đếm.
  • continueFromCounter (Tùy chọn bool) - Nếu được đặt thành true, tiến trình 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 UI.
  • displayName (string) - Tên của nhiệm vụ, được sử dụng khi hiển thị trong UI.
  • numericType (Tùy chọn string) - cách mà số tiến trình trong nhiệm vụ nên được hiển thị.
    • Phân số, ví dụ: 5/10 hoặc 5k/50k
    • Tỷ lệ 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 tất
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 UI nút.

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

Nhiệm vụ đếm có một giá trị yêu cầu. Khi tiến trình nhiệm vụ đạt số lượng này, nhiệm vụ sẽ hoàn tất.

TênLoạiMô tả
goalCountnumber(Tùy chọn) Tiến trình yêu cầu để hoàn tất 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à phải bắt đầu và dừng. Khi thời gian mục tiêu được thỏa mãn, nhiệm vụ sẽ hoàn tất.

TênLoạiMô tả
goalSecondsnumberSố giây cần trôi qua để hoàn tất 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 trong khi người chơi không hoạt động trong trải nghiệm.

Cấu hình các 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 những giá trị này trong ReplicatedStorage.Missions.Configs.Categories để thêm các hiệu ứng bổ sung vào danh mục. Các danh mục được xác định bởi các CategoryIds duy nhất, cùng các ID đượ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 thời gian chỉ định trôi qua, và có thể được mở khóa, hoàn thành và phần thưởng của chúng được nhận lại. Đ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 đã cho.

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

Hãy xem ReplicatedStorage.Missions.Server.Examples.MissionsExample, nó 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ải nghiệm của bạn:

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

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

    README

    -- Tăng tiến trình trên nhiệm vụ Jumping với một nhiệm vụ Jumps
    Missions.addProgressToTask(player, "Jumping", "Jumps", 1)
    -- Bắt đầu đồng hồ đếm thời gian trên nhiệm vụ BattlingTime với một nhiệm vụ TimeInBattle
    Missions.startTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Dừng đồng hồ đếm thời gian trên nhiệm vụ BattlingTime với một nhiệm vụ TimeInBattle
    Missions.stopTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Tăng tiến trình trên tất cả nhiệm vụ liên kết với bộ đếm Jumps
    CounterSystem.addCounter(player, "Jumps", 1)
    -- Bắt đầu đồng hồ đếm thời gian trên tất cả nhiệm vụ có thời gian liên kết với bộ đếm thời gian TimeInBattle
    CounterSystem.startTimer(player, "TimeInBattle")
    -- Dừng đồng hồ đếm thời gian trên tất cả nhiệm vụ có thời gian liên kết với bộ đếm thời gian TimeInBattle
    CounterSystem.stopTimer(player, "TimeInBattle")
  3. Đặt các handler hoàn thành nhiệm vụ, và tùy chọn là các handler mở khóa hoặc thất bại. Sử dụng handler hoàn thành để thưởng cho phần thưởng từ nhiệm vụ trong trải nghiệm 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ụ chưa được mở khóa tự động. Logic của 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, "Manual")

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ể của 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 cho việc dịch được tách ra 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 trực quan của giao diện nhiệm vụ. Ví dụ, trong ReplicatedStorage.Missions.Configs.Constants, bạn có thể kích hoạt SingleTaskMode để hiển thị thanh tiến trình 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ải nghiệm của bạn đã có một UI hiện có mà bạn muốn tích hợp với gói tính năng Nhiệm vụ, mô-đun MissionsClient của máy khách ModuleScript chứa tất cả các hàm cần thiết để lấy thông tin về 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.