# engine.LingYi.entitys.unit

View Source

      1# -*- coding:utf-8 -*-
      2# Author:Liao
      3
      4from .global_util import *
      5from .waypoint import Waypoint
      6from .gameunit import GameUnit
      7
      8
      9class Unit(GameUnit):
     10    """
     11    作战单元（飞机、防空导弹和雷达站等，不包含武器和传感器）的其他操作：
     12        获取详细信息
     13        攻击作战行动：自动攻击，手动分配武器攻击，纯方位攻击
     14        反潜作战行动：投放声呐
     15        航线规划
     16        设置油门，期望速度和期望高度
     17        航线规划
     18        空中作战行动（对飞机下达起飞指令）
     19        分配任务和退出已加入任务
     20
     21    单元类
     22    1、获取挂架上的武器信息
     23    2、获取挂架统计的武器信息
     24    3、获取单元航路点列表
     25    4、获取挂架上武器的挂架ID和武器数量
     26    5、获取当前单元目标列表
     27    6、实体传感器面板， 实体是否遵循电磁管控条令
     28    7、实体传感器面板， 实体雷达开关机
     29    8、实体传感器面板， 实体声呐开关机
     30    9、实体传感器面板， 实体电子干扰开关机
     31    10、实体传感器面板， 实体激光传感器开关机
     32    11、自动攻击目标
     33    12、查询手动攻击信息
     34    13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标
     35    14、手动攻击，指定武器ID和武器数量打击某目标
     36    15、纯方位攻击
     37    16、取消武器攻击，需运行推演后调用
     38    17、单元释放一个箔条弹
     39    18、箔条连续爆破
     40    19、实体放弃某个之前设定的目标
     41    20、实体放弃所有目标，脱离接战
     42    21、反潜作战行动
     43    22、设置单元的期望速度
     44    23、设置实体油门
     45    24、设置飞机或者潜艇手动控制高度
     46    25、设置飞机单元的期望高度
     47    26、设置当前单元（飞机）的飞行高度跟随地形
     48    27、实体航线规划
     49    28、单元清除航路点
     50    29、给单元航路点设置速度和高度
     51    30、单元的航路点设置传感器
     52    31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联
     53    32、实体返航
     54    33、实体选择新基地/新港口
     55    34、加油/补给
     56    35、保持阵位-所选单元
     57    36、分配加入到任务中
     58    37、将单元分配为某打击任务的护航任务
     59    38、将单元取消分配任务
     60    39、设置单元优先挂载武器
     61    40、空中行动、船舶出动业务装卸物资
     62    41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令
     63    42、手动攻击里设置、取消武器攻击弹道
     64    43、武器航线设置
     65
     66    示例：
     67    air1_id = "sflsf0-gjlsf-sf"  # 飞机guid
     68    air1 = self.get_unit(air1_id)  # 获取飞机对象
     69    if air1 is not None:
     70        reply = air1.get_weapon_info()  # 获取此飞机挂架上的武器信息
     71        air1.switch_radar(True)  # 单元打开雷达
     72        air1.set_throttle(Throttle.Cruise)  # 设置单元巡航油门
     73    """
     74    def __init__(self, guid, name, side_name, element_type):
     75        sel_category = SelectorCategory.Unit
     76        if element_type == ElementType.Group:
     77            sel_category = SelectorCategory.Group
     78        GameUnit.__init__(self, guid, name, side_name, sel_category, element_type)
     79        # THSidePosition结构中属性：
     80        self.Lon = 0.0  # 经度
     81        self.Lat = 0.0  # 纬度
     82        self.CurrentAltitude = 0.0  # 当前高度
     83        self.CurrentHeading = 0.0  # 朝向
     84        self.Pitch = 0.0  # 纵摇，俯仰角
     85        self.Roll = 0.0  # 横摇，滚转角
     86
     87        # THActiveUnit结构中属性：
     88        self.CurrentSpeed = 0.0  # 当前速度  海里/小时
     89        self.Acc = 0.0  # 加速度/过载
     90        self.CargoToMission = ""  # 物资所属任务
     91        self.DockingCondition = False  # 值为false时不在界面显示  false为停靠状态
     92        self.Throttle = 0  # 油门状态  0:悬停 1:慢速  2：巡航  3：全速  4：加力
     93        self.Status = 0  # 活动单元状态
     94        self.FuelState = 0  # 油量状态
     95        self.WeaponState = 0  # 武器状态
     96        self.DesiredSpeed = 0.0  # 期望速度
     97        self.DesiredAltitude = 0.0  # 期望高度
     98        self.DamagePts = 0.0  # 损毁Pts值
     99        self.DamagePercent = 0.0  # 生命值、损毁百分比
    100        self.AssignedMission = ""  # 分配任务GUID
    101        self.GroupID = ""  # 编组ID
    102        self.IsAD = False  # 是否被自动检测
    103        # THAI,THWeaponry,THComponentCommDevice等结构定义请查看entitys/struct.proto文件
    104        self.AI = {}  # AI决策---结构：THAI
    105        self.Weaponry = {}  # 武器分配信息---结构：THWeaponry
    106        self.Kinematics = {}  # 机动模块---结构：THKinematics
    107        self.Navigator = {}  # 导航---结构：THNavigator
    108        self.Damage = {}  # 单元毁伤：失火和进水---结构：THDamage
    109        self.Sensory = {}  # 单元是否遵守电磁管控---结构：THSensory
    110        self.CommDevices = {}  # 通信设备字典---结构：dict:<string, THComponentCommDevice>，key:通信设备guid
    111        self.Sensors = {}  # 传感器字典---结构：dict<string, THComponentSensor>，key:传感器guid
    112        self.Mounts = {}  # 挂架字典,包含打击范围---结构：dict<string, THComponentMount>，key:挂架guid
    113        self.Magazines = {}  # 弹药库字典---结构：dict<string, THComponentMagazine>，key:弹药库guid
    114        self.Cargos = {}  # 装载物资字典---结构：dict<string, THComponentCargo>，key:货物guid
    115        self.AirFacilitys = {}  # 航空设施字典---结构：dict<string, THComponentAirFacility>，key:航空设施guid
    116        self.DockFacilitys = {}  # 舰艇停靠设施字典---结构：dict<string, THComponentDockFacility>，key:舰艇停靠设施guid
    117        self.Propulsions = {}  # 发动机字典---结构：dict<string, THComponentPropulsion>，key:发动机guid
    118        self.FuelRecs = {}  # 燃料字典---结构：dict<string, THFuelRec>，key:燃料guid
    119        self.Loadouts = {}  # 挂载方案---结构：dict<string, THLoadout>，key:挂载方案guid
    120        self.RangeSymbols = {}  # 新探测范围---结构：dict<string, THRangeSymbol>，key:范围guid
    121        self.Source = 0  # 数据来源 0：虚拟添加，1：实时数据
    122        self.CommStuff = {}  # 通信模块---结构：THCommStuff
    123
    124        # THActiveUnitInfo结构中属性：
    125        self.Category = 0  # 大类-例如2002：水面战斗舰艇
    126        self.Type = 0  # 实体类型  (暂不使用，各类型的实体类型在各自结构体中体现）
    127        self.DBID = 0  # 数据库实体ID
    128        """
    129        0:  Novice,//新手
    130        1:	Cadet,//学员
    131        2:	Regular,//一般
    132        3:	Veteran,//老手
    133        4:	Ace//高手
    134        """
    135        self.ProficiencyLevel = 2  # 熟练程度, 参考以上定义
    136        self.XSections = {}  # 信号特征参数---结构：THVectorXSection二进制序列化
    137        self.UnitType = 0  # 实体类型（飞机或船）（0:编组, 1:飞机 2:水面舰艇 3:潜艇 4:设施 6:武器 7:卫星）
    138
    139    def get_weapon_info(self):
    140        """
    141        1、获取挂架上的武器信息
    142        :return: dict, 挂架上的武器id和数量
    143        """
    144        weapon_info = {}
    145        for k, v in self.Mounts.items():
    146            if "WeaponRecs" in v:
    147                for rid, w in v["WeaponRecs"].items():
    148                    count = w["CurrentLoad"]
    149                    if count > 0:
    150                        weaponid = w["WeaponDBID"]
    151                        count = w["CurrentLoad"]
    152                        if weaponid in weapon_info:
    153                            weapon_info[weaponid] += count
    154                        else:
    155                            weapon_info[weaponid] = count
    156        return weapon_info
    157
    158    def get_mounts_weapon_info(self):
    159        """
    160        2、获取挂架统计的武器信息
    161        :return: list, 挂架上的武器统计信息
    162        """
    163        info = []
    164        for id, mount_info in self.Mounts.items():
    165            if "Component" in mount_info and "WeaponRecs" in mount_info:
    166                m_info = {}  # 武器id和数量
    167                for rid, w in mount_info["WeaponRecs"].items():
    168                    weaponid = w["WeaponDBID"]
    169                    count = w["CurrentLoad"]
    170                    if weaponid in m_info:
    171                        m_info[weaponid] += count
    172                    else:
    173                        m_info[weaponid] = count
    174                info.append({
    175                    "mount_guid": id,
    176                    "mount_dbid": mount_info["Component"]["DBID"],
    177                    "mount_name": mount_info["Component"]['Name'],
    178                    "mount_weapons": m_info
    179                })
    180        return info
    181
    182    def get_way_points_info(self):
    183        """
    184        3、获取单元航路点列表
    185        :return: list, 单元航路点列表
    186        """
    187        points = []
    188        if self.Navigator:
    189            if "PC" in self.Navigator:
    190                for point in self.Navigator["PC"]:
    191                    if "GeoPoint" in point and "Lon" in point["GeoPoint"]:
    192                        points.append({
    193                            "longitude": point["GeoPoint"]["Lon"],
    194                            "latitude": point["GeoPoint"]["Lat"],
    195                            "name": point["GeoPoint"]["Name"],
    196                            "type": point["GeoPoint"]["ID"]})
    197        return points
    198
    199    def weapon2mount(self):
    200        """
    201        4、获取挂架上武器的挂架ID和武器数量
    202        :return: dict, 武器信息
    203        """
    204        weapon_mount_info = {}
    205        for k, v in self.Mounts.items():
    206            if "Component" in v and "DBID" in v["Component"]:
    207                mount_dbid = v["Component"]["DBID"]
    208            else:
    209                continue
    210            if "WeaponRecs" in v:
    211                for rid, w in v["WeaponRecs"].items():
    212                    weaponid = w["WeaponDBID"]
    213                    count = w["CurrentLoad"]
    214                    mount_weapon_infor = {"mount": mount_dbid, "count": count}
    215                    if weaponid not in weapon_mount_info:
    216                        weapon_mount_info[weaponid] = [mount_weapon_infor]
    217                    else:
    218                        weapon_mount_info[weaponid].append(mount_weapon_infor)
    219        return weapon_mount_info
    220
    221    def get_targets(self):
    222        """
    223        5、获取当前单元目标列表
    224        :return: list, 目标列表
    225        """
    226        if isinstance(self.AI, dict):
    227            if "TargetList" in self.AI and isinstance(self.AI["TargetList"], dict):
    228                return list(self.AI["TargetList"].keys())
    229        else:
    230            return []
    231
    232    # ---------------------传感器部面板设置------------------------
    233    def EMCON_Obey_doctrine(self, is_obey):
    234        """
    235        6、实体传感器面板， 实体是否遵循电磁管控条令
    236        :param is_obey: bool(True 或 False) False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    237        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    238        """
    239        return self._game_server.api_EMCON_Obey_doctrine(self, is_obey)
    240
    241    def switch_radar(self, switch_on, radar_id=""):
    242        """
    243        7、实体传感器面板， 实体雷达开关机
    244        雷达开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    245        :param switch_on: bool(True 或 False)
    246        :param radar_id: str 雷达传感器ID
    247        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    248        """
    249        return self._game_server.api_switch_radar(self, switch_on, radar_id)
    250
    251    def switch_sonar(self, switch_on, sonar_id=""):
    252        """
    253        8、实体传感器面板， 实体声呐开关机
    254        声纳开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    255        :param switch_on: bool(True 或 False)
    256        :param sonar_id: str 声呐传感器ID
    257        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    258        """
    259        return self._game_server.api_switch_sonar(self, switch_on, sonar_id)
    260
    261    def switch_OECM(self, switch_on, sensor_id=""):
    262        """
    263        9、实体传感器面板， 实体电子干扰开关机
    264        电子干扰开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    265        :param switch_on: bool(True 或 False)
    266        :param sensor_id: str 电子干扰传感器ID
    267        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    268        """
    269        return self._game_server.api_switch_OECM(self, switch_on, sensor_id)
    270
    271    def switch_laser(self, laser_sensor_id, switch_on):
    272        """
    273        10、实体传感器面板， 选择某激光传感器进行开关
    274        设置某激光传感器开关前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开关传感器“
    275        :param laser_sensor_id: str 需设置的激光传感器ID
    276        :param switch_on: bool(True 或 False)
    277        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    278        """
    279        return self._game_server.api_switch_laser(self, switch_on, laser_sensor_id)
    280
    281    # ---------------------选择实体，鼠标右键操作------------------------
    282    def attack_auto(self, contact_guid):
    283        """
    284        11、自动攻击目标
    285        :param contact_guid: str, 目标guid
    286        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    287        """
    288        return self._game_server.api_attack_auto(self, contact_guid)
    289
    290    def attack_target_info(self, contact_guid):
    291        """
    292        12、查询手动攻击信息
    293        :param contact_guid: str, 目标guid
    294        :return: str, 本单元打击目标信息
    295        """
    296        return self._game_server.api_attack_target_info(self, contact_guid)
    297
    298    def attack_manual(self, contact_guid, mount_num, weapon_id, qty_num):
    299        """
    300        13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标
    301        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    302        :param contact_guid: str, 目标guid
    303        :param mount_num: int, 攻击者的装具 DBID，如果不指定挂架，则可传0
    304        :param weapon_id: int, 攻击者的武器 DBID
    305        :param qty_num: int, 分配武器数量
    306        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    307        """
    308        return self._game_server.api_attack_manual(self, contact_guid, mount_num, weapon_id, qty_num)
    309
    310    def attack_weapon_allocate_to_target(self, contact_guid, weapon_id, qty_num, weapon_course=[]):
    311        """
    312        14、手动攻击，指定武器ID和武器数量打击某目标
    313        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    314        :param contact_guid: str, 目标guid  example: "jfsl-24jl-fjsl242"
    315        :param weapon_id: int, 武器id  example: 596
    316        :param qty_num: int 攻击武器数量 example:2
    317        :param weapon_course: [] 攻击武器航线，example:[(12.4,-91.2),(12.9,-92.2)], 纬度、经度的元组列表；
    318                            需确认可设置武器航路，例如巡航导弹；
    319        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    320        """
    321        return self._game_server.api_attack_weapon_allocate_to_target(self, contact_guid, weapon_id, qty_num,
    322                                                                      course=weapon_course)
    323
    324    def attack_BOL(self, lat, lon, mount_num, weapon_num, qty_num):
    325        """
    326        15、纯方位攻击
    327        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    328        :param lat: float, 目标位置纬度,  example: 24.5
    329        :param lon: float, 目标位置经度   example: 144.2
    330        :param mount_num: int, 攻击者的挂架 DBID
    331        :param weapon_num: int, 攻击者的武器 DBID
    332        :param qty_num: int, 攻击武器数量
    333        :example:
    334            海洋空战.scen 想定，阿利伯克驱逐舰发射战俘导弹纯方位攻击:
    335            for unit in situation[0]:
    336                if 'DDG' in unit["name"]:
    337                    u = self.get_unit(unit["guid"])
    338                    u.attack_BOL(24.5, 157, 2804, 586, 2)
    339        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    340        """
    341        return self._game_server.api_attack_BOL(self, lat, lon, mount_num, weapon_num, qty_num)
    342
    343    def cancel_attack_contact(self, target_guid, mount_id, weapon_dbid, count):
    344        """
    345        16、取消武器攻击，需运行推演后调用
    346        :param target_guid: str,  敌方目标GUID
    347        :param mount_id: int, 挂架ID, 为0则表示不指定挂架
    348        :param weapon_dbid: int, 武器DBID
    349        :param count: int, 取消武器发射数量
    350        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    351        """
    352        return self._game_server.api_cancel_attack_contact(self, target_guid, mount_id, weapon_dbid, count)
    353
    354    def chaff_burst(self):
    355        """
    356        17、单元释放一个箔条弹
    357        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    358        """
    359        return self._game_server.api_chaff_burst(self)
    360
    361    def chaff_continous_burst(self, is_enabled):
    362        """
    363        18、箔条连续爆破
    364        :param is_enabled: bool, 是否开启或关闭连续爆破
    365        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    366        """
    367        return self._game_server.api_chaff_continous_burst(self, is_enabled)
    368
    369    def attack_drop_target(self, contact_guid):
    370        """
    371        19、实体放弃某个之前设定的目标
    372        :param contact_guid: str, 情报目标guid
    373        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    374        """
    375        return self._game_server.api_attack_drop_target(self, contact_guid)
    376
    377    def attack_drop_target_all(self):
    378        """
    379        20、实体放弃所有目标，脱离接战
    380        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    381        """
    382        return self._game_server.api_attack_drop_target_all(self)
    383
    384    def deploy_sonar(self, sonar_type, is_shallow):
    385        """
    386        21、反潜作战行动
    387        :param sonar_type: str, 声呐类型 被动"PASSIVE"、主动"ACTIVE"、吊放"DIPPING"
    388        :param is_shallow: bool, 是否浅层
    389        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    390        """
    391        return self._game_server.api_deploy_sonar(self, sonar_type, is_shallow)
    392
    393    def set_desired_speed(self, desired_speed):
    394        """
    395        22、设置单元的期望速度
    396        注意：1,飞机等单元必须有航线规划
    397            2、速度设置超过最大值时，速度被设置为最大速度；速度设置超过最小值时，速度被设置为最小速度
    398        :param desired_speed: float, 千米/小时
    399        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    400        """
    401        return self._game_server.api_set_desired_speed(self, desired_speed)
    402
    403    def set_throttle(self, enum_throttle):
    404        """
    405        23、设置实体油门
    406        :param enum_throttle: 枚举Throttle的值, 油门, global_util.py中定义, 例：Throttle.Cruise 巡航
    407        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    408        """
    409        return self._game_server.api_set_throttle(self, enum_throttle)
    410
    411    def set_alt_manual(self, is_manual):
    412        """
    413        24、设置飞机或者潜艇手动控制高度
    414        :param is_manual: bool, 是手动控制: True； 必须设置是手动控制，才能设置飞行高度层/潜艇深度
    415        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    416        """
    417        return self._game_server.api_set_alt_manual(self, is_manual)
    418
    419    def set_desired_height(self, desired_height):
    420        """
    421        25、设置飞机单元的期望高度
    422        :param desired_height: int或float, 期望高度值, 海拔高度：米
    423        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    424        """
    425        return self._game_server.api_set_desired_height(self, desired_height)
    426
    427    def follow_terrain(self, is_fellow):
    428        """
    429        26、设置当前单元（飞机）的飞行高度跟随地形
    430        设置地形跟随，需首先设置飞机手动控制高度，即接口：set_alt_manual设置为True
    431        :param is_fellow:bool, True:跟随地形
    432        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    433        """
    434        return self._game_server.api_follow_terrain(self, is_fellow)
    435
    436    def plotted_course(self, course_list):
    437        """
    438        27、实体航线规划
    439        :param course_list: list, [(lat, lon)], 例子：[(40, 39.0), (41, 39.0)]或带航路点名称
    440                                    [(40, 39.0, 'WY1'), (41, 39.0, 'WY2')]
    441        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    442        """
    443        return self._game_server.api_plotted_course(self, course_list)
    444
    445    def clear_plotted_course(self):
    446        """
    447        28、单元清除航路点
    448        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    449        """
    450        return self._game_server.api_clear_plotted_course(self)
    451
    452    def set_weapoint(self, point_id, speed, altitude):
    453        """
    454        29、给单元航路点设置速度和高度; 可以通过self.Navigator['PC']获取当前单元航路点
    455        :param point_id: str, 航路点id
    456        :param speed: float, 速度,  海里/小时
    457        :param altitude: float, 高度,  米
    458        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    459        """
    460        return self._game_server.api_set_weapoint(self, point_id, speed, altitude)
    461
    462    def set_waypoint_sensor(self, point_name, sensor_id, radar=None, sonar=None, OECM=None):
    463        """
    464        30、单元的航路点设置传感器
    465        :param point_name: str, 航路点名，需设置单元航路时，也传入航路点名称
    466        :param sensor_id: str, 传感器guid
    467        :param radar: bool, 开关雷达则赋值, True: 开
    468        :param sonar: bool, 开关声纳则赋值, True: 开
    469        :param OECM: bool, 开关电子干扰则赋值, True: 开
    470        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    471        """
    472        return self._game_server.api_set_waypoint_sensor(self, point_name, sensor_id, radar, sonar, OECM)
    473
    474    def set_waypoint_bearings(self, orient_type, points):
    475        """
    476        31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联
    477        :param orient_type: int, 0.取消 1.旋转 2.固定
    478        :param points: list, 多个参考点id列表
    479        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    480        """
    481        return self._game_server.api_set_waypoint_bearings(self, orient_type, points)
    482
    483    def return_to_base(self):
    484        """
    485        32、实体返航
    486        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    487        """
    488        self._game_server.api_return_to_base(self)
    489
    490    def select_new_base(self, base_guid):
    491        """
    492        33、实体选择新基地/新港口
    493        :param base_guid: str, 新基地的guid
    494        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    495        """
    496        return self._game_server.api_select_new_base(self, base_guid)
    497
    498    def refuel(self, refuel_unit_guid=""):
    499        """
    500        34、加油/补给
    501        :param refuel_unit_guid: str, 加油机或补给船的guid, 如果为空，则自动选择加油机/补给船
    502        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    503        """
    504        return self._game_server.api_refuel(self, refuel_unit_guid)
    505
    506    def hold_positon(self, is_hold):
    507        """
    508        35、保持阵位-所选单元
    509        :param is_hold: bool, True:保持阵位，False:不保持
    510        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    511        """
    512        self._game_server.api_hold_positon(self, is_hold)
    513
    514    def assign_to_mission(self, mission_name):
    515        """
    516        36、分配加入到任务中
    517        :param mission_name: str, 任务名称
    518        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    519        """
    520        return self._game_server.api_assign_to_mission(self, mission_name)
    521
    522    def assign_to_mission_escort(self, mission_name):
    523        """
    524        37、将单元分配为某打击任务的护航任务
    525        :param mission_name: 任务名称
    526        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    527        """
    528        return self._game_server.api_assign_to_mission_escort(self, mission_name)
    529
    530    def withdraw_from_mission(self):
    531        """
    532        38、将单元取消分配任务
    533        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    534        """
    535        return self._game_server.api_withdraw_from_mission(self)
    536
    537    def weapon_reload_priority(self, mountid, weaponDBID, enabled):
    538        """
    539        39、设置单元优先挂载武器
    540        :param mountid: 挂架id type: str
    541        :param weaponDBID: 武器数据库ID  type: int
    542        :param enabled:是否优先  type：bool
    543        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    544        """
    545        return self._game_server.api_weapon_reload_priority(self, mountid, weaponDBID, enabled)
    546
    547    def cargo_load_ops(self, host_guid, cargo_to_unit, cargo_to_host):
    548        """
    549        40、空中行动、船舶出动业务装卸物资
    550        :param host_guid: str, 实体guid  机场等可容纳飞机、船舶的基地单元GUID
    551        :param cargo_to_unit: list, 从机场向飞机装载的物资列表
    552        :param cargo_to_host: list, 从飞机向机场卸载的物资列表
    553        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    554        """
    555        return self._game_server.api_cargo_load_ops(self, host_guid, cargo_to_unit, cargo_to_host)
    556
    557    def get_way_point(self, point_id, name):
    558        """
    559        41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令
    560        :param point_id: str, 航路点Id
    561        :param name: str, 航路点名
    562        :return: 航路点对象, Waypoint实例子，条令设置类DoctrineOperator子类
    563        """
    564        waypoint = Waypoint(guid=point_id, name=name, side_name=self.Side, unit_id=self.ID,
    565                            game_server=self._game_server)
    566        return waypoint
    567
    568    def set_attack_course(self, target, weaponDBID, points=[]):
    569        """
    570        42、手动攻击里设置、取消武器攻击弹道
    571        :param target: str, 被攻击单元guid
    572        :param weaponDBID: int, 武器DBID
    573        :param points: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路） 例:[(24.2,147.2),(24.9,147.8)]
    574        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    575        """
    576        return self._game_server.api_set_attack_course(self, target, weaponDBID, points)
    577
    578    def set_weapon_course(self, weapon_rec_id, weapon_index, course_list):
    579        """
    580        43、打击任务中武器航线设置
    581        :param weapon_rec_id: str, 本单元武器挂载（Loadouts或Mounts）结构下的武器记录id
    582        :param weapon_index: int, 武器信息记录下的武器序号
    583        :param course_list: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路）
    584                                例:[(24.2,147.2),(24.9,147.8)]
    585        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    586        """
    587        return self._game_server.api_set_weapon_course(self, weapon_rec_id, weapon_index, course_list)

