mrmin123 / kancolle-auto

Kantai Collection (Kancolle) bot/automation tool - DEPERECATED - see kcauto-kai:
https://github.com/mrmin123/kcauto-kai
54 stars 22 forks source link

[Bug] Frequent crashes when trying to switch subs #188

Closed dice4321 closed 8 years ago

dice4321 commented 8 years ago

If you are submitting a feature request or a non-bug report, please feel free to delete this template. Also feel free to delete sections of this template you do not find relevant when submitting a bug report. Thanks!

Environment details

Is the issue consistent (can be reproduced consistently) or is it transient (only happens sometimes)? Please check one of the boxes:

This has happened to me multiple times now, sometimes it happens and sometimes it doesnt. Kancolle-auto would just stop working when its trying to switch subs, I think it skips a click somewhere in here and cant find the switch ship button.

Console log (if applicable)

https://i.imgur.com/REYKh1T.jpg

Relevant config snippet (if applicable)

###########################################################################
# ============================= IMPORTANT!! ============================= #
# Please refer to the wiki pages for guidance on setting up this file!:   #
# Detailed explanation of config file:                                    #
#   https://github.com/mrmin123/kancolle-auto/wiki/Setup-config.ini       #
# Example configs:                                                        #
#   https://github.com/mrmin123/kancolle-auto/wiki/Example-configs        #
#   https://github.com/mrmin123/kancolle-auto/wiki/Example-Event-configs  #
###########################################################################

[General]
# The program/window name of your Kancolle container. Examples include Google Chrome,
# Firefox, KanColleViewer!, KanColleTool Viewer, Electronic Observer, etc...
Program: KC3

# Which built-in recovery method to use when you get catbomb'ed. Valid options are Browser,
# KC3, KCV, KCT, and EO.
RecoveryMethod: KC3

# Your machine's timezone's difference to JST in full hours. Relevant to the Quests and PvP
# modules. Default is 0, same timezone as JST.
JSTOffset = 0

# How often kancolle-auto should run its loop, specified in full seconds. A lower value will make
# kancolle-auto be quicker to respond to timers, while a higher value will make it slower, but
# perhaps guard against bot-detection. Default value is 20.
SleepCycle = 0

# Specifies the desired # of menus to randomly walk through. The number of sidesteps range from 0
# to the Paranoia value. Setting this value to at least 1 is recommended (0 to 1 sidesteps).
Paranoia = 0

# If you have a slow computer/network connection, you may encounter frequent FindFailed errors.
# Increase this value by whole numbers (seconds) to increase the length of all sleep/wait timers
# to avoid this. Default is 0.
SleepModifier = 0

[ScheduledSleep]
# Set to True if you want kancolle-auto to automatically sleep/pause at set times. Highly
# recommended that you set this to True if you intend to run kancolle-auto for a long period of
# time.
Enabled = True

# Define around when you would like schedule sleep to start, in military time. Default time is
#0030, meaning that Schedule Sleep will begin sometimes between 12:30AM and 1AM. Relative to your
# computer's time.
StartTime = 0800

# How long you want the sleep to last, in hours (decimals are OK). Anywhere between 0 to 10 minutes
# are added randomly to the actual timer. Default value is 3.5 (hours).
SleepLength = 4

[Expeditions]
# Set to True if you want kancolle-auto to run expeditions; False if not.
Enabled: True

# Define which Expedition a fleet should go on. If you do not have a Fleet unlocked
# or you don't want it to run an expedition, just leave its value blank.
Fleet2: 21
Fleet3: 5
Fleet4: 2

[PvP]
# Set to True if you want Fleet 1 to run PvP sorties; False if not. NOTE: line-ahead formation
# will be selected for everything, regardless of enemy fleet...
Enabled: False

# Specify which saved fleet composition should be used for PvP, with the first saved fleet being 1.
# NOTE: this value is only relevant if both PvP and Combat modules are enabled with different
# fleets assigned to them! Setting the FleetComp value to 0 for either module, or setting them to
# the same value will disable the fleet composition switcher.
FleetComp: 1

[Combat]
# Set to True if you want Fleet 1 to run combat sorties; False if not.
Enabled: True

# Specify which saved fleet composition should be used for Combat, with the first saved fleet
# being 1.
# NOTE: this value is only relevant if both PvP and Combat modules are enabled with different
# fleets assigned to them! Setting the FleetComp value to 0 for either module, or setting them to
# the same value will disable the fleet composition switcher.
FleetComp: 1

# Set which area you want to sortie to.
# Example 1: if you're running 3-2-A, set this to '3'
# Example 2: if you're running 2-3 (Orel), set this to '2'
# Example 3: if you're running Events, set this to 'E'
Area: 3

# Set which subarea you want to sortie to.
# Example 1: if you're running 3-2-A, set this to '2'
# Example 2: if you're running 2-3 (Orel), set this to '3'
# Example 3: if you're running the first map (1) of the second screen of maps (2) in the Event
#   screen, set this to '2-1'
Subarea: 2

# Specify whether the map you're running utilizes Combined Fleets or not. Only relevant for Events.
# Will automatically handle FCFs and the extra ships needing repairs + resupplies. This also turns
# off PvP and Fleet 2's Expedition, regardless of what you input above.
CombinedFleet: False

# Maximum number of combat nodes to run. Resource/hazard nodes do not count.
# Example 1: if you're running 3-2-A, set this to '1' (1st node only)
# Example 2: if you're running 2-3 (Orel), set this to '3' or above
Nodes: 1

