Автор Тема: Написание плагина. Настройка проекта  (Прочитано 35638 раз)

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 232
  • Репутация: +15/-0
    • Просмотр профиля
Re: Написание плагина. Настройка проекта
« Ответ #300 : Октябрь 08, 2019, 12:43:05 pm »
Попробуй так:
Код: C++
  1. car->m_autoPilot.m_nCarMission = MISSION_NONE;

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 169
  • Репутация: +6/-0
    • Просмотр профиля
    • Mr
Re: Написание плагина. Настройка проекта
« Ответ #301 : Октябрь 13, 2019, 05:06:49 am »
Спасибо вам большое уважаемый kenking за Ваш ответ. Всё работает как надо. Наконец-то смог переписать миссию "Опека" из gta vice city long night. Теперь можно задать машины точный маршрут следования.
  Но всё же далеко от идеала.  Например, если  начать новую игру, то происходит вылет, пытаюсь  найти  событие "если  новая игра начата, ждать  пока  заставка кончится".  Так же ищу функция арестован игрок или нет.  Конечно,  много приходится костылить)))))))))))))
https://vk.com/gtabuilder?w=wall-56513456_522

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 232
  • Репутация: +15/-0
    • Просмотр профиля
Re: Написание плагина. Настройка проекта
« Ответ #302 : Октябрь 13, 2019, 09:48:54 am »
Так же ищу функция арестован игрок или нет. 
Код: C++
  1. CWorld::Players[CWorld::PlayerInFocus].m_nPlayerState == PLAYERSTATE_HASBEENARRESTED

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 169
  • Репутация: +6/-0
    • Просмотр профиля
    • Mr
Re: Написание плагина. Настройка проекта
« Ответ #303 : Октябрь 22, 2019, 02:06:25 pm »

Спасибо вам большое уважаемый kenking, Вы мне очень сильно помогли. Теперь смог написать полноценную миссию. https://vk.com/gtabuilder?w=wall-56513456_523

Всего 50 строк кода, стараюсь его сделать более полиморфизмым, чтобы писать более короче.
Есть класс  CPhysical от него наследуются классы CVehicle и CPed. Как можно узнать через  функцию, то  что мы в него передали, является классом, например, CVehicle.
Код: C++
  1. bool wait(unsigned int key) {
  2.         if (!KeyCheck::CheckWithDelay(key, 200)) { return true; }
  3.         else { return false; }
  4. }
  5. CVehicle* createcar(int modelID, float distance = 10.f) {// создать авто
  6.         char reference = 2;
  7.         CPed* player = FindPlayerPed();
  8.         CVector position = player->m_placement.pos;
  9.         position += player->m_placement.up * distance; // Вектор оси прямо от игрока умножаем на 10 метров и прибавляем к позиции.
  10.         CStreaming::RequestModel(modelID, 0); // ANGEL 166 ModelID
  11.         CStreaming::LoadAllRequestedModels(false);
  12.         CVehicle* v;
  13.         if (CModelInfo::IsCarModel(modelID))// если создаем авто.
  14.                 v = new CAutomobile(modelID, reference);
  15.         if (CModelInfo::IsBikeModel(modelID))
  16.                 v = new CBike(modelID, reference);
  17.         if (CModelInfo::IsBoatModel(modelID))
  18.                 v = new CBoat(modelID, reference);
  19.         CCarCtrl::JoinCarWithRoadSystem(v);// ии машина в системе.
  20.         v->m_nState = 4;
  21.         v->CVehicle::m_nCreatedBy = reference; // Если один то транспорт будет удален позже...
  22.         v->m_placement.SetRotate(0, 0, 3.5f);
  23.         v->m_placement.pos.x = position.x;
  24.         v->m_placement.pos.y = position.y;
  25.         v->m_placement.pos.z = position.z + v->GetDistanceFromCentreOfMassToBaseOfModel();
  26.         CWorld::Add(v);
  27.         return v;
  28. };
  29.  
  30. bool iscar(CPhysical* en) {
  31.         /*if (en->)
  32.         {
  33.  
  34.         }*/
  35. };
  36. class Test {
  37. public:
  38.    
  39.     Test() {
  40.                 Events::gameProcessEvent += [] {
  41.                         static int s;
  42.                         CPed* player = FindPlayerPed();// найти игрока
  43.                         if (!player) return;// проверка найден игрок
  44.                         KeyCheck::Update();
  45.                         if (KeyCheck::CheckWithDelay('N', 200)) {//если N нажата
  46.                                 if (wait('N')) return; {//если м нажата
  47.                
  48.                         CVehicle* car = createcar(MODEL_INFERNUS);
  49.                         if (iscar(car)) {
  50.                                 CMessages::AddMessageJumpQ(L"this is car", 10000, 0);
  51.                         }
  52.                                 }
  53.                         }
  54.                 };
  55.         }
  56. } test;
  57.  

Зачем это нужно? Чтобы на lua осуществить перегрузку функций, что упростить процесс написание скриптов.

Есть ли способ заставить ехать машину назад? Хочу реализовать дистанционное управление авто. Пытался через скриптовую команду не вышло.

Код: C++
  1.  
  2. Command<COMMAND_SET_CAR_TEMP_ACTION>(CPools::GetVehicleRef(car), 22,20000);
  3.  

Разбирал функции, вот, что вышло.

Код: C++
  1. car->FireFixedMachineGuns();//  починка авто от огневого оружия?
  2. //      car->ExtinguishCarFire();// выход из горящего авто?
  3. //      unsigned char c = car->m_nLastWeaponDamage;// последнее оружия наносящее урон авто?
  4. car->DoSunGlare();//авто едет в воду.
  5.  



Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 232
  • Репутация: +15/-0
    • Просмотр профиля
Re: Написание плагина. Настройка проекта
« Ответ #304 : Октябрь 23, 2019, 02:57:12 pm »
Цитировать
Как можно узнать через  функцию, то  что мы в него передали, является классом, например, CVehicle.
Код: C++
  1. #include "plugin.h"
  2. #include "extensions\KeyCheck.h"
  3. #include "CMessages.h"
  4. #include "CModelInfo.h"
  5.  
  6. using namespace plugin;
  7.  
  8. class Test {
  9. public:
  10.  
  11.     static void EntityType(CEntity *entity) {
  12.         if (CModelInfo::ms_modelInfoPtrs[entity->m_nModelIndex]->m_nType == MODEL_INFO_PED)
  13.             CMessages::AddMessageJumpQ(L"ped", 2000, 0);
  14.         if (CModelInfo::ms_modelInfoPtrs[entity->m_nModelIndex]->m_nType == MODEL_INFO_VEHICLE)
  15.             CMessages::AddMessageJumpQ(L"vehicle", 2000, 0);
  16.     }
  17.  
  18.     Test() {
  19.         Events::gameProcessEvent += [] {
  20.             KeyCheck::Update();
  21.             if (KeyCheck::CheckWithDelay('M', 2000)) {
  22.                 CPed *player = FindPlayerPed();
  23.                 if (player) {
  24.                     if (player->m_pVehicle && player->m_bInVehicle)
  25.                         EntityType(player->m_pVehicle);
  26.                     else
  27.                         EntityType(player);
  28.                 }
  29.             }
  30.         };
  31.     }
  32. } test;

Цитировать
Есть ли способ заставить ехать машину назад?
Код: C++
  1. vehicle->m_autoPilot.m_nAnimationId = TEMPACT_REVERSE;
  2. vehicle->m_autoPilot.m_nAnimationTime = 20000;
В транспорте должен быть водитель.

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 169
  • Репутация: +6/-0
    • Просмотр профиля
    • Mr
