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

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


Сообщения - egor230

Страницы: [1] 2 3 ... 13
1
Не знаю может уже кто это знает, но на всякий случай скину сюда.
Нашел способ отключения короны и света практически у всех пикапов.
Прошерстил функцию CPickups::DoPickUpEffects в IDA.
Эти три адреса влияют на размер короны:
0x688308 float
0x688334 float
0x688300 float
Пишем в них 0.0 для отключения короны.
Далее адреса с байтовым значением влияют на свет от некоторых пикапов.
По умолчанию значения в адресах 1. Для отключения света пишем в них 0.
0x43F21F BYTE - отключает свет у пикапа сохранения.
0x43F14F BYTE - отключает свет у пикапа взятки.
0x43F1C1 BYTE - отключает свет у пикапа недоступной недвижимости.
0x43F1DF BYTE - отключает свет у пикапа wMIDBigdollar (пикап вырученных с недвижимости денег?).
0x43f243 BYTE - отключает свет у пикапа одежды.
Эти адреса вроде как тоже отключают свет (но толком не понял где именно) :
0x43f1ac BYTE. ?
0x43F17A BYTE. ?
0x43F11C BYTE. ?
https://sun9-13.userapi.com/impf/wF6081-x17ArfRiNJtBQULTTbfOF2jtu7JQkOA/nmdA8NL0Qz4.jpg?size=1280x1024&quality=96&sign=79e977ad43945502551d7c91f0326d73&type=album
https://sun9-20.userapi.com/impf/RYV5x2lHZG7RgvuWcVGTLciw2fs_fmpP7uJFgw/v7E_uOrX9ag.jpg?size=1280x1024&quality=96&sign=9cea2049f7c8a42af5bd5f699ff544cd&type=album

Круто, что Вы нашли эти адреса. Они пригодятся в модах.

2
Общие вопросы / Re: GTA Re:Liberty City Stories ошибка
« : Декабрь 24, 2020, 08:59:43 am »
Мне помогло отключения DEP.

3
Спасибо вам большое уважаемый Shagg_E. У меня всё работает без багов, но знаю, как всегда баги будут возникать у людей.
Мне очень хотелось создать инструмент для написания миссий, только благодаря вашим советам от знающих людей, удалось это сделать.
полтора года ушло на написание плагина, конечно мой энтузиазмом немного поугас, тем более всё время что-то отвлекает, прекрасно понимаю, что можно было сделать и лучше. У меня нет исходников moonloader, так бы всё было гораздо быстрее. Меня вдохновило vice lua  Sektor, он настоящий молодец.
Теперь останется развивать проект, но уже на  малых оборотах.

4
Обновленная версия плагина
Код: Javascript
  1. Новые функции .
  2.  
  3. lua_register(L, "set_ped_traffic", set_ped_traffic); // 231 установить плотноcть трафика педов.
  4. lua_register(L, "heli_to_fly", heli_to_fly); // 232 вертолет летит на координаты.
  5. lua_register(L, "set_ped_immunities", set_ped_immunities); // 233 уст иммунитеты педу.
  6. lua_register(L, "set_car_immunities", set_car_immunities); // 234 уст иммунитеты авто.
  7. lua_register(L, "setcolourmarker", setcolourmarker); // 235 установить цвет маркера.
  8. lua_register(L, "set_camera_on_car", set_camera_on_car); // 236 уст камеру на авто.
  9. lua_register(L, "ped_run_to_point", ped_run_to_point); // 237 пед бежит к точке пешком.
  10. lua_register(L, "select_interiour", select_interiour); // 238 уcтановить интерьер.
  11. lua_register(L, "set_ped_stats_to", set_ped_stats_to); // 239 уст поведения педа.
  12. lua_register(L, "ped_maintain_position_when_attacked", ped_maintain_position_when_attacked); // 240 пед удерживает позицию при атаке.
  13. lua_register(L, "set_timer_ped_attack", set_timer_ped_attack); // 241 установить таймер атаки педа.
  14. lua_register(L, "set_cops_ignored", set_cops_ignored); // 242 установить игнор копов.
  15.  

Первая миссия из gta vice city long night переделанная https://www.youtube.com/watch?v=y9SkUbCbXD4&featu..

5
Обновил немного свой плагин.
 
