playXP

서브 메뉴

Page. 140 / 271 [내 메뉴에 추가]
글쓰기
작성자 Drone (121.175.xxx.39)
작성일 2010-12-14 23:18:47 KST 조회 600
제목
여왕 AI스크립트

//--------------------------------------------------------------------------------------------------
//  *** QUEEN ***
//--------------------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------------------
order Transfusion (int player, unit aiUnit) {
    order ord;
    unitgroup group;
    aifilter filter;

    if (AIIsCampaign(player)) {
        if (PlayerDifficulty(player) < c_campAdvanced) {
            return null;
        }
    }

    ord = AICreateOrder(player, c_AB_Transfusion, 0);
    if (!UnitOrderIsValid(aiUnit, ord)) {
        return null;
    }

    group = AIFindUnits(player, null, UnitGetPosition(aiUnit),
                        AIAbilityFixed(player, c_AB_Transfusion, c_fieldRange0) + 1,
                        c_noMaxCount)
    ;

    filter = AIFilter(player);
    AISetFilterAlliance(filter, c_playerGroupAlly);
    AISetFilterLifeLost(filter, AIEffectFixed(player, c_EF_Transfusion, c_fieldEffectChange0), c_noMax);
    group = AIGetFilterGroup(filter, group);
    if (group == null) {
        return null;
    }


    return AIUnitGroupGetValidOrder(group, ord, aiUnit, c_forwards);
}

//--------------------------------------------------------------------------------------------------
order SpawnLarva (int player, unit aiUnit) {
    order ord;
    unitgroup hatcheries;
    int larvaCount;

    //  Only cast if idle.
    //
    if (UnitOrder(aiUnit, 0) != null) {
        return null;
    }

    ord = AICreateOrder(player, c_AB_SpawnMutantLarva, 0);
    if (!UnitOrderIsValid(aiUnit, ord)) {
        return null;
    }

    //  Don't cast if we already own at least 10 larva
    //
    larvaCount =
        TechTreeBehaviorCount(player, c_BF_MutantLarvaTimer, c_techCountQueuedOrBetter) * 4
      + TechTreeUnitCount(player, c_ZU_Larva, c_techCountQueuedOrBetter)
    ;
    if (larvaCount >= 10) {
        return null;
    }

    hatcheries = AIFindUnits(player,
                             c_ZB_Hatchery_Alias,
                             UnitGetPosition(aiUnit),
                             15,
                             c_noMaxCount)
                             ;
    return AIUnitGroupGetValidOrder(hatcheries, ord, aiUnit, c_backwards);
}

//--------------------------------------------------------------------------------------------------
order CreepTumor (int player, unit aiUnit) {

    order ord;
    point p;

    if (AIIsCampaign(player)) {
        return null;
    }

    //  Only cast if idle.
    //
    if (UnitOrder(aiUnit, 0) != null) {
        return null;
    }
   
    // Save at least 25 energy for spawn larva
    if (UnitGetPropertyInt(aiUnit, c_unitPropEnergy, c_unitPropCurrent) <= 50) {
        return null;
    }

    ord = AICreateOrder(player, c_AB_QueenBuild, 0);
    if (!UnitOrderIsValid(aiUnit, ord)) {
        return null;
    }

    //  Don't cast if there is no creep point set for this player.
    p = AIGetBestCreepSpot(player, aiUnit, 9);
    if (p == null) {
        return null;
    }

    OrderSetTargetPlacement(ord, p, aiUnit, c_ZU_CreepTumor);
    if (!UnitOrderIsValid(aiUnit, ord)) {
        return null;
    }

    return ord;
}

//--------------------------------------------------------------------------------------------------
void AIThinkQueen (int player, unit aiUnit, unitgroup scanGroup) {
    order ord;
    unit heal;

    // burrow
    if (AIEvalTacticalData(aiUnit, null)) {
        return;
    }
    ord = SpawnLarva(player, aiUnit);
    if (ord != null) {
        AICast(aiUnit, ord, c_noMarker, c_castHold);
        return;
    }
    ord = Transfusion(player, aiUnit);
    if (ord != null) {
        AICast(aiUnit, ord, c_noMarker, c_castHold);
        return;
    }
    ord = CreepTumor(player, aiUnit);
    if (ord != null) {
        AICast(aiUnit, ord, c_noMarker, c_castRetreat);
        return;
    }
}

 

 

 

 

 

