Docs

아이작 커스텀 효과 가이드


커스텀 효과 실행 방식

명령어 실행 방식

Lua 함수 실행 방식 (고급)


Playsquad Lua API Docs

EffectRequest

InterplayEffect

PlayerSayQueue

PlsInterplayEffectManager


기타 문서

모드 콘솔 명령어 목록

예시 모드

명령어 관련 팁

Lua 함수 실행 방식 (고급)

<aside> 📢

Lua 함수 실행 방식은 아직 실험 기능입니다. 업데이트마다 지원하는 기능이 달라질 수 있습니다.

</aside>

플레이스쿼드 모드에 등록된 함수를 실행하는 방식입니다.

모드 개발자가 원하는 효과를 외부 모드에서 직접 만들어 플레이스쿼드 모드에 등록할 수 있습니다.

아래에서 효과를 만들고 등록하는 방법을 자세히 알아보겠습니다.

발동할 효과 함수 만들기

boolean? executeEffect(EffectRequest request)

가장 먼저 원하는 효과를 발동할 함수를 만들어야 합니다.

<aside> 🧪

예시 코드

--- 플레이어 주변에 데드캣 아이템을 소환합니다.
function spawnDeadCat(effectRequest)
  local player = Isaac.GetPlayer(0)
  local spawnPosition = Isaac.GetFreeNearPosition(player.Position, 50)
  -- 데드캣 아이템을 소환합니다.
  Isaac.Spawn(
    EntityType.ENTITY_PICKUP,
    PickupVariant.PICKUP_COLLECTIBLE,
    CollectibleType.COLLECTIBLE_DEAD_CAT,
    spawnPosition,
    Vector(0, 0),
    nil
  )
  return true
end

</aside>

시청자 후원에 대한 감사 메시지를 표시하는 방법

effectRequest 인자와 플레이스쿼드 모드의 API를 활용하여 효과가 발동될 때 화면에 리액션 메시지를 표시하는 코드를 작성할 수 있습니다.

<aside> 🧪

예시 코드

--- 플레이어 주변에 데드캣 아이템을 소환하고 감사 메시지를 표시합니다.
function spawnDeadCat(effectRequest)
  local player = Isaac.GetPlayer(0)
  local spawnPosition = Isaac.GetFreeNearPosition(player.Position, 50)
  -- 데드캣 아이템을 소환합니다.
  Isaac.Spawn(
    EntityType.ENTITY_PICKUP,
    PickupVariant.PICKUP_COLLECTIBLE,
    CollectibleType.COLLECTIBLE_DEAD_CAT,
    spawnPosition,
    Vector(0, 0),
    nil
  )
  -- 감사 표현을 합니다.
  if PSM then
    PSM.PlayerSayQueue:InsertEffectReaction('후원해주셔서 감사합니다', effectRequest)
  end
  return true
end

</aside>

플레이스쿼드 모드에 효과 등록하기

효과 함수 작성을 완료했다면 이제 만든 효과를 플레이스쿼드 모드에 등록할 차례입니다.

후원자가 선택한 효과와 실제 게임에서 발동할 함수를 연결하려면 플레이스쿼드 모드에 효과를 등록하는 과정이 필요합니다.

<aside> 📢

주의 사항

효과 등록 시 id가 이미 효과 목록에 존재하면 새로 등록하는 효과가 기존 효과를 덮어씁니다.

로그 파일을 통해 효과가 덮어쓰였는지 확인할 수 있으며, 현재 모드에 등록된 효과 목록을 확인하는 명령어도 제공합니다.

</aside>

<aside> 🧪

예시 코드

-- 데드캣을 소환하는 효과를 플레이스쿼드 모드에 등록합니다.
if PlsInterplayEffectManager and InterplayEffect then
  local effect = InterplayEffect:new('spawn_dead_cat', spawnDeadCat, '데드캣 소환')
  PlsInterplayEffectManager:Add(effect)
end

</aside>