Отсюда отравляю:
- Код: Выделить всё
int __fastcall MyButtonProc(H3MsgCustom *msg)
{
if (msg->IsLeftClick())
{
H3DlgCustomButton *b = (H3DlgCustomButton*)msg->GetDlg()->GetH3DlgItem(CheckBoxID);
if (b) {
b->ToggleFlag(GamePlayChangesOn);
SendFlag();
}
}
else if (msg->IsRightClick())
{
sprintf(h3_TextBuffer, "Flag state is %d", GamePlayChangesOn);
F_MessageBoxRMB();
}
return 1;
}
Код отправки:
- Код: Выделить всё
#define as239NData 1990 // номер id данных (NData->msg_id)
struct _NetData_
{
_int_ recipient_id; // +0 (номер игрока кому передаётся. (-1 = всем) )
_int_ field_04; // +4
_int_ msg_id; // +8 (id данных)
_int_ size; // +12 (размер буфера (20 + size shortData))
_int_ field_10; // +16
_int_ shortData; // +20 (наши данные, могут иметь больший объем)
// _int_ shortData1; // при необходимости
inline _int32_ SendData() {return CALL_4(_int32_, __fastcall, 0x5549E0, this, 127, 0, 1);}
};
void SendFlag() {
if (o_NetworkGame)
{
_NetData_* NData;
NData->recipient_id = -1;
NData->field_04 = 0;
NData->msg_id = as239NData;
NData->size = 24;
NData->field_10 = 0;
NData->shortData = 35; // передаю число 35
NData->SendData();
}
}
Вылет при первом же обращении к атрибуту структуры:
- Код: Выделить всё
NData->recipient_id = -1;
При этом при компиляции есть предупреждение:
warning C4700: использована неинициализированная локальная переменная "NData"
Что-то не так с определением структуры "_NetData_"?