2016-06-23 2 views
0

그래서 게임의 이름 변경자를 만들려고합니다. 게이머 태그를 나타내는 오프셋은 0x838BA824입니다. 나는 무지개처럼 이름의 색깔을 바꾸는 고리를 만들려고 노력하고 있습니다. 그래서 난이 할 -gamertag은 "무지개"가능 메신저 때 : 후크/루프에서 다음strcpy/appending 문자열에 문제가 있습니다.

LastName = (char*)0x838BA824;//char *LastName; 
Rainbow = !Rainbow;//a boolean used to toggle 

내가 할이 :

if(Rainbow)//the toggle boolean 
{ 
    printf("LastName: %s\n", LastName); 
    peep++;//int peep; 
    if(peep >= 8) 
     peep = 0; 
    switch(peep) 
    { 
     case 0: 
      printf("0\n"); 
      Buffer += "^0";//std::string buffer || ^0-9 are the colorcodes for that game, so here it adds the color 
      Buffer += LastName;//then it adds the name 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str());//then it sets the string with the color 
      Buffer = "";//it clears the Buffer 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
     case 1: 
      printf("1\n"); 
      Buffer += "^1"; 
      Buffer += LastName; 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str()); 
      Buffer = ""; 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
     case 2: 
      printf("2\n"); 
      Buffer += "^2"; 
      Buffer += LastName; 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str()); 
      Buffer = ""; 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
     case 3: 
      printf("3\n"); 
      Buffer += "^3"; 
      Buffer += LastName; 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str()); 
      Buffer = ""; 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
     case 4: 
      printf("4\n"); 
      Buffer += "^4"; 
      Buffer += LastName; 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str()); 
      Buffer = ""; 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
     case 5: 
      printf("5\n"); 
      Buffer += "^5"; 
      Buffer += LastName; 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str()); 
      Buffer = ""; 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
     case 6: 
      printf("6\n"); 
      Buffer += "^6"; 
      Buffer += LastName; 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str()); 
      Buffer = ""; 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
     case 7: 
      printf("7\n"); 
      Buffer += "^7"; 
      Buffer += LastName; 
      printf("Buffer: %s\n", Buffer.c_str()); 
      strcpy((char*)0x838BA824, Buffer.c_str()); 
      Buffer = ""; 
      printf("Buffer: %s\n", Buffer.c_str()); 
     break; 
    } 
} 

편집 : 나는 또한 그냥 훅이 호출 할 수 있습니다 (같은 결과 -.-)

void changeName() 
{ 
    printf("LastName: %s\n", LastName); 
    peep++; 
    if(peep >= 8) 
     peep = 0; 
    printf("%i\n", peep); 
    Buffer += va("^%i", peep); 
    Buffer += LastName; 
    printf("Buffer: %s\n", Buffer.c_str()); 
    strcpy((char*)0x838BA824, Buffer.c_str()); 
    Buffer = ""; 
    printf("Buffer: %s\n", Buffer.c_str()); 
} 

는 지금까지 모든 것이 나를 위해 잘 될 것 같았다, 그래서 나는 그것을 테스트하고 내가 가지고 나의 콘솔의 출력으로 :

LastName: Test 
1 
Buffer: ^1Test 
Buffer: 
LastName: ^1Test 
2 
Buffer: ^2^1Test 
Buffer: 
LastName: ^2^1Test 
3 
Buffer: ^3^2^1Test 
Buffer: 
LastName: ^3^2^1Test 
4 
Buffer: ^4^3^2^1Test 
Buffer: 
LastName: ^4^3^2^1Test 
5 
Buffer: ^5^4^3^2^1Test 
Buffer: 
LastName: ^5^4^3^2^1Test 
6 
Buffer: ^6^5^4^3^2^1Test 
Buffer: 
LastName: ^6^5^4^3^2^1Test 
7 
Buffer: ^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^7^6^5^4^3^2^1Test 
0 
Buffer: ^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^0^7^6^5^4^3^2^1Test 
1 
Buffer: ^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^1^0^7^6^5^4^3^2^1Test 
2 
Buffer: ^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^2^1^0^7^6^5^4^3^2^1Test 
3 
Buffer: ^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^3^2^1^0^7^6^5^4^3^2^1Test 
4 
Buffer: ^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^4^3^2^1^0^7^6^5^4^3^2^1Test 
5 
Buffer: ^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
6 
Buffer: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
7 
Buffer: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
0 
Buffer: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
1 
Buffer: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
2 
Buffer: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
3 
Buffer: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
4 
Buffer: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
5 
Buffer: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
6 
Buffer: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
7 
Buffer: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
0 
Buffer: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
1 
Buffer: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
2 
Buffer: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
3 
Buffer: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
4 
Buffer: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
5 
Buffer: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
6 
Buffer: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
7 
Buffer: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
0 
Buffer: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
1 
Buffer: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
2 
Buffer: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
3 
Buffer: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
4 
Buffer: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
5 
Buffer: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
6 
Buffer: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
7 
Buffer: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
0 
Buffer: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
1 
Buffer: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
2 
Buffer: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
3 
Buffer: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
4 
Buffer: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
5 
Buffer: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
6 
Buffer: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
7 
Buffer: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
0 
Buffer: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1Test 
Buffer: 
LastName: ^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
1 
Buffer: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
Buffer: 
LastName: ^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
2 
Buffer: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
Buffer: 
LastName: ^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
3 
Buffer: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
Buffer: 
LastName: ^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
4 
Buffer: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1 
Buffer: 
LastName: ^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5 
5 
Buffer: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5 
Buffer: 
LastName: ^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5 
6 
Buffer: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5 
Buffer: 
LastName: ^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5 
7 
Buffer: ^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5^4^3^2^1^0^7^6^5 
Buffer: 

