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

QGate

Новичок
78
0
C++:
if (std::regex_match(s, matched, std::regex("SMS:\\s*(\\d*).*\\sОтправитель:\\s([\\w]*)\\s\\[т\\.\\d*]")))
Крашит как доходит до сюда, что можно сделать?
 

Dark_Knight

Me, me and me.
Друг
4,085
2,114
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());
}
 
  • Нравится
Реакции: QGate

QGate

Новичок
78
0
Такой вопрос, а как лучше сканить параметры при вводе команды, если я не знаю столько их? Мне нужно разделить игроков на команды с разными именами, к примеру ввожу /squad 100(радиус) 4(кол-во команд) name name name name, name - имя команды.
 
Последнее редактирование:

Dark_Knight

Me, me and me.
Друг
4,085
2,114
Через 2 регулярки можно попробовать. Сначала сканиуре на радиус и количество. Что после количество записываешь в новую переменную, а потом уже это переменную сканируешь на количество команд.
 

Dark_Knight

Me, me and me.
Друг
4,085
2,114
Перебором через пул игроков в стриме, а потом уже и на радиус проверять.
 

Woofing Giraffe

Активный
402
49
Никак не могу найти этот пул.
Код:
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
    }
}
Вот тебе пример кода
 
Последнее редактирование:

QGate

Новичок
78
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 не знал)