[UDF]Thanks Checker (Speziell für ElitePVPers)

08/07/2010 18:51 Mattthias#1
Hallo e*PVP Community, ich habe einen 100 % sicheren Thanks Checker gebaut, allerdings muss man sich vorher mit dem Internet Explorer in E*PVP anmelden, denn sonst klappt es nicht und er wirft ebenfalls "False" zurück.

Hier die UDF:

PHP Code:
#include <IE.au3>
#include <String.au3>
Func _ThanksCheck_EPVP4Story($Site$Name)
    
Local $IECreate _IECreate($Site""0)
    
Local $ThanksSource _IEDocReadHTML($IECreate)
    
Local $WinTitle _StringBetween($ThanksSource'<META content="''" property="og:title">')
    
Local $LogInName _StringBetween($ThanksSource"rel=nofollow>""</A>.")
    
Local $ThanksName _StringBetween($ThanksSource$Name '.html" rel=nofollow>''</A>&nbsp;(')
    If 
$LogInName[0] = $Name Then
        
If $ThanksName[1] = $Name Then
            
Return True
        
Else
            Return 
False
        
EndIf
    Else
        Return 
False
    
EndIf
    
WinClose($WinTitle&" - Windows Internet Explorer")
EndFunc   ;==>_ThanksCheck_EPVP4Story 
MfG Mattthias

PS:

Der erste Parameter ist die Seite, der zweite der namen desjenigen (er hat den namen in den THX CHecker z.B. eingetippt)
08/07/2010 18:55 "DarkDöner"#2
wb matthias :)
08/07/2010 19:05 -ηikk3ℓ-#3
Danke dir, kann man gut gebrauchen. ;)
08/07/2010 19:56 No Hawx#4
Eigentlich ja falsche Section ...
Kommt in die "e*pvp-coder"-Section ! :p
08/07/2010 20:18 Mattthias#5
Naja stimmt schon :D
Aber er funktioniert einwandfrei, bitteschön, ihr könnt jetzt ebenfalls thanks checker bauen ;)
08/07/2010 20:50 Drackeen#6
Wuhu ! :) Danke Mattthias ^^ ! Werd ich bestimmt brauchen wenn ich irgendwann mal nen Hack mach :D
08/07/2010 21:12 »Liight.#7
Danke :D
Sollte bald was von mir kommen werd ich den Thanks-Checker vielleicht brauchen.. :D
08/07/2010 21:17 Mattthias#8
Bitte, irgendeiner muss ja mal anfangen Open Source zu machen, zwar ist es jetzt "unfair", denken einige, aber es ist nur fair leuten gegenüber die z.B. IE nicht kennen und nicht wissen wie es geht ;), dazu mach ich das ;)

Was könnte man noch coden für andere ?

MfG Mattthias
08/07/2010 21:44 KDeluxe#9
Mach das erst mal richtig, Mattthias. Mit deiner Methode schließt du Member
mit einem farbigen Name und Member mit Sonderzeichen im Namen aus.
Wie viele das sind kannst du dir ja denken. Ich hoffe mal für dich, dass
niemand dein Script benutzt.

Hier mal meine Methode, die nicht ganz so viele ausschließt:
PHP Code:
#include-once
#include <INet.au3>
#include <String.au3>

Func _CheckThanks($URL$Username)
    
$Source _INetGetSource($URL)
    If 
