Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 21:10

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

Advertisement



pointer zwischenspeicher

Discussion on pointer zwischenspeicher within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
pointer zwischenspeicher

also ich habe einen pointer der auf eine value zeigt(coordinate), jetzt will ein zwischenspeicher haben, welcher die value von dem moment wo ich sie abspeicher bei behält.
z.b coordinate ist 2000, dann zwischenspeicher ich es auf x, laufe ein stück dann ist x 2000 und coordinate hat sich geändert auf was auch immer, egal was ich probiert habe entweder ist mein game gecrasht oder x(als ich x auch als dword deklariert habe) hatte ständig den geänderten wert auch
Slade100 is offline  
Old 11/09/2014, 21:59   #2
 
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
Das ist zu schade. Ich hoffe, du findest eine Lösung für dein Problem.

Oh, und bevor ich es vergesse: Du solltest eine Frage stellen, deinen Weg und dein Ziel beschreiben und dich nicht auf die Kristallkugeln anderer verlassen ("War und bleibt das X?").
Tasiro is offline  
Thanks
1 User
Old 11/09/2014, 22:54   #3
 
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
Quote:
Originally Posted by Tasiro View Post
Das ist zu schade. Ich hoffe, du findest eine Lösung für dein Problem.

Oh, und bevor ich es vergesse: Du solltest eine Frage stellen, deinen Weg und dein Ziel beschreiben und dich nicht auf die Kristallkugeln anderer verlassen ("War und bleibt das X?").
danke für den hinweis, aber die frage könnte man sich doch denken^^ also wie kriege ich einen zwischenspeicher für den value( auf welches ein pointer zeigt )hin?
Slade100 is offline  
Old 11/09/2014, 23:55   #4
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
wenn ich das richtig verstanden habe versuchs mal mit
dein Pointer:
Code:
int * Zeiger;
deine absicherung
Code:
int * Zeiger2;
Zeiger2 = Zeiger;
deine veränderung von zeiger
Code:
for (int i=0; i<2103; i++) {
  Zeiger* = i;
  Zeiger++;
}
Und Zeiger wieder auf den startwert setzten:
Code:
Zeiger = Zeiger2;
und tada du hast einen pointer mit 2103 werten und er zeigt am ende wirder auf den start punkt

Option 2:
Code:
Zeiger = Zeiger - (Steps * SizeofInt);
müsste auch funktionieren, musst halt die steps zählen
warfley is offline  
Old 11/10/2014, 06:55   #5
 
elite*gold: 198
Join Date: Mar 2011
Posts: 835
Received Thanks: 263
Quote:
Originally Posted by warfley View Post
wenn ich das richtig verstanden habe versuchs mal mit
dein Pointer:
Code:
int * Zeiger;
deine absicherung
Code:
int * Zeiger2;
Zeiger2 = Zeiger;
deine veränderung von zeiger
Code:
for (int i=0; i<2103; i++) {
  Zeiger* = i;
  Zeiger++;
}
Und Zeiger wieder auf den startwert setzten:
Code:
Zeiger = Zeiger2;
und tada du hast einen pointer mit 2103 werten und er zeigt am ende wirder auf den start punkt

Option 2:
Code:
Zeiger = Zeiger - (Steps * SizeofInt);
müsste auch funktionieren, musst halt die steps zählen
Ihr habt das mit den Pointern noch nicht so ganz begriffen ne ^^
Wenn du einen Zeiger hast der auf einen Int zeigt der als wert 32 hat und du nun einen Zeiger erstellst der auf den genannten Zeiger zeigt. Dann zeigen am Ende beide Zeiger auf den int mit dem Wert 32. Ein Zeiger zeigt immer auf eine Adresse im RAM sobald sich der Wert darin ändert, ändert sich auch der Wert des Zeigers. In deinem Beispiel hat Zeiger2 IMMER den gleichen wert wie Zeiger Nebst dem müsste dein Pointer Zahl2 so aussehen "int **Zeiger2;" weil es ein Pointer auf einen Pointer ist.
Code:
int x = 1;
int xCache = x;
int *ptrToX = &x;

for(x = 0; x <= 100; x++){
    foo(xCache); // x hat den alten wert
    bar(ptrToX); // x mit dem neuen wert
    xCache = *ptrToX; // den wert von x cachen
}
Hab euch etwas gezeichnet:
ƬheGame is offline  
Old 11/10/2014, 10:37   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by ƬheGame View Post
Ihr habt das mit den Pointern noch nicht so ganz begriffen ne ^^
Wenn du einen Zeiger hast der auf einen Int zeigt der als wert 32 hat und du nun einen Zeiger erstellst der auf den genannten Zeiger zeigt. Dann zeigen am Ende beide Zeiger auf den int mit dem Wert 32. Ein Zeiger zeigt immer auf eine Adresse im RAM sobald sich der Wert darin ändert, ändert sich auch der Wert des Zeigers. In deinem Beispiel hat Zeiger2 IMMER den gleichen wert wie Zeiger Nebst dem müsste dein Pointer Zahl2 so aussehen "int **Zeiger2;" weil es ein Pointer auf einen Pointer ist.
Code:
int x = 1;
int xCache = x;
int *ptrToX = &x;

for(x = 0; x <= 100; x++){
    foo(xCache); // x hat den alten wert
    bar(ptrToX); // x mit dem neuen wert
    xCache = *ptrToX; // den wert von x cachen
}
Hab euch etwas gezeichnet:
Um mal Korinthen zu kacken:
Nein, der erste Zeiger zeigt auf den int, der zweite zeigt auf den ersten Zeiger.
Ebenfalls ändert sich nicht der Wert des Zeigers (der bleibt nämlich immer die Adresse), wenn sich der int ändert.
MrSm!th is offline  
Thanks
1 User
Old 11/10/2014, 12:16   #7
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Quote:
Ihr habt das mit den Pointern noch nicht so ganz begriffen ne ^^
Wenn du einen Zeiger hast der auf einen Int zeigt der als wert 32 hat und du nun einen Zeiger erstellst der auf den genannten Zeiger zeigt. Dann zeigen am Ende beide Zeiger auf den int mit dem Wert 32. Ein Zeiger zeigt immer auf eine Adresse im RAM sobald sich der Wert darin ändert, ändert sich auch der Wert des Zeigers. In deinem Beispiel hat Zeiger2 IMMER den gleichen wert wie Zeiger Nebst dem müsste dein Pointer Zahl2 so aussehen "int **Zeiger2;" weil es ein Pointer auf einen Pointer ist.
Ich glaube du hast da nicht was ganz richtig verstanden, oder ich habe mich mit der Syntax geirrt, aber
Code:
int * Zeiger2;
Zeiger2=Zeiger
ist nicht
Code:
int * Zeiger2;
Zeiger2*=Zeiger
Ich sage nicht Zeiger 2 ist ein pointer der auf einen pointer zeigt, ich sage Zeiger 2 ist ein pointer der auf das selbe Element wie Zeiger zeigr
erhöhe ich nun den stack Wert von Zeiger interessiert das den Zeiger 2 ja nicht im geringsten, da der ja schön weiter auf das erste Element zeigt, und noch den alten stack Wert von Zeiger enthält. Ich hätte auch einen integer nehmen können um das zwischenzuspeichern, aber ich wweiss nich mehr welcher integer Typ in C die Größe eines pointers hat sich
warfley is offline  
Old 11/10/2014, 14:48   #8
 
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
Quote:
Originally Posted by ƬheGame View Post
Ihr habt das mit den Pointern noch nicht so ganz begriffen ne ^^
Wenn du einen Zeiger hast der auf einen Int zeigt der als wert 32 hat und du nun einen Zeiger erstellst der auf den genannten Zeiger zeigt. Dann zeigen am Ende beide Zeiger auf den int mit dem Wert 32. Ein Zeiger zeigt immer auf eine Adresse im RAM sobald sich der Wert darin ändert, ändert sich auch der Wert des Zeigers. In deinem Beispiel hat Zeiger2 IMMER den gleichen wert wie Zeiger Nebst dem müsste dein Pointer Zahl2 so aussehen "int **Zeiger2;" weil es ein Pointer auf einen Pointer ist.
Code:
int x = 1;
int xCache = x;
int *ptrToX = &x;

for(x = 0; x <= 100; x++){
    foo(xCache); // x hat den alten wert
    bar(ptrToX); // x mit dem neuen wert
    xCache = *ptrToX; // den wert von x cachen
}
Hab euch etwas gezeichnet:
danke für die erklärung, das mit den pointern bringe ich immer wenig durcheinander, aber deine erklärung hats ziemlich verständlich gemacht, dafür danke ich dir schonmal sehr , nur noch was
1. was macht foo und bar?
2. ich hab mich wahrscheinlich schlecht ausgedrückt, das problem von mir ist ja das bei mir die variabel wo der pointer drauf zeigt nicht existiert, also sie existiert schon aber nicht in meiner source, wie gesagt diese ist ingame meine coordinate

ich glaub ich kanns am besten durch meine source als beispiel zeigen, damit ihr wisst was gemeint ist
also ich habe mit pattern gearbeitet


DWORD xJmpBack = 0; //jmp damit, nach meinem bearbeiteten punkt normal weiter gemacht wird
DWORD xRegister = 0x0; // hier wird die adresse von EAX gespeichert(siehe unten)
DWORD xPtr; // hier wird im nächsten teil hpregister+ offset drauf gespeichert

in meinem header ist der teil:
_declspec(naked) void xChange()
{
__asm
{
CMP [EAX+0x46AC],0h
MOV xRegister, EAX
jmp [xJmpBack]
}

}
in meiner source.cpp ist das hier:
xPtr = xRegister + 0x46AC;

klappt auch wunderbar alles, hab somit die x coordinate ingame, nun aber zum problem
unzwar will ich, sobald ich mein programm starte, die x coordinate zum start punkt gespeichert werden. damit ich das eine bedingung habe wie: if(*(int*)xPtr != xstart) ....;
oder gibts vllt eine bedinung wie , if (wenn *(int*)xPtr sich ändert), das würde das ganze auch extrem leicht machen aber so eine bedingung ist mir nicht bekannt
Slade100 is offline  
Old 11/10/2014, 15:29   #9
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
foo und bar stehen als Platzhalter für irgendwelche Methoden/Zuweisungen, und sollen andeuten, an dieser stelle machst du irgendetwas, ziemlich egal was.
warfley is offline  
Old 11/10/2014, 15:36   #10
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Originally Posted by ƬheGame View Post
... jede menge unverständlicher mist ...
wenn du es nicht richtig weißt, oder nicht in der lage bist korrekt zu erklären solltest du es bitte auch nicht versuchen, das stiftet nur verwirrung.

Fehler:
1.
Quote:
Wenn du einen Zeiger hast der auf einen Int zeigt der als wert 32 hat und du nun einen Zeiger erstellst der auf den genannten Zeiger zeigt. Dann zeigen am Ende beide Zeiger auf den int mit dem Wert 32.
falsch.
Code:
int x = 32;
int* ptr1 = &x;
int** ptr2 = &ptr1;
ptr1 zeigt auf x, ptr2 zeigt auf ptr1 und nicht auf einen int mit dem wert 32.

2.
Quote:
Ein Zeiger zeigt immer auf eine Adresse im RAM sobald sich der Wert darin ändert, ändert sich auch der Wert des Zeigers.
falsch.
der Wert eines zeigers ist die adresse die er beinhaltet, nicht der inhalt der speicheradresse auf die er zeigt.
also ändert sich der wert von ptr1 nicht wenn x geändert wird, der von ptr2 sowieso nicht.

3.
Quote:
In deinem Beispiel hat Zeiger2 IMMER den gleichen wert wie Zeiger
falsch.
ptr2 hat den wert &ptr1, ptr1 hat den wert &x.

du scheinst da etwas mit den begrifflichkeiten durcheinander zu kommen, der wert eines zeigers ist die adresse, nicht der inhalt der adresse.
Dr. Coxxy is offline  
Thanks
1 User
Old 11/10/2014, 16:17   #11
 
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
Quote:
Originally Posted by Dr. Coxxy View Post
wenn du es nicht richtig weißt, oder nicht in der lage bist korrekt zu erklären solltest du es bitte auch nicht versuchen, das stiftet nur verwirrung.

Fehler:
1.

falsch.
Code:
int x = 32;
int* ptr1 = &x;
int** ptr2 = &ptr1;
ptr1 zeigt auf x, ptr2 zeigt auf ptr1 und nicht auf einen int mit dem wert 32.

2.

falsch.
der Wert eines zeigers ist die adresse die er beinhaltet, nicht der inhalt der speicheradresse auf die er zeigt.
also ändert sich der wert von ptr1 nicht wenn x geändert wird, der von ptr2 sowieso nicht.

3.

falsch.
ptr2 hat den wert &ptr1, ptr1 hat den wert &x.

du scheinst da etwas mit den begrifflichkeiten durcheinander zu kommen, der wert eines zeigers ist die adresse, nicht der inhalt der adresse.
und deswegen ist das thema so verwirrend, einer erklärt wie das funzt, dann kommt ein zweiter verbessert den 1., dann ein 3. derr nochmal den 2. verbessert, ich bin auf den 4. gespannt^^ ne spaß danke für die erklärung habs mittlerweile gecheckt aber wie ich den zwischenspeicher hinkriege weiß ich immernoch nich
Slade100 is offline  
Old 11/11/2014, 08:43   #12
 
elite*gold: 198
Join Date: Mar 2011
Posts: 835
Received Thanks: 263
Quote:
Originally Posted by Dr. Coxxy View Post
wenn du es nicht richtig weißt, oder nicht in der lage bist korrekt zu erklären solltest du es bitte auch nicht versuchen, das stiftet nur verwirrung.

Fehler:
1.

falsch.
Code:
int x = 32;
int* ptr1 = &x;
int** ptr2 = &ptr1;
ptr1 zeigt auf x, ptr2 zeigt auf ptr1 und nicht auf einen int mit dem wert 32.

2.

falsch.
der Wert eines zeigers ist die adresse die er beinhaltet, nicht der inhalt der speicheradresse auf die er zeigt.
also ändert sich der wert von ptr1 nicht wenn x geändert wird, der von ptr2 sowieso nicht.

3.

falsch.
ptr2 hat den wert &ptr1, ptr1 hat den wert &x.

du scheinst da etwas mit den begrifflichkeiten durcheinander zu kommen, der wert eines zeigers ist die adresse, nicht der inhalt der adresse.
Logischerweise beinhalten beide Pointer eine adresse. Aber das ist im Ende scheiss egal weil es darum geht was dabei rauskommt wenn man den Pointer dereferenziert und das ist nunmal der Int. Ich habe absichtlich nicht von Adressen gesprochen sonst blickt jemand der es nicht kann garnicht durch. Nebst dem steht da auch immer Zeigt auf x/y und nicht zeigt auf int. Schau dir mal das bild an, da steht auch ptr2 zeigt auf ptr1 der auf den int zeigt. Am Ende kann man meine Version so implementieren und es funktioniert im Gegensatz zu allem anderen was hier vor mir geschrieben wurde.

Ich sage nicht Zeiger 2 ist ein pointer der auf einen pointer zeigt, ich sage Zeiger 2 ist ein pointer der auf das selbe Element wie Zeiger zeigr
erhöhe ich nun den stack Wert von Zeiger interessiert das den Zeiger 2 ja nicht im geringsten, da der ja schön weiter auf das erste Element zeigt, und noch den alten stack Wert von Zeiger enthält. Ich hätte auch einen integer nehmen können um das zwischenzuspeichern, aber ich wweiss nich mehr welcher integer Typ in C die Größe eines pointers hat sich[/QUOTE]

[quote=warfley;30141765]Ich glaube du hast da nicht was ganz richtig verstanden, oder ich habe mich mit der Syntax geirrt, aber
Code:
int * Zeiger2;
Zeiger2=Zeiger
ist nicht
Code:
int * Zeiger2;
Zeiger2*=Zeiger
Quote:
for (int i=0; i<2103; i++) {
Zeiger* = i;
Zeiger++;
}
Also zeigst du einfach random auf irgendwelche Ram-stellen von denen du keine Ahnung hast was darin steht und schreibst da einfach etwas rein? Wenn du deinen Weg machen willst solltest du vielleicht erst den ganzen Speicherplatz allozieren den du da beschreiben willst und nicht random irgendwo ins ram schreiben. Das Programm wird wahrscheinlich dadurch höchstens abstürzen oder es geschehen andere Lustige dinge. Da kannst du auch gleich ne random funktion aufrufen und den wert dem Pointer zuweisen und danach frisch fröhlich dinge reinschreiben.

sowas wie:

Code:
ptr = (int*)malloc(sizeof(int)*2103);
wäre warscheinlich noch wichtig.
Auch da sollte man aber alles noch mit 0 inizialisieren, oder calloc verwenden
sofern man nicht zu 100% alle Stellen neu beschreibt.

Zu windows 95 zeiten hat ein Pointer an die falsche stelle noch den PC abstürzen lassen. Da konntest du das komplette Ram mit 0 befüllen da hat der Rechner nicht geschaut das du nicht außerhalb deines Speichers schreibst.
ƬheGame is offline  
Old 11/11/2014, 10:58   #13
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
Originally Posted by ƬheGame View Post
Logischerweise beinhalten beide Pointer eine adresse. Aber das ist im Ende scheiss egal weil es darum geht was dabei rauskommt wenn man den Pointer dereferenziert und das ist nunmal der Int. Ich habe absichtlich nicht von Adressen gesprochen sonst blickt jemand der es nicht kann garnicht durch. Nebst dem steht da auch immer Zeigt auf x/y und nicht zeigt auf int. Schau dir mal das bild an, da steht auch ptr2 zeigt auf ptr1 der auf den int zeigt.
Es geht aber um die begrifflichkeiten, der wert eines pointers ist nunmal eine adresse und nicht der wert der variable auf die er zeigt, das ist ein fest definierter begriff den man nicht einfach anders benutzen darf.

Quote:
Ich sage nicht Zeiger 2 ist ein pointer der auf einen pointer zeigt, ich sage Zeiger 2 ist ein pointer der auf das selbe Element wie Zeiger zeigr
erhöhe ich nun den stack Wert von Zeiger interessiert das den Zeiger 2 ja nicht im geringsten, da der ja schön weiter auf das erste Element zeigt, und noch den alten stack Wert von Zeiger enthält. Ich hätte auch einen integer nehmen können um das zwischenzuspeichern, aber ich weiss nich mehr welcher integer Typ in C die Größe eines pointers hat
was?
ptr2 zeigt aber auf ptr1 und nicht auf x, das auf x zeigen geschieht nur indirekt, wenn du ptr1 änderst zeigt ptr2 auch nicht mehr indirekt auf x.
Code:
int x = 10;
int y = 42;
int* ptr1 = &x;
int** ptr2 = &ptr1;
//**ptr2 == *ptr1 == x == 10
ptr1 = &y;
// **ptr2  == *ptr1 == y == 42
uintptr_t.
Dr. Coxxy is offline  
Old 11/11/2014, 13:08   #14
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Quote:
Also zeigst du einfach random auf irgendwelche Ram-stellen von denen du keine Ahnung hast was darin steht und schreibst da einfach etwas rein? Wenn du deinen Weg machen willst solltest du vielleicht erst den ganzen Speicherplatz allozieren den du da beschreiben willst und nicht random irgendwo ins ram schreiben. Das Programm wird wahrscheinlich dadurch höchstens abstürzen oder es geschehen andere Lustige dinge. Da kannst du auch gleich ne random funktion aufrufen und den wert dem Pointer zuweisen und danach frisch fröhlich dinge reinschreiben.
Das Speicher reservieren habe ich bewusst weggelassen, da ich die Methode in c nicht kenne um das zu machen, und das ist ja auch egal, da ich davon ausgehe das der TE schon seine Methode hat um den pointer zu verändern, und nurnwissen wollte wie er den anfangspointer wieder bekommt, und da habe ich einfach gezeigt, nimm einen Zeiger 2 weiße ihm den selben Keller Wert zu wie Zeiger 1, und dann kann man Zeiger 1 einfach verändern wie man will, da man noch einen 2ten pointer hat der immer auf das erste Symbol zeigt
warfley is offline  
Thanks
1 User
Old 11/11/2014, 15:18   #15
 
elite*gold: 198
Join Date: Mar 2011
Posts: 835
Received Thanks: 263
Quote:
Originally Posted by warfley View Post
Das Speicher reservieren habe ich bewusst weggelassen, da ich die Methode in c nicht kenne um das zu machen, und das ist ja auch egal, da ich davon ausgehe das der TE schon seine Methode hat um den pointer zu verändern, und nurnwissen wollte wie er den anfangspointer wieder bekommt, und da habe ich einfach gezeigt, nimm einen Zeiger 2 weiße ihm den selben Keller Wert zu wie Zeiger 1, und dann kann man Zeiger 1 einfach verändern wie man will, da man noch einen 2ten pointer hat der immer auf das erste Symbol zeigt
Wenn der OP nicht weiss wie man den wert cacht, wird er wohl kaum wissen wie man genug speicher alloziert damit man den Pointer inkrementieren kann ohne irgendwo in's Nirvana zu zeigen.

Code:
int x = 10;
int y = 42;
int* ptr1 = &x;
int** ptr2 = &ptr1;
//**ptr2 == *ptr1 == x == 10
ptr1 = &y;
// **ptr2  == *ptr1 == y == 42
Das versuche ich hier ja schon die ganze Zeit zu erklären. Nebst dem Kommt der von dir Zitierte Text nicht von mir epvp hat nur das Zitat verbugt.
ƬheGame is offline  
Reply


Similar Threads Similar Threads
Multi Theft Auto zwischenspeicher
01/26/2013 - Grand Theft Auto - 3 Replies
Wo wird die Map bei MTA zwischengespeichert? Also ihr kennt das ja gewiss, Anfangs lädt die Map nur recht unscharf, kommt man dann näher wird das Objekt scharf. Wo wird das ganze zwischengespeichert?
Diablo 3 - Zwischenspeicher
09/25/2012 - Diablo 3 - 3 Replies
Heyho, hatte vor kurzem um bei D3 erneut zu starten (nach meinem Ban vor einigen Wochen) eine Version von battle.net gekauft. Selbst nach einer Woche war das AH immernoch nicht freigeschaltet, mit der Meldung, dass die Version erst bestätigt werden muss usw. Ich hatte auf dem Acc kurzfristig einen bot getestet, vllt 20 mins maximal, jedoch auch eine alte PayPal Mailadresse verwendet, welche ich iwann auf einem Botter acc (mittlerweile banned) verbunden hatte. Auf meine Ticketanfrage,...
Frage: Wie findet man zB UG Pointer?Speed pointer?
03/30/2010 - Kal Online - 2 Replies
kann mir einer sagen wie man UG/Speed pointer finden kann usw^^´ß#
[Guide] Einfügen vom Captcha ohne Zwischenspeicher
05/13/2009 - Metin2 PServer Guides & Strategies - 0 Replies
Hallo liebe Com. =) Vorweg: Dies ist mein erster Guide seid nachsichtig mit mir ;). Was ihr benötigt : 1. Einen gelösten Captcha 2. Mozilla Firefox oder aber Internet Explorer 3. Eine Maus :)



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


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.