Advertisement
CaveDweller_

Untitled

Jun 12th, 2014
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 29.74 KB | None | 0 0
  1. //----------------------------------------------------------
  2. //
  3. //  GRAND LARCENY  1.0
  4. //  A freeroam gamemode for SA-MP 0.3
  5. //
  6. //----------------------------------------------------------
  7.  
  8. #include <a_samp>
  9. #include <core>
  10. #include <float>
  11. #include "../include/gl_common.inc"
  12. #include "../include/gl_spawns.inc"
  13. #include <YSI\y_master>
  14. #include <YSI\y_commands>
  15. #include <streamer>
  16. #include <speedcap>
  17. #include <foreach>
  18.  
  19. #pragma tabsize 0
  20.  
  21. //----------------------------------------------------------
  22.  
  23. #define COLOR_WHITE         0xFFFFFFFF
  24. #define COLOR_NORMAL_PLAYER 0xFFBB7777
  25.  
  26. #define CITY_LOS_SANTOS     0
  27. #define CITY_SAN_FIERRO     1
  28. #define CITY_LAS_VENTURAS   2
  29.  
  30. new total_vehicles_from_files=0;
  31.  
  32. // Class selection globals
  33. new gPlayerCitySelection[MAX_PLAYERS];
  34. new gPlayerHasCitySelected[MAX_PLAYERS];
  35. new gPlayerLastCitySelectionTick[MAX_PLAYERS];
  36.  
  37. new Text:txtClassSelHelper;
  38. new Text:txtLosSantos;
  39. new Text:txtSanFierro;
  40. new Text:txtLasVenturas;
  41.  
  42. new thisanimid=0;
  43. new lastanimid=0;
  44.  
  45. //----------------------------------------------------------
  46.  
  47. main()
  48. {
  49.     print("\n---------------------------------------");
  50.     print("Running Grand Larceny - by the SA-MP team\n");
  51.     print("---------------------------------------\n");
  52. }
  53.  
  54. //----------------------------------------------------------
  55.  
  56. public OnPlayerConnect(playerid)
  57. {
  58.     GameTextForPlayer(playerid,"~w~Grand Larceny",3000,4);
  59.     SendClientMessage(playerid,COLOR_WHITE,"Welcome to {88AA88}G{FFFFFF}rand {88AA88}L{FFFFFF}arceny");
  60.    
  61.     // class selection init vars
  62.     gPlayerCitySelection[playerid] = -1;
  63.     gPlayerHasCitySelected[playerid] = 0;
  64.     gPlayerLastCitySelectionTick[playerid] = GetTickCount();
  65.  
  66.     //SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);
  67.  
  68.     //Kick(playerid);
  69.    
  70.     /*
  71.     Removes vending machines
  72.     RemoveBuildingForPlayer(playerid, 1302, 0.0, 0.0, 0.0, 6000.0);
  73.     RemoveBuildingForPlayer(playerid, 1209, 0.0, 0.0, 0.0, 6000.0);
  74.     RemoveBuildingForPlayer(playerid, 955, 0.0, 0.0, 0.0, 6000.0);
  75.     RemoveBuildingForPlayer(playerid, 1775, 0.0, 0.0, 0.0, 6000.0);
  76.     RemoveBuildingForPlayer(playerid, 1776, 0.0, 0.0, 0.0, 6000.0);
  77.     */
  78.    
  79.     /*
  80.     new ClientVersion[32];
  81.     GetPlayerVersion(playerid, ClientVersion, 32);
  82.     printf("Player %d reports client version: %s", playerid, ClientVersion);*/
  83.    
  84.     return 1;
  85. }
  86.  
  87. new SpeedoTimer[MAX_VEHICLES];
  88. new Iterator:Vehicle<MAX_VEHICLES>;
  89.  
  90. public OnVehicleSpawn(vehicleid)
  91. {
  92.     Iter_Add(Vehicle, vehicleid);
  93.     SpeedoTimer[vehicleid] = -1;
  94. }
  95.  
  96. public OnVehicleDeath(vehicleid, killerid)
  97. {
  98.     Iter_Remove(Vehicle, vehicleid);
  99. }
  100.  
  101. new VehicleTimer[MAX_VEHICLES];
  102. new VehicleTarget[MAX_VEHICLES];
  103.  
  104. new Text:SpeedoTextdrawLabel[2];
  105. new Text:SpeedoTextdrawSpeed[2][MAX_VEHICLES];
  106.  
  107. YCMD:speedo(playerid, params[], help)
  108. {
  109.     if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "You must be in a vehicle to use this!");
  110.  
  111.     if (GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, -1, "You must be the driver to use this!");
  112.  
  113.     new vehicleid = GetPlayerVehicleID(playerid);
  114.  
  115.     if (SpeedoTimer[vehicleid] == -1)
  116.     {
  117.         SendClientMessage(playerid, -1, "Speedo on");
  118.        
  119.         SpeedoTextdrawSpeed[0][vehicleid] = TextDrawCreate(550.000000, 339.000000, "999");
  120.         SpeedoTextdrawSpeed[1][vehicleid] = TextDrawCreate(550.000000, 357.000000, "999");
  121.  
  122.         for (new i = 0; i < 2; i++)
  123.         {
  124.             TextDrawAlignment(SpeedoTextdrawSpeed[i][vehicleid], 3);
  125.             TextDrawBackgroundColor(SpeedoTextdrawSpeed[i][vehicleid], 255);
  126.             TextDrawFont(SpeedoTextdrawSpeed[i][vehicleid], 3);
  127.             TextDrawLetterSize(SpeedoTextdrawSpeed[i][vehicleid], 0.370000, 1.800000);
  128.             TextDrawSetOutline(SpeedoTextdrawSpeed[i][vehicleid], 0);
  129.             TextDrawSetProportional(SpeedoTextdrawSpeed[i][vehicleid], 1);
  130.             TextDrawSetShadow(SpeedoTextdrawSpeed[i][vehicleid], 1);
  131.             TextDrawColor(SpeedoTextdrawSpeed[i][vehicleid], -1);
  132.         }
  133.        
  134.         HandleSpeedo(vehicleid, playerid);
  135.         SpeedoTimer[vehicleid] = SetTimerEx("HandleSpeedo", 500, true, "dd", vehicleid, playerid);
  136.     }
  137.     else
  138.     {
  139.         SendClientMessage(playerid, -1, "Speedo off");
  140.         KillTimer(SpeedoTimer[vehicleid]);
  141.         SpeedoTimer[vehicleid] = -1;
  142.        
  143.         TextDrawDestroy(SpeedoTextdrawSpeed[0][vehicleid]);
  144.         TextDrawDestroy(SpeedoTextdrawSpeed[1][vehicleid]);
  145.        
  146.         TextDrawHideForPlayer(playerid, SpeedoTextdrawLabel[0]);
  147.         TextDrawHideForPlayer(playerid, SpeedoTextdrawLabel[1]);
  148.     }
  149.     return 1;
  150. }
  151.  
  152. forward HandleSpeedo(vehicleid, playerid);
  153. public HandleSpeedo(vehicleid, playerid)
  154. {
  155.     new Float:speed_x, Float:speed_y, Float:speed_z, Float:final_speed;
  156.     GetVehicleVelocity(vehicleid, speed_x, speed_y, speed_z);
  157.     final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667;
  158.    
  159.     new string[5];
  160.     format(string, sizeof(string), "%d", floatround(final_speed, floatround_round));
  161.    
  162.     TextDrawSetString(SpeedoTextdrawSpeed[0][vehicleid], string);
  163.    
  164.     format(string, sizeof(string), "%d", floatround(final_speed * 1.60934, floatround_round));
  165.    
  166.     TextDrawSetString(SpeedoTextdrawSpeed[1][vehicleid], string);
  167.    
  168.     for (new t = 0; t < 2; t++)
  169.     {
  170.         TextDrawShowForPlayer(playerid, SpeedoTextdrawLabel[t]);
  171.         TextDrawShowForPlayer(playerid, SpeedoTextdrawSpeed[t][vehicleid]);
  172.     }
  173. }
  174.  
  175. YCMD:dashcam(playerid, params[], help)
  176. {
  177.     if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "You must be in a vehicle to use this!");
  178.    
  179.     if (GetPlayerVehicleSeat(playerid) != 0) return SendClientMessage(playerid, -1, "You must be the driver to use this!");
  180.    
  181.     new vehicleid = GetPlayerVehicleID(playerid);
  182.    
  183.     if (VehicleTimer[vehicleid] != -1) return SendClientMessage(playerid, -1, "Your dashcam is already on!");
  184.    
  185.     VehicleTimer[vehicleid] = SetTimerEx("DashCam", 1000, true, "d", vehicleid);
  186.    
  187.     SendClientMessage(playerid, -1, "Dashcam on");
  188.    
  189.     return 1;
  190. }
  191.  
  192. YCMD:dashcamoff(playerid, params[], help)
  193. {
  194.     new vehicleid = GetPlayerVehicleID(playerid);
  195.  
  196.     KillTimer(VehicleTimer[vehicleid]);
  197.     VehicleTimer[vehicleid] = -1;
  198.    
  199.     SendClientMessage(playerid, -1, "Dashcam off");
  200.  
  201.     return 1;
  202. }
  203.  
  204. stock Float:GetDistanceBetweenPoints(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
  205. {
  206.     x1 -= x2, y1 -= y2, z1 -= z2;
  207.     return floatsqroot((x1 * x1) + (y1 * y1) + (z1 * z1));
  208. }
  209.  
  210. forward DashCam(vehicleid);
  211. public DashCam(vehicleid)
  212. {
  213.     new Float:x, Float:y, Float:z, Float:a;
  214.     GetVehiclePos(vehicleid, x, y, z);
  215.     GetVehicleZAngle(vehicleid, a);
  216.  
  217.     new Float:points[8];
  218.     points[0] = (x + (1.0 * floatsin(-(a - 90), degrees)));
  219.     points[1] = (y + (1.0 * floatcos(-(a - 90), degrees)));
  220.     points[2] = (x + (45.0 * floatsin(-(a - 30), degrees)));
  221.     points[3] = (y + (45.0 * floatcos(-(a - 30), degrees)));
  222.     points[4] = (x + (45.0 * floatsin(-(a + 30), degrees)));
  223.     points[5] = (y + (45.0 * floatcos(-(a + 30), degrees)));
  224.     points[6] = (x + (1.0 * floatsin(-(a + 90), degrees)));
  225.     points[7] = (y + (1.0 * floatcos(-(a + 90), degrees)));
  226.    
  227.     new VehicleSearchPolygon = CreateDynamicPolygon(points);
  228.    
  229.     new Float:closestDistance = 9999999999;
  230.    
  231.     VehicleTarget[vehicleid] = -1;
  232.  
  233.     for(new v = 0; v < MAX_VEHICLES; v++)
  234.     {
  235.         if (v == vehicleid) continue;
  236.  
  237.         new Float:_x, Float:_y, Float:_z;
  238.         GetVehiclePos(v, _x, _y, _z);
  239.  
  240.         if (GetDistanceBetweenPoints(x, y, z, _x, _y, _z) > closestDistance) continue;
  241.        
  242.         if (GetDistanceBetweenPoints(0, 0, z, 0, 0, _z) > 10) continue;
  243.  
  244.         if (IsVehicleBodyInDynamicArea(v, VehicleSearchPolygon))
  245.         {
  246.             closestDistance = GetDistanceBetweenPoints(x, y, z, _x, _y, _z);
  247.             VehicleTarget[vehicleid] = v;
  248.         }
  249.     }
  250.    
  251.     if (VehicleTarget[vehicleid] != -1)
  252.     {
  253.         new string[128];
  254.         format(string, sizeof(string), "Current target vehicle (%d) is a %s", VehicleTarget[vehicleid], GetVehicleName(VehicleTarget[vehicleid]));
  255.         SendClientMessageToAll(-1, string);
  256.     }
  257. }
  258.  
  259. stock IsVehicleBodyInDynamicArea(vehicleid, areaid)
  260. {
  261.     new Float:x, Float:y, Float:z, Float:angle, Float:sX, Float:sY, Float:sZ, result;
  262.     GetVehiclePos(vehicleid, x, y, z);
  263.     GetVehicleModelInfo(vehicleid, VEHICLE_MODEL_INFO_SIZE , sX, sY, sZ);
  264.     GetVehicleZAngle(vehicleid, angle);
  265.     x += ( (sX / 2.0) * floatsin( -angle, degrees ) );
  266.     y += ( (sY / 2.0) * floatsin( -angle, degrees ) );
  267.     if(IsPointInDynamicArea(areaid, x, y, z))
  268.     {
  269.         result = 1;
  270.     }
  271.     if(result == 0)
  272.     {
  273.         GetVehicleModelInfo(vehicleid, VEHICLE_MODEL_INFO_SIZE , sX, sY, sZ);
  274.         x -= ( (sX / 2.0) * floatsin( -angle, degrees ) );
  275.         y -= ( (sY / 2.0) * floatsin( -angle, degrees ) );
  276.         if(IsPointInDynamicArea(areaid, x, y, z))
  277.         {
  278.             result = 1;
  279.         }
  280.     }
  281.     //z += (sZ / 2.0); acrtually no need to mess with the Z
  282.     return result;
  283. }
  284.  
  285. new VehicleNames[][] =
  286. {
  287.     "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
  288.     "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
  289.     "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
  290.     "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
  291.     "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
  292.     "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
  293.     "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
  294.     "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
  295.     "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
  296.     "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
  297.     "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
  298.     "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
  299.     "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
  300.     "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
  301.     "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
  302.     "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
  303.     "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
  304.     "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
  305.     "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
  306.     "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
  307.     "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
  308.     "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
  309.     "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
  310.     "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
  311.     "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
  312.     "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
  313.     "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
  314.     "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
  315.     "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
  316.     "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
  317.     "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
  318.     "Tiller", "Utility Trailer"
  319. };
  320.  
  321. stock GetVehicleName(vehicleid)
  322. {
  323.     new String[128];
  324.    
  325.     if (GetVehicleModel(vehicleid) < 400)
  326.     {
  327.         format(String, sizeof(String), "null");
  328.         return String;
  329.     }
  330.     format(String,sizeof(String),"%s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
  331.     return String;
  332. }
  333.  
  334. //----------------------------------------------------------
  335.  
  336. public OnPlayerSpawn(playerid)
  337. {
  338.     if(IsPlayerNPC(playerid)) return 1;
  339.    
  340.     new randSpawn = 0;
  341.    
  342.     SetPlayerInterior(playerid,0);
  343.     TogglePlayerClock(playerid,0);
  344.     ResetPlayerMoney(playerid);
  345.     GivePlayerMoney(playerid, 30000);
  346.  
  347.     if(CITY_LOS_SANTOS == gPlayerCitySelection[playerid]) {
  348.         randSpawn = random(sizeof(gRandomSpawns_LosSantos));
  349.         SetPlayerPos(playerid,
  350.          gRandomSpawns_LosSantos[randSpawn][0],
  351.          gRandomSpawns_LosSantos[randSpawn][1],
  352.          gRandomSpawns_LosSantos[randSpawn][2]);
  353.         SetPlayerFacingAngle(playerid,gRandomSpawns_LosSantos[randSpawn][3]);
  354.     }
  355.     else if(CITY_SAN_FIERRO == gPlayerCitySelection[playerid]) {
  356.         randSpawn = random(sizeof(gRandomSpawns_SanFierro));
  357.         SetPlayerPos(playerid,
  358.          gRandomSpawns_SanFierro[randSpawn][0],
  359.          gRandomSpawns_SanFierro[randSpawn][1],
  360.          gRandomSpawns_SanFierro[randSpawn][2]);
  361.         SetPlayerFacingAngle(playerid,gRandomSpawns_SanFierro[randSpawn][3]);
  362.     }
  363.     else if(CITY_LAS_VENTURAS == gPlayerCitySelection[playerid]) {
  364.         randSpawn = random(sizeof(gRandomSpawns_LasVenturas));
  365.         SetPlayerPos(playerid,
  366.          gRandomSpawns_LasVenturas[randSpawn][0],
  367.          gRandomSpawns_LasVenturas[randSpawn][1],
  368.          gRandomSpawns_LasVenturas[randSpawn][2]);
  369.         SetPlayerFacingAngle(playerid,gRandomSpawns_LasVenturas[randSpawn][3]);
  370.     }
  371.  
  372.     //SetPlayerColor(playerid,COLOR_NORMAL_PLAYER);
  373.    
  374.     SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL,200);
  375.     SetPlayerSkillLevel(playerid,WEAPONSKILL_PISTOL_SILENCED,200);
  376.     SetPlayerSkillLevel(playerid,WEAPONSKILL_DESERT_EAGLE,200);
  377.     SetPlayerSkillLevel(playerid,WEAPONSKILL_SHOTGUN,200);
  378.     SetPlayerSkillLevel(playerid,WEAPONSKILL_SAWNOFF_SHOTGUN,200);
  379.     SetPlayerSkillLevel(playerid,WEAPONSKILL_SPAS12_SHOTGUN,200);
  380.     SetPlayerSkillLevel(playerid,WEAPONSKILL_MICRO_UZI,200);
  381.     SetPlayerSkillLevel(playerid,WEAPONSKILL_MP5,200);
  382.     SetPlayerSkillLevel(playerid,WEAPONSKILL_AK47,200);
  383.     SetPlayerSkillLevel(playerid,WEAPONSKILL_M4,200);
  384.     SetPlayerSkillLevel(playerid,WEAPONSKILL_SNIPERRIFLE,200);
  385.    
  386.     GivePlayerWeapon(playerid,WEAPON_COLT45,100);
  387.     //GivePlayerWeapon(playerid,WEAPON_MP5,100);
  388.     TogglePlayerClock(playerid, 0);
  389.  
  390.     return 1;
  391. }
  392.  
  393. public OnPlayerDisconnect(playerid)
  394. {
  395.  
  396. }
  397.  
  398. //----------------------------------------------------------
  399.  
  400. public OnPlayerDeath(playerid, killerid, reason)
  401. {
  402.     new playercash;
  403.    
  404.     // if they ever return to class selection make them city
  405.     // select again first
  406.     gPlayerHasCitySelected[playerid] = 0;
  407.    
  408.     if(killerid == INVALID_PLAYER_ID) {
  409.         ResetPlayerMoney(playerid);
  410.     } else {
  411.         playercash = GetPlayerMoney(playerid);
  412.         if(playercash > 0)  {
  413.             GivePlayerMoney(killerid, playercash);
  414.             ResetPlayerMoney(playerid);
  415.         }
  416.     }
  417.     return 1;
  418. }
  419.  
  420. //----------------------------------------------------------
  421.  
  422. ClassSel_SetupCharSelection(playerid)
  423. {
  424.     if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
  425.         SetPlayerInterior(playerid,11);
  426.         SetPlayerPos(playerid,508.7362,-87.4335,998.9609);
  427.         SetPlayerFacingAngle(playerid,0.0);
  428.         SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609);
  429.         SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609);
  430.     }
  431.     else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
  432.         SetPlayerInterior(playerid,3);
  433.         SetPlayerPos(playerid,-2673.8381,1399.7424,918.3516);
  434.         SetPlayerFacingAngle(playerid,181.0);
  435.         SetPlayerCameraPos(playerid,-2673.2776,1394.3859,918.3516);
  436.         SetPlayerCameraLookAt(playerid,-2673.8381,1399.7424,918.3516);
  437.     }
  438.     else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
  439.         SetPlayerInterior(playerid,3);
  440.         SetPlayerPos(playerid,349.0453,193.2271,1014.1797);
  441.         SetPlayerFacingAngle(playerid,286.25);
  442.         SetPlayerCameraPos(playerid,352.9164,194.5702,1014.1875);
  443.         SetPlayerCameraLookAt(playerid,349.0453,193.2271,1014.1797);
  444.     }
  445.    
  446. }
  447.  
  448. //----------------------------------------------------------
  449. // Used to init textdraws of city names
  450.  
  451. ClassSel_InitCityNameText(Text:txtInit)
  452. {
  453.     TextDrawUseBox(txtInit, 0);
  454.     TextDrawLetterSize(txtInit,1.25,3.0);
  455.     TextDrawFont(txtInit, 0);
  456.     TextDrawSetShadow(txtInit,0);
  457.     TextDrawSetOutline(txtInit,1);
  458.     TextDrawColor(txtInit,0xEEEEEEFF);
  459.     TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
  460. }
  461.  
  462. //----------------------------------------------------------
  463.  
  464. ClassSel_InitTextDraws()
  465. {
  466.     // Init our observer helper text display
  467.     txtLosSantos = TextDrawCreate(10.0, 380.0, "Los Santos");
  468.     ClassSel_InitCityNameText(txtLosSantos);
  469.     txtSanFierro = TextDrawCreate(10.0, 380.0, "San Fierro");
  470.     ClassSel_InitCityNameText(txtSanFierro);
  471.     txtLasVenturas = TextDrawCreate(10.0, 380.0, "Las Venturas");
  472.     ClassSel_InitCityNameText(txtLasVenturas);
  473.  
  474.     // Init our observer helper text display
  475.     txtClassSelHelper = TextDrawCreate(10.0, 415.0,
  476.        " Press ~b~~k~~GO_LEFT~ ~w~or ~b~~k~~GO_RIGHT~ ~w~to switch cities.~n~ Press ~r~~k~~PED_FIREWEAPON~ ~w~to select.");
  477.     TextDrawUseBox(txtClassSelHelper, 1);
  478.     TextDrawBoxColor(txtClassSelHelper,0x222222BB);
  479.     TextDrawLetterSize(txtClassSelHelper,0.3,1.0);
  480.     TextDrawTextSize(txtClassSelHelper,400.0,40.0);
  481.     TextDrawFont(txtClassSelHelper, 2);
  482.     TextDrawSetShadow(txtClassSelHelper,0);
  483.     TextDrawSetOutline(txtClassSelHelper,1);
  484.     TextDrawBackgroundColor(txtClassSelHelper,0x000000FF);
  485.     TextDrawColor(txtClassSelHelper,0xFFFFFFFF);
  486. }
  487.  
  488. //----------------------------------------------------------
  489.  
  490. ClassSel_SetupSelectedCity(playerid)
  491. {
  492.     if(gPlayerCitySelection[playerid] == -1) {
  493.         gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
  494.     }
  495.    
  496.     if(gPlayerCitySelection[playerid] == CITY_LOS_SANTOS) {
  497.         SetPlayerInterior(playerid,0);
  498.         SetPlayerCameraPos(playerid,1630.6136,-2286.0298,110.0);
  499.         SetPlayerCameraLookAt(playerid,1887.6034,-1682.1442,47.6167);
  500.        
  501.         TextDrawShowForPlayer(playerid,txtLosSantos);
  502.         TextDrawHideForPlayer(playerid,txtSanFierro);
  503.         TextDrawHideForPlayer(playerid,txtLasVenturas);
  504.     }
  505.     else if(gPlayerCitySelection[playerid] == CITY_SAN_FIERRO) {
  506.         SetPlayerInterior(playerid,0);
  507.         SetPlayerCameraPos(playerid,-1300.8754,68.0546,129.4823);
  508.         SetPlayerCameraLookAt(playerid,-1817.9412,769.3878,132.6589);
  509.        
  510.         TextDrawHideForPlayer(playerid,txtLosSantos);
  511.         TextDrawShowForPlayer(playerid,txtSanFierro);
  512.         TextDrawHideForPlayer(playerid,txtLasVenturas);
  513.     }
  514.     else if(gPlayerCitySelection[playerid] == CITY_LAS_VENTURAS) {
  515.         SetPlayerInterior(playerid,0);
  516.         SetPlayerCameraPos(playerid,1310.6155,1675.9182,110.7390);
  517.         SetPlayerCameraLookAt(playerid,2285.2944,1919.3756,68.2275);
  518.        
  519.         TextDrawHideForPlayer(playerid,txtLosSantos);
  520.         TextDrawHideForPlayer(playerid,txtSanFierro);
  521.         TextDrawShowForPlayer(playerid,txtLasVenturas);
  522.     }
  523. }
  524.  
  525. //----------------------------------------------------------
  526.  
  527. ClassSel_SwitchToNextCity(playerid)
  528. {
  529.     gPlayerCitySelection[playerid]++;
  530.     if(gPlayerCitySelection[playerid] > CITY_LAS_VENTURAS) {
  531.         gPlayerCitySelection[playerid] = CITY_LOS_SANTOS;
  532.     }
  533.     PlayerPlaySound(playerid,1052,0.0,0.0,0.0);
  534.     gPlayerLastCitySelectionTick[playerid] = GetTickCount();
  535.     ClassSel_SetupSelectedCity(playerid);
  536. }
  537.  
  538. //----------------------------------------------------------
  539.  
  540. ClassSel_SwitchToPreviousCity(playerid)
  541. {
  542.     gPlayerCitySelection[playerid]--;
  543.     if(gPlayerCitySelection[playerid] < CITY_LOS_SANTOS) {
  544.         gPlayerCitySelection[playerid] = CITY_LAS_VENTURAS;
  545.     }
  546.     PlayerPlaySound(playerid,1053,0.0,0.0,0.0);
  547.     gPlayerLastCitySelectionTick[playerid] = GetTickCount();
  548.     ClassSel_SetupSelectedCity(playerid);
  549. }
  550.  
  551. //----------------------------------------------------------
  552.  
  553. ClassSel_HandleCitySelection(playerid)
  554. {
  555.     new Keys,ud,lr;
  556.     GetPlayerKeys(playerid,Keys,ud,lr);
  557.    
  558.     if(gPlayerCitySelection[playerid] == -1) {
  559.         ClassSel_SwitchToNextCity(playerid);
  560.         return;
  561.     }
  562.  
  563.     // only allow new selection every ~500 ms
  564.     if( (GetTickCount() - gPlayerLastCitySelectionTick[playerid]) < 500 ) return;
  565.    
  566.     if(Keys & KEY_FIRE) {
  567.         gPlayerHasCitySelected[playerid] = 1;
  568.         TextDrawHideForPlayer(playerid,txtClassSelHelper);
  569.         TextDrawHideForPlayer(playerid,txtLosSantos);
  570.         TextDrawHideForPlayer(playerid,txtSanFierro);
  571.         TextDrawHideForPlayer(playerid,txtLasVenturas);
  572.         TogglePlayerSpectating(playerid,0);
  573.         return;
  574.     }
  575.    
  576.     if(lr > 0) {
  577.        ClassSel_SwitchToNextCity(playerid);
  578.     }
  579.     else if(lr < 0) {
  580.        ClassSel_SwitchToPreviousCity(playerid);
  581.     }
  582. }
  583.  
  584. //----------------------------------------------------------
  585.  
  586. public OnPlayerRequestClass(playerid, classid)
  587. {
  588.     if(IsPlayerNPC(playerid)) return 1;
  589.  
  590.     if(gPlayerHasCitySelected[playerid]) {
  591.         ClassSel_SetupCharSelection(playerid);
  592.         return 1;
  593.     } else {
  594.         if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING) {
  595.             TogglePlayerSpectating(playerid,1);
  596.             TextDrawShowForPlayer(playerid, txtClassSelHelper);
  597.             gPlayerCitySelection[playerid] = -1;
  598.         }
  599.     }
  600.    
  601.     return 0;
  602. }
  603.  
  604. //----------------------------------------------------------
  605.  
  606. public OnGameModeInit()
  607. {
  608.     SetGameModeText("Grand Larceny");
  609.     ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
  610.     ShowNameTags(1);
  611.     SetNameTagDrawDistance(40.0);
  612.     EnableStuntBonusForAll(0);
  613.     DisableInteriorEnterExits();
  614.     SetWeather(2);
  615.     SetWorldTime(11);
  616.  
  617.     UsePlayerPedAnims();
  618.     //ManualVehicleEngineAndLights();
  619.     //LimitGlobalChatRadius(300.0);
  620.    
  621.     ClassSel_InitTextDraws();
  622.  
  623.     // Player Class
  624.     AddPlayerClass(281,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  625.     AddPlayerClass(282,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  626.     AddPlayerClass(283,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  627.     AddPlayerClass(284,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  628.     AddPlayerClass(285,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  629.     AddPlayerClass(286,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  630.     AddPlayerClass(287,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  631.     AddPlayerClass(288,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  632.     AddPlayerClass(289,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  633.     AddPlayerClass(265,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  634.     AddPlayerClass(266,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  635.     AddPlayerClass(267,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  636.     AddPlayerClass(268,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  637.     AddPlayerClass(269,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  638.     AddPlayerClass(270,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  639.     AddPlayerClass(1,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  640.     AddPlayerClass(2,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  641.     AddPlayerClass(3,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  642.     AddPlayerClass(4,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  643.     AddPlayerClass(5,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  644.     AddPlayerClass(6,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  645.     AddPlayerClass(8,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  646.     AddPlayerClass(42,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  647.     AddPlayerClass(65,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  648.     //AddPlayerClass(74,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  649.     AddPlayerClass(86,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  650.     AddPlayerClass(119,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  651.     AddPlayerClass(149,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  652.     AddPlayerClass(208,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  653.     AddPlayerClass(273,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  654.     AddPlayerClass(289,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  655.    
  656.     AddPlayerClass(47,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  657.     AddPlayerClass(48,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  658.     AddPlayerClass(49,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  659.     AddPlayerClass(50,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  660.     AddPlayerClass(51,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  661.     AddPlayerClass(52,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  662.     AddPlayerClass(53,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  663.     AddPlayerClass(54,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  664.     AddPlayerClass(55,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  665.     AddPlayerClass(56,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  666.     AddPlayerClass(57,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  667.     AddPlayerClass(58,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  668.     AddPlayerClass(68,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  669.     AddPlayerClass(69,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  670.     AddPlayerClass(70,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  671.     AddPlayerClass(71,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  672.     AddPlayerClass(72,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  673.     AddPlayerClass(73,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  674.     AddPlayerClass(75,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  675.     AddPlayerClass(76,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  676.     AddPlayerClass(78,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  677.     AddPlayerClass(79,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  678.     AddPlayerClass(80,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  679.     AddPlayerClass(81,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  680.     AddPlayerClass(82,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  681.     AddPlayerClass(83,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  682.     AddPlayerClass(84,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  683.     AddPlayerClass(85,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  684.     AddPlayerClass(87,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  685.     AddPlayerClass(88,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  686.     AddPlayerClass(89,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  687.     AddPlayerClass(91,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  688.     AddPlayerClass(92,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  689.     AddPlayerClass(93,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  690.     AddPlayerClass(95,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  691.     AddPlayerClass(96,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  692.     AddPlayerClass(97,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  693.     AddPlayerClass(98,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  694.     AddPlayerClass(99,1759.0189,-1898.1260,13.5622,266.4503,-1,-1,-1,-1,-1,-1);
  695.  
  696.     // SPECIAL
  697.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/trains.txt");
  698.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/pilots.txt");
  699.  
  700.     // LAS VENTURAS
  701.      total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_law.txt");
  702.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_airport.txt");
  703.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_gen.txt");
  704.    
  705.     // SAN FIERRO
  706.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_law.txt");
  707.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_airport.txt");
  708.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_gen.txt");
  709.    
  710.     // LOS SANTOS
  711.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
  712.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
  713.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
  714.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");
  715.    
  716.     // OTHER AREAS
  717.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/whetstone.txt");
  718.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/bone.txt");
  719.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/flint.txt");
  720.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/tierra.txt");
  721.     total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/red_county.txt");
  722.  
  723.     printf("Total vehicles from files: %d",total_vehicles_from_files);
  724.    
  725.     for (new v = 0; v < MAX_VEHICLES; v++)
  726.     {
  727.         SpeedoTimer[v] = -1;
  728.     }
  729.  
  730.     SpeedoTextdrawLabel[0] = TextDrawCreate(580.000000, 339.000000, "MPH");
  731.  
  732.     SpeedoTextdrawLabel[1] = TextDrawCreate(577.000000, 357.000000, "KPH");
  733.  
  734.     for (new i = 0; i < 2; i++)
  735.     {
  736.         TextDrawAlignment(SpeedoTextdrawLabel[i], 3);
  737.         TextDrawBackgroundColor(SpeedoTextdrawLabel[i], 255);
  738.         TextDrawFont(SpeedoTextdrawLabel[i], 3);
  739.         TextDrawLetterSize(SpeedoTextdrawLabel[i], 0.370000, 1.800000);
  740.         TextDrawSetOutline(SpeedoTextdrawLabel[i], 0);
  741.         TextDrawSetProportional(SpeedoTextdrawLabel[i], 1);
  742.         TextDrawSetShadow(SpeedoTextdrawLabel[i], 1);
  743.         TextDrawColor(SpeedoTextdrawLabel[i], -858993921);
  744.     }
  745.  
  746.     return 1;
  747. }
  748.  
  749. //----------------------------------------------------------
  750.  
  751. public OnPlayerUpdate(playerid)
  752. {
  753.     if(!IsPlayerConnected(playerid)) return 0;
  754.     if(IsPlayerNPC(playerid)) return 1;
  755.  
  756.     // changing cities by inputs
  757.     if( !gPlayerHasCitySelected[playerid] &&
  758.         GetPlayerState(playerid) == PLAYER_STATE_SPECTATING ) {
  759.         ClassSel_HandleCitySelection(playerid);
  760.         return 1;
  761.     }
  762.    
  763.     // No weapons in interiors
  764.     if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0) {
  765.         SetPlayerArmedWeapon(playerid,0); // fists
  766.         return 0; // no syncing until they change their weapon
  767.     }
  768.    
  769.     // Don't allow minigun
  770.     if(GetPlayerWeapon(playerid) == WEAPON_MINIGUN) {
  771.         Kick(playerid);
  772.         return 0;
  773.     }
  774.    
  775.     /* No jetpacks allowed
  776.     if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK) {
  777.         Kick(playerid);
  778.         return 0;
  779.     }*/
  780.  
  781.     /* For testing animations
  782.     new msg[128+1];
  783.     new animlib[32+1];
  784.     new animname[32+1];
  785.  
  786.     thisanimid = GetPlayerAnimationIndex(playerid);
  787.     if(lastanimid != thisanimid)
  788.     {
  789.         GetAnimationName(thisanimid,animlib,32,animname,32);
  790.         format(msg, 128, "anim(%d,%d): %s %s", lastanimid, thisanimid, animlib, animname);
  791.         lastanimid = thisanimid;
  792.         SendClientMessage(playerid, 0xFFFFFFFF, msg);
  793.     }*/
  794.  
  795.     return 1;
  796. }
  797.  
  798. //----------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement