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

Тема в разделе "C, C++", создана пользователем urShadow, 5 дек 2014.

  1. legend2360

    legend2360 Ух как люблю скобочки
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    unsigned short - playerid
    integer - color
    float - draw distance
    integer - expire time
    byte - string lenght
    char - string
     
    #1881
  2. 2Shae

    2Shae Известный пользователь

    Регистрация:
    14.05.14
    Сообщения:
    87
    Лайки:
    5
    Репутация:
    4
    Когда-то была темка на форуме, как использовать AntTweakBar в одном плагине, без дополнительного "0 LiteAntTweakBar.sf". Может кто сейчас подсказать как это реализовать? :D
     
    #1882
  3. DarkP1xel

    DarkP1xel Такой вот Незамысловатый ХАСЛ
    BH Team

    Регистрация:
    17.06.13
    Сообщения:
    1.743
    Лайки:
    1.045
    Репутация:
    286
    А какая разница? Без этого .SF тебе все равно придется использовать .DLL.
     
    #1883
  4. Apolo11

    Apolo11 Активный пользователь

    Регистрация:
    17.01.16
    Сообщения:
    33
    Лайки:
    8
    Репутация:
    0
    Он имеет введу, чтобы вшить атб в сам плагин, без использования дополнительных библиотек. Как в сб хаке.
     
    #1884
  5. Dark_Knight

    Dark_Knight Сралик Харчкишиев
    Друг

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    #1885
  6. 2Shae

    2Shae Известный пользователь

    Регистрация:
    14.05.14
    Сообщения:
    87
    Лайки:
    5
    Репутация:
    4
    Что не так? Какую-то фигню выдаёт вместо нужного текста.
    Код (Text):
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrCreate3DTextLabel)
        {
            WORD ID;
            char text[256];
            DWORD color;
            float pos[3];
            BYTE testLOS;

            params->bitStream->ResetReadPointer();
            params->bitStream->Read(ID);
            params->bitStream->Read(text);
            params->bitStream->Read(color);
            params->bitStream->Read(pos);
            params->bitStream->Read(testLOS);

            SF->getSAMP()->getChat()->AddChatMessage(-1, "ID: %d | Text: %s", ID, text);

        }
    Если эт не то, то как считaть 3д текст?
     
    #1886
    Последнее редактирование: 13 окт 2016
  7. san0

    san0 Hasta la victoria siempre!
    Проверенный

    Регистрация:
    15.12.13
    Сообщения:
    300
    Лайки:
    127
    Репутация:
    51
    Код (Text):
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrCreate3DTextLabel)
    {
        WORD ID;
        char text[256];

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(ID);
        params->bitStream->SetReadOffset(0xD8);
        SF->getRakNet()->DecodeString(text, 256, params->bitStream);

        SF->getSAMP()->getChat()->AddChatMessage(-1, "ID: %d | Text: %s", ID, text);
    }
    Полная структура
    id - word, color - dword, pos - float[3], DrawDist - float, testLOS - byte, unk - dword(всегда 0xFFFFFF), text - encoded
     
    #1887
    2Shae нравится это.
  8. Skadi

    Skadi Активный пользователь

    Регистрация:
    03.11.14
    Сообщения:
    43
    Лайки:
    7
    Репутация:
    8
    Почему не перемещает за размеры 500, 500? OnMouseHover(x, y, 500, 500)
    Код (C++):
    BOOL OnMouseHover(int x, int y, int w, int h)
    {
        POINT pos;
        GetCursorPos(&pos);
        return(pos.x >= x && pos.x <= x + w && pos.y >= y && pos.y <= y + h);
    }

    if(OnMouseHover(x, y, 500, 500))
    {
        if(SF->getGame()->isKeyDown(0x01))
        {
            POINT pt;
            GetCursorPos(&pt);
            x = pt.x, y = pt.y;
        }
    }
     
    #1888
  9. iAmerican

    iAmerican Известный пользователь

    Регистрация:
    17.02.14
    Сообщения:
    268
    Лайки:
    55
    Репутация:
    11
    Пример :
    Код (C++):
    static POINT offset;
        POINT cursor = SF->getGame()->getCursorPos();
        if (cursor.x < hpX + 30 && cursor.x  > hpX - 30 && cursor.y < hpY + 30 && cursor.y > hpY - 30)
        {
            if (SF->getGame()->isKeyPressed(VK_LBUTTON))
            {
                offset.x = hpX - cursor.x;
                offset.y = hpY - cursor.y;
            }
            if (SF->getGame()->isKeyDown(VK_LBUTTON))
            {
                hpX = cursor.x + offset.x;
                hpY = cursor.y + offset.y;
            }
        }
    Или попробуй вот так :

     
    #1889
  10. Skadi

    Skadi Активный пользователь

    Регистрация:
    03.11.14
    Сообщения:
    43
    Лайки:
    7
    Репутация:
    8
    уже лучше, но всё равно возвращает на исходные координаты, если далеко увожу мышку.
     
    #1890
  11. MoZg

    MoZg Новичок

    Регистрация:
    09.03.15
    Сообщения:
    1
    Лайки:
    0
    Репутация:
    0
    Подскажите, почему GetHealth() постоянно показывает 100 и только если оно берет хп моё тогда правильно показывает?!
    Код (C++):
    if (SF->getGame()->isKeyPressed(VK_F10))
                {
                    CVehicle *pCurrentVehicle = GAME->GetPools()->GetVehicle(reinterpret_cast<DWORD *>(SF->getGame()->vehicleInfoGet(VEHICLE_SELF, 0)));
                    if (pCurrentVehicle)
                    {
                        SF->getSAMP()->getChat()->AddChatMessage(-1, "IsBeingDriven - %d | PassengerCount - %d", pCurrentVehicle->IsBeingDriven(), pCurrentVehicle->GetPassengerCount());
                        for (int i = 0, j = pCurrentVehicle->GetPassengerCount(), pid = -1; i <= j; i++)
                        {
                            CPed* passenger = pCurrentVehicle->GetPassenger(i);
                            if (passenger)
                            {
                                pid = SF->getSAMP()->getPlayers()->GetSAMPPlayerIDFromGTAHandle(GAME->GetPools()->GetPedRef(passenger));
                                auto hp = passenger->GetHealth();
                                SF->getSAMP()->getChat()->AddChatMessage(-1, "GetPassenger(%d) - %s[%d] | HP - %f", i, SF->getSAMP()->getPlayers()->GetPlayerName(pid), pid, hp);
                                if (hp < 99)
                                {
                                    // действие
                                }
                            }
                        }
                    }
                }
     
    #1891
  12. NarutoUA

    NarutoUA Хокаге
    BH Team

    Регистрация:
    26.05.13
    Сообщения:
    529
    Лайки:
    570
    Репутация:
    273
    #1892
  13. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    Код (C++):
    stBulletData bulletData;
    memset(&bulletData, 0, sizeof(stBulletData));
    byte packetID;

    params->bitStream->ResetReadPointer();
    params->bitStream->Read(packetID);
    params->bitStream->Read((char *)&bulletData, sizeof(stBulletData));
    params->bitStream->ResetReadPointer();
    SF->Log("-> TargetID: %d | Target: %.3f, %.3f, %.3f | Origin: %.3f, %.3f, %.3f | Center: %.3f, %.3f, %.3f",
                bulletData.sTargetID,
                bulletData.fTarget[0], bulletData.fTarget[1], bulletData.fTarget[2],
                bulletData.fOrigin[0], bulletData.fOrigin[1], bulletData.fOrigin[2],
                bulletData.fCenter[0], bulletData.fCenter[1], bulletData.fCenter[2]);
    А в логе получаю вот это:
    Код (C++):
    TagetID: 256 | Target: -123526324853786050000000.000, 3002534671919167300000.000, -157041088764241890000000000000000.000 | Origin: 2224.054, -0.000, -70597757144914183000000000000000.000 | Center: -2.004, 0.000, -2600830318495991100000000000000000.000
    В чем проблема?
     
    #1893
  14. DarkP1xel

    DarkP1xel Такой вот Незамысловатый ХАСЛ
    BH Team

    Регистрация:
    17.06.13
    Сообщения:
    1.743
    Лайки:
    1.045
    Репутация:
    286
    там player id после ид пакета
     
    #1894
  15. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    Почему тогда outcoming пакет читается нормально?

    upd:
    Все работает. Спасибо.

    Как реализовать функци. get_z_angle_for_point на С++. Мне нужно отправить ложную онфут синхру.
     
    #1895
    Последнее редактирование модератором: 30 окт 2016
  16. 2Shae

    2Shae Известный пользователь

    Регистрация:
    14.05.14
    Сообщения:
    87
    Лайки:
    5
    Репутация:
    4
    Можно ли как-то вставить текст в input диалога?
     
    #1896
  17. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.468
    Лайки:
    1.430
    Репутация:
    401
    юзай структуру remote player или плагин ActiveHitpoints
     
    #1897
  18. andrejandrej

    andrejandrej Пользователь

    Регистрация:
    29.12.15
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    Код (C++):
            stBulletData bulletsync;
            byte packet;
            byte ID;
            params->bitStream->ResetReadPointer();
            params->bitStream->Read(packet);
            params->bitStream->Read(ID);
            params->bitStream->Read((PCHAR)&bulletsync, sizeof(stBulletData));
            params->bitStream->ResetReadPointer();
    Шо не правильно? Не могу получить нужный результат, ничего не записывается в структуру. (входящий)
     
    #1898
  19. legend2360

    legend2360 Ух как люблю скобочки
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    ID игрока - 2 байта
     
    #1899
  20. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    Какой функцией на С++ можно заменить опкод get_z_angle_for_point?
    Использовал:
    Код (C++):
    atan2(targetPos.fY - GAME->GetCamera()->GetCam(GAME->GetCamera()->GetActiveCam())->GetSource()->fY,
                targetPos.fX - GAME->GetCamera()->GetCam(GAME->GetCamera()->GetActiveCam())->GetSource()->fX);
    но это не то, наверное.
     
    #1900
    Последнее редактирование: 5 ноя 2016
  21. andrejandrej

    andrejandrej Пользователь

    Регистрация:
    29.12.15
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    Интересненький вопрос, ребят. Как к примеру отправить онфут синхру смены координат, но при этом чтобы этого не было видно другим игрокам.
     
    #1901
  22. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    Никак. Если только отправить один раз из 20 за секунду, чтобы это чисто физически никто не заметил.
     
    #1902
  23. andrejandrej

    andrejandrej Пользователь

    Регистрация:
    29.12.15
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    По какому принципу работает "ГМ облет пуль"? или подобное :scratch:
     
    #1903
  24. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    В входящей буллет синхре изменяется оффсет или таргет, вроде.

    Если я поставлю хук на D3DMETHOD_RESET, мой callback вызовется перед вызовом оригинального метода, или после него? И можно ли как-то поставить хук перед вызовом и после вызова? SFAPI
     
    #1904
    Последнее редактирование модератором: 13 ноя 2016
  25. BlackKnigga

    BlackKnigga Известный пользователь

    Регистрация:
    10.01.16
    Сообщения:
    367
    Лайки:
    84
    Репутация:
    45
    Как нажать на Player TextDraw? SF->getSAMP()->sendClickTextDraw() как я понял жмет только на обычные текстдравы.
    Мне нужны те что в структуре PlayerTextdraw хранятся.


    Отправил рпц, заработало.
     
    #1905
    Последнее редактирование: 13 ноя 2016
  26. 2Shae

    2Shae Известный пользователь

    Регистрация:
    14.05.14
    Сообщения:
    87
    Лайки:
    5
    Репутация:
    4
    Делаю что-то на подобии чекера. Показ игроков при заходе на сервер/выходе с сервера отображает/сохранение новых ников в файлик работает на ура, а вот при попытке принудительно (командой/клавишей, не важно) перегрузить список (из файла) - крашит.
    Крашит именно из-за этого участка кода:
    Код (Text):
    if (reload == true)
    {
        for (int id = 0; id <= SAMP_MAX_PLAYERS; id++)
        {
            for (int x = 1; x <= line; x++)
            {
                if (!stricmp(SF->getSAMP()->getPlayers()->GetPlayerName(id), playername[x]))
                {
                    SF->getSAMP()->getChat()->AddChatMessage(-1, "Пиздюк %s[%d] подключился к серверу.", SF->getSAMP()->getPlayers()->GetPlayerName(id), id);
                }
            }
        }
        reload = false;
    }
    p.s. не поливайте сразу гавном :D
     
    #1906
    Последнее редактирование: 14 ноя 2016
  27. legend2360

    legend2360 Ух как люблю скобочки
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    Есть такая штука как комментарии. С помощью них ты можешь узнать какая именно строчка является проблемной.
     
    #1907
  28. 2Shae

    2Shae Известный пользователь

    Регистрация:
    14.05.14
    Сообщения:
    87
    Лайки:
    5
    Репутация:
    4
    Конечно сорян за нубский вопрос, но о чём ты? :D
    Я знаю что такое комментарии, но как они помогут понять немогу.
     
    #1908
  29. legend2360

    legend2360 Ух как люблю скобочки
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    К тому, что это может быть либо addChatMessage, либо stricmp. Перед тем, как написать сюда, закомментировал тело цикла и искал бы именно проблемную функцию. Тут их уж не так и много, и предполагаю, что getPlayerName возвращает NULL и stricmp пытается прочитать нулевой указатель.
     
    #1909
  30. Gorkem95

    Gorkem95 Пользователь

    Регистрация:
    02.11.14
    Сообщения:
    8
    Лайки:
    1
    Репутация:
    0
    Any Example For Create DXUT Dialog? like a in cleo.
     
    #1910
  31. legend2360

    legend2360 Ух как люблю скобочки
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    Search the required SAMP DXUT's addresses or use SF->getCleo()->callOpcode
     
    #1911
  32. Sire

    Sire vk.com/sire_lol
    Друг

    Регистрация:
    20.10.14
    Сообщения:
    412
    Лайки:
    262
    Репутация:
    39
    Можн как-то зарендрить то что я ввожу с клавиатуры?
     
    #1912
  33. BlackKnigga

    BlackKnigga Известный пользователь

    Регистрация:
    10.01.16
    Сообщения:
    367
    Лайки:
    84
    Репутация:
    45
    Как проверить нажата ли клавиша при открытом чате?
     
    #1913
  34. CarLCas

    CarLCas Известный пользователь

    Регистрация:
    12.07.13
    Сообщения:
    139
    Лайки:
    29
    Репутация:
    14
    Как вариант, GetAsyncKeyState
     
    #1914
  35. BlackKnigga

    BlackKnigga Известный пользователь

    Регистрация:
    10.01.16
    Сообщения:
    367
    Лайки:
    84
    Репутация:
    45
    Пробовал уже, и хук ставил SetWindowsHookEx, выходит ошибка:
    Код (Text):
    error LNK2019: ссылка на неразрешенный внешний символ __imp__GetAsyncKeyState@4 в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ)
    Мб что то не так делаю?
    Код (C++):
    if (GetAsyncKeyState(VK_TAB))
        {
            SF->Log("Tab Pressed");
        }
     
    #1915
  36. Sire

    Sire vk.com/sire_lol
    Друг

    Регистрация:
    20.10.14
    Сообщения:
    412
    Лайки:
    262
    Репутация:
    39
    Библиотеку вруби
     
    Последние данные очков репутации:
    BlackKnigga: 1 Очко (Скомпилился, все работает. Спс) 16 ноя 2016
    #1916
    BlackKnigga нравится это.
  37. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    Поставить хук на функцию WndProc.
    Твой wndProc:

    bool __stdcall wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    return true;
    }

    Регистрируем callback:
    SF->getGame()->registerWndProcCallback(SFGame::WndProcCallbackPriority::HIGH_CB_PRIORITY, *wndProc);

    Честно, не знаю что за приоритеты в аргументе, сам уже потестишь.
     
    #1917
  38. BlackKnigga

    BlackKnigga Известный пользователь

    Регистрация:
    10.01.16
    Сообщения:
    367
    Лайки:
    84
    Репутация:
    45
    Как можно переместить чат с input box?
     
    #1918
  39. Woofing Giraffe

    Woofing Giraffe Известный пользователь

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    [​IMG]
    Из за чего цвет смещается? Вроде всё правильно выставил
     
    #1919
  40. Dark_Knight

    Dark_Knight Сралик Харчкишиев
    Друг

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    Мы ванги? Код где?
     
    #1920