Nur Drachen und evtl. Wutzauber sind oft eine sichere 100%-Taktik ;-)

Ich spiele clash of clans aber nur gelegentlich, vielleicht hat sich also auch wieder etwas geändert .....

...zur Antwort

Ich habe es jetzt so gelöst, dass ich das eingelesene Zeichen mit Zahlenwert des Ó-Zeichens vergleiche und falls es das ist, das nächste Zeichen als Pfeiltaste einlese:

char c;
while(1){
  while(!kbhit());
  if((c = getch()) == 224){
    c = getch();
    printf("Pfeiltaste Code: %c", c);
}

Falls jemand eine bessere Idee hat (abgesehen davon auf Linux zu programmieren ;-)), bitte einfach schreiben.

...zur Antwort

Falls du dich mit der Konsole ein bisschen auskennst, wäre meiner Meinung nach youtube-dl die beste Wahl. Das ist ein Konsolenprogramm, bei dem man sehr viele Optionen für den Download hat. Damit ist es z.B. auch möglich, eine ganze Liste/Playlist von Videos herunterzuladen.

Falls du misstrauisch sein solltest, kannst du auf Github den Quellcode herunterladen, alles überprüfen und selbst noch einmal packen ... weil es aber ein Konsolenprogramm ist, ist auch nirgendswo Werbung/Malware ;-)

...zur Antwort

Er kann eine ganze Menge über den Browser und das Betriebssystem herausfinden.

  • Browser (z.B. Firefox, Chrome, Opera etc.)
  • Betriebssystem (z.B. Windows, Linux, OSX etc.)
  • Endgerät (z.B. Smartphone, Tablet, Pc, Konsole etc.)
  • Bildschirmgröße
  • Fenstergröße des Browsers
  • IP-Adresse
  • Standort deines ISP (Internet Service Provider)
  • Alles was du irgendwo auf der Seite eingibst

Cookies sind kleine Textdateien, in denen der Seitenbetreiber Sachen speichern kann, die bei einem erneuten Besuch wieder abgerufen werden können. Das wird oft für ein Login verwendet: im Cookie wird gespeichert, dass man schon angemeldet ist und man so nicht nach jeden klicken auf einen Link noch einmal das Passwort eingeben muss.

Standardmäßig werden die Cookies gelöscht, sobald der Browser geschlossen wird. Der Betreiber kann aber auch angeben, dass er bis zu einem bestimmten Datum behalten werden soll. In den meisten Browsern kann man sie aber auch in den Einstellungen löschen.

Neben Cookies gibt es auch noch localStorage und sessionStorage. Ersteres wird so lange behalten, bis es der Betreiber wieder löscht (oder du in den Einstellungen). Letzteres wird wie der Name schon sagt nur für die Dauer der Sitzung gespeichert und dann automatisch gelöscht.

...zur Antwort

Deine delay-Funktion kannst du noch kürzer schreiben. Das von Stackoverflow ist sehr idiotensicher gehalten. Hier eine verkürzte Schreibweise:

function delay(ms){
  var start_tick     = +new Date,
      ms_passed      = 0;
 
  while (ms_passed < ms)
    ms_passed = +new Date - start_tick;
}

Bei mir hat dein Beispiel aber auch so funktioniert, wie es sein soll:

while(1){
  delay(200);
  console.log('.');
}

Alle 200 Millisekunden wurde ein Punkt geloggt. So eine delay-funktion und ein while(1) ist in JavaScript aber zu vermeiden, da es eine Event basierte Programmiersprache ist und so etwas die komplette Seite anhalten würde. Dafür gibt es asyncrone alternativen, wie schon von den anderen erwähnt wurde.

Beispiel mit setInterval und setTimeout:

// mit setInterval
// 10 mal mit 200ms Verzögerung ausführen
(function(){
  var i = 0;
  var intID = setInterval(function(){
    if (++i >= 10)
      clearInterval(intID);

    // irgendetwas dass 10 mal ausgeführt werden soll
    console.log('.');

  }, 200);
})();

