|
1 |
| -// Jednoduchý C++ spammer. Kvůli využití wmain() musí být všechny I/O operace wide (široké), tzn. string musí být wstring a cin musí být wcin. |
2 |
| -// Před každým stringem musí také být prefix L (pro wide string). |
3 |
| -// _setmode zajišťuje Unicode podporu, tudíž není nutné nastavovat locale a codepage. |
| 1 | +// Celkem jednoduchá aplikace na spamování Vámi vybraného textu. Podporuje Unicode. Teda, měla by. |
| 2 | +// Všechny I/O operace musí mít předponu w (wide - široké, nutné pro Unicode) a všechny stringy musí mít předponu L (long - také nutné pro Unicode). |
| 3 | +// Z nějakého důvodu wide funkce způsobují to, že se text v náhodném bodě změní zpět na základní barvu (7). Proto se text načítá postupně. |
| 4 | +// Pokud se mi nebudou chtít překládat nějaké výrazy z angličtiny, prostě je tak nechám. |
4 | 5 |
|
| 6 | +// #define LYONOSLEEP |
| 7 | +#define SUCCESS 10 |
| 8 | +#define FAILURE 12 |
| 9 | +#define USERINPUT 11 |
| 10 | +#define WHITE 15 |
5 | 11 |
|
| 12 | +#include "lyoUtil.h" |
6 | 13 |
|
| 14 | +using namespace std; |
7 | 15 |
|
8 |
| -// Windows definice |
9 |
| -#define NOMINMAX |
10 | 16 |
|
11 |
| -// Konstantní výrazy |
12 |
| -constexpr int B_BASE = 9; |
13 |
| -constexpr int SUCCESS = 10; |
14 |
| -constexpr int FAILURE = 12; |
15 |
| -constexpr int USERINPUT = 11; |
16 |
| -constexpr int WHITE = 15; |
17 | 17 |
|
18 |
| -#include "lyoUtil.h" |
19 |
| - |
20 |
| -using namespace std; |
21 | 18 |
|
22 | 19 | int wmain() {
|
23 |
| - |
24 |
| - // Seed pro rand() |
25 |
| - srand((unsigned int)time(NULL)); |
26 | 20 |
|
27 |
| - // Proměnné a jejich základní hodnoty |
| 21 | + // Variables |
28 | 22 | wstring ans;
|
29 |
| - delay = 30; |
30 | 23 |
|
31 |
| - // Vektory |
32 |
| - vector<wstring> splashText = { L"Le fishe au chocolat.", L"Napajedla neexistují.", L"Praise Gabča.", L"30x rychlejší než Python.", L"Garance špagetového kódu.", L"Schváleno Kuncišem.", L"Směřujte spam na lyorig#0775.", L"Isn't it?", L"Nenávidím tento jazyk.", L"Pořád stabilnější než Fallout 76.", L"Kvůli tomuto mám dvojku z biologie.", L"Spam! není spam."}; |
33 |
| - vector<wstring> titleText = { L"Audavillage", L"Videomath", L"paint.com", L"Imagine 2", L"Malování 4D", L"XboxDiagram", L"C++Charm", L"Kyberdigi", L"Craftmine", L"Windows Defender" }; |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | + // Arrays |
| 28 | + const vector<wstring> splashText = { L"Le fishe au chocolat.", L"Napajedla neexistují.", L"Praise Gabča.", L"30x rychlejší než Python!", L"Garance špagetového kódu.", L"Schváleno Jakubem Kuncem.", L"Směřujte spam na lyorig#0775.", L"Isn't it?", L"Nenávidím tento jazyk.", L"Pořád stabilnější než Fallout 76.", L"Kvůli tomuto mám dvojku z biologie.", L"Spam! není spam.", L"Drei aktivitäten.", L"Mám vás všechny uložené.", L"\"Beate, telefon!\"", L"Brzy na OnlyFans(tm).", L"Hör zu und ergänze den Dialog."}; |
| 29 | + const vector<wstring> titleText = { L"Audavillage", L"Videomath", L"paint.com", L"Imagine 2", L"Malování 4D", L"XboxDiagram", L"C++Charm", L"Kyberdigi", L"Bing Chilling", L"Toto != virus", L"hek.ekse", L"já když", L"hendrych je gay", L"Capybara therapy (CBT)", L"Postrach Defenderu", L"cmd > Win32", L"Václav Moravec", L"h"}; |
| 30 | + |
34 | 31 |
|
35 |
| - // Základní nastavení |
36 |
| - SetConsoleTitleW(ChooseRandElem(titleText).c_str()); |
37 |
| - SetColor(WHITE); |
38 | 32 |
|
39 |
| - (void)_setmode(_fileno(stdout), _O_U16TEXT); // Oba jsou castované na void protože jinak Visual Studio hází |
40 |
| - (void)_setmode(_fileno(stdin), _O_U16TEXT); // varování o ignorování vratné hodnoty (kterou stejně nevyužiju) |
| 33 | + |
| 34 | + // Basic settings |
| 35 | + SetConsoleTitle(rIndex(titleText).c_str()); // Pokud to chce LPCWSTR, použijte c_str(). |
41 | 36 |
|
| 37 | + setlocale(LC_ALL, ""); |
42 | 38 |
|
| 39 | + |
43 | 40 |
|
44 | 41 |
|
45 |
| - wcout << L"(c) Petr Šácha 2022. "; |
| 42 | + printColoredMsg(WHITE, L"(c) Petr Šácha 2022. "); |
46 | 43 |
|
47 |
| - PrintColoredMsg(false, USERINPUT, ChooseRandElem(splashText), WHITE); |
| 44 | + printColoredMsg(USERINPUT, rIndex(splashText)); |
48 | 45 |
|
49 |
| - wcout << L"\nPoužitím či modifikací programu souhlasíte se samostatností Míkovic.\n\n"; |
| 46 | + printColoredMsg(WHITE, L"\nPoužitím či modifikací programu souhlasíte se samostatností Míkovic.\n\n"); |
50 | 47 |
|
51 |
| - PrintColoredMsg(false, WHITE, L"Chcete upravit nastavení? (ano/ne): ", USERINPUT); |
| 48 | + printColoredMsg(WHITE, L"Chcete ponechat doporučené nastavení? (ano/ne): ", USERINPUT); |
52 | 49 |
|
| 50 | + InitialQ: |
53 | 51 | wcin >> ans;
|
54 | 52 |
|
55 |
| - |
56 | 53 |
|
57 | 54 |
|
58 |
| - // Goto je giga cringe ale jsem líný programátor |
59 |
| - |
60 |
| - if (ans == L"ano") { |
61 | 55 |
|
62 |
| - Q1: |
63 |
| - PrintColoredMsg(false, WHITE, L"\nProdleva mezi repeticemi (ms): ", USERINPUT); |
| 56 | + // Goto je sice giga cringe, ale jsem líný programátor. |
| 57 | + if (ans == L"ne") { |
| 58 | + |
| 59 | + printColoredMsg(WHITE, L"\nProdleva mezi repeticemi (ms): ", USERINPUT); |
| 60 | + |
| 61 | + Delay1: |
64 | 62 | wcin >> delay;
|
65 | 63 |
|
66 | 64 | if (!wcin || delay < 0 || delay > 10000) {
|
67 | 65 |
|
68 |
| - PrintColoredMsg(false, FAILURE, L"Neplatná prodleva. Zadejte jinou.\n", WHITE); |
69 |
| - FlushCinW(); |
70 |
| - goto Q1; |
71 |
| - } |
| 66 | + printColoredMsg(FAILURE, L"Neplatná prodleva. Zadejte jinou: ", USERINPUT); |
| 67 | + flushCin(); |
72 | 68 |
|
| 69 | + goto Delay1; |
| 70 | + } |
73 | 71 |
|
| 72 | + printColoredMsg(WHITE, L"\nProdleva mezi stiskem a odesláním klávesy (ms): ", USERINPUT); |
74 | 73 |
|
75 |
| - Q2: |
76 |
| - PrintColoredMsg(false, WHITE, L"\nProdleva mezi stiskem a odesláním klávesy (ms): ", USERINPUT); |
| 74 | + Delay2: |
77 | 75 | wcin >> inbDelay;
|
78 | 76 |
|
79 | 77 | if (!wcin || inbDelay < 0 || inbDelay > 1000) {
|
80 | 78 |
|
81 |
| - PrintColoredMsg(false, FAILURE, L"Neplatná prodleva. Zadejte jinou.\n", WHITE); |
82 |
| - FlushCinW(); |
83 |
| - goto Q2; |
84 |
| - } |
85 |
| - |
| 79 | + printColoredMsg(FAILURE, L"Neplatná prodleva. Zadejte jinou: ", USERINPUT); |
| 80 | + flushCin(); |
86 | 81 |
|
87 |
| - |
88 |
| - PrintColoredMsg(false, SUCCESS, L"\nNastaveno.\n", WHITE); |
| 82 | + goto Delay2; |
| 83 | + } |
89 | 84 | }
|
90 | 85 |
|
91 | 86 |
|
92 | 87 |
|
93 |
| - else { // Cokoliv jiného než "ano" se bere jako ne |
94 | 88 |
|
95 |
| - SetColor(SUCCESS); |
| 89 | + else if (ans == L"ano") { |
96 | 90 |
|
97 |
| - wcout << L"\nProdleva nastavena na doporučenou (" << delay << "ms).\n"; |
98 |
| - wcout << L"Prodleva mezi stiskem a odesláním klávesy nastavena na doporučenou (" << inbDelay << "ms).\n"; |
| 91 | + printColoredMsg(SUCCESS, L"Základní nastavení ponechány.\n"); |
99 | 92 | }
|
100 | 93 |
|
| 94 | + else { |
| 95 | + |
| 96 | + printColoredMsg(FAILURE, L"Neplatná odpověď. Zadejte ano/ne: ", USERINPUT); |
101 | 97 |
|
| 98 | + goto InitialQ; |
| 99 | + } |
102 | 100 |
|
103 |
| - PrintColoredMsg(false, WHITE, L"\nCo chcete spamovat? -> ", USERINPUT); |
104 | 101 |
|
105 |
| - FlushCinW(); |
106 |
| - getline(wcin, wts); |
107 |
| - |
108 |
| - PrintColoredMsg(false, SUCCESS, L"\nPřipraveno. Držte F12 pro spam.", WHITE); |
109 | 102 |
|
110 |
| - |
111 |
| - |
112 |
| - // DEBUG ZÓNA |
113 |
| - |
114 | 103 |
|
| 104 | + printColoredMsg(WHITE, L"\nCo chcete spamovat? -> ", USERINPUT); |
115 | 105 |
|
116 |
| - // KONEC DEBUG ZÓNY |
| 106 | + flushCin(); |
| 107 | + getline(wcin, wts); |
117 | 108 |
|
| 109 | + printColoredMsg(SUCCESS, L"Připraveno. Držte F12 pro spam."); |
| 110 | + |
118 | 111 |
|
119 | 112 |
|
| 113 | + |
120 | 114 | while(true) {
|
121 | 115 |
|
122 | 116 | if (GetKeyState(VK_F12) & 0x8000) {
|
| 117 | + |
123 | 118 | sendText();
|
124 |
| - } |
| 119 | + } |
125 | 120 | }
|
| 121 | + |
| 122 | + fflush(stdout); |
| 123 | + |
126 | 124 | return 0;
|
127 | 125 | }
|
0 commit comments