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

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

  1. Gabriel__

    Проверенный

    Регистрация:
    23.06.2015
    Сообщения:
    425
    Симпатии:
    153
    Репутация:
    48
    1 способ. Создай переменную типа float и в главном цикле отнимай от неё сколько-то десятых или сотых (методом подбора) и потом когда нужно рисовать округляй её до целого числа.
    2 способ:
    
    DWORD tick = 0;
    uint32 alpha = 255;
    
    // mainloop
    if(GetTickCount() >= tick)
    {
          alpha--;
          tick = GetTickCount() + 100;
    }
     
    iAmerican нравится это.
  2. Woofing Giraffe

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

    Регистрация:
    14.06.2015
    Сообщения:
    379
    Симпатии:
    45
    Репутация:
    14
    Есть у кого структура RPC_ScrShowTextDraw?
     
  3. QGate

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

    Регистрация:
    27.03.2016
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Отказывается выводить сообщение при нажатии клавиш, что делать?
    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.");
        };
    }
     
  4. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    SF->getGame()->isKeyDown(VK_LMENU)
     
    QGate нравится это.
  5. QGate

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

    Регистрация:
    27.03.2016
    Сообщения:
    78
    Симпатии:
    0
    Репутация:
    0
    Спасибо, работает.
     
  6. da9

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

    Регистрация:
    29.08.2013
    Сообщения:
    12
    Симпатии:
    1
    Репутация:
    0
    Как заставить игрока идти/ехать на координаты?
     
  7. barspinoff

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

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

    legend2360   ¯\_(°□°)_/¯
    Всефорумный модератор

    Регистрация:
    23.03.2013
    Сообщения:
    2.387
    Симпатии:
    846
    Репутация:
    479
    Скачай RakLogger+ и глянь.
     
  9. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    Так же само считывать.
     
  10. barspinoff

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

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

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

    Регистрация:
    12.07.2013
    Сообщения:
    148
    Симпатии:
    32
    Репутация:
    17
    Кинь код, как ты считываешь.
     
    iAmerican нравится это.
  12. barspinoff

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

    Регистрация:
    31.12.2015
    Сообщения:
    92
    Симпатии:
    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 barspinoff, 4 авг 2016
    Последнее редактирование: 4 авг 2016
  13. iAmerican

    Проверенный

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

    Проверенный

    Регистрация:
    23.06.2015
    Сообщения:
    425
    Симпатии:
    153
    Репутация:
    48
  15. iAmerican

    Проверенный

    Регистрация:
    17.02.2014
    Сообщения:
    350
    Симпатии:
    70
    Репутация:
    15
    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;
    }
    Так тоже не идет(
     
  16. Sia

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

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

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

    Регистрация:
    26.07.2016
    Сообщения:
    11
    Симпатии:
    13
    Репутация:
    4
    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, и из-за этого выполнение функции прекращается. Что не так?
     
    iAmerican нравится это.
  18. Woofing Giraffe

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

    Регистрация:
    14.06.2015
    Сообщения:
    379
    Симпатии:
    45
    Репутация:
    14
    ты это не на свой ид юзаешь?
     
    loremi735 нравится это.
  19. loremi735

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

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

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

    Регистрация:
    29.08.2013
    Сообщения:
    12
    Симпатии:
    1
    Репутация:
    0
    Как работать с CHandlingEntry
    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:
     
  21. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    После получение CHandlingEntry делай проверку на валидность
    
    if(entry){
    entry->SetABS(true);
    } else {
    SF->Log("CHandlingEntry empty");
    }
    
    
     
    da9 нравится это.
  22. da9

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

    Регистрация:
    29.08.2013
    Сообщения:
    12
    Симпатии:
    1
    Репутация:
    0
    Они все пустые или я что-то не так делаю
     
  23. CarLCas

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

    Регистрация:
    12.07.2013
    Сообщения:
    148
    Симпатии:
    32
    Репутация:
    17
    Не путай SAMP ID авто и GTA ID (Handle).
    if (SF->getSAMP()->getInfo()->pPools->pVehicle->iIsListed[i])
    GAME->GetPools()->GetVehicle(SF->getSAMP()->getInfo()->pPools->pVehicle->GetCarHandleFromSAMPCarID(i));
     
    iAmerican и da9 нравится это.
  24. iAmerican

    Проверенный

    Регистрация:
    17.02.2014
    Сообщения:
    350
    Симпатии:
    70
    Репутация:
    15
    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. Как его заставить что бы полностью брал текст?
     
  25. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    param юзай.
     
  26. Woofing Giraffe

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

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

    legend2360   ¯\_(°□°)_/¯
    Всефорумный модератор

    Регистрация:
    23.03.2013
    Сообщения:
    2.387
    Симпатии:
    846
    Репутация:
    479
    Тот же результат будет. Пробел то не учитываешь
     
    loremi735 нравится это.
  28. Dimoz

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

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

    legend2360   ¯\_(°□°)_/¯
    Всефорумный модератор

    Регистрация:
    23.03.2013
    Сообщения:
    2.387
    Симпатии:
    846
    Репутация:
    479
    stFontInfo :: Print там есть rect. Возможно оно))
    UPD: Нет, не оно(
     
  30. Dimoz

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

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

    NarutoUA C++ Hokage developer
    BH Team

    Регистрация:
    26.05.2013
    Сообщения:
    599
    Симпатии:
    684
    Репутация:
    311
    Нельзя через стандартные методы SF API
     
    Dimoz нравится это.
  32. AWRage

    Проверенный

    Регистрация:
    10.07.2015
    Сообщения:
    645
    Симпатии:
    118
    Репутация:
    57
    Может поможет.
    http://www.gamedev.net/topic/604061-d3d9-rotating-text/
     
    Dimoz нравится это.
  33. Woofing Giraffe

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

    Регистрация:
    14.06.2015
    Сообщения:
    379
    Симпатии:
    45
    Репутация:
    14
    Как получить длину строки в пикселях?
     
  34. NarutoUA

    NarutoUA C++ Hokage developer
    BH Team

    Регистрация:
    26.05.2013
    Сообщения:
    599
    Симпатии:
    684
    Репутация:
    311
    гугли ID3DXSprite DT_CALCRECT
     
  35. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    stFontInfo::DrawLength
     
    Woofing Giraffe нравится это.
  36. Woofing Giraffe

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

    Регистрация:
    14.06.2015
    Сообщения:
    379
    Симпатии:
    45
    Репутация:
    14
    Можно как то получить текущий шрифт и его размер?
     
  37. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.454
    Симпатии:
    724
    Репутация:
    206
    В переменной у тебя же хранится информация.
    
    struct API stFontInfo
    {
        char                    m_szFontName[32];
        int                        m_fontHeight;
    }
    
    
     
    Woofing Giraffe нравится это.
  38. Woofing Giraffe

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

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

    Проверенный

    Регистрация:
    10.07.2015
    Сообщения:
    645
    Симпатии:
    118
    Репутация:
    57
    Woofing Giraffe нравится это.
  40. Woofing Giraffe

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

    Регистрация:
    14.06.2015
    Сообщения:
    379
    Симпатии:
    45
    Репутация:
    14