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

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

  1. Rjx13

    Rjx13 Интересующийся

    Регистрация:
    2 июн 2018
    Сообщения:
    131
    Симпатии:
    50
    cakebou нравится это.
  2. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    Уже нашел ппхпхпх

    Как заполнить битСтрим для отправки клика диалога(id 168) по левой кнопке "Купить"
     

    Вложения:

    • sa-mp-053.png
      sa-mp-053.png
      Размер файла:
      936,3 КБ
      Просмотров:
      50
  3. ALF

    ALF Интересующийся

    Регистрация:
    14 ноя 2017
    Сообщения:
    114
    Симпатии:
    127
    под сф сам сделаешь
    
    void SendDialogResponse(WORD wDialogID, BYTE bButtonID, WORD wListBoxItem = 65535, char *szInputResp = "")
    {
            BitStream bsSend;
            BYTE respLen = static_cast<BYTE>(strlen(szInputResp));
    
            bsSend.ResetWritePointer();
            bsSend.Write(wDialogID);
            bsSend.Write(bButtonID);
            bsSend.Write(wListBoxItem);
            bsSend.Write(respLen);
            bsSend.Write(szInputResp, respLen);
    
            SAMP->RPC(RPC_DialogResponse, &bsSend, HIGH_PRIORITY, RELIABLE_ORDERED, NULL, false);
    }
    
    // SendDialogResponse(id, 1);
    
     
    cakebou нравится это.
  4. Stiopko

    Stiopko Интересующийся

    Регистрация:
    28 фев 2018
    Сообщения:
    156
    Симпатии:
    57
    Где правильней удалять данные плагине при выгрузке
    Тут
    void CALLBACK endProc() { // это типу сффовский деструктор
        if (activatePlugin != nullptr) {
            ActivatePlugin *s = activatePlugin;
            activatePlugin = nullptr;
            delete s;
        }
        //ImGui_ImplDX9_Shutdown();
        //ImGui_ImplWin32_Shutdown();
        //ImGui::DestroyContext();
    }
    или тут

    case DLL_PROCESS_DETACH:
            ImGui_ImplDX9_Shutdown();
            ImGui_ImplWin32_Shutdown();
            ImGui::DestroyContext();
            break;
     
  5. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    Кто может дать функцию фейк афк?
     
  6. Musaigen

    Musaigen ŜĆŘΣΔΜ ΔΝĐ ŜΉØΩТ
    Проверенный

    Регистрация:
    1 апр 2018
    Сообщения:
    989
    Симпатии:
    381
    Функции нет.
    Блокируешь исходящий пакет от тебя, вот и фейк афк
     
    cakebou нравится это.
  7. ALF

    ALF Интересующийся

    Регистрация:
    14 ноя 2017
    Сообщения:
    114
    Симпатии:
    127
    ну можно так
    
    BYTE orig[2];
    
    void DisableOnFoot(BOOL status)
    {
        DWORD prot = PAGE_EXECUTE_READWRITE;
        DWORD addr = reinterpret_cast<DWORD>(GetModuleHandle("samp.dll")) + 0x4D10;
    
        VirtualProtect(reinterpret_cast<LPVOID>(addr), 2, prot, &prot);
    
        if(status)
        {
            orig[0] = *reinterpret_cast<PBYTE>(addr);
            orig[1] = *reinterpret_cast<PBYTE>(addr + 1);
           
            *reinterpret_cast<PBYTE>(addr) = 0xC3;
            *reinterpret_cast<PBYTE>(addr + 1) = 0x90;
        }
        else
        {
            *reinterpret_cast<PBYTE>(addr) = orig[0];
            *reinterpret_cast<PBYTE>(addr + 1) = orig[1];
        }
       
        VirtualProtect(reinterpret_cast<LPVOID>(addr), 2, prot, nullptr);
    }
    
    но проще просто return false в ID_PLAYER_SYNC
     
    cakebou и Stiopko нравится это.
  8. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    Есть у кого-то плагин/скрипт который в чат логе будет писать HTML цвет строк чата?

    как пофиксить?
     

    Вложения:

  9. Rjx13

    Rjx13 Интересующийся

    Регистрация:
    2 июн 2018
    Сообщения:
    131
    Симпатии:
    50
    Код покажи
     
  10. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    Пофиксил уже
     
  11. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    Как проверить, что сообщение пришло от именно от сервера а не от игрока?
     
  12. Musaigen

    Musaigen ŜĆŘΣΔΜ ΔΝĐ ŜΉØΩТ
    Проверенный

    Регистрация:
    1 апр 2018
    Сообщения:
    989
    Симпатии:
    381
    В чем смысл вопроса?
    Для сервера есть конкретный RPC, так же как и от игрока.
    И в чем смысл писать в две темы одновременно?
     
  13. Stiopko

    Stiopko Интересующийся

    Регистрация:
    28 фев 2018
    Сообщения:
    156
    Симпатии:
    57
    Как можно поставить вооот такой upload_2019-2-11_21-17-40.png маркер на карте (ну типа когда вы заходине через esc на карту и ставите там точку только мне ето все нужно сделать програмно)
    Єто
    
    CVector pos(crds[0], crds[1], crds[2]);
    CMarker *mapMarker = GAME->GetRadar()->CreateMarker(&pos);
    mapMarker->SetSprite(eMarkerSprite::MARKER_SPRITE_WAYPOINT);
    
    не то, це фейковий маркер
     
  14. Adder

    Adder Участник

    Регистрация:
    1 ноя 2013
    Сообщения:
    11
    Симпатии:
    0
    Приветствую, вопрос такой. Как реализовать такую функцию.
    При нажатии на клавишу, вызывается чат окно в нём вводится команда, например /sms id
    И чтобы оно не закрывалось. Пробовал использовать:
    SF->getSAMP()->getChat()->SetChatInputText();
    SF->getSAMP()->getInput()->EnableInput();
    Но если используешь их, то они вызываются только со второго нажатия клавиши
     
  15. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    Как выгружать/подгружать плагин?
     
  16. Harryss

    Harryss Знающий

    Регистрация:
    7 мар 2015
    Сообщения:
    216
    Симпатии:
    17
    команды pfree <filename>, pload <filename> в консоль.
     
  17. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    нужно писать расширение файла?
     
  18. ALF

    ALF Интересующийся

    Регистрация:
    14 ноя 2017
    Сообщения:
    114
    Симпатии:
    127
    пофиг
     
    cakebou нравится это.
  19. Harryss

    Harryss Знающий

    Регистрация:
    7 мар 2015
    Сообщения:
    216
    Симпатии:
    17
    для sf плагинов - нет, для .asi'шников - да
     
  20. Vlad Horii

    Проверенный

    Регистрация:
    16 июл 2017
    Сообщения:
    327
    Симпатии:
    201
    Здравствуйте, подскажите пожалуйста, как этот код клео будет выглядить на SF API
    04E4: refresh_game_renderer_at 0.0 0.0
    03CB: set_rendering_origin_at 0.0 0.0 0.0
     
  21. Adder

    Adder Участник

    Регистрация:
    1 ноя 2013
    Сообщения:
    11
    Симпатии:
    0
    Так и не нашёл ответа. Может кто подскажет
     
  22. ЯedЯuM

    ЯedЯuM Malware Maker

    Регистрация:
    13 мар 2016
    Сообщения:
    282
    Симпатии:
    284
    Хуйню тебе выше посоветовали, есть функции для прямой выгрузки/загрузки без всяких там консолей.
    
    SF->loadPlugin("путь к плагину");
    SF->unloadPlugin("имя плагина");
    
    Нет разницы, но я бы предпочёл длл детач потому что до SAMPFUNCS v5.4.0 другие плагины которые установили свой деструктор позже могли затереть твой и он бы не сработал.

    Полный код покажи, я думаю у тебя проблема в проверке нажатия этой самой клавиши.
     
    Stiopko нравится это.
  23. cakebou

    cakebou Интересующийся

    Регистрация:
    4 апр 2017
    Сообщения:
    154
    Симпатии:
    7
    [​IMG]
    как сделать такой текст?
     
  24. ЯedЯuM

    ЯedЯuM Malware Maker

    Регистрация:
    13 мар 2016
    Сообщения:
    282
    Симпатии:
    284
    SF->getCLEO()->callOpcode("0ACD: show_text_highpriority \"~w~Business & House Catcher by ~b~Romelo ~g~activated ~w~Mode: ~b~houses ~w~Distance: ~b~60.0\" time 1000");
     
  25. san0

    Проверенный

    Регистрация:
    15 дек 2013
    Сообщения:
    392
    Симпатии:
    283
    
    CVector vec = CVector();
    int &m_nTargetBlipIndex = *reinterpret_cast<int*>(
        reinterpret_cast<unsigned char*>(GAME->GetMenuManager()->GetInterface()) + 0x2C);
    
    if (!m_nTargetBlipIndex) {
        using CRadar__SetCoordBlip = auto (__cdecl*)(eMarkerType, CVector, unsigned int, eMarkerDisplay, char*) -> int;
        m_nTargetBlipIndex = reinterpret_cast<CRadar__SetCoordBlip>(0x583820)
            (eMarkerType::MARKER_TYPE_COORDS, vec, 0, eMarkerDisplay::MARKER_DISPLAY_BLIPONLY, nullptr);
    }
    auto CRadar__GetActualBlipArrayIndex = ((int(__cdecl *)(int))0x582870);
    CMarker &m = *GAME->GetRadar()->GetMarker(CRadar__GetActualBlipArrayIndex(m_nTargetBlipIndex));
    m.SetPosition(&vec);
    m.SetSprite(eMarkerSprite::MARKER_SPRITE_WAYPOINT);
    Надеюсь, это по большей степени самый простой из методов, да и тому же карманный. По хорошему нужно использовать вместо этих деклараций полные классы из plugin-sdk, например https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CRadar.h, ну и будет выглядеть явно лучше, нежели прямая работа с памятью и смещениями по типу 0x2C.
    Аналогично рекомендуется все это красиво оформить
    CVector vec(100.0f, 150.0f, 200.0f);
    
    // 04E4: refresh_game_renderer_at 0.0 0.0
    ((void*(__cdecl *)(CVector2D*, void*))0x410C00)(&CVector2D(vec), reinterpret_cast<void*>(0xB72914));
    // 03CB: set_rendering_origin_at 0.0 0.0 0.0
    GAME->GetWorld()->LoadMapAroundPoint(&vec, /* radius used for requesting objects */ 100.0f);
    
    static void show_text_highpriority(const char* text, const unsigned int time) {
        ((void(__cdecl *)(const char *, unsigned int, unsigned short, bool))0x69F1E0)(text, time, 0, false);
    }
    // ...
    show_text_highpriority("~r~H~g~E~w~Y", 4000U);
    
     
    Stiopko, LaRossa, Vlad Horii и ещё 1-му нравится это.
  26. mrdiimax

    mrdiimax Свой человек

    Регистрация:
    24 янв 2016
    Сообщения:
    348
    Симпатии:
    43
    Как преобразовать из "uint32_t" в "const char *" ?
     
  27. Rjx13

    Rjx13 Интересующийся

    Регистрация:
    2 июн 2018
    Сообщения:
    131
    Симпатии:
    50
    Код покажи где ошибка
     
  28. mrdiimax

    mrdiimax Свой человек

    Регистрация:
    24 янв 2016
    Сообщения:
    348
    Симпатии:
    43
    void ip()
    {
    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 255, 255), SF->getSAMP()->getInfo()->ulPort);
    }

    Хотел перевести, да пока не знаю как это сделать, там в апи написано "uint32_t ulPort;"
     
  29. Rjx13

    Rjx13 Интересующийся

    Регистрация:
    2 июн 2018
    Сообщения:
    131
    Симпатии:
    50
    SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 255, 255), "ulPort: %d", SF->getSAMP()->getInfo()->ulPort);
    http://www.c-cpp.ru/content/printf
     
    mrdiimax нравится это.
  30. mrdiimax

    mrdiimax Свой человек

    Регистрация:
    24 янв 2016
    Сообщения:
    348
    Симпатии:
    43
  31. Stiopko

    Stiopko Интересующийся

    Регистрация:
    28 фев 2018
    Сообщения:
    156
    Симпатии:
    57
    Capture.PNG
    Вот ето ти не туда вставил. Нужно в функцию startinit!!
     
    mrdiimax нравится это.
  32. beento

    beento Постоянный участник

    Регистрация:
    17 дек 2017
    Сообщения:
    82
    Симпатии:
    2
    как заморозить моего педа? в pawn функция называется toggleplayercontrollable
     
  33. Rjx13

    Rjx13 Интересующийся

    Регистрация:
    2 июн 2018
    Сообщения:
    131
    Симпатии:
    50
  34. LaRossa

    Проверенный

    Регистрация:
    4 фев 2017
    Сообщения:
    433
    Симпатии:
    137
    Подскажите как это будет выглядеть на С++
    0C83: samp force_onfoot_sync
     
  35. ЯedЯuM

    ЯedЯuM Malware Maker

    Регистрация:
    13 мар 2016
    Сообщения:
    282
    Симпатии:
    284
    
    stLocalPlayer *lp = SF->getSAMP()->getPlayers()->pLocalPlayer;
    lp->ForceSendOnfootSync();
    
     
    LaRossa нравится это.