Tutoriel No-Recoil C++

  • Auteur de la discussion Duffy
  • Date de début
  • Réponses 3
  • Affichages 4120

Duffy

Membre 🏅
Level 1
Level 3

Torrents Stats

Messages
7
J'aime
0
Trophées
13
Inscrit
27 Janvier 2019
Bonjour / Bonsoir,

J'ai eu une petite envie de vous montrer comment faire un no-recoil sur certains jeux (fonctionne sur R6S par exemple).
On démarre donc immédiatement, ouvrez un projet C++ sur votre IDE comme Visual Studio, Code::Blocks.

Voici les étapes pour bien préparer son projet :
  1. Fichier > Nouveau > Projet
  2. Une fois la fenêtre ouverte (comme sur l'image en dessous), vous choisissez dans la liste de gauche : "Visual C++" puis "Windows Desktop"
  3. Dans la liste au centre, prenez "Application Console Windows"
1554663563756.png

  1. Remplissez les champs en bas, et retenez l'emplacement du projet, on va en avoir besoin pour insérer des fichiers puis valider.
  2. Télécharger le fichier thirdparty.rar (Librairie SFML x64, si vraiment vous n'êtes pas chaud pour le DL depuis moi voici le lien (pensez à prendre la version correspondante à votre compilateur / IDE) : https://www.sfml-dev.org/download/sfml/2.5.1/index-fr.php
  3. Aller dans le fichier de votre projet C++, vous devez voir les fichiers surligner (avec le nom de votre projet), glissez dans le dossier comme sur l'image l'archive thirdparty) afin d'avoir un dossier thirdparty avec le fichier .sln et le dossier.
  4. Clic droit sur l'archive > Extraire ici
  5. Vérifier que le dossier "thirdparty" contient un dossier "SFML".
1554663828334.png

  1. Direction votre IDE
  2. Clic droit sur le nom de votre projet (là où il y a la flèche) > Propriétés
  3. Une fenêtre comme la deuxième en dessous devrait apparaître ;)

1554663995251.png
1554664060208.png

Numéro 1 de l'image au dessus :
  1. Clic sur la flèche
  2. Un menu apparaît, cliquer sur "Modifier"
  3. Double clic sur le "1", puis ensuite une petite case avec "..." apparaît, vous cliquez dessus, et une fenêtre de navigation s'ouvre
  4. Direction le dossier racine de votre projet (avec le .sln, "thirdparty", ...)
  5. thirdparty > SFML > include puis "Sélectionner un dossier" pour valider, surtout n'allez pas plus loin, c'est inutile
  6. Vous validez tout pour enregistrer, dès votre retour dans la page dans l'image en dessous, faites "Appliquer"

1554664163088.png
1554664258478.png

Numéro 2 de l'image :
  1. Comme vous l'avez compris, vous cliquez sur la flèche blabla, même procédé que dans le numéro 1, sauf que là vous allez choisir le fichier "lib" dans "thirdparty\SFML\"
  2. Encore une fois, vous n'allez pas plus loin, inutile ;)
  3. Une fois terminer > Appliquer
1554664459063.png

Numéro 3 de l'image :
  1. On répète une dernière fois le procédé : Clic sur la flèche > "Modifer"
  2. Maintenant, ça change ! Une fenêtre comme sur la deuxième image plus bas apparaît.
  3. Dans le premier cadre où pour moi il y a écrit : sfml-audio.lib. Vous copiez ça :
sfml-audio.lib
sfml-graphics.lib
sfml-window.lib
sfml-main.lib
sfml-network.lib

1554664585580.png
1554664599629.png

Voilà, maintenant la partie horrible est terminé ! A savoir que si vous souhaitez refaire un projet avec SFML, vous allez avoir besoin de refaire les mêmes manips.
Mais là je vous laisse chercher sur Google, car la meilleur qualité d'un développeur c'est de se renseigner avec les documentations sur internet ;)

