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

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

  1. Gabriel__

    Проверенный

    Регистрация:
    23.06.15
    Сообщения:
    428
    Лайки:
    149
    Репутация:
    46
    1 способ. Создай переменную типа float и в главном цикле отнимай от неё сколько-то десятых или сотых (методом подбора) и потом когда нужно рисовать округляй её до целого числа.
    2 способ:
    Код (C++):
    DWORD tick = 0;
    uint32 alpha = 255;

    // mainloop
    if(GetTickCount() >= tick)
    {
          alpha--;
          tick = GetTickCount() + 100;
    }
     
    #1761
    iAmerican нравится это.
  2. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    Есть у кого структура RPC_ScrShowTextDraw?
     
    #1762
  3. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Отказывается выводить сообщение при нажатии клавиш, что делать?
    Код (C++):
    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()->getChat()->AddChatMessage( D3DCOLOR_XRGB( 0, 0xAA, 0 ), "SAMPFUNCS Plugin loaded." );
            SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC); // регистрируем callback
            init = true;
        }
        if (SF->getGame()->isKeyPressed(VK_LMENU) && SF->getGame()->isKeyPressed(VK_UP))
        {
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded.");
        };
    }
     
    #1763
  4. Dark_Knight

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

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    SF->getGame()->isKeyDown(VK_LMENU)
     
    #1764
    QGate нравится это.
  5. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Спасибо, работает.
     
    #1765
  6. da9

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

    Регистрация:
    29.08.13
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    Как заставить игрока идти/ехать на координаты?
     
    #1766
  7. barspinoff

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

    Регистрация:
    31.12.15
    Сообщения:
    86
    Лайки:
    1
    Репутация:
    0
    народ, подскажите как читать RPC_ServerCommand, RPC_Chat принимает только слова из чата
     
    #1767
  8. legend2360

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

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    Скачай RakLogger+ и глянь.
     
    #1768
  9. Dark_Knight

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

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    Так же само считывать.
     
    #1769
  10. barspinoff

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

    Регистрация:
    31.12.15
    Сообщения:
    86
    Лайки:
    1
    Репутация:
    0
    пробовал так же само считывать, текст пустой
     
    #1770
  11. CarLCas

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

    Регистрация:
    12.07.13
    Сообщения:
    139
    Лайки:
    29
    Репутация:
    14
    Кинь код, как ты считываешь.
     
    #1771
    iAmerican нравится это.
  12. barspinoff

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

    Регистрация:
    31.12.15
    Сообщения:
    86
    Лайки:
    1
    Репутация:
    0
    if (params->packetId == RPC_ServerCommand)
    {
    byte length;
    char text[256];

    params->bitStream->Read(length);
    params->bitStream->Read(text, length);
    params->bitStream->ResetReadPointer();

    text[length] = 0;
    MessageBox(0, text, 0, 64);
    }
     
    #1772
    Последнее редактирование: 4 авг 2016
  13. iAmerican

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

    Регистрация:
    17.02.14
    Сообщения:
    268
    Лайки:
    55
    Репутация:
    11
    for (int gun = 23; gun <= 31; gun++) {
    *(float *)(((gun + 36) * 0x70) + 0xC8AAB8 + 0x5C) = 10.0;
    }
    Почему скорость стрельбы не меняется ?
     
    #1773
  14. Gabriel__

    Проверенный

    Регистрация:
    23.06.15
    Сообщения:
    428
    Лайки:
    149
    Репутация:
    46
    #1774
  15. iAmerican

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

    Регистрация:
    17.02.14
    Сообщения:
    268
    Лайки:
    55
    Репутация:
    11
    for (int gun = 23; gun <= 31; gun++) {
    *(float *)(((gun + 0) * 0x70) + 0xC8AAB8 + 0x5C) = 10.0;
    }

    for (int gun = 23; gun <= 31; gun++) {
    *(float *)(((gun + 25) * 0x70) + 0xC8AAB8 + 0x5C) = 10.0;
    }

    for (int gun = 23; gun <= 31; gun++) {
    *(float *)(((gun + 36) * 0x70) + 0xC8AAB8 + 0x5C) = 10.0;
    }
    Так тоже не идет(
     
    #1775
  16. Sia

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

    Регистрация:
    04.08.16
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    Как рисовать текст на игроках ? Есть получение их в зоне стрима , получение их координат.
     
    #1776
  17. loremi735

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

    Регистрация:
    26.07.16
    Сообщения:
    12
    Лайки:
    13
    Репутация:
    4
    Код (C++):
    void CALLBACK cmd_show_info_player( std::string param )
    {
        if ( param.empty() ) return;
        int    i = std::stoi( param );

        char buf[128];

        stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[ i ];

        if(!pPlayer) return;

        sprintf( buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d",
            pPlayer->szPlayerName,
            pPlayer->iPing,
            pPlayer->iScore,
            pPlayer->iIsNPC,
            pPlayer->pPlayerData->iAFKState == 2 );

        SF->getSAMP()->getChat()->AddChatMessage( -1, buf );  
    };
    Почему-то функция выходит после if(!pPlayer).

    Насколько я понимаю, что-то не так с указателем на объект класса stRemotePlayer; но i == 0, как я и указал в команде: /showinfo 0, и игрок с таким ID есть, но всё равно !pPlayer возвращает true, и из-за этого выполнение функции прекращается. Что не так?
     
    #1777
    iAmerican нравится это.
  18. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    ты это не на свой ид юзаешь?
     
    #1778
    loremi735 нравится это.
  19. loremi735

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

    Регистрация:
    26.07.16
    Сообщения:
    12
    Лайки:
    13
    Репутация:
    4
    Ок, попробовал на других игроках и работает. Благодарю :good:
     
    Последние данные очков репутации:
    iAmerican: 1 Очко (помощь) 8 авг 2016
    #1779
    iAmerican нравится это.
  20. da9

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

    Регистрация:
    29.08.13
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    Как работать с CHandlingEntry
    Код (Text):
    for (int i = 0; i < SAMP_MAX_VEHICLES; i++) {
            if (!GAME->GetPools()->GetVehicle(i)) {
                continue;
            }
            CHandlingEntry *entry = GAME->GetPools()->GetVehicle(i)->GetHandlingData();
            entry->SetABS(true);
        }
    моментально крашит игру при вызове любого метода этого класса.:help:
     
    #1780
  21. Dark_Knight

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

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    После получение CHandlingEntry делай проверку на валидность
    Код (C):
    if(entry){
    entry->SetABS(true);
    } else {
    SF->Log("CHandlingEntry empty");
    }
     
     
    #1781
    da9 нравится это.
  22. da9

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

    Регистрация:
    29.08.13
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    Они все пустые или я что-то не так делаю
     
    #1782
  23. CarLCas

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

    Регистрация:
    12.07.13
    Сообщения:
    139
    Лайки:
    29
    Репутация:
    14
    Не путай SAMP ID авто и GTA ID (Handle).
    Код (C++):
    if (SF->getSAMP()->getInfo()->pPools->pVehicle->iIsListed[i])
    GAME->GetPools()->GetVehicle(SF->getSAMP()->getInfo()->pPools->pVehicle->GetCarHandleFromSAMPCarID(i));
     
    #1783
    iAmerican и da9 нравится это.
  24. iAmerican

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

    Регистрация:
    17.02.14
    Сообщения:
    268
    Лайки:
    55
    Репутация:
    11
    Код (PHP):
    void CALLBACK textflood(std::string param)
    {
       
        if (param.empty()) return;
       
        char b[64];
        sscanf(param.c_str(), "%s",  &b);

        SF->Log(" %s", b);

    };
    Если вводить текст например blast hack.
    Будет выводиться только blast. Как его заставить что бы полностью брал текст?
     
    #1784
  25. Dark_Knight

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

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    param юзай.
     
    #1785
  26. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    Либо полностью выводи param, либо регулярное выражение заюзай (например sscanf(param.c_str(), "%[a-zA-Z]", b);)
     
    #1786
    loremi735 нравится это.
  27. legend2360

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

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    Тот же результат будет. Пробел то не учитываешь
     
    #1787
    loremi735 нравится это.
  28. Dimoz

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

    Регистрация:
    05.04.13
    Сообщения:
    99
    Лайки:
    20
    Репутация:
    10
    скрипторы, а используя SF API можно зарендерить надпись, развернутую на 90 градусов?
     
    #1788
  29. legend2360

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

    Регистрация:
    23.03.13
    Сообщения:
    2.024
    Лайки:
    678
    Репутация:
    418
    stFontInfo :: Print там есть rect. Возможно оно))
    UPD: Нет, не оно(
     
    #1789
  30. Dimoz

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

    Регистрация:
    05.04.13
    Сообщения:
    99
    Лайки:
    20
    Репутация:
    10
    я уже с этим химичил, оно не отвечает за разворот текста.
    максимум, что можно сделать, - обрезать его
     
    #1790
  31. NarutoUA

    NarutoUA Хокаге
    BH Team

    Регистрация:
    26.05.13
    Сообщения:
    529
    Лайки:
    570
    Репутация:
    273
    Нельзя через стандартные методы SF API
     
    #1791
    Dimoz нравится это.
  32. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    Может поможет.
    http://www.gamedev.net/topic/604061-d3d9-rotating-text/
     
    #1792
    Dimoz нравится это.
  33. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    Как получить длину строки в пикселях?
     
    #1793
  34. NarutoUA

    NarutoUA Хокаге
    BH Team

    Регистрация:
    26.05.13
    Сообщения:
    529
    Лайки:
    570
    Репутация:
    273
    гугли ID3DXSprite DT_CALCRECT
     
    #1794
  35. Dark_Knight

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

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    stFontInfo::DrawLength
     
    #1795
    Woofing Giraffe нравится это.
  36. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    Можно как то получить текущий шрифт и его размер?
     
    #1796
  37. Dark_Knight

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

    Регистрация:
    18.03.13
    Сообщения:
    2.063
    Лайки:
    552
    Репутация:
    178
    В переменной у тебя же хранится информация.
    Код (C):
    struct API stFontInfo
    {
        char                    m_szFontName[32];
        int                        m_fontHeight;
    }
     
     
    #1797
    Woofing Giraffe нравится это.
  38. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    Ты меня немного не понял. Мне нужен шрифт и размер самповский (т.е. чата)
     
    #1798
  39. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    642
    Лайки:
    119
    Репутация:
    54
    #1799
    Woofing Giraffe нравится это.
  40. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    369
    Лайки:
    44
    Репутация:
    14
    #1800