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

horacy

Известный
110
95
как получить разбита ли фара у машины?

вы, вероятно, можете проверить это с помощью этих функций.

C++:
                    CVehicle* cveh = getSelfCVehicle();
                    //0-off light on-1+
                    for (size_t i = 0; i < 4; i++)
                    {
                    addMessageToChatWindow("light id %d state: %d", i,cveh->GetDamageManager()->GetLightStatus(i));
                    }
                     //damage status panels
                        for (size_t i = 0; i < 3; i++)
                        {
                            addMessageToChatWindow("panel id %d state: %d", i,cveh->GetDamageManager()->GetPanelStatus(i));
                        }

нужно проверить какому ID панели соответствует отражатель и какому статусу соответствует поврежденный отражатель

 

Smeruxa

t.me/smeruxa
Проверенный
1,383
733
Как color перевести в RGB и обратно? Так же этот RGB передать в AddMessage (RefChat)
Очень поможет, может глупый вопрос, но все же
Не надо выдавать ответы гадая, будьте добры, мне нужен корректный ответ который написан не на рандом, что color состоит из r g b давайте разобьем и т.д.
Я несколько раз пытался, криво косо получается и не выдает нужный мне цвет, поэтому пришел сюда за помощью
C++:
rakhook::on_receive_rpc += [](unsigned char& id, RakNet::BitStream* bs) -> bool {
        if (id == 93) {
            bs->ResetReadPointer();

            uint32_t color;
            bs->Read(color);
 

horacy

Известный
110
95
Как color перевести в RGB и обратно? Так же этот RGB передать в AddMessage (RefChat)
Очень поможет, может глупый вопрос, но все же
Не надо выдавать ответы гадая, будьте добры, мне нужен корректный ответ который написан не на рандом, что color состоит из r g b давайте разобьем и т.д.
Я несколько раз пытался, криво косо получается и не выдает нужный мне цвет, поэтому пришел сюда за помощью
C++:
rakhook::on_receive_rpc += [](unsigned char& id, RakNet::BitStream* bs) -> bool {
        if (id == 93) {
            bs->ResetReadPointer();

            uint32_t color;
            bs->Read(color);
вам нужно преобразовать int в HEX, а затем в RGB. Проблема в том, что, насколько я проверил, цвет, который мы читаем, не соответствует цвету сообщения. Может быть, самп конвертирует int в hex по-другому?

Однако исходный формат — RGBA, а не RGB, отсюда и путаница. Это весь код, который меняет DWCOLOR на RGB и наоборот.

Жду вашей реакции 👍, пишите, если что-то не поняли.
dwcolor to rgb:
void inttorgb(int color,int colors[3])
{

    colors[0] = (color >> 16) & 0xFF;
    colors[1] = (color >> 8) & 0xFF;
    colors[2] = color & 0xFF;
   
}

        case RPC_ClientMessage:
        {

            BitStream        bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);
            uint32_t        dwStrLen;
            uint32_t dwColor;
            char            szMsg[1000];
            static char        last_servermsg[256];
            static DWORD    allow_show_again = 0;

            bsData.Read(dwColor);
            bsData.Read(dwStrLen);    
            if (dwStrLen >= sizeof(szMsg)) dwStrLen = sizeof(szMsg) - 1;
            bsData.Read(szMsg, dwStrLen);
            szMsg[dwStrLen] = '\0';

            std::stringstream ss;
            ss << std::hex << dwColor;
            std::string hexValue = ss.str();
            std::string color= "000000";
            int check = 8-hexValue.length();


       
                for (size_t i = check; i < 6; i++)
                {
                    color[i] = hexValue[i - check];

                }
           

            int relint = std::stoi(color, nullptr, 16);

            addMessageToChatWindow("int rgba: %d hex rgba: %x hex rgb: %s {%s}test color",dwColor,dwColor, color.c_str(),color.c_str());
           
            int colors[3];

                inttorgb(relint,colors);

            addMessageToChatWindow("int to rgba: red %d green %d blue %d", colors[0], colors[1], colors[2]);

            int rgbtoint = (colors[0] << 16) | (colors[1] << 8) | colors[2];

            addMessageToChatWindow("rgb to int: %d",  rgbtoint);
}

1735594778101.png
 
Последнее редактирование:
  • Bug
  • Влюблен
Реакции: AdCKuY_DpO4uLa и Smeruxa

daun.daunovich.01

Новичок
11
1
1. Пытаюсь создать педа в сампе, через plugin-sdk. Мой код:
code:
CPed* ped = nullptr;
CVector vector{ x, y, z };

if (type == CPedType::CIVILIAN_PED) {
        CStreaming::RequestModel(modelId, GAME_REQUIRED);
        CStreaming::LoadAllRequestedModels(false);
        CStreaming::SetModelIsDeletable(modelId);

        ped = new CCivilianPed(ePedType::PED_TYPE_CIVMALE, modelId);
    }

    if (type == CPedType::COP_PED) {
        /*CStreaming::RequestModel(modelId, eStreamingFlags::GAME_REQUIRED);
        CStreaming::LoadAllRequestedModels(false);*/

        ped = new CCopPed(eCopType::COP_TYPE_CITYCOP);
    }

    if (type == CPedType::FIREMAN_PED) {
        CStreaming::RequestModel(modelId, eStreamingFlags::GAME_REQUIRED);
        CStreaming::LoadAllRequestedModels(true);

        ped = new CEmergencyPed(ePedType::PED_TYPE_FIREMAN, modelId);
    }

    if (type == CPedType::MEDIC_PED) {
        CStreaming::RequestModel(modelId, eStreamingFlags::GAME_REQUIRED);
        CStreaming::LoadAllRequestedModels(true);

        ped = new CEmergencyPed(ePedType::PED_TYPE_MEDIC, modelId);
    }

    ped->m_nCreatedBy = 2;

    ped->m_pIntelligence->SetPedDecisionMakerType(-1);
    ped->m_pIntelligence->SetSeeingRange(30.0);
    ped->m_pIntelligence->SetHearingRange(30.0);
    ped->m_pIntelligence->m_fDmRadius = 0.0f;
    ped->m_pIntelligence->m_nDmNumPedsToScan = 0;
    ped->SetPosn(vector);
    ped->SetOrientation(0.f, 0.f, 0.f);

    CWorld::Add(ped);

    CPedStruct* pedStruct = new CPedStruct(type, modelId, x, y, z, ped);
    m_Peds.push_back(pedStruct);
Итог - не вижу педа на заданных координатах
Кто-то говорит, что SA:MP что-то хукает, ломает игру, и по этому не получается сделать это.

Помогите.
 

Ice

Известный
34
3
Ребят, есть ли какой то фреймворк для самп аси который работает на всех верзиях 0.3.7 ? Я попробывал ASI-Framework но потом понял что он только для 0.3.7. Или какая таблица со офсетами адресов может быть пригодится.
 

yung milonov

Известный
1,014
523
В SA:MP какой лимит скинов? Я так понял +- до id 319.
на форумах по павно пишут что 30 скинов поверх можно закинуть, дальше только fastman limit adjuster ставить
 

Averian

Новичок
4
2
на форумах по павно пишут что 30 скинов поверх можно закинуть, дальше только fastman limit adjuster ставить
Да в FLA лимиты на model ped увеличены, но всё равно не работает при добавлении 9 скина.