projects-jenz/AutismBotIngame/python/ingamefollowct.py

184 lines
7.6 KiB
Python
Raw Normal View History

2020-01-23 23:15:26 +01:00
import os
import sys
2020-01-23 23:15:26 +01:00
import subprocess
import atexit
2020-01-26 02:29:34 +01:00
from threading import Timer
2020-01-23 23:15:26 +01:00
import string
import random
import time
import socket
import codecs
2020-01-23 23:15:26 +01:00
looptestPath = '/home/gameservers/.steam/steam/steamapps/common/Counter-Strike Source/cstrike/cfg/looptest.cfg'
chatmsg = ""
2020-01-23 23:15:26 +01:00
def writeCfgInput(Input):
with open(looptestPath, 'w') as f:
f.write(Input)
2020-01-23 23:15:26 +01:00
def resetCfgInputShortWait():
str = "wait 5; "
2020-01-23 23:15:26 +01:00
with open(looptestPath, 'w') as f:
f.write(str)
time.sleep(0.5)
2020-01-23 23:15:26 +01:00
def exit_handler():
print('reached exithandler')
resetCfgInputShortWait()
2020-01-26 02:29:34 +01:00
2020-01-23 23:15:26 +01:00
def joinTeam():
str = "jointeam 2; wait 2; zspawn; wait 1; {0}; wait 5;"
2020-01-23 23:15:26 +01:00
writeCfgInput(str)
time.sleep(4.5)
print('jointeam func: ')
2020-01-23 23:15:26 +01:00
def bot_process_movement(input_line):
movement_list = [1, 0]
strInput = "-attack; wait 2; -use; wait 5; -jump; wait 5; -duck; wait 5; +attack; wait 5; cl_minmodels 1; wait 2; +use; "
movement_input = input_line[input_line.index("keyinput:") + len("keyinput:"):input_line.index("clientangles:")]
client_angles = input_line[input_line.index("clientangles:") + len("clientangles:"):input_line.index("xyz:")]
xyz_difference = input_line[input_line.index("xyz:") + len("xyz:"):input_line.index("stuckX:")]
stuckx = input_line[input_line.index("stuckX:") + len("stuckX:"):input_line.index("stuckY:")]
stucky = input_line[input_line.index("stuckY:") + len("stuckY:"):input_line.index("dist_target:")]
dist_target = input_line[input_line.index("dist_target:") + len("dist_target:"):input_line.index("targethuman:")]
targethuman = input_line[input_line.index("targethuman:") + len("targethuman:"):input_line.index("bot_on_type:")]
bot_on_type = input_line[input_line.index("bot_on_type:") + len("bot_on_type:"):]
dist_target = float(dist_target)
xyz_difference = xyz_difference.strip()
xyz_difference = [float(i.replace('\U00002013', '-')) for i in xyz_difference.split(' ')]
stuckx = int(stuckx)
stucky = int(stucky)
bot_on_type = int(bot_on_type)
if bot_on_type == 0:
print('bot_on_type ladder ')
strInput += "setang -90 0 0; wait 5; -back; wait 3; -moveleft; wait 3; -moveright; wait 5; +forward; wait 5;"
else:
if bot_on_type == 1:
print('bot_on_type water')
strInput += "+jump; wait 5;"
if dist_target > 300.0:
axis_distance = 150.0
if stuckx:
print('stuckX enabled')
if movement_list[0] == 0:
movement_list[0] = 1
elif movement_list[0] == 1:
movement_list[0] = 0
strInput += " +jump; wait 3; +duck; wait 5;"
if stucky:
print('stuckY enabled')
if movement_list[1] == 0:
movement_list[1] = 1
elif movement_list[1] == 1:
movement_list[1] = 0
strInput += " +jump; wait 3; +duck; wait 5;"
print('hunt mode: target human: ', targethuman)
print('stuckx: ', stuckx, ' stuckY: ', stucky)
#print('movement_list: ', movement_list)
if not stuckx and not stucky:
#print('xyz_difference: ', xyz_difference)
if xyz_difference[0] > axis_distance:
movement_list[0] = 1
elif xyz_difference[0] < -axis_distance:
movement_list[0] = 0
if xyz_difference[1] < -axis_distance:
movement_list[1] = 1
elif xyz_difference[1] > axis_distance:
movement_list[1] = 0
if movement_list[0] == 1:
strInput += " -back; wait 5; +forward; wait 5;"
elif movement_list[0] == 0:
strInput += " -forward; wait 5; +back; wait 5;"
if movement_list[1] == 1:
strInput += " -moveleft; wait 5; +moveright; wait 5;"
elif movement_list[1] == 0:
strInput += " -moveright; wait 5; +moveleft; wait 5;"
#print('xyz_difference[0]: ', xyz_difference[0])
#print('xyz_difference[1]: ', xyz_difference[1])
#print('movement_list[0]: ', movement_list[0], '0 = back. 1 = forward.')
#print('movement_list[1]: ', movement_list[1], '0 = moveleft. 1 = moveright')
strInput += f""" setang 0 180 0; wait 5; """
else:
print('mimic mode enabled! dist_target: ', dist_target, ' targethuman: ', targethuman)
#print('movemenet_input: ', movement_input)
strInput += f"""setang {client_angles}; wait 5; {movement_input}; wait 5; """
print('strInput final:', strInput)
writeCfgInput(strInput)
time.sleep(0.2)
writeCfgInput("wait 5;")
2020-01-23 23:15:26 +01:00
def bot_connect_ze():
#use whatever ip you want here to connect with
strdev = "connect 151.80.230.149:27019/test132;"
str1 = "connect 151.80.230.149:27015;"
writeCfgInput(str1)
time.sleep(0.2)
writeCfgInput("wait 5;")
time.sleep(15.50)
print('not yet connected')
2020-01-23 23:15:26 +01:00
if __name__ == '__main__':
atexit.register(exit_handler)
resetCfgInputShortWait()
local_ip = "127.0.0.1"
local_port = 48477
udp_external_ip = "62.210.110.245"
buffer_size = 4096 #potentially not large enough?
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock_external:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", local_port))
print('reached deadlock')
try:
while True:
data, addr = sock.recvfrom(buffer_size)
databyte = data
data = codecs.decode(data, "utf-8", "ignore")
ip = addr[0]
port = addr[1]
#print('port: ', port, " ip: ", ip)
if not data:
continue
if ip not in [local_ip, udp_external_ip]:
continue
if ip == udp_external_ip:
print("enabled remote UDP packet")
response_msg = f"""say {data}"""
writeCfgInput(response_msg)
time.sleep(0.5)
resetCfgInputShortWait()
time.sleep(0.2)
#print('data: ', data)
if data == "autismo connected":
print('Bot connected!')
time.sleep(2)
joinTeam()
elif data == "connect to ze":
bot_connect_ze()
elif "clientmessage:" in data:
sock_external.sendto(databyte, (udp_external_ip, local_port))
print('sent databyte: ', databyte)
elif data.startswith("keyinput:"):
bot_process_movement(data)
except KeyboardInterrupt:
pass
2020-02-09 00:26:05 +01:00
#/home/gameservers/.steam/debian-installation/steamapps/common/Counter-Strike Source/cstrike/cfg/autoexec.cfg:
#/home/nonroot/.steam/steam/steamapps/common/Counter-Strike Source/cstrike/cfg/autoexec.cfg:
#alias loop "exec looptest.cfg; wait 5; loop;"; wait 5; loop;
#-condebug
#cd /home/nonroot/.steam/
#cd /home/gameservers/.steam/debian-installation/
#./steam.sh -applaunch 240 -textmode -textmessagedebug -novid -nosound -noipx -nojoy -noshaderapi +exec looptest.cfg
#cd /home/gameservers/ze_runner_files
#./play.sh
#screen -A -d -m -S ze_runner ./play.sh