Funções de Habilidade¶
Consultas de Informação de Habilidade¶
Todas recebem um index (number) de habilidade e retornam number.
| Função | Descrição |
|---|---|
GetSkillDamage(index) |
Dano base da habilidade |
GetSkillMana(index) |
Custo de mana |
GetSkillBP(index) |
Custo de AG (BP) |
GetSkillType(index) |
Tipo de habilidade (ataque, buff, etc.) |
GetSkillEffect(index) |
ID do efeito que a habilidade aplica |
GetSkillDelay(index) |
Tempo de recarga |
GetSkillDamageType(index) |
Tipo de dano (físico, mágico, etc.) |
GetElementImprintBonus(index) |
Valor de bônus de impressão elemental |
GetAddDamageOption(index) |
Valor da opção de dano adicional |
local manaCost = GetSkillMana(41) -- Mana cost of skill 41
local dmg = GetSkillDamage(41)
LogAdd(LOG_BLUE, "Skill 41: damage=" .. dmg .. " mana=" .. manaCost)
Informação de Habilidade (Dependente do Objeto)¶
| Função | Descrição |
|---|---|
GetSkillRange(lpObj, index) |
Alcance efetivo para o jogador |
GetSkillRadio(lpObj, index) |
Raio de AoE para o jogador |
GetSkillSlot(lpObj, index) |
Índice do slot da habilidade na lista de habilidades do jogador |
GetSkillMultiCount(lpObj, lpSkill) |
Número de alvos multi-hit |
GetSkillNumber(index, level)¶
Retorna o número de habilidade resolvido para uma habilidade base em um determinado nível.
GetSkillAngle(x, y, tx, ty)¶
Calcula o ângulo entre duas posições (para habilidades de frustrum).
- Retorna:
number— valor do ângulo
AttackDirection(aIndex, bIndex)¶
Retorna o byte de direção de ataque do atacante para o alvo.
GetDirectionAboutByte(dir)¶
Converte um byte de direção em um valor de direção normalizado.
Verificações de Requisitos de Habilidade¶
Todas retornam boolean.
| Função | Descrição |
|---|---|
CheckSkillMana(lpObj, index) |
Tem mana suficiente |
CheckSkillBP(lpObj, index) |
Tem AG suficiente |
CheckSkillRange(lpObj, index, x, y, tx, ty) |
Alvo está no alcance |
CheckSkillRadio(lpObj, index, x, y, tx, ty) |
Alvo está no raio de AoE |
CheckSkillDelay(lpObj, lpSkill, type) |
Habilidade não está em recarga |
CheckSkillTarget(lpObj, aIndex, bIndex, type) |
Alvo é válido |
CheckSkillRequireLevel(lpObj, index) |
Jogador atende requisito de nível |
CheckSkillRequireEnergy(lpObj, index) |
Jogador atende requisito de energia |
CheckSkillRequireLeadership(lpObj, index) |
Jogador atende requisito de liderança |
CheckSkillRequireKillPoint(lpObj, index) |
Jogador atende requisito de pontos de kill |
CheckSkillRequireGuildStatus(lpObj, index) |
Jogador atende requisito de status de guilda |
CheckSkillRequireClass(lpObj, index) |
Habilidade está disponível para a classe do jogador |
CheckSkillRequireWeapon(lpObj, index) |
Jogador tem a arma necessária equipada |
CheckAttackRange(nIndex, nTargetIndex, nDistance, nAttackType, nSubAttackType) |
Verificação de alcance de ataque |
if CheckSkillMana(player, 41) and CheckSkillBP(player, 41) then
LogAdd(LOG_GREEN, "Player can cast skill 41.")
end
IsSkillItem(index)¶
Retorna true se o índice de habilidade fornecido pertence a uma habilidade de item.
Adicionar/Remover Habilidades¶
| Função | Descrição | Retorna |
|---|---|---|
AddSkill(lpObj, index, level, group) |
Adiciona ou atualiza uma habilidade | number (slot) |
DelSkill(lpObj, index) |
Remove uma habilidade | number |
GetSkill(lpObj, index) |
Obtém o objeto CSkill | CSkill ou nil |
AddSkillWeapon(lpObj, index, level) |
Adiciona uma habilidade de arma | number |
DelSkillWeapon(lpObj, index, level) |
Remove uma habilidade de arma | number |
AddMasterSkill(lpObj, index, level) |
Adiciona uma habilidade Master | number |
DelMasterSkill(lpObj, index) |
Remove uma habilidade Master | number |
GetMasterSkill(lpObj, index) |
Obtém um CSkill Master | CSkill ou nil |
AddEnhanceSkill(lpObj, index, level, group) |
Adiciona uma habilidade Enhance (4a) | number |
AddEnhancePassiveSkill(lpObj, index, level, group) |
Adiciona uma habilidade passiva Enhance | number |
GetEnhanceSkill(lpObj, index, group) |
Obtém um CSkill Enhance | CSkill ou nil |
GetEnhancePassiveSkill(lpObj, index, group) |
Obtém um CSkill passivo Enhance | CSkill ou nil |
AddSkill(player, 41, 1, 0) -- Add skill 41 at level 1
GCSkillListSend(player, 0) -- Refresh client skill list
Consultas da Árvore de Habilidades¶
| Função | Descrição | Retorna |
|---|---|---|
CheckMasterLevel(lpObj) |
Pode ganhar experiência Master | boolean |
GetMasterSkillValue(lpObj, skillIndex) |
Valor calculado de uma habilidade Master | number (float) |
GetMasterSkillLevel(lpObj, skillIndex) |
Nível atual de uma habilidade Master | number |
CheckEnhanceLevel(lpObj) |
Pode usar árvore de habilidades 4a | boolean |
CheckAbilityLevel(lpObj) |
Pode usar Ability Enhancement (v1913+) | boolean |
GetEnhanceSkillValue(lpObj, skillIndex, group) |
Valor de uma habilidade Enhance | number |
if CheckMasterLevel(player) then
local val = GetMasterSkillValue(player, 300)
LogAdd(LOG_BLUE, "Master skill 300 value: " .. val)
end
Funções Especiais de Habilidade¶
SkillSpinStepExplosion(lpObj, lpTarget, skillIndex, damage)¶
Executa a habilidade Spin Step Explosion (Rage Fighter). Disponível a partir da versão S6.
- Retorna:
boolean
SkillMagicGladiatorExplosion(lpObj, skillIndex, damage)¶
Executa a habilidade AoE Explosion do MG.
gObjSkillUseProc(lpObj)¶
Processa ações de habilidades pendentes para o objeto. Usado na IA de monstros.
Essas funções enviam pacotes relacionados a habilidades para clientes como feedback visual.
GCSkillAttackSend(lpObj, skillIndex, lpTarget, type)¶
Notifica os clientes sobre uma animação de ataque de habilidade.
GCSkillCancelSend(lpObj, skill)¶
Cancela um efeito de habilidade no cliente.
GCDurationSkillAttackSend(lpObj, bIndex, skill, x, y, dir)¶
Envia um ataque de habilidade baseado em duração (ex.: efeitos de área).
GCSkillActionSend(lpObj, lpSkill, bIndex, skillsuccess, x, y)¶
Envia um pacote de ação de habilidade (usado para habilidades de buff/especiais).
local sk = GetSkill(player, 41)
if sk then
GCSkillActionSend(player, sk, target.Index, 1, player.X, player.Y)
end
GCRuneWizzardSkillAttackSend(lpObj, lpSkill, tx, ty, dir, angle)¶
Envia um pacote de ataque de habilidade do Rune Wizard.
local sk = GetSkill(player, 700)
if sk then
GCRuneWizzardSkillAttackSend(player, sk, target.X, target.Y, player.Dir, 0)
end
GCRageFighterSkillAttackSend(lpObj, skill, aIndex, type)¶
Envia um pacote de ataque de habilidade do Rage Fighter.
GCSkillAddSend(aIndex, slot, skill, level, type)¶
Notifica o cliente que uma habilidade foi adicionada.
GCSkillDelSend(aIndex, slot, skill, level, type)¶
Notifica o cliente que uma habilidade foi removida.
GCSkillListSend(lpObj, type)¶
Envia a lista completa de habilidades para o cliente do jogador.
Help