Re: Написание плагина. Настройка проекта
« Ответ #305 : Октябрь 26, 2019, 05:50:04 am »
Благодарю вас kenking за помощь. плагин скоро  будет допилен))))))))))) надеюсь на это.

что-то у  меня  не вышло, заставить авто ехать назад, может  какого-то флага не  хватает. происходит вылет.

Код: Text
  1.  
  2. bool wait(unsigned int key) {
  3.         if (!KeyCheck::CheckWithDelay(key, 200)) { return true; }
  4.         else { return false; }
  5. }
  6. CVehicle* createcar(int modelID, float distance = 10.f) {// создать авто
  7.         char reference = 2;
  8.         CPed* player = FindPlayerPed();
  9.         CVector position = player->m_placement.pos;
  10.         position += player->m_placement.up * distance; // Вектор оси прямо от игрока умножаем на 10 метров и прибавляем к позиции.
  11.         CStreaming::RequestModel(modelID, 0); // ANGEL 166 ModelID
  12.         CStreaming::LoadAllRequestedModels(false);
  13.         CVehicle* v;
  14.         if (CModelInfo::IsCarModel(modelID))// если создаем авто.
  15.                 v = new CAutomobile(modelID, reference);
  16.         if (CModelInfo::IsBikeModel(modelID))
  17.                 v = new CBike(modelID, reference);
  18.         if (CModelInfo::IsBoatModel(modelID))
  19.                 v = new CBoat(modelID, reference);
  20.         CCarCtrl::JoinCarWithRoadSystem(v);// ии машина в системе.
  21.         v->m_nState = 4;
  22.         v->CVehicle::m_nCreatedBy = reference; // Если один то транспорт будет удален позже...
  23.         v->m_placement.SetRotate(0, 0, 3.5f);
  24.         v->m_placement.pos.x = position.x;
  25.         v->m_placement.pos.y = position.y;
  26.         v->m_placement.pos.z = position.z + v->GetDistanceFromCentreOfMassToBaseOfModel();
  27.         CWorld::Add(v);
  28.         return v;
  29. };
  30.  
  31. bool iscar(CPhysical* en) {
  32.         if (CModelInfo::ms_modelInfoPtrs[en->m_nModelIndex]->m_nType == MODEL_INFO_PED) {
  33.                 CMessages::AddMessageJumpQ(L"ped", 2000, 0);
  34.                 return false;
  35.         }
  36.  
  37.         if (CModelInfo::ms_modelInfoPtrs[en->m_nModelIndex]->m_nType == MODEL_INFO_VEHICLE){
  38.                 CMessages::AddMessageJumpQ(L"vehicle", 2000, 0);
  39.                 return false;
  40.         }
  41. };
  42. class Test {
  43. public:
  44.    
  45.     Test() {
  46.                 Events::gameProcessEvent += [] {
  47.                         CVehicle* car = nullptr;
  48.                         CPed* player = FindPlayerPed();// найти игрока
  49.                         if (!player) return;// проверка найден игрок
  50.                         KeyCheck::Update();
  51.                         if (KeyCheck::CheckWithDelay('N', 200)) {//если N нажата
  52.                                 if (wait('N')) return; {//если N нажата
  53.  
  54.                                 CPed* ped = nullptr;
  55.                                  car = createcar(MODEL_INFERNUS);
  56.                                 Command<COMMAND_REQUEST_MODEL>(MODEL_ARMY);
  57.                                 Command<COMMAND_LOAD_ALL_MODELS_NOW>(false);
  58.                                 if (Command<COMMAND_HAS_MODEL_LOADED>(MODEL_ARMY)) {
  59.                                                 Command<COMMAND_CREATE_CHAR_INSIDE_CAR>(CPools::GetVehicleRef(car), 4, MODEL_ARMY, &ped);
  60.                                                 //car->m_autoPilot.m_nCarMission = MISSION_NONE;
  61.                                         }
  62.                                 }
  63.                         }
  64.                         if (KeyCheck::CheckWithDelay('M', 200)) {//если M нажата
  65.                                 CMessages::AddMessageJumpQ(L"this is car", 10000, 0);
  66.                                         car->m_autoPilot.m_nAnimationId = TEMPACT_REVERSE;
  67.                                         car->m_autoPilot.m_nAnimationTime = 20000;
  68.                         }
  69.                 };
  70.         }
  71. } test;
  72.  
  73.  

Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 232
  • Репутация: +15/-0
    • Просмотр профиля
