Advertisement
Guest User

zeruel_angel

a guest
Aug 14th, 2007
1,447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.01 KB | None | 0 0
  1. //------------------------------------------------------------------------------
  2. //
  3. //   TowTruck miniMission Filter Script v1.0
  4. //   Designed for SA-MP v0.2.1
  5. //
  6. //   Created by zeruel_angel
  7. //
  8. //------------------------------------------------------------------------------
  9.  
  10. #include <a_samp>
  11. enum posicion{
  12.     Float:X,
  13.     Float:Y,
  14.     Float:Z,
  15.     Float:angle
  16.     }
  17. #define BONUS 500
  18. #define MAX_CASH 2000
  19. #define MIN_CASH 1000
  20.  
  21. new Rotos[100][posicion];
  22. new archRotos[]="TowTruck.txt";
  23. new playerInMiniMissionGrua[MAX_PLAYERS];
  24. new contador[MAX_PLAYERS];
  25. new avisado1[MAX_PLAYERS];
  26. new cantidadRotos;
  27. new enganchado[MAX_PLAYERS];
  28. forward terminarMission(playerid);
  29. forward cerrarRoto();
  30. forward enganchador();
  31. public OnFilterScriptInit()
  32.     {
  33.     print("\nTowTruck Filter Script v1.0 Loading...\n*******************************\n      (Zeruel_Angel)\n");
  34.     new File:fileGrua;
  35.     new lineaGrua[255];
  36.     fileGrua = fopen(archRotos,io_readwrite);
  37.     new j=0;
  38.     new idx;
  39.     while   ((fread(fileGrua,lineaGrua,sizeof(lineaGrua),false))&&(j<25))
  40.             {
  41.             idx = 0;
  42.             Rotos[j][X] = floatstr(strtok(lineaGrua,idx));
  43.             Rotos[j][Y] = floatstr(strtok(lineaGrua,idx));
  44.             Rotos[j][Z] = floatstr(strtok(lineaGrua,idx));
  45.             Rotos[j][angle] = floatstr(strtok(lineaGrua,idx));
  46.             j++;
  47.             }
  48.     cantidadRotos=j;
  49.     fclose(fileGrua);
  50.     format(lineaGrua,sizeof(lineaGrua),"Total TowTruck destinations loaded: %d", cantidadRotos);
  51.     print(lineaGrua);
  52.     for (new i=0;i<MAX_PLAYERS;i++)
  53.         {
  54.         playerInMiniMissionGrua[i]=-1;
  55.         avisado1[i]=-1;
  56.         enganchado[i]=0;
  57.         }
  58.     SetTimer("cerrarRoto",5000,1);
  59.     SetTimer("enganchador",3000,1);
  60.     print("TowTruck Filter Script fully Loaded\n**********************************\n\n");
  61.     }
  62. //------------------------------------------------------------------------------------------------------
  63. public OnFilterScriptExit()
  64.     {
  65.     print("\nTowTruck Script UnLoaded\n********************************************\n\n");
  66.     return 1;
  67.     }
  68. //------------------------------------------------------------------------------------------------------
  69. public cerrarRoto()
  70.     {
  71.     for (new i=0;i<MAX_PLAYERS;i++)
  72.         {
  73.         if (playerInMiniMissionGrua[i]!=-1)
  74.             {
  75.             for (new j=0;j<MAX_PLAYERS;j++)
  76.                 {
  77.                 if  (IsPlayerConnected(j))
  78.                     {
  79.                     SetVehicleParamsForPlayer(playerInMiniMissionGrua[i],j,0,1);
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.     return 1;
  85.     }
  86. //------------------------------------------------------------------------------------------------------
  87. public enganchador()
  88.     {
  89.     new Float:pX,Float:pY,Float:pZ;
  90.     for (new i=0;i<MAX_PLAYERS;i++)
  91.         {
  92.         if ((playerInMiniMissionGrua[i]!=-1)&&(enganchado[i]==1))
  93.             {
  94.             if  ((IsPlayerInAnyVehicle(i))&&(GetVehicleModel(GetPlayerVehicleID(i)) == 525))
  95.                 {
  96.                 if  (IsTrailerAttachedToVehicle(GetPlayerVehicleID(i)))
  97.                     {
  98.                     if  (GetVehicleTrailer(GetPlayerVehicleID(i))!=playerInMiniMissionGrua[i])
  99.                         {
  100.                         enganchado[i]=0;
  101.                         GetVehiclePos(playerInMiniMissionGrua[i],pX,pY,pZ);
  102.                         pX=pX+3.0*floatsin(-Rotos[i][angle],degrees);
  103.                         pY=pY+3.0*floatcos(-Rotos[i][angle],degrees);
  104.                         SetPlayerRaceCheckpoint(i,0,pX,pY,pZ,1960.0590,2162.1296,10.8203,5.0);
  105.                         }
  106.                     }
  107.                 else
  108.                     {
  109.                     enganchado[i]=0;
  110.                     GetVehiclePos(playerInMiniMissionGrua[i],pX,pY,pZ);
  111.                     pX=pX+3.0*floatsin(-Rotos[i][angle],degrees);
  112.                     pY=pY+3.0*floatcos(-Rotos[i][angle],degrees);
  113.                     SetPlayerRaceCheckpoint(i,0,pX,pY,pZ,1960.0590,2162.1296,10.8203,5.0);
  114.                     }
  115.                 }
  116.             else
  117.                 {
  118.                 enganchado[i]=0;
  119.                 GetVehiclePos(playerInMiniMissionGrua[i],pX,pY,pZ);
  120.                 pX=pX+3.0*floatsin(-Rotos[i][angle],degrees);
  121.                 pY=pY+3.0*floatcos(-Rotos[i][angle],degrees);
  122.                 SetPlayerRaceCheckpoint(i,0,pX,pY,pZ,1960.0590,2162.1296,10.8203,5.0);
  123.                 }
  124.             }
  125.         }
  126.     return 1;
  127.     }
  128. //------------------------------------------------------------------------------------------------------
  129.  strtok(const string[], &index)
  130. {
  131.     new length = strlen(string);
  132.     while ((index < length) && (string[index] <= ' '))
  133.     {
  134.         index++;
  135.     }
  136.  
  137.     new offset = index;
  138.     new result[20];
  139.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  140.     {
  141.         result[index - offset] = string[index];
  142.         index++;
  143.     }
  144.     result[index - offset] = EOS;
  145.     return result;
  146. }
  147. //------------------------------------------------------------------------------------------------------
  148. public terminarMission(playerid)
  149.     {
  150.     GameTextForPlayer(playerid,"~r~TowTruck ~n~ ~w~MiniMision ~n~~w~cancelled",3000,4);
  151.     DestroyVehicle(playerInMiniMissionGrua[playerid]);
  152.     playerInMiniMissionGrua[playerid]=-1;
  153.     avisado1[playerid]=-1;
  154.     DisablePlayerRaceCheckpoint(playerid);
  155.     contador[playerid]=0;
  156.     enganchado[playerid]=0;
  157.     return 1;
  158.     }
  159. //------------------------------------------------------------------------------------------------------
  160. public OnPlayerStateChange(playerid, newstate, oldstate)
  161.     {
  162.     if (newstate==PLAYER_STATE_DRIVER)
  163.         {
  164.         if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
  165.             {
  166.             if  (avisado1[playerid]==-1)
  167.                 {
  168.                 GameTextForPlayer(playerid,"~w~Press ~b~Buttom 2~n~~w~to start ~r~TowTruck~n~~w~Minimission",3000,5);//SetTimerEx("MandarMensaje",5500,0,"%d",playerid);
  169.                 }
  170.             else
  171.                 {
  172.                 KillTimer(avisado1[playerid]);
  173.                 avisado1[playerid]=-1;
  174.                 }
  175.             }
  176.         }
  177.     if  (newstate==PLAYER_STATE_ONFOOT)
  178.         {
  179.         if  ((playerInMiniMissionGrua[playerid]>0)&&(avisado1[playerid]==-1))
  180.             {
  181.             GameTextForPlayer(playerid,"~w~You have ~r~10 sec ~n~~w~ to get a TowTruck",3000,4);
  182.             avisado1[playerid]=SetTimerEx("terminarMission",10000,0,"%d",playerid);
  183.             }
  184.         }
  185.     return 1;
  186.     }
  187. //------------------------------------------------------------------------------------------------------
  188.   crearAutoRoto(playerid)
  189.     {
  190.     new index = random(cantidadRotos);
  191.     DisablePlayerRaceCheckpoint(playerid);
  192.     new ran=random(2);
  193.     new mid=605;
  194.     if  (ran!=1)
  195.         {
  196.         mid=604;
  197.         }
  198.     new ran2=random(126);
  199.     ran = random(126);
  200.     playerInMiniMissionGrua[playerid]=CreateVehicle(mid,Rotos[index][X],Rotos[index][Y],Rotos[index][Z],Rotos[index][angle],ran,ran2,-1);
  201.     SetPlayerRaceCheckpoint(playerid,0,Rotos[index][X]+3.0*floatsin(-Rotos[index][angle],degrees),Rotos[index][Y]+3.0*floatcos(-Rotos[index][angle],degrees),Rotos[index][Z],1960.0590,2162.1296,10.8203,5.0);
  202.     SetVehicleParamsForPlayer(playerInMiniMissionGrua[playerid],playerid,1,1);
  203.     return 1;
  204.     }
  205. //------------------------------------------------------------------------------------------------------
  206.   MissionIni(playerid)
  207.     {
  208.     GameTextForPlayer(playerid,"~r~TowTruck ~w~MiniMision ~w~starts!~n~ tow away the ~r~ wrecked vehicle ~w~ to the ~n~~r~Paint & Spray",3000,4);
  209.     crearAutoRoto(playerid);
  210.     return 1;
  211.     }
  212. //------------------------------------------------------------------------------------------------------
  213. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  214.     {
  215.     if ((newkeys==KEY_SUBMISSION)&&(IsPlayerInAnyVehicle(playerid))&&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
  216.         {
  217.         if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
  218.             {
  219.             if  (playerInMiniMissionGrua[playerid]<0)
  220.                 {
  221.                 MissionIni(playerid);
  222.                 }
  223.             else
  224.                 {
  225.                 terminarMission(playerid);
  226.                 }
  227.             }
  228.         }
  229.     }
  230. //------------------------------------------------------------------------------------------------------
  231. public OnPlayerEnterRaceCheckpoint(playerid)
  232.     {
  233.     if  (playerInMiniMissionGrua[playerid]!=-1)
  234.         {
  235.         if  (enganchado[playerid]==0)
  236.             {
  237.             if  (IsPlayerInAnyVehicle(playerid))
  238.                 {
  239.                 new vehicleid = GetPlayerVehicleID(playerid);
  240.                 new mid = GetVehicleModel(vehicleid);
  241.                 if (mid == 525)
  242.                     {
  243.                     if  (IsTrailerAttachedToVehicle(vehicleid))
  244.                         {
  245.                         DetachTrailerFromVehicle(vehicleid);
  246.                         }
  247.                     AttachTrailerToVehicle(playerInMiniMissionGrua[playerid],vehicleid);
  248.                     GameTextForPlayer(playerid,"~w~tow away the  ~r~wrecked vehicle ~n~ ~w~with the ~r~TowTruck ~n~ ~w~ to the ~r~Paint & Spray",3000,4);
  249.                     SetPlayerRaceCheckpoint(playerid,0,1960.0590,2162.1296,10.8203,1960.0590,2162.1296,10.8203,5.0);
  250.                     enganchado[playerid]=1;
  251.                     }
  252.                 else
  253.                     {
  254.                     GameTextForPlayer(playerid,"~w~You need a~r~TowTruck",3000,4);
  255.                     }
  256.                 }
  257.             else
  258.                 {
  259.                 GameTextForPlayer(playerid,"~w~You need a ~r~TowTruck",3000,4);
  260.                 }
  261.             return 1;
  262.             }
  263.         if (IsPlayerInAnyVehicle(playerid))
  264.             {
  265.             new vehicleid = GetPlayerVehicleID(playerid);
  266.             new mid = GetVehicleModel(vehicleid);
  267.             if  ((mid == 525)&&(IsTrailerAttachedToVehicle(vehicleid))&&(GetVehicleTrailer(vehicleid)==playerInMiniMissionGrua[playerid]))
  268.                 {
  269.                 enganchado[playerid]=0;
  270.                 contador[playerid]++;
  271.                 new cash=(random(MAX_CASH-MIN_CASH)+MIN_CASH);
  272.                 GivePlayerMoney(playerid,cash);
  273.                 DestroyVehicle(playerInMiniMissionGrua[playerid]);
  274.                 playerInMiniMissionGrua[playerid]=-1;
  275.                 crearAutoRoto(playerid);
  276.                 if  ((((contador[playerid]/5)*5)==contador[playerid])&&(contador[playerid]!=0))
  277.                     {
  278.                     new string[255];
  279.                     format(string,sizeof(string),"You get a ~r~BONUS ~w~ every 5 cars!.~n~You towed away %d cars your bonus is ~n~~b~$%d",contador[playerid],contador[playerid]*BONUS);
  280.                     GivePlayerMoney(playerid,contador[playerid]*BONUS);
  281.                     GameTextForPlayer(playerid,string,3000,3);
  282.                     }
  283.                 else
  284.                     {
  285.                     GameTextForPlayer(playerid,"~w~Mission complete! Here is your cash!. ~n~go get the other ~r~wrecked vehicle ~w~to the ~r~Paint & Spray",5000,3);
  286.                     }
  287.                 }
  288.             }
  289.         }
  290.     return 1;
  291.     }
  292. //------------------------------------------------------------------------------------------------------
  293. public OnPlayerDisconnect(playerid)
  294.     {
  295.     terminarMission(playerid);
  296.     return 1;
  297.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement