Ir para o conteúdo

Funções de Invocação

Funções para gerenciar criaturas invocadas — usadas por classes como Dark Lord e Summoner.


gObjAddSummon()

Aloca um novo slot de objeto de invocação. Usa alocação de memória thread-safe.

  • Parâmetros: Nenhum
  • Retorna: integer — Índice do objeto de invocação, ou -1 em caso de falha.
local summonIndex = gObjAddSummon()
if summonIndex ~= -1 then
    LogAdd(LOG_GREEN, "Summon allocated at index %d", summonIndex)
end

gObjSummonSetEnemy(lpObj, targetIndex)

Define um inimigo alvo para a invocação do jogador. A invocação atacará o alvo especificado.

  • Parâmetros:
    • lpObj (GameObject): Objeto do jogador (dono da invocação).
    • targetIndex (integer): Índice do objeto alvo.
  • Retorna: integer — Índice do alvo em caso de sucesso, -1 em caso de falha.

Validação

A função valida que o jogador possui uma invocação, a invocação não tem um alvo atribuído, e o alvo não é o jogador nem a própria invocação.

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

gObjSummonKill(aIndex)

Mata e remove a invocação de um jogador.

  • Parâmetros:
    • aIndex (integer): Índice do jogador (dono da invocação).
  • Retorna: void

Validação

Verifica que o jogador possui um índice de invocação válido, a invocação existe e a invocação é realmente de propriedade deste jogador antes de removê-la.

-- Remove player's summon
gObjSummonKill(aIndex)

gObjSummonAlly(lpObj, map, x, y)

Invoca um jogador (aliado) para um local específico. Usado para habilidades de invocação de grupo.

  • Parâmetros:
    • lpObj (GameObject): Jogador a ser teletransportado.
    • map (integer): Número do mapa de destino.
    • x (integer): Coordenada X de destino.
    • y (integer): Coordenada Y de destino.
  • Retorna: void

Para invocações no mesmo mapa, mostra um efeito de habilidade de teletransporte e move o jogador. Para invocações entre mapas, realiza uma transferência completa de mapa incluindo cancelamento de troca e validação do servidor.

-- Summon a party member to your location
local leader = GetUser(leaderIndex)
gObjSummonAlly(target, leader.Map, leader.X, leader.Y)