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

Woofing Giraffe

Активный
402
49
sxysHK9chqI.jpg

Из за чего цвет смещается? Вроде всё правильно выставил
 

iAmerican

Известный
Друг
614
260
Надо было по быстрому сделать чекер 0 лвлов , сделал на быструю руку. Но проблема в том , что он выводит не до конца всех игроков. А просто обрезает половину.
сидел , пробовал и так и так , что-то не получилось вообщем доделать, подскажите кто нибудь, буду благодарен.

-McaK-ptmMs.jpg

Код :
UPD:
Прокоментил строки
C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

SAMPFUNCS *SF = new SAMPFUNCS();

int Score = 3;
stFontInfo *pFont;


char oldnick[4096] = { 0 };
char nick[4096]= { 0 };

bool bAct = false;

void CALLBACK cmd_show_info_player(std::string param)
{
    bAct ^= true;
}


bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride,
    CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender())) // если рендерер готов к рисованию
    {
        // рисуем

        if (bAct)
        {
            for (uint16_t it = 0; it < SAMP_MAX_PLAYERS; it++) // цикл игроков
            {
                SF->getSAMP()->getInfo()->UpdateScoreAndPing(); // обновляем таб
                if (!SF->getSAMP()->getPlayers()->iIsListed[it]) continue; // проверяем подключен ли игрок

                Score = SF->getSAMP()->getPlayers()->pRemotePlayer[it]->iScore; // Записываем в переменную лвл игрока

                if (Score == 0) // Проверяем что игрок 0 лвл.
                {
                    sprintf(oldnick, "%s [%i]", SF->getSAMP()->getPlayers()->GetPlayerName(it), it);
                    sprintf(nick, "%s \n %s", nick, oldnick);
        // и так всё понятно.
                }
            }

            pFont->Print(nick, D3DCOLOR_ARGB(170, 255, 255, 255), 500, 500, false);
// Рисуем список
            sprintf(oldnick, "");
            sprintf(nick, "");
// Очищаем переменные , что бы не было краша.
        }
     
     

        SF->getRender()->EndRender(); // завершаем рисование
    };

    return true; // возвращаем положительный результат
};

void CALLBACK mainloop()
{
    static bool init = false;
    if (!init)
    {
        if (GAME == nullptr)
            return;
        if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
            return;
        if (!SF->getSAMP()->IsInitialized())
            return;
        SF->getSAMP()->getInfo()->UpdateScoreAndPing();
        SF->getRender()->registerD3DCallback(eDirect3DDeviceMethods::D3DMETHOD_PRESENT, Present);
        pFont = SF->getRender()->CreateNewFont("Consolas", 10, FCR_BORDER);
        SF->getSAMP()->registerChatCommand("dauncheck", cmd_show_info_player);
        SF->getSAMP()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );

        init = true;
    }

 

}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
    switch (dwReasonForCall)
    {
        case DLL_PROCESS_ATTACH:
            SF->initPlugin(mainloop, hModule);
            break;
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
 

AWRage

Активный
642
141
Как получить имя автомобиля, имея его CVehicle? Или хотя бы тип.
 

Ice

Известный
33
3
C++:
pVehicle->GetModelIndex();
A za ime ne znaju no mozhes vzyat array iz pawno gde to i perepisat dlja C/C++
 

BlackKnigga

Известный
BH Team
922
446
AddFontResource('Путь') ;
Окей, а как тогда получить его название в системе(чтобы создать через CreateNewFont())? При установке он переименовывается в ""шрифтнейм" полужирный". Какие только названия не вводил, загружается какой-то стандартный шрифт(вроде Arial'а).
 

Sire Like

Blanche Bier
Друг
487
234
Ненубы, помогайте с перехватом ScrClientMessage
Чё не так делаю?
C++:
D3DCOLOR MessageColor; // Цвет сообщения
byte textLen; // Длина сообщения
char textMessage[144]; // Сообщение
params->bitStream->ResetReadPointer();
params->bitStream->Read(MessageColor);
params->bitStream->Read(textLen);
params->bitStream->Read(textMessage);
textMessage[textLen] = '\0';
params->bitStream->ResetReadPointer();
 

BlackKnigga

Известный
BH Team
922
446
Ненубы, помогайте с перехватом ScrClientMessage
Чё не так делаю?
C++:
D3DCOLOR MessageColor; // Цвет сообщения
byte textLen; // Длина сообщения
char textMessage[144]; // Сообщение
params->bitStream->ResetReadPointer();
params->bitStream->Read(MessageColor);
params->bitStream->Read(textLen);
params->bitStream->Read(textMessage);
textMessage[textLen] = '\0';
params->bitStream->ResetReadPointer();
TextLen дворд, а не байт.
https://docs.google.com/spreadsheets/d/1iIxEk7yR8r7ZLGiSAL4ndtz_N1k0p3Wt7TE5bei6ztU/edit#gid=1