• Howdy, Freund! Du scheinst neu hier zu sein. Warum erstellst du dir nicht einen Forenaccount, um mitdiskutieren zu können? Du kannst dich hier registrieren.
    Du hast schon einen Forenaccount? Dann kannst du dich hier einloggen. Viel Spaß!

    Was denkst du zum Beispiel über diese Themen?

Script um Aussehen von Waffen zu ändern

DeletedUser

Hi, ich versuche ein Script zu erstellen, das die Nachgemachten Goldenen Waffen silber oder grau^^ aussehen lässt.

Inventar links, rechts ausgerüstet​
fakegoldensableinventar.png
fakegoldensableeq.png
silver_gun.png

Hier das Script für den Nachgemachten Silbernen Colt: (funktioniert nicht)
// ==UserScript==
// @name Silver Colt
// @namespace khuber
// @description Modifizierungen des Nachgemachten Goldenen Colts
// @include http://de1.the-west.de/game.php#
// @include http://de2.the-west.de/game.php#
// @include http://de3.the-west.de/game.php#
// @include http://de4.the-west.de/game.php#
// @include http://de5.the-west.de/game.php#
// @include http://de6.the-west.de/game.php#
// @include http://de7.the-west.de/game.php#
// @include http://de8.the-west.de/game.php#
// @include http://de9.the-west.de/game.php#
// @include http://de10.the-west.de/game.php#
// @include http://de11.the-west.de/game.php#
// @include http://de12.the-west.de/game.php#
// @include http://w1.public.beta.the-west.net/game.php#
// @include http://w2.public.beta.the-west.net/game.php#
// ==/UserScript==

var img = document.getElementsByTagName("Nachgemachter Goldener Colt");
for (var i = 0; i < img.length; i++)
for (var i = 0; i < img.length; i++)
{
if (img.src == "http://de8.the-west.de/images/items/right_arm/mini/fakegolden_gun.png?1")

{
img.src = "http://file1.npage.de/008471/46/bilder/silver_gun.png}
}


Wie füge ich alle 3 Bilder in ein Script ein und wie muss das Script aussehen damit es funktioniert?
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser7571

Zum Skript an sich kann ich leider nichts sagen, jedoch is das für mich eher schwarz/weiß als Silber. :rolleyes:
 

DeletedUser

Hallo,

PHP:
var img = document.getElementsByTagName("Nachgemachter Goldener Colt");
Hier hast du wohl was falsch verstanden. document.getElementsByTagName greift nicht auf die Attribute zu, sondern auf die "Tags" wie <a>, <img> usw., wird in deinem Fall also nichts finden, da es so ein Tag nicht gibt. Du musst nach den Attributen suchen. was du brauchst ist:
PHP:
var img = document.getElementsByTagName('img');
Weiter zum nächsten Teil...
PHP:
for (var i = 0; i < img.length; i++) 
for (var i = 0; i < img.length; i++) {
Wieso lässt du eine Schleife in einer Schleife laufen? Einmal reicht ;)
Um nicht den ganzen Quelltext zu dokumentieren, zeig ich dir schnell wies gehen müsste:
PHP:
var fakeImgs = document.getElementsByTagName('img');
for(var i = 0; i < fakeImgs; i++) {
     if(fakeImages[i].src.indexOf('fakegolden_gun.png') != -1) {
         fakeImages[i].src = 'http://file1.npage.de/008471/46/bilder/silver_gun.png';
     } else if(fakeImages[i].src.indexOf('DATEINAME NACHGEMACHTER GOLDENER SÄBEL') != -1) {
         fakeImages[i].src = 'NEUE URL FÜR GOLDENEN SÄBEL';
     }
}
Das Ganze hat jetzt jedoch noch drei Problematiken:
1) Das Ganze wird nur einmal ausgeführt, nur einmal beim Laden der Seite. Also werden alle folgenden aufgemachten Fenster mit Goldenen Säbeln völlig ignoriert. Stichwort: window.setInterval()

2) Ressourcenschonend ist das Ganze nicht, da alle Bilder auf der Seite durchsucht werden, mit Methode 1) sogar in einem Intervall.

3) Es wird noch nicht zwischen ausgerüstet usw. unterschieden. Hier muss man in der ersten Zeile noch etwas hinzufügen, nämlich einen Bereich, in dem gesucht werden soll. Das muss man dann für alle Möglichen Bereiche machen, dadurch würde dann auch der PC etwas entlastet werden.

Knight
 

DeletedUser

