Advertisement
lamiastella

gameAI not working for Bersa

Jan 24th, 2017
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.26 KB | None | 0 0
  1. #include "Scenario.h"
  2.  
  3. //TODO: Fix bad initial positions.
  4. Scenario::Scenario(int _car, int _initialWeather, int _weatherChangeDelay, int _initialHour, int _initialMinute, int _initialPosX, int _initialPosY){
  5.     Vector3 pos, rotation;
  6.     float heading, x, y;
  7.     int hour, minute;
  8.     Hash vehicleHash;
  9.  
  10.     vehicle = NULL;
  11.     player = NULL;
  12.     ped = NULL;
  13.     camera = NULL;
  14.  
  15.     srand(std::clock());
  16.     GAMEPLAY::SET_RANDOM_SEED(std::clock());
  17.     /*
  18.     if (_initialPosX == -1) x = -3400 + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / 10000));
  19.     else x = _initialPosX;
  20.  
  21.     if (_initialPosY == -1) y = -3600 + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / 10600));
  22.     else y = _initialPosY;
  23.     */
  24.  
  25.     if (_initialPosX == -1) x = -500 + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / 10000));
  26.     else x = _initialPosX;
  27.  
  28.     if (_initialPosY == -1) y = -500 + static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / 10600));
  29.     else y = _initialPosY;
  30.  
  31.  
  32.     heading = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / 360));
  33.  
  34.     while (!PATHFIND::LOAD_ALL_PATH_NODES(TRUE)) WAIT(0);
  35.     PATHFIND::GET_CLOSEST_VEHICLE_NODE(x, y, 0, &pos, 0, 300, 300);
  36.     PATHFIND::LOAD_ALL_PATH_NODES(FALSE);
  37.  
  38.     if(_car == -1) _car = rand() % 2;
  39.     switch (_car) {
  40.     default:
  41.     case 0: vehicleHash = GAMEPLAY::GET_HASH_KEY("blista"); break;
  42.     case 1: vehicleHash = GAMEPLAY::GET_HASH_KEY("voltic"); break; //etc
  43.     case 2: vehicleHash = GAMEPLAY::GET_HASH_KEY("cargoplane"); break;
  44.     case 3: vehicleHash = GAMEPLAY::GET_HASH_KEY("bobcatxl"); break;
  45.     case 4: vehicleHash = GAMEPLAY::GET_HASH_KEY("besra"); break;
  46.     case 5: vehicleHash = GAMEPLAY::GET_HASH_KEY("blimp"); break;
  47.  
  48.     }
  49.  
  50.     STREAMING::REQUEST_MODEL(vehicleHash);
  51.     while (!STREAMING::HAS_MODEL_LOADED(vehicleHash)) WAIT(0);
  52.     while (!ENTITY::DOES_ENTITY_EXIST(vehicle)) {
  53.         vehicle = VEHICLE::CREATE_VEHICLE(vehicleHash, pos.x, pos.y, pos.z, heading, FALSE, FALSE);
  54.         WAIT(0);
  55.     }
  56.     VEHICLE::SET_VEHICLE_ON_GROUND_PROPERLY(vehicle);
  57.  
  58.     while (!ENTITY::DOES_ENTITY_EXIST(ped)) {
  59.         ped = PLAYER::PLAYER_PED_ID();
  60.         WAIT(0);
  61.     }
  62.  
  63.     player = PLAYER::PLAYER_ID();
  64.     PLAYER::START_PLAYER_TELEPORT(player, pos.x, pos.y, pos.z, heading, 0, 0, 0);
  65.     while (PLAYER::IS_PLAYER_TELEPORT_ACTIVE()) WAIT(0);
  66.  
  67.     PED::SET_PED_INTO_VEHICLE(ped, vehicle, -1);
  68.     STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(vehicleHash);
  69.  
  70.     //Time and weather
  71.     if (_initialHour == -1) hour = rand() % 24;
  72.     else hour = _initialHour % 24;
  73.  
  74.     if (_initialMinute == -1) minute = rand() % 60;
  75.     else minute = _initialMinute % 60;
  76.  
  77.     TIME::SET_CLOCK_TIME(hour, minute, 0);
  78.  
  79.     if(_initialWeather == -1) _initialWeather = rand() % 12;
  80.     switch (_initialWeather) {
  81.     default:
  82.     case 0: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("CLEAR"); break;
  83.     case 1: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("EXTRASUNNY"); break;
  84.     case 2: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("CLOUDS"); break;
  85.     case 3: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("OVERCAST"); break;
  86.     case 4: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("RAIN"); break;
  87.     case 5: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("CLEARING"); break;
  88.     case 6: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("THUNDER"); break;
  89.     case 7: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("SMOG"); break;
  90.     case 8: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("FOGGY"); break;
  91.     case 9: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("XMAS"); break;
  92.     case 10: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("SNOWLIGHT"); break;
  93.     case 11: GAMEPLAY::SET_WEATHER_TYPE_NOW_PERSIST("BLIZZARD"); break;
  94.     }
  95.  
  96.     lastWeatherChange = std::clock();
  97.     weatherChangeDelay = _weatherChangeDelay;
  98.     lastSafetyCheck = lastWeatherChange;
  99.  
  100.     //Puts camera on vehicle
  101.     rotation = ENTITY::GET_ENTITY_ROTATION(vehicle, 1);
  102.     CAM::DESTROY_ALL_CAMS(TRUE);
  103.     camera = CAM::CREATE_CAM("DEFAULT_SCRIPTED_CAMERA", TRUE);
  104.     CAM::ATTACH_CAM_TO_ENTITY(camera, vehicle, 0, 0.5, 0.8, TRUE);
  105.     CAM::SET_CAM_FOV(camera, 60);
  106.     CAM::SET_CAM_ACTIVE(camera, TRUE);
  107.     CAM::SET_CAM_ROT(camera, rotation.x, rotation.y, rotation.z, 1);
  108.     CAM::SET_CAM_INHERIT_ROLL_VEHICLE(camera, TRUE);
  109.     CAM::RENDER_SCRIPT_CAMS(TRUE, FALSE, 0, TRUE, TRUE);
  110. }
  111.  
  112.  
  113. void Scenario::step() {
  114.     std::clock_t now = std::clock();
  115.  
  116.     Vector3 rotation = ENTITY::GET_ENTITY_ROTATION(vehicle, 1);
  117.     CAM::SET_CAM_ROT(camera, rotation.x, rotation.y, rotation.z, 1);
  118.  
  119.     float delay = ((float)(now - lastSafetyCheck)) / CLOCKS_PER_SEC;
  120.     if (delay > 10) {
  121.         lastSafetyCheck = std::clock();
  122.         //Avoid bad things such as getting killed by the police, robbed, dying in car accidents or other horrible stuff
  123.         PLAYER::SET_EVERYONE_IGNORE_PLAYER(player, TRUE);
  124.         PLAYER::SET_POLICE_IGNORE_PLAYER(player, TRUE);
  125.         PLAYER::CLEAR_PLAYER_WANTED_LEVEL(player); // Never wanted
  126.  
  127.         // Put on seat belt
  128.         PED::SET_PED_CONFIG_FLAG(ped, 32, FALSE);
  129.  
  130.         // Invincible vehicle
  131.         VEHICLE::SET_VEHICLE_TYRES_CAN_BURST(vehicle, FALSE);
  132.         VEHICLE::SET_VEHICLE_WHEELS_CAN_BREAK(vehicle, FALSE);
  133.         VEHICLE::SET_VEHICLE_HAS_STRONG_AXLES(vehicle, TRUE);
  134.  
  135.         VEHICLE::SET_VEHICLE_CAN_BE_VISIBLY_DAMAGED(vehicle, FALSE);
  136.         ENTITY::SET_ENTITY_INVINCIBLE(vehicle, TRUE);
  137.         ENTITY::SET_ENTITY_PROOFS(vehicle, 1, 1, 1, 1, 1, 1, 1, 1);
  138.  
  139.         // Player invincible
  140.         PLAYER::SET_PLAYER_INVINCIBLE(player, TRUE);
  141.  
  142.         // Driving characteristics
  143.         PED::SET_DRIVER_AGGRESSIVENESS(ped, 0.0);
  144.         PED::SET_DRIVER_ABILITY(ped, 100.0);
  145.     } else {
  146.         delay = ((float)(now - lastWeatherChange)) / CLOCKS_PER_SEC;
  147.         if (delay > weatherChangeDelay) {
  148.             lastWeatherChange = std::clock();
  149.             switch (rand() % 12) {
  150.                 default:
  151.                 case 0: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("CLEAR"); break;
  152.                 case 1: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("EXTRASUNNY"); break;
  153.                 case 2: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("CLOUDS"); break;
  154.                 case 3: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("OVERCAST"); break;
  155.                 case 4: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("RAIN"); break;
  156.                 case 5: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("CLEARING"); break;
  157.                 case 6: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("THUNDER"); break;
  158.                 case 7: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("SMOG"); break;
  159.                 case 8: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("FOGGY"); break;
  160.                 case 9: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("XMAS"); break;
  161.                 case 10: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("SNOWLIGHT"); break;
  162.                 case 11: GAMEPLAY::SET_WEATHER_TYPE_PERSIST("BLIZZARD"); break;
  163.             }
  164.         }
  165.     }
  166.  
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement