Advertisement
Guest User

Untitled

a guest
Feb 16th, 2011
846
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.89 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <streamer>
  5. #include <foreach>
  6. #include <zcmd>
  7.  
  8. #define AMOUNT 90 //Do not change it
  9. #define MAX_PORTALS 20 //Increase it for more portals
  10.  
  11. new Portals[MAX_PLAYERS][6];
  12. new Float:PortalCordsGreen[MAX_PLAYERS][5];
  13. new Float:PortalCordsOrange[MAX_PLAYERS][5];
  14. new PortalCount;
  15.  
  16. new nkey;
  17.  
  18. public OnPlayerDisconnect(playerid, reason)
  19. {
  20.     if(PortalCount > 0)
  21.     {
  22.         if(Portals[playerid][0] == 1)
  23.         {
  24.             PortalCount--;
  25.             DestroyDynamicObject(Portals[playerid][2]);
  26.             DestroyDynamicObject(Portals[playerid][3]);
  27.             PortalCordsGreen[playerid][0] = 0.0;
  28.             PortalCordsGreen[playerid][1] = 0.0;
  29.             PortalCordsGreen[playerid][2] = 0.0;
  30.             PortalCordsGreen[playerid][3] = 0.0;
  31.             PortalCordsGreen[playerid][4] = 0.0;
  32.             Portals[playerid][0] = 0;
  33.         }
  34.         if(Portals[playerid][1] == 1)
  35.         {
  36.             PortalCount--;
  37.             DestroyDynamicObject(Portals[playerid][4]);
  38.             DestroyDynamicObject(Portals[playerid][5]);
  39.             PortalCordsOrange[playerid][0] = 0.0;
  40.             PortalCordsOrange[playerid][1] = 0.0;
  41.             PortalCordsOrange[playerid][2] = 0.0;
  42.             PortalCordsOrange[playerid][3] = 0.0;
  43.             PortalCordsOrange[playerid][4] = 0.0;
  44.             Portals[playerid][1] = 0;
  45.         }
  46.     }
  47.     return 1;
  48. }
  49.  
  50. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  51. {
  52.     nkey = newkeys;
  53.     if(newkeys == 132)
  54.     {
  55.         if(PortalCount < MAX_PORTALS)
  56.         {
  57.             if(GetPlayerWeapon(playerid) == 35)
  58.             {
  59.                 if(Portals[playerid][0] == 0)
  60.                 {
  61.                     new Float: PX, Float: PY, Float: PZ, Float:FY, Float:FX, Float: FZ;
  62.                     new Float: X, Float: Y, Float: Z, Float: ROT;
  63.                     GetPlayerCameraPos(playerid, PX, PY, PZ);
  64.                     GetPlayerCameraFrontVector(playerid, FX, FY, FZ);
  65.                     GetPlayerFacingAngle(playerid, ROT);
  66.                     X = PX + floatmul(FX, 5)*2;
  67.                     Y = PY + floatmul(FY, 5)*2;
  68.                     Z = PZ + floatmul(FZ, 5);
  69.                     Portals[playerid][2] = CreateDynamicObject(18649, X, Y, Z+2, 0, 0, ROT+90);
  70.                     Portals[playerid][3] = CreateDynamicObject(18649, X, Y, Z-1, 0, 0, ROT+90);
  71.                     PortalCordsGreen[playerid][0] = X;
  72.                     PortalCordsGreen[playerid][1] = Y;
  73.                     PortalCordsGreen[playerid][2] = Z-1;
  74.                     PortalCordsGreen[playerid][3] = ROT+180;
  75.                     PortalCordsGreen[playerid][4] = GetPlayerInterior(playerid);
  76.                     Portals[playerid][0] = 1;
  77.                     PortalCount++;
  78.                 }
  79.                 else if(Portals[playerid][1] == 0)
  80.                 {
  81.                     new Float: PX, Float: PY, Float: PZ, Float:FY, Float:FX, Float: FZ;
  82.                     new Float: X, Float: Y, Float: Z, Float: ROT;
  83.                     GetPlayerCameraPos(playerid, PX, PY, PZ);
  84.                     GetPlayerCameraFrontVector(playerid, FX, FY, FZ);
  85.                     GetPlayerFacingAngle(playerid, ROT);
  86.                     X = PX + floatmul(FX, 5)*2;
  87.                     Y = PY + floatmul(FY, 5)*2;
  88.                     Z = PZ + floatmul(FZ, 5);
  89.                     Portals[playerid][4] = CreateDynamicObject(18650, X, Y, Z+2, 0, 0, ROT+90);
  90.                     Portals[playerid][5] = CreateDynamicObject(18650, X, Y, Z-1, 0, 0, ROT+90);
  91.                     PortalCordsOrange[playerid][0] = X;
  92.                     PortalCordsOrange[playerid][1] = Y;
  93.                     PortalCordsOrange[playerid][2] = Z-0.5;
  94.                     PortalCordsOrange[playerid][3] = ROT+180;
  95.                     PortalCordsOrange[playerid][4] = GetPlayerInterior(playerid);
  96.                     Portals[playerid][1] = 1;
  97.                     PortalCount++;
  98.                 }
  99.             }
  100.         }
  101.         else
  102.         {
  103.             SendClientMessage(playerid, 0xF0F0F0FF, "Maximun portals reached, please wait!");
  104.         }
  105.     }
  106.     return 1;
  107. }
  108.  
  109. public OnPlayerUpdate(playerid)
  110. {
  111.     foreach(Player, p)
  112.     {
  113.         if(Portals[p][0] == 1 && Portals[p][1] == 1)
  114.         {
  115.             new Float: ROT;
  116.             if(IsPlayerInAnyVehicle(playerid))
  117.             {
  118.                 if(nkey == 32)
  119.                 {
  120.                     GetVehicleZAngle(GetPlayerVehicleID(playerid), ROT);
  121.                     ROT = (ROT+180 > 360 ? ROT-360+180 : ROT+180);
  122.                 }
  123.                 else
  124.                 {
  125.                     GetVehicleZAngle(GetPlayerVehicleID(playerid), ROT);
  126.                 }
  127.             }
  128.             else
  129.             {
  130.                 GetPlayerFacingAngle(playerid, ROT);
  131.             }
  132.             if(IsPlayerInRangeOfPoint(playerid, 1.8, PortalCordsGreen[p][0], PortalCordsGreen[p][1], PortalCordsGreen[p][2]))
  133.             {
  134.                 if(ROT <= (PortalCordsGreen[p][3]-180 < 0 ? PortalCordsGreen[p][3]+360-180 : PortalCordsGreen[p][3]-180)+AMOUNT && ROT >= (PortalCordsGreen[p][3]-180 < 0 ? PortalCordsGreen[p][3]+360-180 : PortalCordsGreen[p][3]-180)-AMOUNT)
  135.                 {
  136.                     new Float: X, Float: Y, Float: Z;
  137.                     if(IsPlayerInAnyVehicle(playerid))
  138.                     {
  139.                         GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
  140.                         SetVehiclePos(GetPlayerVehicleID(playerid), PortalCordsOrange[p][0]+(floatmul(floatsin(-PortalCordsOrange[p][3], degrees), 3)), PortalCordsOrange[p][1]+(floatmul(floatcos(-PortalCordsOrange[p][3], degrees), 3)), PortalCordsOrange[p][2]);
  141.                         SetVehicleZAngle(GetPlayerVehicleID(playerid), PortalCordsOrange[p][3]);
  142.                         SetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
  143.                         LinkVehicleToInterior(GetPlayerVehicleID(playerid), FloatToInt(PortalCordsOrange[p][4]));
  144.                         SetPlayerInterior(playerid, FloatToInt(PortalCordsOrange[p][4]));
  145.                     }
  146.                     else
  147.                     {
  148.                         GetPlayerVelocity(playerid, X, Y, Z);
  149.                         SetPlayerPos(playerid, PortalCordsOrange[p][0]+(floatmul(floatsin(-PortalCordsOrange[p][3], degrees), 2.1)), PortalCordsOrange[p][1]+(floatmul(floatcos(-PortalCordsOrange[p][3], degrees), 2.1)), PortalCordsOrange[p][2]);
  150.                         SetPlayerFacingAngle(playerid, PortalCordsOrange[p][3]);
  151.                         SetPlayerVelocity(playerid, X, Y, Z);
  152.                         SetPlayerInterior(playerid, FloatToInt(PortalCordsOrange[playerid][4]));
  153.                     }
  154.                 }
  155.             }
  156.             if(IsPlayerInRangeOfPoint(playerid, 1.8, PortalCordsOrange[p][0], PortalCordsOrange[p][1], PortalCordsOrange[p][2]))
  157.             {
  158.                 if(ROT <= (PortalCordsOrange[p][3]-180 < 0 ? PortalCordsOrange[p][3]+360-180 : PortalCordsOrange[p][3]-180)+AMOUNT && ROT >= (PortalCordsOrange[p][3]-180 < 0 ? PortalCordsOrange[p][3]+360-180 : PortalCordsOrange[p][3]-180)-AMOUNT)
  159.                 {
  160.                     new Float: X, Float: Y, Float: Z;
  161.                     if(IsPlayerInAnyVehicle(playerid))
  162.                     {
  163.                         GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
  164.                         SetVehiclePos(GetPlayerVehicleID(playerid), PortalCordsGreen[p][0]+(floatmul(floatsin(-PortalCordsGreen[p][3], degrees), 3)), PortalCordsGreen[p][1]+(floatmul(floatcos(-PortalCordsGreen[p][3], degrees), 3)), PortalCordsGreen[p][2]);
  165.                         SetVehicleZAngle(GetPlayerVehicleID(playerid), PortalCordsGreen[p][3]);
  166.                         SetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
  167.                         LinkVehicleToInterior(GetPlayerVehicleID(playerid), FloatToInt(PortalCordsGreen[p][4]));
  168.                         SetPlayerInterior(playerid, FloatToInt(PortalCordsGreen[p][4]));
  169.                     }
  170.                     else
  171.                     {
  172.                         GetPlayerVelocity(playerid, X, Y, Z);
  173.                         SetPlayerPos(playerid, PortalCordsGreen[p][0]+(floatmul(floatsin(-PortalCordsGreen[p][3], degrees), 2.1)), PortalCordsGreen[p][1]+(floatmul(floatcos(-PortalCordsGreen[p][3], degrees), 2.1)), PortalCordsGreen[p][2]);
  174.                         SetPlayerFacingAngle(playerid, PortalCordsGreen[p][3]);
  175.                         SetPlayerVelocity(playerid, X, Y, Z);
  176.                         SetPlayerInterior(playerid, FloatToInt(PortalCordsGreen[p][4]));
  177.                     }
  178.                 }
  179.             }
  180.         }
  181.     }
  182.     return 1;
  183. }
  184.  
  185. COMMAND:resetp(playerid, params[])
  186. {
  187.     if(PortalCount > 0)
  188.     {
  189.         if(Portals[playerid][0] == 1)
  190.         {
  191.             PortalCount--;
  192.             DestroyDynamicObject(Portals[playerid][2]);
  193.             DestroyDynamicObject(Portals[playerid][3]);
  194.             PortalCordsGreen[playerid][0] = 0.0;
  195.             PortalCordsGreen[playerid][1] = 0.0;
  196.             PortalCordsGreen[playerid][2] = 0.0;
  197.             PortalCordsGreen[playerid][3] = 0.0;
  198.             PortalCordsGreen[playerid][4] = 0.0;
  199.             Portals[playerid][0] = 0;
  200.         }
  201.         if(Portals[playerid][1] == 1)
  202.         {
  203.             PortalCount--;
  204.             DestroyDynamicObject(Portals[playerid][4]);
  205.             DestroyDynamicObject(Portals[playerid][5]);
  206.             PortalCordsOrange[playerid][0] = 0.0;
  207.             PortalCordsOrange[playerid][1] = 0.0;
  208.             PortalCordsOrange[playerid][2] = 0.0;
  209.             PortalCordsOrange[playerid][3] = 0.0;
  210.             PortalCordsOrange[playerid][4] = 0.0;
  211.             Portals[playerid][1] = 0;
  212.         }
  213.         SendClientMessage(playerid, 0xF0F0F0FF, "Portals resseted.");
  214.     }
  215.     return 1;
  216. }
  217.  
  218. stock FloatToInt(Float:float)
  219. {
  220.     new _str[16];
  221.     format(_str, 16, "%f", float);
  222.     return strval(_str);
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement