Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 19:18

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Register/Login Script [AutoIt]

Discussion on Register/Login Script [AutoIt] within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
Register/Login Script [AutoIt]

Hallöchen, ich zeige euch meinen selbst geschriebenen AutoIt Register/Login Script vor.

Erklärung:
Wenn man sich registriert speichert er in den Ordner Spieler 2 Textdateien, ein mal Username und Passwort. Natürlich verschlüsselt es auch den Passwort damit es sicherer ist. Wenn man sich einloggt, fragt es ab ob eine Datei existiert mit den Username, und wenn ja fragt es ab ob alles genau gleich ist.

Wenn ihr den Script nicht downloaded sondern einfach kopiert, müsst ihr einen Ordner namens Spieler erstellen.

Script:
Code:
#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Created by sezer0012", 247, 74, 379, 310)
GUISetBkColor(0x99B4D1)
$Button1 = GUICtrlCreateButton("Login", 128, 32, 99, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Registrieren", 8, 32, 107, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("NEU HIER?", 8, 8, 112, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
$Label2 = GUICtrlCreateLabel("ODER", 136, 8, 59, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
	  Case $GUI_EVENT_CLOSE
		 Exit
	  Case $Button1
		 Form2()
	  Case $Button2
		 Form3()

	EndSwitch
WEnd

Func Form2()
   
   #Region ### START Koda GUI section ### Form=
   $Form2 = GUICreate("Login", 216, 94, 337, 251)
   GUISetBkColor(0x99B4D1)
   $Label1 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
   $Label2 = GUICtrlCreateLabel("Geheimcode:", 8, 32, 67, 17)
   $Input1 = GUICtrlCreateInput("", 80, 8, 121, 21)
   $Input2 = GUICtrlCreateInput("", 80, 32, 121, 21)
   $Button1 = GUICtrlCreateButton("Login", 8, 56, 195, 25, $WS_GROUP)
   GUISetState(@SW_SHOW)
   #EndRegion ### END Koda GUI section ###

   While 1
	   $nMsg = GUIGetMsg()
	   Switch $nMsg
		 Case $GUI_EVENT_CLOSE
			Exit
		 Case $Button1
			Local $datei1, $datei2, $zeile1, $zeile2
			
			Local $username3 = GUICtrlRead($Input1)
			Local $gehcode4 = GUICtrlRead($Input2)
			
			Local $zeile1 = FileRead("S" & $username3)
			Local $zeile2 = FileRead("P" & $gehcode4)
			
			$datei1 = FileOpen(@ScriptDir & "\Spieler\Spieler " & $username3 & "\" & "S" & $username3)
			$datei2 = FileOpen(@ScriptDir & "\Spieler\Spieler " & $username3 & "\" & "P" & $gehcode4)
	  
			If Not FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Username" & ".txt") Then
			   MsgBox(16, "Fehler!", "Account existiert nicht.")
			   Exit
			EndIf
			
			If Not FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Passwort" & ".txt") Then
			   MsgBox(16, "Fehler!", "Passwort falsch angegeben!")
			   Exit
			EndIf
			
			If FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Username" & ".txt") And FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Passwort" & ".txt") Then
			   Form4()
			Else
			   MsgBox(16, "Fehler!", "Es ist ein Unbekannter Fehler aufgetreten!")
			EndIf

	   EndSwitch
   WEnd


EndFunc

Func Form3()

   #Region ### START Koda GUI section ### Form=
   $Form3 = GUICreate("Registrieren", 397, 54, 302, 218)
   GUISetBkColor(0x99B4D1)
   $Label1 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
   $Input1 = GUICtrlCreateInput("", 64, 8, 121, 21)
   $Label2 = GUICtrlCreateLabel("Passwort:", 192, 8, 67, 17)
   $Input2 = GUICtrlCreateInput("", 264, 8, 121, 21)
   $Button1 = GUICtrlCreateButton("Registrieren", 64, 32, 323, 17, $WS_GROUP)
   GUISetState(@SW_SHOW)
   #EndRegion ### END Koda GUI section ###

   While 1
	   $nMsg = GUIGetMsg()
	   Switch $nMsg
		 Case $GUI_EVENT_CLOSE
			Exit
		 Case $Button1
			Local $Spieler = "\Spieler\"
			
			$username1 = GUICtrlRead($Input1)
			$gehcode2 = GUICtrlRead($Input2)
			$lvl = 1
			
			If FileExists(@ScriptDir & $Spieler & $username1 & "\" & "S" & $username1 & ".txt") Then
			   MsgBox(16, "Fehler!", "Account existiert schon!" & @CRLF & @CRLF & "Wenn sie ihr Passwort vergessen haben," & @CRLF & "müssen sie sich einen neuen Account" & @CRLF & "mit anderen Daten zulegen.")
			   Exit
			EndIf

			DirCreate(@ScriptDir & "\Spieler\" & $username1)
			FileWrite(@ScriptDir & "\Spieler\" & $username1 & "\" & "Username" & ".txt", $username1 & @CRLF)
			FileWrite(@ScriptDir & "\Spieler\" & $username1 & "\" & "Passwort" & ".txt", _StringEncrypt(1, $gehcode2, $gehcode2, $lvl))
			
			MsgBox(0, "Erfolgreich!", "Sie haben sich erfolgreich Registriert," & @CRLF & "loggen sie sich bitte jetzt ein.")
			Exit
			
			$LOG = FileOpen(@ScriptDir & "\Spieler\" & "Spieler " & $username1 & ".txt", 1 )
			If $LOG = -1 Then
			   MsgBox( 0, "Mist", "Datei konnte nicht geöffnet werden" )
			   Exit
			EndIf
			
	   EndSwitch
   WEnd

EndFunc

Func Form4()
   
   #Region ### START Koda GUI section ### Form=
   $Form4 = GUICreate("Das wars!", 391, 238, 192, 124)
   $Edit1 = GUICtrlCreateEdit("", 0, 0, 385, 233)
   GUICtrlSetData(-1, "Edit1")
   GUISetState(@SW_SHOW)
   #EndRegion ### END Koda GUI section ###

   GUICtrlSetData($Edit1, "Das war das Login - Script.")

   While 1
	   $nMsg = GUIGetMsg()
	   Switch $nMsg
		   Case $GUI_EVENT_CLOSE
			   Exit

	   EndSwitch
   WEnd

   
EndFunc
VirusTotal:
Download - Link:

Natürlich müsst ihr noch was ändern, also wenn man sich eingeloggt hat soll ja was passieren, das müsst ihr ändern wie ihr es wollt!
Das ist mein erstes richtiges AutoIt Script
wenn es bugs gibt bitte melden
sezer0012 is offline  
Thanks
3 Users
Old 05/11/2013, 14:19   #2
 
WJNeeson's Avatar
 
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
Hallo sezer :)
Die Idee von deinem Script ist gut, aber du setzt sie leider nicht richtig um.
Ist nichts schlimmes, man lernt ja aus Fehlern.
Hab mir deinen Script mal angeschaut und abgeändert und nun will ich dir zeigen was man besser machen kann:

PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#include <Array.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Created by sezer0012"24774, -1, -1)
GUISetBkColor(0x99B4D1)
$Button1 GUICtrlCreateButton("Login"128329925$WS_GROUP)
$Button2 GUICtrlCreateButton("Registrieren"83210725$WS_GROUP)
$Label1 GUICtrlCreateLabel("NEU HIER?"8811219)
GUICtrlSetFont(-1148000"Tahoma")
$Label2 GUICtrlCreateLabel("ODER"13685919)
GUICtrlSetFont(-1148000"Tahoma")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

#Region ### START Koda GUI section ### Form=
$Form2 GUICreate("Login"21694, -1, -1)
GUISetBkColor(0x99B4D1)
$Label3 GUICtrlCreateLabel("Username:"885517)
$Label4 GUICtrlCreateLabel("Geheimcode:"8326717)
$Input1 GUICtrlCreateInput(""80812121)
$Input2 GUICtrlCreateInput(""803212121)
$Button3 GUICtrlCreateButton("Login"85619525$WS_GROUP)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###

#Region ### START Koda GUI section ### Form=
$Form3 GUICreate("Registrieren"39754, -1, -1)
GUISetBkColor(0x99B4D1)
$Label5 GUICtrlCreateLabel("Username:"885517)
$Input3 GUICtrlCreateInput(""64812121)
$Label6 GUICtrlCreateLabel("Passwort:"19286717)
$Input4 GUICtrlCreateInput(""264812121)
$Button4 GUICtrlCreateButton("Registrieren"643232317$WS_GROUP)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###

#Region ### START Koda GUI section ### Form=
$Form4 GUICreate("Das wars!"391238, -1, -1)
$Edit1 GUICtrlCreateEdit(""00385233)
GUICtrlSetData(-1"Edit1")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg 
GUIGetMsg(1)
    Switch 
$nMsg[0]
        Case 
$GUI_EVENT_CLOSE
            
Switch $nMsg[1]
                Case 
$Form1
                    
Exit
                Case 
$Form2
                    GUISetState
(@SW_HIDE$Form2)
                Case 
$Form3
                    GUISetState
(@SW_HIDE$Form3)
                Case 
$Form4
                    GUISetState
(@SW_HIDE$Form4)
            EndSwitch
        Case 
$Button1 ;LoginForm
            GUISetState
(@SW_SHOW$Form2)
        Case 
$Button2 ;RegisterForm
            GUISetState
(@SW_SHOW$Form3)
        Case 
$Button3 ;Login
            $Username 
GUICtrlRead($Input1)
            
$Passwort GUICtrlRead($Input2)
            
$RegUsers IniReadSectionNames(@ScriptDir "/Spieler.ini")
            If 
_ArraySearch($RegUsers$Username) <> -1 Then
                $sPasswort 
_StringEncrypt(0IniRead(@ScriptDir "/Spieler.ini"$Username"password"""), "1337")
                If 
$sPasswort $Passwort Then
                    GUISetState
(@SW_SHOW$Form4)
                Else
                    
MsgBox(16"""Falsches Passwort")
                EndIf
            Else
                
MsgBox(16"""Benutzer existiert nicht")
            EndIf
        Case 
$Button4 ;Register
            $Username 
GUICtrlRead($Input3)
            
$Passwort GUICtrlRead($Input4)
            
$RegUsers IniReadSectionNames(@ScriptDir "/Spieler.ini")
            If 
_ArraySearch($RegUsers$Username) = -1 Then
                IniWrite
(@ScriptDir "/Spieler.ini"$Username"password"_StringEncrypt(1$Passwort"1337"))
                
MsgBox(64"""Erfolgreich registriert")
            Else
                
MsgBox(16"""Benutzer existiert bereits")
            EndIf
    EndSwitch
WEnd 
Wenn du in einem Script mehrere GUIs benutzt, dann setz sie an den Anfang alle untereinander und benutze keine verschiedenen Funktionen dafür.
Der Grund dafür ist ganz einfach: wenn ich zwei Funktionen habe mit jeweils einer GUI und über die GUI in der Funktion1 die Funktion2 aufrufe, dann springe ich automatisch in die While-Schleife der zweiten GUI und kann somit keine Elemente mehr aus der ersten GUI benutzen.
Außerdem schließt sich der gesamte Script, wenn ich das Fenster schließen will.

Lösung: Eine erweiterte GUIGetMsg-Abfrage.
GUIGetMsg(1) gibt eine Array zurück, die unter anderem die Ereignis-ID ($nMsg[0]) und das Fenster-Handle der GUI beinhaltet, in welcher das Ereignis gemeldet wird ($nMsg[1]).

Beim Registrieren ist mir aufgefallen, dass ich mich mehrmals registrieren kann. Wenn der Benutzername schon existiert komm keine Fehlermeldung, sondern das alte Passwort wird einfach mit dem neuen Überschrieben und in der Username.txt stehen dann zwei Zeilen mit dem gleichen Namen.

Lösung: Alle Benutzer in eine Ini-Datei stecken.
Eine Ini-Datei bietet hier viele Vorteile. Einmal ist die Abfrage der Daten leichter und man kann ohne viele Dateien mehr Daten speichern (z.B. ob ein Benutzer gesperrt ist, oder schon eingeloggt).
Hier mal ein Beispiel:
PHP Code:
[Benutzer1]
password=E2B91FAE039A9112B9549524
[Benutzer2]
password=9BBD1ED5 
Der Befehl IniReadSectionNames würde nun eine Array zurückgeben ($aBenutzer[3] = [2, "Benutzer1", "Benutzer2"]) und du musst mit _ArraySearch oder einer For-Schleife nurnoch überprüfen, ob der eingegebene Benutzername in der Array vorhanden ist.
Falls ja, wird das Passwort aus der Section des Benutzers ausgelesen und mit dem eingegebenen Passwort verglichen.

Falls du noch Fragen hast oder Hilfe benötigst, dann melde dich einfach bei mir!
WJNeeson is offline  
Old 05/11/2013, 14:42   #3
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Nunja, an sich eine ganz nette Idee, jedoch gibt es eine Menge zu bemengeln.
Die Verschlüsselung ist einfach nur **** und bietet null Sicherheit.
Das Speichern des Benutzernamen und Passwortes in einzelne .txt Dateien macht die Sache ziemlich umständlich und ist auch nicht die eleganteste Möglichkeit. Versuch doch mal das Passwort und den Benutzernamen in die registry mit einem eigenen Verschlüsslungsalgoritmus abzuspeichern. Das macht es um einiges einfacher und Daten aus der registry zu lesen ist schneller als die Textdokumente zu öffnen, lesen und anschließend wieder schließen. Desweitern bleiben die geöffneten Formen (Login, Register) immer im Hintergrund sichtbar, was sich sehr einfach beheben lässt.
Hoffe ich konnte dir soweit helfen, dass du es umsetzen kannst.

PS: Gib deinen Variablen ordentliche Namen - Stichwort: Ungarische Notation
Logtetsch is offline  
Old 05/11/2013, 15:09   #4
 
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
Code:
#Region ### START Koda GUI section ### Form= 
$Form1 = GUICreate("Created by sezer0012", 247, 74, -1, -1) 
GUISetBkColor(0x99B4D1) 
$Button1 = GUICtrlCreateButton("Login", 128, 32, 99, 25, $WS_GROUP) 
$Button2 = GUICtrlCreateButton("Registrieren", 8, 32, 107, 25, $WS_GROUP) 
$Label1 = GUICtrlCreateLabel("NEU HIER?", 8, 8, 112, 19) 
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma") 
$Label2 = GUICtrlCreateLabel("ODER", 136, 8, 59, 19) 
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma") 
GUISetState(@SW_SHOW) 
#EndRegion ### END Koda GUI section ### 

#Region ### START Koda GUI section ### Form= 
$Form2 = GUICreate("Login", 216, 94, -1, -1) 
GUISetBkColor(0x99B4D1) 
$Label3 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17) 
$Label4 = GUICtrlCreateLabel("Geheimcode:", 8, 32, 67, 17) 
$Input1 = GUICtrlCreateInput("", 80, 8, 121, 21) 
$Input2 = GUICtrlCreateInput("", 80, 32, 121, 21) 
$Button3 = GUICtrlCreateButton("Login", 8, 56, 195, 25, $WS_GROUP) 
GUISetState(@SW_HIDE) 
#EndRegion ### END Koda GUI section ### 

#Region ### START Koda GUI section ### Form= 
$Form3 = GUICreate("Registrieren", 397, 54, -1, -1) 
GUISetBkColor(0x99B4D1) 
$Label5 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17) 
$Input3 = GUICtrlCreateInput("", 64, 8, 121, 21) 
$Label6 = GUICtrlCreateLabel("Passwort:", 192, 8, 67, 17) 
$Input4 = GUICtrlCreateInput("", 264, 8, 121, 21) 
$Button4 = GUICtrlCreateButton("Registrieren", 64, 32, 323, 17, $WS_GROUP) 
GUISetState(@SW_HIDE) 
#EndRegion ### END Koda GUI section ### 

#Region ### START Koda GUI section ### Form= 
$Form4 = GUICreate("Das wars!", 391, 238, -1, -1) 
$Edit1 = GUICtrlCreateEdit("", 0, 0, 385, 233) 
GUICtrlSetData(-1, "Edit1") 
GUISetState(@SW_HIDE) 
#EndRegion ### END Koda GUI section ###
Wenn ich das jetzt einfügen würde, würden dann nicht alle 4 Fenster gleichzeitig geöffnet?
sezer0012 is offline  
Old 05/11/2013, 15:13   #5
 
WJNeeson's Avatar
 
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
Quote:
Originally Posted by sezer0012 View Post
Wenn ich das jetzt einfügen würde, würden dann nicht alle 4 Fenster gleichzeitig geöffnet?
Geöffnet ja, aber du siehst sie nicht.
WJNeeson is offline  
Thanks
1 User
Old 05/11/2013, 15:17   #6
 
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
Quote:
Originally Posted by #System View Post
Geöffnet ja, aber du siehst sie nicht.
Danke das hab ich jetzt gecheckt,
aber könntest du mir vielleicht noch das mit
nMsg erklären.
sezer0012 is offline  
Old 05/11/2013, 15:28   #7
 
WJNeeson's Avatar
 
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
Wenn du eine While Schleife mit der GUIGetMsg Abfrage hast, also:
PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
    EndSwitch
WEnd 
Und jetzt etwas in deiner GUI machst, z.b. das rote X zum Schließen drückst, dann gibt GUIGetMsg die Ereignis-ID zurück.
Und je nach dem wie diese lautet schreibst du in die Cases für den Rückgabewert von GUIGetMsg Funktionen.
Wenn die Ereignis-ID $GUI_EVENT_CLOSE ist, dann wird das Programm geschlossen.

Benutzt du aber GUIGetMsg(1), also den Advanced Mode, dann erhälst du mehr als nur die Ereignis-ID.

Quote:
Originally Posted by AutoIt Hilfe
Wird der "advanced"-Parameter verwendet, werden die Informationen in einem Array zurückgegeben:
$array[0] = 0 oder Ereignis-ID oder Control-ID
$array[1] = Der Fenster-Handle des Fensters, von dem das Ereignis gemeldet wird
$array[2] = Der Control-Handle des Controls, von dem das Ereignis gemeldet wird (gegebenenfalls)
$array[3] = Die aktuelle X-Position des Mauszeigers (relativ zum GUI-Fenster)
$array[4] = Die aktuelle Y-Position des Mauszeigers (relativ zum GUI-Fenster)
Wenn die GUIOnEventMode-Option auf 1 gesetzt ist, ist der Rückgabewert von GUIGetMsg immer 0, und @error wurde auf 1 gesetzt.
Heißt, wenn wir mehrere GUIs haben können wir im Advanced Mode abfragen, aus welcher der GUIs das Event gesendet wird:

PHP Code:
While 1
    $nMsg 
GUIGetMsg(1)
    Switch 
$nMsg[0]
        Case 
$GUI_EVENT_CLOSE
            
Switch $nMsg[1]
                Case 
$Form1
                    
Exit
                Case 
$Form2
                    GUISetState
(@SW_HIDE$Form2)
            EndSwitch
    EndSwitch
WEnd 
Wenn wir das rote X drücken (egal in welcher GUI), fragen wir in einer zweiten Switch-Anweisung ab, in welcher GUI das X gedrückt wurde.
Wenn es in $Form1 war wird der Script beendet, und wenn es in $Form2 war wird nur $Form2 unsichtbar gemacht.
WJNeeson is offline  
Old 05/11/2013, 15:43   #8
 
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
Okey danke D
sezer0012 is offline  
Old 05/15/2013, 20:16   #9
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
Quote:
Originally Posted by sezer0012 View Post
[SIZE="5"]Erklärung:
[I]Wenn man sich registriert speichert er in den Ordner Spieler 2 Textdateien, ein mal Username und Passwort.
Eine offline Registrierung hat bitte welchen Sinn?
Dann vielleicht doch eher Server+ php + mysql?

MfG
Achat is offline  
Reply


Similar Threads Similar Threads
autoit and mysql login/register forms
09/12/2012 - AutoIt - 1 Replies
ive been trying to create login form in autoit with mysql... and it logins nomater what you enter... $SQL = _MySQLConnect($Connection, $Connection, "mydb", $Connection) If @error Then MsgBox(0, "", "failed") $VerifyLoginInp = _Query($SQL, "SELECT username FROM accounts WHERE 'username' = '"&guictrlread($usernamelogin)&" '") If GUICtrlRead($UsernameLogin) = $VerifyLoginInp Then MsgBox(0, "", "KKKKKKKKKK") ;~ Exit EndIf
login logout register script
10/08/2011 - General Coding - 2 Replies
hallo ich würde gerne wissen was man alles für Login Logout Register Script so braucht braucht wäre nett wen mir einer ein Guide zeigen könnte wie man so was macht Danke schon mal im voraus sorry wenn ich falsch bin
register,login und logout script
10/07/2011 - Main - 1 Replies
hallo ich würde gerne wissen was man alles für Login Logout Register Script so braucht wäre nett wen ich eine sinnvolle Antwort bekäme danke schon mal im voraus
[AutoIT]Login Script
10/10/2010 - AutoIt - 9 Replies
Hay Leuts Hatt Jemand Eventl Ein Login Script Das Mit Meiner DB Verbindet Und Dan Die Login Daten Überprüft?
Help with autoit login script
03/16/2008 - Cabal Online - 7 Replies
I was wondering if there was a script to do the image verification when you login or to somehow bypass this screen.



All times are GMT +1. The time now is 19:19.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.