Re: Написание плагина. Настройка проекта
« Ответ #306 : Октябрь 26, 2019, 08:21:23 am »
Код: C++
  1. #include "plugin.h"
  2.  
  3. using namespace plugin;
  4.  
  5. class Test {
  6. public:
  7.     Test() {
  8.         Events::gameProcessEvent += [] {
  9.             CPed *player = FindPlayerPed();
  10.             if (player) {
  11.                 for (int i = 0; i < CPools::ms_pVehiclePool->m_nSize; i++) {
  12.                     CVehicle *vehicle = CPools::ms_pVehiclePool->GetAt(i);
  13.                     if (vehicle && (DistanceBetweenPoints(player->GetPosition(), vehicle->GetPosition()) < 7.0f)) {
  14.                         vehicle->m_autoPilot.m_nAnimationId = TEMPACT_REVERSE;
  15.                         vehicle->m_autoPilot.m_nAnimationTime = 20000;
  16.                     }
  17.                 }
  18.             }
  19.         };
  20.     }
  21. } test;

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 169
  • Репутация: +6/-0
    • Просмотр профиля
    • Mr
Re: Написание плагина. Настройка проекта
« Ответ #307 : Ноябрь 04, 2019, 05:10:17 am »
спасибо большое за Ваш ответ kenking. удалось реализовать управление авто следующим образом.
Код: C++
  1. int setcaraction(lua_State* L) {// установить поведение авто.
  2.         try {
  3.                 if (LUA_TUSERDATA == lua_type(L, -3)) {// указатель на авто.
  4.                         if (LUA_TNUMBER == lua_type(L, -2) && LUA_TNUMBER == lua_type(L, -1)) {
  5.                                 CVehicle* car = (CVehicle*)Userdata::get<CVehicle>(L, 1, false);// получить указатель на авто.
  6.                                 int style = Stack<int>::get(L, 2);// если число.
  7.                                 unsigned int t = Stack<int>::get(L, 3);// если число.
  8.                                 unsigned int time = t * 10;
  9.  
  10.                                 for (int i = 0; i < CPools::ms_pVehiclePool->m_nSize; i++) {
  11.                                         CVehicle* vehicle = CPools::ms_pVehiclePool->GetAt(i);
  12.                                         if (vehicle == car) {
  13.  
  14.                                                 if (style == 0) {
  15.                                                         Command<COMMAND_SET_CAR_TEMP_ACTION>(CPools::GetVehicleRef(vehicle), TEMPACT_NONE, time);
  16.                                                         return 0;
  17.                                                 }
  18.                                                 if (style == 1) {
  19.                                                         Command<COMMAND_SET_CAR_TEMP_ACTION>(CPools::GetVehicleRef(vehicle), TEMPACT_WAIT, time);
  20.                                                         return 0;
  21.                                                 }                                                                                                                                                                      
  22. .........................
  23.  

пытался написать подобие миссии "Водитель" вышло криво https://vk.com/gtabuilder?w=wall-56513456_524
не хватает таймера  гонки.  Vital в видео показывал так https://www.youtube.com/watch?v=YzGGZM_KyjQ&t=1256s
но в vice city он не работает на cleo.
хотелось узнать как сделать таймер на sdk, чтобы потом перенести в lua.
можно создать тему lualoader? чтобы выкладывать туда наработки?
как этот раздел http://forum.gtabuilder.ru/index.php?board=28.0
Скажите, пожалуйста, как помочь сайту материально?

Код: C++
  1. {$CLEO}
  2. 0000:    
  3. const
  4.  TEXT_X = 608.0 //timer X position (0.0–640.0)
  5.  TEXT_Y = 136.0 //timer Y position (0.0–448.0)
  6.  TEXT_R = 144 //timer red colour (0–255)
  7.  TEXT_G = 96 //timer green colour (0–255)
  8.  TEXT_B = 16 //timer blue colour (0–255)
  9.  TEXT_A = 255 //timer alpha (0–255)
  10.  TEXT_FONT = 3 //0 (Gothic),1 (Standard),2 (Menu),3 (Pricedown)
  11.  LETTER_H = 2.3 //letter height
  12.  LETTER_W = 0.6 //letter width
  13.  OUTLINE_R = 0 //outline red colour (0–255)
  14.  OUTLINE_G = 0 //outline green colour (0–255)
  15.  OUTLINE_B = 0 //outline blue colour (0–255)
  16.  OUTLINE_A = 200 //outline alpha (0–255)
  17.  OUTLINE_W = 1 //outline width (1 & 2 are optimal values)
  18. end // const
  19.                            
  20. :1
  21. while true
  22. wait 0 ms  
  23. 03F0: enable_text_draw 1
  24. 03E4: set_text_draw_align_right 1
  25. 0340: set_text_draw_RGBA TEXT_R TEXT_G TEXT_B TEXT_A
  26. 0349: set_text_draw_font TEXT_FONT
  27. 033F: set_text_draw_letter_size LETTER_W LETTER_H
  28. 045B: draw_text_2numbers TEXT_X TEXT_Y GXT 'TIME' numbers 0 0 //~1~:~1~
  29.   03F0: enable_text_draw 0  
  30.   end
  31. jump @1
  32.  




Оффлайн kenking

  • Новичок
  • **
  • Сообщений: 232
  • Репутация: +15/-0
    • Просмотр профиля
Re: Написание плагина. Настройка проекта
« Ответ #308 : Ноябрь 04, 2019, 09:46:41 am »
Цитировать
можно создать тему lualoader? чтобы выкладывать туда наработки?
Форум для того и существует, чтобы научиться чему-то новому и показать свои разработки, которые могут пригодиться другим пользователям.

Цитировать
Скажите, пожалуйста, как помочь сайту материально?
Обратись к владельцу ресурса Sektor'у через личное сообщение.

Цитировать
хотелось узнать как сделать таймер на sdk, чтобы потом перенести в lua.
Таймер можно реализовать по-разному, зависит от конкретной ситуации, например, так:
Код: C++
  1. #include "plugin.h"
  2. #include "extensions\KeyCheck.h"
  3. #include "CTimer.h"
  4.  
  5. using namespace plugin;
  6.  
  7. class Test {
  8. public:
  9.     enum eTimerState { STATE_START, STATE_PLAY };
  10.     static eTimerState m_currentState;
  11.     static int m_min, m_sec, m_millisec;
  12.  
  13.     Test() {
  14.         Events::drawingEvent += [] {
  15.             switch (m_currentState) {
  16.             case STATE_START:
  17.                 KeyCheck::Update();
  18.                 if (KeyCheck::CheckWithDelay('M', 2000)) {
  19.                     m_min = 0; m_sec = 0; m_millisec = CTimer::m_snTimeInMilliseconds;
  20.                     m_currentState = STATE_PLAY;
  21.                 }
  22.                 break;
  23.             case STATE_PLAY:
  24.                 if (CTimer::m_snTimeInMilliseconds > (m_millisec + 1000)) {
  25.                     m_millisec = CTimer::m_snTimeInMilliseconds;
  26.                     if (m_sec < 59)
  27.                         m_sec++;
  28.                     else {
  29.                         m_sec = 0;
  30.                         if (m_min < 2)
  31.                             m_min++;
  32.                         else
  33.                             m_currentState = STATE_START;
  34.                     }
  35.                 }
  36.                 gamefont::Print({
  37.                     Format("min %02d : sec %02d", m_min, m_sec)
  38.                 }, 10, 10, 1, FONT_DEFAULT, 0.75f, 0.75f, color::White);
  39.                 break;
  40.             }
  41.         };
  42.     }
  43. } test;
  44.  
  45. Test::eTimerState Test::m_currentState = STATE_START;
  46. int Test::m_min = 0;
  47. int Test::m_sec = 0;
  48. int Test::m_millisec = 0;

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 169
  • Репутация: +6/-0
    • Просмотр профиля
    • Mr
Re: Написание плагина. Настройка проекта
« Ответ #309 : Ноябрь 06, 2019, 11:30:00 pm »
kenking спасибо очередной раз за Вашу неоцененную помощь,  таймер пока не перенес, хочется, чтобы нормально работало. тему создам, может прогресс ускорится. времени часто не хватает.

Оффлайн egor230

  • Новичок
  • **
  • Сообщений: 169
  • Репутация: +6/-0
    • Просмотр профиля
    • Mr
Re: Написание плагина. Настройка проекта
« Ответ #310 : Февраль 11, 2020, 12:31:27 pm »

Хотел написать миссию “Вечеринка” на чистом с++ sdk plugin, чтобы лучше понимать, как там все устроено. Какой принцип? Запускается из основного потока, независимый поток, чтобы можно было использовать задержки, аналог wait. Вся миссия находится в бесконечном цикле? пока флаг миссии не будет изменён. Но всё вылетает, как только игрок находится на маркере. С помощью тестов установил, что причина вылета происходит из-за проверки, находится ли на точке пешком в радиусе. Как исправить эту ситуацию? Подскажите, пожалуйста. Самое интересное, что все раньше работало нормально.

Ошибка


Код: Javascript
  1.  
  2.         // 1 этап.
  3.         while (getflagmission()) {this_thread::sleep_for(chrono::milliseconds(10));
  4.         if (ped_in_point(player, 95.4, -1136.2, 10.5, 3.0,3.0, 2.0) && !player->m_bInVehicle){// если в точке и не в авто.
  5.                 remove_sphere_and_blip(marker, sphere);// удалить маркер и сферу.
  6.  
Вот как выглядит вся миссия

Код: Javascript
  1. void mission(){ CPed* player = FindPlayerPed();// найти игрока
  2.         static int marker, sphere; //id маркера.
  3.         Command<COMMAND_SET_PLAYER_COORDINATES>(CWorld::PlayerInFocus, 118.0, -825.9, 10.5);
  4.         Command<COMMAND_SET_PLAYER_HEADING>(CWorld::PlayerInFocus, 54.0);
  5.         CVehicle* car = createcar(MODEL_ANGEL, 123.8, -810.9, 10.5, 320.0); // создать авто
  6.  
  7.         Command<COMMAND_DO_FADE>(1500, 1);// просветление.
  8.         CMessages::AddMessageJumpQ(L"~r~Go get some new threads from Rafael's clothes shop", 5000, 1);// вывести сообщение на экран.
  9.         create_blip_and_sphere(marker, sphere, 95.4, -1136.2, 10.5);// создать маркер на карте и создать сферу.
  10.  
  11.         // 1 этап.
  12.         while (getflagmission()) {this_thread::sleep_for(chrono::milliseconds(10));
  13.         if (ped_in_point(player, 95.4, -1136.2, 10.5, 3.0,3.0, 2.0) && !player->m_bInVehicle){// если в точке и не в авто.
  14.                 remove_sphere_and_blip(marker, sphere);// удалить маркер и сферу.
  15.                 Command<COMMAND_SWITCH_WIDESCREEN>(CWorld::PlayerInFocus, 1);// вкл/выкл широкий экран.
  16.                 Command<COMMAND_DO_FADE>(1500, 0);
  17.                 this_thread::sleep_for(chrono::milliseconds(2500));
  18.                 set_skin(player, "PLAYER9");
  19.                 Command<COMMAND_POINT_CAMERA_AT_POINT>(92.39, -1131.74, 16.724, 2);// переместить камеру в координатах.  
  20.                 Command<COMMAND_SET_FIXED_CAMERA_POSITION>(91.813, -1131.116, 17.251, 0.0, 0.0, 0.0); //уст камеру в координатах.
  21.                 Command<COMMAND_DO_FADE>(1500, 1);
  22.                 create_blip_and_sphere(marker, sphere, -251.2, -1360.8, 8.1);// создать маркер на карте и сферу.
  23.  
  24.                 this_thread::sleep_for(chrono::milliseconds(1500));
  25.                 Command<COMMAND_RESTORE_CAMERA>();
  26.                 Command<COMMAND_RESTORE_CAMERA_JUMPCUT>();      // восстановить камеру.
  27.                 Command<COMMAND_SWITCH_WIDESCREEN>(CWorld::PlayerInFocus, 0);// вкл/выкл широкий экран.
  28.                 CMessages::AddMessageJumpQ(L"~r~Get to then Colonel's boat", 5000, 1);// вывести сообщение на экран.
  29.                 break;}
  30.         };
  31.         CPed* ped;
  32.         // 2 этап.
  33.         while (getflagmission()) {this_thread::sleep_for(chrono::milliseconds(10));
  34.         if (ped_in_point(player, -251.2, -1360.8, 8.1, 3.0, 3.0, 2.0 && !player->m_bInVehicle)) {// если в точке и не в авто.
  35.                 remove_sphere_and_blip(marker, sphere);// удалить маркер и сферу.
  36.                 Command<COMMAND_DO_FADE>(1500, 0);
  37.                 this_thread::sleep_for(chrono::milliseconds(2500));
  38.                 Command<COMMAND_SET_PLAYER_COORDINATES>(CWorld::PlayerInFocus, -241.7, -1362.3, 8.1);
  39.                 Command<COMMAND_SET_PLAYER_HEADING>(CWorld::PlayerInFocus, 269.0);
  40.                 CMessages::AddMessageJumpQ(L"~r~Take the Colonel's daughter to the Pole Position club", 5000, 1);// вывести сообщение на экран., 3000, 1);// вывести сообщение на экран.
  41.                 create_blip_and_sphere(marker, sphere, 100.7, -1477.6, 10.1);// создать маркер на карте, создать сферу
  42.  
  43.                 ped = create_spec_ped("IGMERC", -241.7, -1360.3, 8.1); // создать спец педа.    
  44.                 ped->SetObjective(OBJECTIVE_SET_LEADER, player);
  45.                 Command<COMMAND_DO_FADE>(1500, 1);// просветление.
  46.                 break;  }
  47.         };
  48.  
  49.         // 3 этап.
  50.         while (getflagmission()) {      this_thread::sleep_for(chrono::milliseconds(10));
  51.         if (ped_in_point(player, 100.7, -1477.6, 10.1, 3.0, 3.0, 2.0)) {// если в точке и не в авто.
  52.                 remove_sphere_and_blip(marker, sphere);// удалить маркер и сферу.
  53.                 miss(100);      break;  }      
  54.         if (!ped->m_fHealth > 0.10f){ CMessages::AddMessageJumpQ(L"~r~Mercedes is dead", 5000, 1);// вывести сообщение на экран
  55.             fail_mission();     break;  }
  56.         };
  57.         ped->SetObjective(OBJECTIVE_LEAVE_CAR); // выйти из авто.
  58.         while(ped->m_bInVehicle) { this_thread::sleep_for(chrono::milliseconds(10)); };
  59.         destroy();// удалить маркер и сферу.
  60. };
  61.  

Вот исходник. Есть ли функция для проверки нахождения педа в точке с радиусом?