class Unit(engine.LingYi.entitys.gameunit.GameUnit): View Source

     10class Unit(GameUnit):
     11    """
     12    作战单元（飞机、防空导弹和雷达站等，不包含武器和传感器）的其他操作：
     13        获取详细信息
     14        攻击作战行动：自动攻击，手动分配武器攻击，纯方位攻击
     15        反潜作战行动：投放声呐
     16        航线规划
     17        设置油门，期望速度和期望高度
     18        航线规划
     19        空中作战行动（对飞机下达起飞指令）
     20        分配任务和退出已加入任务
     21
     22    单元类
     23    1、获取挂架上的武器信息
     24    2、获取挂架统计的武器信息
     25    3、获取单元航路点列表
     26    4、获取挂架上武器的挂架ID和武器数量
     27    5、获取当前单元目标列表
     28    6、实体传感器面板， 实体是否遵循电磁管控条令
     29    7、实体传感器面板， 实体雷达开关机
     30    8、实体传感器面板， 实体声呐开关机
     31    9、实体传感器面板， 实体电子干扰开关机
     32    10、实体传感器面板， 实体激光传感器开关机
     33    11、自动攻击目标
     34    12、查询手动攻击信息
     35    13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标
     36    14、手动攻击，指定武器ID和武器数量打击某目标
     37    15、纯方位攻击
     38    16、取消武器攻击，需运行推演后调用
     39    17、单元释放一个箔条弹
     40    18、箔条连续爆破
     41    19、实体放弃某个之前设定的目标
     42    20、实体放弃所有目标，脱离接战
     43    21、反潜作战行动
     44    22、设置单元的期望速度
     45    23、设置实体油门
     46    24、设置飞机或者潜艇手动控制高度
     47    25、设置飞机单元的期望高度
     48    26、设置当前单元（飞机）的飞行高度跟随地形
     49    27、实体航线规划
     50    28、单元清除航路点
     51    29、给单元航路点设置速度和高度
     52    30、单元的航路点设置传感器
     53    31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联
     54    32、实体返航
     55    33、实体选择新基地/新港口
     56    34、加油/补给
     57    35、保持阵位-所选单元
     58    36、分配加入到任务中
     59    37、将单元分配为某打击任务的护航任务
     60    38、将单元取消分配任务
     61    39、设置单元优先挂载武器
     62    40、空中行动、船舶出动业务装卸物资
     63    41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令
     64    42、手动攻击里设置、取消武器攻击弹道
     65    43、武器航线设置
     66
     67    示例：
     68    air1_id = "sflsf0-gjlsf-sf"  # 飞机guid
     69    air1 = self.get_unit(air1_id)  # 获取飞机对象
     70    if air1 is not None:
     71        reply = air1.get_weapon_info()  # 获取此飞机挂架上的武器信息
     72        air1.switch_radar(True)  # 单元打开雷达
     73        air1.set_throttle(Throttle.Cruise)  # 设置单元巡航油门
     74    """
     75    def __init__(self, guid, name, side_name, element_type):
     76        sel_category = SelectorCategory.Unit
     77        if element_type == ElementType.Group:
     78            sel_category = SelectorCategory.Group
     79        GameUnit.__init__(self, guid, name, side_name, sel_category, element_type)
     80        # THSidePosition结构中属性：
     81        self.Lon = 0.0  # 经度
     82        self.Lat = 0.0  # 纬度
     83        self.CurrentAltitude = 0.0  # 当前高度
     84        self.CurrentHeading = 0.0  # 朝向
     85        self.Pitch = 0.0  # 纵摇，俯仰角
     86        self.Roll = 0.0  # 横摇，滚转角
     87
     88        # THActiveUnit结构中属性：
     89        self.CurrentSpeed = 0.0  # 当前速度  海里/小时
     90        self.Acc = 0.0  # 加速度/过载
     91        self.CargoToMission = ""  # 物资所属任务
     92        self.DockingCondition = False  # 值为false时不在界面显示  false为停靠状态
     93        self.Throttle = 0  # 油门状态  0:悬停 1:慢速  2：巡航  3：全速  4：加力
     94        self.Status = 0  # 活动单元状态
     95        self.FuelState = 0  # 油量状态
     96        self.WeaponState = 0  # 武器状态
     97        self.DesiredSpeed = 0.0  # 期望速度
     98        self.DesiredAltitude = 0.0  # 期望高度
     99        self.DamagePts = 0.0  # 损毁Pts值
    100        self.DamagePercent = 0.0  # 生命值、损毁百分比
    101        self.AssignedMission = ""  # 分配任务GUID
    102        self.GroupID = ""  # 编组ID
    103        self.IsAD = False  # 是否被自动检测
    104        # THAI,THWeaponry,THComponentCommDevice等结构定义请查看entitys/struct.proto文件
    105        self.AI = {}  # AI决策---结构：THAI
    106        self.Weaponry = {}  # 武器分配信息---结构：THWeaponry
    107        self.Kinematics = {}  # 机动模块---结构：THKinematics
    108        self.Navigator = {}  # 导航---结构：THNavigator
    109        self.Damage = {}  # 单元毁伤：失火和进水---结构：THDamage
    110        self.Sensory = {}  # 单元是否遵守电磁管控---结构：THSensory
    111        self.CommDevices = {}  # 通信设备字典---结构：dict:<string, THComponentCommDevice>，key:通信设备guid
    112        self.Sensors = {}  # 传感器字典---结构：dict<string, THComponentSensor>，key:传感器guid
    113        self.Mounts = {}  # 挂架字典,包含打击范围---结构：dict<string, THComponentMount>，key:挂架guid
    114        self.Magazines = {}  # 弹药库字典---结构：dict<string, THComponentMagazine>，key:弹药库guid
    115        self.Cargos = {}  # 装载物资字典---结构：dict<string, THComponentCargo>，key:货物guid
    116        self.AirFacilitys = {}  # 航空设施字典---结构：dict<string, THComponentAirFacility>，key:航空设施guid
    117        self.DockFacilitys = {}  # 舰艇停靠设施字典---结构：dict<string, THComponentDockFacility>，key:舰艇停靠设施guid
    118        self.Propulsions = {}  # 发动机字典---结构：dict<string, THComponentPropulsion>，key:发动机guid
    119        self.FuelRecs = {}  # 燃料字典---结构：dict<string, THFuelRec>，key:燃料guid
    120        self.Loadouts = {}  # 挂载方案---结构：dict<string, THLoadout>，key:挂载方案guid
    121        self.RangeSymbols = {}  # 新探测范围---结构：dict<string, THRangeSymbol>，key:范围guid
    122        self.Source = 0  # 数据来源 0：虚拟添加，1：实时数据
    123        self.CommStuff = {}  # 通信模块---结构：THCommStuff
    124
    125        # THActiveUnitInfo结构中属性：
    126        self.Category = 0  # 大类-例如2002：水面战斗舰艇
    127        self.Type = 0  # 实体类型  (暂不使用，各类型的实体类型在各自结构体中体现）
    128        self.DBID = 0  # 数据库实体ID
    129        """
    130        0:  Novice,//新手
    131        1:	Cadet,//学员
    132        2:	Regular,//一般
    133        3:	Veteran,//老手
    134        4:	Ace//高手
    135        """
    136        self.ProficiencyLevel = 2  # 熟练程度, 参考以上定义
    137        self.XSections = {}  # 信号特征参数---结构：THVectorXSection二进制序列化
    138        self.UnitType = 0  # 实体类型（飞机或船）（0:编组, 1:飞机 2:水面舰艇 3:潜艇 4:设施 6:武器 7:卫星）
    139
    140    def get_weapon_info(self):
    141        """
    142        1、获取挂架上的武器信息
    143        :return: dict, 挂架上的武器id和数量
    144        """
    145        weapon_info = {}
    146        for k, v in self.Mounts.items():
    147            if "WeaponRecs" in v:
    148                for rid, w in v["WeaponRecs"].items():
    149                    count = w["CurrentLoad"]
    150                    if count > 0:
    151                        weaponid = w["WeaponDBID"]
    152                        count = w["CurrentLoad"]
    153                        if weaponid in weapon_info:
    154                            weapon_info[weaponid] += count
    155                        else:
    156                            weapon_info[weaponid] = count
    157        return weapon_info
    158
    159    def get_mounts_weapon_info(self):
    160        """
    161        2、获取挂架统计的武器信息
    162        :return: list, 挂架上的武器统计信息
    163        """
    164        info = []
    165        for id, mount_info in self.Mounts.items():
    166            if "Component" in mount_info and "WeaponRecs" in mount_info:
    167                m_info = {}  # 武器id和数量
    168                for rid, w in mount_info["WeaponRecs"].items():
    169                    weaponid = w["WeaponDBID"]
    170                    count = w["CurrentLoad"]
    171                    if weaponid in m_info:
    172                        m_info[weaponid] += count
    173                    else:
    174                        m_info[weaponid] = count
    175                info.append({
    176                    "mount_guid": id,
    177                    "mount_dbid": mount_info["Component"]["DBID"],
    178                    "mount_name": mount_info["Component"]['Name'],
    179                    "mount_weapons": m_info
    180                })
    181        return info
    182
    183    def get_way_points_info(self):
    184        """
    185        3、获取单元航路点列表
    186        :return: list, 单元航路点列表
    187        """
    188        points = []
    189        if self.Navigator:
    190            if "PC" in self.Navigator:
    191                for point in self.Navigator["PC"]:
    192                    if "GeoPoint" in point and "Lon" in point["GeoPoint"]:
    193                        points.append({
    194                            "longitude": point["GeoPoint"]["Lon"],
    195                            "latitude": point["GeoPoint"]["Lat"],
    196                            "name": point["GeoPoint"]["Name"],
    197                            "type": point["GeoPoint"]["ID"]})
    198        return points
    199
    200    def weapon2mount(self):
    201        """
    202        4、获取挂架上武器的挂架ID和武器数量
    203        :return: dict, 武器信息
    204        """
    205        weapon_mount_info = {}
    206        for k, v in self.Mounts.items():
    207            if "Component" in v and "DBID" in v["Component"]:
    208                mount_dbid = v["Component"]["DBID"]
    209            else:
    210                continue
    211            if "WeaponRecs" in v:
    212                for rid, w in v["WeaponRecs"].items():
    213                    weaponid = w["WeaponDBID"]
    214                    count = w["CurrentLoad"]
    215                    mount_weapon_infor = {"mount": mount_dbid, "count": count}
    216                    if weaponid not in weapon_mount_info:
    217                        weapon_mount_info[weaponid] = [mount_weapon_infor]
    218                    else:
    219                        weapon_mount_info[weaponid].append(mount_weapon_infor)
    220        return weapon_mount_info
    221
    222    def get_targets(self):
    223        """
    224        5、获取当前单元目标列表
    225        :return: list, 目标列表
    226        """
    227        if isinstance(self.AI, dict):
    228            if "TargetList" in self.AI and isinstance(self.AI["TargetList"], dict):
    229                return list(self.AI["TargetList"].keys())
    230        else:
    231            return []
    232
    233    # ---------------------传感器部面板设置------------------------
    234    def EMCON_Obey_doctrine(self, is_obey):
    235        """
    236        6、实体传感器面板， 实体是否遵循电磁管控条令
    237        :param is_obey: bool(True 或 False) False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    238        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    239        """
    240        return self._game_server.api_EMCON_Obey_doctrine(self, is_obey)
    241
    242    def switch_radar(self, switch_on, radar_id=""):
    243        """
    244        7、实体传感器面板， 实体雷达开关机
    245        雷达开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    246        :param switch_on: bool(True 或 False)
    247        :param radar_id: str 雷达传感器ID
    248        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    249        """
    250        return self._game_server.api_switch_radar(self, switch_on, radar_id)
    251
    252    def switch_sonar(self, switch_on, sonar_id=""):
    253        """
    254        8、实体传感器面板， 实体声呐开关机
    255        声纳开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    256        :param switch_on: bool(True 或 False)
    257        :param sonar_id: str 声呐传感器ID
    258        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    259        """
    260        return self._game_server.api_switch_sonar(self, switch_on, sonar_id)
    261
    262    def switch_OECM(self, switch_on, sensor_id=""):
    263        """
    264        9、实体传感器面板， 实体电子干扰开关机
    265        电子干扰开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    266        :param switch_on: bool(True 或 False)
    267        :param sensor_id: str 电子干扰传感器ID
    268        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    269        """
    270        return self._game_server.api_switch_OECM(self, switch_on, sensor_id)
    271
    272    def switch_laser(self, laser_sensor_id, switch_on):
    273        """
    274        10、实体传感器面板， 选择某激光传感器进行开关
    275        设置某激光传感器开关前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开关传感器“
    276        :param laser_sensor_id: str 需设置的激光传感器ID
    277        :param switch_on: bool(True 或 False)
    278        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    279        """
    280        return self._game_server.api_switch_laser(self, switch_on, laser_sensor_id)
    281
    282    # ---------------------选择实体，鼠标右键操作------------------------
    283    def attack_auto(self, contact_guid):
    284        """
    285        11、自动攻击目标
    286        :param contact_guid: str, 目标guid
    287        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    288        """
    289        return self._game_server.api_attack_auto(self, contact_guid)
    290
    291    def attack_target_info(self, contact_guid):
    292        """
    293        12、查询手动攻击信息
    294        :param contact_guid: str, 目标guid
    295        :return: str, 本单元打击目标信息
    296        """
    297        return self._game_server.api_attack_target_info(self, contact_guid)
    298
    299    def attack_manual(self, contact_guid, mount_num, weapon_id, qty_num):
    300        """
    301        13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标
    302        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    303        :param contact_guid: str, 目标guid
    304        :param mount_num: int, 攻击者的装具 DBID，如果不指定挂架，则可传0
    305        :param weapon_id: int, 攻击者的武器 DBID
    306        :param qty_num: int, 分配武器数量
    307        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    308        """
    309        return self._game_server.api_attack_manual(self, contact_guid, mount_num, weapon_id, qty_num)
    310
    311    def attack_weapon_allocate_to_target(self, contact_guid, weapon_id, qty_num, weapon_course=[]):
    312        """
    313        14、手动攻击，指定武器ID和武器数量打击某目标
    314        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    315        :param contact_guid: str, 目标guid  example: "jfsl-24jl-fjsl242"
    316        :param weapon_id: int, 武器id  example: 596
    317        :param qty_num: int 攻击武器数量 example:2
    318        :param weapon_course: [] 攻击武器航线，example:[(12.4,-91.2),(12.9,-92.2)], 纬度、经度的元组列表；
    319                            需确认可设置武器航路，例如巡航导弹；
    320        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    321        """
    322        return self._game_server.api_attack_weapon_allocate_to_target(self, contact_guid, weapon_id, qty_num,
    323                                                                      course=weapon_course)
    324
    325    def attack_BOL(self, lat, lon, mount_num, weapon_num, qty_num):
    326        """
    327        15、纯方位攻击
    328        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    329        :param lat: float, 目标位置纬度,  example: 24.5
    330        :param lon: float, 目标位置经度   example: 144.2
    331        :param mount_num: int, 攻击者的挂架 DBID
    332        :param weapon_num: int, 攻击者的武器 DBID
    333        :param qty_num: int, 攻击武器数量
    334        :example:
    335            海洋空战.scen 想定，阿利伯克驱逐舰发射战俘导弹纯方位攻击:
    336            for unit in situation[0]:
    337                if 'DDG' in unit["name"]:
    338                    u = self.get_unit(unit["guid"])
    339                    u.attack_BOL(24.5, 157, 2804, 586, 2)
    340        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    341        """
    342        return self._game_server.api_attack_BOL(self, lat, lon, mount_num, weapon_num, qty_num)
    343
    344    def cancel_attack_contact(self, target_guid, mount_id, weapon_dbid, count):
    345        """
    346        16、取消武器攻击，需运行推演后调用
    347        :param target_guid: str,  敌方目标GUID
    348        :param mount_id: int, 挂架ID, 为0则表示不指定挂架
    349        :param weapon_dbid: int, 武器DBID
    350        :param count: int, 取消武器发射数量
    351        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    352        """
    353        return self._game_server.api_cancel_attack_contact(self, target_guid, mount_id, weapon_dbid, count)
    354
    355    def chaff_burst(self):
    356        """
    357        17、单元释放一个箔条弹
    358        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    359        """
    360        return self._game_server.api_chaff_burst(self)
    361
    362    def chaff_continous_burst(self, is_enabled):
    363        """
    364        18、箔条连续爆破
    365        :param is_enabled: bool, 是否开启或关闭连续爆破
    366        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    367        """
    368        return self._game_server.api_chaff_continous_burst(self, is_enabled)
    369
    370    def attack_drop_target(self, contact_guid):
    371        """
    372        19、实体放弃某个之前设定的目标
    373        :param contact_guid: str, 情报目标guid
    374        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    375        """
    376        return self._game_server.api_attack_drop_target(self, contact_guid)
    377
    378    def attack_drop_target_all(self):
    379        """
    380        20、实体放弃所有目标，脱离接战
    381        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    382        """
    383        return self._game_server.api_attack_drop_target_all(self)
    384
    385    def deploy_sonar(self, sonar_type, is_shallow):
    386        """
    387        21、反潜作战行动
    388        :param sonar_type: str, 声呐类型 被动"PASSIVE"、主动"ACTIVE"、吊放"DIPPING"
    389        :param is_shallow: bool, 是否浅层
    390        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    391        """
    392        return self._game_server.api_deploy_sonar(self, sonar_type, is_shallow)
    393
    394    def set_desired_speed(self, desired_speed):
    395        """
    396        22、设置单元的期望速度
    397        注意：1,飞机等单元必须有航线规划
    398            2、速度设置超过最大值时，速度被设置为最大速度；速度设置超过最小值时，速度被设置为最小速度
    399        :param desired_speed: float, 千米/小时
    400        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    401        """
    402        return self._game_server.api_set_desired_speed(self, desired_speed)
    403
    404    def set_throttle(self, enum_throttle):
    405        """
    406        23、设置实体油门
    407        :param enum_throttle: 枚举Throttle的值, 油门, global_util.py中定义, 例：Throttle.Cruise 巡航
    408        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    409        """
    410        return self._game_server.api_set_throttle(self, enum_throttle)
    411
    412    def set_alt_manual(self, is_manual):
    413        """
    414        24、设置飞机或者潜艇手动控制高度
    415        :param is_manual: bool, 是手动控制: True； 必须设置是手动控制，才能设置飞行高度层/潜艇深度
    416        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    417        """
    418        return self._game_server.api_set_alt_manual(self, is_manual)
    419
    420    def set_desired_height(self, desired_height):
    421        """
    422        25、设置飞机单元的期望高度
    423        :param desired_height: int或float, 期望高度值, 海拔高度：米
    424        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    425        """
    426        return self._game_server.api_set_desired_height(self, desired_height)
    427
    428    def follow_terrain(self, is_fellow):
    429        """
    430        26、设置当前单元（飞机）的飞行高度跟随地形
    431        设置地形跟随，需首先设置飞机手动控制高度，即接口：set_alt_manual设置为True
    432        :param is_fellow:bool, True:跟随地形
    433        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    434        """
    435        return self._game_server.api_follow_terrain(self, is_fellow)
    436
    437    def plotted_course(self, course_list):
    438        """
    439        27、实体航线规划
    440        :param course_list: list, [(lat, lon)], 例子：[(40, 39.0), (41, 39.0)]或带航路点名称
    441                                    [(40, 39.0, 'WY1'), (41, 39.0, 'WY2')]
    442        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    443        """
    444        return self._game_server.api_plotted_course(self, course_list)
    445
    446    def clear_plotted_course(self):
    447        """
    448        28、单元清除航路点
    449        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    450        """
    451        return self._game_server.api_clear_plotted_course(self)
    452
    453    def set_weapoint(self, point_id, speed, altitude):
    454        """
    455        29、给单元航路点设置速度和高度; 可以通过self.Navigator['PC']获取当前单元航路点
    456        :param point_id: str, 航路点id
    457        :param speed: float, 速度,  海里/小时
    458        :param altitude: float, 高度,  米
    459        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    460        """
    461        return self._game_server.api_set_weapoint(self, point_id, speed, altitude)
    462
    463    def set_waypoint_sensor(self, point_name, sensor_id, radar=None, sonar=None, OECM=None):
    464        """
    465        30、单元的航路点设置传感器
    466        :param point_name: str, 航路点名，需设置单元航路时，也传入航路点名称
    467        :param sensor_id: str, 传感器guid
    468        :param radar: bool, 开关雷达则赋值, True: 开
    469        :param sonar: bool, 开关声纳则赋值, True: 开
    470        :param OECM: bool, 开关电子干扰则赋值, True: 开
    471        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    472        """
    473        return self._game_server.api_set_waypoint_sensor(self, point_name, sensor_id, radar, sonar, OECM)
    474
    475    def set_waypoint_bearings(self, orient_type, points):
    476        """
    477        31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联
    478        :param orient_type: int, 0.取消 1.旋转 2.固定
    479        :param points: list, 多个参考点id列表
    480        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    481        """
    482        return self._game_server.api_set_waypoint_bearings(self, orient_type, points)
    483
    484    def return_to_base(self):
    485        """
    486        32、实体返航
    487        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    488        """
    489        self._game_server.api_return_to_base(self)
    490
    491    def select_new_base(self, base_guid):
    492        """
    493        33、实体选择新基地/新港口
    494        :param base_guid: str, 新基地的guid
    495        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    496        """
    497        return self._game_server.api_select_new_base(self, base_guid)
    498
    499    def refuel(self, refuel_unit_guid=""):
    500        """
    501        34、加油/补给
    502        :param refuel_unit_guid: str, 加油机或补给船的guid, 如果为空，则自动选择加油机/补给船
    503        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    504        """
    505        return self._game_server.api_refuel(self, refuel_unit_guid)
    506
    507    def hold_positon(self, is_hold):
    508        """
    509        35、保持阵位-所选单元
    510        :param is_hold: bool, True:保持阵位，False:不保持
    511        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    512        """
    513        self._game_server.api_hold_positon(self, is_hold)
    514
    515    def assign_to_mission(self, mission_name):
    516        """
    517        36、分配加入到任务中
    518        :param mission_name: str, 任务名称
    519        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    520        """
    521        return self._game_server.api_assign_to_mission(self, mission_name)
    522
    523    def assign_to_mission_escort(self, mission_name):
    524        """
    525        37、将单元分配为某打击任务的护航任务
    526        :param mission_name: 任务名称
    527        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    528        """
    529        return self._game_server.api_assign_to_mission_escort(self, mission_name)
    530
    531    def withdraw_from_mission(self):
    532        """
    533        38、将单元取消分配任务
    534        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    535        """
    536        return self._game_server.api_withdraw_from_mission(self)
    537
    538    def weapon_reload_priority(self, mountid, weaponDBID, enabled):
    539        """
    540        39、设置单元优先挂载武器
    541        :param mountid: 挂架id type: str
    542        :param weaponDBID: 武器数据库ID  type: int
    543        :param enabled:是否优先  type：bool
    544        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    545        """
    546        return self._game_server.api_weapon_reload_priority(self, mountid, weaponDBID, enabled)
    547
    548    def cargo_load_ops(self, host_guid, cargo_to_unit, cargo_to_host):
    549        """
    550        40、空中行动、船舶出动业务装卸物资
    551        :param host_guid: str, 实体guid  机场等可容纳飞机、船舶的基地单元GUID
    552        :param cargo_to_unit: list, 从机场向飞机装载的物资列表
    553        :param cargo_to_host: list, 从飞机向机场卸载的物资列表
    554        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    555        """
    556        return self._game_server.api_cargo_load_ops(self, host_guid, cargo_to_unit, cargo_to_host)
    557
    558    def get_way_point(self, point_id, name):
    559        """
    560        41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令
    561        :param point_id: str, 航路点Id
    562        :param name: str, 航路点名
    563        :return: 航路点对象, Waypoint实例子，条令设置类DoctrineOperator子类
    564        """
    565        waypoint = Waypoint(guid=point_id, name=name, side_name=self.Side, unit_id=self.ID,
    566                            game_server=self._game_server)
    567        return waypoint
    568
    569    def set_attack_course(self, target, weaponDBID, points=[]):
    570        """
    571        42、手动攻击里设置、取消武器攻击弹道
    572        :param target: str, 被攻击单元guid
    573        :param weaponDBID: int, 武器DBID
    574        :param points: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路） 例:[(24.2,147.2),(24.9,147.8)]
    575        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    576        """
    577        return self._game_server.api_set_attack_course(self, target, weaponDBID, points)
    578
    579    def set_weapon_course(self, weapon_rec_id, weapon_index, course_list):
    580        """
    581        43、打击任务中武器航线设置
    582        :param weapon_rec_id: str, 本单元武器挂载（Loadouts或Mounts）结构下的武器记录id
    583        :param weapon_index: int, 武器信息记录下的武器序号
    584        :param course_list: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路）
    585                                例:[(24.2,147.2),(24.9,147.8)]
    586        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    587        """
    588        return self._game_server.api_set_weapon_course(self, weapon_rec_id, weapon_index, course_list)

