Начинающий
-
Автор темы
- #1
Вот в некоторых "приватках" наблюдаю такую функцию, как телепорт щита на Восходе.
Каждый мост своя кнопка. В итоге надо задействовать три кнопки.
А что мешает задействовать одну кнопку на все три моста?
Наверно знание!!!!
1. Получить имя карты.
2. Получить анимацию шита в руках.
3. Надо собрать позиции куда надо сделать ТП щита.
4. Получить свою позицию.
5. Сделать расчет, какой мост ближе всего.
6. Сделать ТП к нему.
Нам понадобиться:
1. Название карты.
2. Название своей анимации.
3. Нажатие одной кнопки.
Координаты трех мостов.
sTarget pDist;
std::vector<sTarget> vector_pDist;
Не забываем очищать наш вектор. vector_pDist.clear();
Каждый мост своя кнопка. В итоге надо задействовать три кнопки.
А что мешает задействовать одну кнопку на все три моста?
Наверно знание!!!!
1. Получить имя карты.
2. Получить анимацию шита в руках.
3. Надо собрать позиции куда надо сделать ТП щита.
4. Получить свою позицию.
5. Сделать расчет, какой мост ближе всего.
6. Сделать ТП к нему.
Нам понадобиться:
1. Название карты.
2. Название своей анимации.
3. Нажатие одной кнопки.
Координаты трех мостов.
C++:
static std::vector < Matrix34 > Bridge =
{
Matrix34(
-0.999781f, -0.020914f, 0.000000f, 675.947998f,
0.020914f, -0.999781f, 0.000000f, 707.303223f,
0.000000f, 0.000000f, 1.000000f, 46.875000f),
Matrix34(
-0.998709f, -0.050797f, 0.000000f, 857.857910f,
0.050797f, -0.998709f, 0.000000f, 1345.026367f,
0.000000f, 0.000000f, 1.000000f, 75.455124f),
Matrix34(
-0.040599f, 0.999175f, 0.000000f, 1810.050659f,
-0.999175f, -0.040599f, 0.000000f, 424.748077f,
-0.000000f, 0.000000f, 1.000000f, 95.510071f)
};
C++:
struct sTarget
{
FLOAT distance;
INT PlayerID;
IEntity* pEntity;
Matrix34 Pos;
bool operator<(sTarget obj)
{
return (distance < obj.distance);
}
};
std::vector<sTarget> vector_pDist;
Не забываем очищать наш вектор. vector_pDist.clear();
C++:
if (strstr(GetLevelName, "survival/japan/japan_base"))// Получаем название карты
{
if (strstr(GetAnimation, "_Carrible"))// Получаем имя щиты в руках
{
// рассчитываем расстояние между мостом и своим положение
// Записываем координаты трех мостов, начиная с индекса первого моста, который равен 0.
pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[0].GetPos());//Расчет расстояния ко мне от моста
pDist.PlayerID = 0;
pDist.Pos = Bridge[0];
vector_pDist.push_back(pDist);
pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[1].GetPos());//Расчет расстояния ко мне от моста
pDist.PlayerID = 1;
pDist.Pos = Bridge[1];
vector_pDist.push_back(pDist);
pDist.distance = CalcDistance(mEntity->GetPos(), Bridge[2].GetPos());//Расчет расстояния ко мне от моста
pDist.PlayerID = 2;
pDist.Pos = Bridge[2];
vector_pDist.push_back(pDist);
std::sort(vector_pDist.begin(), vector_pDist.end());
if (!vector_pDist.empty())
{
if (vector_pDist.front().distance < 9999.f)
{
//Определили который ближе к нам. К нему и делаем телепорт с щиотом вруках.
mEntity->SetWorldPos(vector_pDist.front().Pos);
}
}
}
}
Последнее редактирование: