Другое SAMPFUNCS | API C++

return

Новичок
82
5
чего он флудит сразу после открытия меню. Как это исправить?
и эт, правильно я вообще сделал, а?
PHP:
void __stdcall Menu::callbackA(const void* value, void*)
{
    char buf[32];
    sprintf(buf, "a = %d ", *(int*)value);
    SF->getSAMP()->getChat()->AddChatMessage( 0xFF6347, buf);
}

void __stdcall Menu::callbackA2(void* value, void*)
{
    char buf[32];
    sprintf(buf, "a =%d", *(int*)value);
    SF->getSAMP()->getChat()->AddChatMessage( 0xFF6347, buf);
}
 

Sire Like

Blanche Bier
Друг
487
233
Подскажите, как правильно рисовать?
Код:
SF->getRender()->DrawBox(475, 500, 400, 500, D3DCOLOR_ARGB(255, 255, 125, 000));
( Разрешение 1366х768 )

Если установить разрешение 800х600 то фигура 'уезжает вниз'.
Как-то же подгоняют под все разрешения
 

CarLCas

Известный
161
118
Подскажите, как правильно рисовать?
Код:
SF->getRender()->DrawBox(475, 500, 400, 500, D3DCOLOR_ARGB(255, 255, 125, 000));
( Разрешение 1366х768 )

Если установить разрешение 800х600 то фигура 'уезжает вниз'.
Как-то же подгоняют под все разрешения
Я делал специальные формулы, которые брали разрешение и по формулам все подгоняли.
К примеру, централизовал текст по середине экрана: брал разрешение, делил пополам, вычитал половину длины строки
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
void convertGameCoordsToWindow(float fGX, float fGY, float *fWX, float *fWY);

GX = 0.0 - 640.0
GY = 0.0 - 448.0
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
C++:
float fX, fY;
convertGameCoordsToWindow(320.0, 224.0, &fX, &fY);
SF->getRender()->DrawBox((int)fX, (int)fY, 400, 500, D3DCOLOR_ARGB(255, 255, 125, 0));
 

Woofing Giraffe

Активный
402
49
Как сделать выравнивание текста по центру?
Вот например я рисую
Код:
pFont->Print("test", D3DCOLOR_ARGB(255, 255, 255, 0), x, y, false);
и мне надо нарисовать под ней похожую строку, но чтоб её центр находился там-же где и первой строки.
 

nazarik

Новичок
5
0
C++:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrDisplayGameText)
    {
        // SF->getSAMP()->getChat()->AddChatMessage(-1, "lenght (%d: bytes)", params->bitStream->GetNumberOfBytesUsed());

        byte len;
        char szString[128 + 1] = { 0 };
        int time, style;

        params->bitStream->ResetReadPointer(); // обнуляем оффсет чтения.

        params->bitStream->Read(time);
        params->bitStream->Read(style);

        params->bitStream->Read(len);
        params->bitStream->Read(szString, len);
        szString[len] = 0;

        params->bitStream->ResetReadPointer(); // обнуляем оффсет чтения.

        SF->getSAMP()->getChat()->AddChatMessage(-1, "GameTextForPlayer(playerid, \"%s\", %d, %d)", szString, time, style);

        // GameTextForPlayer(playerid, const string[], time, style)
    }

Подскажите пожалуйста, почему не выводит szString? (time и style выводит корректно)
 
Последнее редактирование:

nazarik

Новичок
5
0
Ну значит len либо short, либо int
Спасибо, помог, тип должен быть int.

Кстати еще такой вопрос, как мне достать данные обьекта?
А именно model, x, y, z, rot_x, rot_y, rot_z, draw_dist; (пример ниже)
И проверку на то движется ли обьект (is_obj_moving)

C++:
for (int idx = 0; idx <= SAMP_MAX_OBJECTS; idx++)
{
   if(SF->getSAMP()->getInfo()-> ...) continue; // Тут проверка на то движется ли обьект, типо  is_obj_moving
    if (SF->getSAMP()->getInfo()-> ...) // Тут проверка на то существует ли обьект, типо is_obj_exists(idx)
    {
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... model
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... x
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... y
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... z
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... rot_x,
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... rot_y,
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... rot_z,
        SF->getSAMP()->getInfo()-> ... obj[idx]-> ... draw_dist,
    }
}
 
Последнее редактирование:

nazarik

Новичок
5
0
SF->getSAMP()->getInfo()->pPools->pObject

C++:
int mid;
float x, y, z;
float rx, ry, rz;
float draw_dist;

for (int i = 0; i <= SAMP_MAX_OBJECTS; i++)
{
    if (SF->getSAMP()->getInfo()->pPools->pObject->iIsListed[i])
    {
        mid = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->iModel;
        x = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[0];
        y = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[1];
        z = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fPos[2];

        rx = 0.0; // нет данных о повороте обьекта
        ry = 0.0; // нет данных о повороте обьекта
        rz = 0.0; // нет данных о повороте обьекта

        draw_dist = SF->getSAMP()->getInfo()->pPools->pObject->object[i]->fDrawDistance;
    }   
}

Выводит: CreateObject(966, -1066078592992261700000.000000, -871262744137906110000000000.000000, 643936512.000000, 0.000000, 0.000000, -1.#QNAN0);

ModelD выводит корректо, остальное - нет.
Вопрос - что не так, где достать данные о том движется ли обьект и данные о повороте(rot_x,y,z) обьекта?