사용자 도구

사이트 도구


ko:petai

펫 인공지능 스크립트


펫 인공지능 스크립트는 서버스크립트와 같이 프로젝트폴더/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)

                -- 최초 PetAI 등록시 실행
                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
)
ko/petai.txt · 마지막으로 수정됨: 2019/04/02 05:44 저자 리크