Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.fixiasa()
self.fixframeindexing()
return True
if label == "stage":
self.stage = unpack('> 16
self.stage &= 0x000000ff
try:
self.stage = enums.Stage(self.stage)
except ValueError:
self.stage = enums.Stage.NO_STAGE
return False
if label == "menu_state":
self.menu_state = unpack(' 4:
try:
self.player[player_int].percent = int(unpack('> 16
return False
if label == "stock":
self.player[player_int].stock = unpack('> 24
return False
# in the gamestate and decide what buttons to push on the controller
if args.framerecord:
melee.techskill.upsmashes(ai_state=gamestate.ai_state, controller=controller)
else:
melee.techskill.multishine(ai_state=gamestate.ai_state, controller=controller)
#If we're at the character select screen, choose our character
elif gamestate.menu_state == melee.enums.Menu.CHARACTER_SELECT:
melee.menuhelper.choosecharacter(character=melee.enums.Character.FOX,
gamestate=gamestate,
port=args.port,
opponent_port=args.opponent,
controller=controller,
swag=True,
start=True)
#If we're at the postgame scores screen, spam START
elif gamestate.menu_state == melee.enums.Menu.POSTGAME_SCORES:
melee.menuhelper.skippostgame(controller=controller)
#If we're at the stage select screen, choose a stage
elif gamestate.menu_state == melee.enums.Menu.STAGE_SELECT:
melee.menuhelper.choosestage(stage=melee.enums.Stage.POKEMON_STADIUM,
gamestate=gamestate,
controller=controller)
#Flush any button presses queued up
controller.flush()
if log:
log.logframe(gamestate)
log.writeframe()
#Plug our controller in
# Due to how named pipes work, this has to come AFTER running dolphin
# NOTE: If you're loading a movie file, don't connect the controller,
# dolphin will hang waiting for input and never receive it
controller.connect()
#Main loop
while True:
#"step" to the next frame
gamestate.step()
if(gamestate.processingtime * 1000 > 12):
print("WARNING: Last frame took " + str(gamestate.processingtime*1000) + "ms to process.")
#What menu are we in?
if gamestate.menu_state in [melee.enums.Menu.IN_GAME, melee.enums.Menu.SUDDEN_DEATH]:
if args.framerecord:
framedata.recordframe(gamestate)
#XXX: This is where your AI does all of its stuff!
#This line will get hit once per frame, so here is where you read
# in the gamestate and decide what buttons to push on the controller
if args.framerecord:
melee.techskill.upsmashes(ai_state=gamestate.ai_state, controller=controller)
else:
melee.techskill.multishine(ai_state=gamestate.ai_state, controller=controller)
#If we're at the character select screen, choose our character
elif gamestate.menu_state == melee.enums.Menu.CHARACTER_SELECT:
melee.menuhelper.choosecharacter(character=melee.enums.Character.FOX,
gamestate=gamestate,
port=args.port,
opponent_port=args.opponent,
controller=controller,
else:
melee.techskill.multishine(ai_state=gamestate.ai_state, controller=controller)
#If we're at the character select screen, choose our character
elif gamestate.menu_state == melee.enums.Menu.CHARACTER_SELECT:
melee.menuhelper.choosecharacter(character=melee.enums.Character.FOX,
gamestate=gamestate,
port=args.port,
opponent_port=args.opponent,
controller=controller,
swag=True,
start=True)
#If we're at the postgame scores screen, spam START
elif gamestate.menu_state == melee.enums.Menu.POSTGAME_SCORES:
melee.menuhelper.skippostgame(controller=controller)
#If we're at the stage select screen, choose a stage
elif gamestate.menu_state == melee.enums.Menu.STAGE_SELECT:
melee.menuhelper.choosestage(stage=melee.enums.Stage.POKEMON_STADIUM,
gamestate=gamestate,
controller=controller)
#Flush any button presses queued up
controller.flush()
if log:
log.logframe(gamestate)
log.writeframe()
from melee import enums, stages
from melee.enums import Action, Character
import csv
from struct import *
import binascii
import os
import socket
import math
import time
from collections import defaultdict
"""Represents the state of a running game of Melee at a given moment in time"""
class GameState:
frame = 0
stage = enums.Stage.FINAL_DESTINATION
menu_state = enums.Menu.CHARACTER_SELECT
player = dict()
projectiles = []
stage_select_cursor_x = 0.0
stage_select_cursor_y = 0.0
ready_to_start = False
distance = 0.0
sock = None
processingtime = 0.0
frametimestamp = 0.0
def __init__(self, dolphin):
#Dict with key of address, and value of (name, player)
self.locations = dict()
path = os.path.dirname(os.path.realpath(__file__))
with open(path + "/locations.csv") as csvfile:
reader = csv.DictReader(csvfile)
if(gamestate.processingtime * 1000 > 12):
print("WARNING: Last frame took " + str(gamestate.processingtime*1000) + "ms to process.")
#What menu are we in?
if gamestate.menu_state in [melee.enums.Menu.IN_GAME, melee.enums.Menu.SUDDEN_DEATH]:
if args.framerecord:
framedata.recordframe(gamestate)
#XXX: This is where your AI does all of its stuff!
#This line will get hit once per frame, so here is where you read
# in the gamestate and decide what buttons to push on the controller
if args.framerecord:
melee.techskill.upsmashes(ai_state=gamestate.ai_state, controller=controller)
else:
melee.techskill.multishine(ai_state=gamestate.ai_state, controller=controller)
#If we're at the character select screen, choose our character
elif gamestate.menu_state == melee.enums.Menu.CHARACTER_SELECT:
melee.menuhelper.choosecharacter(character=melee.enums.Character.FOX,
gamestate=gamestate,
port=args.port,
opponent_port=args.opponent,
controller=controller,
swag=True,
start=True)
#If we're at the postgame scores screen, spam START
elif gamestate.menu_state == melee.enums.Menu.POSTGAME_SCORES:
melee.menuhelper.skippostgame(controller=controller)
#If we're at the stage select screen, choose a stage
elif gamestate.menu_state == melee.enums.Menu.STAGE_SELECT:
melee.menuhelper.choosestage(stage=melee.enums.Stage.POKEMON_STADIUM,
gamestate=gamestate,
controller=controller)
#Flush any button presses queued up