펫 AI 스크립팅
펫 AI 스크립트는 서버 스크립트와 같이 프로젝트 폴더/ServerScripts에 Hello.lua와 같은 파일 이름으로 존재해야 읽힙니다.
스크립트 | 설명 |
---|---|
pet | 해당 펫의 유닛(ScriptUnit)을 나타낸다. |
ai | ai가 실행할 행동(ScriptPetUnitAI)을 나타낸다. |
event | 실행될 로직을 확인한다. |
AI_INIT(-1) | 최초로 펫 AI 등록 시 실행 |
AI_UPDATE(0) | 2초마다 계속 실행 |
예제) 서버 스크립트 - 펫 AI 설정
Server.SetPetAI(
21, --펫이 될 캐릭터 id
function(pet,ai,event)
-- 최초 펫 AI 등록 시 실행
if(event == AI_INIT) then
ai.customData.timer = 1;
end
--2초마다 실행
if(event == AI_UPDATE) then
--거리가 200만큼 멀어지면 주인을 따라감
--거리가 400만큼 멀어지면 주인의 위치로 순간이동
--ai.SetFollowMaster(true,200,400)
--타깃이 없으면 주인을 따라다님
if(ai.GetTargetUnit() == nil) then
ai.SetFollowMaster(true,200,400)
end
--기본 100, 200
--ai.SetFollowMaster(true)
--가장 가까운 적 유닛을 타깃으로 지정
ai.SetNearTarget(2,200)
--펫의 타깃 존재 시 스킬 사용
--기본적으로 스킬은 타깃을 향해 발사
if(ai.GetTargetUnit() ~=nil) then
--타깃이 정해지면 따라다니는 것을 멈춤
ai.SetFollowMaster(false)
ai.StopMove()
-- 타깃이 정해지면 타깃을 따라다니면서 공격
ai.MoveToPosition(ai.GetTargetUnit().x,ai.GetTargetUnit().y)
-- 주인에게 버프 추가
ai.AddMasterBuff(15)
-- 타깃을 향해 발사
ai.UseSkill(23)
-- 펫의 주인 위치에서 타깃을 향해 발사
ai.UseSkill(
22
,nil
,Point(ai.GetMasterUnit().x,ai.GetMasterUnit().y))
end
--커스텀 데이터를 이용한 타이머 6초에 한 번씩 주위의 드롭된 아이템 획득
ai.customData.timer = ai.customData.timer + 1;
if(ai.customData.timer == 3) then
-- 반경 100의 거리 안에 들어오는 드롭 아이템 획득
ai.AcquireNearDropItem(100)
ai.customData.timer = 0;
end
end
end
)
Last updated