이게 유닛하나의 AI스크립트라면 믿겟습니까?

 

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이콘 별빛선율 (2010-12-14 23:35:22 KST)
0↑ ↓0
센스 이미지
짧은거 아닌가요;
아이콘 미로12 (2010-12-14 23:44:59 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
c++도잇넹
퍼스나콘 (2010-12-15 00:17:19 KST)
1↑ ↓0
센스 이미지를 등록해 주세요
//------------------------------------------------ --------------------------------------------------
/ / *** 여왕 ***
//------------------------------------------------ --------------------------------------------------
//------------------------------------------------ --------------------------------------------------
주문 수혈 (int는 플레이어, 단위 aiUnit) {
순서는 ord;
그룹 unitgroup;
aifilter 필터;
경우 (AIIsCampaign (플레이어)) {
(PlayerDifficulty는 (플레이어) c_campAdvanced <경우) {
반환 널;
}
}
는 ord = AICreateOrder (플레이어, c_AB_Transfusion, 0);
면 (! UnitOrderIsValid (aiUnit,는 ord)) {
반환 널;
}
그룹 = AIFindUnits (플레이어, null로, UnitGetPosition (aiUnit)
AIAbilityFixed (플레이어, c_AB_Transfusion, c_fieldRange0) + 1,
c_noMaxCount)
;
필터 = AIFilter (선수);
AISetFilterAlliance (필터, c_playerGroupAlly);
AISetFilterLifeLost (필터, AIEffectFixed (플레이어, c_EF_Transfusion, c_fieldEffectChange0), c_noMax);
그룹 = AIGetFilterGroup (필터, 그룹);
(그룹 == null을 경우) {
반환 널;
}

반환 AIUnitGroupGetValidOrder (단체는 ord, aiUnit, c_forwards);
}
//------------------------------------------------ --------------------------------------------------
주문 SpawnLarva (int는 플레이어, 단위 aiUnit) {
순서는 ord;
hatcheries을 unitgroup;
정수 larvaCount;
유휴면 / /만이 캐스팅.
/ /
경우 (UnitOrder (aiUnit, 0)! = null로) {
반환 널;
}
는 ord = AICreateOrder (플레이어, c_AB_SpawnMutantLarva, 0);
면 (! UnitOrderIsValid (aiUnit,는 ord)) {
반환 널;
}
/ /이 경우 우리가 이미 자신의 적어도 10 유충을 캐스팅하지 마십시오
/ /
larvaCount =
TechTreeBehaviorCount (플레이어, c_BF_MutantLarvaTimer, c_techCountQueuedOrBetter) * 4
+ TechTreeUnitCount (플레이어, c_ZU_Larva, c_techCountQueuedOrBetter)
;
(larvaCount> = 10) {면
반환 널;
}
hatcheries = AIFindUnits (플레이어,
c_ZB_Hatchery_Alias,
UnitGetPosition (aiUnit)
15
c_noMaxCount)
;
반환 AIUnitGroupGetValidOrder (hatcheries,는 ord, aiUnit, c_backwards);
}
//------------------------------------------------ --------------------------------------------------
주문 CreepTumor (int는 플레이어, 단위 aiUnit) {
순서는 ord;
포인트 피;
경우 (AIIsCampaign (플레이어)) {
반환 널;
}
유휴면 / /만이 캐스팅.
/ /
경우 (UnitOrder (aiUnit, 0)! = null로) {
반환 널;
}

/ / 유충 산란을위한 최소한 25 에너지를 저장
(UnitGetPropertyInt (aiUnit, c_unitPropEnergy, c_unitPropCurrent) <= 50) {면
반환 널;
}
는 ord = AICreateOrder (플레이어, c_AB_QueenBuild, 0);
면 (! UnitOrderIsValid (aiUnit,는 ord)) {
반환 널;
}
이 선수에 대해 설정된 없음 크리프 포인트가있다면 / /이 캐스팅하지 마십시오.
피 = AIGetBestCreepSpot (플레이어, aiUnit, 9);
(피 == null을 경우) {
반환 널;
}
OrderSetTargetPlacement (는 ord, 피, aiUnit, c_ZU_CreepTumor);
면 (! UnitOrderIsValid (aiUnit,는 ord)) {
반환 널;
}
복귀는 ord;
}
//------------------------------------------------ --------------------------------------------------
AIThinkQueen에게 (int는 플레이어, 단위 aiUnit, scanGroup를 unitgroup) 무효 {
순서는 ord;
단위 치유;
/ / 버로
(AIEvalTacticalData (aiUnit, 널)) {면
반환;
}
는 ord = SpawnLarva (플레이어, aiUnit);
(는 ord! = null을 경우) {
AICast (aiUnit,는 ord, c_noMarker, c_castHold);
반환;
}
는 ord = 수혈 (플레이어, aiUnit);
(는 ord! = null을 경우) {
AICast (aiUnit,는 ord, c_noMarker, c_castHold);
반환;
}
는 ord = CreepTumor (플레이어, aiUnit);
(는 ord! = null을 경우) {
AICast (aiUnit,는 ord, c_noMarker, c_castRetreat);
반환;
}
}
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.