커스텀 효과 실행 방식
Playsquad Lua API Docs
기타 문서
<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>