Другое С/С++ Вопрос - Ответ

sc6ut

неизвестный
Модератор
382
1,075
std::regex не дружит с кириллицей
все норм там, у тебя мб с кодировкой проблемы. сколько юзал регулярки не встречался с такими проблемами.
Почему краш?

C++:
stTextLabel Text3D = SF->getSAMP()->getInfo()->pPools->pText3D->textLabel[i];

if (std::strstr(Text3D.pText, "Осталось")) { // Осталось 01:09
    char min, sec;
    std::sscanf(Text3D.pText, "Осталось %s:%s", &min, &sec);
    SF->Log("Minute: %s | Second: %s", min, sec);
}
возможно что-то из структур SAMP, Info, pPool, pText3D или сам текст Text3D.pText являтся nullptr, из-за чего случается краш. стоит проверить что все структуры и текст не являются nullptr. А вообще лучше использовать регулярки тут, т.к. твое условие может сработать и при "123 Осталось 123", а не только при том что тебе надо. (строить регулярки удобно можно на regex101.com) так же std::sscanf является небезопасной. вот тебе короткий пример по работе с регулярками.
C++:
constexpr auto pText = "Осталось 01:09";
std::cmatch cm;
std::regex re( R"(Осталось\s+(\d+)\:(\d+))", std::regex::icase );
if ( std::regex_match( pText, cm, re ) ) {
    auto minutes = cm[1].str();
    auto seconds = cm[2].str();
    std::cout << "Minutes: " << minutes << " | Seconds: " << seconds << std::endl;
}

// Выведет: "Minutes: 01 | Seconds: 09"
 

leak.

Известный
37
4
вот все на форуме пишут что в плагинах потоки лучше не юзать, самп похоже юзает, вызывает beginthread, так вот это может повлиять на игру при загрузке чего-либо?
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,482
самп похоже юзает,
Используется только ракнетом
так вот это может повлиять на игру при загрузке чего-либо?
 
  • Нравится
Реакции: leak.

EclipsedFlow

Известный
Проверенный
1,040
462
Получаю дистанцию от себя до 3Д текста, результат
1636049399903.png


C++:
float GetDistance(D3DXVECTOR3 target)
{
    D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
    return sqrt((player.x - target.x) * (player.x - target.x) + (player.y - target.y) * (player.y - target.y) + (player.z - target.z) * (player.z - target.z));
}

float distance = GetDistance(D3DXVECTOR3(Text3D.fPosition[0], Text3D.fPosition[1], Text3D.fPosition[2]));
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,958
Получаю дистанцию от себя до 3Д текста, результат Посмотреть вложение 120818

C++:
float GetDistance(D3DXVECTOR3 target)
{
    D3DXVECTOR3 player(PEDSELF->GetPosition()->fX, PEDSELF->GetPosition()->fY, PEDSELF->GetPosition()->fZ);
    return sqrt((player.x - target.x) * (player.x - target.x) + (player.y - target.y) * (player.y - target.y) + (player.z - target.z) * (player.z - target.z));
}

float distance = GetDistance(D3DXVECTOR3(Text3D.fPosition[0], Text3D.fPosition[1], Text3D.fPosition[2]));
Получаешь дробное число, выводишь целое.
 
  • Нравится
Реакции: EclipsedFlow

EclipsedFlow

Известный
Проверенный
1,040
462
Пишу бота для льна и хлопка, как только добегает до куста начинает кружиться вокруг его, как можно пофиксить?

Кто знающий в лс пожалуйста
 

S0Ft1k1337

Новичок
11
3
Подскажите, почему при переводе игровых координат в экранные, транспорт рендерится в нулевых координатах мира? Проблема именно в транспорте, т.к. при рендере персонажей все нормально

sa-mp-000.png
 

EclipsedFlow

Известный
Проверенный
1,040
462
Как вывести наименьшее число float из массива std::vector<float> distArray;
Пробовал через std::min_element(); но крашит, код ниже.
C++:
auto result = std::minmax_element(distArray.begin(), distArray.end());
float minValue = *result.first;
SF->Log("%f", minValue);
 

AdCKuY_DpO4uLa

Известный
287
477
Как вывести наименьшее число float из массива std::vector<float> distArray;
Пробовал через std::min_element(); но крашит, код ниже.
C++:
auto result = std::minmax_element(distArray.begin(), distArray.end());
float minValue = *result.first;
SF->Log("%f", minValue);
C++:
auto result = std::minmax_element(distArray.begin(), distArray.end(), [](float a, float b){return (a<b);});
float minValue = *result.first;
float maxValue = *result.second;
SF->Log("min: %f, max: %f", minValue, maxValue);
 
  • Нравится
Реакции: EclipsedFlow

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
C++:
auto result = std::minmax_element(distArray.begin(), distArray.end(), [](float a, float b){return (a<b);});
float minValue = *result.first;
float maxValue = *result.second;
SF->Log("min: %f, max: %f", minValue, maxValue);
C++:
auto [min, max] = std::minmax_element(distArray.begin(),
                                      distArray.end(),
                                      std::less<float>{});
 
  • Влюблен
  • Нравится
Реакции: legendabrn и EclipsedFlow