Код: Javascript
  1.  
  2.  
  3. Новые функции.
  4.  
  5. lua_register(L, "setbomb_in_car", setbomb_in_car); // 189 установить бомбу в авто.
  6. lua_register(L, "getbomb_in_car", getbomb_in_car); // 190 получить тип бомбы в авто.
  7. lua_register(L, "activetbomb", activetbomb); // 191 активировать бомбу в авто.
  8. lua_register(L, "is_ped_in_this_car", is_ped_in_this_car); // 192 игрок в этом авто?
  9. lua_register(L, "ishorncar", ishorncar); // 193 проверить гудит ли авто.
  10. lua_register(L, "getcarfirstcolor", getcarfirstcolor); // 194 получить первый цвет авто.
  11. lua_register(L, "getcarseconscolor", getcarseconscolor); // 195 получить второй цвет авто.
  12. lua_register(L, "ped_char_spotted_player", ped_char_spotted_player); // 196 если пед увидел игрока.
  13. lua_register(L, "set_timer_bomb_car", set_timer_bomb_car); // 197 установить таймер на взрыв бомбы в авто.
  14. lua_register(L, "is_ped_objective", is_ped_objective); // 198 если пед выполнил задачу.
  15. lua_register(L, "set_time_scale", set_time_scale); // 199 установить ход времени в игре.
  16. lua_register(L, "is_ped_in_air", is_ped_in_air); // 200 если пед в воздухе.
  17. lua_register(L, "kill_peds_in_car", kill_peds_in_car); // 201 убить педов в авто.
  18. lua_register(L, "getstamina_ped", getstamina_ped); // 202 получить выносливость педа.
  19. lua_register(L, "setstamina_ped", setstamina_ped); // 203 установить выносливость педа.
  20. lua_register(L, "get_radio_car", get_radio_car); // 204 получить текущую радиостанцию авто.
  21. lua_register(L, "is_ped_passenger_car", is_ped_passenger_car); // 205 пед пассажир авто.
  22. lua_register(L, "is_ped_driver_car", is_ped_driver_car); // 206 пед пассажир авто.
  23. lua_register(L, "ped_in_turret_on_car", ped_in_turret_on_car); // 207 переместить педа в турель авто.
  24. lua_register(L, "ped_from_turret_on_car", ped_from_turret_on_car); // 208 убрать педа из турели авто.
  25. lua_register(L, "is_button_pressed", is_button_pressed); // 209 если спец клавиша нажата.
  26. lua_register(L, "getmoney_ped", getmoney_ped); // 210 получить кол-во деньги педа.
  27. lua_register(L, "setmoney_ped", setmoney_ped); // 211 установить кол-во деньги педа.
  28. lua_register(L, "addmoney_ped", addmoney_ped); // 212 добавить кол-во деньги педа.
  29. lua_register(L, "getgravity", getgravity); // 213 получить значения гравитации.
  30. lua_register(L, "setgravity", setgravity); // 214 установить значения гравитации.
  31. lua_register(L, "gravity_default", gravity_default); // 215 вернуть значения по умолчанию гравитации.
  32. lua_register(L, "create_shots_on_ped", create_shots_on_ped); // 216 создать выстрелы.
  33. lua_register(L, "get_wheel_status", get_wheel_status); // 217 получить состояния шины авто.
  34. lua_register(L, "create_shots_on_car", create_shots_on_car);// 218 создать выстрелы.
  35. lua_register(L, "ped_save_pos_attack", ped_save_pos_attack);// 219 пед сохраняет ли свою позицию при атаке.
  36. lua_register(L, "ped_rebuff", ped_rebuff);// 220 пед атакует любого, кто нападает на него.
  37. lua_register(L, "ped_search_threat", ped_search_threat);// 221 пед ищет угрозу.
  38. lua_register(L, "ped_clean_threat", ped_clean_threat);// 222 очистить угрозы для педа.
  39. lua_register(L, "save_car_color", save_car_color);// 223 авто сохраняет цвет при перекраске.
  40. lua_register(L, "is_car_passenger_free", is_car_passenger_free);// 224 Проверяет, свободно ли место пассажира в авто.
  41. lua_register(L, "set_ped_bleeding", set_ped_bleeding);// 225 вкл\выкл крованные у педа.
  42. lua_register(L, "all_exit_from_car", all_exit_from_car);// 226 все педы выходят из авто.
  43. lua_register(L, "is_ped_duck", is_ped_duck);// 227 Проверяет, пед присел.
  44. lua_register(L, "set_car_tank", set_car_tank);// 228 установить способность танка детонировать авто при контакте.
  45. lua_register(L, "set_display_radar", set_display_radar);// 229 показать скрывать радар.
  46. lua_register(L, "set_ped_in_car", set_ped_in_car);// 230 установить педа в авто как водителя или пассажира.
  47.  
  48.  


Новая миссия https://www.youtube.com/watch?v=fFEyUxfGrLM&t=0s

Стабильность плагина стала выше.

