EVE Frontier world-contracts 详解(3)

EVE Frontier world-contracts 详解(3)

Killmail-击杀记录:

本模块在链上创建并共享 Killmail 对象,同时发出事件供索引器查询。
Killmail 被设计为 PvP 战斗损失的不可变记录,不可修改。

Enums:

  • enum LossType // 击杀损失类型枚举,分为舰船损失以及建筑损失两种

Structs:

  • struct Killmail // 记录 kmID,击杀方 ID,被击杀方 ID,损失类型。损失时间,损失星系

Events:

  • struct KillmailCreatedEvent // 创建新 Killmail 时发出的事件。

Function:

  • create_killmail // 只有 Admin 可以调用,创建一条新的 Killmail 记录并上链,构建 Killmail,发出 KillmailCreatedEvent

Character-角色:

此模块通过基于能力的访问控制来管理角色的创建和生命周期

Structs:

  • struct Character // 角色信息,包含 UID,TenantItemId(in_game_id 有讲),联盟 ID,character_address 角色绑定地址

Events:

  • struct CharacterCreatedEvent // 角色创建事件

Function:

  • create_character // 创建角色,只有 Admin 可以调用,传参内容为 struct Character ,发出角色创建事件 CharacterCreatedEvent

  • borrow_owner_cap // 调用时携带要接收的 OwnerCap 对象 ID,从 Character 对象中临时借出 OwnerCap,玩家操作时通过 Receiving 票据取出,character.character_address == ctx.sender 确保只有角色绑定的钱包地址本人才能借出 OwnerCap,使用完毕后必须调用 return_owner_cap 归还

  • return_owner_cap // 将 OwnerCap<T> 归还给 Character 对象

  • update_tribe // 更新角色联盟 ID 需管理员权限,以下方法均需要 AdminCap

  • update_address // 更新角色绑定的钱包地址

  • public fun update_tenant_id // 更新角色的 tenant 标识

  • delete_character // 删除角色对象

registry-对象注册表:

所有游戏资产(角色,组件,网络节点等)派生出它们的确定性对象 id,从这个注册表使用 TenantItemId(item_id + tenant)作为派生键,这保证每个游戏中的物品 ID 只能在所有对象类型中使用一次

Structs:

  • struct ObjectRegistry // 注册器对象 UID

Function:

  • object_exists // 查询某个业务键是否已被注册
  • borrow_registry_id // 借出注册表的可变 UID 引用

好了以上就是目前所有的组件,由这些组件构成了可以自由拓展的 assembly,下章详细讲解 assembly 的构建

posted @ 2026-03-10 20:07  江郡梧桐长青  阅读(4)  评论(0)    收藏  举报