作战单元（飞机、防空导弹和雷达站等，不包含武器和传感器）的其他操作：
获取详细信息
攻击作战行动：自动攻击，手动分配武器攻击，纯方位攻击
反潜作战行动：投放声呐
航线规划
设置油门，期望速度和期望高度
航线规划
空中作战行动（对飞机下达起飞指令）
分配任务和退出已加入任务

单元类
1、获取挂架上的武器信息
2、获取挂架统计的武器信息
3、获取单元航路点列表
4、获取挂架上武器的挂架ID和武器数量
5、获取当前单元目标列表
6、实体传感器面板， 实体是否遵循电磁管控条令
7、实体传感器面板， 实体雷达开关机
8、实体传感器面板， 实体声呐开关机
9、实体传感器面板， 实体电子干扰开关机
10、实体传感器面板， 实体激光传感器开关机
11、自动攻击目标
12、查询手动攻击信息
13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标
14、手动攻击，指定武器ID和武器数量打击某目标
15、纯方位攻击
16、取消武器攻击，需运行推演后调用
17、单元释放一个箔条弹
18、箔条连续爆破
19、实体放弃某个之前设定的目标
20、实体放弃所有目标，脱离接战
21、反潜作战行动
22、设置单元的期望速度
23、设置实体油门
24、设置飞机或者潜艇手动控制高度
25、设置飞机单元的期望高度
26、设置当前单元（飞机）的飞行高度跟随地形
27、实体航线规划
28、单元清除航路点
29、给单元航路点设置速度和高度
30、单元的航路点设置传感器
31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联
32、实体返航
33、实体选择新基地/新港口
34、加油/补给
35、保持阵位-所选单元
36、分配加入到任务中
37、将单元分配为某打击任务的护航任务
38、将单元取消分配任务
39、设置单元优先挂载武器
40、空中行动、船舶出动业务装卸物资
41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令
42、手动攻击里设置、取消武器攻击弹道
43、武器航线设置

