Bỏ qua

Hàm kỹ năng

Truy vấn thông tin kỹ năng

Tất cả nhận một index kỹ năng (number) và trả về number.

Hàm Mô tả
GetSkillDamage(index) Sát thương cơ bản của kỹ năng
GetSkillMana(index) Chi phí mana
GetSkillBP(index) Chi phí AG (BP)
GetSkillType(index) Kiểu kỹ năng (tấn công, buff, v.v.)
GetSkillEffect(index) ID hiệu ứng mà kỹ năng áp dụng
GetSkillDelay(index) Thời gian hồi chiêu
GetSkillDamageType(index) Kiểu sát thương (vật lý, phép thuật, v.v.)
GetElementImprintBonus(index) Giá trị thưởng nguyên tố
GetAddDamageOption(index) Giá trị tùy chọn sát thương bổ sung
local manaCost = GetSkillMana(41) -- Chi phí mana của kỹ năng 41
local dmg = GetSkillDamage(41)
LogAdd(LOG_BLUE, "Skill 41: damage=" .. dmg .. " mana=" .. manaCost)

Thông tin kỹ năng (phụ thuộc đối tượng)

Hàm Mô tả
GetSkillRange(lpObj, index) Tầm hiệu quả cho người chơi
GetSkillRadio(lpObj, index) Bán kính AoE cho người chơi
GetSkillSlot(lpObj, index) Vị trí slot kỹ năng trong danh sách kỹ năng
GetSkillMultiCount(lpObj, lpSkill) Số mục tiêu đánh nhiều lần
local range = GetSkillRange(player, 41)

GetSkillNumber(index, level)

Trả về số kỹ năng đã giải quyết cho kỹ năng cơ bản tại cấp độ cho trước.

local resolved = GetSkillNumber(41, 10)

GetSkillAngle(x, y, tx, ty)

Tính góc giữa hai vị trí (cho kỹ năng dạng hình nón).

  • Trả về: number — giá trị góc
local angle = GetSkillAngle(player.X, player.Y, target.X, target.Y)

AttackDirection(aIndex, bIndex)

Trả về byte hướng tấn công từ kẻ tấn công đến mục tiêu.

local dir = AttackDirection(player.Index, target.Index)

GetDirectionAboutByte(dir)

Chuyển đổi byte hướng sang giá trị hướng chuẩn hóa.

local normalized = GetDirectionAboutByte(dir)

Kiểm tra yêu cầu kỹ năng

Tất cả trả về boolean.

Hàm Mô tả
CheckSkillMana(lpObj, index) Có đủ mana
CheckSkillBP(lpObj, index) Có đủ AG
CheckSkillRange(lpObj, index, x, y, tx, ty) Mục tiêu trong tầm
CheckSkillRadio(lpObj, index, x, y, tx, ty) Mục tiêu trong bán kính AoE
CheckSkillDelay(lpObj, lpSkill, type) Kỹ năng không đang hồi chiêu
CheckSkillTarget(lpObj, aIndex, bIndex, type) Mục tiêu hợp lệ
CheckSkillRequireLevel(lpObj, index) Đủ yêu cầu cấp độ
CheckSkillRequireEnergy(lpObj, index) Đủ yêu cầu năng lượng
CheckSkillRequireLeadership(lpObj, index) Đủ yêu cầu lãnh đạo
CheckSkillRequireKillPoint(lpObj, index) Đủ yêu cầu điểm giết
CheckSkillRequireGuildStatus(lpObj, index) Đủ yêu cầu cấp bậc bang hội
CheckSkillRequireClass(lpObj, index) Kỹ năng khả dụng cho lớp nhân vật
CheckSkillRequireWeapon(lpObj, index) Có vũ khí yêu cầu được trang bị
CheckAttackRange(nIndex, nTargetIndex, nDistance, nAttackType, nSubAttackType) Kiểm tra tầm tấn công
if CheckSkillMana(player, 41) and CheckSkillBP(player, 41) then
    LogAdd(LOG_GREEN, "Player can cast skill 41.")
end

IsSkillItem(index)

Trả về true nếu chỉ số kỹ năng thuộc về kỹ năng từ vật phẩm.

if IsSkillItem(41) then
    LogAdd(LOG_BLUE, "Skill 41 is an item-based skill.")
end

Thêm/Xóa kỹ năng

