Grepolis Attack - Sound Alarm

creeten

Gast


Hallo,

habe mal ein kleines "Attacken Alarm"-Script erstellt, funktioniert in Google Chrome (Tampermonkey) und Mozilla Firefox (Greasemonkey).

Beschreibung:
Plays a sound if you get attacked and displays a toggle button to mute/unmute the alarm sound.
Spielt einen Sound ab, wenn man angegriffen wird und zeigt einen Umschalt-Knopf an, um den Alarm Sound an- und auszuschalten.
Screenshot:


Installation (oben rechts den Button "Install" klicken):

Script installieren

- creeten
 
Zuletzt bearbeitet von einem Moderator:

Menidan

Gast
Sieht interessant aus. Nur würde ich um einige Dinge bitten:
1. Bitte verwende das Data-URI-Schema. Dann muss ich nicht zwei weitere Dateien laden und ich bin unabhängig von jenem Server, wodurch das Skript (theoretisch) für alle Ewigkeit laufen könnte. Und ich höre nicht plötzlich ungewohnte Geräusche, wenn der Inhalt der Dateien auf dem Server geändert wird.
2. Bitte verlangsame meinen Browser nicht so sehr. In Javascript gibt es zwei ähnliche Funktionen, setImmediate und setInterval. Ich würde dir vor allem letztere ans Herz legen, dadurch wird der Code übersichtlicher. Auch musst du nicht sooft es der Prozessor schafft auf Angriffe prüfen und dabei diese zeitintensive jQuery-Funktion nutzen, es reicht auch alle paar Sekunden einmal...
3. Ich würde mir noch eine weitere Schaltfläche wünschen: alle aktuell laufenden Angriffe (also im Prinzip deren Anzahl) werden als "gesehen" markiert und das Geräusch verstummt. Wenn sich dann die Anzahl wieder erhöht, kann es ja auch wieder ertönen.

Davon abgesehen bin ich wirklich sehr erstaunt, wie überaus schnell das Skript erlaubt worden zu sein scheint - und dass es überhaupt erlaubt wurde. Ich warte jetzt doch schon einige Zeit auf eine Antwort. Es scheint also tatsächlich deutlich schneller zu gehen, wenn man direkt ein neues Thema eröffnet...
 
Zuletzt bearbeitet von einem Moderator:

creeten

Gast
Werde ich mir mal anschauen, bin ja auch nicht gerade javascript/jQuery-Experte.
Hattest du also auch schon ein ähnliches gebaut und eingereicht?
 
Davon abgesehen bin ich wirklich sehr erstaunt, wie überaus schnell das Skript erlaubt worden zu sein scheint - und dass es überhaupt erlaubt wurde. Ich warte jetzt doch schon einige Zeit auf eine Antwort. Es scheint also tatsächlich deutlich schneller zu gehen, wenn man direkt ein neues Thema eröffnet...
Sei bitte so gut, und reiche Deine Vorschläge via Ticket ein - hier bitte keine Links reinstellen!
Dankeschön!
 

creeten

Gast
Script updated!

+ Data-URI-Schema implementiert (danke an Menidan für den Tipp)
* Sound-Toggle Button gefixt, da er manch mal nicht richtig reagiert hat
* Sound-Toggle Button ist nun ein Icon statt Text
* Check auf eingehenden Angriff wird nur noch alle 2 Sekunden ausgeführt

ToDo:
  • Falls Alarm-Sound gemuted ist und noch ein Angriff eingeht, Sound wieder abspielen
  • Schiebe-Regler für Lautstärke des Sounds als Option hinzufügen
  • Verschiedene Alarm-Sounds als Option hinzufügen (?)

Wer noch was drin haben will, melden! :p

- creeten
 
Zuletzt bearbeitet von einem Moderator:

Budach

Gast
Autsch, "setTimeout(..., 0)" war in der Tat nicht allzu Sinnvoll.^^

Hier hast eine Mini-Version, die die Punkt1 auf der ToDo erfüllt (Tested nur auf FF).
Code:
// ==UserScript==
// @name            Grepolis Attack - Sound Alarm
// @namespace       http://www.creeation.de
// @version         0.9
// @description     Make some noise if ya get attacked. With integrated toggle-button to mute/unmute alarm sound.
// @include         http://*.grepolis.*/game/*
// @copyright       2013+, CREEATION
// ==/UserScript==

(function() {
    
  function GM_wait() {
      if(typeof unsafeWindow.jQuery == 'undefined') {
      	window.setTimeout(GM_wait,100);
      } else {
      	unsafeWindow.jQuery(function() { startScriptNao(unsafeWindow.jQuery); });
      }
  }
    
  GM_wait();

  function startScriptNao($) {
      
    $(function() {
		
		var lastAttCount = 0;
		var isSoundPlaying = false;
		
		var soundEl = $('<audio id="creeation_alarm_sound" loop><source src="NukesoundDataURLLeiderzugroß für forum :(" /></audio>')[0];
		var buttonEl = $('<button id="creeation_alarm_mute" style="display:none; background:#333; color:#fff; position: absolute;z-index: 1;padding: 4px 8px;top: 67px;left: 165px;border: 1px solid black;box-shadow: 0 2px 5px black, 0 -1px 15px black inset;font-size: 11px;cursor: pointer;" >disable alarm</button>');
		$('#town_controls').append(soundEl).append(buttonEl);
		
		buttonEl.click(function(){
			isSoundPlaying = false;
			soundEl.pause();
			soundEl.currentTime = 0;
			buttonEl.hide();
		});
		
		var startSound = function(){
			if( isSoundPlaying ){	
				return;	
			}	
			isSoundPlaying = true;
			soundEl.play();
			buttonEl.show();
		};
		
		var updateLoop = function(){
			var attCount = $("#incoming_attack_count").text() - 0;
			if( attCount > lastAttCount ){
				startSound();
			}
			lastAttCount = attCount;
			setTimeout(updateLoop, 1000);
		};
		
		updateLoop();
        
    });
      
  }
    
})();
Statt ner Schleife könnte man sich auch in die Update-Funktion einklinken. Irgendwann war das mal Layout.setIncommingAttackCount. Geben tut es diese noch, aber kp ob sich was geändert hat.