6
Спасибо за уделённое время kenking, с этой функцией, в ней есть некий рандом.
Код: Javascript
  1. pedmoney = this->wPedMoney;
  2. if ( pedmoney >= 10u ){
  3. x = this->physical.entity.replacement.m_matrix.pos.x;
  4. у = this->physical.entity.m_placement.m_matrix.pos;
  5. z = this->physical.entity, replacement.m_matrix.pos.z;
  6. v4 = ((signed int)(0x66666667 * (unsigned       int64)pedmoney >> 32) >> 3) + ((unsigned int)pedmoney >> 31) + 1;
  7. if ( V4 >= 7 )
  8.  v4 = 7;
  9.  v5 = 0;
  10. for ( pedmoney_ = pedmoney / v4; v5 < v4; -H-v5 )
  11. {
  12.   v9 = sin((double)(unsigned    int8) *and() * 0.024543693);
  13.  if ( v8 & 0x400 )
  14. {
  15.   deg2rad(v7);
  16.   v9 = sin(v9);
  17. }
  18. vl0 = v9;
  19. x = 1.5 * vl0 + x;
  20. vl3 = cos((double)(unsigned     int8)rand() * 0.024543693);
  21. if ( vl2 & 0x400 )
  22. {
  23. deg2rad(v11);
  24. v13 = cos(v13);
  25. }
  26. v14 = v13; у = 1.5 * vl4 + y;
  27. z = eWorld::FindGroundZFor3DCoord(x, y, z, &a4) + 0.5; if ( a4 )
  28. {
  29. vl5 = rand();
  30. CPickups::GenerateNewOne(pedmoney_, x, y, z, wMIDMoney, 8, pedmoney_ + (vl5 & 3), 0, 0, 0);
  31.    }
  32.   }
  33. v1->wPedMoney = 0;
  34.  }
  35.  

7
Возникла такая ситуация. Функция и скриптовая команда, при установке количество денег педа, при его смерти, выпадает сумма денег, которая отличается от установленной, в чём причина такой ситуации?


Код: Javascript
  1. ped->m_nPedMoney = 100;
  2. ped->CreateDeadPedMoney();
  3.  
  4.  
  5. Command<COMMAND_SET_CHAR_MONEY>(CPools::GetPedRef(ped), 0);
  6. this_thread::sleep_for(chrono::milliseconds(1));
  7. Command<COMMAND_SET_CHAR_MONEY>(CPools::GetPedRef(ped), 100);
  8.  

8
 Sektor, спасибо за ваш ответ. Много очень чего добавил  в плагин.
Вот миссию написал. “Убить Кортеса” видео https://www.youtube.com/watch?v=2m0w7wDr7_c&feature=youtu.be

9
Если долго мучиться, что-нибудь получится. Искал в базе, вот нашёл.

Нашёл скриптовую команду игрок целиться в педа, проверяем педа.
Код: Javascript
  1. bool check_target = Command<COMMAND_IS_PLAYER_TARGETTING_CHAR>(CWorld::PlayerInFocus, CPools::GetPedRef(ped));
  2.  

Также научился изменять характеристики оружия, пока урон.

Код: Javascript
  1.         CWeapon weapon = ped->m_aWeapons[ped->m_nActiveWeaponSlot];
  2.         eWeaponType type = weapon.m_nType;
  3.         CWeaponInfo* w = CWeaponInfo::GetWeaponInfo(type);
  4.         w->m_nDamage = 500
  5.  

размер обоймы пока изменить не удалось.

Выяснил, что Shutdown помогает удалить текущее оружие.

Код: Javascript
  1. ped->SetAmmo((eWeaponType)tipe, 0);
  2. CWeapon weapon = ped->m_aWeapons[ped->m_nActiveWeaponSlot];
  3. ped->RemoveWeaponModel(idweapon);
  4. weapon.Shutdown();
  5. weapon.UpdateWeapons();
  6.  
  7.  

такой прогресс.

10

Спасибо большое за ваш ответ уважаемый kenking.
Хорошо, что у нас есть база, где можно посмотреть функции, жаль, что с ней мало кто может работать продуктивно.   
Нужны знания ассемблера, он гораздо сложнее с++.

