f0cus

S.W.A.T virvė V1.0

Jul 20th, 2014
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.38 KB | None | 0 0
  1. /*
  2.         S.W.A.T virvė [failas:fcs_virve]
  3.  
  4.         AUTORIUS:
  5.                                 Tomas "f0cus" Vosylius
  6.         DATA:
  7.                                 2014-07-20
  8.         VERSIJA:
  9.                                 1.0 (updated: 2014-07-20)
  10.                                
  11.         PAGALBA:
  12.                                 BLASIUM
  13.                                 Kalcor
  14.                                 SA-MP TEAM
  15.                                 DracoBlue
  16.                                
  17.         Radus klaidą, praneškite ją į skype: factro0, arba filterscript publikavimo temoje.
  18.         Perdaryti ir/ar perpublikuoti be autoriaus sutikimo yra draudžiama.
  19. */
  20.  
  21. #include    <a_samp>
  22. #include    <mapandreas>
  23. // Sisteminiai nustatymai
  24. #define     ChopperID                           497  //  Lėktuvo ID, iš kurio leidžiama leistis
  25. #define     SkinID                              285  //  Išvaizdos ID, su kuria bus leidžiama leistis
  26. #define     SlidingLenght                       100  // Aukštis žaidimo metrais, aukščiau jo negalima leistis virve
  27. #define     CheckSkin                           false //  Ar tikrinti žaidėjo išvaizdos ID, su kuria leidžiama leistis (nustatyta viršuje)
  28. #define     CheckChopper                        false //  Ar tikrinti sraigtasparnio ID, iš kurio leidžiama leistis. Jei nustatyta FALSE, tikrinama bus ar išvis lėktuve (nustatyta viršuje)
  29.                                                      /*
  30.                                                      true = taip (tikrinti)
  31.                                                      false = ne (netikrinti)
  32.                                                      */
  33. // Kodavimo define
  34. #define     IsPlayerSliding(%1)                 GetPVarInt(%1,"is_sliding")
  35. #define     SetIsPlayerSliding(%1,%2)           SetPVarInt(%1,"is_sliding",%2)
  36. #define     SetCanPlayerSlide(%1,%2)            SetPVarInt(%1,"can_slide",%2)
  37. #define     dcmd(%1,%2,%3)                      if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  38.  
  39. new Float:pid_pos[MAX_PLAYERS][5],
  40.     tikrinamSkin = CheckSkin,
  41.     tikrinamSraigta = CheckChopper;
  42.  
  43. public OnFilterScriptInit()
  44. {
  45.     MapAndreas_Init(MAP_ANDREAS_MODE_FULL);
  46.     print("\n  FS::\t\"S.W.A.T virvė\" sėkmingai paleista.");
  47.     print("  FS::\tŠio įskiepio autorius yra Tomas \"f0cus\" Vosylius\n");
  48.     return 1;
  49. }
  50.  
  51. public OnFilterScriptExit()
  52. {
  53.     print("\n  FS::\t\"S.W.A.T virvė\" išjungta.");
  54.     print("  FS::\tŠio įskiepio autorius yra Tomas \"f0cus\" Vosylius\n");
  55.     return 1;
  56. }
  57.  
  58. public OnPlayerRequestClass(playerid, classid)
  59. {
  60.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  61.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  62.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  63.     return 1;
  64. }
  65. public OnPlayerSpawn(playerid)
  66. {
  67.     return 1;
  68. }
  69.  
  70. public OnPlayerDeath(playerid, killerid, reason)
  71. {
  72.     if(IsPlayerSliding(playerid) == 1)
  73.     {
  74.         SetIsPlayerSliding(playerid, 0);
  75.         ClearAnimations(playerid);
  76.         TogglePlayerControllable(playerid, true);
  77.     }
  78.     return 1;
  79. }
  80.  
  81. public OnVehicleDeath(vehicleid, killerid)
  82. {
  83.     return 1;
  84. }
  85.  
  86. public OnPlayerCommandText(playerid, cmdtext[])
  87. {
  88.     dcmd(lvirve,6, cmdtext);
  89.     return 0;
  90. }
  91. dcmd_lvirve(playerid, params[])
  92. {
  93.     #pragma unused params
  94.     new reikiamaMasina = GetPlayerVehicleID(playerid);
  95.     if(IsPlayerInAnyVehicle(playerid) && IsPlayerSliding(playerid) == 0 && GetPlayerVehicleSeat(playerid) != 1)
  96.     {
  97.         if(tikrinamSkin)
  98.         {
  99.             if(GetPlayerSkin(playerid) != SkinID)
  100.                 return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Jūs neesate tinkamai apsirengęs!");
  101.  
  102.         }
  103.         if(tikrinamSraigta)
  104.         {
  105.             if(GetVehicleModel(reikiamaMasina) != ChopperID)
  106.                 return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Jūs neesate tinkamame lėktuve!");
  107.         }
  108.         else if(!tikrinamSraigta)
  109.         {
  110.             if(GetVehicleModel(reikiamaMasina) != 488 && GetVehicleModel(reikiamaMasina) != 487 && GetVehicleModel(reikiamaMasina) != 417\
  111.             && GetVehicleModel(reikiamaMasina) != 447 && GetVehicleModel(reikiamaMasina) != 469 && GetVehicleModel(reikiamaMasina) != 548\
  112.             && GetVehicleModel(reikiamaMasina) != 563 && GetVehicleModel(reikiamaMasina) != 497) // patikrinome ar išvis yra kokiam nors sraigtasparnyje
  113.                 return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Jūs neesate tinkamame transporte!");
  114.         }
  115.         GetPlayerPos(playerid,pid_pos[playerid][0],pid_pos[playerid][1],pid_pos[playerid][2]);       // Išgauname žaidėjo X / Y / Z koordinates
  116.         MapAndreas_FindZ_For2DCoord(pid_pos[playerid][0],pid_pos[playerid][1],pid_pos[playerid][3]); // Surandame aukščiausią tašką X / Y žaidėjo koordinatėje
  117.         pid_pos[playerid][4] = floatsub(pid_pos[playerid][2],pid_pos[playerid][3]);                  // Sutraukiame koordinates į vieną, bei surandame skirtumus
  118.         if(pid_pos[playerid][4] > SlidingLenght)    // Tikriname ar žaidėjo aukštis nuo aukščiausio taško nėra didesnis nei limitas
  119.             return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Iš tokio aukščio nusileisti negalite, esate per aukštai!");
  120.         if(pid_pos[playerid][4] < 4) // Tikriname ar žaidėjo aukštis yra didesnis nei 4 metrai, nes tai yra per žemai.
  121.             return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Iš tokio aukščio nusileisti negalite, esate per žemai!");
  122.         SendClientMessage(playerid, 0xFFFFFFFF, "{BABABA}Pradėjote leistis!");
  123.         SetIsPlayerSliding(playerid, 1);
  124.         SetCanPlayerSlide(playerid, 0);
  125.         SetPlayerCheckpoint(playerid,pid_pos[playerid][0],pid_pos[playerid][1],floatsub(pid_pos[playerid][3],12),20);
  126.         SetPlayerPos(playerid,pid_pos[playerid][0],pid_pos[playerid][1],floatsub(pid_pos[playerid][2],2));
  127.         SetPlayerVelocity(playerid,0,0,0);
  128.         ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1,0);
  129.         SetTimerEx("PlayerSlide", 700, false, "i", playerid);
  130.     }
  131.     else
  132.         return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Leistis virve negalite!");
  133.     return true;
  134. }
  135. forward PlayerSlide(playerid);
  136. forward LastMeters(playerid);
  137. public PlayerSlide(playerid)
  138. {
  139.     if(IsPlayerSliding(playerid) > 0)
  140.     {
  141.         ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1,0);
  142.         SetTimerEx("PlayerSlide", 100, false, "i", playerid);
  143.     }
  144.     else
  145.         return 0;
  146.     return true;
  147. }
  148. public LastMeters(playerid)
  149. {
  150.     if(IsPlayerSliding(playerid) > 0)
  151.     {
  152.         TogglePlayerControllable(playerid, true);
  153.         ClearAnimations(playerid);
  154.         SendClientMessage(playerid, 0xFFFFFFFF, "{00F900}Sėkmingai nusileidote!");
  155.         SetIsPlayerSliding(playerid, 0);
  156.     }
  157.     return true;
  158. }
  159. public OnPlayerEnterCheckpoint(playerid)
  160. {
  161.     if(IsPlayerSliding(playerid) == 1)
  162.     {
  163.         DisablePlayerCheckpoint(playerid);
  164.         SetTimerEx("LastMeters", 150, false, "i", playerid);
  165.     }
  166.     return 1;
  167. }
Advertisement
Add Comment
Please, Sign In to add comment