9301
Tutorials and Tips / Re: AI-ing (.py files, coding, R+D, and help)
« on: May 01, 2010, 10:32:47 AM »
Here's PinnerPlus.py, Pinner with added support for a spinning weapon:
https://gametechmods.com/uploads/files/PinnerPlus.zip
Code: [Select]
from __future__ import generators
import plus
import AI
from AI import vector3
import Arenas
import Gooey
import math
import Tactics
class PinnerPlus(AI.SuperAI):
"Pushes without backing up"
name = "PinnerPlus"
# Designed for true pushers, though does NOT back up repeatedly like Pusher.py does. This has a spin function too.
# In-built average Throttle, Topspeed, Turn and Turnspeed values for easier AI-ing. Also invertible.
# Brought to you by G.K.
def __init__(self, **args):
AI.SuperAI.__init__(self, **args)
self.tactics.append(Tactics.Engage(self))
self.max_Throttle = 130
self.top_speed = 99
self.bInvertible = True
self.max_turn = 40
self.max_turn_speed = 3
self.spin_range = 40.0
if 'range' in args:
self.spin_range = args.get('range')
def Activate(self, active):
if active:
if AI.SuperAI.debugging:
self.debug = Gooey.Plain("watch", 0, 75, 100, 75)
tbox = self.debug.addText("line0", 0, 0, 100, 15)
tbox.setText("Throttle")
tbox = self.debug.addText("line1", 0, 15, 100, 15)
tbox.setText("Turning")
tbox = self.debug.addText("line2", 0, 30, 100, 15)
tbox.setText("")
tbox = self.debug.addText("line3", 0, 45, 100, 15)
tbox.setText("")
return AI.SuperAI.Activate(self, active)
def Tick(self):
if self.weapons:
# spin up depending on enemy's range
enemy, range = self.GetNearestEnemy()
if enemy is not None and range < self.spin_range:
self.Input("Spin", 0, 1)
elif self.GetInputStatus("Spin", 0) != 0:
self.Input("Spin", 0, 0)
return AI.SuperAI.Tick(self)
def LostComponent(self, id):
#print "Lost Component!"
return AI.SuperAI.LostComponent(self, id)
def DebugString(self, id, string):
if self.debug:
if id == 0: self.debug.get("line0").setText(string)
elif id == 1: self.debug.get("line1").setText(string)
elif id == 2: self.debug.get("line2").setText(string)
elif id == 3: self.debug.get("line3").setText(string)
AI.register(PinnerPlus)
https://gametechmods.com/uploads/files/PinnerPlus.zip