Bỏ qua

Hàm hiệu ứng

GetMaxEffect(aIndex)

Trả về số lượng slot hiệu ứng tối đa mà một đối tượng có thể có.

local max = GetMaxEffect(player.Index)

AddEffect(lpObj, type, index, count, v1, v2, v3, v4, v5, v6, buffSendValue, attackerIndex, rmv)

Thêm một hiệu ứng buff/debuff cho đối tượng.

  • Tham số:
  • lpObj (GameObject) — đối tượng mục tiêu
  • type (number) — kiểu hiệu ứng (0 hoặc 1)
  • index (number) — ID hiệu ứng
  • count (number) — thời lượng tính bằng giây hoặc số lần sạc
  • v1..v6 (number) — giá trị hiệu ứng (sát thương, phòng thủ, v.v.)
  • buffSendValue (number) — giá trị biểu tượng buff phía client
  • attackerIndex (number) — chỉ số nguồn hiệu ứng
  • rmv (number) — tỷ lệ thành công (0-100), hoặc -1 để luôn thành công
  • Trả về: number — 1 nếu thành công, 0 nếu thất bại
-- Thêm buff +50 sát thương vật lý trong 60 giây, đảm bảo thành công
AddEffect(player, 1, 15, 60, 50, 0, 0, 0, 0, 0, 0, player.Index, -1)

DelEffect(lpObj, index)

Xóa một hiệu ứng cụ thể theo ID.

  • Trả về: boolean
if DelEffect(player, 1) then
    GCNoticeSend(player.Index, 1, "Poison cured!")
end

DelEffectByGroup(lpObj, group)

Xóa tất cả hiệu ứng thuộc một nhóm.

  • Trả về: boolean
DelEffectByGroup(player, 20) -- Xóa tất cả buff cuộn giấy

GetEffect(lpObj, index)

Trả về đối tượng GameCEffect cho ID hiệu ứng cho trước, hoặc nil nếu không tìm thấy.

local eff = GetEffect(player, 1)
if eff then
    LogAdd(LOG_RED, "Poison remaining: " .. eff.m_time .. "s")
end

GetEffectByGroup(lpObj, group)

Trả về GameCEffect đầu tiên trong nhóm cho trước, hoặc nil.

local scroll = GetEffectByGroup(player, 20)
if scroll then
    LogAdd(LOG_BLUE, "Scroll value: " .. scroll.m_value[1])
end

CheckEffect(lpObj, index)

Trả về true nếu đối tượng đang có hiệu ứng hoạt động.

if CheckEffect(target, 16) then -- Mana Shield
    LogAdd(LOG_BLUE, "Target has Mana Shield active.")
end

CheckEffectByGroup(lpObj, group)

Trả về true nếu đối tượng có bất kỳ hiệu ứng nào từ nhóm cho trước.

if CheckEffectByGroup(player, 35) then
    GCNoticeSend(player.Index, 1, "You already have an event buff.")
end

CheckStunEffect(lpObj)

Trả về true nếu đối tượng đang bị choáng.

if CheckStunEffect(target) then
    LogAdd(LOG_BLUE, "Target is stunned!")
end

CheckImmobilizeEffect(lpObj)

Trả về true nếu đối tượng đang bị bất động.

if CheckImmobilizeEffect(player) then
    GCNoticeSend(player.Index, 1, "You are frozen and cannot move!")
end

CheckDebuffSend(index)

Trả về true nếu chỉ số hiệu ứng cho trước được phân loại là debuff để hiển thị phía client.

local isDebuff = CheckDebuffSend(5)

ClearAllEffect(lpObj)

Xóa tất cả hiệu ứng khỏi đối tượng.

ClearAllEffect(player)
GCNoticeSend(player.Index, 1, "All effects cleared.")

ClearDebuffEffect(lpObj, count)

Xóa tối đa count hiệu ứng debuff khỏi đối tượng.

ClearDebuffEffect(player, 3)
GCNoticeSend(player.Index, 1, "Removed 3 debuffs.")

UpgradeDamageByClass(lpObj)

Tính toán và trả về sát thương bổ sung dựa trên lớp nhân vật và chỉ số.

  • Trả về: number
local bonus = UpgradeDamageByClass(player)
LogAdd(LOG_BLUE, "Class damage bonus: " .. bonus)