Другое С/С++ Вопрос - Ответ

Jack_Savage

Участник
150
17
ты уверен что там всё правильно?
у меня так бывало, когда я ошибался с адресом на пару байт. и считывал по кускам два значения, которые в итоге выдавали какую-то ересь
float *position = (*(DWORD *)0xB6F5F0) ? (float *)(*(DWORD *)(*(DWORD *)0xB6F5F0 + 0x14) + 0x30) : NULL;
Если ты про это то оно работает и если на клиенте выводить его значение то все нормально
 

Jack_Savage

Участник
150
17
это чтение данных из памяти, ты использщуешь адреса для игры. В RakNet другие адреса. Да и вообще в RakNet они не нужны
Я это приложыл чтобы ясно было что за position...
Мне координаты из воздуха брать что ли...

Я отправляю float, принимаю float уже какой то не такой как надо...
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,473
Ты уверен, что в packet->data хранится только 12 байт, а не 13?
 

ishi

Известный
493
110
Можно как-нибудь выполнить объявление переменной для конкретной функции, не переобъявляя с каждой итерацией функции, и не делая глобальной? (и если кто будет отвечать, то заодно напишите, пожалуйста, окажет ли подобная "подгонка" положительное влияние на производительность, или это лишь усложнит задачу компу)

И ещё один вопрос назрел, пока писал. Я вот так "упрощаю" работу процессору (наверное, так выполнение должно быть быстрее)
C++:
char* PTS;
char* ppts = new char(sstring[144]);
unsigned __int16 nocis, scrx1, screex = 0;
unsigned char red, green, blue = rand();
и вот когда я пытаюсь так же объединить указатели на символьные массивы, как обычные переменные - мне выдаёт ошибку. Можно как-нибудь "упростить" объявление указателей, сгруппировать что ли для пущей производительности?
 
Последнее редактирование:

return

Новичок
82
5
Можно как-нибудь выполнить объявление переменной для конкретной функции, не переобъявляя с каждой итерацией функции, и не делая глобальной?
Один вопрос, для чего?
Читаю твои сообщения и не понимаю тебя... Зачем изобретать какую то дичь, если до тебя уже всё придумали?
 

ishi

Известный
493
110
Один вопрос, для чего?
Читаю твои сообщения и не понимаю тебя... Зачем изобретать какую то дичь, если до тебя уже всё придумали?
Если бы до меня придумали всё, не существовало бы ошибки в коде, которую не смог бы исправить компилятор, анализируя контекст. Если тебе нечего мне сказать по делу - пройди мимо, обоим будет лучше.
 

ishi

Известный
493
110
C++:
short PTC=0;
PTCs = ppts + PTC;
Почему так крашит уже через пару итераций?
C++:
short PTC=1;
PTCs = ppts + PTC;
Вопреки тому, что так не крашит вовсе

это указатель на символ в строчке, если шо
 

ishi

Известный
493
110
Выход за пределы.
Можно более нубским языком? :D
И ещё.
C++:
SAMPFUNCS *SF = new SAMPFUNCS();
stFontInfo *pFont;
unsigned short scrx = GetSystemMetrics(SM_CXSCREEN);
char sstring[1];
char qwe[1];
short int PTC=scrx;
char* ppts = new char(sstring[scrx]);
char* ptqwe = new char(qwe[scrx]);
unsigned __int16 nocis;
unsigned char red, green, blue;
char* PTCs;

bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
   CONST RGNDATA *pDirtyRegion)
{
   if (SUCCEEDED(SF->getRender()->BeginRender()))
   {
     memset(ptqwe, 0, strlen(ptqwe));
     memset(ppts, 0, strlen(ppts));
     PTC -= 1;
     PTCs = ppts + PTC;
     strcat(PTCs, "Число символов в строке: ");
     nocis = _scprintf(PTCs);
     itoa(nocis, ptqwe, 10);
     strcat(PTCs, ptqwe);
     //SF->getSAMP()->getChat()->AddChatMessage(555555, "%s", ppts);
     red = rand();
     green = rand();
     blue = rand();
     pFont->Print(PTCs, D3DCOLOR_ARGB(255, red,green,blue), 0, 500, false);
     SF->getRender()->EndRender();
   };

   return true;
};
с данным кодом через четверть минуты игры происходит нечто странное, что удалось разглядеть, лишь записав - после этого игра крашит.
Примечательно, что я не делал так, чтоб строка вообще клеилась, не то что уж заполняла себя своими копиями
Как такое происходит?