# If the map you are sortieing to involves node selections, use this to point at the image
# generated for that specific node. For example, if you want to always head to node K on E-3 of
# Winter 2016, set this to '_node_E-3-K' to reference the '_node_E-3-K.png' image included.
# For other maps, please generate this image yourself (a 70px x 70px image of the node during
# node selection, with the desired node being in the center of the image).
NodeSelects:

# Formations to use at each combat node, separated by commas. Valid options are
# line_ahead, double_line, diamond, echelon, or line_abreast. If the number of
# formations you've specified does not match the number of nodes you specified above,
# the script will default to line_ahead for the remaining nodes.
# Example 1: if you're running 3-2-A, set this to 'line_ahead'
# Example 2: if you're running 2-3 (Orel), set this to 'line_ahead' (remaining nodes
#     defaults to 'line_ahead')
# For combined fleets, the valid options are combinedfleet_1, combinedfleet_2, combinedfleet_3,
# combinedfleet_4, in order of how they show up in the formation selection screen (left to right,
# top to bottom).
Formations: double_line, double_line, double_line, double_line, double_line

# Whether or not to engage in night battle at each combat node, separated by commas.
# Valid options are True (to engage in night battle) and False (to avoid night battle).
# If the number of night battle options you've specified does not match the number of
# nodes you specified above, the script will default to True for the remaining nodes.
# Example 1: if you're running 3-2-A, set this to 'False'
# Example 2: if you're running 2-3 (Orel), set this to 'False' (remaining nodes defaults
#     to 'True')
NightBattles: False

# Set the damage threshold for your ships. RetreatLimit specifies when sortie should be cancelled
# (retreat from sortie), and RepairLimit specifies which ships should be repaired before
# sortieing again. In addition, the tool will automatically not sortie if any ships are at the
# RepairLimit threshold. 0 = light damage, 1 = moderate damage, 2 = critical damage.
# Example: If you want the script to retreat when any ship is at critical damage, but also repair
#     any ships at moderate damage, set RetreatLimit to 2, RepairLimit to 1.
RetreatLimit: 2
RepairLimit: 2

# Set the repair time limit for repairs. kancolle-auto will automatically use a bucket to repair a
# ship if its repair time is above this # of hours. Integer values only, please. If you want to
# never use buckets, set this to '9900'. A limit of '9500' and below will allow the repair script
# to use a bucket if the OCR cannot properly read the timer, so adjust this accordingly. If you
# always want to use buckets, set it to '0'.
RepairTimeLimit: 0100

# Whether or not to find submarines under repair to switch out so kancolle-auto can continue
# sorties. Useful for maps where submarines are used to tank hits, such as 2-3 (Orel) or 3-2-A.
SubmarineSwitch: True

# Whether or not to consider fatigue/morale before sorties. If the ships have an unhappy face
# (morale of 29 or below) the script will wait for a set amount of time for morale to recover.
CheckFatigue = False

# Whether or not to sortie when the port (ship slots) is full. Set to True if you do not want
# sorties to occur when your port is full. Port checking is automatically done when sortieing to
# Event maps, since sortieing is prohibited when you do not have 5 free ship slots.
PortCheck = False

# Set this to True if you want kancolle-auto to stop sortieing to the specified map once the medal
# has been obtained. Only applicable to the monthly EOs (1-5, 2-5, 3-5, 4-5, 5-5).
MedalStop = False

# WARNING: READ THIS
# Whether or not to 'push' past the max number of defined combat nodes, REGARDLESS OF THE STATE
# OF YOUR FLEET. Only do this if the last node is a resource/non-combat node, like the end of 1-6
# and your path is 100% fixed!!! YOU MAY LOSE SHIPS WITH THIS SET TO TRUE.
LastNodePush: False

[Quests]
# Set to True if you want kancolle-auto to manage quests; False if not.
Enabled: False

# Quests to check for. Please check the Wiki linked above for a list of supported quests. Defaults
# to a list of most generic quests. kancolle-auto will ignore quests if they are not completable
# as specified by your config (if PvP is disabled, PvP quests will not be activated, and so on).
Quests: bd1, bd2, bd3, bd4, bd5, bd6, bd7, bd8, bw1, bw2, bw3, bw4, bw5, bw6, bw7, c2, c3, c4, c8, d2, d3, d4, d9, d11, e3, e4

# How often should quests be checked? Settings this to 1 will make quests be checked after every
# expedition and sortie. Default is 3.
CheckSchedule: 3
mrmin123 commented 8 years ago

@diceman112 This actually happens because of KC3Kai's subtitles, as they sometimes cover up the images used to match during the sub switch routine. The above update should keep it from crashing, even with subtitles enabled. Unfortunately the subtitles can still cover the portion of the screen used to ID whether or not the ship under repair is a submarine. These false negatives will make kancolle-auto wait for that ship's repair to finish, instead of switching it out. Minor inconvenience, but if constant combat is important to you then the workaround would be to disable KC3's subtitles.

dice4321 commented 8 years ago

@mrmin123 wow! Thanks for looking into my problem and directing me to the solution! maybe I'll try out KCV since I was using KC3 for the subtitles mostly

mrmin123 commented 8 years ago

@diceman112 No problem! Honestly, I think with the above changes the chance of kancolle-auto crashing even with KC3's subtitles will be very very rare... The only thing I can't guarantee is the submarine switch subroutine properly recognizing that the ship in question is a submarine. You can also just disable KC3's subtitles when you're just letting the bot go. Just throwing out some ideas.