Advertisement
Guest User

[FILTERSCRIPT] Carhouse

a guest
May 15th, 2013
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.79 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define col_red 0xFF0000FF
  4. #define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  5. //simplify OnPlayerKeyStateChange
  6. #define CarAmount 6 //NUMBER OF VEHICLES IN CARHOUSEARRAY!!
  7.  
  8. #define DialogCarhouseColor1 1
  9. #define DialogCarhouseColor1Code 2
  10. #define DialogCarhouseColor2 3
  11. #define DialogCarhouseColor2Code 4
  12.  
  13. //Pickups
  14. new CarhousePickup;
  15.  
  16. //Textdraws
  17. enum e_CarhouseTD
  18. {
  19.     PlayerText:name,
  20.     PlayerText:price,
  21.     PlayerText:info
  22. }
  23. new Text:CarhouseTD[e_CarhouseTD];
  24.  
  25. //Parking Positions for Spawned Cars
  26. new CarhouseParkingPosition=0;
  27. enum e_CarhouseParkingPositions
  28. {
  29.     Float:x,
  30.     Float:y,
  31.     Float:z,
  32.     Float:rot
  33. }
  34. new CarhouseParkingPositions[][e_CarhouseParkingPositions]=
  35. {
  36.     {549.0,-1290.0,17.0,1.0},
  37.     {542.2,-1290.0,17.0,1.0},
  38.     {535.4,-1290.0,17.0,1.0},
  39.     {528.6,-1290.0,17.0,1.0},
  40.     {521.8,-1290.0,17.0,1.0}
  41. };
  42.  
  43. //Cars available in the Carhouse
  44. enum e_Carhouse
  45. {
  46.     name[16],
  47.     id,
  48.     price
  49. }
  50. // below you can find the list with the cars available,
  51. // add or delete as many vehicles as you want
  52. new Carhouse[CarAmount][e_Carhouse]= //name,id,price
  53. {
  54.     {"Bullet",541,45},
  55.     {"Comet",480,50},
  56.     {"Infernus",411,55},
  57.     {"Phoenix",603,60},
  58.     {"Super GT",506,65},
  59.     {"Turismo",451,70}
  60. };
  61.  
  62. //Variables for every Player to use the Carhose
  63. enum e_PlayerCarhouse
  64. {
  65.     index,
  66.     vehicle
  67. }
  68. new PlayerCarhouse[MAX_PLAYERS][e_PlayerCarhouse];
  69.  
  70. public OnFilterScriptInit()
  71. {
  72.     CarhousePickup=CreatePickup(1318,1,556,-1292,17);
  73.     return 1;
  74. }
  75. public OnPlayerConnect(playerid)
  76. {
  77.     //Textdraws
  78.     CarhouseTD[name]=CreatePlayerTextDraw(playerid,30,150,"");
  79.     PlayerTextDrawFont(playerid,CarhouseTD[name],0);
  80.     PlayerTextDrawLetterSize(playerid,CarhouseTD[name],2,3);
  81.     PlayerTextDrawSetOutline(playerid,CarhouseTD[name],2);
  82.  
  83.     CarhouseTD[price]=CreatePlayerTextDraw(playerid,30,180,"");
  84.     PlayerTextDrawFont(playerid,CarhouseTD[price],1);
  85.     PlayerTextDrawLetterSize(playerid,CarhouseTD[price],1,1.5);
  86.     PlayerTextDrawSetOutline(playerid,CarhouseTD[price],2);
  87.  
  88.     CarhouseTD[info]=CreatePlayerTextDraw(playerid,330,410,"~g~~k~~PED_SPRINT~ ~w~buy car~n~~g~~k~~CONVERSATION_YES~ ~w~exit");
  89.     PlayerTextDrawFont(playerid,CarhouseTD[info],1);
  90.     PlayerTextDrawLetterSize(playerid,CarhouseTD[info],0.9,1.35);
  91.     PlayerTextDrawSetOutline(playerid,CarhouseTD[info],2);
  92. }
  93. public OnPlayerPickUpPickup(playerid,pickupid)
  94. {
  95.     if(pickupid==CarhousePickup)
  96.     {
  97.         SetPVarInt(playerid,"Carhouse",1);
  98.         PlayerTextDrawShow(playerid,CarhouseTD[name]);
  99.         PlayerTextDrawShow(playerid,CarhouseTD[price]);
  100.         PlayerTextDrawShow(playerid,CarhouseTD[info]);
  101.        
  102.         TogglePlayerControllable(playerid,0);
  103.         SetPlayerPos(playerid,-1656,1213,22);
  104.         SetPlayerVirtualWorld(playerid,playerid+1);
  105.        
  106.         SetPlayerCameraPos(playerid,-1658.4591,1211.7958,22);
  107.         SetPlayerCameraLookAt(playerid,-1660.3522,1208.1630,21.1563);
  108.         PlayerCarhouse[playerid][index]=0;
  109.         CreateCarhouseCar(playerid);
  110.     }
  111.     return 1;
  112. }
  113. public OnPlayerUpdate(playerid)
  114. {
  115.     if(GetPVarInt(playerid,"Carhouse"))
  116.     {
  117.         new keys,ud,lr;
  118.         GetPlayerKeys(playerid,keys,ud,lr);
  119.         if(lr==KEY_LEFT)
  120.         {
  121.             PlayerCarhouse[playerid][index]-=1;
  122.             if(PlayerCarhouse[playerid][index] < 0) PlayerCarhouse[playerid][index]=CarAmount-1;
  123.             CreateCarhouseCar(playerid);
  124.         }  
  125.         if(lr==KEY_RIGHT)
  126.         {
  127.             PlayerCarhouse[playerid][index]+=1;
  128.             if(PlayerCarhouse[playerid][index] >= CarAmount) PlayerCarhouse[playerid][index]=0;
  129.             CreateCarhouseCar(playerid);
  130.         }
  131.     }
  132.     return 1;
  133. }
  134. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  135. {
  136.     if(PRESSED(KEY_YES) && GetPVarInt(playerid,"Carhouse"))
  137.     {
  138.         ExitCarhouse(playerid);
  139.         return 1;
  140.     }
  141.     if(PRESSED(KEY_SPRINT) && GetPVarInt(playerid,"Carhouse"))
  142.     {
  143.         if(GetPlayerMoney(playerid)<Carhouse[PlayerCarhouse[playerid][index]][price])return SendClientMessage(playerid,col_red,"You haven't got enough money for this car");
  144.         ShowPlayerDialog(playerid,DialogCarhouseColor1,2,"Choose 1st color",\
  145.         "{000000}Black\n{ffffff}White\n{ff0000}Red\n{00ff00}Green\n{0000ff}Blue\n{ffff00}\
  146.         Yellow\n{ffffff}Enter Color ID","Okay","Cancel");
  147.     }
  148.     return 1;
  149. }
  150. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  151. {
  152.     if(response)
  153.     {
  154.         switch(dialogid)
  155.         {
  156.             case 1: //CarhouseColor1
  157.             {
  158.                 switch(listitem)
  159.                 {
  160.                     case 0: SetPVarInt(playerid,"CarhouseColor1",0); //black
  161.                     case 1: SetPVarInt(playerid,"CarhouseColor1",1); //white
  162.                     case 2: SetPVarInt(playerid,"CarhouseColor1",3); //red
  163.                     case 3: SetPVarInt(playerid,"CarhouseColor1",128); //green
  164.                     case 4: SetPVarInt(playerid,"CarhouseColor1",162); //blue
  165.                     case 5: SetPVarInt(playerid,"CarhouseColor1",194); //yellow
  166.                     case 6: ShowPlayerDialog(playerid,DialogCarhouseColor1Code,1,"Colorcode1",\
  167.                                             "Enter Code for Color1","Okay","Cancel");
  168.                 }
  169.                 if(listitem != 6) ShowPlayerDialog(playerid,DialogCarhouseColor2,2,"Choose 2nd color",\
  170.                 "{000000}Black\n{ffffff}White\n{ff0000}Red\n{00ff00}Green\n{0000ff}Blue\n\
  171.                 {ffff00}Yellow\n{ffffff}Enter Color ID","Okay","Cancel");
  172.             }
  173.             case 2: //CarhouseColor1Code
  174.             {
  175.                 SetPVarInt(playerid,"CarhouseColor1",strval(inputtext));
  176.                 ShowPlayerDialog(playerid,DialogCarhouseColor2,2,"Choose 2nd color",\
  177.                 "{000000}Black\n{ffffff}White\n{ff0000}Red\n{00ff00}Green\n{0000ff}Blue\n{ffff00}\
  178.                 Yellow\n{ffffff}Enter Color ID","Okay","Cancel");
  179.             }
  180.             case 3: //CarhouseColor2
  181.             {
  182.                 switch(listitem)
  183.                 {
  184.                     case 0: SetPVarInt(playerid,"CarhouseColor2",0); //black
  185.                     case 1: SetPVarInt(playerid,"CarhouseColor2",1); //white
  186.                     case 2: SetPVarInt(playerid,"CarhouseColor2",3); //red
  187.                     case 3: SetPVarInt(playerid,"CarhouseColor2",128); //green
  188.                     case 4: SetPVarInt(playerid,"CarhouseColor2",162); //blue
  189.                     case 5: SetPVarInt(playerid,"CarhouseColor2",194); //yellow
  190.                     case 6: ShowPlayerDialog(playerid,DialogCarhouseColor2Code,1,
  191.                     "Colorcode2","Enter Code for Color2","Okay","Cancel");
  192.                 }
  193.                 if(listitem != 6) ExitCarhouse(playerid,1);
  194.             }
  195.             case 4: //CarhouseColor2Code
  196.             {
  197.                 SetPVarInt(playerid,"CarhouseColor2",strval(inputtext));
  198.                 ExitCarhouse(playerid,1);
  199.             }
  200.         }
  201.     }
  202. }
  203. stock CreateCarhouseCar(playerid)
  204. {
  205.     new car;
  206.     if(PlayerCarhouse[playerid][vehicle]) DestroyVehicle(PlayerCarhouse[playerid][vehicle]);
  207.     car=CreateVehicle(Carhouse[PlayerCarhouse[playerid][index]][id],-1661.7758,1208.3453,21.1563,287.4759,1,0,0);
  208.     SetVehicleVirtualWorld(car,playerid+1);
  209.     PlayerCarhouse[playerid][vehicle]=car;
  210.    
  211.     new carname[64], TDPrice[16];
  212.     format(carname,64,"~b~%s",Carhouse[PlayerCarhouse[playerid][index]][name]);
  213.     format(TDPrice,16,"price: %i",Carhouse[PlayerCarhouse[playerid][index]][price]);
  214.     PlayerTextDrawSetString(playerid,CarhouseTD[name],carname);
  215.     PlayerTextDrawSetString(playerid,CarhouseTD[price],TDPrice);
  216.     return 1;
  217.    
  218. }      
  219. stock ExitCarhouse(playerid,BuyCar=0)
  220. {
  221.     PlayerTextDrawHide(playerid,CarhouseTD[name]);
  222.     PlayerTextDrawHide(playerid,CarhouseTD[price]);
  223.     PlayerTextDrawHide(playerid,CarhouseTD[info]);
  224.     SetPlayerPos(playerid,556.0813,-1290.2650,17.2482);
  225.     SetPlayerVirtualWorld(playerid,0);
  226.     TogglePlayerControllable(playerid,1);
  227.     SetCameraBehindPlayer(playerid);
  228.     SetPVarInt(playerid,"Carhouse",0);
  229.    
  230.     if(!BuyCar) return 1;
  231.     new Float:_x,Float:_y,Float:_z,Float:_rot,ind=CarhouseParkingPosition;
  232.     _x=CarhouseParkingPositions[ind][x];
  233.     _y=CarhouseParkingPositions[ind][y];
  234.     _z=CarhouseParkingPositions[ind][z];
  235.     _rot=CarhouseParkingPositions[ind][rot];
  236.    
  237.     new car;
  238.     car=CreateVehicle(Carhouse[PlayerCarhouse[playerid][index]][id],_x,_y,_z,_rot,\
  239.         GetPVarInt(playerid,"CarhouseColor1"),GetPVarInt(playerid,"CarhouseColor2"),0);
  240.  
  241.     //Set Vehicle Numplate; not necessary, but makes things easier
  242.     new numid[8];
  243.     format(numid,8,"%i",car);
  244.     SetVehicleNumberPlate(car,numid);
  245.    
  246.     CarhouseParkingPosition +=1;   
  247.     if(CarhouseParkingPosition > 4)CarhouseParkingPosition=0;
  248.     return 1;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement