Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - egor230

Страницы: [1] 2 3 ... 8
1
Благодарю вас,  что уделяйте мне ваше время уважаемый  kenking.  Мне очень хочется чтобы больше людей писали плагины.  Бывает нелегко разобраться в этом, в книгах Мы изучали  работу с числами и строками, тут немного другое, поэтому сложнее,  но интересно. писал раньше  на cleo, но у с++  гораздо больше возможностей, всё-таки  пишешь плагин всё равно в стиле cleo, по внутренней привычке.  Например, так В функцию CVehicle *v = randomfindcar(player, 20.0);;//передаем указатель на игрока, размер диаметра радиуса через дробное число, возвращаем указатель на найденный автомобиль. Чтобы  машина ехала на определенные координаты, думал, что нужно использовать
    CAutoPilot m_autopilot; но как?  Буду очень вам признателен если вы  подскажите мне.

2
 Здравствуйте, уважаемый Дмитрий! Спасибо большое, что несмотря на Вашу огромную загруженность, нашли время мне ответить. Основная прелесть С++ в том, что одну и ту же задачу можно решить множеством способов. Вы предоставили два варианта функций. Подскажите, пожалуйста, как именно их вызывать? Дело в том, что я занимаюсь выкладыванием простых примеров на основе Вашего плагина в группу https://vk.com/gtabuilder. Чтобы расшевелить интерес у аудитории, показать им что это не так сложно, чем кажется. Год назад только от одного слова С++ у меня начинался ступор. Думал: "у меня же нет Нобелевской премии, чтобы в нем разбираться?". Два месяца почитал книги и уже основы понимаю. Думал, будет тяжелее.

 Скажите пожалуйста, как заставить автомобиль ехать на определенные координаты и проверить, находится ли он в этих координатах?

3
Спасибо вам большое уважаемый  kenking  за ваш ответ, выдали мне очень полезные ссылки.  Понимаете когда начинаешь изучать что-то новое всегда возникают трудности. Но я чётко понимаю огромным потенциал  создание плагинов. Конечно путь будет очень тернист,  Но это того стоит.  Одно дело решать задачи из учебников,  совсем другое  столкнуться с реальным проектом, при работе с которым, получаешь колоссальный, бесценный опыт.  Конечно им делишься с другими людьми.
Вот что у меня получилось,  но ищет как-то плохо.  Скажите пожалуйста, Почему поиск работает как-то рандомно? Очень интересно ваше мнение.
Код: C++
  1. #include "plugin.h"
  2. #include "CWorld.h"
  3. #include "extensions\KeyCheck.h"
  4. #include "CMessages.h"
  5.  
  6. #include "CFont.h"
  7.  
  8. #include "CAutomobile.h"
  9. #include "CModelInfo.h"
  10. using namespace plugin;
  11.  
  12. class Message {//имя класса
  13. public:
  14.  Message() {Events::gameProcessEvent += [] {//обработчик событий игры
  15.         KeyCheck::Update();
  16.         if (KeyCheck::CheckWithDelay('M', 200)) {//если м нажата
  17.         CPed *player = FindPlayerPed();// найти игрока
  18.         if (!player) return;// проверка найден игрок
  19.         for (int i = 0; i < CPools::ms_pVehiclePool->m_nSize; i++) {// перебираем путь
  20.          CVehicle *vehicle = CPools::ms_pVehiclePool->GetAt(i);
  21.          if (vehicle != NULL) {// если авто есть
  22.          if (vehicle && (DistanceBetweenPoints(player->GetPosition(), vehicle->GetPosition()) < 5.0f)) {
  23.                 CMessages::AddMessageJumpQ("this is car", 500, 0);//выводит сообщение на экран
  24.          }
  25.         else {  CMessages::AddMessageJumpQ("not found car", 500, 0);
  26.          break;
  27.          }
  28.          }      };
  29.         }
  30.         };
  31.         }
  32. } message;
  33.  
  34.  
https://www.youtube.com/watch?v=6f-KGoP8_Mo&feature=youtu.be
Так лучше работает
Код: C++
  1.  
  2. class Message {//имя класса
  3. public:
  4.  Message() {Events::gameProcessEvent += [] {//обработчик событий игры
  5.         KeyCheck::Update();
  6.         if (KeyCheck::CheckWithDelay('M', 200)) {//если м нажата
  7.         CPed *player = FindPlayerPed();// найти игрока
  8.         if (!player) return;// проверка найден игрок
  9.         for (int i = 0; i < CPools::ms_pVehiclePool->m_nSize; i++) {// перебираем путь
  10.          CVehicle *vehicle = CPools::ms_pVehiclePool->GetAt(i);
  11.          if (vehicle != NULL ) {// если авто есть
  12.          if (vehicle && (DistanceBetweenPoints(player->GetPosition(), vehicle->GetPosition()) < 20.0f) && vehicle->m_fHealth > 50) {
  13.                 CMessages::AddMessageJumpQ("this is car", 1000, 0);//выводит сообщение на экран
  14.                 vehicle->m_wBombTimer = 160;// взрыв по таймеру
  15.                 break;      
  16.          }
  17.         else {  CMessages::AddMessageJumpQ("not found car", 1000, 0);
  18.          }
  19.          }      };
  20.         }
  21.         };
  22.         }
  23. } message;
  24.  
  25.  

https://www.youtube.com/watch?v=1Y6XSOLO_Vk&feature=youtu.be

все заработало как надо.
Код: C++
  1. void randomfindcar(CPed *p, float r) {
  2.  for (int i = 0; i < CPools::ms_pVehiclePool->m_nSize; i++) {// перебираем путь
  3.                 CVehicle *v = CPools::ms_pVehiclePool->GetAt(i);// если авто есть
  4.                 if (v != NULL && v && DistanceBetweenPoints(p->GetPosition(), v->GetPosition()) < r && v->m_fHealth > 50) {
  5.                                 CMessages::AddMessageJumpQ("this is car", 1000, 0);//выводит сообщение на экран
  6.                                 v->m_wBombTimer = 160;// взрыв по таймеру
  7.                         break;}
  8.                 else {  CMessages::AddMessageJumpQ("not found car", 1000, 0);}
  9.  }
  10. };
  11.  
  12.  
  13. class Message {//имя класса
  14. public:
  15.  Message() {Events::gameProcessEvent += [] {//обработчик событий игры
  16.         KeyCheck::Update();
  17.         if (KeyCheck::CheckWithDelay('M', 200)) {//если м нажата
  18.         CPed *player = FindPlayerPed();// найти игрока
  19.         if (!player) return;// проверка найден игрок
  20.         randomfindcar(player, 20.0);}
  21.         };
  22.         }
  23. } message;
  24.  
  25.  

4
Спасибо большое за ваш ответ уважаемый kenking. Но новички  часто усложняю простые вещи.  Думаю всё приходит с опытом,  чем больше пишешь, тем лучше получается. Возможно через год буду сам в шоке от своего кода, просто нужно время и практика. Скажите пожалуйста вы используете KeyCheck  чем он отличается  от KeyPressed('M')?.  С ним часто возникают проблемы.  Хочется проверять клавиши  так нажал  и только когда отпустишь она вернула true, Чтобы избежать повторного нажатия и клавиша будет нажата только  1 раз.  Допустим при нажатии клавиши  даётся игроку  500$  я немного  дольше подержал  и бах у меня 5 миллионов. Это настоящая проблема.
Спасибо большое за вас Благодарю вас что ответили на  на вопрос,   буду разбирать в этом. Думал что есть  аналог опкода 05F0: 3@ = random_vehicle_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_wrecked 0 //IF and SET
А тут всё по-другому.
Странно, но игра вылетает, если приближаюсь к любому авто.

5
Спасибо большое вам за ответ уважаемый kenking. Просто разбирался в sdk, как там все устроено. Вот какой плагин получится
Код: C++
  1. #include "plugin_vc.h"
  2. #include "common.h"
  3. #include "CMessages.h"
  4. #include "CWorld.h"
  5.  
  6. using namespace plugin;
  7.  
  8. bool isPedInVehicle(CPed * player) {
  9.         return player->m_bInVehicle && player->m_pVehicle != NULL;
  10. }
  11. class incar {//имя класса
  12. public:
  13.         incar() {      
  14.               Events::gameProcessEvent += [] {////обработчик событий игры
  15.                    CPed *player = FindPlayerPed();// найти игрока
  16.                    if (!player) return;//проверка найден игрок найти игрока
  17.                    if (KeyPressed('M')) {//если м нажата
  18.                            if (isPedInVehicle(player)) {// в авто игрок?
  19.                                    CVehicle *p = player->m_pVehicle;// получить указатель на хенлд авто
  20.                                    p->m_fHealth = 1000;// здоровье авто  
  21.                                    p->m_nPrimaryColor = 0;// уст 1 цвет авто.
  22.                                    p->m_nSecondaryColor = 0;// 2 цвет авто.
  23.                                    CWorld::Players[CWorld::PlayerInFocus].m_nMoney += 5000;// дать денег
  24.                                    
  25.                                    static char x[256];
  26.                                    snprintf(x, 256, "x = %.2f;y = %.2f;z = %.2f;", p->GetPosition().x, p->GetPosition().y, p->GetPosition().z);
  27.                                    CMessages::AddMessageJumpQ(x, 3000, 0);// сообщение на экран
  28.                            }
  29.                            else { CMessages::AddMessageJumpQ("No in vehicle seet!", 3000, 0); }
  30.            }    };
  31.        
  32. }
  33. } incars;
  34.  

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


все это нужно для будущего плагина для воспроизведения маршрута движения




6
Здравствуйте уважаемые люди. все  думал как решить эту проблему?  Нашел, конечно громоздкое решение.
Может кому поможет.
Код: C++
  1. #include<string>
  2. #include "plugin_vc.h"
  3. #include "common.h"
  4. #include "CStreaming.h"// загрузка моделей.
  5. #include "eWeaponModel.h" // имя моделей имя.
  6. #include "eWeaponType.h"// тип моделей оружие.
  7.  
  8. using namespace std;
  9.  
  10. using namespace plugin;
  11. void weapongive(CPed *player, string name, int ammo) {
  12.         if (name == "TEC9") {
  13.                 CStreaming::RequestModel(MODEL_TEC9, 0);// загрузить модель оружие
  14.                 CStreaming::LoadAllRequestedModels(false);// Ставить модель в очередь
  15.                 player->GiveWeapon(WEAPONTYPE_TEC9, ammo, true);// дает оружие
  16.                 player->SetCurrentWeapon(WEAPONTYPE_TEC9);// устанавливает его в руке.
  17.                 CStreaming::SetModelIsDeletable(MODEL_TEC9);// удаляет модель
  18. }       if (name == "UZI") {//модели оружия смотрите eWeaponModel.h
  19.                 CStreaming::RequestModel(MODEL_UZI, 0);// загрузить модель оружие
  20.                 CStreaming::LoadAllRequestedModels(false);
  21.                 player->GiveWeapon(WEAPONTYPE_UZI, ammo, true);
  22.                 player->SetCurrentWeapon(WEAPONTYPE_UZI);
  23.                 CStreaming::SetModelIsDeletable(MODEL_UZI);// модели оружия смотрите eWeaponModel.h
  24.         }
  25. }
  26.  
  27.  
  28. class weapon {
  29. public:
  30. weapon() {      Events::drawingEvent += [] {
  31.         if (KeyPressed('M')) {
  32.                 CPed *player = FindPlayerPed();
  33.                 if (!player) return;// находим игрока
  34.                 weapongive(player,"UZI", 10);//передаем указатель на игрока, имя оружие и кол-во патронов
  35.                 }
  36.         };
  37.         }
  38. } weapons;
  39.  

Скажите пожалуйста, В каком файле посмотреть функция проверок, мне необходимо проверка  игрок в машине?  Как дать денег игроку?
Броню и здоровые мы даём  вот так
   player->m_fHealth = 150;//здоровье
   player->m_fArmour = 200;// броня






7
Здравствуйте всем. Немного стал  понимать plugin sdk от DK для Vice City.  Поучилось дать игроку оружие. Хочу немного упростить,  сделать функцию , которая  принимает имя оружие , количество патронов. Но к сожалению не получается, подскажите пожалуйста как решить эту проблему, конечно Я понимаю,  что в меня полетят палки, Но  чем больше людей будет уметь писать плагины, Чем лучше.

Код: C++
  1. #include <string>
  2. #include "plugin.h"
  3. #include "common.h"
  4. #include "CStreaming.h"
  5. #include "eWeaponModel.h"
  6. #include "CMessages.h"
  7.  
  8. using namespace plugin;
  9. void givweap(CPed *player, std::string model, int ammo) {
  10.         std::string mane = "MODEL_" + model;
  11.         std::string type = "WEAPONTYPE_" + model;
  12.         CStreaming::RequestModel(mane, 0);// загрузить модель оружие
  13.         CStreaming::LoadAllRequestedModels(false);
  14.         player->GiveWeapon(type, ammo, true);
  15.         player->SetCurrentWeapon(type);
  16.         CStreaming::SetModelIsDeletable(name);// модели оружия смотрите eWeaponModel.h
  17.  
  18. };
  19. class weapon {
  20. public:
  21.         bool m_bPressed;
  22.         weapon() {
  23.                 static bool bPressedM = false;
  24.                 Events::gameProcessEvent += [] {
  25.                         if ((KeyPressed('M')) && (!bPressedM)) {
  26.                                 bPressedM = true;
  27.                                 CPed *player = FindPlayerPed();
  28.                                 if (!player) return;
  29.                                 givweap(player,"TEC9",12);// функция дать оружие и патроны
  30.                 }
  31.                         // Если отпустили.
  32.                         if (!KeyPressed('M')) bPressedM = false;
  33.  
  34.                 };
  35.  
  36.         }
  37.  
  38. } giveweapon;
  39.  

8
Цитировать
просто хочется упростить получение координат.
Так ты не упрощаешь, а усложняешь. Функция GetPosition() как раз и возвращает координаты в виде вектора. Почитай про функции в С++ в том числе про возвращаемые значения и передачу параметров в функции по указателю и по ссылке.
Здравствуйте уважаемый kenking. Простите, пожалуйста,  не сразу вам смог ответить.  Вот что у меня получилось,  координаты выводится.

Код: C++
  1. using namespace plugin;
  2.  
  3. char * getcoordes(CPed *player) {
  4.         static char x[256];
  5.         snprintf(x, 256, "x = %.2f;y = %.2f;z = %.2f;", player->GetPosition().x, player->GetPosition().y, player->GetPosition().z);
  6.         return x;      
  7. };
  8. class PlayerCoors {
  9. public:
  10.         PlayerCoors() {
  11.                 Events::drawingEvent += [] {
  12.                         CPed *player = FindPlayerPed();
  13.                         if (KeyPressed('M') && player) {
  14.                                 char *s = getcoordes(player);//
  15.                                 CMessages::AddMessageJumpQ(s, 5000, 3);                 }
  16.                 };
  17.         }
  18. } playerCoors;
  19.  
DK,  вы   написали ещё круче,  чем я  мог подумать,  браво!

9
Здравствуйте, уважаемый kenking, большое спасибо, что Вы мне ответили. Благодаря Вам, правильно выводятся координаты. Но, я решил сделать функцию, которая возвращает три координаты (х, у, z), но почему-то не получается передать player по указателю. Подскажите, пожалуйста, просто хочется упростить получение координат.
вот мой код.
Код: C++
  1. using namespace plugin;
  2. char getcoordes(CPed *player) {
  3.         static char x[256];
  4.         snprintf(x, 256, "%.2f;", player->GetPosition().x);
  5.         static char y[256];
  6.         snprintf(y, 256, "%.2f;", player->GetPosition().y);
  7.         static char z[256];
  8.         snprintf(z, 256, "%.2f;", player->GetPosition().z);
  9.         return x, y, z;
  10. };
  11. class PlayerCoors {
  12. public:
  13.         PlayerCoors() {
  14.                 Events::drawingEvent += [] {
  15.                         CPed *player = FindPlayerPed();
  16.                         if (KeyPressed('M') && player) {
  17.                                 char x, char y, char z = getcoordes(*player);
  18.                                 char mes[] = "x " << x << "y " << y << "z " << z;
  19.                                 CMessages::AddMessageJumpQ(mes, 5000, 3);
  20.                         }
  21.                 };
  22.         }
  23. } playerCoors;
  24.  

