跳转至

召唤兽函数

管理召唤生物的函数 — 用于 Dark Lord 和 Summoner 等职业。


gObjAddSummon()

分配一个新的召唤兽对象槽位。使用线程安全的内存分配。

  • 参数: 无
  • 返回值: integer — 召唤兽对象索引,失败时返回 -1
local summonIndex = gObjAddSummon()
if summonIndex ~= -1 then
    LogAdd(LOG_GREEN, "Summon allocated at index %d", summonIndex)
end

gObjSummonSetEnemy(lpObj, targetIndex)

为玩家的召唤兽设置目标敌人。召唤兽将攻击指定目标。

  • 参数:
    • lpObj (GameObject): 玩家对象(召唤兽主人)。
    • targetIndex (integer): 目标对象索引。
  • 返回值: integer — 成功时返回目标索引,失败时返回 -1

验证

该函数会验证玩家是否拥有召唤兽、召唤兽是否已有目标,以及目标是否不是玩家自身或召唤兽本身。

local result = gObjSummonSetEnemy(player, targetIndex)
if result ~= -1 then
    LogAdd(LOG_BLUE, "Summon is now attacking target %d", result)
end

gObjSummonKill(aIndex)

击杀并消失玩家的召唤兽。

  • 参数:
    • aIndex (integer): 玩家索引(召唤兽主人)。
  • 返回值: void

验证

在移除之前会检查玩家是否有有效的召唤兽索引、召唤兽是否存在,以及召唤兽是否确实属于该玩家。

-- 移除玩家的召唤兽
gObjSummonKill(aIndex)

gObjSummonAlly(lpObj, map, x, y)

将玩家(盟友)召唤到指定位置。用于组队召唤技能。

  • 参数:
    • lpObj (GameObject): 要传送的玩家。
    • map (integer): 目标地图编号。
    • x (integer): 目标 X 坐标。
    • y (integer): 目标 Y 坐标。
  • 返回值: void

同地图召唤时,显示传送技能效果并移动玩家。跨地图召唤时,执行完整的地图转移,包括取消交易和服务器验证。

-- 将组队成员召唤到你的位置
local leader = GetUser(leaderIndex)
gObjSummonAlly(target, leader.Map, leader.X, leader.Y)