setti7 / svfb-gui Goto Github PK
View Code? Open in Web Editor NEWA python 3.6 program for a fully autonomous fishing bot for Stardew Valley. Work in progress.
License: MIT License
A python 3.6 program for a fully autonomous fishing bot for Stardew Valley. Work in progress.
License: MIT License
Olhar pra ver se capturas em diferentes resoluções tem o mesmo tamanho. Ver se tem diferença entre capturas com com sucesso/falha.
Pasta "Data", "Data/Training Data", arquivo config.json e etc causam um crash caso estejam faltando.
Mandar o arquivo com algum flag no nome, para indicar qual o status final daquela sessão de pesca (sucesso/fracasso)
Caso vc começa o programa ele trava no que estiver selecionado e na hora de gravar a tela, mesmo que o usuário mude o numero, continua o mesmo.
Adicionar algo do tipo:
QMessageBox.information(self, "Oops!", "Could not start score thread: %s" % e)
Para sinalizar pro usuário que deu alguma merda.
ùltimo item da tabela de data sempre está um pouco maior que os outros itens por algum motivo, tentei remover a margem de baixo e de cima mas nao resolveu
Fazer programa salvar vários arquivos training data quando offline e mandar cada um para o site individualmente quando tiver conexão com a internet. Quando for salvar o arquivo, dar a ele um nome uuid4. Quando for enviar o arquivo, renomear ele para o nome que o site aceita e enviar. Fazer isso sequancialmente para cada arquivo até que todos sejam enviados.
Quando descobrir uma forma de verificar se a seção de pesca for um sucesso/fracasso adicionar ela pra o processo de antes de salvar, para que o arquivo seja salvo com um S ou um F no final do seu nome (caso seja interessante enviar arquivos de fracasso, se não, simpliesmente não salve os arquivos de fracasso).
Com os números que aparecem no jogo (100%, 125% ...) ao inves de criar uma nova medida
Remover opção de selecionar resolução/zoom e mudar totalmente a página de configurações
Primeiro fazer template-matching da área de pesca como já é feito. Selecionar a melhor dessas áreas e dentro dela começar a procurar pelo peixe.
Isso é melhor porque o peixe não muda (em alguns casos muda, mas por enquanto vamos dizer que não) como a área da pesca.
Fazer que o programa feche caso seja percebido uma atualização crítica no site. Para isso, o modelo do Version control tem que ter um check-box de "Atualização crítica", que quando o programa acessar o site e receber, aparece um pop-up de atualização (semelhante ao que já tem, mas com o símbolo de atenção a invés do de informação) que ao ser fechado, fecha o programa junto, pra evitar que o usuário use o programa ser atualizar.
erro em np.save
Quando é aberto pela primeira vez, o programa deve verificar o save file do usuário e já setar o botão da pesca como o mais usado nos saves da pessoa. Caso não haja um botão mais usado, setar pro botão do save mais recente.
Colocar pro arquivo enviar os dados quando ele salva os dados no "training_data.py". para isso a função teria q receber um parâmetro True/False, (do checkbox de enviar automaticamente) para saber se deve enviar ou nçao os dados assim que acabar de salvar. Além disso, vai ter que importar a funação de enviar os dados no "save_data.py" e chamar a função após salvar , caso o check box esteja True )(que deve estar por default pq fodasse)
Afim de desacelerar o movimento do retângulo verde ao se aproximar do peixe, podemos simular o clique da tecla de ação de acordo com uma função probabilística, que retorna um número entre 0 e 1, ao receber a distância entre os dois..
A função deve receber a distância do centro do retangulo verde até o centro do peixe, e retornar um número entre 0 e 1, representando a probabilidade que deve ser clicado a tecla de ação. Essa probabilidade será a quantidade de vezes que o botão será clicado, em média.
Esse número deverá ser passado para outra função que irá simular o clique da tecla de ação de acordo com a probabilidade. Exemplo:
if random.random() =< click_probability(distance):
simulate_action_key()
Se a distância entre os 2 forem 0, a função deve retornar 0.5, pois isso fará que o retângulo fique parado com o peixe dentro.
Se a distância for MUITO positiva, ou seja, o peixe estiver MUITO acima do retângulo, o valor retornado deve ser próximo de 1, porém a cada ciclo deve-se diminuir (não linearmente) até que a distância se torne 0, causando a situação 1.
Se a distância for MUITO negativa, ou seja, o retângulo estiver muito acima do peixe, o valor retornado deve ser próximo de 0, mas a cada ciclo deve aumentar, a fim de desacelerar a queda do retângulo à 0, quando eventualmente a distância chegar a 0.
Quando é capturado frames e o programa tenta envia-los, caso o servidor esteja fora do ar, o score_label e a linha vertical ao seu lado vão piscar.
Testar isso, já que tem o erro do zoom
Caso já tenha um arquivo training_data.npy na pasta, ele da erro. Fazer ele ver se um arquivo com esse nome, envia-lo e depois fazer o processo normal de renomeiação/envio
Quando descobrir uma forma de verificar se a seção de pesca foi um sucesso/fracasso adicionar ela pra o processo de antes de salvar, para que o arquivo seja salvo com um nome diferente para o caso do fracasso (caso seja interessante enviar arquivos de fracasso, se não, simplesmente não salve esses arquivos).
Fazer com que ele possa rodar, mas com um aviso de "Offline" (como no Bibliopa).
For send data, and quick_check score
Grabscreen captures the screen beggining from the 0,0 point (top-left point of the screen), and not from where the game window is located.
This makes the script to not capture the lower-right part of the screen, if the game is windowned. The next image shows what the grabscreen function returns.
But it works. Don't know what to do now 🤷
Quando inicializar o programa, mostrat uma tela simples de carregamento, como a do GitKraken, onde é tentada a conexão com o servidor. Caso não haja sucesso com a conexão, o programa entra em modo offline e no lugar do label do nome do usuário aparece um link para retentar a conexão. Assim pode ser deletado o thread que tenta reconectar sempre ao servidor e tem a vantagem de simplificar o carregamento das informações da GUI.
Fazer a tela de carregamento ser um QDialog separado, que quando fechado com sucesso (conexão realizada) abre o QMainWindow em modo normal, mas caso seja fechado com erro (sem conexão), abre o QMainWindow em offline.
Make SaveData only capture BGR images from the screen (and save them to a file if they exceed a size limit so it does not overflow RAM), then make AfterProcessing analyse all BGR frames and convert it to gray images to send to the server. In the CNN bot, the AfterProcessing will need to only verify if the session was a failure or not (as it is right now). In the number-data-driven machine learning, AfterProcessing will need to measure all distances in every frame
This allows for a series of improvements:
Não é uma boa idea fazer ela aparecer caso não tenha a pasta "Training Data".
Uma melhor ideia seria ver se ter um arquivo na primeira inicialização e fazer o pop-up aparecer, com 2 botões ("OK" | "No") e caso o usuário clique em "Ok" o arquivo e removido e o popup não aparece mais. Caso clique em "No" o arquivo não é removido e a mensagem aparecerá na proxima vez.
Programa crasha sem o arquivo json
Detectar Click do mouse ao inves de só o botão c
QTimer.singleShot(2000, lambda: button.setStyleSheet(''))
Não atualiza o username_label, não escreve as credentials no config.txt e não libera o send_btn.
Escrever na config.json uma opção de "ignore login popup" para que não haja a inicialização do popup no startup do programa. Fazer ele escrever True (para ignorar) quando a tela de login for rejeitada, e False quando o usuário logar em uma conta (assim, quando ele deslogar vai aparecer novamente o popup)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.