示例：
air1_id = "sflsf0-gjlsf-sf" # 飞机guid
air1 = self.get_unit(air1_id) # 获取飞机对象
if air1 is not None:
reply = air1.get_weapon_info() # 获取此飞机挂架上的武器信息
air1.switch_radar(True) # 单元打开雷达
air1.set_throttle(Throttle.Cruise) # 设置单元巡航油门

Unit(guid, name, side_name, element_type) View Source

     75    def __init__(self, guid, name, side_name, element_type):
     76        sel_category = SelectorCategory.Unit
     77        if element_type == ElementType.Group:
     78            sel_category = SelectorCategory.Group
     79        GameUnit.__init__(self, guid, name, side_name, sel_category, element_type)
     80        # THSidePosition结构中属性：
     81        self.Lon = 0.0  # 经度
     82        self.Lat = 0.0  # 纬度
     83        self.CurrentAltitude = 0.0  # 当前高度
     84        self.CurrentHeading = 0.0  # 朝向
     85        self.Pitch = 0.0  # 纵摇，俯仰角
     86        self.Roll = 0.0  # 横摇，滚转角
     87
     88        # THActiveUnit结构中属性：
     89        self.CurrentSpeed = 0.0  # 当前速度  海里/小时
     90        self.Acc = 0.0  # 加速度/过载
     91        self.CargoToMission = ""  # 物资所属任务
     92        self.DockingCondition = False  # 值为false时不在界面显示  false为停靠状态
     93        self.Throttle = 0  # 油门状态  0:悬停 1:慢速  2：巡航  3：全速  4：加力
     94        self.Status = 0  # 活动单元状态
     95        self.FuelState = 0  # 油量状态
     96        self.WeaponState = 0  # 武器状态
     97        self.DesiredSpeed = 0.0  # 期望速度
     98        self.DesiredAltitude = 0.0  # 期望高度
     99        self.DamagePts = 0.0  # 损毁Pts值
    100        self.DamagePercent = 0.0  # 生命值、损毁百分比
    101        self.AssignedMission = ""  # 分配任务GUID
    102        self.GroupID = ""  # 编组ID
    103        self.IsAD = False  # 是否被自动检测
    104        # THAI,THWeaponry,THComponentCommDevice等结构定义请查看entitys/struct.proto文件
    105        self.AI = {}  # AI决策---结构：THAI
    106        self.Weaponry = {}  # 武器分配信息---结构：THWeaponry
    107        self.Kinematics = {}  # 机动模块---结构：THKinematics
    108        self.Navigator = {}  # 导航---结构：THNavigator
    109        self.Damage = {}  # 单元毁伤：失火和进水---结构：THDamage
    110        self.Sensory = {}  # 单元是否遵守电磁管控---结构：THSensory
    111        self.CommDevices = {}  # 通信设备字典---结构：dict:<string, THComponentCommDevice>，key:通信设备guid
    112        self.Sensors = {}  # 传感器字典---结构：dict<string, THComponentSensor>，key:传感器guid
    113        self.Mounts = {}  # 挂架字典,包含打击范围---结构：dict<string, THComponentMount>，key:挂架guid
    114        self.Magazines = {}  # 弹药库字典---结构：dict<string, THComponentMagazine>，key:弹药库guid
    115        self.Cargos = {}  # 装载物资字典---结构：dict<string, THComponentCargo>，key:货物guid
    116        self.AirFacilitys = {}  # 航空设施字典---结构：dict<string, THComponentAirFacility>，key:航空设施guid
    117        self.DockFacilitys = {}  # 舰艇停靠设施字典---结构：dict<string, THComponentDockFacility>，key:舰艇停靠设施guid
    118        self.Propulsions = {}  # 发动机字典---结构：dict<string, THComponentPropulsion>，key:发动机guid
    119        self.FuelRecs = {}  # 燃料字典---结构：dict<string, THFuelRec>，key:燃料guid
    120        self.Loadouts = {}  # 挂载方案---结构：dict<string, THLoadout>，key:挂载方案guid
    121        self.RangeSymbols = {}  # 新探测范围---结构：dict<string, THRangeSymbol>，key:范围guid
    122        self.Source = 0  # 数据来源 0：虚拟添加，1：实时数据
    123        self.CommStuff = {}  # 通信模块---结构：THCommStuff
    124
    125        # THActiveUnitInfo结构中属性：
    126        self.Category = 0  # 大类-例如2002：水面战斗舰艇
    127        self.Type = 0  # 实体类型  (暂不使用，各类型的实体类型在各自结构体中体现）
    128        self.DBID = 0  # 数据库实体ID
    129        """
    130        0:  Novice,//新手
    131        1:	Cadet,//学员
    132        2:	Regular,//一般
    133        3:	Veteran,//老手
    134        4:	Ace//高手
    135        """
    136        self.ProficiencyLevel = 2  # 熟练程度, 参考以上定义
    137        self.XSections = {}  # 信号特征参数---结构：THVectorXSection二进制序列化
    138        self.UnitType = 0  # 实体类型（飞机或船）（0:编组, 1:飞机 2:水面舰艇 3:潜艇 4:设施 6:武器 7:卫星）

