|
You last visited: Today at 03:06
Advertisement
Warrock - Code Snippets
Discussion on Warrock - Code Snippets within the WarRock forum part of the Shooter category.
08/14/2012, 01:03
|
#166
|
elite*gold: 9
Join Date: Oct 2010
Posts: 395
Received Thanks: 812
|
Quote:
|
Keine Ahnung ob es funktioniert, gerade geschrieben^^
|
Wenn man das ließt....
Quote:
VOID WINAPIV WRSendMsgBox(CONST CHAR* dwText)
{
DWORD dwMsgBox = ASM_MESSAGEBOX;
__asm
{
PUSH dwText
CALL dwMsgBox
ADD ESP,4
}
}
|
Ich wundere mich das die Funktion überhaupt funktioniert, wenn du nicht die komplette Funktion reflektiert mit den statischen Pointern.
Quote:
Den Müll hättest dir sparen können.
Beachte das bei ASM Funktionen die eine derartige Anwendung trifft, den ganzen Funktionstrang zu reflektieren mit den statischen Pointern. Es bringt nichts hier Müll zu posten, dass zwar vllt gehen mag, aber Fehlermeldungen im Prozess hagelt.
|
|
|
08/14/2012, 10:11
|
#167
|
elite*gold: 0
Join Date: Jul 2011
Posts: 3,812
Received Thanks: 1,840
|
Kann mir einer sagen warum die Asm-Funktionen in meinem NoMenu immer mein Cheat crashen lassen?
Bypass
Code:
#include <Windows.h>
void WriteASM ( void* pxAddress, BYTE *code, int size )
{
unsigned long Protection;
VirtualProtect((void*)pxAddress, size, PAGE_READWRITE, &Protection);
memcpy((void*)pxAddress, (const void*)code, size);
VirtualProtect((void*)pxAddress, size, Protection, 0);
}
DWORD WINAPI Bypass()
{
DWORD HSEhsvc = 0;
do{
HSEhsvc = (DWORD)GetModuleHandleA("Ehsvc.dll");
Sleep(30);
}while(!HSEhsvc);
WriteASM((LPVOID)(HSEhsvc+0x007C139),(PBYTE)"\xC3",1);
WriteASM((LPVOID)(HSEhsvc+0x000A048),(PBYTE)"\x74",1);
WriteASM((LPVOID)(HSEhsvc+0x009A520),(PBYTE)"\x03\xD2",2);
WriteASM((LPVOID)(HSEhsvc+0x0097F6F),(PBYTE)"\xB8\x00\x00\x00\x00",5);
return 1;
}
Beispielfunktion
Code:
if (GetAsyncKeyState('F')&1)
WriteASM((void*)ASM_Quickplant,(PBYTE)"\xEB\x39",2);
Es Funktioniert zwar 1x , aber danach crasht es sofort. "Fremdprogramm entdeckt" oder so etwas in der Art.
Danke im Vorraus.
€dit: Habe es gerade selber rausgefunden .
Code:
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Bypass,NULL,NULL,NULL);
Habe des vergessen
|
|
|
08/14/2012, 15:09
|
#168
|
elite*gold: 351
Join Date: Jul 2012
Posts: 427
Received Thanks: 430
|
Quote:
Originally Posted by xroute66x™ :)
Kann mir einer sagen warum die Asm-Funktionen in meinem NoMenu immer mein Cheat crashen lassen?
Bypass
Code:
#include <Windows.h>
void WriteASM ( void* pxAddress, BYTE *code, int size )
{
unsigned long Protection;
VirtualProtect((void*)pxAddress, size, PAGE_READWRITE, &Protection);
memcpy((void*)pxAddress, (const void*)code, size);
VirtualProtect((void*)pxAddress, size, Protection, 0);
}
DWORD WINAPI Bypass()
{
DWORD HSEhsvc = 0;
do{
HSEhsvc = (DWORD)GetModuleHandleA("Ehsvc.dll");
Sleep(30);
}while(!HSEhsvc);
WriteASM((LPVOID)(HSEhsvc+0x007C139),(PBYTE)"\xC3",1);
WriteASM((LPVOID)(HSEhsvc+0x000A048),(PBYTE)"\x74",1);
WriteASM((LPVOID)(HSEhsvc+0x009A520),(PBYTE)"\x03\xD2",2);
WriteASM((LPVOID)(HSEhsvc+0x0097F6F),(PBYTE)"\xB8\x00\x00\x00\x00",5);
return 1;
}
Beispielfunktion
Code:
if (GetAsyncKeyState('F')&1)
WriteASM((void*)ASM_Quickplant,(PBYTE)"\xEB\x39",2);
Es Funktioniert zwar 1x , aber danach crasht es sofort. "Fremdprogramm entdeckt" oder so etwas in der Art.
Danke im Vorraus.
€dit: Habe es gerade selber rausgefunden .
Code:
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Bypass,NULL,NULL,NULL);
Habe des vergessen 
|
Hallo,
ich habe zur Zeit nicht die aktuellen Addys für den Bypass "parat", jedoch gehe ich einmal davon aus, dass sie aktuell sind.
Jedoch will ich dich darauf hinweisen, dass deine Funktion die OFF Bytes nicht besitzt und anscheinend
die ON Bytes fehlerhaft sind:
Code:
WriteASM((void*)ASM_Quickplant,(PBYTE)"\xEB\x39",2)
Ich habe mir hier aus dem Addy Thread gerade mal die von Trademark geposteten Addys + Bytes gesucht.
Code:
QuickPlant: 0x4F6A11
Off Bytes: x7D x16
On Bytes: xEB x36
QuickDefuse: 0x4F22B0
Off Bytes: x7D x07
On Bytes: xEB x39
spätestens jetzt sollte dir etwas auffallen  .
Sollten die Bytes hier nicht stimmen, ist es nicht mein Verschulden :P
|
|
|
08/14/2012, 15:15
|
#169
|
elite*gold: 0
Join Date: Jul 2011
Posts: 3,812
Received Thanks: 1,840
|
Quote:
Originally Posted by Chowniіqhtz
Hallo,
ich habe zur Zeit nicht die aktuellen Addys für den Bypass "parat", jedoch gehe ich einmal davon aus, dass sie aktuell sind.
Jedoch will ich dich darauf hinweisen, dass deine Funktion die OFF Bytes nicht besitzt und anscheinend
die ON Bytes fehlerhaft sind:
Code:
WriteASM((void*)ASM_Quickplant,(PBYTE)"\xEB\x39",2)
Ich habe mir hier aus dem Addy Thread gerade mal die von Trademark geposteten Addys + Bytes gesucht.
Code:
QuickPlant: 0x4F6A11
Off Bytes: x7D x16
On Bytes: xEB x36
QuickDefuse: 0x4F22B0
Off Bytes: x7D x07
On Bytes: xEB x39
spätestens jetzt sollte dir etwas auffallen  .
Sollten die Bytes hier nicht stimmen, ist es nicht mein Verschulden :P
|
Ich habe extra nur die Onbytes genommen, ich wollte es nur austesten 
Funktioniert jetzt aber alles.
Code:
if (XR_UnlAmmo)
WriteASM((void *)ASM_UNLAMMO,(PBYTE)"\xC3",1);
else
WriteASM((void *)ASM_UNLAMMO,(PBYTE)"\x56",1);
Kp, wer die funktion gefunden hat
|
|
|
08/14/2012, 19:09
|
#170
|
elite*gold: 0
Join Date: Nov 2007
Posts: 24
Received Thanks: 1
|
My WTW doesn't work, it won't go all the way trough the wall.
Like this:
Code:
#define MEM_WTW 0x85CB20
switch(CH_WTW)
{
case 1:
MemWrite<float>((void*)MEM_WTW, 0); break;//on
}
|
|
|
08/14/2012, 20:15
|
#171
|
elite*gold: 0
Join Date: Jul 2011
Posts: 3,812
Received Thanks: 1,840
|
Quote:
Originally Posted by jeffrey1994
My WTW doesn't work, it won't go all the way trough the wall.
Like this:
Code:
#define MEM_WTW 0x85CB20
switch(CH_WTW)
{
case 1:
MemWrite<float>((void*)MEM_WTW, 0); break;//on
}
|
On Value of WTW are -999.
Code:
if (CH_WTW)
MemWrite<float>((void*)MEM_WTW, -999);
else
MemWrite<float>((void*)MEM_WTW, 6);
|
|
|
08/14/2012, 20:28
|
#172
|
elite*gold: LOCKED
Join Date: Aug 2012
Posts: 130
Received Thanks: 37
|
Quote:
if (CH_WTW)
MemWrite<float>((void*)MEM_WTW, -999);
else
MemWrite<float>((void*)MEM_WTW, 6);
|
Höö O.o
if (CH_WTW)
{
MemWrite< double>((void*)MEM_WTW, -999);
}
else
{
MemWrite< double>((void*)MEM_WTW, 6);
}
Und wenn <float>
dann musst du nicht MemWrite verwenden sondern FailUpdate.
if (CH_WTW)
{
FailUpdate<float>((void*)MEM_WTW, -999);
}
else
{
FailUpdate<float>((void*)MEM_WTW, 6);
}
Failor !
|
|
|
08/14/2012, 21:10
|
#173
|
elite*gold: 0
Join Date: Jul 2011
Posts: 3,812
Received Thanks: 1,840
|
Quote:
Originally Posted by .SiroSkill''
Höö O.o
if (CH_WTW)
{
MemWrite<double>((void*)MEM_WTW, -999);
}
else
{
MemWrite<double>((void*)MEM_WTW, 6);
}
Und wenn <float>
dann musst du nicht MemWrite verwenden sondern FailUpdate.
if (CH_WTW)
{
FailUpdate<float>((void*)MEM_WTW, -999);
}
else
{
FailUpdate<float>((void*)MEM_WTW, 6);
}
Failor !
|
Das ist irgendwie scheis egal du freak?
Ich kann es nennen wie ich will 
Benutze die WTW Source ja gar nicht mehr, habe vorher immer float benutzt
AutoMedic NoMenu
Code:
if(GetAsyncKeyState('M'))
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\xEB\x3B",2);
if(GetAsyncKeyState('N'))
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\x75\x15",2);
Die Addy bekommt ihr aber nicht
|
|
|
08/14/2012, 22:20
|
#174
|
elite*gold: LOCKED
Join Date: Aug 2012
Posts: 130
Received Thanks: 37
|
Quote:
Originally Posted by xroute66x™ :)
Ah **** 
Habe mich verschrieben mit "MemWrite" meine ja "FailUpdate".
Benutze die WTW Source ja gar nicht mehr, habe vorher immer float benutzt
AutoMedic NoMenu
Die Addy bekommt ihr aber nicht 
|
Nim denn AutoMedic source raus denn kann man zu Menu source umcoden und die Asm addys sind Public ! O.o
und wieder der gleich fehler ! WriteASM da muss FailUpdate hin xDDDD
Obwohl, das ist ASM Source xDD ne doch WriteASM or MemWrite von bypass >.<
|
|
|
08/14/2012, 22:29
|
#175
|
elite*gold: 351
Join Date: Jul 2012
Posts: 427
Received Thanks: 430
|
Quote:
Originally Posted by .SiroSkill''
Nim denn AutoMedic source raus denn kann man zu Menu source umcoden und die Asm addys sind Public ! O.o
und wieder der gleich fehler ! WriteASM da muss FailUpdate hin xDDDD
Obwohl, das ist ASM Source xDD ne doch WriteASM or MemWrite von bypass >.<
|
Wenn man keine Ahnung hat, einfach mal die Fresse halten.
zu Route:
Ich würde eine Source nie als "NoMenu Source" bezeichnen.
Alle source Codes kann man in einem No - als auch in einem Menu anwenden.
NoMenu:
Code:
if(GetAsyncKeyState('M'))
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\xEB\x3B",2);
if(GetAsyncKeyState('N'))
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\x75\x15",2);
Menu:
Code:
if(AutoMedic) {
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\xEB\x3B",2);
}else{
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\x75\x15",2); }
Beides möglich
|
|
|
08/14/2012, 23:52
|
#176
|
elite*gold: LOCKED
Join Date: Dec 2009
Posts: 4,650
Received Thanks: 5,731
|
Quote:
Originally Posted by .SiroSkill''
Nim denn AutoMedic source raus denn kann man zu Menu source umcoden und die Asm addys sind Public ! O.o
und wieder der gleich fehler ! WriteASM da muss FailUpdate hin xDDDD
Obwohl, das ist ASM Source xDD ne doch WriteASM or MemWrite von bypass >.<
|
Man merkt das du keine ahnung von irgend was hast weder coding noch sonst war und nur alles kopierst und einfügst
es ist scheiß egal was man benutzt und wie man das nennt es ist sogar schon unnötig dein sogenanntes "failupdate" zu benutzten du kannst das direkt mit virtualprotect patchen lassen und das wars
und zu deinem "ASM Source codes etc"
Es ist scheißegal ob du WriteASM, MemWrite oder MemEdit bentzt oder wie auch immer du das nennen willst weil alles auf der selben basis läuft und diese ist Bytes zu changen
Genauso wie ihr alle so schlau seit und z.b. immer (PBYTE)"\xEB\x3B",2)
dies verwendet währt ihr schlau und würdet nicht wollen das man eure dll dumped obwohl bei euch eh nichts besonderes drin ist fürdet ihr es entweder so machen:
Code:
WriteASM((void*)ASM_AutoMedic,(0xEB,0x3B),2);
oder einfach
Code:
BYTE MedicON[] = {0xEB,0x3B};
WriteASM((void*)ASM_AutoMedic,MedicON,2);
ist im grunde das selbe nur das falls man eure dll dumpen würde da kein string ist und man einfach nach "\xEB suchen muss schon findet man eure ganzen addys on bytes etc....
achja und noch eins warum zur Hölle lässt ihr die ganzen bytes dauern changen
also warum macht ihr das:
Code:
if(AutoMedic)
{
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\xEB\x3B",2);
}
else
{
WriteASM((void*)ASM_AutoMedic,(PBYTE)"\x75\x15",2);
}
solange ihr die funktion an habt dann wird er dauernd versuchen die on bytes auf EB... zu changen aber was bringt das
solange ihr nicht noch eine 2. funktion habt welche die selbe addy verwendet aber andere on bytes hat dann kann es 1. sein das es unnötig laggt bzw beides am ende nicht funktioniert ist nur ein dummes beispiel ich weiß aber viel sinnvoller wäre es wenn ihr das einfach so macht:
Code:
bool medicbool = false;
if(AutoMedic == 1 && !medicbool )
{
//WriteASM((void*)ASM_AutoMedic,(PBYTE)"\xEB\x3B",2);
medicbool = true;
}
if(AutoMedic == 0 && medicbool )
{
//WriteASM((void*)ASM_AutoMedic,(PBYTE)"\x75\x15",2);
medicbool = false;
}
beziehungsweise
Code:
bool medicbool = false;
if(AutoMedic)
{
if(!medicbool )
{
//WriteASM((void*)ASM_AutoMedic,(PBYTE)"\xEB\x3B",2);
medicbool = true;
}
}
else
{
if(medicbool )
{
//WriteASM((void*)ASM_AutoMedic,(PBYTE)"\x75\x15",2);
medicbool = false;
}
}
Den es reicht schon wenn ihr die Bytes 1x changed den im normal fall dürfte sich das nicht zurück changen
ich kenne Chowniіqhtz nicht aber es sieht stark danach aus als könne er 1000 mal mehr als du .SiroSkill'' obwohl das ist ja eh nicht schwer
ich will mal sehen was du machst wenn der dreckige public bypass gepatched wurde und nicht mehr geht entweder gibt es dann 50% weniger hacks hier oder 50% der hacks funktionieren einfach nicht, weil der bypass euren hack ud macht und dort fremdprogramm entdeckt etc kommt weil ihr da alles nur herreinkopiert oder eine bedeutung einer funktion zu kennen hauptsache ihr habt sie ok fast alle haben so mal angefangen ich habe das damals auch gemacht aber ich habe daraus gelernt das wenn man das tut einfach mal drauf achten sollte und versuchen die sachen zu verstehen...
genauso wie Burner ich habe nix gegen dich ich kenne dich auch nicht aber man sollte schon wissen was macht macht bevor man irgend was macht nicht so wie deine aussagen
Quote:
|
Keine Ahnung ob es funktioniert, gerade geschrieben^^
|
entweder weißt du was du macht und was verendert wird bzw was in der exe geschieht oder du lässt es sein
ihr hoffe ihr versteht das ich meine und mir ist es egal ob ich Rechtschreibfehler drin habe etc weils mir egal ist
|
|
|
08/15/2012, 01:57
|
#177
|
elite*gold: 9
Join Date: Oct 2010
Posts: 395
Received Thanks: 812
|
Dieses Thema schweift leicht vom Thema ab, leider kann man es nicht mehr ändern die aktuelle Situation von WarRock. Man kann nur sagen, es wird sich auch nichts ändern da viele nur den größten Cheat haben möchten und die Relevation von Public und ViP eigentlich abschweift.
Diese Relavationen sieht man hier:
Wenn man dann schon ließt "Public ViP HACK with .....", da fragt man sich als Programmierer. Ja was meint den der "Programmierer" des Cheats von WarRock. Will er den Cheat für Public releasen oder für ViP. Natürlich wird dann auch klar, dass in diesem Cheat "besondere" Funktion enthalten die etwas mehr Spaß machen, als die "normalen" Funktionen.
Zur Memory Geschichte:
Es ist zwar alles gut und schön, dass jetzt fast alle die Memory Funktion von UnknownPK benutzen, dagegen habe ich auch nix. Aber wenn man sich hier die Funktion anschaut wie Sie angewendet wird, merkt man sofort das die Programmierer keine Ahnung haben wieso eigentlich man die Funktion braucht.
Wie Nexon vorgegangen ist habe ich hier ein Beispiel:
Früher:
Code:
int Speed_Default_Value = 96;
// ... irgentwo im WR Dschungel Code
if(/* Wenn Spieler läuft (so genannter DAMAFLY) */)
{
SetDamafly(Speed_Default_Value);
// .....
Jetzige Anwendung:
Code:
#define Speed_Default_Value 96 // Kann die Deklarierung auch auf static setzen hat danach den gleichen Efekt.
// ... irgentwo im WR Dschungel Code
if(/* Wenn Spieler läuft (so genannter DAMAFLY) */)
{
SetDamafly(Speed_Default_Value);
// .....
Ich erkläre dieses Beispiel nicht, da man es als Programmierer verstehen sollte. Es liegt einfach an der Rechtevergabe mit diesen Parametern:
Quote:
#define PAGE_NOACCESS 0x01
#define PAGE_READONLY 0x02
#define PAGE_READWRITE 0x04
#define PAGE_WRITECOPY 0x08
#define PAGE_EXECUTE 0x10
#define PAGE_EXECUTE_READ 0x20
#define PAGE_EXECUTE_READWRITE 0x40
#define PAGE_EXECUTE_WRITECOPY 0x80
#define PAGE_GUARD 0x100
#define PAGE_NOCACHE 0x200
#define PAGE_WRITECOMBINE 0x400
|
Dann könnte eigentlich sich mit der Cheat .DLL alle Rechte geben lassen, wäre auch Weg den ich jetzt nicht erläutern werde. Dabei share ich diese Funktionen von meiner Klasse ide ich SCHON seit Jahren benutze Public. Das heißt nicht geklaut oder sonst was.
Code:
VOID SetDWORD(DWORD Adress,DWORD Value)
{
unsigned long Protection;
VirtualProtect((void*)Adress, sizeof(Value), PAGE_READWRITE, &Protection);
memcpy((void*)Adress, &Value, sizeof(Value));
VirtualProtect((void*)Adress, sizeof(Value), Protection, 0);
}
VOID SetDouble(DWORD Adress, DOUBLE Value)
{
unsigned long Protection;
VirtualProtect((void*)Adress, sizeof(Value), PAGE_READWRITE, &Protection);
memcpy((void*)Adress, &Value, sizeof(Value));
VirtualProtect((void*)Adress, sizeof(Value), Protection, 0);
}
VOID SetFloat(DWORD Adress, FLOAT Value)
{
unsigned long Protection;
VirtualProtect((void*)Adress, sizeof(Value), PAGE_READWRITE, &Protection);
memcpy((void*)Adress, &Value, sizeof(Value));
VirtualProtect((void*)Adress, sizeof(Value), Protection, 0);
}
VOID SetInt(DWORD Adress, INT Value)
{
unsigned long Protection;
VirtualProtect((void*)Adress, sizeof(Value), PAGE_READWRITE, &Protection);
memcpy((void*)Adress, &Value, sizeof(Value));
VirtualProtect((void*)Adress, sizeof(Value), Protection, 0);
}
VOID SetLong(DWORD Adress, LONG Value)
{
unsigned long Protection;
VirtualProtect((void*)Adress, sizeof(Value), PAGE_READWRITE, &Protection);
memcpy((void*)Adress, &Value, sizeof(Value));
VirtualProtect((void*)Adress, sizeof(Value), Protection, 0);
}
Template sind einfache schlechte Anwendung bei der Objektiven Programmierung und haben zu viele Nachteile, deswegen benutze ich keine.
|
|
|
08/15/2012, 03:10
|
#178
|
elite*gold: 0
Join Date: Sep 2011
Posts: 112
Received Thanks: 165
|
@request
Midfunction for Windows XP
|
|
|
08/15/2012, 18:05
|
#179
|
elite*gold: 297
Join Date: Dec 2010
Posts: 1,129
Received Thanks: 1,687
|
Quote:
Originally Posted by Willi35
Template sind einfache schlechte Anwendung bei der Objektiven Programmierung und haben zu viele Nachteile, deswegen benutze ich keine.
|
Dazu möchte ich einmal zwei Dinge anmerken:
Template-Funktionen sind in der Objektorientierten Programmierung (nicht "objektiv") in der Art, wie sie in C++ ISO '98 eingebunden sind, ungeeignet.
Mit Template Klassen kann man sich das Leben einfacher machen und doch erzeugen sie häufig eine Menge Müll im Code. Aber ihre Vorteile für objektorientierte Sprachen sind einfach zu wichtig, als dass man sie einfach weglassen könnte.
Optimiert wurde das ganze - mein zweiter Punkt - in C++11 (ISO '11, C++0x). Hier wurden die Template-Funktionen und -Klassen dahingehend optimiert, effizienter zu sein und auch leichter in der Anwendung. So ist in C++11 folgender Code problemlos verwendbar und auf keine Art und weise ineffizienter als dein Code:
Code:
template<typename value_type>
int setValue(value_type *const pointer, const value_type valueToSet)
{
static HANDLE currentProcess = GetCurrentProcess();
unsigned protectionToRestore = 0;
VirtualProtect(reinterpret_cast<void *>(pointer), sizeof(value_type), PAGE_READWRITE, &protectionToRestore);
__movsb(reinterpret_cast<void *>(pointer), reinterpret_cast<void *>(&valueToSet), sizeof(value_type));
VirtualProtect(reinterpret_cast<void *>(pointer), sizeof(value_type), protectionToRestore, nullptr);
return FlushInstructionCache(currentProcess, reinterpret_cast<void *>(pointer), sizeof(value_type));
}
template<typename value_type>
inline int setValue(void *const pointer, const value_type valueToSet)
{
return setValue<value_type>(reinterpret_cast<value_type *const>(pointer), valueToSet);
}
Dieser Code ist kürzer und leichter zu verstehen als deiner und durch C++11 sogar leichter zu benutzen, da das Template-Parameter nicht einmal angegeben werden muss sondern der Typ des Parameters automatisch verwendet wird.
Als kleine Randnotiz noch: Du solltest deine Variable "Protection" initialisieren.
|
|
|
08/15/2012, 19:48
|
#180
|
elite*gold: 9
Join Date: Oct 2010
Posts: 395
Received Thanks: 812
|
Quote:
Dazu möchte ich einmal zwei Dinge anmerken:
Template-Funktionen sind in der Objektorientierten Programmierung (nicht "objektiv") in der Art, wie sie in C++ ISO '98 eingebunden sind, ungeeignet.
|
Danke für deine Berechtigung meiner schreibweiße. Natürlich haben Templates Vorteile, aber auch Nachteile, die bei meinem Menu Aufbau zum Nachteil zieht. Deswegen ich Sie nicht verwende.
Quote:
Dieser Code ist kürzer und leichter zu verstehen als deiner und durch C++11 sogar leichter zu benutzen, da das Template-Parameter nicht einmal angegeben werden muss sondern der Typ des Parameters automatisch verwendet wird.
Als kleine Randnotiz noch: Du solltest deine Variable "Protection" initialisieren.
|
Da ich objektorientiert Arbeite benutze ich nicht eine höhres Warnlevel und sehe mich nicht dazu gezwungen Sie initialisieren mit NULL. Wenn man auf nativ programmiert sollte man das Warnlevel erhöhen, damit vermeidet man unsälige Fehler.
Quote:
|
__movsb(reinterpret_cast<void *>(pointer), reinterpret_cast<void *>(&valueToSet), sizeof(value_type));
|
Dein Code ist zwar schön anzu sehen, aber leider bevorzuge ich die Funktionen, die am "schnellsten" "Arbeiten" und somit memcpy. Natürlich ist dein Source Code voll kommen richtig und bitte nicht als Kritik sehen.
|
|
|
Similar Threads
|
WarRock EU - Code Snippets
07/12/2012 - WarRock - 7490 Replies
Hi Leute,
in diesem Thread könnt ihr:
-> Nach Sourcecodes fragen(Beispiel unten)
-> Eure Sourcecodes posten(Wenn sie nicht von euch sind mit Credits!)
-> Fragen ob eure Source evtl. einen Fehler hat
-> Fragen was welcher Fehler bedeuted
-> Sourcecodes entnehmen(Bitte beim Release dann Credits angeben!)
|
All times are GMT +1. The time now is 03:07.
|
|