1. Внимание!
    Объявились мошенники, которые представляются администрацией форума и обманывают покупателей. У них есть своя группа ВКонтакте, копирующая нашу, и несколько аккаунтов, маскирующихся под аккаунты администраторов и гарантов форума.
    При проведении любых сделок с администраторами, гарантами и пользователями BlastHack настойчиво требуйте у них написать вам личное сообщение на форуме и ни в коем случае не продолжайте сделку при отказе выполнять это требование или если сообщение не было получено.

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

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

  1. Dark_Knight

    Dark_Knight РКН Тян на страже твоей анальной девственности.
    Друг

    Регистрация:
    18.03.13
    Сообщения:
    2.250
    Лайки:
    636
    Репутация:
    191
    Считай с samp.cfg, но там размер по другому рассчитывается.
     
    #1801
  2. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    646
    Лайки:
    123
    Репутация:
    56
    В desc будут все настройки шрифта, высота, качество, название и т.д.
    Код (C++):
    Выделить всё двойным кликом
    D3DXFONT_DESC desc;
    ...->D3DXFont->GetDesc(&desc);
     
    #1802
    Woofing Giraffe нравится это.
  3. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Код (C++):
    Выделить всё двойным кликом
    if (std::regex_match(s, matched, std::regex("SMS:\\s*(\\d*).*\\sОтправитель:\\s([\\w]*)\\s\\[т\\.\\d*]")))
    Крашит как доходит до сюда, что можно сделать?
     
    #1803
  4. Dark_Knight

    Dark_Knight РКН Тян на страже твоей анальной девственности.
    Друг

    Регистрация:
    18.03.13
    Сообщения:
    2.250
    Лайки:
    636
    Репутация:
    191
    try{
    if (std::regex_match(s, matched, std::regex("SMS:\\s*(\\d*).*\\sОтправитель:\\s([\\w]*)\\s\\[т\\.\\d*]")))
    }
    catch (const std::exception& e){
    SF->Log(e.what());
    }
     
    #1804
    QGate нравится это.
  5. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Такой вопрос, а как лучше сканить параметры при вводе команды, если я не знаю столько их? Мне нужно разделить игроков на команды с разными именами, к примеру ввожу /squad 100(радиус) 4(кол-во команд) name name name name, name - имя команды.
     
    #1805
    Последнее редактирование: 13 авг 2016
  6. Dark_Knight

    Dark_Knight РКН Тян на страже твоей анальной девственности.
    Друг

    Регистрация:
    18.03.13
    Сообщения:
    2.250
    Лайки:
    636
    Репутация:
    191
    Через 2 регулярки можно попробовать. Сначала сканиуре на радиус и количество. Что после количество записываешь в новую переменную, а потом уже это переменную сканируешь на количество команд.
     
    #1806
  7. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Как можно получить всех игроков в радиусе?
     
    #1807
  8. Dark_Knight

    Dark_Knight РКН Тян на страже твоей анальной девственности.
    Друг

    Регистрация:
    18.03.13
    Сообщения:
    2.250
    Лайки:
    636
    Репутация:
    191
    Перебором через пул игроков в стриме, а потом уже и на радиус проверять.
     
    #1808
  9. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Никак не могу найти этот пул.
     
    #1809
  10. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    376
    Лайки:
    45
    Репутация:
    14
    Код (Text):
    Выделить всё двойным кликом
    double GetDistantion(double x1, double y1, double z1, double x2, double y2, double z2)
    {
        return sqrt((pow(x1 - x2), 2) + pow(y1 - y2, 2) + pow(z1 - z2, 2));
    }


    for (int i = 0; i < 1001; i++)
    {
        if (SF->getSAMP()->getPlayers()->IsPlayerDefined(i, false) && GetDistantion(PEDSELF->GetPosition()->fX,
                PEDSELF->GetPosition()->fY,
                PEDSELF->GetPosition()->fZ,
                SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->fOnFootPos[0],
                SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->fOnFootPos[1],
                SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData->fOnFootPos[2]) <= 94.5)
        {
            // Если игрок находится в радиусе 94.5
        }
    }
    Вот тебе пример кода
     
    #1810
    Последнее редактирование: 15 авг 2016
  11. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Ну у меня примерно также.
    Код (C++):
    Выделить всё двойным кликом
    int plid = SF->getSAMP()->getPlayers()->sLocalPlayerID;
        float px = SF->getSAMP()->getPlayers()->pRemotePlayer[plid]->pPlayerData->fOnFootPos[0];
        float py = SF->getSAMP()->getPlayers()->pRemotePlayer[plid]->pPlayerData->fOnFootPos[1];
        float pz = SF->getSAMP()->getPlayers()->pRemotePlayer[plid]->pPlayerData->fOnFootPos[2];
        radius = radius*radius;
        for (int i = 0; i < 1000; i++)
        {
            if (i == plid) continue;
            stRemotePlayerData *pPlayerData = SF->getSAMP()->getPlayers()->pRemotePlayer[i]->pPlayerData;
            float rx = pPlayerData->fOnFootPos[0];
            float ry = pPlayerData->fOnFootPos[1];
            float rz = pPlayerData->fOnFootPos[2];
            float dist = pow((rx - px), 2) + pow((ry - py), 2) + pow((rz - pz), 2);
            if (radius >= dist)
            {
                ids.push_back(i);
            }
        }
    Про PEDSELF не знал)
     
    #1811
  12. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.561
    Лайки:
    1.520
    Репутация:
    414
    Проверь, что она возвращает. Возможно там уже есть на конце \
     
    #1812
  13. Tray228

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

    Регистрация:
    09.03.15
    Сообщения:
    224
    Лайки:
    29
    Репутация:
    11
    0, уже все исправил

    аналог можно? 009A: 2@ = create_actor_pedtype 4 model #MALE01 at 0.0 0.0 0.0
     
    #1813
    Последнее редактирование модератором: 17 авг 2016
    Gabriel__ нравится это.
  14. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Как повернуть персонажа?
     
    #1814
  15. san0

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

    Регистрация:
    15.12.13
    Сообщения:
    304
    Лайки:
    131
    Репутация:
    53
    PEDSELF->SetCurrentRotation
    в радианах
     
    Последние данные очков репутации:
    QGate: 1 Очко 18 авг 2016
    #1815
    QGate нравится это.
  16. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    Вай спасибо большое
     
    #1816
  17. AxewCool

    AxewCool Новичок

    Регистрация:
    19.08.16
    Сообщения:
    4
    Лайки:
    0
    Репутация:
    0
    А это единственный гайд по написанию SF плагинов?
     
    #1817
  18. Nintendo

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

    Регистрация:
    19.08.16
    Сообщения:
    9
    Лайки:
    0
    Репутация:
    0
    мб знает кто адрес анти-стана и килл листа.
     
    #1818
  19. Gabriel__

    Проверенный

    Регистрация:
    23.06.15
    Сообщения:
    428
    Лайки:
    151
    Репутация:
    48
    Вот антистан
    Код (C++):
    Выделить всё двойным кликом
    uint8_t* flags = &ainfo->pedFlags[12]; // ainfo - actor_info
    *flags |= 0x4; // включить
    *flags &= ~0x4; // выключить
     
    #1819
  20. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    А возможно ли скрыть серверный textdraw?
     
    #1820
  21. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    376
    Лайки:
    45
    Репутация:
    14
    Хукаешь показ текстдрава и возвращаешь false
     
    #1821
  22. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    а случаем нету примера хука?
     
    #1822
  23. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    376
    Лайки:
    45
    Репутация:
    14
    У меня есть пример, но он хукает только ID и текст.
    Код (C++):
    Выделить всё двойным кликом
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw)
    {
        WORD TID, TLen;
        char Text[128];
        params->bitStream->Read(TID);
        params->bitStream->IgnoreBits(504); // struct
        params->bitStream->Read(TLen);
        params->bitStream->Read(Text, TLen);
        params->bitStream->ResetReadPointer();
        Text[TLen] = '\0';
        SF->getSAMP()->getChat()->AddChatMessage(-1, "%i || %s", TID, Text);
    }
     
    #1823
    Последнее редактирование: 20 авг 2016
  24. QGate

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

    Регистрация:
    27.03.16
    Сообщения:
    78
    Лайки:
    0
    Репутация:
    0
    А еще вопросик, он срабатывает только тогда, когда появляется текстдрав или постоянно?
     
    #1824
  25. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    376
    Лайки:
    45
    Репутация:
    14
    Только когда появляется тексдрав. Есть еще RPC изменения текстдрава и скрытия, которые тоже можно хукнуть. Структура здесь: https://docs.google.com/spreadsheets/d/1iIxEk7yR8r7ZLGiSAL4ndtz_N1k0p3Wt7TE5bei6ztU/edit#gid=1
     
    #1825
  26. Ghost29

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

    Регистрация:
    08.09.13
    Сообщения:
    10
    Лайки:
    0
    Репутация:
    0
    Можно же сделать так

    Код (C++):
    Выделить всё двойным кликом
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw)
    {
        WORD TID, TLen;
        char Text[128];
        params->bitStream->Read(TID);
        params->bitStream->IgnoreBits(504); // struct
        params->bitStream->Read(TLen);
        params->bitStream->Read(Text, TLen);
        params->bitStream->ResetReadPointer();
        Text[TLen] = '\0';
        SF->getSAMP()->getChat()->AddChatMessage(-1, "%i || %s", TID, Text);
        return false;
    }
     
    #1826
  27. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    376
    Лайки:
    45
    Репутация:
    14
    Тогда ты показ всех текстдравов запретишь
     
    #1827
  28. iAmerican

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

    Регистрация:
    17.02.14
    Сообщения:
    290
    Лайки:
    59
    Репутация:
    11
    Код (PHP):
    Выделить всё двойным кликом
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowTextDraw)
    {
       WORD TID, TLen;
       char Text[128];
        params->bitStream->Read(TID);
        params->bitStream->IgnoreBits(504); // struct
        params->bitStream->Read(TLen);
        params->bitStream->Read(Text, TLen);
        params->bitStream->ResetReadPointer();
        Text[TLen] = '\0';
        SF->getSAMP()->getChat()->AddChatMessage(-1, "%i || %s", TID, Text);

         if (TID == 1) { // Если знаешь ид текстдрава
         return false;
         }
    }
     
    #1828
    Последнее редактирование: 21 авг 2016
  29. iAmerican

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

    Регистрация:
    17.02.14
    Сообщения:
    290
    Лайки:
    59
    Репутация:
    11
    Это я неправильно что - то делаю? или в СФ проблема?
    Код (C++):
    Выделить всё двойным кликом
    SF->Log("%d %d", SF->getSAMP()->getInfo()->pServerInfo->ulIP, SF->getSAMP()->getInfo()->pServerInfo->usPort);
    получаю:
    Код (Text):
    Выделить всё двойным кликом
    552 1
     
    #1829
  30. AWRage

    Проверенный

    Регистрация:
    10.07.15
    Сообщения:
    646
    Лайки:
    123
    Репутация:
    56
    IP это char *, вроде.
     
    #1830
  31. NarutoUA

    NarutoUA C++ Hokage developer
    BH Team

    Регистрация:
    26.05.13
    Сообщения:
    557
    Лайки:
    611
    Репутация:
    282
    Насчёт порта не знаю, но айпи надо преобразовать в строку (ulIP - число типа 0xAABBCCDD (AA,BB,CC,DD числа из диапазона [0..255] ну типа айпи 255.255.255.255)
     
    #1831
  32. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.561
    Лайки:
    1.520
    Репутация:
    414
    Хочешь сказать, что 552 это IP 0.0.2.40 ?
     
    #1832
  33. hnnssy

    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    1.735
    Лайки:
    1.058
    Репутация:
    179
    0x00000228
    da
     
    #1833
  34. iAmerican

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

    Регистрация:
    17.02.14
    Сообщения:
    290
    Лайки:
    59
    Репутация:
    11
    Нет
    Сложна че то. Добыл сам из памяти.
     
    #1834
  35. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.561
    Лайки:
    1.520
    Репутация:
    414
    В сф ващет есть указатель на строковый ip
     
    #1835
    AWRage нравится это.
  36. Nintendo

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

    Регистрация:
    19.08.16
    Сообщения:
    9
    Лайки:
    0
    Репутация:
    0
    как убрать звук крови
     
    #1836
  37. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    376
    Лайки:
    45
    Репутация:
    14
    Как сделать горизонтальную табуляцию? Например у меня в диалоге есть 2 строки
    Какой-то текст |
    Еще один текст |
    Как мне сделать чтобы обе | были наравне?
     
    #1837
  38. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.561
    Лайки:
    1.520
    Репутация:
    414
    выравнивай по пикселям при рендере
     
    #1838
  39. Woofing Giraffe

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

    Регистрация:
    14.06.15
    Сообщения:
    376
    Лайки:
    45
    Репутация:
    14
    У меня это в тексте диалога... Пытался пробелами, но получается криво, через \t тоже хрень

    --- Сообщение обновлено ---
    Не у кого идей нету?
     
    #1839
  40. MISTER_GONWIK

    Регистрация:
    09.03.13
    Сообщения:
    973
    Лайки:
    1.034
    Репутация:
    634
    только через \t
     
    #1840