Lon
Lat
CurrentAltitude
CurrentHeading
Pitch
Roll
CurrentSpeed
Acc
CargoToMission
DockingCondition
Throttle
Status
FuelState
WeaponState
DesiredSpeed
DesiredAltitude
DamagePts
DamagePercent
AssignedMission
GroupID
IsAD
AI
Weaponry
Kinematics
Navigator
Damage
Sensory
CommDevices
Sensors
Mounts
Magazines
Cargos
AirFacilitys
DockFacilitys
Propulsions
FuelRecs
Loadouts
RangeSymbols
Source
CommStuff
Category
Type
DBID

0: Novice,//新手 1: Cadet,//学员 2: Regular,//一般 3: Veteran,//老手 4: Ace//高手

ProficiencyLevel
XSections
UnitType
def get_weapon_info(self): View Source

    140    def get_weapon_info(self):
    141        """
    142        1、获取挂架上的武器信息
    143        :return: dict, 挂架上的武器id和数量
    144        """
    145        weapon_info = {}
    146        for k, v in self.Mounts.items():
    147            if "WeaponRecs" in v:
    148                for rid, w in v["WeaponRecs"].items():
    149                    count = w["CurrentLoad"]
    150                    if count > 0:
    151                        weaponid = w["WeaponDBID"]
    152                        count = w["CurrentLoad"]
    153                        if weaponid in weapon_info:
    154                            weapon_info[weaponid] += count
    155                        else:
    156                            weapon_info[weaponid] = count
    157        return weapon_info

1、获取挂架上的武器信息 :return: dict, 挂架上的武器id和数量

def get_mounts_weapon_info(self): View Source

    159    def get_mounts_weapon_info(self):
    160        """
    161        2、获取挂架统计的武器信息
    162        :return: list, 挂架上的武器统计信息
    163        """
    164        info = []
    165        for id, mount_info in self.Mounts.items():
    166            if "Component" in mount_info and "WeaponRecs" in mount_info:
    167                m_info = {}  # 武器id和数量
    168                for rid, w in mount_info["WeaponRecs"].items():
    169                    weaponid = w["WeaponDBID"]
    170                    count = w["CurrentLoad"]
    171                    if weaponid in m_info:
    172                        m_info[weaponid] += count
    173                    else:
    174                        m_info[weaponid] = count
    175                info.append({
    176                    "mount_guid": id,
    177                    "mount_dbid": mount_info["Component"]["DBID"],
    178                    "mount_name": mount_info["Component"]['Name'],
    179                    "mount_weapons": m_info
    180                })
    181        return info

2、获取挂架统计的武器信息 :return: list, 挂架上的武器统计信息

def get_way_points_info(self): View Source

    183    def get_way_points_info(self):
    184        """
    185        3、获取单元航路点列表
    186        :return: list, 单元航路点列表
    187        """
    188        points = []
    189        if self.Navigator:
    190            if "PC" in self.Navigator:
    191                for point in self.Navigator["PC"]:
    192                    if "GeoPoint" in point and "Lon" in point["GeoPoint"]:
    193                        points.append({
    194                            "longitude": point["GeoPoint"]["Lon"],
    195                            "latitude": point["GeoPoint"]["Lat"],
    196                            "name": point["GeoPoint"]["Name"],
    197                            "type": point["GeoPoint"]["ID"]})
    198        return points

3、获取单元航路点列表 :return: list, 单元航路点列表

def weapon2mount(self): View Source

    200    def weapon2mount(self):
    201        """
    202        4、获取挂架上武器的挂架ID和武器数量
    203        :return: dict, 武器信息
    204        """
    205        weapon_mount_info = {}
    206        for k, v in self.Mounts.items():
    207            if "Component" in v and "DBID" in v["Component"]:
    208                mount_dbid = v["Component"]["DBID"]
    209            else:
    210                continue
    211            if "WeaponRecs" in v:
    212                for rid, w in v["WeaponRecs"].items():
    213                    weaponid = w["WeaponDBID"]
    214                    count = w["CurrentLoad"]
    215                    mount_weapon_infor = {"mount": mount_dbid, "count": count}
    216                    if weaponid not in weapon_mount_info:
    217                        weapon_mount_info[weaponid] = [mount_weapon_infor]
    218                    else:
    219                        weapon_mount_info[weaponid].append(mount_weapon_infor)
    220        return weapon_mount_info

4、获取挂架上武器的挂架ID和武器数量 :return: dict, 武器信息

def get_targets(self): View Source

    222    def get_targets(self):
    223        """
    224        5、获取当前单元目标列表
    225        :return: list, 目标列表
    226        """
    227        if isinstance(self.AI, dict):
    228            if "TargetList" in self.AI and isinstance(self.AI["TargetList"], dict):
    229                return list(self.AI["TargetList"].keys())
    230        else:
    231            return []

5、获取当前单元目标列表 :return: list, 目标列表

def EMCON_Obey_doctrine(self, is_obey): View Source

    234    def EMCON_Obey_doctrine(self, is_obey):
    235        """
    236        6、实体传感器面板， 实体是否遵循电磁管控条令
    237        :param is_obey: bool(True 或 False) False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    238        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    239        """
    240        return self._game_server.api_EMCON_Obey_doctrine(self, is_obey)

6、实体传感器面板， 实体是否遵循电磁管控条令 :param is_obey: bool(True 或 False) False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“ :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def switch_radar(self, switch_on, radar_id=''): View Source

    242    def switch_radar(self, switch_on, radar_id=""):
    243        """
    244        7、实体传感器面板， 实体雷达开关机
    245        雷达开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    246        :param switch_on: bool(True 或 False)
    247        :param radar_id: str 雷达传感器ID
    248        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    249        """
    250        return self._game_server.api_switch_radar(self, switch_on, radar_id)

7、实体传感器面板， 实体雷达开关机 雷达开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“ :param switch_on: bool(True 或 False) :param radar_id: str 雷达传感器ID :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def switch_sonar(self, switch_on, sonar_id=''): View Source

    252    def switch_sonar(self, switch_on, sonar_id=""):
    253        """
    254        8、实体传感器面板， 实体声呐开关机
    255        声纳开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    256        :param switch_on: bool(True 或 False)
    257        :param sonar_id: str 声呐传感器ID
    258        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    259        """
    260        return self._game_server.api_switch_sonar(self, switch_on, sonar_id)

8、实体传感器面板， 实体声呐开关机 声纳开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“ :param switch_on: bool(True 或 False) :param sonar_id: str 声呐传感器ID :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def switch_OECM(self, switch_on, sensor_id=''): View Source

    262    def switch_OECM(self, switch_on, sensor_id=""):
    263        """
    264        9、实体传感器面板， 实体电子干扰开关机
    265        电子干扰开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“
    266        :param switch_on: bool(True 或 False)
    267        :param sensor_id: str 电子干扰传感器ID
    268        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    269        """
    270        return self._game_server.api_switch_OECM(self, switch_on, sensor_id)

9、实体传感器面板， 实体电子干扰开关机 电子干扰开启前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开启、关闭雷达、声纳、电子干扰“ :param switch_on: bool(True 或 False) :param sensor_id: str 电子干扰传感器ID :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def switch_laser(self, laser_sensor_id, switch_on): View Source

    272    def switch_laser(self, laser_sensor_id, switch_on):
    273        """
    274        10、实体传感器面板， 选择某激光传感器进行开关
    275        设置某激光传感器开关前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开关传感器“
    276        :param laser_sensor_id: str 需设置的激光传感器ID
    277        :param switch_on: bool(True 或 False)
    278        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    279        """
    280        return self._game_server.api_switch_laser(self, switch_on, laser_sensor_id)

10、实体传感器面板， 选择某激光传感器进行开关 设置某激光传感器开关前，必须确保”实体是否遵循电磁管控条令“为False，即False表示”不需要管控电磁条令，用户可随意开关传感器“ :param laser_sensor_id: str 需设置的激光传感器ID :param switch_on: bool(True 或 False) :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def attack_auto(self, contact_guid): View Source

    283    def attack_auto(self, contact_guid):
    284        """
    285        11、自动攻击目标
    286        :param contact_guid: str, 目标guid
    287        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    288        """
    289        return self._game_server.api_attack_auto(self, contact_guid)

11、自动攻击目标 :param contact_guid: str, 目标guid :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def attack_target_info(self, contact_guid): View Source

    291    def attack_target_info(self, contact_guid):
    292        """
    293        12、查询手动攻击信息
    294        :param contact_guid: str, 目标guid
    295        :return: str, 本单元打击目标信息
    296        """
    297        return self._game_server.api_attack_target_info(self, contact_guid)

12、查询手动攻击信息 :param contact_guid: str, 目标guid :return: str, 本单元打击目标信息

def attack_manual(self, contact_guid, mount_num, weapon_id, qty_num): View Source

    299    def attack_manual(self, contact_guid, mount_num, weapon_id, qty_num):
    300        """
    301        13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标
    302        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    303        :param contact_guid: str, 目标guid
    304        :param mount_num: int, 攻击者的装具 DBID，如果不指定挂架，则可传0
    305        :param weapon_id: int, 攻击者的武器 DBID
    306        :param qty_num: int, 分配武器数量
    307        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    308        """
    309        return self._game_server.api_attack_manual(self, contact_guid, mount_num, weapon_id, qty_num)

13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标 注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击 :param contact_guid: str, 目标guid :param mount_num: int, 攻击者的装具 DBID，如果不指定挂架，则可传0 :param weapon_id: int, 攻击者的武器 DBID :param qty_num: int, 分配武器数量 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def attack_weapon_allocate_to_target(self, contact_guid, weapon_id, qty_num, weapon_course=[]): View Source

    311    def attack_weapon_allocate_to_target(self, contact_guid, weapon_id, qty_num, weapon_course=[]):
    312        """
    313        14、手动攻击，指定武器ID和武器数量打击某目标
    314        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    315        :param contact_guid: str, 目标guid  example: "jfsl-24jl-fjsl242"
    316        :param weapon_id: int, 武器id  example: 596
    317        :param qty_num: int 攻击武器数量 example:2
    318        :param weapon_course: [] 攻击武器航线，example:[(12.4,-91.2),(12.9,-92.2)], 纬度、经度的元组列表；
    319                            需确认可设置武器航路，例如巡航导弹；
    320        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    321        """
    322        return self._game_server.api_attack_weapon_allocate_to_target(self, contact_guid, weapon_id, qty_num,
    323                                                                      course=weapon_course)

14、手动攻击，指定武器ID和武器数量打击某目标 注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击 :param contact_guid: str, 目标guid example: "jfsl-24jl-fjsl242" :param weapon_id: int, 武器id example: 596 :param qty_num: int 攻击武器数量 example:2 :param weapon_course: [] 攻击武器航线，example:[(12.4,-91.2),(12.9,-92.2)], 纬度、经度的元组列表； 需确认可设置武器航路，例如巡航导弹； :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def attack_BOL(self, lat, lon, mount_num, weapon_num, qty_num): View Source

    325    def attack_BOL(self, lat, lon, mount_num, weapon_num, qty_num):
    326        """
    327        15、纯方位攻击
    328        注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击
    329        :param lat: float, 目标位置纬度,  example: 24.5
    330        :param lon: float, 目标位置经度   example: 144.2
    331        :param mount_num: int, 攻击者的挂架 DBID
    332        :param weapon_num: int, 攻击者的武器 DBID
    333        :param qty_num: int, 攻击武器数量
    334        :example:
    335            海洋空战.scen 想定，阿利伯克驱逐舰发射战俘导弹纯方位攻击:
    336            for unit in situation[0]:
    337                if 'DDG' in unit["name"]:
    338                    u = self.get_unit(unit["guid"])
    339                    u.attack_BOL(24.5, 157, 2804, 586, 2)
    340        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    341        """
    342        return self._game_server.api_attack_BOL(self, lat, lon, mount_num, weapon_num, qty_num)

15、纯方位攻击 注意：查看单元挂架mounts下 武器的WeaponRecs下CurrentLoad为0时，表示武器当前数量为0，为0时武器不可用于执行攻击 :param lat: float, 目标位置纬度, example: 24.5 :param lon: float, 目标位置经度 example: 144.2 :param mount_num: int, 攻击者的挂架 DBID :param weapon_num: int, 攻击者的武器 DBID :param qty_num: int, 攻击武器数量 :example: 海洋空战.scen 想定，阿利伯克驱逐舰发射战俘导弹纯方位攻击: for unit in situation[0]: if 'DDG' in unit["name"]: u = self.get_unit(unit["guid"]) u.attack_BOL(24.5, 157, 2804, 586, 2) :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def cancel_attack_contact(self, target_guid, mount_id, weapon_dbid, count): View Source

    344    def cancel_attack_contact(self, target_guid, mount_id, weapon_dbid, count):
    345        """
    346        16、取消武器攻击，需运行推演后调用
    347        :param target_guid: str,  敌方目标GUID
    348        :param mount_id: int, 挂架ID, 为0则表示不指定挂架
    349        :param weapon_dbid: int, 武器DBID
    350        :param count: int, 取消武器发射数量
    351        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    352        """
    353        return self._game_server.api_cancel_attack_contact(self, target_guid, mount_id, weapon_dbid, count)

16、取消武器攻击，需运行推演后调用 :param target_guid: str, 敌方目标GUID :param mount_id: int, 挂架ID, 为0则表示不指定挂架 :param weapon_dbid: int, 武器DBID :param count: int, 取消武器发射数量 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def chaff_burst(self): View Source

    355    def chaff_burst(self):
    356        """
    357        17、单元释放一个箔条弹
    358        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    359        """
    360        return self._game_server.api_chaff_burst(self)

17、单元释放一个箔条弹 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def chaff_continous_burst(self, is_enabled): View Source

    362    def chaff_continous_burst(self, is_enabled):
    363        """
    364        18、箔条连续爆破
    365        :param is_enabled: bool, 是否开启或关闭连续爆破
    366        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    367        """
    368        return self._game_server.api_chaff_continous_burst(self, is_enabled)

18、箔条连续爆破 :param is_enabled: bool, 是否开启或关闭连续爆破 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def attack_drop_target(self, contact_guid): View Source

    370    def attack_drop_target(self, contact_guid):
    371        """
    372        19、实体放弃某个之前设定的目标
    373        :param contact_guid: str, 情报目标guid
    374        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    375        """
    376        return self._game_server.api_attack_drop_target(self, contact_guid)

19、实体放弃某个之前设定的目标 :param contact_guid: str, 情报目标guid :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def attack_drop_target_all(self): View Source

    378    def attack_drop_target_all(self):
    379        """
    380        20、实体放弃所有目标，脱离接战
    381        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    382        """
    383        return self._game_server.api_attack_drop_target_all(self)

20、实体放弃所有目标，脱离接战 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def deploy_sonar(self, sonar_type, is_shallow): View Source

    385    def deploy_sonar(self, sonar_type, is_shallow):
    386        """
    387        21、反潜作战行动
    388        :param sonar_type: str, 声呐类型 被动"PASSIVE"、主动"ACTIVE"、吊放"DIPPING"
    389        :param is_shallow: bool, 是否浅层
    390        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    391        """
    392        return self._game_server.api_deploy_sonar(self, sonar_type, is_shallow)

21、反潜作战行动 :param sonar_type: str, 声呐类型 被动"PASSIVE"、主动"ACTIVE"、吊放"DIPPING" :param is_shallow: bool, 是否浅层 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_desired_speed(self, desired_speed): View Source

    394    def set_desired_speed(self, desired_speed):
    395        """
    396        22、设置单元的期望速度
    397        注意：1,飞机等单元必须有航线规划
    398            2、速度设置超过最大值时，速度被设置为最大速度；速度设置超过最小值时，速度被设置为最小速度
    399        :param desired_speed: float, 千米/小时
    400        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    401        """
    402        return self._game_server.api_set_desired_speed(self, desired_speed)

22、设置单元的期望速度 注意：1,飞机等单元必须有航线规划 2、速度设置超过最大值时，速度被设置为最大速度；速度设置超过最小值时，速度被设置为最小速度 :param desired_speed: float, 千米/小时 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_throttle(self, enum_throttle): View Source

    404    def set_throttle(self, enum_throttle):
    405        """
    406        23、设置实体油门
    407        :param enum_throttle: 枚举Throttle的值, 油门, global_util.py中定义, 例：Throttle.Cruise 巡航
    408        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    409        """
    410        return self._game_server.api_set_throttle(self, enum_throttle)

23、设置实体油门 :param enum_throttle: 枚举Throttle的值, 油门, global_util.py中定义, 例：Throttle.Cruise 巡航 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_alt_manual(self, is_manual): View Source

    412    def set_alt_manual(self, is_manual):
    413        """
    414        24、设置飞机或者潜艇手动控制高度
    415        :param is_manual: bool, 是手动控制: True； 必须设置是手动控制，才能设置飞行高度层/潜艇深度
    416        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    417        """
    418        return self._game_server.api_set_alt_manual(self, is_manual)

24、设置飞机或者潜艇手动控制高度 :param is_manual: bool, 是手动控制: True； 必须设置是手动控制，才能设置飞行高度层/潜艇深度 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_desired_height(self, desired_height): View Source

    420    def set_desired_height(self, desired_height):
    421        """
    422        25、设置飞机单元的期望高度
    423        :param desired_height: int或float, 期望高度值, 海拔高度：米
    424        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    425        """
    426        return self._game_server.api_set_desired_height(self, desired_height)

25、设置飞机单元的期望高度 :param desired_height: int或float, 期望高度值, 海拔高度：米 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def follow_terrain(self, is_fellow): View Source

    428    def follow_terrain(self, is_fellow):
    429        """
    430        26、设置当前单元（飞机）的飞行高度跟随地形
    431        设置地形跟随，需首先设置飞机手动控制高度，即接口：set_alt_manual设置为True
    432        :param is_fellow:bool, True:跟随地形
    433        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    434        """
    435        return self._game_server.api_follow_terrain(self, is_fellow)

26、设置当前单元（飞机）的飞行高度跟随地形 设置地形跟随，需首先设置飞机手动控制高度，即接口：set_alt_manual设置为True :param is_fellow:bool, True:跟随地形 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def plotted_course(self, course_list): View Source

    437    def plotted_course(self, course_list):
    438        """
    439        27、实体航线规划
    440        :param course_list: list, [(lat, lon)], 例子：[(40, 39.0), (41, 39.0)]或带航路点名称
    441                                    [(40, 39.0, 'WY1'), (41, 39.0, 'WY2')]
    442        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    443        """
    444        return self._game_server.api_plotted_course(self, course_list)