Not ($Source == ""Then
        $Loginname 
_StringBetween($Source'.html">''</a>.</li>')
        If 
$Loginname[0] == $Username Then
            $Username2 
StringReplace($Username" ""-")
            
$Username2 StringReplace($Username2".""-")
            
$Username2 StringReplace($Username2"!""-")
            
$Username2 StringReplace($Username2"~""-")
            
$Username2 StringReplace($Username2"°""-")
            
$Username2 StringReplace($Username2"²""-")
            
$Username2 StringReplace($Username2"³""-")
            
$Username2 StringReplace($Username2"'""-")
            
$Username2 StringReplace($Username2"™""-")
            
$Username2 StringReplace($Username2"[""-")
            
$Username2 StringReplace($Username2"]""-")

            
$Name _StringBetween($Source$Username2 '.html" rel="nofollow">''</a>&nbsp;')
            If 
IsArray($NameThen
                $Check 
StringInStr($Name[0], $Username)
                If 
$Check True Then
                    
Return True
                
EndIf
            Else
                
SetError(3)
                Return 
"Es wurde noch kein Thanks gegeben. Um das Programm ausführen zu können wird ein Thanks benötigt."
            
EndIf
        Else
            
SetError(2)
            Return 
"Die angegebene ID stimmt nicht mit der von elitepvpers.com überein." & @CR "Logge dich auf elitepvpers.com ein oder überprüfe ggf. den eingegebenen Namen."
        
EndIf
    Else
        
SetError(1)
        Return 
"Es konnte keine Überprüfung gestartet werden, bitte überprüfe die Internetverbindung."
    
EndIf
EndFunc 
Aufrufen kann man das ganze so:
PHP Code:
#include "CheckThanks.au3"

$URL "[Thread]"
$Username "[Username]"

$Return _CheckThanks($URL$Username)
If @
error Then
    MsgBox
(48"Fehler"$Return)
    ;Exit
;Else
    ;
MsgBox(0"""Die Überprüfung wurde erfolgreich abgeschlossen")
EndIf 
Edit: Änderungen an meinem Script werden nicht geduldet. Credits sollte man auch angeben.
08/07/2010 22:45 v0lle#10
Will auch mal was posten (:

Code:
HttpSetUserAgent("Firefox")
$hGUI = GUICreate("Thankschecker", 242, 94, 192, 124)
GUICtrlCreateLabel("Dein Name:", 8, 8, 60, 17)
$username = GUICtrlCreateInput("", 88, 6, 121, 21)
$check = GUICtrlCreateButton("Check", 8, 48, 75, 25)
$download = GUICtrlCreateButton("Downloaden", 112, 48, 75, 25)
GUICtrlSetState(-1, 128)
GUISetState()
While 1
	Switch GUIGetMsg()
		Case -3
			Exit
		Case $download
			INetGet("")
		Case $check
			check()
	EndSwitch
WEnd
Func check()
	$username=GUICtrlRead($username)
	$url=""
	$source=BinaryToString(INetRead($url))
	If StringRegExp($source, ', <a href="http://www\.elitepvpers\.de/forum/members/.*\.html" rel="nofollow">'&$username&'</a>&nbsp;\(') Then
		MsgBox(0, "Thankscheck", "Du hast dich bedankt. Du kannst nun die Datei downloaden.")
		GUICtrlSetState($download, 64)
		Return
	Else
		MsgBox(0, "Thankscheck", "Bedanke dich erst, um die Datei downloaden zu können.")
		Return
	EndIf
EndFunc
€1: Man kann ihn nur verwenden mit einem Ftp Server als wenn man da eine Datei und den Link nimmt oder ein Hoster ohne Delay ^^
08/07/2010 23:12 KDeluxe#11
Ich benutze andere _StringBetween Parameter, teste es selber und überzeuge dich davon,
dass mein Script Funktioniert.

Ich helf dir aber mal auf die Sprünge, schau dir mal den Quellcode besser an.
Ausgehend von diesem Code:
PHP Code:
Local $ThanksName _StringBetween($ThanksSource$Name '.html" rel=nofollow>''</A>&nbsp;('
Als Beispiel dient mir [Only registered and activated users can see links. Click Here To Register...]

1. Problem:
Im Namen sind Sonderzeichen enthalten, diese werden mit "-" getauscht (ausgenommen "_").
Dein Code gibt dir jetzt also: "S.A.L.O.M.O.N..html" aus, richtig wäre es aber
Code:
S-A-L-O-M-O-N-.html
Folge: Es konnte keine Überprüfung stattfinden, da der _StringBetween Parameter
falsch ist (der User "S.A.L.O.M.O.N." wird nie gefunden, auch wenn er 10000
mal in der Thanksliste wäre).



2. Problem
Salomons Name ist rot, der Code für den Namen befindet sich aber hinter dem '.html" rel="nofollow">'.
Der gefundene User wäre also:
Code:
<span style="color:red">S.A.L.O.M.O.N.</span>
Dieser Teil stimmt aber nicht mit "S.A.L.O.M.O.N." überein.

Folge: Es konnte keine Überprüfung stattfinden, da der User "S.A.L.O.M.O.N."
für dein Script nicht "<span style="color:red">S.A.L.O.M.O.N.</span>" sein kann.
Dein Script meldet einen falschen Nutzer und lässt den Benutzer das
Programm nicht benutzen (auch wenn er dir ein Thanks gegeben hat).

3. Problem
Du hast keinen eindeutigen Rückgabewert, wenn der Quellcode nicht gelesen werden konnte.




Mein Script achtet, anders als deins, auf alle genannten Fehler, wenn du mir
jetzt wirklich weismachen möchtest, dass dein Script besser sein soll als meins
muss ich einfach nur lachen.

Und wenn du es nicht verkraftest, dass ein anderes Script besser ist als deins,
brauchst du den Poster nicht gleich reporten. Es steht nirgendwo geschrieben,
dass das verboten ist, du kannst einen User also höchstens darum bitten.

Dein Thread hingegen gehört eigentlich in die AutoIt Sektion, überlege dir also
2 mal, wer näher an einem Regelverstoß ist.
Nur zur Info, das ist die Antwort auf deinen unbearbeiteten Beitrag.
08/07/2010 23:26 v0lle#12
Welcher Thankschecker + UDF ist jetzt besser? xD
Mattthias seiner und deiner Killer o_O
Was du da geschrieben hast sagt einiges aber Mattthias sein Edit dort steht das seiner sicherer ist das bringt wieder zum verzweifeln! -.-
08/07/2010 23:32 »Liight.#13
In Diesem Thread soll kein Kampf zwischen dir und Matthias entstehen, ihr tut alle so als wärt ihr die Meister in allen Dingen.
Wenn Matthias was postet und da drin ist ein Fehler kommen Leute wie Expo oder du und präsentieren ihr perfektes und ach-so-wundervolles Zeugs. Am Ende oder mittendrin dann immer etwas was den anderen erniedrigt oder ihn schlecht macht.

"Wenn du behauptest dein Script ist besser als meins muss ich einfach nur lachen."
Und wenn ich mir das durchlese muss ich auch einfach nur lachen.

Wieso muss der Thread unbedingt in die AutoIT Section, ich finde er kann auch ruhig hierbleiben. Es gibt Leute die schauen hier nicht in die AutoIT Section, es hilft einigen Leuten bei ihren 4Story Hacks.

Aus Fehlern kann man lernen, und langsam ist es hier so als sollte man lieber nix posten was nicht zu 100% Perfekt ist.
08/07/2010 23:38 KDeluxe#14
Quote:
Originally Posted by volle14 View Post
Welcher Thankschecker + UDF ist jetzt besser? xD
Mattthias seiner und deiner Killer o_O
Was du da geschrieben hast sagt einiges aber Mattthias sein Edit dort steht das seiner sicherer ist das bringt wieder zum verzweifeln! -.-
Setzt einen "farbigen" oder einen User mit Sonderzeichen im Namen beide Scripts vor (am
besten als .exe) und frage diesem dann, welcher funktioniert und welcher nicht.
Meine Begründung sollte aber eigentlich auch als Antwort reichen, da auch geschrieben
habe, was falsch ist.

Die Hauptprobleme von Mattthias sind
1.
PHP Code:
Local $ThanksName _StringBetween($ThanksSource$Name '.html" rel=nofollow>''</A>&nbsp;('
und 2.
PHP Code:
If $ThanksName[1] = $Name Then 
Was ich als 3. Problem angekreidet habe ist nicht gravierend, ich bin aber der Meinung,
dass man darauf achten soll.

@Uliandior
Ich hab es nicht nötig, mich in irgendwelche Dingen zu beweisen. Mattthias hat seinen Beitrag
nachträglich geändert, deswegen hört sich mein Satz vielleicht nicht sonderlich gut an, ist aber
nichts als die Wahrheit. Man kann meinen Beitrag mit Lösungsvorschlägen als sinnvoll ansehen,
wer das nicht möchte, dem kann ich auch nicht helfen.
Und das mein kleines Script "ach-so-wundervoll" ist habe ich nie behauptet.
08/07/2010 23:51 Italien...Donni#15
@Uliandior
Sein Script ist besser ausdem gibt er nur tipps und so wie man das verbessern könnte, solche beiträge was du lieferst kan man sich sparen