PHP:
var fakeImgs = document.getElementsByTagName('img');
for(var i = 0; i < fakeImgs; i++) {
     if(fakeImages[i].src.indexOf('fakegolden_gun.png') != -1) {
         fakeImages[i].src = 'http://file1.npage.de/008471/46/bilder/silver_gun.png';
     } else if(fakeImages[i].src.indexOf('fakegoldensable.png') != -1) {
         fakeImages[i].src = 'http://file1.npage.de/008471/46/bilder/fakegoldensableeq.png';
   } else if(fakeImages[i].src.indexOf('mini/fakegoldensable.png') != -1) { <----- Funktioniert das dann?
         fakeImages[i].src = 'http://file1.npage.de/008471/46/bilder/fakegoldensableinventar.png';
     }
}
Erstmal vielen dank, hätte jedoch noch eine Frage wegen dem Ausgerüstet oder Nicht
Geht das 'mini/fakegoldensable.png', dann so?
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser

Das müsste gehn ;)
Übrigens, ersetze mal
PHP:
// @include        http://de1.the-west.de/game.php#
// @include        http://de2.the-west.de/game.php#
// @include        http://de3.the-west.de/game.php#
// @include        http://de4.the-west.de/game.php#
// @include        http://de5.the-west.de/game.php#
// @include        http://de6.the-west.de/game.php#
// @include        http://de7.the-west.de/game.php#
// @include        http://de8.the-west.de/game.php#
// @include        http://de9.the-west.de/game.php#
// @include        http://de10.the-west.de/game.php#
// @include        http://de11.the-west.de/game.php#
// @include        http://de12.the-west.de/game.php#
// @include        http://w1.public.beta.the-west.net/game.php#
// @include        http://w2.public.beta.the-west.net/game.php#

Durch
PHP:
// @include http://*.the-west.*/game.php*
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser

Ich hätte die Waffen gerne mattschwarz, bekommste das auch hin?
 

DeletedUser

Ok danke :) Habs verbessert
Ändert sich dann nur das Bild wenn die Waffe ausgerüstet ist oder greift es auch auf das Bild im Inventar zu?

PHP:
// ==UserScript==
// @name           Silver Colt and Sable
// @namespace      Change Counterfeit Weapons into Silver Weapons
var fakeImgs = document.getElementsByTagName('img');
for(var i = 0; i < fakeImgs; i++) {
     if(fakeImages[i].src.indexOf('fakegolden_gun.png') != -1) {
         fakeImages[i].src = 'http://file1.npage.de/008471/46/bilder/silver_gun.png';
     } else if(fakeImages[i].src.indexOf('fakegoldensable.png') != -1) {
         fakeImages[i].src = 'http://file1.npage.de/008471/46/bilder/fakegoldensableeq.png';
   } else if(fakeImages[i].src.indexOf('mini/fakegoldensable.png') != -1) {
         fakeImages[i].src = 'http://file1.npage.de/008471/46/bilder/fakegoldensableinventar.png';
     }
}  
// @include       http://*.the-west.*/game.php*
// ==/UserScript==
 

DeletedUser

Ändert sich dann nur das Bild wenn die Waffe ausgerüstet ist oder greift es auch auf das Bild im Inventar zu?

Müsste beides sein... Allerdings wird deine Lösung immernoch nur einmal ausgeführt. Du musst das Ganze in eine Funktion einfassen und diese mittels window.setInterval wiederholen lassen.
Achja und
PHP:
// @include       http://*.the-west.*/game.php*
// ==/UserScript==
</span></span>gehört direkt nach
PHP:
// ==UserScript==
// @name           Silver Colt and Sable
// @namespace      Change Counterfeit Weapons into Silver Weapons
@namespace ist übrigens nicht die Beschreibung, dafür gibt es @description. Desweiteren würde ich noch @author für den Autor hinzufügen. @namespace ist die Homepage des Skripts undmacht das Skript zusammen mit @name identifizierbar, sodass neue Versionen des Skripts nicht zusätzlich zu den alten installiert werden sondern diese direkt ersetzten (siehe http://wiki.greasespot.net/Metadata_Block).
 

DeletedUser10659

Ich habe ein ähnliches Problem:
Ich will die Sprache verändern, hier habe ich einen Code:
PHP:
window.setInterval("document.body.innerHTML= document.body.innerHTML.replace(/Advantages/g,'Vorteile');", 10);

Er ersetzt es auch, aber das Problem ist, dass das Game nachher einen Dachschaden hat und wenn man irgendwo drauf klickt, passiert nichts oder nicht das erwünschte.

Ich will eben ein Übersetzungs-Script für unser Projekt Dänen besiedeln machen.
 
Oben