Advertisement
Guest User

Seif

a guest
Mar 31st, 2008
991
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 30.74 KB | None | 0 0
  1. //> Includes <//
  2. #include <a_samp>
  3. //> Pragmas <//
  4. //#pragma unused dmvcp
  5. //> Defines <//
  6. #define GREEN 0x21DD00FF
  7. #define RED 0xE60000FF
  8. #define YELLOW 0xFFFF00FF
  9. #define ORANGE 0xF97804FF
  10. #define GRAY 0xCECECEFF
  11. #define LIGHTBLUE 0x00C2ECFF
  12. //#define CHECKPOINT_DMV 0
  13. #define DrivingTestCash 5000 // Edit this if needed. 5000 = the cash that you'll pay to take the driving test
  14. #define TooSlow 120 // 120 = if the time is 110 or more, you are driving too slow. You may edit this if needed.
  15. #define TooFast 105 // 105 = if the time is less than 105, you are driving too fast. You may edit this if needed.
  16. #define MINVEHHP 900 // 900 = the minimum vehicle health the vehicle can have to pass the test. You may edit this if needed.
  17. //> Variables <//
  18. new Menu:dmvoption[MAX_PLAYERS];
  19. new Float:DrivingSchoolCP[31][3] =
  20. {
  21.     {-2047.318237, -78.493286, 35.043674}, // Starting of the first test's checkpoints
  22.     {-2020.431396, -72.462600, 35.046836},
  23.     {-2004.230468, -63.067325, 35.043403},
  24.     {-2004.557861, 92.230476, 27.414079},
  25.     {-2001.461181, 306.811828, 34.771896},
  26.     {-2016.024169, 322.754547, 34.890529},
  27.     {-2134.363769, 321.980102, 35.024250},
  28.     {-2238.925292, 322.899688, 35.046855},
  29.     {-2249.107177, 327.225555, 35.046890},
  30.     {-2298.212402, 411.341003, 34.885196},
  31.     {-2321.346435, 410.600982, 34.890609},
  32.     {-2423.162597, 55.284839, 34.890628},
  33.     {-2485.413818, 42.110366, 26.862459},
  34.     {-2590.423339, 41.848583, 4.056760},
  35.     {-2606.167480, 32.018920, 4.118466},
  36.     {-2606.167480, -57.042472, 4.054659},
  37.     {-2597.467041, -72.002243, 4.125582},
  38.     {-2514.526123, -72.963630, 24.342817},
  39.     {-2386.916503, -71.996078, 35.038841},
  40.     {-2273.539550, -72.938049, 35.039089},
  41.     {-2261.753173, -83.578163, 35.046840},
  42.     {-2260.035400, -177.289489, 35.046775},
  43.     {-2245.059814, -192.252777, 35.046882},
  44.     {-2164.877441, -82.917831, 35.046836},
  45.     {-2154.212402, -72.622978, 35.046878},
  46.     {-2052.066894, -72.116477, 35.042152},
  47.     {-2047.616333, -88.755950, 35.038990},
  48.     {-2025.749145, -97.650115, 35.039009},
  49.     {-2044.890747, -139.023742, 35.188522}, // Starting of the second test's checkpoints
  50.     {-2056.534667, -222.281845, 35.198474},
  51.     {-2062.643554, -118.802627, 35.325977}
  52. };
  53. new DMVCP[MAX_PLAYERS];
  54. new dmvcar,dmvcar2;
  55. new DrivingLicense[MAX_PLAYERS];
  56. new DMVTest[MAX_PLAYERS];
  57. new DMVCount[MAX_PLAYERS];
  58. new DrivingTestTime[MAX_PLAYERS];
  59. new DMVT,DMVT2;
  60. new barrier;
  61.  
  62. new
  63.     Password[MAX_PLAYERS],
  64.     IP[MAX_PLAYERS],
  65.     IsLogged[MAX_PLAYERS];
  66. //> Forwards <//
  67. forward DrivingTestCount(playerid);
  68. forward DrivingTestCount2(playerid);
  69. forward DMVTest2Barrels(playerid);
  70.  
  71. forward OnPlayerRegister(playerid,password[]);
  72. forward OnPlayerLogin(playerid,password[]);
  73. forward OnPlayerUpdate(playerid);
  74. forward Encrypt(string[]);
  75. //> Callbacks <//
  76. main() return 1;
  77. stock ini_GetKey( line[] )
  78. {
  79.     new keyRes[256];
  80.     keyRes[0] = 0;
  81.     if ( strfind( line , "=" , true ) == -1 ) return keyRes;
  82.     strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
  83.     return keyRes;
  84. }
  85.  
  86. stock ini_GetValue( line[] )
  87. {
  88.     new valRes[256];
  89.     valRes[0]=0;
  90.     if ( strfind( line , "=" , true ) == -1 ) return valRes;
  91.     strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
  92.     return valRes;
  93. }
  94.  
  95. stock strtok(const string[], &index,seperator=' ')
  96. {
  97.     new length = strlen(string);
  98.     new offset = index;
  99.     new result[128];
  100.     while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  101.     {
  102.         result[index - offset] = string[index];
  103.         index++;
  104.     }
  105.  
  106.     result[index - offset] = EOS;
  107.     if ((index < length) && (string[index] == seperator))
  108.     {
  109.         index++;
  110.     }
  111.     return result;
  112. }
  113.  
  114. public Encrypt(string[])
  115. {
  116.     for(new x=0; x < strlen(string); x++)
  117.       {
  118.           string[x] += (3^x) * (x % 15);
  119.           if(string[x] > (0xff))
  120.           {
  121.               string[x] -= 256;
  122.           }
  123.       }
  124.     return 1;
  125. }
  126.  
  127. public OnPlayerRegister(playerid, password[])
  128. {
  129.     if(IsPlayerConnected(playerid))
  130.     {
  131.             new player[24];
  132.             GetPlayerName(playerid, player, 50);
  133.             new string3[128];
  134.             new playername3[MAX_PLAYER_NAME];
  135.             GetPlayerName(playerid, playername3, sizeof(playername3));
  136.             format(string3, sizeof(string3), "[DMV]%s.ini", playername3);
  137.             new ip[20];
  138.             GetPlayerIp(playerid,ip,sizeof(ip));
  139.             new File: hFile = fopen(string3, io_write);
  140.             if (hFile)
  141.             {
  142.                 strmid(Password[playerid], password, 0, strlen(password), 255);
  143.                 new var[128];
  144.                 format(var, 128, "Password=%s\n", Password[playerid]);fwrite(hFile, var);
  145.                 format(var, 128, "CarLicense=%d\n", DrivingLicense[playerid]);fwrite(hFile, var);
  146.                 format(var, 128, "IP=%s\n",IP[playerid]);fwrite(hFile, var);
  147.                 fclose(hFile);
  148.                 SendClientMessage(playerid, GREEN, "» You have successfully registered an account. You may now /login");
  149.             }
  150.     }
  151.     return 1;
  152. }
  153.  
  154. public OnPlayerUpdate(playerid)
  155. {
  156.     if(IsPlayerConnected(playerid))
  157.     {
  158.         if(IsLogged[playerid])
  159.         {
  160.             new string3[128];
  161.             new playername3[MAX_PLAYER_NAME];
  162.             GetPlayerName(playerid, playername3, sizeof(playername3));
  163.             format(string3, sizeof(string3), "[DMV]%s.ini", playername3);
  164.             new ip[20];
  165.             GetPlayerIp(playerid,ip,sizeof(ip));
  166.             new File: hFile = fopen(string3, io_write);
  167.             if (hFile)
  168.             {
  169.                 new var[128];
  170.                 format(var, 128, "Password=%s\n", Password[playerid]);fwrite(hFile, var);
  171.                 format(var, 128, "CarLicense=%d\n", DrivingLicense[playerid]);fwrite(hFile, var);
  172.                 format(var, 128, "IP=%s\n",IP[playerid]);fwrite(hFile, var);
  173.                 fclose(hFile);
  174.             }
  175.         }
  176.     }
  177.     return 1;
  178. }
  179.  
  180. public OnPlayerLogin(playerid,password[])
  181. {
  182. //  new tmp2[256];
  183.     new string2[128];
  184.     new playername2[MAX_PLAYER_NAME];
  185.     GetPlayerName(playerid, playername2, sizeof(playername2));
  186.     format(string2, sizeof(string2), "[DMV]%s.ini", playername2);
  187.     new File: UserFile = fopen(string2, io_read);
  188.     if ( UserFile )
  189.     {
  190.         new PassData[256];
  191.         new keytmp[256], valtmp[256];
  192.         fread( UserFile , PassData , sizeof( PassData ) );
  193.         keytmp = ini_GetKey( PassData );
  194.         if( strcmp( keytmp , "Password" , true ) == 0 )
  195.         {
  196.             valtmp = ini_GetValue( PassData );
  197.             strmid(Password[playerid], valtmp, 0, strlen(valtmp)-1, 255);
  198.         }
  199.         if(strcmp(Password[playerid],password, true ) == 0 )
  200.         {
  201.                 new key[256] , val[256];
  202.                 new Data[256];
  203.                 while ( fread( UserFile , Data , sizeof( Data ) ) )
  204.                 {
  205.                     key = ini_GetKey( Data );
  206.                     if( strcmp( key , "DrivingLicense" , true ) == 0 )
  207.                     {
  208.                         val = ini_GetValue( Data );
  209.                         DrivingLicense[playerid] = strval( val );
  210.                     }
  211.                 }
  212.                 fclose(UserFile);
  213.                 IsLogged[playerid] = 1;
  214.  
  215.         }
  216.         else
  217.         {
  218.             SendClientMessage(playerid, RED, "Incorrect Password.");
  219.             fclose(UserFile);
  220.             return 1;
  221.         }
  222.         format(string2, sizeof(string2), "» You have logged in as %s",playername2);
  223.         SendClientMessage(playerid, GREEN,string2);
  224.         printf("[DMV] %s has logged in.",playername2);
  225.     }
  226.     return 1;
  227. }
  228.  
  229. public OnGameModeInit()
  230. {
  231.     dmvcar = AddStaticVehicle(445,-2027,-94,35,92,1,1);
  232.     dmvcar2 = AddStaticVehicle(445,-2047,-109,35,269,1,1);
  233.     return 1;
  234. }
  235.  
  236. public OnPlayerConnect(playerid)
  237. {
  238.     new Ip[20];
  239.     GetPlayerIp(playerid,Ip,sizeof(Ip));
  240.    
  241.     strmid(Password[playerid]," ",0,1,1);
  242.     strmid(IP[playerid],Ip,0,1,1);
  243.     DrivingLicense[playerid] = 0;
  244.     IsLogged[playerid] = 0;
  245.  
  246.     dmvoption[playerid] = CreateMenu(" Driving School",0,200,100,300,500);
  247.     SetMenuColumnHeader(dmvoption[playerid],0,"Would you like to take the test?");
  248.     AddMenuItem(dmvoption[playerid],0,"Yes, I want to take the test");
  249.     AddMenuItem(dmvoption[playerid],0,"No, I am not ready yet.");
  250.     SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  251.     DMVCP[playerid] = -1;
  252.     DMVTest[playerid] = 0;
  253.     return 1;
  254. }
  255.  
  256. public OnPlayerDisconnect(playerid, reason)
  257. {
  258.     new dmvadmiral = dmvcar || dmvcar2;
  259.     if (GetPlayerVehicleID(playerid) == dmvcar || GetPlayerVehicleID(playerid) == dmvcar2) SetVehicleToRespawn(dmvadmiral);
  260.    
  261.     OnPlayerUpdate(playerid);
  262.     return 1;
  263. }
  264.  
  265. public OnPlayerSpawn(playerid)
  266. {
  267.     return 1;
  268. }
  269.  
  270. public OnPlayerDeath(playerid, killerid, reason)
  271. {
  272.     if (DMVTest[playerid] == 1)
  273.     {
  274.         SendClientMessage(playerid,RED,"You 'died' during a driving test. Therefore, it has been cancelled.");
  275.         DisablePlayerCheckpoint(playerid);
  276.         DMVCP[playerid] = -1;
  277.         DMVTest[playerid] = 0;
  278.         KillTimer(DMVT);
  279.         SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  280.     }
  281.     return 1;
  282. }
  283.  
  284. public OnPlayerCommandText(playerid, cmdtext[])
  285. {
  286.     new cmd[256];
  287.     new tmp[256];
  288.     new idx;
  289.     new sendername[MAX_PLAYER_NAME];
  290.     cmd = strtok(cmdtext,idx);
  291.     if(strcmp(cmdtext, "/dmv", true) == 0)
  292.     {
  293.         SetPlayerPos(playerid,-2027.835693, -98.881484, 35.164062);
  294.         SetPlayerFacingAngle(playerid,180);
  295.         SetCameraBehindPlayer(playerid);
  296.         return 1;
  297.     }
  298.     if(strcmp(cmdtext, "/stopdmvtest", true) == 0)
  299.     {
  300.         if (DMVTest[playerid] == 0)
  301.         {
  302.             SendClientMessage(playerid,RED,"You're not having a driving test.");
  303.             return 1;
  304.         }
  305.         SendClientMessage(playerid,GREEN,"You abandoned the test.");
  306.         DisablePlayerCheckpoint(playerid);
  307.         DMVCP[playerid] = -1;
  308.         DMVTest[playerid] = 0;
  309.         SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  310.         return 1;
  311.     }
  312.     if(strcmp(cmdtext, "/licenses", true) == 0)
  313.     {
  314.         SendClientMessage(playerid,LIGHTBLUE,"[-------------Licenses-------------]");
  315.         if (DrivingLicense[playerid] == 0) SendClientMessage(playerid,GRAY,"Driving: Not Passed."); else SendClientMessage(playerid,GRAY,"Driving: Passed.");
  316.         return 1;
  317.     }
  318.     new string[128];
  319.     if (strcmp(cmd, "/register", true) ==0 )
  320.     {
  321.         if(IsPlayerConnected(playerid))
  322.         {
  323.             if(IsLogged[playerid])
  324.             {
  325.                 SendClientMessage(playerid, RED, "You are already logged in.");
  326.                 return 1;
  327.             }
  328.             GetPlayerName(playerid, sendername, sizeof(sendername));
  329.             format(string, sizeof(string), "[DMV]%s.ini", sendername);
  330.             new File: hFile = fopen(string, io_read);
  331.             if (hFile)
  332.             {
  333.                 SendClientMessage(playerid, RED, "That name is already taken. Please reconnect using a different username.");
  334.                 fclose(hFile);
  335.                 return 1;
  336.             }
  337.             new tmppass[128];
  338.             tmp = strtok(cmdtext, idx);
  339.             if(!strlen(tmp))
  340.             {
  341.                 SendClientMessage(playerid, ORANGE, "USAGE: /register [password]");
  342.                 return 1;
  343.             }
  344.             strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
  345.             Encrypt(tmppass);
  346.             OnPlayerRegister(playerid,tmppass);
  347.         }
  348.         return 1;
  349.     }
  350.     if (strcmp(cmd, "/login", true) ==0 )
  351.     {
  352.             new tmppass[128];
  353.             if(IsLogged[playerid])
  354.             {
  355.                 SendClientMessage(playerid, RED, "You are already logged in.");
  356.                 return 1;
  357.             }
  358.             tmp = strtok(cmdtext, idx);
  359.             if(!strlen(tmp))
  360.             {
  361.                 SendClientMessage(playerid, ORANGE, "USAGE: /login [password]");
  362.                 return 1;
  363.             }
  364.             new plname[MAX_PLAYER_NAME];
  365.             GetPlayerName(playerid, plname, sizeof(plname));
  366.             format(string, sizeof(string), "[DMV]%s.ini", plname);
  367.             if(!fexist(string))
  368.             {
  369.                 SendClientMessage(playerid, RED, "That account isn't registered! Please register: /register [password]");
  370.                 return 1;
  371.             }
  372.             strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
  373.             Encrypt(tmppass);
  374.             OnPlayerLogin(playerid,tmppass);
  375.             return 1;
  376.     }
  377.     return 0;
  378. }
  379.  
  380. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  381. {
  382.     new Float:X,Float:Y,Float:Z;
  383.     GetPlayerPos(playerid,X,Y,Z);
  384.     if (vehicleid == dmvcar && DMVTest[playerid] == 0) { SetPlayerPos(playerid,X,Y,Z+3); SendClientMessage(playerid,RED,"You didn't subscribe to take the driving test, therefore you are not allowed to drive this car."); }
  385.     if (vehicleid == dmvcar2 && DMVTest[playerid] == 0) { SetPlayerPos(playerid,X,Y,Z+3); SendClientMessage(playerid,RED,"You didn't subscribe to take the driving test, therefore you are not allowed to drive this car."); }
  386.     return 1;
  387. }
  388.  
  389. public OnPlayerExitVehicle(playerid, vehicleid)
  390. {
  391.     if (vehicleid == dmvcar) { SetVehicleToRespawn(dmvcar); SetVehicleParamsForPlayer(dmvcar,playerid,0,0); }
  392.     if (vehicleid == dmvcar2) { SetVehicleToRespawn(dmvcar2); SetVehicleParamsForPlayer(dmvcar2,playerid,0,0); }
  393.     return 1;
  394. }
  395.  
  396. public OnPlayerStateChange(playerid, newstate, oldstate)
  397. {
  398.     new vehicleid = GetPlayerVehicleID(playerid);
  399.     if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER && DMVTest[playerid] == 1 && vehicleid == dmvcar) SetVehicleParamsForPlayer(dmvcar,playerid,0,0);
  400.     if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER && DMVTest[playerid] == 1 && vehicleid == dmvcar2) SetVehicleParamsForPlayer(dmvcar2,playerid,0,0);
  401.     if (oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER && DrivingLicense[playerid] == 0 && DMVTest[playerid] == 0)
  402.     {
  403.         SendClientMessage(playerid,RED,"Warning: you might get caught for driving without a real driving license!");
  404.         new star = GetPlayerWantedLevel(playerid);
  405.         SetPlayerWantedLevel(playerid,star+1);
  406.     }
  407.     return 1;
  408. }
  409.  
  410. public OnPlayerEnterCheckpoint(playerid)
  411. {
  412.     switch(DMVCP[playerid])
  413.     {
  414.         case -1:
  415.         {
  416.             ShowMenuForPlayer(dmvoption[playerid],playerid);
  417.             TogglePlayerControllable(playerid,0);
  418.         }
  419.         case 0:
  420.         {
  421.             if(!IsPlayerInVehicle(playerid,dmvcar))
  422.             {
  423.                 SendClientMessage(playerid,RED,"You're not in the Admiral car!");
  424.             }
  425.             else
  426.             {
  427.                 DisablePlayerCheckpoint(playerid);
  428.                 DMVCP[playerid]++;
  429.                 SetPlayerCheckpoint(playerid,DrivingSchoolCP[1][0],DrivingSchoolCP[1][1],DrivingSchoolCP[1][2],5.0);
  430.                 DMVCount[playerid] = 1;
  431.                 DMVT = SetTimerEx("DrivingTestCount",1000,0,"d",playerid);
  432.                 DMVT2 = SetTimerEx("DrivingTestCount2",1000,0,"d",playerid);
  433.             }
  434.         }
  435.         case 1..26:
  436.         {
  437.             if(!IsPlayerInVehicle(playerid,dmvcar))
  438.             {
  439.                 SendClientMessage(playerid,RED,"You're not in the Admiral car!");
  440.             }
  441.             else
  442.             {
  443.                 DisablePlayerCheckpoint(playerid);
  444.                 SetPlayerCheckpoint(playerid,DrivingSchoolCP[DMVCP[playerid]+1][0],DrivingSchoolCP[DMVCP[playerid]+1][1],DrivingSchoolCP[DMVCP[playerid]+1][2],5.0);
  445.                 DMVCP[playerid]++;
  446.             }
  447.         }
  448.         case 27:
  449.         {
  450.             new Float:VehHealth;
  451.             new string[128];
  452.             GetVehicleHealth(GetPlayerVehicleID(playerid),VehHealth);
  453.             if (VehHealth < MINVEHHP)
  454.             {
  455.                 SendClientMessage(playerid,RED,"You failed the test: you weren't driving safely!");
  456.                 DrivingLicense[playerid] = 0;
  457.                 DisablePlayerCheckpoint(playerid);
  458.                 DMVCP[playerid] = -1;
  459.                 format(string, sizeof(string), "Time: %d",DrivingTestTime[playerid]);
  460.                 SendClientMessage(playerid,YELLOW,string);
  461.                 DMVTest[playerid] = 0;
  462.                 KillTimer(DMVT);
  463.                 SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  464.             }
  465.             else if (DrivingTestTime[playerid] > TooSlow)
  466.             {
  467.                 SendClientMessage(playerid,RED,"You failed the test: you were driving too slow!");
  468.                 DrivingLicense[playerid] = 0;
  469.                 DisablePlayerCheckpoint(playerid);
  470.                 DMVCP[playerid] = -1;
  471.                 format(string, sizeof(string), "Time: %d",DrivingTestTime[playerid]);
  472.                 SendClientMessage(playerid,YELLOW,string);
  473.                 DMVTest[playerid] = 0;
  474.                 KillTimer(DMVT);
  475.                 SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  476.             }
  477.             else if (DrivingTestTime[playerid] < TooFast)
  478.             {
  479.                 SendClientMessage(playerid,RED,"You failed the test: you were driving too fast!");
  480.                 DrivingLicense[playerid] = 0;
  481.                 DisablePlayerCheckpoint(playerid);
  482.                 DMVCP[playerid] = -1;
  483.                 format(string, sizeof(string), "Time: %d",DrivingTestTime[playerid]);
  484.                 SendClientMessage(playerid,YELLOW,string);
  485.                 DMVTest[playerid] = 0;
  486.                 KillTimer(DMVT);
  487.                 SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  488.             }
  489.             else if (DrivingTestTime[playerid] > TooFast && DrivingTestTime[playerid] < TooSlow)
  490.             {
  491.                 SendClientMessage(playerid,GREEN,"You passed the first test!");
  492.                 DMVCP[playerid] = 28;
  493.                 DMVTest2Barrels(playerid);
  494.                 DisablePlayerCheckpoint(playerid);
  495.                 SetPlayerCheckpoint(playerid,DrivingSchoolCP[28][0],DrivingSchoolCP[28][1],DrivingSchoolCP[28][2],5.0);
  496.                 SetPlayerPos(playerid,-2046.157592, -109.187286, 35.234008);
  497.             }
  498.  
  499.         }
  500.         case 28,29:
  501.         {
  502.             if(!IsPlayerInVehicle(playerid,dmvcar2))
  503.             {
  504.                 SendClientMessage(playerid,RED,"You're not in the Admiral car!");
  505.             }
  506.             else
  507.             {
  508.                 DisablePlayerCheckpoint(playerid);
  509.                 SetPlayerCheckpoint(playerid,DrivingSchoolCP[DMVCP[playerid]+1][0],DrivingSchoolCP[DMVCP[playerid]+1][1],DrivingSchoolCP[DMVCP[playerid]+1][2],5.0);
  510.                 DMVCP[playerid]++;
  511.                 SetPlayerObjectRot(playerid,barrier, 0, 270.6185, 3.4377);
  512.             }
  513.         }
  514.         case 30:
  515.         {
  516.             if(!IsPlayerInVehicle(playerid,dmvcar2))
  517.             {
  518.                 SendClientMessage(playerid,RED,"You're not in the Admiral car!");
  519.             }
  520.             else
  521.             {
  522.                 new string[256];
  523.                 DisablePlayerCheckpoint(playerid);
  524.                 DMVCP[playerid] = -1;
  525.                 SendClientMessage(playerid,GREEN,"You passed the driving test! Here's your license. Drive safely!");
  526.                 DrivingLicense[playerid] = 1;
  527.                 SendClientMessage(playerid,LIGHTBLUE,"You earned a driving license. ( /licenses )");
  528.                 SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  529.                 format(string, sizeof(string), "Total Time: %d",DrivingTestTime[playerid]);
  530.                 SendClientMessage(playerid,YELLOW,string);
  531.                 DMVTest[playerid] = 0;
  532.                 KillTimer(DMVT);
  533.             }
  534.         }
  535.     }
  536.     return 1;
  537. }
  538.  
  539. public OnPlayerLeaveCheckpoint(playerid)
  540. {
  541.     return 1;
  542. }
  543.  
  544. public OnPlayerSelectedMenuRow(playerid, row)
  545. {
  546.     new Menu:Current = GetPlayerMenu(playerid);
  547.     if (Current == dmvoption[playerid])
  548.     {
  549.         switch (row)
  550.         {
  551.             case 0:
  552.             {
  553.                 if (GetPlayerMoney(playerid) < DrivingTestCash)
  554.                 {
  555.                     SendClientMessage(playerid,RED,"You don't have enough cash");
  556.                     ShowMenuForPlayer(dmvoption[playerid],playerid);
  557.                     return 1;
  558.                 }
  559.                 if (DrivingLicense[playerid] == 1)
  560.                 {
  561.                     SendClientMessage(playerid,RED,"You already have a license!");
  562.                     return 1;
  563.                 }
  564.                 GivePlayerMoney(playerid,-DrivingTestCash);
  565.                 SetPlayerPos(playerid,-2027.8353, -98.8884, 35.1642);
  566.                 SetPlayerFacingAngle(playerid,355);
  567.                 SetCameraBehindPlayer(playerid);
  568.                 DisablePlayerCheckpoint(playerid);
  569.                 SetPlayerCheckpoint(playerid,DrivingSchoolCP[0][0],DrivingSchoolCP[0][1],DrivingSchoolCP[0][2],5.0);
  570.                 SendClientMessage(playerid,GREEN,"Get ready!");
  571.                 DMVCP[playerid]=0;
  572.                 SetPlayerInterior(playerid,0);
  573.                 DMVTest[playerid] = 1;
  574.                 SetVehicleParamsForPlayer(dmvcar,playerid,1,0);
  575.             }
  576.             case 1: {DisablePlayerCheckpoint(playerid);SendClientMessage(playerid,RED,"Alright, come back again!");SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);DMVCP[playerid]=-1;DMVTest[playerid] = 0;}
  577.         }
  578.         TogglePlayerControllable(playerid,1);
  579.         HideMenuForPlayer(dmvoption[playerid],playerid);
  580.     }
  581.     return 1;
  582. }
  583.  
  584. public OnPlayerExitedMenu(playerid)
  585. {
  586.     TogglePlayerControllable(playerid,1);
  587.     SetPlayerCheckpoint(playerid,-2033.396606, -117.458976, 1035.171875,2.0);
  588.     SetPlayerPos(playerid,-2029.798217, -113.841880, 1035.171875);
  589.     return 1;
  590. }
  591.  
  592. public DrivingTestCount(playerid)
  593. {
  594.     if (DMVTest[playerid] == 0)
  595.     {
  596.         KillTimer(DMVT);
  597.     }
  598.     else
  599.     {
  600.         DrivingTestTime[playerid]++;
  601.         DMVT = SetTimerEx("DrivingTestCount",1000,0,"d",playerid);
  602.     }
  603.     return 1;
  604. }
  605.  
  606. public DrivingTestCount2(playerid)
  607. {
  608.     new string[128];
  609.     if (DMVTest[playerid] == 0) { KillTimer(DMVT2); DrivingTestTime[playerid] = 0; }
  610.     else
  611.     {
  612.         format(string, sizeof(string), "%d",DrivingTestTime[playerid]);
  613.         GameTextForPlayer(playerid,string,1500,6);
  614.         DMVT2 = SetTimerEx("DrivingTestCount2",1000,0,"d",playerid);
  615.     }
  616.     return 1;
  617. }
  618.  
  619. public DMVTest2Barrels(playerid)
  620. {
  621.     CreatePlayerObject(playerid,1225, -2047.739380, -124.699600, 34.675339, 0, 0, 0);
  622.     CreatePlayerObject(playerid,1225, -2047.828735, -127.508087, 34.685390, 0, 0, 0);
  623.     CreatePlayerObject(playerid,1225, -2047.975708, -131.667175, 34.698689, 0, 0, 0);
  624.     CreatePlayerObject(playerid,1225, -2047.973022, -136.163910, 34.721497, 0, 0, 0);
  625.     CreatePlayerObject(playerid,1225, -2047.925659, -139.214722, 34.733147, 0, 0, 0);
  626.     CreatePlayerObject(playerid,1225, -2047.908203, -141.976624, 34.726067, 0, 0, 0);
  627.     CreatePlayerObject(playerid,1225, -2047.887329, -144.973816, 34.726067, 0, 0, 0);
  628.     CreatePlayerObject(playerid,1225, -2047.729858, -148.626572, 34.726067, 0, 0, 0);
  629.     CreatePlayerObject(playerid,1225, -2047.702393, -152.689362, 34.733147, 0, 0, 0);
  630.     CreatePlayerObject(playerid,1225, -2047.698242, -157.703888, 34.733147, 0, 0, 0);
  631.     CreatePlayerObject(playerid,1225, -2045.846924, -160.790421, 34.726067, 0, 0, 0);
  632.     CreatePlayerObject(playerid,1225, -2043.227295, -162.861053, 34.726067, 0, 0, 0);
  633.     CreatePlayerObject(playerid,1225, -2040.600098, -162.904633, 34.733147, 0, 0, 0);
  634.     CreatePlayerObject(playerid,1225, -2037.797485, -163.111908, 34.733147, 0, 0, 0);
  635.     CreatePlayerObject(playerid,1225, -2034.899170, -162.867844, 34.733147, 0, 0, 0);
  636.     CreatePlayerObject(playerid,1225, -2031.852295, -163.106583, 34.726067, 0, 0, 0);
  637.     CreatePlayerObject(playerid,1225, -2029.787598, -165.264786, 34.726067, 0, 0, 0);
  638.     CreatePlayerObject(playerid,1225, -2027.985352, -166.907516, 34.726067, 0, 0, 0);
  639.     CreatePlayerObject(playerid,1225, -2027.733643, -170.627853, 34.726067, 0, 0, 0);
  640.     CreatePlayerObject(playerid,1225, -2027.643677, -174.075684, 34.726067, 0, 0, 0);
  641.     CreatePlayerObject(playerid,1225, -2027.636963, -178.923584, 34.726067, 0, 0, 0);
  642.     CreatePlayerObject(playerid,1225, -2027.671143, -183.302338, 34.726067, 0, 0, 0);
  643.     CreatePlayerObject(playerid,1225, -2027.617920, -186.658890, 34.726067, 0, 0, 0);
  644.     CreatePlayerObject(playerid,1225, -2027.563721, -191.181686, 34.726067, 0, 0, 0);
  645.     CreatePlayerObject(playerid,1225, -2027.580078, -195.068634, 34.726067, 0, 0, 0);
  646.     CreatePlayerObject(playerid,1225, -2029.627197, -196.768021, 34.726067, 0, 0, 0);
  647.     CreatePlayerObject(playerid,1225, -2032.301880, -196.650391, 34.726067, 0, 0, 0);
  648.     CreatePlayerObject(playerid,1225, -2035.021729, -196.580505, 34.726067, 0, 0, 0);
  649.     CreatePlayerObject(playerid,1225, -2037.809937, -196.429749, 34.726067, 0, 0, 0);
  650.     CreatePlayerObject(playerid,1225, -2039.987305, -195.957809, 34.726067, 0, 0, 0);
  651.     CreatePlayerObject(playerid,1225, -2043.569214, -195.811615, 34.726067, 0, 0, 0);
  652.     CreatePlayerObject(playerid,1225, -2045.273193, -198.124237, 34.726067, 0, 0, 0);
  653.     CreatePlayerObject(playerid,1225, -2047.288330, -200.983261, 34.733147, 0, 0, 0);
  654.     CreatePlayerObject(playerid,1225, -2049.360107, -203.673172, 34.733147, 0, 0, 0);
  655.     CreatePlayerObject(playerid,1225, -2052.088623, -206.996796, 34.726067, 0, 0, 0);
  656.     CreatePlayerObject(playerid,1225, -2053.906738, -209.363663, 34.726067, 0, 0, 0);
  657.     CreatePlayerObject(playerid,1225, -2054.351563, -211.975128, 34.726067, 0, 0, 0);
  658.     CreatePlayerObject(playerid,1225, -2054.267090, -214.795746, 34.733147, 0, 0, 0);
  659.     CreatePlayerObject(playerid,1225, -2054.124268, -217.791809, 34.733147, 0, 0, 0);
  660.     CreatePlayerObject(playerid,1225, -2055.906250, -219.694305, 34.733147, 0, 0, 0);
  661.     CreatePlayerObject(playerid,1225, -2057.633545, -219.397446, 34.726067, 0, 0, 0);
  662.     CreatePlayerObject(playerid,1225, -2058.626953, -217.816498, 34.726067, 0, 0, 0);
  663.     CreatePlayerObject(playerid,1225, -2058.747559, -215.103271, 34.726067, 0, 0, 0);
  664.     CreatePlayerObject(playerid,1225, -2058.573486, -211.342789, 34.726067, 0, 0, 0);
  665.     CreatePlayerObject(playerid,1225, -2058.686035, -208.026291, 34.726067, 0, 0, 0);
  666.     CreatePlayerObject(playerid,1225, -2058.655762, -204.211914, 34.726067, 0, 0, 0);
  667.     CreatePlayerObject(playerid,1225, -2058.548828, -199.790741, 34.726067, 0, 0, 0);
  668.     CreatePlayerObject(playerid,1225, -2058.497314, -194.988190, 34.726067, 0, 0, 0);
  669.     CreatePlayerObject(playerid,1225, -2058.647949, -189.953400, 34.726067, 0, 0, 0);
  670.     CreatePlayerObject(playerid,1225, -2058.572266, -184.511627, 34.726067, 0, 0, 0);
  671.     CreatePlayerObject(playerid,1225, -2058.516357, -179.578522, 34.726067, 0, 0, 0);
  672.     CreatePlayerObject(playerid,1225, -2058.537598, -174.580582, 34.726067, 0, 0, 0);
  673.     CreatePlayerObject(playerid,1225, -2058.625977, -169.239868, 34.726067, 0, 0, 0);
  674.     CreatePlayerObject(playerid,1225, -2058.639404, -163.440292, 34.726067, 0, 0, 0);
  675.     CreatePlayerObject(playerid,1225, -2058.717041, -158.009964, 34.726067, 0, 0, 0);
  676.     CreatePlayerObject(playerid,1225, -2058.677490, -153.811859, 34.726067, 0, 0, 0);
  677.     CreatePlayerObject(playerid,1225, -2058.600098, -148.967178, 34.733147, 0, 0, 0);
  678.     CreatePlayerObject(playerid,1225, -2058.447998, -144.551208, 34.733147, 0, 0, 0);
  679.     CreatePlayerObject(playerid,1225, -2058.364014, -139.715439, 34.726067, 0, 0, 0);
  680.     CreatePlayerObject(playerid,1225, -2058.335449, -136.523911, 34.726067, 0, 0, 0);
  681.     CreatePlayerObject(playerid,1225, -2058.574219, -133.029388, 34.726067, 0, 0, 0);
  682.     CreatePlayerObject(playerid,1225, -2060.240967, -130.847961, 34.730694, 0, 0, 0);
  683.     CreatePlayerObject(playerid,1225, -2062.932861, -129.208313, 34.731895, 0, 0, 0);
  684.     CreatePlayerObject(playerid,1225, -2065.347168, -128.650375, 34.732307, 0, 0, 0);
  685.     CreatePlayerObject(playerid,1225, -2067.585205, -128.456207, 34.732227, 0, 0, 0);
  686.     CreatePlayerObject(playerid,1225, -2067.923828, -125.978699, 34.734264, 0, 0, 0);
  687.     CreatePlayerObject(playerid,1225, -2067.055176, -123.778641, 34.735874, 0, 0, 0);
  688.     CreatePlayerObject(playerid,1225, -2064.495850, -123.390129, 34.733089, 0, 0, 0);
  689.     CreatePlayerObject(playerid,1225, -2062.125977, -123.011520, 34.731354, 0, 0, 0);
  690.     CreatePlayerObject(playerid,1225, -2060.723633, -120.962669, 34.730324, 0, 0, 0);
  691.     CreatePlayerObject(playerid,1225, -2060.789063, -116.457222, 34.730373, 0, 0, 0);
  692.     CreatePlayerObject(playerid,973, -2062.548096, -115.718750, 35.166935, 0, 0, 180);
  693.     CreatePlayerObject(playerid,1225, -2042.614014, -124.766006, 34.651779, 0, 0, 0);
  694.     CreatePlayerObject(playerid,1225, -2042.276733, -128.329132, 34.663055, 0, 0, 0);
  695.     CreatePlayerObject(playerid,1225, -2042.025024, -132.687607, 34.681007, 0, 0, 0);
  696.     CreatePlayerObject(playerid,1225, -2041.642700, -137.868835, 34.717808, 0, 0, 0);
  697.     CreatePlayerObject(playerid,1225, -2041.426880, -141.111725, 34.726067, 0, 0, 0);
  698.     CreatePlayerObject(playerid,1225, -2041.288574, -143.401657, 34.726067, 0, 0, 0);
  699.     CreatePlayerObject(playerid,1225, -2041.016602, -147.020721, 34.726067, 0, 0, 0);
  700.     CreatePlayerObject(playerid,1225, -2040.770386, -150.297256, 34.726067, 0, 0, 0);
  701.     CreatePlayerObject(playerid,1225, -2040.692505, -153.235474, 34.726067, 0, 0, 0);
  702.     CreatePlayerObject(playerid,1225, -2039.353027, -154.612793, 34.726067, 0, 0, 0);
  703.     CreatePlayerObject(playerid,1225, -2036.316528, -154.779053, 34.726067, 0, 0, 0);
  704.     CreatePlayerObject(playerid,1225, -2033.045776, -154.687347, 34.726067, 0, 0, 0);
  705.     CreatePlayerObject(playerid,1225, -2029.543579, -156.997269, 34.733147, 0, 0, 0);
  706.     CreatePlayerObject(playerid,1225, -2026.646118, -159.627060, 34.733147, 0, 0, 0);
  707.     CreatePlayerObject(playerid,1225, -2023.610718, -163.053543, 34.733147, 0, 0, 0);
  708.     CreatePlayerObject(playerid,1225, -2021.614014, -166.409607, 34.726067, 0, 0, 0);
  709.     CreatePlayerObject(playerid,1225, -2021.167114, -169.434769, 34.726067, 0, 0, 0);
  710.     CreatePlayerObject(playerid,1225, -2020.853638, -173.505859, 34.726067, 0, 0, 0);
  711.     CreatePlayerObject(playerid,1225, -2020.595337, -178.758606, 34.726067, 0, 0, 0);
  712.     CreatePlayerObject(playerid,1225, -2020.436035, -184.067459, 34.726067, 0, 0, 0);
  713.     CreatePlayerObject(playerid,1225, -2020.353882, -187.446762, 34.726067, 0, 0, 0);
  714.     CreatePlayerObject(playerid,1225, -2020.294189, -190.886353, 34.726067, 0, 0, 0);
  715.     CreatePlayerObject(playerid,1225, -2020.032837, -195.188446, 34.726067, 0, 0, 0);
  716.     CreatePlayerObject(playerid,1225, -2019.900024, -199.928207, 34.726067, 0, 0, 0);
  717.     CreatePlayerObject(playerid,1225, -2023.939331, -201.555603, 34.726067, 0, 0, 0);
  718.     CreatePlayerObject(playerid,1225, -2028.125977, -202.197342, 34.726067, 0, 0, 0);
  719.     CreatePlayerObject(playerid,1225, -2032.997314, -202.245728, 34.726067, 0, 0, 0);
  720.     CreatePlayerObject(playerid,1225, -2038.529907, -202.236694, 34.726067, 0, 0, 0);
  721.     CreatePlayerObject(playerid,1225, -2041.955811, -204.437988, 34.726067, 0, 0, 0);
  722.     CreatePlayerObject(playerid,1225, -2043.894287, -206.880768, 34.726067, 0, 0, 0);
  723.     CreatePlayerObject(playerid,1225, -2046.462891, -209.915741, 34.726067, 0, 0, 0);
  724.     CreatePlayerObject(playerid,1225, -2047.820313, -213.071594, 34.726067, 0, 0, 0);
  725.     CreatePlayerObject(playerid,1225, -2048.056885, -216.837219, 34.726067, 0, 0, 0);
  726.     CreatePlayerObject(playerid,1225, -2048.151855, -220.537430, 34.726067, 0, 0, 0);
  727.     CreatePlayerObject(playerid,1225, -2050.383545, -222.960617, 34.726067, 0, 0, 0);
  728.     CreatePlayerObject(playerid,1225, -2053.129395, -224.293259, 34.726067, 0, 0, 0);
  729.     CreatePlayerObject(playerid,1225, -2056.260986, -225.874878, 34.726067, 0, 0, 0);
  730.     CreatePlayerObject(playerid,1225, -2059.005371, -225.500443, 34.733147, 0, 0, 0);
  731.     CreatePlayerObject(playerid,1225, -2061.224121, -224.122742, 34.733147, 0, 0, 0);
  732.     CreatePlayerObject(playerid,1225, -2063.714111, -221.460449, 34.726067, 0, 0, 0);
  733.     CreatePlayerObject(playerid,1225, -2064.190430, -217.112183, 34.726067, 0, 0, 0);
  734.     CreatePlayerObject(playerid,1225, -2064.535400, -212.231552, 34.726067, 0, 0, 0);
  735.     CreatePlayerObject(playerid,1225, -2064.851318, -206.732819, 34.726067, 0, 0, 0);
  736.     CreatePlayerObject(playerid,1225, -2065.049316, -202.883667, 34.726067, 0, 0, 0);
  737.     CreatePlayerObject(playerid,1225, -2065.298584, -197.836700, 34.726067, 0, 0, 0);
  738.     CreatePlayerObject(playerid,1225, -2065.397949, -193.946503, 34.837078, 0, 0, 0);
  739.     CreatePlayerObject(playerid,1225, -2065.649658, -188.854095, 34.726067, 0, 0, 0);
  740.     CreatePlayerObject(playerid,1225, -2065.890137, -182.918167, 34.726067, 0, 0, 0);
  741.     CreatePlayerObject(playerid,1225, -2066.158203, -176.039978, 34.726067, 0, 0, 0);
  742.     CreatePlayerObject(playerid,1225, -2066.401367, -168.610062, 34.726067, 0, 0, 0);
  743.     CreatePlayerObject(playerid,1225, -2066.095947, -162.975357, 34.726067, 0, 0, 0);
  744.     CreatePlayerObject(playerid,1225, -2066.087158, -157.294281, 34.726067, 0, 0, 0);
  745.     CreatePlayerObject(playerid,1225, -2066.281006, -151.829300, 34.726067, 0, 0, 0);
  746.     CreatePlayerObject(playerid,1225, -2066.358887, -146.058899, 34.726067, 0, 0, 0);
  747.     CreatePlayerObject(playerid,1225, -2066.005859, -139.813278, 34.733147, 0, 0, 0);
  748.     CreatePlayerObject(playerid,1225, -2065.747559, -136.000671, 34.726067, 0, 0, 0);
  749.     CreatePlayerObject(playerid,1225, -2067.414795, -133.682510, 34.726067, 0, 0, 0);
  750.     CreatePlayerObject(playerid,1225, -2070.273438, -132.213989, 34.726067, 0, 0, 0);
  751.     CreatePlayerObject(playerid,1225, -2072.827393, -129.196564, 34.730789, 0, 0, 0);
  752.     CreatePlayerObject(playerid,1225, -2072.656494, -125.322281, 34.733643, 0, 0, 0);
  753.     CreatePlayerObject(playerid,1225, -2070.666016, -121.036743, 34.736496, 0, 0, 0);
  754.     CreatePlayerObject(playerid,1225, -2067.880371, -119.043213, 34.766632, 0, 0, 0);
  755.     CreatePlayerObject(playerid,1225, -2064.679199, -116.779121, 34.733040, 0, 0, 0);
  756.     CreatePlayerObject(playerid,966, -2041.694458, -123.222923, 34.234409, 0, 0, 358.3584);
  757.     barrier = CreatePlayerObject(playerid,968, -2041.642212, -123.153976, 35.068645, 0, 356.5622, 0);
  758.     return 1;
  759. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement