コード例 #1
0
def useableAmmo():
    total = 0
    currentPlayer = readData.getPlayerDetails()
    hasWeapon = [True] + currentPlayer[6]
    for i in range(1, 7):
        if (hasWeapon[i]):
            total += currentPlayer[5][mapWeaponToAmmoType(i)]
    return total
コード例 #2
0
def findFurthestHealth():
    plrId = readData.getPlayerDetails()[0]
    objList = readData.getObjectsDetails(plrId)
    healthObj = []
    for obj in objList:
        if ("health" in obj[1].lower()):
            healthObj.append(obj)
    return findFurthestObject(healthObj)
コード例 #3
0
def turnAbsAngle(_angle):
    angle = readData.getPlayerDetails()[2]
    turn = _angle - angle
    if (abs(_angle - angle) > 180):
        if (turn > 0):  #if positive
            left = False
        else:
            left = True
    else:  #turn the right way
        if (turn > 0):
            left = True
        else:
            left = False
    while (abs(_angle - angle) >= 5):
        angle = readData.getPlayerDetails()[2]
        if (left):
            actions.turnLeft(3)
        else:
            actions.turnRight(3)
コード例 #4
0
def faceObject(objectID):
    objectDetails = readData.getObjectDetails(objectID)
    playerDetails = readData.getPlayerDetails()
    if (objectDetails != []):
        dx = objectDetails[2][0] - playerDetails[3][0]  #get Xs
        dy = objectDetails[2][1] - playerDetails[3][1]  #get Ys
        absRadAngle = math.atan2(dy, dx)
        absDegAngle = math.degrees(absRadAngle)
        if (absDegAngle < 0): absDegAngle += 360
        turnAbsAngle(absDegAngle)
コード例 #5
0
def findClosestNonEnemy():
    objects = []
    plrID = readData.getPlayerDetails()[0]
    objList = readData.getObjectsDetails(plrID)

    for obj in objList:
        if (not ("player" in obj[1].lower())
                and not ("dead" in obj[1].lower())):
            objects.append(obj)
    return findClosestObject(objects)
コード例 #6
0
def listSeenEnemies():
    seenEnemyList = []
    currentPlayerID = readData.getPlayerDetails()[0]
    objs = readData.getEnemyDetails(currentPlayerID)
    if (objs != []):
        for enemies in objs:
            print(enemies)
            if readData.LOS(currentPlayerID, enemies[0]):
                seenEnemyList.append(enemies)

    return seenEnemyList
コード例 #7
0
def findFurhtestAmmo():
    currentPlayer = readData.getPlayerDetails()
    plrId = currentPlayer[0]
    objList = readData.getObjectsDetails(plrId)
    AmmoObj = []
    for obj in objList:
        if (("shells" in obj[1].lower() and currentPlayer[5][1])
                or ("clips" in obj[1].lower() and currentPlayer[5][0])
                or ("rockets" in obj[1].lower() and currentPlayer[5][3])):
            AmmoObj.append(obj)
    return findFurthestObject(AmmoObj)
コード例 #8
0
def findLowestHPEnemy(_range):
    enemyList = readData.getEnemyDetails(readData.getPlayerDetails()[0])

    lowestHP = 9999
    lowestEnemy = -1  #negative means no enemies in range
    for enemy in enemyList:
        dist = readData.getObjectDetails(enemy[0])[3]
        if (dist <= _range and enemy[1] < lowestHP):
            lowestEnemy = enemy[0]
            lowestHP = enemy[1]

    return lowestEnemy
コード例 #9
0
def switchAndShoot(a):

    currentPlayer = readData.getPlayerDetails()
    print(currentPlayer[4])

    if (
            currentAmmo() == 0 or currentPlayer[4] == 0
            or currentPlayer[4] == 7
    ):  # if no ammo in held gun or fists are equipped, switch to somethin else
        hasWeapon = [True] + currentPlayer[6]
        actions.switchWeapon(1)
        #	hasWeapon=[True]+readData.getWeaponsStatus(plrDetails[0],plrDetails) #add [True] for fists
        for i in range(
                6, -1, -1
        ):  #start checking from back (6) and end on fists (0) if no ammo
            hasAmmo = currentPlayer[5][mapWeaponToAmmoType(i)] > 0
            #print(i,"hasAmmo",hasAmmo,hasWeapon[i])
            if (hasAmmo and hasWeapon[i]):
                actions.switchWeapon(i)  #switch to a weapon with ammo
                time.sleep(1)
                break

    actions.shoot(a)
コード例 #10
0
import utilityActions
import actions
import readData
import offensiveAction
import defensiveAction
import sys
import random

currentPlayerID = readData.getPlayerDetails()[0]

#state = HEALTH_SEARCH | AMMO_SEARCH | FIGHT | ENEMY_SEARCH
FIGHT = 0
HEALTH_SEARCH = 1
AMMO_SEARCH = 2
ENEMY_SEARCH = 3

state = FIGHT
enoughHP = True
enoughAmmo = True

previousZigZagDirection = None

#INIT position woth los
utilityActions.turnAbsAngle(90)
actions.forward(150)
count = 0
while (True):  #main loop

    #for not shooting everytime
    count += 1
コード例 #11
0
def currentAmmo():
    ammoType = mapWeaponToAmmoType(readData.getPlayerDetails()[4])
    if (ammoType >= 0):
        return readData.getPlayerDetails()[5][ammoType]
    else:
        return 9999  #fists or chainsaw dont require ammo