Donc, pour faire fonctionner le code que vous allez C/C allègrement ^^, il faut inclure les librairies, mais je vous donne tout sinon c'est pas un tutoriel ;)

  1. #include <iostream>
  2. #include "SFML/Graphics.hpp"
  3. #include "windows.h"
  4. Normalement, votre IDE inclut déjà un fichier de base, qui est "pch.h" pour Visual Studio, laissez cette include sinon le compileur va vous crier dessus :( (je ne sais pas c'est quoi le fichier pour les autres IDE)
1554665158657.png

C++:
int main()
{
    // Initialisation des variables (déso je suis illétré ...)
    int moveX1 = -12;
    int moveX2 = -moveX1;
    int moveY1 = -40;
    int moveY2 = -moveY1;
    
    bool state = true; // Permettra plus tard de mettre on ou off le no-recoil ;)

    std::cout << "Cheat status : " << state << std::endl;

    while (true) {
        while (sf::Mouse::isButtonPressed(sf::Mouse::Right) && sf::Mouse::isButtonPressed(sf::Mouse::Left) && state) { // Traduction : Si Bouton Souris Droit et Gauche appuyé, et state, on fait ...
            mouse_event(MOUSEEVENTF_MOVE, moveX1, moveY1, NULL, NULL);
            Sleep(10);
            mouse_event(MOUSEEVENTF_MOVE, moveX2, moveY2, NULL, NULL);
            Sleep(10);
        }

        if (sf::Keyboard::isKeyPressed(sf::Keyboard::P)) { // Mettez la touche que vous souhaitez
            Sleep(80);
            state = !state;
            system("cls");
            std::cout << "Cheat status : " << state << std::endl;
        }
        Sleep(1); // Evite d'utiliser 30% du proc ..
    }
    return 0;
}

Alors voilà, maintenant il vous reste juste à appuyer sur "Débogueur Windows Local" ou appuyez sur F5 sur Visual Studio pour compiler votre code et démarrer votre no-recoil !

Pour le faire fonctionner, rien de plus simple : Clic droit enfoncé + Clic gauche enfoncé (en gros visée + tir) et P pour arrêter temporairement (jusqu'à ce que vous appuyez à nouveau sur P) le no-recoil.

PS : Voici quelques conseils dans le cas où le no-recoil ne suffit pas ;)
  • Si le no-recoil ne fonctionne pas suffisamment à l'horizontal, diminuez la valeur X1 (donc allez encore plus dans les négatifs)
  • Si le no-recoil ne fonctionne pas suffisamment à la vertical, diminuez la valeur Y1 (idem que avant)
  • Pour modifier la touche pour mettre en pause, changez la touche entourée dans l'image en dessous.
1554665661860.png
 

Fichiers joints

  • thirdparty.rar
    14.1 Mo · Affichages: 10

SirSamuHell

l'Affirmé 🥈
Level 1

Torrents Stats

Messages
31
J'aime
27
Trophées
96
Inscrit
8 Avril 2021
Coucou tu aurais pus passer uniquement en utilisant l'API Win32 sans SFML
Sinon GG
 

spiro

Membre 🏅
Level 1

Torrents Stats

Messages
14
J'aime
2
Trophées
44
Inscrit
30 Septembre 2022
Merci pour le partage par contre petite question tu le met ou ton fichier thirdparty ? Tu le met directement dans steam ??? Merci d'avance pour ton retour ^^
 

spiro

Membre 🏅
Level 1

Torrents Stats

Messages
14
J'aime
2
Trophées
44
Inscrit
30 Septembre 2022
Bonjour / Bonsoir,

J'ai eu une petite envie de vous montrer comment faire un no-recoil sur certains jeux (fonctionne sur R6S par exemple).
On démarre donc immédiatement, ouvrez un projet C++ sur votre IDE comme Visual Studio, Code::Blocks.

Voici les étapes pour bien préparer son projet :
  1. Fichier > Nouveau > Projet
  2. Une fois la fenêtre ouverte (comme sur l'image en dessous), vous choisissez dans la liste de gauche : "Visual C++" puis "Windows Desktop"
  3. Dans la liste au centre, prenez "Application Console Windows"
Voir la pièce jointe 6778

  1. Remplissez les champs en bas, et retenez l'emplacement du projet, on va en avoir besoin pour insérer des fichiers puis valider.
  2. Télécharger le fichier thirdparty.rar (Librairie SFML x64, si vraiment vous n'êtes pas chaud pour le DL depuis moi voici le lien (pensez à prendre la version correspondante à votre compilateur / IDE) : https://www.sfml-dev.org/download/sfml/2.5.1/index-fr.php
  3. Aller dans le fichier de votre projet C++, vous devez voir les fichiers surligner (avec le nom de votre projet), glissez dans le dossier comme sur l'image l'archive thirdparty) afin d'avoir un dossier thirdparty avec le fichier .sln et le dossier.
  4. Clic droit sur l'archive > Extraire ici
  5. Vérifier que le dossier "thirdparty" contient un dossier "SFML".
Voir la pièce jointe 6780

  1. Direction votre IDE
  2. Clic droit sur le nom de votre projet (là où il y a la flèche) > Propriétés
  3. Une fenêtre comme la deuxième en dessous devrait apparaître ;)

Voir la pièce jointe 6781
Voir la pièce jointe 6783

Numéro 1 de l'image au dessus :
  1. Clic sur la flèche
  2. Un menu apparaît, cliquer sur "Modifier"
  3. Double clic sur le "1", puis ensuite une petite case avec "..." apparaît, vous cliquez dessus, et une fenêtre de navigation s'ouvre
  4. Direction le dossier racine de votre projet (avec le .sln, "thirdparty", ...)
  5. thirdparty > SFML > include puis "Sélectionner un dossier" pour valider, surtout n'allez pas plus loin, c'est inutile
  6. Vous validez tout pour enregistrer, dès votre retour dans la page dans l'image en dessous, faites "Appliquer"

Voir la pièce jointe 6784
Voir la pièce jointe 6785

Numéro 2 de l'image :
  1. Comme vous l'avez compris, vous cliquez sur la flèche blabla, même procédé que dans le numéro 1, sauf que là vous allez choisir le fichier "lib" dans "thirdparty\SFML\"
  2. Encore une fois, vous n'allez pas plus loin, inutile ;)
  3. Une fois terminer > Appliquer
Voir la pièce jointe 6786

Numéro 3 de l'image :
  1. On répète une dernière fois le procédé : Clic sur la flèche > "Modifer"
  2. Maintenant, ça change ! Une fenêtre comme sur la deuxième image plus bas apparaît.
  3. Dans le premier cadre où pour moi il y a écrit : sfml-audio.lib. Vous copiez ça :
sfml-audio.lib
sfml-graphics.lib
sfml-window.lib
sfml-main.lib
sfml-network.lib

Voir la pièce jointe 6787
Voir la pièce jointe 6788

Voilà, maintenant la partie horrible est terminé ! A savoir que si vous souhaitez refaire un projet avec SFML, vous allez avoir besoin de refaire les mêmes manips.
Mais là je vous laisse chercher sur Google, car la meilleur qualité d'un développeur c'est de se renseigner avec les documentations sur internet ;)

Donc, pour faire fonctionner le code que vous allez C/C allègrement ^^, il faut inclure les librairies, mais je vous donne tout sinon c'est pas un tutoriel ;)

  1. #include <iostream>
  2. #include "SFML/Graphics.hpp"
  3. #include "windows.h"
  4. Normalement, votre IDE inclut déjà un fichier de base, qui est "pch.h" pour Visual Studio, laissez cette include sinon le compileur va vous crier dessus :( (je ne sais pas c'est quoi le fichier pour les autres IDE)
Voir la pièce jointe 6790

C++:
int main()
{
    // Initialisation des variables (déso je suis illétré ...)
    int moveX1 = -12;
    int moveX2 = -moveX1;
    int moveY1 = -40;
    int moveY2 = -moveY1;
   
    bool state = true; // Permettra plus tard de mettre on ou off le no-recoil ;)

    std::cout << "Cheat status : " << state << std::endl;

    while (true) {
        while (sf::Mouse::isButtonPressed(sf::Mouse::Right) && sf::Mouse::isButtonPressed(sf::Mouse::Left) && state) { // Traduction : Si Bouton Souris Droit et Gauche appuyé, et state, on fait ...
            mouse_event(MOUSEEVENTF_MOVE, moveX1, moveY1, NULL, NULL);
            Sleep(10);
            mouse_event(MOUSEEVENTF_MOVE, moveX2, moveY2, NULL, NULL);
            Sleep(10);
        }

        if (sf::Keyboard::isKeyPressed(sf::Keyboard::P)) { // Mettez la touche que vous souhaitez
            Sleep(80);
            state = !state;
            system("cls");
            std::cout << "Cheat status : " << state << std::endl;
        }
        Sleep(1); // Evite d'utiliser 30% du proc ..
    }
    return 0;
}

Alors voilà, maintenant il vous reste juste à appuyer sur "Débogueur Windows Local" ou appuyez sur F5 sur Visual Studio pour compiler votre code et démarrer votre no-recoil !

Pour le faire fonctionner, rien de plus simple : Clic droit enfoncé + Clic gauche enfoncé (en gros visée + tir) et P pour arrêter temporairement (jusqu'à ce que vous appuyez à nouveau sur P) le no-recoil.

PS : Voici quelques conseils dans le cas où le no-recoil ne suffit pas ;)
  • Si le no-recoil ne fonctionne pas suffisamment à l'horizontal, diminuez la valeur X1 (donc allez encore plus dans les négatifs)
  • Si le no-recoil ne fonctionne pas suffisamment à la vertical, diminuez la valeur Y1 (idem que avant)
  • Pour modifier la touche pour mettre en pause, changez la touche entourée dans l'image en dessous.
Voir la pièce jointe 6791
Merci pour le partage par contre petite question tu le met ou ton fichier thirdparty ? Tu le met directement dans steam ??? Merci d'avance pour ton retour ^^
 
Haut Bas