De nombreux jeux mobiles ont une devise interne ou quelque chose d'utile que vous pouvez obtenir après avoir regardé les publicités. Au début, j'ai regardé une telle publicité et j'ai même trouvé quelque chose d'intéressant, mais plus j'allais, plus je me sentais comme un singe effectuant les mêmes actions, exactement les mêmes mouvements. Chaque fois pour moi comme ça - un signe - il est temps d'automatiser le processus.
L'article ne prétend pas être un prix Nobel ni aucune réalisation scientifique, je viens de faire deux options pour afficher automatiquement les annonces et mes amis l'ont aimé, j'ai donc décidé d'écrire cet article.

Parce que les robots devraient fonctionner, pas comme ça.
Depuis mon enfance, j'étais fan d'une série de courses et quand j'ai trouvé sa nouvelle version mobile, et même gratuitement - j'ai été ravie et surprise. Bien que j'ai vite compris pourquoi c'était gratuit - les achats dans le jeu sont tirés de plusieurs salaires mensuels moyens dans les régions ou d'un ou deux salaires de Moscou, ils ressemblent littéralement aux jeux de classe AAA de ces derniers temps. Sans argent réel, le processus était extrêmement lent. Mais vous pouvez regarder des publicités et surtout au début du jeu cela donne une bonne augmentation de tout, ne dérange que rapidement. Surtout lorsque la même annonce est diffusée 5 à 10 fois de suite. Et les boutons sont (dans 99,9% des cas) aux mêmes endroits. En fait, le dernier m'a fait me souvenir que j'ai plusieurs servomoteurs et Arduino et j'ai vraiment besoin de confier un tel travail vraiment mécanique au mécanisme.
Le schéma est assez simple:

Un fil jaune (ou rouge, quelqu'un comme) de servos - à 10 et 11 broches d'une arduinka,
+ 5V et la masse de celui-ci, mais les leviers des servos (écran capacitif) doivent être mis à la terre.
Mais le code n'a pas fonctionné tout de suite:
#include <Servo.h> Servo servo1; Servo servo2; void setup() { servo1.attach(10); servo2.attach(11); pinMode(LED_BUILTIN, OUTPUT); } void blynk(int cnt) { for (int i = 1; i <= cnt; i++) { digitalWrite(LED_BUILTIN, HIGH); delay(11); digitalWrite(LED_BUILTIN, LOW); delay(11); } } void hitit(Servo servo, int wait) { servo.write(180); delay(500); servo.write(90); for (int i = 1; i <= wait; i++) { delay(1000); blynk(1); } } void loop() { blynk(2); hitit(servo1, 35); // click get stuff and wait for adverts blynk(4); hitit(servo2, 15); // close advert blynk(2); hitit(servo1, 10); // click collect reward delay(2000); }
Plus tard, je me suis souvenu / découvert qu'ici le type INT est extrêmement petit et que le retard (35 * 1000) ne fonctionne pas.
Bon, d'accord, je l'ai fait clignoter toutes les secondes, c'est un projet amusant, je ne voulais vraiment pas creuser à ce moment-là. Et j'évite toujours absolument tout ce qui concerne le C ++ et les types stricts, enfin pas le mien.
À l'aide d'un tas de cartes de visite, il a ajusté les servos en hauteur au téléphone.
De plus, je peux enfin dire que j'utilise cet équipement de sport qu'ils me donnent, au moins la boîte de lui m'a été utile.

Le plus difficile a été de faire réagir l'écran sans appuyer sur les leviers des servos. Des amis ont déjà dit qu'il était plus facile de trouver (ou d'obtenir) un vrai doigt humain que toutes mes expériences. J'ai essayé un film antistatique (celui qui contient des cartes vidéo et des disques durs), plusieurs types de film.
À la fin, il a fabriqué ces leviers ici et les a imprimés sur la bonne pruche:

Sous la plate-forme, le levier a collé un peu de pâte à modeler et l'a enveloppé de la feuille qui a fonctionné, a également amené les deux pointes de feuille au sol du circuit, plus ou moins travaillé.
Cela ressemble à ceci (après avoir coupé la plupart des publicités et «se connecter au serveur»):

La signification de toute cette action (à l'exception du ventilateur du processus lui-même et des visages d'amis qui l'ont vue) est dans une image:

Pour le début et le milieu du jeu, il s'agit d'une augmentation des ressources assez sérieuse et absolument gratuite.
Même dans les dernières étapes - c'est toujours un bon bonus, chaque jour d'utilisation = beaucoup par semaine et beaucoup par mois.
Il y avait quelques inconvénients à cela:
- le téléphone devait être mis en place à chaque fois, ± quelques millimètres - ne fonctionne pas
- parfois, vous devez connecter la charge et l'arduino - toujours
- après un certain temps, l'écran ne répondait toujours pas au toucher du film, même si quelqu'un sait pourquoi - écrire, je suis toujours intéressé (et le film antistatique a cessé de fonctionner beaucoup plus rapidement).
Bien que je sois toujours intéressé par le dernier point, j'ai trouvé la deuxième méthode et je ne suis pas revenu sur la première depuis longtemps.
Besoin d'un petit programme nircmd.exe et de votre émulateur de téléphone.
Installez le jeu souhaité (cela fonctionne facilement avec les jeux en réseau ou vous devez faire glisser les sauvegardes d'avant en arrière).
Exécuter en plein écran.
Nous prenons une capture d'écran chaque fois que vous devez cliquer sur l'écran (tout d'abord, cliquez sur le bouton «obtenir quelque chose» pour la publicité). Ensuite, par exemple, nous insérons dans la peinture et regardons avec un outil crayon en bas à droite les coordonnées de cet élément à cliquer.
Ensuite, nous avons obtenu quelque chose comme ceci:
:loop rem hit get reward nircmd setcursor 1600 950 nircmd sendmouse left click TIMEOUT 40 rem hit three points where close ads usually are nircmd setcursor 1777 70 nircmd sendmouse left click TIMEOUT 1 nircmd setcursor 1212 60 nircmd sendmouse left click TIMEOUT 1 nircmd setcursor 170 100 nircmd sendmouse left click TIMEOUT 40 rem hit reconnect just in case nircmd setcursor 1000 866 nircmd sendmouse left click TIMEOUT 3 rem hit collect reward nircmd setcursor 1600 950 nircmd sendmouse left click rem wait all windows to close and start all over TIMEOUT 3 goto loop
Nous enregistrons ce code dans un fichier .bat, par exemple, comme le mien - gimmemoney.bat, et à côté se trouve le programme nircmd (vous pouvez le placer dans C: \ Users \% USERNAME% et l'exécuter immédiatement à partir de la console, en cas de dépendance au jeu spécial, vous pouvez l'ajouter au chargement automatique avec le lancement de l'émulateur, j'ai encore du mal).
Rarement, une fois en quelques jours, les publicités apparaissent avec une disposition d'écran verticale.
Tant dans l'émulateur que dans la version Arduino, cela a créé des problèmes.
La version Arduino n'a pas été à la hauteur, mais dans ce script, cela a déjà été pris en compte, le script n'a pas été rencontré une seule fois au cours des derniers mois.
En outre, en cliquant sur le bouton "répéter" est ajouté ici si la connexion est perdue, cela se produit assez souvent.

Il n'y a qu'un seul inconvénient - l'émulateur doit être au premier plan, déployé en plein écran.
Si quelqu'un sait combien il est relativement facile d'envoyer un clic de souris à une application minimisée de l'émulateur, sans même le déployer à l'avant et lui envoyer le focus, faites-moi savoir que ce serait tout simplement parfait, accrochez-vous minimisé lors de la lecture de l'horloge du matin.
Pourquoi tout cela?
J'ai jeté environ 300r dans ce jeu et j'ai réalisé qu'elle mangerait volontiers à la fois 3000r et 30.000 + p.
Un ensemble de ressources ou la progression d'une voiture se présente souvent ici comme un jeu AAA, ± 3000r.
Cela avancera quelque peu, mais ne procurera pas d'avantages fantastiques, et cela peut être fusionné pour le jour du jeu (si ce n'est pas une voiture, mais vous pouvez acheter 4-5 de plus de ces ensembles jusqu'à la fin du jeu, il n'y a que dix voitures pour cela).
Ces deux méthodes m'ont amusé d'une part, et d'autre part, c'est un «revenu passif» agréable et rarement réalisable, dont beaucoup rêvent, même si ce n'est que dans le jeu.
Je souhaite à tous une mer de projets amusants et, idéalement, des revenus passifs.