Lautstärkeregler sind wohl eher unnötig, es soll dich ja nur informieren und dann stellst du es eh ab^^
 

creeten

Gast
Alohá Budach!
Lautstärkeregler sind meiner Meinung nach nett, wenn man nicht unbedingt so einen lauten Alarm-Ton haben will.
Das würde ich ja per GM_setValue dann wegspeichern. Mich hatten schon welche angeschrieben, dass ihnen der Ton zu laut ist. Eventuell wäre es auch noch nett, den Titel der Seite, falls eine Attacke reinkommt, zu ändern. Oder das favicon. Könnte man auch noch als Optionen festlegen ^^

Und das mit "Layout.setIncomingAttackCount" werde ich wohl auch mal einbauen.

Zu Punkt 1 der ToDo:
Da hab ich natürlich falsch gedacht und den Toggle-Button nur für Ton an/aus benutzt... soll ja wirklich nur informieren.
Werde mir das noch mal ansehen.

Danke dir für deine Mühe! Wird wohl Zeit für eine Credits-Sektion :p
 
Zuletzt bearbeitet von einem Moderator:

creeten

Gast
Greasemonkey updaten? :p
//e: Installier jetzt noch mal, hab's geupdated. Vielleicht geht's ja jetzt. ^^
 
Zuletzt bearbeitet von einem Moderator:
schönes teil, und funktioniert einwandfrei. ich mag den schönen ton, endlich mal nicht so ne schrille klingel wie bei nem wecker

lautstärke anpassen wäre nett, aber kann man auch am pc machen.

die idee mit der titelzeile finde ich klasse, das stört die andern im büro etwas weniger als die schiffssirene ;)
 

creeten

Gast
Script updated!
Version 1.1

+ Hook in "Layout.setIncomingAttackCount" statt setTimeout() für die ständige Überprüfung zu nutzen (danke an Budach für den Tipp)
+ "Thanks to"-Sektion hinzugefügt
+ Support für mehrere Angriffe hinzugefügt, falls zum Beispiel der Sound gemuted ist und ein neuer Angriff kommt, dass der Sound wieder abgespielt wird
* Eine große Funktion für den Alarm in mehrere Funktionen unterteilt, fühlt sich gut an!
* Allgemeine Bugfixes und Performance-Verbesserungen

ToDo:
  • Schiebe-Regler für Lautstärke des Sounds als Option hinzufügen
  • Verschiedene Alarm-Sounds als Option hinzufügen (?)
  • Titel-Leiste und/oder das aktuelle Favicon von Grepolis bei eingehendem Angriff "blinken" lassen
  • Optionen-Fenster hinzufügen

Bei auftretenden Bugs o.Ä. könnt ihr mich gerne kontaktieren!

- creeten
 
Zuletzt bearbeitet von einem Moderator:

creeten

Gast
Script updated!
Version 1.2

+ Options-Menü um die Lautstärke zu ändern (wird aktuell nicht gespeichert)
* Allgemeine Verbesserungen (danke an Menidan)

ToDo:
  • Verschiedene Alarm-Sounds als Option hinzufügen (?)
  • (vorerst verworfen:) Titel-Leiste und/oder Favicon bei Angriff "blinken" lassen
  • Optionen-Fenster erweitern

Bei auftretenden Bugs o.Ä. könnt ihr mich gerne kontaktieren!

- creeten
 

-Tiuz-

Gast
Sehr geiles Script.
Wenn der Counter der Angriffe sich verringert und dann weider erhöht wird und man dazwischen gemutet hat, kommt dann wieder der Sound?

Bsp:
1) Zwei Angriffe kommen auf meine Stadt (Anzahl der Angriffe 2) > Sound kommt
2) ich mute
3) ein Angriff wird abgebrochen oder unsichtbar gemacht (Anzahl der Angriffe 1)
4) es kommt wieder ein Angriff, ev. der selbe wie vorher durch die Unsichtbarkeit (Anzahl der Angriffe 2) > kommt hier wieder ein Sound?
 

creeten

Gast
Sehr geiles Script.
Wenn der Counter der Angriffe sich verringert und dann weider erhöht wird und man dazwischen gemutet hat, kommt dann wieder der Sound?

Bsp:
1) Zwei Angriffe kommen auf meine Stadt (Anzahl der Angriffe 2) > Sound kommt
2) ich mute
3) ein Angriff wird abgebrochen oder unsichtbar gemacht (Anzahl der Angriffe 1)
4) es kommt wieder ein Angriff, ev. der selbe wie vorher durch die Unsichtbarkeit (Anzahl der Angriffe 2) > kommt hier wieder ein Sound?
Danke!

Zur Frage:
Sollte jedenfalls. Wenn du mehr als eine Stadt hast, kannst du dich auch testweise selber angreifen. ;)

- creeten