27、实体航线规划 :param course_list: list, [(lat, lon)], 例子：[(40, 39.0), (41, 39.0)]或带航路点名称 [(40, 39.0, 'WY1'), (41, 39.0, 'WY2')] :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def clear_plotted_course(self): View Source

    446    def clear_plotted_course(self):
    447        """
    448        28、单元清除航路点
    449        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    450        """
    451        return self._game_server.api_clear_plotted_course(self)

28、单元清除航路点 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_weapoint(self, point_id, speed, altitude): View Source

    453    def set_weapoint(self, point_id, speed, altitude):
    454        """
    455        29、给单元航路点设置速度和高度; 可以通过self.Navigator['PC']获取当前单元航路点
    456        :param point_id: str, 航路点id
    457        :param speed: float, 速度,  海里/小时
    458        :param altitude: float, 高度,  米
    459        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    460        """
    461        return self._game_server.api_set_weapoint(self, point_id, speed, altitude)

29、给单元航路点设置速度和高度; 可以通过self.Navigator['PC']获取当前单元航路点 :param point_id: str, 航路点id :param speed: float, 速度, 海里/小时 :param altitude: float, 高度, 米 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_waypoint_sensor(self, point_name, sensor_id, radar=None, sonar=None, OECM=None): View Source

    463    def set_waypoint_sensor(self, point_name, sensor_id, radar=None, sonar=None, OECM=None):
    464        """
    465        30、单元的航路点设置传感器
    466        :param point_name: str, 航路点名，需设置单元航路时，也传入航路点名称
    467        :param sensor_id: str, 传感器guid
    468        :param radar: bool, 开关雷达则赋值, True: 开
    469        :param sonar: bool, 开关声纳则赋值, True: 开
    470        :param OECM: bool, 开关电子干扰则赋值, True: 开
    471        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    472        """
    473        return self._game_server.api_set_waypoint_sensor(self, point_name, sensor_id, radar, sonar, OECM)

30、单元的航路点设置传感器 :param point_name: str, 航路点名，需设置单元航路时，也传入航路点名称 :param sensor_id: str, 传感器guid :param radar: bool, 开关雷达则赋值, True: 开 :param sonar: bool, 开关声纳则赋值, True: 开 :param OECM: bool, 开关电子干扰则赋值, True: 开 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_waypoint_bearings(self, orient_type, points): View Source

    475    def set_waypoint_bearings(self, orient_type, points):
    476        """
    477        31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联
    478        :param orient_type: int, 0.取消 1.旋转 2.固定
    479        :param points: list, 多个参考点id列表
    480        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    481        """
    482        return self._game_server.api_set_waypoint_bearings(self, orient_type, points)

31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联 :param orient_type: int, 0.取消 1.旋转 2.固定 :param points: list, 多个参考点id列表 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def return_to_base(self): View Source

    484    def return_to_base(self):
    485        """
    486        32、实体返航
    487        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    488        """
    489        self._game_server.api_return_to_base(self)

32、实体返航 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def select_new_base(self, base_guid): View Source

    491    def select_new_base(self, base_guid):
    492        """
    493        33、实体选择新基地/新港口
    494        :param base_guid: str, 新基地的guid
    495        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    496        """
    497        return self._game_server.api_select_new_base(self, base_guid)

33、实体选择新基地/新港口 :param base_guid: str, 新基地的guid :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def refuel(self, refuel_unit_guid=''): View Source

    499    def refuel(self, refuel_unit_guid=""):
    500        """
    501        34、加油/补给
    502        :param refuel_unit_guid: str, 加油机或补给船的guid, 如果为空，则自动选择加油机/补给船
    503        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    504        """
    505        return self._game_server.api_refuel(self, refuel_unit_guid)

34、加油/补给 :param refuel_unit_guid: str, 加油机或补给船的guid, 如果为空，则自动选择加油机/补给船 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def hold_positon(self, is_hold): View Source

    507    def hold_positon(self, is_hold):
    508        """
    509        35、保持阵位-所选单元
    510        :param is_hold: bool, True:保持阵位，False:不保持
    511        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    512        """
    513        self._game_server.api_hold_positon(self, is_hold)

35、保持阵位-所选单元 :param is_hold: bool, True:保持阵位，False:不保持 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def assign_to_mission(self, mission_name): View Source

    515    def assign_to_mission(self, mission_name):
    516        """
    517        36、分配加入到任务中
    518        :param mission_name: str, 任务名称
    519        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    520        """
    521        return self._game_server.api_assign_to_mission(self, mission_name)

36、分配加入到任务中 :param mission_name: str, 任务名称 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def assign_to_mission_escort(self, mission_name): View Source

    523    def assign_to_mission_escort(self, mission_name):
    524        """
    525        37、将单元分配为某打击任务的护航任务
    526        :param mission_name: 任务名称
    527        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    528        """
    529        return self._game_server.api_assign_to_mission_escort(self, mission_name)

37、将单元分配为某打击任务的护航任务 :param mission_name: 任务名称 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def withdraw_from_mission(self): View Source

    531    def withdraw_from_mission(self):
    532        """
    533        38、将单元取消分配任务
    534        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    535        """
    536        return self._game_server.api_withdraw_from_mission(self)

38、将单元取消分配任务 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def weapon_reload_priority(self, mountid, weaponDBID, enabled): View Source

    538    def weapon_reload_priority(self, mountid, weaponDBID, enabled):
    539        """
    540        39、设置单元优先挂载武器
    541        :param mountid: 挂架id type: str
    542        :param weaponDBID: 武器数据库ID  type: int
    543        :param enabled:是否优先  type：bool
    544        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    545        """
    546        return self._game_server.api_weapon_reload_priority(self, mountid, weaponDBID, enabled)

39、设置单元优先挂载武器 :param mountid: 挂架id type: str :param weaponDBID: 武器数据库ID type: int :param enabled:是否优先 type：bool :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def cargo_load_ops(self, host_guid, cargo_to_unit, cargo_to_host): View Source

    548    def cargo_load_ops(self, host_guid, cargo_to_unit, cargo_to_host):
    549        """
    550        40、空中行动、船舶出动业务装卸物资
    551        :param host_guid: str, 实体guid  机场等可容纳飞机、船舶的基地单元GUID
    552        :param cargo_to_unit: list, 从机场向飞机装载的物资列表
    553        :param cargo_to_host: list, 从飞机向机场卸载的物资列表
    554        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    555        """
    556        return self._game_server.api_cargo_load_ops(self, host_guid, cargo_to_unit, cargo_to_host)

40、空中行动、船舶出动业务装卸物资 :param host_guid: str, 实体guid 机场等可容纳飞机、船舶的基地单元GUID :param cargo_to_unit: list, 从机场向飞机装载的物资列表 :param cargo_to_host: list, 从飞机向机场卸载的物资列表 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def get_way_point(self, point_id, name): View Source

    558    def get_way_point(self, point_id, name):
    559        """
    560        41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令
    561        :param point_id: str, 航路点Id
    562        :param name: str, 航路点名
    563        :return: 航路点对象, Waypoint实例子，条令设置类DoctrineOperator子类
    564        """
    565        waypoint = Waypoint(guid=point_id, name=name, side_name=self.Side, unit_id=self.ID,
    566                            game_server=self._game_server)
    567        return waypoint

41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令 :param point_id: str, 航路点Id :param name: str, 航路点名 :return: 航路点对象, Waypoint实例子，条令设置类DoctrineOperator子类

def set_attack_course(self, target, weaponDBID, points=[]): View Source

    569    def set_attack_course(self, target, weaponDBID, points=[]):
    570        """
    571        42、手动攻击里设置、取消武器攻击弹道
    572        :param target: str, 被攻击单元guid
    573        :param weaponDBID: int, 武器DBID
    574        :param points: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路） 例:[(24.2,147.2),(24.9,147.8)]
    575        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    576        """
    577        return self._game_server.api_set_attack_course(self, target, weaponDBID, points)

42、手动攻击里设置、取消武器攻击弹道 :param target: str, 被攻击单元guid :param weaponDBID: int, 武器DBID :param points: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路） 例:[(24.2,147.2),(24.9,147.8)] :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_weapon_course(self, weapon_rec_id, weapon_index, course_list): View Source

    579    def set_weapon_course(self, weapon_rec_id, weapon_index, course_list):
    580        """
    581        43、打击任务中武器航线设置
    582        :param weapon_rec_id: str, 本单元武器挂载（Loadouts或Mounts）结构下的武器记录id
    583        :param weapon_index: int, 武器信息记录下的武器序号
    584        :param course_list: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路）
    585                                例:[(24.2,147.2),(24.9,147.8)]
    586        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    587        """
    588        return self._game_server.api_set_weapon_course(self, weapon_rec_id, weapon_index, course_list)

43、打击任务中武器航线设置 :param weapon_rec_id: str, 本单元武器挂载（Loadouts或Mounts）结构下的武器记录id :param weapon_index: int, 武器信息记录下的武器序号 :param course_list: list, [(纬度，经度),(纬度，经度)], 导弹航路（如果不赋值，则是取消武器航路） 例:[(24.2,147.2),(24.9,147.8)] :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

##### Inherited Members

engine.LingYi.entitys.gameunit.GameUnit
  secure_key2
  secure_key
  check_id_api
  get_key
  set_key
  clear_key
  delete_sub_object
engine.LingYi.entitys.operatorbase.DoctrineOperator
  Doctrine
  category
  category_str
  doctrine_switch_radar
  doctrine_switch_oecm
  doctrine_switch_sonar
  doctrine_SetEMCON_Inherit
  use_nuclear_weapons
  doctrine_weapon_control_status_air
  doctrine_weapon_control_status_surface
  doctrine_weapon_control_status_subsurface
  doctrine_weapon_control_status_land
  doctrine_ignore_plotted_course
  doctrine_engaging_ambiguous_targets
  doctrine_engage_opportunity_targets
  doctrine_ignore_emcon_under_attack
  torpedoes_kinematic_range
  doctrine_automatic_evasion
  doctrine_refuel
  doctrine_refuel_select
  doctrine_refuel_allied
  doctrine_air_operations_tempo
  doctrine_quick_turnaround
  doctrine_fuel_state_planned
  doctrine_fuel_state_rtb
  doctrine_weapon_state_planned
  doctrine_weapon_state_rtb
  doctrine_gun_strafing
  doctrine_jettison_ordnance
  doctrine_bvr_logic
  use_sams_in_anti_surface_mode
  doctrine_maintain_standoff
  doctrine_navigation_surface_mode
  avoid_contact
  dive_on_threat
  recharge_on_patrol
  recharge_on_attack
  use_aip
  dipping_sonar
  navigation_sub
  navigation_land
  set_weapon_release_authority
  wra_qty_salvo
  wra_shooter_salvo
  wra_firing_range
  wra_self_defence_distance
  withdraw_on_damage
  withdraw_on_fuel
  withdraw_on_attack
  withdraw_on_defence
  deploy_on_damage
  deploy_on_fuel
  deploy_on_attack
  deploy_on_defence
  get_doctrineWRA
engine.LingYi.entitys.element.Element
  ID
  Name
  Side
  ElementType