SHARE
TWEET

sdk plugin gta vice city

egor230 Feb 17th, 2019 (edited) 464 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<funcs.h>
  3.  
  4. using namespace plugin;
  5. using namespace std;
  6.  
  7. struct star_thread {
  8.     static bool star_second_thread;// запускать второй поток.
  9.  
  10.     static void set(bool star_second_thread1) { star_second_thread = star_second_thread1; }
  11.  
  12.     static bool get() { return star_second_thread; };//
  13. };
  14. bool star_thread::star_second_thread;
  15.  
  16. struct star_coroutine {
  17.     static bool coroutine;// выкл/вкл корутин.
  18.  
  19.     static void set(bool coroutine1) { coroutine = coroutine1; }
  20.  
  21.     static bool get() { return coroutine; };//
  22. };
  23. bool star_coroutine::coroutine;
  24.  
  25. struct spite {// для текста на экране.
  26.     static bool printgame;  static string strprintgame;// вывод на экран.
  27.     static int abc_x; static int ord_y; static float spacing; static int font;
  28.     static float size_x; static float size_y; static int red; static int blue;
  29.     static int green;
  30.  
  31.     static bool switc; static CPed* p;
  32.     static void set(bool printgame1, string strprintgame1, int abc_x1, int ord_y1, float spacing1,
  33.         int font1, float size_x1, float size_y1, int red1, int blue1, int green1) { // Включить событие двери
  34.         printgame = printgame1; strprintgame = strprintgame1;// вывод на экран.
  35.         abc_x = abc_x1; ord_y = ord_y1; spacing = spacing1; font = font1; size_x = size_x1;
  36.         size_y = size_y1; red = red1; blue = blue1; green = green1;
  37.     }
  38.     static void active(bool switc1, CPed* p1) { bool switc = switc1;
  39.         CPed* p = p1;
  40.     }
  41.     static void draw() { //
  42.         if (printgame == true) {
  43.             gamefont::Print({ Format(strprintgame) }, abc_x, ord_y, spacing, font, size_x, size_y, CRGBA(red, blue, green));
  44.         }
  45.         if (switc == true) {    p->Attack();
  46.         } }//;
  47. };
  48. bool spite::switc; CPed* spite::p; bool spite::printgame;// флаг для вывода экран.
  49. string spite::strprintgame;// вывод на экран.
  50. int spite::abc_x; int spite::ord_y; float spite::spacing; int spite::font; float spite::size_x;
  51. float spite::size_y; int spite::red; int spite::blue; int spite::green;
  52.  
  53. struct corona {// структура для короны.
  54.     static bool switc;
  55.     static double abc_x; static double ord_y; static double pos_z; static double radius;
  56.     static int type; static int glow_flare; static int red; static int blue;
  57.     static int green;
  58.  
  59.     static void set(bool switc1, double abc_x1, double ord_y1, double pos_z1, double radius1,
  60.         int type1, int glow_flare1, int red1, int blue1, int green1) { // установить цвет короны.
  61.         switc = switc1;
  62.         abc_x = abc_x1; ord_y = ord_y1; pos_z = pos_z1; type = type1; radius = radius1; glow_flare = glow_flare1;
  63.         red = red1; blue = blue1; green = green1;
  64.     }
  65.     static void draw() {// вывод короны.
  66.         double x = abc_x;   double y = ord_y;   double z = pos_z;
  67.         double radius1 = radius; int type1 = type;  int glow_flare1 = glow_flare;
  68.         int red1 = red;  int blue1 = blue; int green1 = green;
  69.         if (switc == true) {
  70.             Command<COMMAND_DRAW_CORONA>(x, y, z, radius1, type1, glow_flare1, red1, green1, blue1);
  71.         }
  72.     }//;
  73. };
  74.  
  75. bool corona::switc; // флаг для вывода экран.
  76. double corona::abc_x; double corona::ord_y; double corona::pos_z; double corona::radius;
  77. int corona::type; int corona::glow_flare;
  78. int corona::red; int corona::blue; int corona::green; const float ACTION_TIME_STEP = 0.05f;
  79. const unsigned int TIME_FOR_KEYPRESS = 500;
  80. struct Doorse {
  81.     static int componentByDoorId[6]; // Таблица перевода eDoors в Id компонента
  82.     static int m_nLastTimeWhenAnyActionWasEnabled; // Последнее время запуска события
  83.     enum eDoorEventType { DOOR_EVENT_OPEN, DOOR_EVENT_CLOSE };// Тип события
  84.  
  85.     struct DoorEvent { // Класс события
  86.         bool m_active;  eDoorEventType m_type;  float m_openingState;
  87.         DoorEvent() { m_active = false; m_type = DOOR_EVENT_CLOSE; }
  88.     };
  89.  
  90.     struct VehicleDoors {
  91.         DoorEvent events[6]; // События для всех 6 дверей
  92.         VehicleDoors(CVehicle*) {}
  93.     };
  94. };
  95. struct DoorsExample {
  96.     static int componentByDoorId[6]; // Таблица перевода eDoors в Id компонента
  97.     static int m_nLastTimeWhenAnyActionWasEnabled; // Последнее время запуска события
  98.  
  99.     enum eDoorEventType { DOOR_EVENT_OPEN, DOOR_EVENT_CLOSE };// Тип события
  100.  
  101.     struct DoorEvent {
  102.         bool m_active;  eDoorEventType m_type;  float m_openingState;
  103.         DoorEvent() { m_active = false; m_type = DOOR_EVENT_CLOSE; }// Класс события
  104.     };
  105.  
  106.     struct VehicleDoors {
  107.         DoorEvent events[6]; // События для всех 6 дверей
  108.         VehicleDoors(CVehicle*) {}
  109.     };
  110.  
  111.     static VehicleExtendedData<VehicleDoors> VehDoors; // Наше расширение
  112.  
  113.     static void EnableDoorEvent(CAutomobile* automobile, eDoors doorId) { // Включить событие двери
  114.         if (automobile->IsComponentPresent(componentByDoorId[doorId])) {
  115.             CDamageManager* p;
  116.             if (p->GetDoorStatus(doorId) != DAMSTATE_NOTPRESENT) {
  117.                 DoorEvent& event = VehDoors.Get(automobile).events[doorId];
  118.                 if (event.m_type == DOOR_EVENT_OPEN)
  119.                     event.m_type = DOOR_EVENT_CLOSE; // Если последнее событие - открытие, то закрываем
  120.                 else
  121.                     event.m_type = DOOR_EVENT_OPEN; // Если последнее событие закрытие - то открываем
  122.                 event.m_active = true; // Включаем обработку
  123.                 m_nLastTimeWhenAnyActionWasEnabled = CTimer::m_snTimeInMilliseconds;
  124.             }
  125.         }
  126.     };
  127.  
  128.     static void ProcessDoors(CVehicle* vehicle) { // Обработка событий для конкретного авто
  129.         if (vehicle->m_nVehicleClass == VEHICLE_AUTOMOBILE) {
  130.             CAutomobile* automobile = reinterpret_cast<CAutomobile*>(vehicle);
  131.             for (unsigned int i = 0; i < 6; i++) { // Обрабатываем все события
  132.                 eDoors doorId = static_cast<eDoors>(i);
  133.                 DoorEvent& event = VehDoors.Get(automobile).events[doorId];
  134.                 if (event.m_active) { // Если событие активно
  135.                     if (event.m_type == DOOR_EVENT_OPEN) {
  136.                         event.m_openingState += ACTION_TIME_STEP;
  137.                         if (event.m_openingState > 1.0f) { // Если полностью открыли
  138.                             event.m_active = false; // Отключаем обработку
  139.                             automobile->OpenDoor(componentByDoorId[doorId], doorId, 1.0f); // Полностью открываем
  140.                             event.m_openingState = 1.0f;
  141.                         }
  142.                         else
  143.                             automobile->OpenDoor(componentByDoorId[doorId], doorId, event.m_openingState);
  144.                     }
  145.                     else {
  146.                         event.m_openingState -= ACTION_TIME_STEP;
  147.                         if (event.m_openingState < 0.0f) { // Если полностью открыли
  148.                             event.m_active = false; // Отключаем обработку
  149.                             automobile->OpenDoor(componentByDoorId[doorId], doorId, 0.0f); // Полностью открываем
  150.                             event.m_openingState = 0.0f;
  151.                         }
  152.                         else
  153.                             automobile->OpenDoor(componentByDoorId[doorId], doorId, event.m_openingState);
  154.                     }
  155.                 }
  156.             }
  157.         }
  158.     };
  159. };
  160.  
  161. int DoorsExample::componentByDoorId[6] = { CAR_BONNET, CAR_BOOT, CAR_DOOR_LF, CAR_DOOR_RF, CAR_DOOR_LR, CAR_DOOR_RR };
  162. int DoorsExample::m_nLastTimeWhenAnyActionWasEnabled = 0;
  163. VehicleExtendedData<DoorsExample::VehicleDoors> DoorsExample::VehDoors;
  164.  
  165. lua_KFunction cont(lua_State* L);
  166. int my_yield_with_res(lua_State* L, int res) {
  167.     return lua_yieldk(L, 0, lua_yield(L, res), cont(L));/* int lua_yieldk(lua_State * L, int res, lua_KContext ctx, lua_KFunction k);
  168.     Приостанавливает выполнение сопрограммы(поток).   Когда функция C вызывает lua_yieldk, работающая
  169.     сопрограмма приостанавливает свое выполнение и вызывает lua_resume, которая начинает возврат данной сопрограммы.
  170.     Параметр res - это число значений из стека, которые будут переданы в качестве результатов в lua_resume.
  171.     Когда сопрограмма снова возобновит выполнение, Lua вызовет заданную функцию продолжения k для продолжения выполнения
  172.     приостановленной C функции(смотрите §4.7). */
  173. };
  174.  
  175. int hookFunc(lua_State* L, lua_Debug* ar) { return my_yield_with_res(L, 0); }; // хук.
  176.  
  177. lua_KFunction cont(lua_State* L) {// функция продолжения.
  178.     lua_sethook(L, (lua_Hook)hookFunc, LUA_MASKCOUNT, 0);// отключить хук.
  179.     return 0;
  180. };
  181.  
  182. struct state {  lua_State* L = NULL;
  183.     state() {   lua_State* L1 = luaL_newstate();
  184.         luaL_openlibs(L1);      this->L = L1;   }
  185.     lua_State* get() {  this->L = L; return L;  }
  186.     //~state() {    lua_close(L);}
  187. };
  188.  
  189. int startscipt(string res, char* luafile, list<lua_State*>& luastate) {// запуска скрипта.
  190.     state Lua; lua_State* L = Lua.get();
  191.  
  192.     lua_gc(L, LUA_GCSTOP, 1);// отключить сборщик мусора.
  193.     char str123[255];
  194.     auto j = std::experimental::filesystem::current_path();
  195.     string c1 = j.string(); c1 = c1 + "\\?.lua"; strcpy(str123, c1.c_str());
  196.     lua_pushstring(L, str123);  lua_setglobal(L, "fullpath");
  197.     luaL_dostring(L, "package.path = fullpath");
  198.  
  199.     funs(L); // список функций.   
  200.     int status = luaL_loadfile(L, luafile);// проверка есть ли ошибки в файле.
  201.     //try {
  202.         if (status == 0) {// если нет ошибки в файле.   
  203.             lua_pushlightuserdata(L, L); // ключ в реестр указатель на L.
  204.             lua_pushstring(L, luafile); // отправить имя текущего lua файла в реестр.
  205.             lua_settable(L, LUA_REGISTRYINDEX); // установить ключа и значение таблице реестре.
  206.  
  207.             string er0 = "loaded " + res;// перед имени текущего lua файла добавить loaded.
  208.             char* x = strdup(er0.c_str());// преобразовать строку в char*.
  209.             lua_pcall(L, 0, 0, 0);// запуск файла.
  210.             lua_State* L1 = lua_newthread(L);// создать новый поток.
  211.             writelog(x);// запись резуальтат проверки на ошибки.
  212.             lua_getglobal(L, "main");
  213.             if (LUA_TFUNCTION == lua_type(L, -1)) {
  214.                 luastate.push_back(L);// добавить указатель на lua состояния в list.
  215.                 bool coroutine = true; star_coroutine::set(coroutine);
  216.                 lua_sethook(L, (lua_Hook)hookFunc, LUA_MASKCOUNT, 0);// отключить хук.
  217.                 lua_resume(L, NULL, 0); //Основной поток.
  218.                 if (!star_coroutine::get())// если нельзя запустить поток.
  219.                 {
  220.                     return 0;
  221.                 }
  222.                 else {
  223.                     int args = lua_gettop(L);// получить аргументы для второго потока.
  224.                     lua_xmove(L, L1, args); args--; reversestack(L1); //инвертировать содержимое стека.
  225.                     while (LUA_OK != lua_status(L)) {// Пока основной поток не закончен.
  226.                         this_thread::sleep_for(chrono::milliseconds(1)); // задержка.
  227.                         if (LUA_TFUNCTION == lua_type(L1, -1) && LUA_YIELD == lua_status(L) && star_coroutine::get()) {
  228.  
  229.                             for (int i = 1; i <= args; i++) { lua_pushvalue(L1, i); }// расстановка аргументов для вызова функции.
  230.                             lua_resume(L1, L, args);
  231.                         }
  232.                         if (LUA_YIELD == lua_status(L1)) {
  233.                             lua_sethook(L, (lua_Hook)hookFunc, LUA_MASKCOUNT, 800); //вызов функции с заданной паузой.
  234.                             lua_resume(L, L1, 0);// возобновить основной поток.
  235.                         }
  236.                         if (LUA_OK == lua_status(L1)) {// если второй поток завершен.      
  237.                             lua_sethook(L, (lua_Hook)hookFunc, LUA_MASKCOUNT, 0);// отключить хук.
  238.                             lua_resume(L, NULL, 0);
  239.                         }
  240.                         if (LUA_YIELD == lua_status(L) || LUA_YIELD == lua_status(L1) && (!star_coroutine::get())) {
  241.                             break;
  242.         }   }   }   }   else { /*lua_close(L);*/ }
  243.         }
  244.         else {  string er1 = lua_tostring(L, -1); string er0 = "could not load " + er1;
  245.             char* x = strdup(er1.c_str());  //throw x;  //} }   catch (const char* x) {
  246.     writelog(x);}// записать ошибку в файл.
  247.     return 0;
  248. };
  249.  
  250. void search() {// поиск всех lua файлов для запуска.
  251.     dellod();
  252.     for (auto const& de : std::experimental::filesystem::recursive_directory_iterator{
  253.         std::experimental::filesystem::current_path() / "lualoader" }) { // папка для поиска
  254.         if (de.path().extension() == ".lua" || de.path().extension() == ".LUA") {
  255.             string res = de.path().string();// перевод имя файла в строку.
  256.             char* luafile = strdup(res.c_str());// Текущий lua файл.
  257.             listfile.push_back(luafile);// добавить текущий lua файл в list.
  258.  
  259.             //mtx.lock();
  260.             std::thread(startscipt, res, luafile, std::ref(luastate)).detach();// независимым поток для запуска lua файла.
  261.            
  262.             //mtx.unlock();
  263.         }
  264.     };
  265. };
  266. int start_lualoder() { //search(); // найти все lua файлы. меню 32,    старт новой игры 1
  267.     std::thread(search).detach();
  268.     std::thread(getkeyenvent).detach();// считывания символов клавиатуры.
  269.  
  270.     // Новая игра 7     загрузка 8 точно загрузка 10 не в меню 12.
  271.     // 8, 1, 10 загрузка. // 1, 7   новая игра.
  272.     CMenuManager& MenuManager = *(CMenuManager*)0x869630;
  273.     bool ex = false;
  274.     while (!ex ) {  this_thread::sleep_for(chrono::milliseconds(1));
  275.         int m = MenuManager.m_nCurrentPage; //|| m == 7 || m == 10
  276.         if (KeyPressed(VK_CONTROL) || (m == 10) || (m == 7)) {// перезагрузка скрипта.   //writelog1(200);
  277.             while (true) {  //writelog1(MenuManager.m_nCurrentPage);
  278.                 if (KeyPressed(VK_CONTROL) || MenuManager.m_nCurrentPage == 12) {//writelog1(200);
  279.                 ex = true; break;           }
  280.                 }
  281.             bool coroutine = false;
  282.             star_coroutine::set(coroutine);
  283.             unsigned int& OnAMissionFlag = *(unsigned int*)0x978748;
  284.             CTheScripts::ScriptSpace[OnAMissionFlag] = coroutine;
  285.             for (auto L : luastate) {   lua_sethook(L, (lua_Hook)hookFunc, LUA_MASKCOUNT, 10);// отключить хук.
  286.                 while ((LUA_YIELD == lua_status(L)) || (LUA_OK != lua_status(L))) { this_thread::sleep_for(chrono::milliseconds(1));}
  287.                 destroy(L);// удалить все объекты.
  288.                 lua_gc(L, LUA_GCCOLLECT, 100); // включить сборку мусора.
  289.             };
  290.             break;
  291.         };
  292.     }; for (auto L : luastate) { luastate.pop_front(); };
  293.     cleanstl();
  294.     if (KeyPressed(VK_CONTROL)) {   CMessages::AddMessageJumpQ(L"Script reloaded", 2000, 3);
  295.  
  296.         while (true) {  this_thread::sleep_for(chrono::milliseconds(1));
  297.             if (!KeyPressed(VK_CONTROL)) {  bool k = false; star_thread::set(k); // флаг, что можно запускать новый поток.
  298.                 break;      }
  299.         };
  300.     }
  301.     else {  iters = 0;  std::thread(timerstar).detach();  //bool k = false; star_thread::set(k);
  302.         return 0;
  303.     };
  304.  
  305.     return 0;
  306. };
  307.  
  308. class Message {//имя класса.
  309.    public: Message() {  Events::gameProcessEvent += [] {//обработчик событий игры.
  310.     CPed* player = FindPlayerPed();// найти игрока.
  311.     Events::gameProcessEvent += spite::draw; Events::gameProcessEvent += corona::draw; Events::vehicleRenderEvent += DoorsExample::ProcessDoors; // Тут обрабатываем события, а также выключаем их
  312.         int number_save_slot = patch::GetUShort(0x9B5F08);
  313.         int gtg = patch::GetUShort(0x974B2C);// глобальный таймер.
  314.         if (number_save_slot == 9 && !star_thread::get()) {
  315.             if ((Command<COMMAND_CAN_PLAYER_START_MISSION>(CWorld::PlayerInFocus)) && gtg < 1000) { // новая игра
  316.                 bool k = true; // флаг, что уже запущен поток.
  317.                 star_thread::set(k);    //thread th(second); th.detach();// независимый поток.    
  318.                 std::thread(start_lualoder).detach();
  319.             }
  320.  
  321.             else {// загруженая
  322.                 if ( gtg > 1000) {  bool k = true; // флаг, что уже запущен поток.
  323.                     star_thread::set(k);       
  324.                     std::thread(start_lualoder).detach();   }// независимый поток.
  325.         }   }
  326.  
  327.         if (iters > 4294967200) { iters = 300; }
  328.         iters++;
  329.     };
  330. }
  331.         ~Message() {    }
  332. } message;
  333.  
  334. void funs(lua_State* L) {// список функций.
  335.  
  336.     //set_path_to_module(L); // уст путь к модулю.
  337.     lua_register(L, "findplayer", findplayer); // 1 возвращает указатель педа.
  338.     lua_register(L, "setpedhealth", setpedhealth); // 2 установить здоровье педу.
  339.     lua_register(L, "setarmour", setarmour); // 3 установить броню педу.
  340.     lua_register(L, "wait", wait); // 4 задержка.
  341.     lua_register(L, "getpedhealth", getpedhealth); // 5 получить здоровье педа.
  342.     lua_register(L, "getpedangle", getpedangle); // 6 получить угол педа.
  343.     lua_register(L, "worldcoord", worldcoord); // 7 Перевод в мировые координаты.
  344.     lua_register(L, "getpedcoordinates_on_x", getpedcoordinates_on_x); // 8 Получить мировую координату по x для педа.
  345.     lua_register(L, "getpedcoordinates_on_y", getpedcoordinates_on_y); // 9 Получить мировую координату по y для педа.
  346.     lua_register(L, "setarmour", setarmour); // 10 получить броню.
  347.     lua_register(L, "givemoney", givemoney); // 11 дать денег педу.
  348.     lua_register(L, "keypress", keypress); // 12 проверка на нажатие клавиш.
  349.     lua_register(L, "printmessage", printmessage); // 13 вывод сообщение.
  350.     lua_register(L, "getpedcoordes", getpedcoordes); // 14 получить координаты педа.
  351.     lua_register(L, "randomfindped", randomfindped); // 15 получить рандомного педа.
  352.     lua_register(L, "incar", incar); // 16  проверка пед в авто?.
  353.     lua_register(L, "loadmodel", loadmodel); // 17 загрузить модель.
  354.     lua_register(L, "availablemodel", availablemodel); // 18 проверка на загруженность модели.
  355.     lua_register(L, "releasemodel", releasemodel); // 19 удалить модель из памяти.
  356.     lua_register(L, "createcar", createcar); // 20 создать авто на координатах на координатах.
  357.     lua_register(L, "createped", createped); // 21 создать педа на координатах.
  358.     lua_register(L, "load_requested_models", load_requested_models); // 22 поставить модель на загрузить вне очереди.
  359.     lua_register(L, "giveweaponped", giveweaponped); // 23 дать педу оружие.
  360.     lua_register(L, "ped_sprint_to_point", ped_sprint_to_point); // 24 пед делает спринт к точке.
  361.     lua_register(L, "ped_walk_to_point", ped_walk_to_point); // 25 Пед идет к точке.
  362.     lua_register(L, "kill_ped_on_foot", kill_ped_on_foot); // 26 убить педа пешком.
  363.     lua_register(L, "kill_char_any_means", kill_char_any_means); // 27 убить педа любыми средствами.
  364.     lua_register(L, "ped_aim_at_ped", ped_aim_at_ped); // 28 пед целиться в педе.
  365.     lua_register(L, "is_current_weapon_ped", is_current_weapon_ped); // 29 проверить текущее оружие.
  366.     lua_register(L, "create_marker_actor", create_marker_actor); // 30 создать маркер над педом.
  367.     lua_register(L, "removemarker", removemarker); // 31 удалить маркер.
  368.     lua_register(L, "setpedcoordes", setpedcoordes); // 32 установить координаты для педа.
  369.     lua_register(L, "remove_car", remove_car); // 33 удалить авто.
  370.     lua_register(L, "car_in_water", car_in_water); // 34 проверка авто в воде.
  371.     lua_register(L, "set_wanted", set_wanted); // 35 уcтановить уровень розыска.
  372.     lua_register(L, "ped_in_point_in_radius", ped_in_point_in_radius); // 36 проверить находится пед в координатах с радиусом.
  373.     lua_register(L, "create_sphere", create_sphere); // 37 создать сферу.
  374.     lua_register(L, "clear_wanted", clear_wanted); // 38 убрать уровень розыска.
  375.     lua_register(L, "getcarhealth", getcarhealth); // 39 получить кол-во здоровья авто.
  376.     lua_register(L, "setcarhealth", setcarhealth); // 40 установить здоровье авто.
  377.     lua_register(L, "remove_sphere", remove_sphere); // 41 удалить сферу.
  378.     lua_register(L, "remove_ped", remove_ped); // 42 удалить педа.
  379.     lua_register(L, "kill_ped", kill_ped); // 43 убить педа.
  380.     lua_register(L, "getflagmission", getflagmission); // 44 проверка флага миссии.
  381.     lua_register(L, "setflagmission", setflagmission); // 45 уcтановить флага миссии.
  382.     lua_register(L, "showtext", showtext); // 46 Вывод особого текста на экран.
  383.     lua_register(L, "remove_blip", remove_blip); // 47 удалить метку с карты.
  384.     lua_register(L, "createblip", createblip); // 48 создать метку карте.
  385.     lua_register(L, "play_sound", play_sound); // 49 проиграть мелодию.
  386.     lua_register(L, "isped", isped); // 50 проверка это пед?
  387.     lua_register(L, "isvehicle", isvehicle); // 51 проверка это транспорт?.
  388.     lua_register(L, "cardrive", cardrive); // 52 авто едет в точку.
  389.     lua_register(L, "setcarspeed", setcarspeed); // 53 установить скорость авто.
  390.     lua_register(L, "opendoorcar", opendoorcar); // 54 открыть дверь авто.
  391.     lua_register(L, "randomfindcar", randomfindcar); // 55 Найти случайное авто.
  392.     lua_register(L, "getcarcoordes", getcarcoordes); // 56 получить координаты авто.
  393.     lua_register(L, "create_money_pickup", create_money_pickup); // 57 создать пачку денег.
  394.     lua_register(L, "getcarcoordinates_on_x", getcarcoordinates_on_x); // 58 Получить мировую координату по x для авто.
  395.     lua_register(L, "getcarcoordinates_on_y", getcarcoordinates_on_y); // 59 Получить мировую координату по y для авто.
  396.     lua_register(L, "car_in_point_in_radius", car_in_point_in_radius); // 60 проверить находится авто в координатах с радиусом.
  397.     lua_register(L, "setdrivingstyle", setdrivingstyle); // 61 установить стиль езды авто.
  398.     lua_register(L, "findped", findped); // 62 найти педа в пуле.
  399.     lua_register(L, "create_weapon_pickup", create_weapon_pickup); // 63 создать пикап оружие.
  400.     lua_register(L, "create_pickup", create_pickup); // 64 создать пикап.
  401.     lua_register(L, "remove_pickup", remove_pickup); // 65 удалить пикап.
  402.     lua_register(L, "picked_up", picked_up); // 66 проверка пикап подобран.
  403.     lua_register(L, "play_voice", play_voice); // 67 Проиграть голос.
  404.     lua_register(L, "fade", fade); // 68 затенение, просветления.
  405.     lua_register(L, "draw_corona", draw_corona); // 69 создать корону(чекпойнт);.
  406.     lua_register(L, "sound_coordinate", sound_coordinate); // 70 Проиграть звук в координатах
  407.     lua_register(L, "show_text_styled", show_text_styled); // 71 Вывести игровой текст.
  408.     lua_register(L, "setcarangle", setcarangle); // 72 установить угол авто.
  409.     lua_register(L, "createmarker", createmarker); // 73 создать маркер на карте.
  410.     lua_register(L, "setsizemarker", setsizemarker); // 74 установить размер маркера.
  411.     lua_register(L, "cheat", checkcheat); // 75 чит код введен.
  412.     lua_register(L, "destroy", destroy); // 76 удаления объектов из памяти при перезагрузки скрипта.
  413.     lua_register(L, "yield", my_yield); // 77 приостановить выполнение скрипта.
  414.     lua_register(L, "setcardrive", setcardrive); // 78 установить водителя для авто.
  415.     lua_register(L, "setcarpassenger", setcarpassenger); // 79 установить пассажира для авто.
  416.     lua_register(L, "setcarfirstcolor", setcarfirstcolor); // 80 установить первый цвет авто.
  417.     lua_register(L, "setcarseconscolor", setcarseconscolor); // 81 установить второй цвет авто.
  418.     lua_register(L, "set_traffic", set_traffic); // 82 установить плотномть трафика транспорта.
  419.     lua_register(L, "create_marker_car", create_marker_car); // 83 создать маркер над авто.
  420.     lua_register(L, "car_explode", car_explode); // 84 взрывать авто.
  421.     lua_register(L, "is_car_stopped", is_car_stopped); // 85 авто остановилось.
  422.     lua_register(L, "create_explosion", create_explosion); // 86 Создать взрыв на координатах.
  423.     lua_register(L, "set_status_engine", set_status_engine); // 87 установить состояние двигателя авто.
  424.     lua_register(L, "player_defined", player_defined); // 88 пед существует.
  425.     lua_register(L, "setclock", setclock); // 89  задать время.
  426.     lua_register(L, "arrested", arrested); // 90 пед арестован?
  427.     lua_register(L, "lockstatus", lockstatus); // 91 статус двери авто.
  428.     lua_register(L, "create_marker_pickup", create_marker_pickup); // 92 создать маркер над пикапом.
  429.     lua_register(L, "create_obj", createobj); // 93 создать объект.
  430.     lua_register(L, "remove_obj", remove_obj); // 94 удалить объект.
  431.     lua_register(L, "setobjоcoordes", setobjоcoordes); // 95 установить координаты для объект.
  432.     lua_register(L, "getobjcoordes", getobjcoordes); // 96 получить координаты объекта.
  433.     lua_register(L, "create_marker_obj", create_marker_obj); // 97 создать маркер над объектом.
  434.     lua_register(L, "isobject", isobject); // 98 проверка это объект?.
  435.     lua_register(L, "setpedangle", setpedangle); // 99 установить угол педа.
  436.     lua_register(L, "setcaraction", setcaraction); // 100 установить поведение авто.
  437.     lua_register(L, "move_obj", move_obj); // 101 двигать объект.
  438.     lua_register(L, "move_rotate", move_rotate); // 102 вращать объект.
  439.     lua_register(L, "getobjangle", getobjangle); // 103 получить угол объекта.
  440.     lua_register(L, "findcar", findcar); // 104 Найти авто.
  441.     lua_register(L, "setcartask", setcartask); // 105 установить задачу авто.
  442.     lua_register(L, "setcarcoordes", setcarcoordes); // 106 установить координаты авто.
  443.     lua_register(L, "is_car_stuck", is_car_stuck); // 107 03CE: car 12@ stuck если машина застряла.
  444.     lua_register(L, "is_car_upsidedown", is_car_upsidedown); // 108 01F4: car 12@ flipped если машина перевернута.
  445.     lua_register(L, "is_car_upright", is_car_upright); // 109 020D: car 12@ flipped если указанный автомобиль перевернут.
  446.     lua_register(L, "find_road_for_car", find_road_for_car); // 110 найти дорогу.
  447.     lua_register(L, "setcarstrong", setcarstrong); // 111 сделать авто устойчивым.
  448.     lua_register(L, "putincar", putincar); // 112 переместить педа в авто.
  449.     lua_register(L, "print_front", game_font_print); // 113 вывести особенный игровой текст.
  450.     lua_register(L, "star_timer", star_timer); // 114 включить таймер.
  451.     lua_register(L, "stop_timer", stop_timer); // 115 остановить таймер.
  452.     lua_register(L, "timer_donw", timer_donw); // 116  таймер на уменьшение.
  453.     lua_register(L, "ped_attack_car", ped_attack_car); // 117 пед атакует авто.
  454.     lua_register(L, "ped_frozen", ped_frozen);  // 118 заморозить игpока.
  455.     lua_register(L, "hold_cellphone", hold_cellphone); // 119 поднять телефон.
  456.     lua_register(L, "car_lastweapondamage", car_lastweapondamage); // 120 номер оружие, которое нанесло урон авто.
  457.     lua_register(L, "car_currentgear", car_currentgear); // 121 текущая передача авто.
  458.     lua_register(L, "getcar_model", getcar_model); // 122 получить модель авто.
  459.     lua_register(L, "setcarsiren", setcarsiren); // 123 установить сирену для авто.
  460.     lua_register(L, "ped_car_as_driver", ped_car_as_driver); // 124 пед садится в авто как водитель.
  461.     lua_register(L, "ped_car_as_passenger", ped_car_as_passenger); // 125 пед садится в авто как пассажир.
  462.     lua_register(L, "ped_atack", ped_atack); // 126 пед бьет.
  463.     lua_register(L, "show_text_gtx", show_text_gtx); // 127 вывести игровой текст.
  464.     lua_register(L, "camera_at_point", camera_at_point); // 128 переместить камеру в координатах.
  465.     lua_register(L, "restore_camera", restore_camera); // 129 восстановить камеру.
  466.     lua_register(L, "is_wanted_level", is_wanted_level); // 130 проверить уровень розыска.
  467.     lua_register(L, "set_camera_position", set_camera_position); // 131 установить камеру в координатах.
  468.     lua_register(L, "flash_hud", flash_hud); // 132 Мигание элементов HUD.
  469.     lua_register(L, "set_radio", set_radio); // 133 установить радио.           
  470.     lua_register(L, "set_car_tires", set_car_tires); // 134 проколоть шину.
  471.     lua_register(L, "create_spec_ped", create_spec_ped); // 135 создать спец педа.
  472.     lua_register(L, "set_wheel_status", set_wheel_status); // 136 установить состояния шин авто.
  473.     lua_register(L, "set_skin", set_skin); // 137 установить скин педа.
  474.     lua_register(L, "remove_spec_ped", remove_spec_ped); // 138 удалить спец педа.
  475.     lua_register(L, "go_to_route", go_to_route); // 139 установить маршрут авто.
  476.     lua_register(L, "add_stuck_car_check", add_stuck_car_check); // 140 условия для того, чтобы авто считалась застрявшей.
  477.     lua_register(L, "load_scene", load_scene); // 141 загрузить модели на координатах заранее.
  478.     lua_register(L, "ped_anim", ped_anim); // 142 анимация.
  479.     lua_register(L, "del_anim", del_anim); // 143 удалить анимацию.
  480.     lua_register(L, "get_current_name_luascript", get_current_name_luascript); // 144 получить имя текущего lua файла.
  481.     lua_register(L, "star_mission_marker", star_mission_marker); // 145 создать маркер для миссии.
  482.     lua_register(L, "getobjcoordinates_on_x", getobjcoordinates_on_x); // 146 Получить мировую координату по x для объекта.
  483.     lua_register(L, "getobjcoordinates_on_y", getobjcoordinates_on_y); // 147 Получить мировую координату по y для объекта.
  484.     lua_register(L, "set_widescreen", set_widescreen); // вк// 148 вкл/выкл широкий экран.
  485.     lua_register(L, "follow_the_leader", follow_the_leader); //149 //01DE// 01DE / 01DF следовать за лидером.
  486.     lua_register(L, "getcarspeed", getcarspeed); // 150 получить скорость авто.
  487.     lua_register(L, "newthread", newthread); // 151 запуск функции в новом потоке.    
  488.     lua_register(L, "Getcameracoordes", Getcameracoordes); // 152 получить координаты камеры.
  489.  
  490.     lua_register(L, "remove_all_weapons_ped", remove_all_weapons_ped); // 154 удалить все оружия педа.
  491.     lua_register(L, "Getweaponslot", Getweaponslot); // 155 получить номер слота по типу оружия.
  492.     lua_register(L, "get_damage_weapon_ped", get_damage_weapon_ped); // 156 получить последний урон педа от оружия.
  493.     lua_register(L, "get_aimgun_ped", get_aimgun_ped);// 157 получить показатель цели педа.
  494.     lua_register(L, "get_ammo_weapon_ped", get_ammo_weapon_ped);// 158 получить кол-во патроны текущего оружие педа.
  495.     lua_register(L, "createfireonped", createfireonped);// 159 создать огонь на педе.
  496.     lua_register(L, "createfireoncar", createfireoncar);// 160 создать огонь на авто.
  497.     lua_register(L, "createfireoncords", createfireoncords);// 161 создать огонь на координатах.
  498.     lua_register(L, "remove_fire", remove_fire); // 162 удалить огонь.
  499.     lua_register(L, "ped_shutdown", ped_shutdown);
  500.     lua_register(L, "is_ped_damage_from_ped", is_ped_damage_from_ped); // 164 получил ли пед урон от педа.
  501.     lua_register(L, "is_targetting_in_ped", is_targetting_in_ped); // 165 игрок целиться в педа.
  502.     lua_register(L, "Remove_weapon_model", Remove_weapon_model);// 166 удалить оружие у педа.
  503.     lua_register(L, "Createped", Createped);// 167 макрос создать педа.
  504.     lua_register(L, "Createcar", Createcar);// 168 макрос создать авто на координатах.
  505.     lua_register(L, "Giveweaponped", Giveweaponped); // 169 макрос дать педу оружие и патроны.
  506.     lua_register(L, "Opendoorcar", Opendoorcar); // 170 Макрос открыть все двери авто.
  507.     lua_register(L, "Create_weapon_pickup", Create_weapon_pickup); // 171 макрос создать пикап оружие.
  508.     lua_register(L, "Create_pickup", Create_pickup); // 172 макрос создать пикап.
  509.     lua_register(L, "Get_model_and_type_current_weapon_ped", Get_model_and_type_current_weapon_ped); // 173 макрос получить модель и тип текущего оружие педа.
  510.     lua_register(L, "is_ped_in_car", is_ped_in_car); // 174 игрок в авто?
  511.     lua_register(L, "ped_car", ped_car); // 175 авто педа.
  512.     lua_register(L, "wanted_level", wanted_level); // 176 получить уровень розыска.
  513.     lua_register(L, "get_model_current_weapon_ped", get_model_current_weapon_ped); // 177 макрос получить модель текущего оружие педа.
  514.     lua_register(L, "get_type_current_weapon_ped", get_type_current_weapon_ped); // 178 макрос получить тип текущего оружие педа.
  515.     lua_register(L, "set_camera_and_point", set_camera_and_point); // 179 установить и переместить камеру в координатах.
  516.     lua_register(L, "get_damage_current_weapon", get_damage_current_weapon); // 180 получить уровень урона текущего оружие.
  517.     lua_register(L, "set_damage_current_weapon", set_damage_current_weapon); // 181 установить уровень урона текущего оружие педа.
  518.     lua_register(L, "ped_in_targetting", ped_in_targetting); // 182 пед на прицеле.
  519.     lua_register(L, "Ped_in_targetting", Ped_in_targetting); // макрос 183 пед на прицеле.
  520.     lua_register(L, "Get_model_and_type_ped", Get_model_and_type_ped); // 184 макрос получить модель и тип педа.
  521.     lua_register(L, "get_model_ped", get_model_ped); // 185 получить модель педа.
  522.     lua_register(L, "get_type_ped", get_type_ped); // 186 получить тип педа.
  523.     lua_register(L, "ped_clear_investigate_event", ped_clear_investigate_event); // 187 пед уходит, опустить педа.
  524.     lua_register(L, "ped_clear_objective", ped_clear_objective); // 188 снять задачи с педа.
  525.     lua_register(L, "setbomb_in_car", setbomb_in_car); // 189 установить бомбу в авто.
  526.     lua_register(L, "getbomb_in_car", getbomb_in_car); // 190 получить тип бомбы в авто.
  527.     lua_register(L, "activetbomb", activetbomb); // 191 активировать бомбу в авто.
  528.     lua_register(L, "is_ped_in_this_car", is_ped_in_this_car); // 192 игрок в этом авто?
  529.     lua_register(L, "ishorncar", ishorncar); // 193 проверить гудит ли авто.
  530.     lua_register(L, "getcarfirstcolor", getcarfirstcolor); // 194 получить первый цвет авто.
  531.     lua_register(L, "getcarseconscolor", getcarseconscolor); // 195 получить второй цвет авто.
  532.     lua_register(L, "ped_char_spotted_player", ped_char_spotted_player); // 196 если пед увидел игрока.
  533.     lua_register(L, "set_timer_bomb_car", set_timer_bomb_car); // 197 установить таймер на взрыв бомбы в авто.
  534.     lua_register(L, "is_ped_objective", is_ped_objective); // 198 если пед выполнил задачу.   
  535.     lua_register(L, "set_time_scale", set_time_scale); // 199 установить ход времени в игре.
  536.     lua_register(L, "is_ped_in_air", is_ped_in_air); // 200 если пед в воздухе. 
  537.     lua_register(L, "kill_peds_in_car", kill_peds_in_car); // 201 убить педов в авто.
  538.     lua_register(L, "getstamina_ped", getstamina_ped); // 202 получить выносливость педа.
  539.     lua_register(L, "setstamina_ped", setstamina_ped); // 203 установить выносливость педа.
  540.     lua_register(L, "get_radio_car", get_radio_car); // 204 получить текущую радиостанцию авто.
  541.     lua_register(L, "is_ped_passenger_car", is_ped_passenger_car); // 205 пед пассажир авто.
  542.     lua_register(L, "is_ped_driver_car", is_ped_driver_car); // 206 пед пассажир авто.
  543.     lua_register(L, "ped_in_turret_on_car", ped_in_turret_on_car); // 207 переместить педа в турель авто.
  544.     lua_register(L, "ped_from_turret_on_car", ped_from_turret_on_car); // 208 убрать педа из турели авто.
  545.     lua_register(L, "is_button_pressed", is_button_pressed); // 209 если спец клавиша нажата. 
  546.     lua_register(L, "getmoney_ped", getmoney_ped); // 210 получить кол-во деньги педа.
  547.     lua_register(L, "setmoney_ped", setmoney_ped); // 211 установить кол-во деньги педа.
  548.     lua_register(L, "addmoney_ped", addmoney_ped); // 212 добавить кол-во деньги педа.
  549.     lua_register(L, "getgravity", getgravity); // 213 получить значения гравитации.
  550.     lua_register(L, "setgravity", setgravity); // 214 установить значения гравитации.
  551.     lua_register(L, "gravity_default", gravity_default); // 215 вернуть значения по умолчанию гравитации.
  552.     lua_register(L, "create_shots_on_ped", create_shots_on_ped); // 216 создать выстрелы.
  553.     lua_register(L, "get_wheel_status", get_wheel_status); // 217 получить состояния шины авто.
  554.     lua_register(L, "create_shots_on_car", create_shots_on_car);// 218 создать выстрелы.
  555.     lua_register(L, "ped_save_pos_attack", ped_save_pos_attack);// 219 пед сохраняет ли свою позицию при атаке.   
  556.     lua_register(L, "ped_rebuff", ped_rebuff);// 220 пед атакует любого, кто нападает на него.
  557.     lua_register(L, "ped_search_threat", ped_search_threat);// 221 пед ищет угрозу.   
  558.     lua_register(L, "ped_clean_threat", ped_clean_threat);// 222 очистить угрозы для педа.    
  559.     lua_register(L, "save_car_color", save_car_color);// 223 авто сохраняет цвет при перекраске. 
  560.     lua_register(L, "is_car_passenger_free", is_car_passenger_free);// 224 Проверяет, свободно ли место пассажира в авто.
  561.     lua_register(L, "set_ped_bleeding", set_ped_bleeding);// 225 вкл\выкл крованные у педа.   
  562.     lua_register(L, "all_exit_from_car", all_exit_from_car);// 226 все педы выходят из авто.
  563.     lua_register(L, "is_ped_duck", is_ped_duck);// 227 Проверяет, пед присел.
  564.     lua_register(L, "set_car_tank", set_car_tank);// 228 установить способность танка детонировать авто при контакте.
  565.     lua_register(L, "set_display_radar", set_display_radar);// 229 показать скрывать радар.
  566.     lua_register(L, "set_ped_in_car", set_ped_in_car);// 230 установить педа в авто как водителя или пассажира.
  567.     lua_register(L, "set_ped_traffic", set_ped_traffic); // 231 установить плотноcть трафика педов.
  568.     lua_register(L, "heli_to_fly", heli_to_fly); // 232 вертолет летит на координаты.
  569.     lua_register(L, "set_ped_immunities", set_ped_immunities); // 233 уст иммунитеты педу.
  570.     lua_register(L, "set_car_immunities", set_car_immunities); // 234 уст иммунитеты авто.
  571.     lua_register(L, "setcolourmarker", setcolourmarker); // 235 установить цвет маркера.
  572.     lua_register(L, "set_camera_on_car", set_camera_on_car); // 236 уст камеру на авто.
  573.     lua_register(L, "ped_run_to_point", ped_run_to_point); // 237 пед бежит к точке пешком.
  574.     lua_register(L, "select_interiour", select_interiour); // 238 уcтановить интерьер.
  575.     lua_register(L, "set_ped_stats_to", set_ped_stats_to); // 239 уст поведения педа.  
  576.     lua_register(L, "ped_maintain_position_when_attacked", ped_maintain_position_when_attacked); // 240 пед удерживает позицию при атаке.      
  577.     lua_register(L, "set_timer_ped_attack", set_timer_ped_attack); // 241 установить таймер атаки педа.       
  578.     lua_register(L, "set_cops_ignored", set_cops_ignored); // 242 установить игнор копов.
  579.     lua_register(L, "set_camera_near_clip", set_camera_near_clip); // 243 установить обрезку камеры.
  580.  
  581.     lua_register(L, "exitcar", exitcar); // 244 выйти из авто.
  582. };
  583.  
  584. int star_mission_marker(lua_State* L) {// создать маркер для миссии.
  585.     static int point;   static int create = 0;
  586.     try {
  587.         if (LUA_TNUMBER == lua_type(L, 1) && LUA_TNUMBER == lua_type(L, 2) &&
  588.             LUA_TNUMBER == lua_type(L, 3) && LUA_TNUMBER == lua_type(L, 4)) {// значение число.
  589.  
  590.             int t = lua_tointeger(L, 1);// id метки на карте.
  591.             float x = lua_tonumber(L, 2); float y = lua_tonumber(L, 3);
  592.             float z = lua_tonumber(L, 4);  CVector p = { x, y, z };
  593.             //this_thread::sleep_for(chrono::milliseconds(10));
  594.             CPed* player = FindPlayerPed();
  595.             unsigned int& OnAMissionFlag = *(unsigned int*)0x978748;
  596.             bool getflagmission = (CTheScripts::ScriptSpace[OnAMissionFlag]);
  597.             bool arest = CWorld::Players[CWorld::PlayerInFocus].m_nPlayerState == PLAYERSTATE_HASBEENARRESTED;
  598.             if ((!player->m_bInVehicle) || getflagmission || (!player->m_fHealth > 0.10f) || (arest) && (create == 1)) {// в авто пед?
  599.  
  600.                 create = 0;
  601.                 Command<COMMAND_REMOVE_BLIP>(point);// удалить метку на карте.>(p.x, p.y, p.z, t, size, &point);
  602.                 lua_pushboolean(L, false);
  603.                 return 1;
  604.             }
  605.             if (player->m_bInVehicle && create == 0 && !getflagmission) {// в авто пед?
  606.                 create = 1;
  607.                 Command<COMMAND_ADD_SHORT_RANGE_SPRITE_BLIP_FOR_CONTACT_POINT>(p.x, p.y, p.z, t, &point);
  608.                 lua_pushboolean(L, false);
  609.                 return 1;
  610.             }
  611.             if (player->m_bInVehicle && !getflagmission && (player->m_fHealth > 0.10f) && (!arest) && (create == 1)) {// в авто пед?
  612.                 CVehicle* car = player->m_pVehicle;
  613.                 bool place = car->IsSphereTouchingVehicle(x, y, z, 3.0);
  614.                 if (place && (car->m_fTotSpeed < 0.1f)) {
  615.                     create = 0;
  616.                     Command<COMMAND_REMOVE_BLIP>(point);// удалить метку на карте.>(p.x, p.y, p.z, t, size, &point);
  617.                     lua_pushboolean(L, true);   //std::thread(check_defined_and_arest);
  618.                     return 1;
  619.                 }
  620.  
  621.                 if (!player->m_bInVehicle || getflagmission || (!player->m_fHealth > 0.10f) || (arest) && (create == 1)) {// в авто пед?
  622.                         //create = 0; CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;
  623.                     Command<COMMAND_REMOVE_BLIP>(point);// удалить метку на карте.>(p.x, p.y, p.z, t, size, &point);
  624.                     lua_pushboolean(L, false);
  625.                     return 1;
  626.                 }
  627.             }
  628.         }// int
  629.  
  630.         else { throw "bad argument in function star_mission_marker"; }
  631.     }
  632.     catch (const char* x) { writelog(x); }// записать ошибку в файл.
  633.     return 0;
  634. };
  635.  
  636. int opendoorcar(lua_State* L) { // открыть дверь авто.
  637.     try {
  638.         if (LUA_TLIGHTUSERDATA == lua_type(L, 1) && LUA_TNUMBER == lua_type(L, 2)) {// указатель на авто.
  639.             const void* p = lua_topointer(L, 1);
  640.             CVehicle* car = findcarinpool(p);//  получить указатель на авто.
  641.  
  642.             CAutomobile* automobile = reinterpret_cast<CAutomobile*>(car); // опять же, приведение типов. Т.к. мы будет юзать damageManager, нам нужно убедиться, что транспорт - это автомобиль (CAutomobile)
  643.  
  644.             int door = lua_tointeger(L, 2);
  645.             switch (door) {
  646.             case 0: {DoorsExample::EnableDoorEvent(automobile, BONNET); // 0 капот
  647.                 break;   }
  648.             case 1: {DoorsExample::EnableDoorEvent(automobile, BOOT); // 1 багажник
  649.                 break;   }
  650.             case 2: { DoorsExample::EnableDoorEvent(automobile, DOOR_FRONT_LEFT); // 2 левая передняя дверь
  651.                 break;   }
  652.             case 3: {DoorsExample::EnableDoorEvent(automobile, DOOR_FRONT_RIGHT); // 3 правая передняя дверь
  653.                 break;   }
  654.             case 4: {DoorsExample::EnableDoorEvent(automobile, DOOR_REAR_LEFT); // 4 левая задняя дверь
  655.                 break;   }
  656.             case 5: {DoorsExample::EnableDoorEvent(automobile, DOOR_REAR_RIGHT); // 5 правая задняя дверь
  657.                 break; }
  658.             default: {}
  659.             }
  660.             return 0;
  661.         }
  662.         else { throw "bad argument in function opendoorcar option of the vehicle"; }
  663.     }
  664.     catch (const char* x) { writelog(x); }// записать ошибку в файл.
  665.     return 0;
  666. };
  667.  
  668. int draw_corona(lua_State* L) {// создать корону.
  669.     try {
  670.         if (LUA_TTABLE == lua_type(L, -1)) {// получаем таблицу из 9 элементов.
  671.             for (int i = 1; i < 11; i++) {
  672.                 lua_pushinteger(L, i);
  673.                 lua_gettable(L, -2); lua_insert(L, i);
  674.             }
  675.  
  676.             bool switc = lua_toboolean(L, 1);// вкл\выкл корону.
  677.             double radius = lua_tonumber(L, 2);// радиус короны.
  678.             int type = lua_tointeger(L, 3);// тип.
  679.             int glow_flare = lua_tointeger(L, 4); // свечение.
  680.             int red = lua_tointeger(L, 5);// цвета
  681.             int green = lua_tointeger(L, 6);
  682.             int blue = lua_tointeger(L, 7);
  683.             double x = lua_tonumber(L, 8); // координаты.
  684.             double y = lua_tonumber(L, 9);
  685.             double z = lua_tonumber(L, 10);
  686.             lua_pop(L, lua_gettop(L));
  687.  
  688.             corona::set(switc, x, y, z, radius, type, glow_flare, red, blue, green);
  689.  
  690.             /*  CVector pos = { x,y,z };
  691.                 Command<COMMAND_DRAW_CORONA>(pos.x, pos.y, pos.z, radius, type, glow_flare, red, green, blue);*/
  692.             return 0;
  693.         }// int
  694.  
  695.         else { throw "bad argument in function draw_corona"; }
  696.     }
  697.     catch (const char* x) { writelog(x); }// записать ошибку в файл.
  698.     return 0;
  699. };
  700.  
  701. int game_font_print(lua_State* L) {// вывести особенный игровой текст.
  702.     try {
  703.         if (LUA_TTABLE == lua_type(L, -1)) {// получаем таблицу из 12 элементов.
  704.             for (int i = 1; i < 12; i++) {
  705.                 lua_pushinteger(L, i);
  706.                 lua_gettable(L, -2); lua_insert(L, i);
  707.             }
  708.             lua_pop(L, 1);
  709.             bool printgame = lua_toboolean(L, 1);//включить отобржения на экране
  710.             string strprintgame = lua_tostring(L, 2);
  711.             int abc_x = lua_tointeger(L, 3);
  712.             int ord_y = lua_tointeger(L, 4);
  713.             int font = lua_tointeger(L, 5);
  714.             float spacing = lua_tonumber(L, 6);
  715.             float size_x = lua_tonumber(L, 7);
  716.             float size_y = lua_tonumber(L, 8);
  717.             int red = lua_tointeger(L, 9);
  718.  
  719.             int blue = lua_tointeger(L, 10);
  720.             int green = lua_tointeger(L, 11);
  721.             lua_pop(L, lua_gettop(L));
  722.             spite::set(printgame, strprintgame, abc_x, ord_y, spacing, font, size_x,
  723.                 size_y, red, blue, green);
  724.             //showstack(L);
  725.             return 0;
  726.         }
  727.  
  728.         else { throw "bad argument in function game_font_print"; }
  729.     }
  730.     catch (const char* x) { writelog(x); }// записать ошибку в файл.
  731.     return 0;
  732. };
  733.  
  734. int Opendoorcar(lua_State* L) { // Макрос открыть все двери авто.
  735.     try {
  736.         if (LUA_TLIGHTUSERDATA == lua_type(L, 1)) {// указатель на авто.
  737.             const void* p = lua_topointer(L, 1);
  738.             CVehicle* car = findcarinpool(p);//  получить указатель на авто.
  739.  
  740.             CAutomobile* automobile = reinterpret_cast<CAutomobile*>(car); // опять же, приведение типов. Т.к. мы будет юзать damageManager, нам нужно убедиться, что транспорт - это автомобиль (CAutomobile)
  741.             DoorsExample::EnableDoorEvent(automobile, BONNET); // 0 капот
  742.             DoorsExample::EnableDoorEvent(automobile, BOOT); // 1 багажник
  743.             DoorsExample::EnableDoorEvent(automobile, DOOR_FRONT_LEFT); // 2 левая передняя дверь
  744.             DoorsExample::EnableDoorEvent(automobile, DOOR_FRONT_RIGHT); // 3 правая передняя дверь
  745.             DoorsExample::EnableDoorEvent(automobile, DOOR_REAR_LEFT); // 4 левая задняя дверь
  746.             DoorsExample::EnableDoorEvent(automobile, DOOR_REAR_RIGHT); // 5 правая задняя дверь
  747.             return 0;
  748.         }
  749.         else { throw "bad argument in function Opendoorcar option of the vehicle"; }
  750.     }
  751.     catch (const char* x) { writelog(x); }// записать ошибку в файл.
  752.     return 0;
  753. };
  754.  
  755. int ped_anim(lua_State* L) {// анимация.
  756.     try {
  757.         if (LUA_TLIGHTUSERDATA == lua_type(L, 1) && LUA_TNUMBER == lua_type(L, 2)
  758.             && LUA_TNUMBER == lua_type(L, 3) && LUA_TNUMBER == lua_type(L, 4)) {//число.
  759.  
  760.             const void* p = lua_topointer(L, 1);
  761.             int tipe = lua_tointeger(L, 2);
  762.             int idanimation = lua_tointeger(L, 3);
  763.             int time = lua_tointeger(L, 4);
  764.             CPed* ped = findpedinpool(p);//  получить указатель на педа.
  765.             RpClump* pe = ped->m_pRwClump;
  766.             CAnimManager::BlendAnimation(pe, tipe, idanimation, time);
  767.             return 0;
  768.         }
  769.         else { throw "bad argument in function ped_anim"; }
  770.     }
  771.     catch (const char* x) { writelog(x); }// записать ошибку в файл.
  772.     return 0;
  773. };
  774.  
  775. char q;
  776. static string faststr = "";
  777. void getkeyenvent() {// считывания символов клавиатуры.
  778.  
  779.     while (star_thread::get()) {
  780.         this_thread::sleep_for(chrono::milliseconds(1));
  781.         for (q = 8; q <= 190; q++) {
  782.             string faststr = getkey(q);// получаем символ нажатой клавиши.
  783.             while (star_thread::get()) {
  784.                 this_thread::sleep_for(chrono::milliseconds(1));
  785.                 string f2 = getkey(q);// Ждем отпускание клавиши.
  786.                 if (faststr != f2) {
  787.                     break;
  788.                 }
  789.             };
  790.             if (faststr != "") { cheatstr = cheatstr + faststr; }
  791.             int size = cheatstr.size();// Если длина строки больше 10 символов, удаляем строку.
  792.             if (size > 19) { cheatstr.clear(); }
  793.         }
  794.     }
  795. };
  796.  
  797. int timerstar() { while (iters < 280) {this_thread::sleep_for(chrono::milliseconds(1));}
  798.     bool k = false; star_thread::set(k);
  799.     return 0;
  800. };
  801.  
  802.  
  803. //if ((iters < 1) && (star_thread::get())) { //bool k = false;  star_thread::set(k);
  804. //}
  805. //  bool star_second_thread = star_thread::get();// получить флаг запуска второго потока.
  806.     //CPed* player = FindPlayerPed();// найти игрока.
  807.     //if (player != NULL) {// проверка найден пед.
  808. /*Events::initGameEvent +=[]{
  809.     writelog("new game");
  810. };*/
  811. //Events::initScriptsEvent += [] {
  812. //  writelog("load");
  813. //};
  814.  
  815.         //bool k = false;// флаг, что уже запущен поток.
  816.         //star_thread::set(k);
  817. //if ((Command<COMMAND_CAN_PLAYER_START_MISSION>(CWorld::PlayerInFocus)) && star_second_thread == false && CTimer::m_snTimeInMilliseconds - time > 13500) {
  818.  
  819. /*CVector pos1 = { x, y, z };
  820. CVector* pos = (CVector*)& pos1;*/
  821. //eWeaponType type = weapon.m_nType;
  822. //CShotInfo* aShotInfos;
  823. //Command<COMMAND_SET_CHAR_HEED_THREATS>(CPools::GetPedRef(ped), 1);// пед атакует любого, кто нападает на него.
  824.  
  825.     //aShotInfos->AddShot(ped, type, ped->GetPosition(), pos1);
  826. //aShotInfos->AddShot(ped, type, ped->GetPosition(), pos1);
  827. //.aShotInfos->Update();
  828.  
  829.                 //weapon.Update(54, ped);
  830.                 //weapon. ();
  831.                 //aShotInfos->Initialise();
  832.                 //this_thread::sleep_for(chrono::milliseconds(1));
  833.                 //CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;// дать денег
  834.                 //weapon.Shutdown();
  835.                 //weapon.UpdateWeapons();
  836.  
  837. //int check_defined_and_arest() {
  838. //  //CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 10;// дать денег  
  839. //  CPed* player = FindPlayerPed();// найти игрока
  840. //  while (true) {
  841. //      this_thread::sleep_for(chrono::milliseconds(10));
  842. //      bool arest = CWorld::Players[CWorld::PlayerInFocus].m_nPlayerState == PLAYERSTATE_HASBEENARRESTED;
  843. //      if (arest || (player->m_fHealth < 0.10f)) {
  844. //          CMessages::AddBigMessage(L"mission failed!", 2500, 0);//0 большими, розовые как миссии пройдена,
  845. //          this_thread::sleep_for(chrono::milliseconds(10));
  846. //          setflagmission(0);
  847. //          break;
  848. //      }
  849. //  };
  850. //  return 0;
  851. //};
  852.  
  853. //CPed* player = FindPlayerPed();// найти педа  
  854. //if (ped != player ) {
  855. //  bool point = Command<COMMAND_LOCATE_CHAR_ANY_MEANS_3D>(CPools::GetPedRef(ped), x, y, z, rx, ry, rz);
  856. //  if (delay == 0) {
  857. //      delay = iters;
  858. //      lua_settop(L, 0);
  859. //      lua_pushboolean(L, false);
  860. //      return 1;
  861. //  }
  862. //  else if (iters - delay > 5) {
  863. //          delay = 0;
  864. //          lua_settop(L, 0);
  865. //          lua_pushboolean(L, point);
  866. //          return 1;
  867. //      }
  868. //  }
  869. //else {
  870. //  bool point = Command<COMMAND_LOCATE_PLAYER_ANY_MEANS_3D>(CWorld::PlayerInFocus, x, y, z, rx, ry, rz);
  871. //  if (delay == 0) {
  872. //      delay = iters;
  873. //      //lua_settop(L, 0);
  874. //      lua_pushboolean(L, false);
  875. //      return 1;
  876. //  }
  877. //  else if (iters - delay > 5) {
  878. //      delay = 0;
  879. //  //  lua_settop(L, 0);
  880. //      lua_pushboolean(L, point);
  881. //      return 1;
  882. //  }
  883. //}
  884. //static char x[256];
  885. //snprintf(x, 256, "%.d", iters);
  886.  
  887. //wchar_t* str = getwchat(x);
  888. //CMessages::AddMessageJumpQ(str, 1000, 1);// вывести сообщение на экран.
  889.  
  890.  
  891.  
  892.  
  893. /*      wchar_t* str = L"kjhb";
  894. CVector pos = { x,y,z };
  895. "Э.03C3: set_timer_with_text_to 16@ type 0 text L'R_TIME'  // ˜pem¬ ?ohk?:
  896. Command<COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING>(10, 0, L'R_TIME');*/
  897.  
  898.  
  899.  
  900. //lua_State* copystack(lua_State* L); // Копирование стека и создания нового состояния.
  901. //const char* newname(char* str) {
  902.     //
  903.     //  if (!std::experimental::filesystem::exists("./threads")) {// Если нет папки создаем
  904.     //      std::experimental::filesystem::create_directories("./threads");
  905.     //  }
  906.     //  char n[225] = "threads\\1.lua";
  907.     //  fstream f0;
  908.     //  f0.open(n, fstream::in | fstream::out | fstream::app);
  909.     //
  910.     //  if (f0.is_open()) {
  911.     //      f0.close();
  912.     //      remove(n);
  913.     //  };// удалим дубликат, если он есть.
  914.     //
  915.     //  fstream f;  f.open(str);
  916.     //  fstream f1;
  917.     //  f1.open(n, fstream::in | fstream::out | fstream::app);
  918.     //  vector<string>strf;
  919.     //  if (f.is_open() && f1.is_open()) {
  920.     //      string str10;
  921.     //      int number = 0;
  922.     //      while (!f.eof()) {
  923.     //          number++;
  924.     //          getline(f, str10);
  925.     //          strf.push_back(str10);
  926.     //      };
  927.     //      int lastst = number - 1;
  928.     //      for (int i = 0; i < number; i++)
  929.     //      {
  930.     //          if (i != lastst) { f1 << strf[i] + "\n"; }
  931.     //          else { f1 << strf[i]; }
  932.     //      }
  933.     //  }; f.close(); f1.close();
  934.     //  const char* wor = "threads\\1.lua";// (char*)newnane;
  935.     //  return wor;
  936.     //};
  937.     //
  938.     //void star(lua_State* L1) {
  939.     //  lua_pcall(L1, 1, 0, 0);
  940.     //};
  941.     //static int g = 1;
  942.     //      g++;
  943.     //
  944.     //void m(lua_State* L, const char* func, int args) {
  945.     //  lua_State* L1 = lua_newthread(L);
  946.     //
  947.     //  int ret, ret1;//    this_thread::sleep_for(chrono::milliseconds(100));  
  948.     //  lua_sethook(L, LUAHook, LUA_MASKCOUNT, 30); // Добавить подсчет счетчика, который сработает после указания числа
  949.     //  lua_sethook(L1, LUAHook1, LUA_MASKCOUNT, 30);   // Добавить подсчет счетчика, который сработает после указания числа
  950.     //
  951.     //  lua_getglobal(L, "main");
  952.     //  ret1 = lua_resume(L, L1, 0);
  953.     //  CWorld::Players[CWorld::PlayerInFocus].m_nMoney += ret1;// дать денег  
  954.     //  while (true) {
  955.     //      if (ret == LUA_YIELD) {//&& ret1 != LUA_YIELD
  956.     //  lua_getglobal(L1, func);
  957.     //  ret = lua_resume(L1, L, args);//запуск FUNC
  958.     //          this_thread::sleep_for(chrono::milliseconds(10));
  959.     //      }
  960.     //          if (ret1 == LUA_OK) {
  961.     //          CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 100;// дать денег  
  962.     //          this_thread::sleep_for(chrono::milliseconds(10));
  963.     //          break;
  964.     //         
  965.     //      }
  966.     //      else { continue; }
  967.     //      if (ret1 == LUA_YIELD) {
  968.     //      //. CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;// дать денег    
  969.     //          lua_getglobal(L1, func);
  970.     //          ret = lua_resume(L1, L, args); //this_thread::sleep_for(chrono::milliseconds(100));
  971.     //      }
  972.     //      if (ret == LUA_OK) {// Успешно завершение функции.
  973.     //          break;
  974.     //      }
  975.     //
  976.     //  };
  977.     //};
  978.     //
  979.     //lua_State* cop(lua_State* L) {
  980.     //  lua_State* L1 = luaL_newstate();
  981.     //  luaL_openlibs(L1);// открыть допю. библиотеки.
  982.     //  funs(L1);// список весь функций.
  983.     //
  984.     //  int stacksize = lua_gettop(L);// кол-во элементов в  стек.  
  985.     //  stacksize++;
  986.     //  for (int i = 1; i < stacksize; i++) {
  987.     //      if (LUA_TLIGHTUSERDATA == lua_type(L, i)) {// значение число.
  988.     //          const void* value = lua_topointer(L, i);// получить неопределенный указатель на польз.данные.  
  989.     //          int value1 = (int)& value;
  990.     //          lua_pushinteger(L, value1);  /*отправить адрес, который является ключом в стек. */
  991.     //          lua_gettable(L, LUA_REGISTRYINDEX);  /* получить таблицу и значение ключа будет в -1 */
  992.     //          int type1 = lua_type(L, -1);
  993.     //          static char x[256];
  994.     //          snprintf(x, 256, "type1 = %.d", type1);
  995.     //          wchar_t* s1 = getwchat(x);
  996.     //          CMessages::AddMessageJumpQ(s1, 3000, 0);
  997.     //          if (LUA_TSTRING == lua_type(L, -1)) {
  998.     //              CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 10000;// дать денег
  999.     //              const char* clas = lua_tostring(L, -1);// имя класс польз.данных в индексе стека.
  1000.     //              lua_pop(L, 1);      //wchar_t* str = getwchat(clas);
  1001.     //              const char* st = "cped";//      CMessages::AddMessageJumpQ(str, 6000, 1);
  1002.     //              if (strcmp(clas, st) == 0) {
  1003.     //                  CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;// дать денег
  1004.     //                  CPed* ped = (CPed*)Userdata::get<CPed>(L, i, false);
  1005.     //                  Stack<CPed*>::push(L1, ped);// отправить в стек указатель на педа.
  1006.     //                  lua_pop(L, 1);
  1007.     //              }
  1008.     //          }
  1009.     //      }
  1010.     //  }
  1011.     //  return L1;
  1012.     //};
  1013. //lua_pushlightuserdata(L, L);  /*отправить адрес, который является ключом в стек. */
  1014. //lua_gettable(L, LUA_REGISTRYINDEX);  /* получить таблицу и значение ключа будет в -1 */
  1015. //char const* luaname = lua_tostring(L, -1);//имя lua скрипта.
  1016. //wchar_t* str = getwchat(luaname);
  1017.  
  1018. //lua_State* L1 = luaL_newstate();
  1019. //luaL_openlibs(L1);
  1020. //funs(L1);// список весь функций.
  1021.  
  1022. //int stacksize = lua_gettop(L);
  1023. //stacksize++;
  1024. //for (int i = 1; i < stacksize; i++) {
  1025. //  lua_pushvalue(L, i);// копировать на вершину стека.
  1026. //  lua_xmove(L, L1, 1);// Снимает с L1 элементов передает L.
  1027. //};
  1028.  
  1029. //luastate.push_back(L1);// добавить новое состояние в list
  1030. ////int args = lua_gettop(L1);
  1031. //      if (0 == luaL_loadfile(L1, luaname)) {// Текущий lua файл.      
  1032. //          lua_pcall(L1, 0, 0, 0);// запуск файла.
  1033. //          lua_pushvalue(L1, 1);//скопировать имена функции, отправить на вершину стека.
  1034. //          std::thread t([=]() {lua_pcall(L1, args, 0, 0); });
  1035. //          t.detach();
  1036.  
  1037. //int timer(int time, int t) {
  1038. //  if (CTimer::m_snTimeInMilliseconds - time > t) {//t = 0; // обнулить таймер
  1039. //      return 0;
  1040. //  };
  1041. //  if (CTimer::m_snTimeInMilliseconds - time < t) {
  1042. //      this_thread::sleep_for(chrono::milliseconds(1));
  1043. //      timer(t, time);
  1044. //  }
  1045. //};
  1046. //int stacksize = lua_gettop(L);
  1047. //stacksize++;
  1048. //for (int i = 1; i < stacksize; i++) {
  1049. //  lua_pushvalue(L, i);// копировать на вершину стека.
  1050. //  lua_xmove(L, L1, 1);// Снимает с L1 элементов передает L.
  1051. //};
  1052. //luastate.push_back(L1);// добавить новое состояние в list
  1053. //int args = lua_gettop(L1);
  1054. //int args = lua_gettop(L); args++;
  1055. //lua_State* L1 = lua_newthread(L);
  1056. //lua_pushthread(L1);
  1057. //return lua_yield(L, args);/* Когда функция C вызывает lua_yield таким образом, запущенная сопрограмма приостанавливает
  1058. //свое выполнение, и вызов lua_resume этой запущенной процедуры возвращается.*/
  1059. //lua_insert(L, 1);//Перемещает поток в основание стека.
  1060. //int stacksize = lua_gettop(L);
  1061. //for (int i = 1; i < stacksize; i++) {
  1062. //  lua_xmove(L, L1, 1);// Снимает с L1 элементов передает L.
  1063. //}
  1064. //allstate.emplace(L1, L);// добавить в map.
  1065. //lua_State* L1 = luaL_newstate();
  1066. //luaL_openlibs(L1);// открыть допю. библиотеки.
  1067. //funs(L1);// список весь функций.
  1068. //lua_pushlightuserdata(L, L);  /*отправить адрес, который является ключом в стек. */
  1069. //lua_gettable(L, LUA_REGISTRYINDEX);  /* получить таблицу и значение ключа будет в -1 */
  1070. //char const* luaname = lua_tostring(L, -1);//имя lua скрипта.   
  1071. //lua_pop(L, 1);
  1072. //luastate.push_back(L1);// добавить новое состояние в list 
  1073. //char* name = (char*)luaname;//старое имя.
  1074. //const char* namelua = newname(name);
  1075. //  if (LUA_TLIGHTUSERDATA == lua_type(L, -1)) {// значение число.
  1076. //      CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;// дать денег
  1077. //      CPed* ped = (CPed*)Userdata::get<CPed>(L, 1, false);
  1078. //      Stack<CPed*>::push(L1, ped);// отправить в стек указатель на педа.        
  1079. //  }
  1080. //};
  1081. //  int status = luaL_loadfile(L1, namelua);
  1082. //          CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 10;// дать денег
  1083.                 //          lua_pushvalue(L1, 1);//скопировать имена функции, отправить на вершину стека.
  1084.  
  1085.         //if (LUA_TFUNCTION == lua_type(L1, 1)) {
  1086. //      }
  1087.  
  1088.  
  1089.  
  1090. //const void* value = lua_topointer(L, i);// получить неопределенный указатель на польз.данные.
  1091.             //lua_pushinteger(L, (int)& value);  /*отправить адрес, который является ключом в стек. */
  1092.             //lua_gettable(L, LUA_REGISTRYINDEX);  /* получить таблицу и значение ключа будет в -1 */
  1093.             //if (LUA_TSTRING == lua_type(L, -1)) {//CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 10000;// дать денег
  1094.             //  const char* clas = lua_tostring(L, -1);// имя класс польз.данных в индексе стека.
  1095.             //  lua_pop(L, 1);      //wchar_t* str = getwchat(clas);
  1096.             //  const char* st = "cped";//      CMessages::AddMessageJumpQ(str, 6000, 1);
  1097.             //  if (strcmp(clas, st) == 0) {
  1098.             //      lua_pop(L, 1);
  1099.             //       }
  1100.             //    }
  1101.  
  1102.  
  1103. //bool keyup(unsigned int key) {
  1104. //  if (!KeyCheck::CheckWithDelay(key, 200)) { return true; }
  1105. //  else { return false; }
  1106. //};
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114. //lua_State* L1 = luaL_newstate();
  1115. //luaL_openlibs(L1);// открыть допю. библиотеки.
  1116. //funs(L1);// список весь функций.
  1117. //lua_pushlightuserdata(L, L);  /*отправить адрес, который является ключом в стек. */
  1118. //lua_gettable(L, LUA_REGISTRYINDEX);  /* получить таблицу и значение ключа будет в -1 */
  1119. //char const* luaname = lua_tostring(L, -1);//имя lua скрипта.   
  1120. //lua_pop(L, 1);
  1121. //int stacksize = lua_gettop(L);// кол-во элементов в  стек.
  1122. //stacksize++;
  1123. //for (int i = 1; i < stacksize; i++) {
  1124. //  if (LUA_TLIGHTUSERDATA == lua_type(L, i)) {// значение число.
  1125. //      const void* value = lua_topointer(L, i);// получить неопределенный указатель на польз.данные.
  1126. //      lua_pushinteger(L, (int)& value);  /*отправить адрес, который является ключом в стек. */
  1127. //      lua_gettable(L, LUA_REGISTRYINDEX);  /* получить таблицу и значение ключа будет в -1 */
  1128. //      if (LUA_TSTRING == lua_type(L, -1)) {
  1129. //          CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 10000;// дать денег
  1130. //          const char* clas = lua_tostring(L, -1);// имя класс польз.данных в индексе стека.
  1131. //          lua_pop(L, 1);      //wchar_t* str = getwchat(clas);
  1132. //          const char* st = "cped";//      CMessages::AddMessageJumpQ(str, 6000, 1);
  1133. //          if (strcmp(clas, st) == 0) {
  1134. //              CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;// дать денег
  1135. //              CPed* ped = (CPed*)Userdata::get<CPed>(L, i, false);
  1136. //              Stack<CPed*>::push(L1, ped);// отправить в стек указатель на педа.
  1137. //              lua_pop(L, 1);
  1138. //          }
  1139. //      }
  1140. //  }
  1141. //};
  1142. //luastate.push_back(L1);// добавить новое состояние в list 
  1143.     //  if (res == LUA_YIELD) {
  1144.     //      res = lua_resume(L, L1, 0); // main
  1145.     //      lua_pop(L, 1);
  1146.     //      if (res == 0) { break; }
  1147.     //      else {res1 = lua_resume(L1, L, 0);// foo
  1148.     //      }
  1149.     //          /*L1 = lua_tothread(L, -1); lua_pop(L, 1); lua_xmove(L, L1, lua_gettop(L)); lua_remove(L1, 1); args = lua_gettop(L1);
  1150.     //          for (int i = 1; i > args; i++) { lua_pushvalue(L1, i); }
  1151.     //          args--; res1 = lua_resume(L1, L, args); lua_xmove(L, L1, 1);
  1152.     //      lua_sethook(L, LUAHook, LUA_MASKCOUNT, 6);*/
  1153.     //          for (mll it = allstate.begin(); it != allstate.end(); ++it) {
  1154.     //              if (L == it->second) {  L1 = it->first;
  1155.     //  if (LUA_TTHREAD == lua_type(L, -1) && LUA_TNUMBER == lua_type(L, -2)) {
  1156.     //      args = lua_tointeger(L, -2);
  1157.     //      showstack(L);
  1158.     //      CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 100;
  1159.     //      this_thread::sleep_for(chrono::milliseconds(5200));
  1160.     //  }
  1161.     //          lua_gettop(L1);//CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;
  1162.     //      if (LUA_TFUNCTION == lua_type(L1, -2)) {
  1163.     //          CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;
  1164.     //                  for (int i = 1; i < args; i++) { lua_insert(L1, i); //  lua_pushvalue(L, i);
  1165.     //                  }//Перемещает поток в основание стека.
  1166.     //                  args--;/* Аргументы.*/  //lua_sethook(L1, LUAHook1, LUA_MASKCOUNT, 1);
  1167.     //                  res1 = lua_resume(L1, L, args); //lua_settop(L1, args++);; 
  1168.     //                  showstack1(L1);
  1169.     //                  args++;                 }                   }
  1170.     //              }
  1171.     //        }
  1172.     //   if ( res1 == LUA_YIELD ||  res1 == LUA_OK ) {
  1173.     //     CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;   
  1174.     //     lua_sethook(L, LUAHook, LUA_MASKCOUNT, 10); 
  1175.     //     lua_getglobal(L, "main");
  1176.     //   res = lua_resume(L, L1, 0); //int li =  //  
  1177.     //   lua_sethook(L, LUAHook, LUA_MASKCOUNT, 0);
  1178.     //   showstack(L); lua_pop(L1, 1);
  1179.     //   this_thread::sleep_for(chrono::milliseconds(100));
  1180.     //   break;
  1181.     //  
  1182.     // lua_pop(L1, 1);
  1183.     //   CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 1;// size =  args-size;  
  1184.     //   lua_pop(L1, 1); if (LUA_TFUNCTION == lua_type(L1, -1)) {
  1185.     //   int size; 
  1186.     //   size = lua_gettop(L1);
  1187.     //   if (size > args) {
  1188.     //   if (size >5)        {
  1189.     //   size = size- args;  
  1190.     //   size--;
  1191.     //   lua_pop(L1, size);
  1192.     //   }
  1193.     //   }
  1194.     //  
  1195.     //   args++;
  1196.     //   CWorld::Players[CWorld::PlayerInFocus].m_nMoney += args;
  1197.     //    this_thread::sleep_for(chrono::milliseconds(5200));
  1198.     //     size++;
  1199.     //     size = size - args;
  1200.     //     CWorld::Players[CWorld::PlayerInFocus].m_nMoney += size;
  1201.     //   cout << "lkj " << endl;
  1202.     //   lua_settop(L1, args);
  1203.     //     for (int i = 1; i > size; i++) {
  1204.     //          if (i > 2 )  {
  1205.     //       
  1206.     //   }
  1207.     //     this_thread::sleep_for(chrono::milliseconds(5));
  1208.     //     size =  args-size;
  1209.     //     CWorld::Players[CWorld::PlayerInFocus].m_nMoney += size;// дать денег size++;
  1210.     //   args--;
  1211.     //     lua_pop(L1, 1);
  1212.     //.    this_thread::sleep_for(chrono::milliseconds(1));
  1213.     //   }
  1214.     //  }
  1215.     //}
  1216.  
  1217.     //lua_pushinteger(L, (int)& value);  /*отправить адрес, который является ключом в стек. */
  1218.     //lua_gettable(L, LUA_REGISTRYINDEX);  /* получить таблицу и значение ключа будет в -1 */
  1219.     //if (LUA_TSTRING == lua_type(L, -1)) {
  1220.     //  const char* clas = lua_tostring(L, -1);// имя класс польз.данных в индексе стека.
  1221.     //  lua_pop(L, 1);  const char* st = "cped";// 
  1222.     //  if (strcmp(clas, st) == 0) {
  1223.         //CPed* p = (CPed*)Userdata::get<CPed>(L, 1, false);// получить указатель на педа.
  1224.         //if (LUA_TSTRING == lua_type(L, -1)) {
  1225.         //  string str  = lua_tostring(L, -1);
  1226.         //  str.erase(0, 10);
  1227.         // 
  1228.         //  const char* x = strdup(str.c_str());
  1229.         //  wchar_t* s1 = getwchat(x);
  1230.         //  CMessages::AddMessageJumpQ(s1, 3000, 0);  
  1231.         //      for (auto ped : CPools::ms_pPedPool) {
  1232.         //          int p = (int)ped;
  1233.         //          std::string sped = to_string(p);
  1234.         //          if (str == sped) {
  1235.         //              lua_pushboolean(L, true); Stack<CPed*>::push(L, ped);// отправить в стек и получить из стека можно
  1236.         //              return 2;
  1237.         //          }
  1238.         //      }
  1239.         //      CPed* p2 = nullptr;   lua_pushboolean(L, false);
  1240.         //      Stack<CPed*>::push(L, p2);// отправить в стек и получить из стека можно
  1241.         //      return 2;
  1242.         //      }
  1243.  
  1244. //Добавляет транспортное средство в массив застрявших автомобилей
  1245. //Синтаксис
  1246. //
  1247. //03CC: add_stuck_car_check[ручка автомобиля] расстояние[float] время[int]
  1248. //параметр
  1249. //
  1250. //ручка автомобиля
  1251. //Ручка транспортного средства
  1252. //поплавок
  1253. //Минимальное расстояние, которое автомобиль должен проехать в единицах
  1254. //ИНТ
  1255. //Продолжительность времени в мс
  1256. //Родной аналог
  1257. //
  1258. //ADD_STUCK_CAR_CHECK
  1259. //Этот код операции сохраняет дескриптор транспортного средства вместе с дополнительными параметрами в специальном массиве, чтобы проверить, не застрял ли он.Игра постоянно проверяет, все ли машины из этого массива соответствуют требованиям.Транспортное средство помечается как застрявшее, если оно не проезжает минимальное расстояние, установленное в качестве второго параметра в течение указанного периода времени, установленного в качестве третьего параметра.Если транспортное средство уничтожено, оно удаляется из массива застрявших автомобилей.Массив застрявших автомобилей может вместить до 6 ручек автомобиля.
  1260. //
  1261. //
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top