누구나 왜 버퍼를 지울 수 없는지 (또는 왜 버퍼에 성을 설정하는지) 알 수 있습니까? 아니면 왜 이런 일이 발생합니까? 일반적으로 출력이 경우 올바른, 다음과 같아야합니다

LastName: Test 
1 
Buffer: ^1Test 
Buffer: 
LastName: Test 
2 
Buffer: ^2Test 
Buffer: 
LastName: Test 
3 
Buffer: ^3Test 
Buffer: 
LastName: Test 
4 
Buffer: ^4Test 
Buffer: 
LastName: Test 
5 
Buffer: ^5Test 
Buffer: 
LastName: Test 
6 
Buffer: ^6Test 
Buffer: 
LastName: Test 
7 
Buffer: ^7Test 
Buffer: 
LastName: Test 
+0

하드 코딩 된 주소를 많이 사용하는 것으로 의심됩니다. 또한 왜'printf'를 사용하고 있습니까? –

+0

자사의 X 박스 게임이며 xbox SDK와 함께 제공되는 콘솔에 인쇄됩니다. – SyxDuLappen

+2

번호가 다를 뿐인 7 줄의 반복 된 코드 블록이 있습니다. 좋은 프로그래머는 패턴을 감지하는 방법을 알고 대신 한 블록의 코드를 작성합니다. – PaulMcKenzie

답변

2

성란은 strcpy로 쓰는 주소 인 0x838BA824에 대한 포인터입니다.

게이머 태그를 업데이트 할 때마다 LastName에서 이름을 다시 읽으므로 마지막 반복에서 입력 한 내용을 다시 가져옵니다.

나는이 문제를 해결하기 위해 제안 할 수있는 두 가지 방법이 있습니다 :

1)를 처음 사용할 때 성하는 표준 : : 문자열을 초기화이 후하지 않습니다 이후

char *LastNamePtr = (char*)0x838BA824; 
std::string LastNameString(LastNamePtr); 
Rainbow = true; 

// ... 

if (Rainbow) { 
    peep = (peep + 1) & 7; 
    std::string Buffer = "^" + std::to_string(peep) + LastNameString; 
    strcpy(LastNamePtr, Buffer.c_str()); 
} 

성을 다시 읽기 2) 당신이 문자열을 다시 읽어 때 '^'문자를 감지하고 만약 그렇다면, 어떤 경우에는 '^'및 번호

char *LastNamePtr = (char*)0x838BA824; 
Rainbow = true; 

// ... 

if (Rainbow) { 
    peep = (peep + 1) & 7; 
    if (LastNamePtr[0] == '^') { // check first character of string 
     LastNamePtr[1] = peep + '0'; // update second character of string 
    } else { 
     std::string Buffer = "^" + std::to_string(peep) + std::string(LastNamePtr); 
     strcpy(LastNamePtr, Buffer.c_str()); 
    } 
} 

을 추가하는 수를 대신 변경주의는

peep++; 
if (peep >= 8) 
    peep = 0; 

를 작성하는 더 consise 방법이며 나는 스위치를 사용하지 않고 INT에서 자리를 얻기 위해 std::to_stringpeep + '0'을 사용했습니다.

+0

와우, 그게 완벽한 답변 이었어, 고마워. :) – SyxDuLappen

+0

괜찮아요, 받아 줘서 고마워! :) – Keiji

2

내가 코멘트에서 언급 한 바와 같이, 그것은 보이는 당신이 기능에 들어가기 전에 char* LastName = (char*)0x838BA824;를 초기화처럼.

그런 다음 당신은 당신이 char* LastName = (char*)0x838BA824;을 초기화 할 때 처음 만든 변경 사항을, 0x838BA824

strcpy((char*)0x838BA824, Buffer.c_str()); 

주위 다음 번에 지적 무엇을 변경합니다.

이 작업을 반복 할 때마다 이전 실행에서 변경 사항을 적용합니다.

제어 문자을 수정하면 이 제거됩니다.

if(Rainbow) 
{ 
    printf("LastName: %s\n", LastName); 

    // clear off the previous control characters if they are there 
    if (LastName[0] == '^' && std::isdigit(LastName[1])) 
     LastName = LastName.substr(2) 

    if(++peep >= 8) 
     peep = 0; 

    printf("%d\n", peep); 

    Buffer = "^"; 
    Buffer += std::to_string(peep); 
    Buffer += LastName; 

    printf("Buffer: %s\n", Buffer.c_str()); 
    strcpy((char*)0x838BA824, Buffer.c_str()); 
} 
관련 문제