// mit setTimeout
// 10 mal mit 200ms Verzögerung ausführen
(function(){
  var i = 0;
  var toutID = setTimeout(function x(){
    if (++i < 10)
      toutID = setTimeout(x, 200);

    // irgendwas dass 10 mal ausgeführt werden soll
    console.log('.');

  }, 200);
})();

Weil man immer noch eine Zählervariable (hier i) braucht, habe ich es immer in einen eigenen Namespace geschrieben (die wrapper-Funktion (function(){ ... })() ). So wird verhindert, dass sie überschrieben wird und Fehler entstehen, die nicht sehr leicht zu finden sind.

Liebe Grüße
Win7User

...zur Antwort

Hier wie du es machen könntest:

const Discord = require('discord.js');

// Prefix um zu verhindern, dass versehentlich ein Befehl ausgeführt wird
const prefix = '>';

var client = new Discord.Client()
.on('ready', () => console.log('Client ready'))
.on('message', message => {

    // prüfen, ob das Prefix angegeben wurde
    if (!message.content.match(new RegExp('^' + prefix)))
        return;

    // Hier wird die eingegebene Nachricht überprüft (groß-kleinschreibung irrelevant)
    switch (message.content.replace(new RegExp('^' + prefix + '\\s*'), '').toLowerCase()) {

        case 'alle nachrichten löschen':

            // alle Nachrichten anfordern
            message.channel.fetchMessages()
            .then(messages => {

                // Funktion für alle Nachrichten ausführen
                messages.map(msg => {

                    // Falls Nachricht nicht angepinnt ist und gelöscht werden kann ...
                    if (!msg.pinned && msg.deletable)

                        // ... wird sie gelöscht
                        msg.delete();
                })
            })
            .catch(err => console.error(err));
            break;
    }
})

// Hier loggst du dich mit einem Token (von deinem Benutzer oder einem Bot) ein
.login('[DISCORD-TOKEN]');

Du musst natürlich noch in der letzten Zeile einen Token einfügen, dass sich der Bot anmelden kann.

Dann kann man mit dieser Nachricht alle Nachrichten löschen:

alle nachrichten löschen

Angepinnte Nachrichten werden nicht gelöscht. Fehlt die Berechtigung natürlich auch nicht.

...zur Antwort

Wie @Scriptim schon geschrieben hat sind das Embeds. Die können allerdings nicht nur von Bots, sondern auch von Selfbots gesendet werden.

Falls du keine Lust hast, dir selbst einen Selfbot zu schreiben, kannst du auch einfach meinen nehmen: https://filehorst.de/d/clBEcbGs

In der ZIP-Datei sind diese Dateien:

  • node.exe (zum Ausführen des Skriptes) Ich empfehle Version 7.0.0 von http://nodejs.org/dist/
  • selfbot.js (Selfbot geschrieben in Node.js)
  • start.cmd (Befehl für die Windows-Konsole: node.exe selfbot.js)

Außerdem ist dabei noch das Verzeichnis node_modules. Da drin ist das Modul discord.js und die, von denen es abhängig ist (für den Verbindungsaufbau und die Kommunikation mit der Discord-API).

Um den Bot zu starten, machst du einfach einen Doppelklick auf start.cmd oder machst eine Konsole in dem Ordner auf und gibst dort ein node.exe selfbot.js.

Wenn du dann auf Discord so ein Embed verschicken willst, muss der Bot laufen und du muss so eine Nachricht eingeben:

> cmd message.channel.send({
  embed: {
    title: 'Was oben drin stehen soll',
    description: 'was als Beschreibung da stehen soll',
    color: 0xFF0000
  }
});