Изучаю sdk plugin. Вот, что выяснил.
Код: Javascript
  1. CCamera* cam;
  2. cam = (CCamera*)0x7E4688;
  3. //float res = cam->CarZoomIndicator; // режим камеры в авто от 0 до 5, 4 пропускает.
  4. //float res = cam->CarZoomValue;// что-то с зумом в авто, насколько приближенная к авто.
  5. //float res = cam->DistanceToWater;// странная дистанция до воды.
  6. //float res = player->GetHeading();// получить угол педа
  7. CWeapon weapon = ped->m_aWeapons[ped->m_nActiveWeaponSlot];
  8. int ammo = weapon.m_nTotalAmmo;// кол-во патронов в текущем оружии.
  9.  
  10. Также научился немного  работать с огнём.
  11. int fire;// переменная хранить id огня.
  12. CPed* ped = findpedinpool(p);//  получить указатель на педа.
  13. Command<COMMAND_START_CHAR_FIRE>(CPools::GetPedRef(ped), &fire);// создать огонь на педе.
  14.  
  15. CVehicle* car = findcarinpool(p);// получить указатель на авто.
  16. Command<COMMAND_START_CAR_FIRE>(CPools::GetVehicleRef(car), &fire);// создать огонь на авто.
  17.  
  18. float x = lua_tonumber(L, 1);
  19. float y = lua_tonumber(L, 2); float z = lua_tonumber(L, 3);
  20. int fire;// переменная хранить id огоня.
  21. CVector pos = { x,y,z };
  22.  
  23. Command<COMMAND_START_SCRIPT_FIRE>( pos.x, pos.y, pos.z, &fire);// создать огонь на координатах.
  24.  
  25. Command<COMMAND_REMOVE_SCRIPT_FIRE>(fire);// удалить огонь.
  26.  
  27.  
У меня возникли вопросы, при вызове этих функции, нет никакого эффекта

Код: Javascript
  1. CWeapon weapon = ped->m_aWeapons[ped->m_nActiveWeaponSlot];
  2. weapon.InitialiseWeapons();
  3. weapon.Shutdown();*/
  4. //weapon.ShutdownWeapons();
  5. weapon.Reload();
  6.  

может кто-то из вас с ними работает? Скажите, пожалуйста, как они действуют, на что они влияют?   

11
Спасибо  xanser  вам ответ.

Камера работает следующим образом
Код: Javascript
  1. CCamera* cam;
  2. cam = (CCamera*)0x7E4688;
  3. cam->Restore();
  4.  
 

Наконец-то удалось  установить угол для  камеры https://www.youtube.com/watch?v=kyDgJicxGdQ&feature=youtu.be

Спасибо за подсказку, теперь уровень розыска устанавливается нужный.
Код: Javascript
  1.  
  2. Command<COMMAND_SET_MAX_WANTED_LEVEL>(wanted);
  3.  
  4. Command<COMMAND_ALTER_WANTED_LEVEL>(CWorld::PlayerInFocus, wanted);
  5.  
  Интересно, можно ли  заменить их функциями?
Скажите, пожалуйста, какие функции отвечают за проверки целиться игрок ли в педа? Получил ли пед  урон от игрока, получил ли пед урон конкретного вида оружия?

12
Вот написал новую миссию, конечно простую, выезжать взять пикап, доехать до точки.
Вот видео  https://www.youtube.com/watch?v=r6R4Rt4sGaU&feature=youtu.be
Постоянно что-то  обновляю, тестирую, нахожу баги,  исправляю их.   

13
Спасибо большое за ответ уважаемый  xanser. Конечно мучений много, но это того стоит, например, миссии писать  легко. Ещё  можно как-то упростить, чтобы  ускорить написание кода скрипта.
Функции, которые вы написали, нет в "CCamera.h", может просто ещё не добавляли в репозиторий.
Скажите, пожалуйста, что делает эта функции?
Понимаю, что она принимает числа, где посмотреть какие именно ?
Код: Javascript
  1. CCamera* c;
  2.                                         c->SetNewPlayerWeaponMode(3,1,3);
  3. SetNearClipScript(float fNearClipScript);
  4.         void SetNewPlayerWeaponMode(short Mode, short MinZoom, short MaxZoom);
  5.         void SetZoomValueCamStringScript(short mode);
  6.         void SetZoomValueFollowPedScript(short mode);
  7.         void StartTransition(short mode);
  8.  

Допустим, установили камеру в нужных нам координатах, но нужно её развернуть по вертикальной оси или наклонить от себя или от себя, для хорошего операторского ракурса, какие функции для этого использовать?


Скажите, пожалуйста, функцию, которая проверяет игрок целиться в педа?

Почему-то не могу получить 5 или 6 звёзд розыска с помощью скриптовой команды , 
Command<COMMAND_ALTER_WANTED_LEVEL>(CWorld::PlayerInFocus, wanted); только максимум 4 звезды розыска можно получить.


14
вот написал кастомную миссию "вечеринка" на lua.

есть функция ped->SetObjective(OBJECTIVE_SET_LEADER, player); пед следует за игроком.

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

 Уже почти год работаю над плагином, не могу никак его довести до ума. Очень буду рад если вы подскажите функции работы с камерой.

 Видео https://www.youtube.com/watch?v=tS_IdkQ11NE&feature=youtu.be

15

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

Ошибка


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

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

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

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