10
Здравствуйте уважаемый Дмитрий. Большое вам спасибо за ваше подробное объяснение очень вам признателен. Поймите меня правильно,  одно дело учить с++  по книгам, решая  простенькие задачи, как  создать функцию которая принимает целые и дробные числа. И столкнуться с реальным применение знаний на практике. moonloder было бывает легче,  там были  аналоги опкодов, которые являются простыми функциями, тут всё несколько сложнее,  но гораздо интереснее.  Больше возможности для фантазии. Когда кто-то даёт тебе совет, проблема решается быстрее. Благодарю вас за подсказку по поводу клавиш. Пришло в голову использовать emun.

Редко встретишь такого внимательного человека, вот что значит опыт! Буду называть класс и переменную разными  именам, чтобы не было ошибки.

Функция FindPlayerCoors возвращает координаты игрока в виде объекта класса,  если FindPlayerPed  вернула true, то есть игрок найден.

Сейчас наверно,вы будете смеяться над моей тупостью. я попробовал подключить библиотеку string не получается.
Потом пытался получить координаты так string x,y,z=FindPlayerCoors(); понимаю насколько это глупо. Потом хотел их преобразовать .
Код: Text
  1. string x,y,z=FindPlayerCoors();
  2. string coord = plugin::FormatStatic("%.2f %.2f %.2f", x, y, z)
  3. CMessages::AddMessageJumpQ(coord, 1000, 0);
  4.  

 Затем решил  преобразовать  координаты  Матрицы  игрока в строку через массив char.  Поскольку возвращает  объекты класса.
Код: Text
  1. CVector coors = player->m_placement * CVector(0.0f, 5.0f, 0.0f);
  2. Format("%.2f %.2f %.2f", coors.x, coors.y, coors.z);
  3. char a[] = coors.x;
  4. CMessages::AddMessageJumpQ(a, 1000, 0);
  5.  

Понимаете Уважаемый Дмитрий, хочу вывести  координаты  игрока  через функцию CMessages::AddMessageJumpQ();
 Зачем  вообще  хочу разобраться в этом? Cleo не дает воплотить свои идеи в жизнь из-за своей ограниченности.

11
Спасибо большое за ваш ответ уважаемый kenking.  Сообщения выводиться на экран  так CMessages::AddMessageJumpQ( "kj", 1000, 0);  после обновления.  Использую enum,  с ним  удобнее.
Код: C++
  1. if (playa && KeyPressed(key::M) && CTimer::m_snTimeInMilliseconds - keyPressTime > 500) {
  2. keyPressTime = CTimer::m_snTimeInMilliseconds;
  3. CMessages::AddMessageJumpQ( "model loaded", 1000, 0);
  4.  
Хотел у вас спросить как можно получить координаты игрока? Конечно  этот вопрос для Вас кажется банальным.  Просто я не нашел подробную документацию о sdk plugun.  Старался сам найти, но увы.  Хочется освоить  эту  крутую вещь, вижу ее огромный потенциал.

Хотел вывести координаты игрока на экран не получается, помогите, пожалуйста, советом.

Код: C++
  1. #include "plugin_vc.h"
  2. #include "common.h"
  3. #include "CTimer.h"
  4. #include "CStreaming.h"
  5. #include "CHud.h"
  6. #include "CMessages.h"
  7. using namespace plugin;
  8. enum key {
  9.         F1 = 112, F2 = 113, F3 = 114, F4 = 115,
  10.         F5 = 116, F6 = 117, F7 = 118, F8 = 119, F9 = 120, F10 = 121,
  11.         F11 = 122, F12 = 123, NUM_LOCK = 144, SCROLL_LOCK = 145,
  12.         SEMI_COLON = 186, EQUAL_SIGN = 187, COMMA = 188, DASH = 189,
  13.         PERIOD = 190, FORWARD_SLASH = 191, GRAVE_ACCENT = 192,
  14.         OPEN_BRACKET = 219, BACK_SLASH = 220, CLOSE_BRAKET = 221,
  15.         SINGLE_QUOTE = 222, BACKSPACE = 8, TAB = 9, ENTER = 13,
  16.         SHIFT = 16, CTRL = 17, ALT = 18, PAUSE_BREAK = 19,
  17.         CAPS_LOCK = 20, ESCAPE = 27,
  18.         PAGE_UP = 33, PAGE_DOWN = 34,
  19.         END = 35, HOME = 36, LEFT_ARROW = 37, UP_ARROW = 38,
  20.         RIGHT_ARROW = 39, DOWN_ARROW = 40, INSERT = 45, DELETE_ = 46,
  21.         _0 = 48, _1 = 49, _2 = 50, _3 = 51, _4 = 52, _5 = 53,
  22.         _6 = 54, _7 = 55, _8 = 56, _9 = 57, A = 65, B = 66, C = 67,
  23.         D = 68, E = 69, F = 70, G = 71, H = 72, I = 73, J = 74,
  24.         K = 75, L = 76, M = 77, N = 78, O = 79, P = 80, Q = 81, R = 82,
  25.         S = 83, T = 84, U = 85, V = 86, W = 87, X = 88, Y = 89, Z = 90,
  26.         LEFT_WINDOW = 91, RIGHT_WINDOW = 92, SELECT_KEY = 93,
  27.         NUMPAD0 = 96, NUMPAD1 = 97, NUMPAD2 = 98, NUMPAD3 = 99,
  28.         NUMPAD4 = 100, NUMPAD5 = 101, NUMPAD6 = 102, NUMPAD7 = 103,
  29.         NUMPAD8 = 104, NUMPAD9 = 105, MULTIPLY = 106, ADD = 107,
  30.         SUBTRACT = 109, DECIMAL_POINT = 110, DIVIDE = 111,
  31. };
  32. class msg {
  33. public:
  34.         msg() {
  35.                 static int keyPressTime = 0;
  36.                 Events::gameProcessEvent += [] {
  37.                         CPed *playa = FindPlayerPed();
  38.                         if (playa && KeyPressed(key::M) && CTimer::m_snTimeInMilliseconds - keyPressTime > 500) {
  39.                                 keyPressTime = CTimer::m_snTimeInMilliseconds;      
  40.                                 CVector position = FindPlayerPed(-1)->TransformFromObjectSpace(CVector(0.0f, 5.0f, 0.0f)); // получаем координаты по офсету от игрока ; get coords on offset from player
  41.  
  42.                                 CMessages::AddMessageJumpQ(position, 1000, 0);
  43.                                 //CHud::SetMessage("kj");
  44.                         }
  45.                 };
  46.         }
  47. } msg;
  48.  
  49.  

12
Здравствуйте всем. Немного подтянул свои знания по c++. Приступил  к написанию  простого плагина  по выводу сообщение оно выводится, но хотел бы у вас спросить, как сделать чтобы оно какое-то время оставалось на экране,  а ни сразу исчезало?
Код: C++
  1. #include "plugin_vc.h"
  2. #include "common.h"
  3. #include "CTimer.h"
  4. #include "CStreaming.h"
  5. #include "CHud.h"
  6.  
  7. using namespace plugin;
  8.  
  9. class msg {
  10. public:
  11.         msg() {
  12.                 static int keyPressTime = 0;
  13.                 Events::gameProcessEvent += [] {
  14.                         CPed *playa = FindPlayerPed();
  15.                         if (playa && KeyPressed(VK_TAB) && CTimer::m_snTimeInMilliseconds - keyPressTime > 500) {
  16.                                 keyPressTime = CTimer::m_snTimeInMilliseconds;
  17.                                 CHud::SetMessage("kj");
  18.                         }
  19.                 };
  20.         }
  21. } msg;
  22.  

13
Скриптинг / Re: Зомби мод
« : Ноябрь 23, 2018, 12:59:10 am »
daniel_360, писать скрипт  на cleo, ты потратишь много нервов, Лучше  пиши  на lua.  вот аналог твоего скрипта.
Код: Javascript
  1. script_author("egor")
  2. require "lib.moonloader"
  3. local encoding = require 'encoding'
  4. encoding.default = 'CP1251'
  5. --func = require 'module' -- подключить модуль
  6. local function codinat()
  7. local res = isCharInAnyCar(PLAYER_PED) -- 00DF: actor $PLAYER_ACTOR driving
  8.   if res
  9.   then local  car = storeCarCharIsIn(PLAYER_PED)
  10. local  x, y, z = getCarCoordinates(car) -- 00AA: store_car 0@ position_to 3@ 4@ 5@
  11.   else
  12.  local x, y, z = getCharCoordinates(PLAYER_PED) -- получить координаты cj
  13. return x,y,z
  14.   end
  15. end
  16. local function zomb(ped)
  17. taskKillCharOnFoot(ped, PLAYER_PED) -- 05E2: AS_actor 65@ kill_actor 50@
  18. shutCharUpForScriptedSpeech(ped, 1) -- 0A09: set_actor 0@ muted 1
  19. --setCharDecisionMaker(ped, 32) -- 060B: set_actor 0@ decision_maker_to 32
  20. --setAnimGroupForChar(ped, "OLDMAN")--0245: set_actor 0@ walk_style_to "OLDMAN"
  21. -- giveWeaponToChar(ped, 0,0) -- 01B2: give_actor 0@ weapon 0 ammo 0
  22. -- removeAllCharWeapons(ped) -- 048F: actor 0@ remove_weapons
  23. end
  24. function main()
  25. while true do
  26. wait(0)
  27. res = testCheat("mn")--0ADC: test_cheat "BLOWUP"
  28. if res
  29. then  printStringNow("star", 1000)-- вывод текста
  30. while isPlayerPlaying(PLAYER_HANDLE) or res1 do wait(100)-- отключить если игрок умер или чит no
  31. x,y,z = codinat()
  32. res1 = testCheat("no")--выключить зомби
  33. if res1
  34. then printStringNow("end", 1000)
  35. break
  36. else res, ped = findAllRandomCharsInSphere(x,y,z, 40.3, 0, 1) -- 0AE1: $actor = random_actor_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_deads 1
  37. zomb(ped)
  38. end end
  39. break
  40. end end
  41. end
  42.  

14
Скриптинг / Re: Зомби мод
« : Ноябрь 20, 2018, 08:39:10 pm »
Вот попробовал сам что-то сделать, получилось хорошо, зомби теперь атакуют, осталось исправить вылет
данила если это для GTA San Andreas. То лучше сразу пиши на lua.

Код: Javascript
  1. script_author("egor")
  2. require "lib.moonloader"
  3. local encoding = require 'encoding'
  4. encoding.default = 'CP1251'
  5. --func = require 'module' -- подключить модуль
  6. local function codinat()
  7. local res = isCharInAnyCar(PLAYER_PED) -- 00DF: actor $PLAYER_ACTOR driving
  8.   if res
  9.   then local  car = storeCarCharIsIn(PLAYER_PED)
  10. local  x, y, z = getCarCoordinates(car) -- 00AA: store_car 0@ position_to 3@ 4@ 5@
  11.   else
  12.  local x, y, z = getCharCoordinates(PLAYER_PED) -- получить координаты cj
  13. return x,y,z
  14.   end
  15. end
  16. function main()
  17. while true do
  18. wait(0)
  19. res = testCheat("mn")--0ADC: test_cheat "BLOWUP"
  20. if res
  21. then  printStringNow("star", 1000)-- вывод текста
  22. while isPlayerPlaying(PLAYER_HANDLE) do wait(100)
  23. x,y,z = codinat()
  24. res, ped = findAllRandomCharsInSphere(x,y,z, 40.3, 0, 1) -- 0AE1: $actor = random_actor_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_deads 1
  25. if res
  26. then taskKillCharOnFoot(ped, PLAYER_PED) -- 05E2: AS_actor 65@ kill_actor 50@
  27. end end end end
  28. end
  29.  

Вот видео демонстрация https://www.youtube.com/watch?v=qiXIPPUsNgc&feature=youtu.be

15
Спасибо большое за ваш ответ уважаемый kenking. перечисления в смысле emum именованные константы? Прошу прощения, но разобраться в чём-то новом, бывает в начале очень трудно.  Главное как говорится, чтобы лед тронулся)))).  Сейчас, конечно за мои вопросы по cleo  мне стыдно. Теперь кажется всё Элементарно, чем тогда.

Страницы: [1] 2 3 ... 8