Hàm Mô tả Trả về
AddSkill(lpObj, index, level, group) Thêm hoặc cập nhật kỹ năng number (slot)
DelSkill(lpObj, index) Xóa kỹ năng number
GetSkill(lpObj, index) Lấy đối tượng CSkill CSkill hoặc nil
AddSkillWeapon(lpObj, index, level) Thêm kỹ năng vũ khí number
DelSkillWeapon(lpObj, index, level) Xóa kỹ năng vũ khí number
AddMasterSkill(lpObj, index, level) Thêm kỹ năng Master number
DelMasterSkill(lpObj, index) Xóa kỹ năng Master number
GetMasterSkill(lpObj, index) Lấy CSkill Master CSkill hoặc nil
AddEnhanceSkill(lpObj, index, level, group) Thêm kỹ năng Enhance (cấp 4) number
AddEnhancePassiveSkill(lpObj, index, level, group) Thêm kỹ năng Enhance thụ động number
GetEnhanceSkill(lpObj, index, group) Lấy CSkill Enhance CSkill hoặc nil
GetEnhancePassiveSkill(lpObj, index, group) Lấy CSkill Enhance thụ động CSkill hoặc nil
AddSkill(player, 41, 1, 0) -- Thêm kỹ năng 41 cấp 1
GCSkillListSend(player, 0)  -- Làm mới danh sách kỹ năng client

Truy vấn cây kỹ năng

Hàm Mô tả Trả về
CheckMasterLevel(lpObj) Có thể nhận kinh nghiệm Master boolean
GetMasterSkillValue(lpObj, skillIndex) Giá trị tính toán của kỹ năng Master number (float)
GetMasterSkillLevel(lpObj, skillIndex) Cấp hiện tại của kỹ năng Master number
CheckEnhanceLevel(lpObj) Có thể sử dụng cây kỹ năng cấp 4 boolean
CheckAbilityLevel(lpObj) Có thể sử dụng Ability Enhancement (v1913+) boolean
GetEnhanceSkillValue(lpObj, skillIndex, group) Giá trị kỹ năng Enhance number
if CheckMasterLevel(player) then
    local val = GetMasterSkillValue(player, 300)
    LogAdd(LOG_BLUE, "Master skill 300 value: " .. val)
end

Hàm kỹ năng đặc biệt

SkillSpinStepExplosion(lpObj, lpTarget, skillIndex, damage)

Thực thi kỹ năng Spin Step Explosion (Rage Fighter). Khả dụng từ phiên bản S6 trở đi.

  • Trả về: boolean
SkillSpinStepExplosion(player, target, 260, 500)

SkillMagicGladiatorExplosion(lpObj, skillIndex, damage)

Thực thi kỹ năng MG Explosion AoE.

SkillMagicGladiatorExplosion(player, 90, 1000)

gObjSkillUseProc(lpObj)

Xử lý các hành động kỹ năng đang chờ cho đối tượng. Sử dụng trong AI quái vật.

gObjSkillUseProc(monster)

Các hàm sau gửi gói tin liên quan đến kỹ năng đến client để hiển thị hiệu ứng.

GCSkillAttackSend(lpObj, skillIndex, lpTarget, type)

Thông báo cho client về hoạt ảnh tấn công kỹ năng.

GCSkillAttackSend(player, 41, target, 0)

GCSkillCancelSend(lpObj, skill)

Hủy hiệu ứng kỹ năng trên client.

GCSkillCancelSend(player, 41)

GCDurationSkillAttackSend(lpObj, bIndex, skill, x, y, dir)

Gửi tấn công kỹ năng theo thời gian (ví dụ: hiệu ứng vùng).

GCDurationSkillAttackSend(player, target.Index, 41, player.X, player.Y, player.Dir)

GCSkillActionSend(lpObj, lpSkill, bIndex, skillsuccess, x, y)

Gửi gói tin hành động kỹ năng (sử dụng cho buff/kỹ năng đặc biệt).

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)

Gửi gói tin tấn công kỹ năng 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)

Gửi gói tin tấn công kỹ năng Rage Fighter.

GCRageFighterSkillAttackSend(player, 260, target.Index, 0)

GCSkillAddSend(aIndex, slot, skill, level, type)

Thông báo cho client rằng một kỹ năng đã được thêm.

GCSkillAddSend(player.Index, 5, 41, 1, 0)

GCSkillDelSend(aIndex, slot, skill, level, type)

Thông báo cho client rằng một kỹ năng đã bị xóa.

GCSkillDelSend(player.Index, 5, 41, 1, 0)

GCSkillListSend(lpObj, type)

Gửi toàn bộ danh sách kỹ năng đến client người chơi.

GCSkillListSend(player, 0) -- Làm mới sau khi thêm/xóa kỹ năng