펫 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