Jump to content
1 vote
Guests cannot vote

Feature Request — Native Transactional Temporary Character Profile / Event Isolation API

  • Views: 4
  • Submitted:

Hello,

I would like to request a native API for temporary character profiles designed for events such as Battle Royale, survival arenas, class trials, ranked PvP and temporary progression modes.

The objective is to temporarily place a player into an isolated profile without modifying or risking the original character inventory, equipment, buffs, skills or attributes.

Current Lua functions allow item access, deletion, insertion, stat changes and individual buff removal, but they are not sufficient to safely recreate the original state after an event. A full Lua-side solution may cause item serial issues, loss of advanced options, duplicate items, incorrect durability, socket/Harmony problems and incomplete buff restoration.

Requested API:

local sessionId, result = PlayerEvent.BeginTemporaryProfile(oPlayer, {
    EventKey = "BATTLE_ROYALE",

    Snapshot = {
        Stats = true,
        Level = true,
        MasterLevel = true,
        MasterSkillTree = true,
        LifeManaShieldAG = true,

        Equipment = true,
        MainInventory = true,
        ExtendedInventory = true,
        MuunInventory = true,
        PentagramInventory = true,

        Buffs = true,
        Skills = true,
        CashShopEffects = true,
        ItemEffects = true,
    },

    TemporaryProfile = {
        BaseStats = {
            Strength = 100,
            Dexterity = 100,
            Vitality = 100,
            Energy = 100,
            Command = 100,
        },

        Level = 1,
        LevelUpPoints = 0,

        InventoryMode = "EMPTY_EVENT_INVENTORY",
        SkillMode = "WHITELIST",
        AllowedSkills = {},

        BuffMode = "SUPPRESS",
        OriginalBuffTimePolicy = "ELAPSE",
    },

    Restrictions = {
        BlockTrade = true,
        BlockWarehouse = true,
        BlockPersonalShop = true,
        BlockChaosMachine = true,
        BlockInventoryMove = true,
        BlockItemUse = true,
        BlockItemRepair = true,
        BlockTeleport = true,
        BlockNormalItemPickup = true,
    },

    Recovery = {
        PersistSnapshotBeforeApply = true,
        RestoreBeforeCharacterSaveOnDisconnect = true,
        RestorePendingSessionOnLogin = true,
        RestorePendingSessionsOnServerStart = true,
    },
})
local result = PlayerEvent.EndTemporaryProfile(
    oPlayer,
    sessionId,
    "EVENT_FINISHED"
)

 

The native implementation should use an internal opaque snapshot. Lua should not be required to manually serialize and rebuild actual items.

The snapshot must preserve the exact original item state, including:

  • Original inventory slot and equipped position
  • Unique item serial
  • Item level and durability
  • Skill, luck, additional option and excellent options
  • Ancient/set options
  • Harmony option type and value
  • Socket options and bonus socket option
  • 380 option, period item data, pet data, elemental/pentagram/errtel data
  • Muun inventory and related items
  • Any other internal item fields required for a bit-perfect restoration
  • Buff restoration should preserve:
  • Buff identifier
  • Remaining duration
  • Effect types and values
  • Buff source / caster
  • Cash Shop and item-generated effects

Configurable time policy: ELAPSE, PAUSE or REMOVE

The API should also provide an isolated Event Inventory:

EventInventory.Clear(oPlayer, sessionId) 
EventInventory.AddItem(oPlayer, sessionId, itemInfo) 
EventInventory.TransferRewards(oPlayer, sessionId, { Destination = "GREMORY_OR_MAIN_INVENTORY" })

This is necessary so event rewards and temporary equipment do not mix with the player’s original inventory.

Required safety guarantees:

  • BeginTemporaryProfile must be atomic.
  • EndTemporaryProfile must be idempotent.
  • No original item may be deleted or recreated through Lua.
  • The original profile must be restored after event finish, disconnect, server restart or unexpected crash.

The GameServer must prevent item movement, trade, warehouse, chaos machine and similar actions while the temporary profile is active.

The system must prevent duplicate rewards and duplicate profile restoration.

Recovery should be automatically processed on player login and GameServer startup.

The API should provide clear result/error codes and server logs for create, restore, recovery and failure cases.

This feature would allow secure development of Battle Royale, survival arenas and temporary PvP modes without risking player items or permanent character data.

Thank you.

×
×
  • Create New...

Important Information


We use technologies, such as cookies, to customize content and advertising, to provide social media features and to analyse traffic to the site. We also share information about your use of our site with our trusted social media, advertising and analytics partners. See more about cookies and our Privacy Policy.