Zwischen den geschweiften Klammern nach embed kannst du alles verwenden, was du auch auf der von @Scriptim verlinkten Seite (https://leovoel.github.io/embed-visualizer/) darin findest.

Mit dem Prefix > cmd signalisierst du dem Bot, dass er etwas machen soll. Mit dem Schlüsselwort cmd teilst du ihm mit, dass er ein Stück JavaScript ausführen soll.
Falls du davon etwas verstehst, wirst du mit der Discord-API (https://discord.js.org/#/docs) etwas anfangen können.

Ich habe auch verschiedene andere Befehle implementiert (bei mir wird er 24/7 auf einem Raspberry Pi ausgeführt, dass ich sie immer verwenden kann), die du finden wirst, wenn du dir den Quellcode anguckst.

Der Haken:
Um den Bot auf Discord Nachrichten versenden zu lassen, braucht er einen Token. Wenn man ihn als Bot benutzen will, kommt man auch ganz leicht an einen ran aber eben nur an einen Bot-Token. Willst du ihn mit deinem Account Nachrichten (bzw. Embeds) verschicken lassen, musst du ihm auch deinen Token geben.
Und hier muss ich dich darauf hinweisen, dass der Bot und du ein und die gleiche Person sind, wenn du ihn mit deinem Token einloggst. Lässt du also den Bot alle Leute beleidigen, kannst du es nicht auf einen nachlässigen Entwickler schieben, weil es dann du gewesen bist.
Das ist auch der Grund dafür, dass der Bot nur auf Befehle von dir reagieren darf. Dass das funktioniert, musst du deine Benutzer-ID herausfinden und damit in der Datei selfbot.js den Platzhalter [HIER DEINE BENUTZER-ID EINFÜGEN] ersetzen.
Um dem Bot zu erlauben, sich mit deinem Account einzuloggen, musst du ihm außerdem deinen Token geben. Wie du diesen bei der aktuellen Discord-Version herausfindest, findest du auf YouTube. Mit dem Token musst du den Platzhalter ganz unten in der Datei selfbot.js ersetzen.

Achtung:
Deinen Token darfst niemand außer dir haben. Nich ich und auch sonst niemand. Sollte jemand, der sich ein wenig auskennt, ihn bekommen, könnte in deinem Namen alles auf Discord machen, worauf er Lust hat. Die Entwickler geben sich nich umsonst alle Mühe, ihn von den Benutzern fernzuhalten.

Falls du jetzt immer noch Lust hast, Embeds zu verschicken, hast du alles was du dafür brauchst. Sollte etwas nicht funktionieren oder du noch Fragen dazu hast, kannst du einen Kommentar schreiben.

Liebe Grüße
Win7User

...zur Antwort

Nein, es ist nich möglich, die Eigenschaften der datalist zu ändern, da es nur eine Daten-Liste ist, die Auto-Fill daten für ein Input bereitstellt. Die Breite, Höhe, Abstand etc. musst du also beim zugehörigen Input-Feld machen: https://jsbin.com/hanocamoro/edit?html,css,output

HTML:

<input class="dle" type="text" list="users">
<datalist id="users">
    ...
</datalist>

CSS

.dle
{
  padding: 3px 4px;
  width: 91px;
  font-size: 15px;
}
...zur Antwort

Noch eine Möglichkeit:

eingabe = float(input('Zahl eingeben:'));
m = int(eingabe / 100);
cm = eingabe % 100;

print('Das sind %sm und %scm' % (m, cm));

Die Meter berechnest du, indem du die eingegebene Zahl durch 100 teilst und das Ergebnis in ein Integer castest (Nachkommastellen abschneiden).

Die Centimeter sind der Divisionsrest (Modulo) von der Eingegebenen Zahl und 100.

Ich verstehe aber nicht so ganz, wo du hier elif oder else verwenden willst ... ich verstehe nicht einmal, für was man überhaupt eine IF-Abfrage braucht. Klärst du mich auf, wenn du die Musterlösung hast?

...zur Antwort

Du könntest z.B. ein HDMI-Disply wie dieses hier: https://www.adafruit.com/product/2260 und dann noch ein E-Ink-Display, dass über die GPIO-Pins angesteuert wird, benutzen. Davon gibt es sicher auch genug Auswahl: https://www.adafruit.com/?q=eink

...zur Antwort

oder die universelle Lösung, falls du einen Selektor ansprechen willst (Tag, Klasse, ID oder Kombination aus allen), wäre document.querySelector() passender. Anstelle von document kannst du jede beliebige DOM-Node verwenden. Diese Funktion gibt dir immer nur das erste Element zurück. Falls du mehrere haben willst (z.B. alle divs), musst du document.querySelectorAll() verwenden. Das funktioniert aber ganz genauso, nur dass eine NodeList anstatt der Node zurückgegeben wird.

Um eine Klasse anzusprechen, benutzt du den Klassen-Selektor (ein Punkt) und den Klassennamen:

document.querySelectorAll('.klassenname');

oder wenn du nur das erste Element brauchst

document.querySelector('.klassenname');

Falls du dich mit Selektoren noch nicht so gut auskennst, kannst du dir einmal Selectors Level 3 und Selectors Level 4 von W3.org angucken. Da findest du alles, was es dazu zu wissen gibt.

...zur Antwort

wie wäre es mit einem kleinen JavaScript-Schnipsel?

<table id="sudoku"></table>
<script type="text/javascript">
    var sudoku = document.querySelector('#sudoku'),// Das Table-Element, wo die Felder eingefügt werden
        idx = 0;// der erste Index des Inputs

    for(x = 0; x < 9; x++){// 9 Zeilen einfügen
        sudoku.appendChild(document.createElement('tr'));
        for(y = 0; y < 9; y++)// in jede Zeile 9 Spalten eifügen
            sudoku.lastChild.appendChild((new DOMParser()).parseFromString('<td><input id="cell-{idx}" type="text"></td>'.replace('{idx}', idx++), 'text/html').body.firstChild)
    }
</script>

Das CSS kannst du bestimmt selbst machen :-)

...zur Antwort

Die Lösung für dein Problem (falls es nicht ganz legal bleiben muss) ist diese WLAN-Richtantenne: https://www.amazon.de/TP-Link-TL-ANT2424B-Antenne-outdoor-connector/dp/B003CFATOW

Die maximale Reichweite im Außenbereich ohne Störungen beträgt 56km!

...zur Antwort

Eine Möglichkeit ohne reload

<? if(isset($_GET["inc_counter"])) file_put_contents('counter.log', ((int) file_get_contents('counter.log')) + 1); ?>
<html>
<head>
  <!-- HEAD -->
</head>
<body>
  <button onclick="(new Image()).src = location + '?inc_counter'">Klicken</button>
</body>
</html>

Dafür muss auf dem Server die Datei counter.log existieren.

...zur Antwort
was Windows eigentlich zum Öffnen der .exe Verknüpfungen verwendet.

Die Dateinamenerweiterung exe steht für Executable (=Ausführbar). Das sind Binärdateien, die selbst ausgeführt werden und die nicht mit einem anderen Programm geöffnet werden können.

Hat irgendjemand eine Idee, wie ich die Verknüpfungen wieder brauchbar mache, ohne ständig die Spiele über meine Steambibliothek öffne?

Versuch einmal einen Rechtsklick auf die Verknüpfung zu machen und dann auf Dateipfad öffnen. Dann kannst du einmal probieren, diese Datei zu öffnen, vielleicht funktioniert das ...

Edit:

Lies dir die Antwort von DaMenzel durch. Diese Antwort ist genau auf Steam bezogen.

...zur Antwort

Du kannst in einem Cookie speichern, ob das Alter schon bestätigt wurde. Hier ein Beispiel:

https://jsbin.com/wifanozibo/1/edit?html,css,output

https://output.jsbin.com/wifanozibo/1

Beispiel HTML

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body onload="document.querySelector('#ageCheck').style.display = document.cookie.indexOf('is18') < 0 ? 'inherit' : 'none'">
  <div id="ageCheck">
    <h1>Altersüberprüfung</h1>
    <p>Um diesen Onlineshop zu nutzen, müssen sie mindestens 18 Jahre oder älter sein</p>
    <h3>Sind sie 18 oder älter?</h3>
    <div class="check">
      <button onclick="document.cookie = 'is18=true'; document.querySelector('#ageCheck').style.display = 'none'">Ja</button>
      <button>Nein</button>
    </div>
  </div>
</body>
</html>

Beispiel CSS

#ageCheck
{
  border: solid 4px red;
  padding: 20px;
  padding-top: 0;
  text-align: center;
  max-width: 300px;
  margin: auto;
}

#ageCheck h1
{ text-decoration: underline }

#ageCheck h3
{ color: red }

#ageCheck .check
{
  display: flex;
}

#ageCheck button
{
  flex-grow: 1;
  margin: 0 5px;
}
...zur Antwort

Wie bereits in einer anderen Antwort erwähnt, kann die String-Methode Split verwendet werden, um eine Zeichenkette an Doppelpunkten (oder auch jedem anderen Zeichen) zu trennen.

Wenn du allerdings nur eine Datei lesen musst, wäre das Paket readline schon viel zu viel Zeug, dass man nicht braucht. Dafür kannst du aus dem Standard-Paket fs (FileSystem) die Methode readFile (alternativ auch readLineSync) nutzen -- dafür muss auch nichts installiert werden, weil es bei jeder Node.js Version schon dabei ist.

Beispiel:

// Asyncron
const fs = require('fs');
fs.readFile('datei.txt', (error, data) => {
  if (error) throw error;
  var parts = data.toString().split(':');

  // weiterverarbeiten
  console.log(parts);
});

// Syncron
const fs = require('fs');
var parts = fs.readFileSync('datei.txt').toString().split(':');

// weiterverarbeiten
console.log(parts);

Es ist wichtig zu wissen, dass die Datei immer als buffer zurückgegeben wird (falls mit Binärdaten gearbeitet wird) und aus diesem Grund immer .toString() aufgerufen werden muss, wenn Stringfunktionen verwendet werden.

...zur Antwort

Hi Plonkadonka,

um den Text aus der Prompt-Box mit einzufügen, kannst du einfach die Variable mit dem Additionsoperator an .innerText der Überschrift hinzufügen.

Beispiel:

[...]
<body>
  <h1 id="greet">Nice to meet you, </h1>
  <script>
    // Benutzername abfragen
    while(!(window.username = prompt('Please type in your username', 'username')));

    // Überschrift-Element auswählen ...
    document.querySelector('h1#greet')

      // Benutzername anhängen
      .innerText += username;
  </script>
</body>

Zum testen das hier in die Adressleiste kopieren:

data:text/html,<body><h1 id="greet">Nice to meet you, </h1><script>while(!(window.username = prompt('Please type in your username', 'username')));document.querySelector('h1#greet').innerText += username;</script></body>

Liebe Grüße

Win7User

...zur Antwort

Wie du schon richtig erkannt hast, kannst du mit pageYOffset die Position herausfinden, an die gescrollt wurde.

Du hast aber nichts konkretes genannt, wie du die Größe änderst. Aus diesem Grund kann dir hier leider niemand wirklich weiterhelfen.

Hier aber allgemeines Beispiel wie es funktioniert (JavaScript)

function adjustSize(y){
    // Skript um die größe anzupassen
}

document.addEventListener('load', function(ev){
    adjustSize(pageYOffset);
}

Und noch eine kleine Sache:

wenn du eine Frage stellst, solltest du immer Codeschnnipsel oder verlinkungen auf jsbin.com o.Ä. Seiten machen, dass man deinen Code nachvollziehen kann.

Liebe Grüße

Win7User

...zur Antwort