Guest User

Luby

a guest
Feb 4th, 2009
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 34.36 KB | None | 0 0
  1. #include <a_samp>
  2. #include <dini>
  3. #pragma unused ret_memcpy
  4.  
  5. #define function
  6. #define COLOR_GREEN 0x00FF00FF
  7. #define COLOR_WHITE 0xFFFFFFFF
  8. #define COLOR_GREY 0xC6BEBDFF
  9. #define HYDRA_TEAM 0
  10. #define TRAIN_TEAM 1
  11. #define KOLOR_RAMKA 0x00770000
  12. #define KOLOR_SRODEK 0x00000088
  13. #define ADMIN_SPEC_TYPE_NONE 0
  14. #define ADMIN_SPEC_TYPE_PLAYER 1
  15. #define ADMIN_SPEC_TYPE_VEHICLE 2
  16. #define STR 100
  17. #define FileName "R.T.v.H.1.4.-Config.cfg"
  18.  
  19. new HydraScore, RoadScore;
  20. new Text:idin[200];
  21. new SpectateID[20];
  22. new SpectateType[200];
  23. new cofa[200];
  24. new PlColor[200];
  25. new Entering[200];
  26. new Spawned[200];
  27. new IsPlayerSpec[200];
  28. new IsPlayerSpec2[200];
  29. enum OldPosEnum
  30. {
  31.     Float:oX,
  32.     Float:oY,
  33.     Float:oZ
  34. };
  35. new OldPos[200][OldPosEnum];
  36. new PlayerObjects[200][6];
  37. new Timer[150];
  38. new PlayerLoading[200];
  39. new AddLife[200];
  40. new ObjIco[150][200];
  41. new Menu:ChatID;
  42. new Menu:PlayerMenu[200];
  43. new IsSpec[200];
  44. new Gangzones[2];
  45. new ForceSpawn2;
  46.  
  47. main()
  48. {
  49.     print("\n ----------------------------------");
  50.     print("    \"RoadTrain vs. Hydra TDM\"    ");
  51.     print("            >>By Luby<<            ");
  52.     print(" ----------------------------------\n");
  53. }
  54.  
  55. public OnGameModeInit()
  56. {
  57.     SetGameModeText("R.T.v.H.1.4 by Luby");
  58.  
  59.     AddPlayerClassEx(HYDRA_TEAM, 2,1342.079102 ,1698.567627 ,10.480688, 270.0, 34, 100, 43, 1, 44, 1);
  60.     AddPlayerClassEx(TRAIN_TEAM, 1,1604.073730 ,307.328888 ,20.453587, 270.0, 34, 100, 43, 1, 44, 1);
  61.  
  62.     Gangzones[0] = GangZoneCreate(floatsub(1302.079102, 50.0), floatsub(1658.567627, 50.0), floatadd(1382.079102, 50.0), floatadd(1738.567627, 50.0));
  63.     Gangzones[1] = GangZoneCreate(floatsub(1564.073730, 50.0), floatsub(267.328888, 50.0) , floatadd(1644.073730, 50.0), floatadd(347.328888, 50.0) );
  64.  
  65.     AddStaticVehicle(515,1601.111938 ,301.369354 ,20.327288, 0.0      , 2, 4);
  66.     AddStaticVehicle(515,1611.111938 ,301.369354 ,20.327288, 0.0      , 2, 4);
  67.     AddStaticVehicle(515,1621.111938 ,301.369354 ,20.327288, 0.0      , 2, 4);
  68.     AddStaticVehicle(515,1631.111938 ,301.369354 ,20.327288, 0.0      , 2, 4);
  69.     AddStaticVehicle(515,1641.111938 ,301.369354 ,20.327288, 0.0      , 2, 4);
  70.     AddStaticVehicle(520,1369.3843   ,1621.0599  ,11.1914  , 269.3976 , 2, 4);
  71.     AddStaticVehicle(520,1369.3843   ,1631.0599  ,11.1914  , 269.3976 , 2, 4);
  72.     AddStaticVehicle(520,1369.3843   ,1641.0599  ,11.1914  , 269.3976 , 2, 4);
  73.     AddStaticVehicle(520,1369.3843   ,1651.0599  ,11.1914  , 269.3976 , 2, 4);
  74.     AddStaticVehicle(520,1369.3843   ,1661.0599  ,11.1914  , 269.3976 , 2, 4);
  75.  
  76.     SetWorldTime(0);
  77.     SetWeather(9);
  78.  
  79.     CreateObject(18449, 1684.991455, 565.249817, 12.891274, 2.5783, 355.7028, 268.0403);
  80.     CreateObject(18449, 1681.982666, 486.726501, 14.258919, 357.4217, 357.4217, 87.6625);
  81.     CreateObject(18449, 1682.188354, 460.868652, 11.355900, 356.5623, 7.7349, 81.6465);
  82.  
  83.     SetTimer("ForceSpawn", 1000, true);
  84.     SetTimer("ScoreUpdate", 1000, true);
  85.     SetTimer("AddLifeTimer", 100, true);
  86.     SetTimer("SpeedUpdate",  100, true);
  87.  
  88.     SetDisabledWeapons(43,44,45);
  89.     SetTeamCount(2);
  90.     UsePlayerPedAnims();
  91.  
  92.     if(dini_Exists(FileName))
  93.     {
  94.  
  95.     }
  96.     else
  97.     {
  98.  
  99.         print("\n Gamemode runned first time. Configuration file created.\n");
  100.         dini_Create(FileName);
  101.  
  102.     }
  103.  
  104.     ChatID = CreateMenu(" ", 1, 5.0, 3.0, 350.0, 0.0);
  105.     AddMenuItem(ChatID, 0, " ");
  106.     AddMenuItem(ChatID, 0, " ");
  107.     AddMenuItem(ChatID, 0, " ");
  108.     AddMenuItem(ChatID, 0, " ");
  109.     DisableMenu(ChatID);
  110.  
  111.     return 1;
  112. }
  113.  
  114. public OnGameModeExit()
  115. {
  116.     return 1;
  117. }
  118.  
  119. public OnPlayerRequestClass(playerid, classid)
  120. {
  121.     Spawned[playerid] = false;
  122.     switch(classid)
  123.     {
  124.         case 0:GameTextForPlayer(playerid,"~g~Hydra ~b~Team",1000,4);
  125.         case 1:GameTextForPlayer(playerid,"~r~RoadTrain ~b~Team",1000,4);
  126.     }
  127.  
  128.     new Float:X, Float:Y, Float:Z;
  129.     GetPlayerPos(playerid, X, Y, Z);
  130.     PlayerPlaySound(playerid, 9200, X, Y, Z);
  131.     SetPlayerPos(playerid,1679.210205 ,1447.770752 ,47.438412);
  132.     SetPlayerFacingAngle(playerid, 0.0);
  133.     SetPlayerCameraPos(playerid,1679.210205 ,1457.770752 ,49.438412);
  134.     SetPlayerCameraLookAt(playerid,1679.210205 ,1447.770752 ,47.438412);
  135.     return 1;
  136. }
  137.  
  138. forward ForceSpawn();
  139. public ForceSpawn()
  140. {
  141.     ForceSpawn2++;
  142.     if(ForceSpawn2 == 15)
  143.     {
  144.         ForceSpawn2=0;
  145.         for(new g=0;g<200;g++)if(IsPlayerConnected(g))
  146.         {
  147.             if(IsPlayerSpec[g])
  148.             {
  149.                 GameTextForPlayer(g,"~n~~n~~n~~n~~r~R~w~espawn",1005,5);
  150.                 IsPlayerSpec[g] = false;
  151.                 StopSpectate(g);
  152.                 SpawnPlayer(g);
  153.             }
  154.         }
  155.     }
  156.     else for(new g=0;g<200;g++)if(IsPlayerConnected(g))
  157.     {
  158.         new str[256];
  159.         format(str, 256, "~n~You're watching %s~n~~r~T~w~o ~r~r~w~espawn ~r~l~w~eft ~b~: ~n~~w~%d ~g~sec",PlayerName(SpectateID[g]) , 14-ForceSpawn2);
  160.         if(IsPlayerSpec[g])
  161.         {
  162.             GameTextForPlayer(g,str,1005,5);
  163.         }
  164.     }
  165. }
  166.  
  167.  
  168. public OnPlayerRequestSpawn(playerid)
  169. {
  170.     new count[2];
  171.     count[0] = GetTeamMembers(0);
  172.     count[1] = GetTeamMembers(1);
  173.     new sup;
  174.     if(count[1] > count[0])sup = 1; else if(count[1] < count[0])sup = 0; else return 1;
  175.     sup++;
  176.     if(GetPlayerSkin(playerid) != sup)
  177.     {
  178.         GameTextForPlayer(playerid,"~w~This team has too much of players.~n~~g~Choose other.",1000,5);
  179.         return 0;
  180.     }
  181.     return 1;
  182. }
  183.  
  184. GetTeamMembers(teamid)
  185. {
  186.     new count;
  187.     for(new g=0;g<200;g++)if(IsPlayerConnected(g) && GetPlayerTeam(g) == teamid && Spawned[g])count++;
  188.     return count;
  189. }
  190.  
  191. public OnPlayerConnect(playerid)
  192. {
  193.     new pName[30], string[256];
  194.     GetPlayerName(playerid, pName, 30);
  195.     format(string, 256, "*** %s joined the game.", pName);
  196.     SendClientMessageToAll(COLOR_GREY,string);
  197.     GangZoneShowForPlayer(playerid, Gangzones[1], 0xFF000077);
  198.     GangZoneShowForPlayer(playerid, Gangzones[0], 0x00FF0077);
  199.     IsPlayerSpec[playerid] = false;
  200.     cofa[playerid] = false;
  201.     Entering[playerid] = false;
  202.     SendClientMessage(playerid, 0x0088FFAA, "R.T.v.H.1.4 by Luby.");
  203.     SendClientMessage(playerid, 0x0088FFAA, "Type /help for more information.");
  204.     IsSpec[playerid] = -2;
  205.     for(new v=0;v<4;v++)
  206.     {
  207.         if(IsVehicleInUse(v) && GetVehicleModel(v) == 515)
  208.         {
  209.             new Float:X, Float:Z, Float:Y, Float:A;
  210.             GetVehiclePos(v, X, Y, Z);
  211.             GetVehicleZAngle(v, A);
  212.             X -= (floatmul(1.0 , floatsin(-A, degrees)));
  213.             Y -= (floatmul(1.0 , floatcos(-A, degrees)));
  214.             PlayerObjects[playerid][v] = CreatePlayerObject(playerid, 3267, X, Y, floatadd(Z, 1.2), 0.0, 0.0, A);
  215.             AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][v], GetVehicleDriver(v), 0.5, -3.9, -0.5, 0.0, 0.0, 0.0);
  216.         }
  217.     }
  218.     return 1;
  219. }
  220.  
  221. public OnPlayerDisconnect(playerid, reason)
  222. {
  223.     GangZoneHideForPlayer(playerid, Gangzones[1]);
  224.     GangZoneHideForPlayer(playerid, Gangzones[0]);
  225.     switch(reason)
  226.     {
  227.         case 0:
  228.         {
  229.              new pName[30], string[256];
  230.              GetPlayerName(playerid, pName, 30);
  231.              format(string, 256, "*** %s left game. (Timeout)", pName);
  232.              SendClientMessageToAll(COLOR_GREY, string);
  233.         }
  234.         case 1:
  235.         {
  236.              new pName[30], string[256];
  237.              GetPlayerName(playerid, pName, 30);
  238.              format(string, 256, "*** %s left game. (Quit)", pName);
  239.              SendClientMessageToAll(COLOR_GREY, string);
  240.         }
  241.         case 2:
  242.         {
  243.              new pName[30], string[256];
  244.              GetPlayerName(playerid, pName, 30);
  245.              format(string, 256, "*** %s left game. (Kicked)", pName);
  246.              SendClientMessageToAll(COLOR_GREY, string);
  247.         }
  248.     }
  249.     for(new x=0; x<MAX_PLAYERS; x++)
  250.     {
  251.         if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
  252.           {
  253.             AdvanceSpectate(x);
  254.         }
  255.     }
  256.     return 1;
  257. }
  258.  
  259. public OnPlayerSpawn(playerid)
  260. {
  261.     if(!Spawned[playerid])
  262.     {
  263.         new pName[30], string[256];
  264.         GetPlayerName(playerid, pName, 30);
  265.         switch(GetPlayerTeam(playerid))
  266.         {
  267.             case 1:format(string, 256, "*** %s joined team RoadTrain.", pName);
  268.             case 0:format(string, 256, "*** %s joined team Hydra.", pName);
  269.         }
  270.         SendClientMessageToAll(COLOR_GREY,string);
  271.     }
  272.     Spawned[playerid] = true;
  273.     if(IsPlayerSpec2[playerid])
  274.     {
  275.         IsPlayerSpec[playerid] = true;
  276.         SetTimerEx("procespec", 1, 0, "d", playerid);
  277.     }
  278.     return 1;
  279. }
  280.  
  281. public OnPlayerDeath(playerid, killerid, reason)
  282. {
  283.     if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515 && IsValidObject(PlayerObjects[playerid][GetPlayerVehicleID(playerid)]))
  284.     {
  285.         DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]);
  286.     }
  287.     IsPlayerSpec2[playerid] = true;
  288.     for(new x=0; x<MAX_PLAYERS; x++)
  289.     {
  290.         if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
  291.         {
  292.             AdvanceSpectate(x);
  293.         }
  294.     }
  295.     SetPlayerScore(playerid, GetPlayerScore(playerid)-1);
  296.     switch(GetPlayerTeam(playerid))
  297.     {
  298.         case 1:
  299.         {
  300.             HydraScore++;
  301.         }
  302.         case 0 :
  303.         {
  304.             RoadScore++;
  305.         }
  306.     }
  307.     return 1;
  308. }
  309.  
  310. forward procespec(playerid);
  311. public procespec(playerid)
  312. {
  313.     IsPlayerSpec2[playerid] = false;
  314.     new id=0;
  315.     new ids[200]= {-1,...};
  316.     for(new g=0;g<200;g++)
  317.     {
  318.         if(IsPlayerConnected(g) && g!=playerid)
  319.         {
  320.             ids[id]=g;
  321.             id++;
  322.         }
  323.     }
  324.     new rand;
  325.     if(id == 1)
  326.     {
  327.         rand = ids[0];
  328.     } else if(id > 1)rand = ids[random(id)]; else
  329.     {
  330.         rand = playerid;
  331.     }
  332.     if(rand != playerid)
  333.     {
  334.         StartSpectate(playerid, rand);
  335.     }
  336.     else
  337.     {
  338.         switch(GetPlayerTeam(playerid))
  339.         {
  340.             case 1 :
  341.             {
  342.                 SetPlayerCameraPos(playerid,1544.073730 ,337.328888 ,30.453587);
  343.                 SetPlayerCameraLookAt(playerid,1604.073730 ,307.328888 ,20.453587);
  344.                 SetPlayerPos(playerid, 0.0, 0.0, 0.0);
  345.             }
  346.             case 0 :
  347.             {
  348.                 SetPlayerCameraPos(playerid,1372.079102 ,1648.567627 ,28.480688);
  349.                 SetPlayerCameraLookAt(playerid,1342.079102 ,1698.567627 ,10.480688);
  350.                 SetPlayerPos(playerid, 0.0, 0.0, 0.0);
  351.             }
  352.         }
  353.     }
  354.     return true;
  355. }
  356.  
  357. public OnVehicleDeath(vehicleid, killerid)
  358. {
  359.     for(new g=0;g<200;g++)if(IsSpec[g] == vehicleid)
  360.     {
  361.         OnPlayerDeath(g, 255, 0);
  362.     }
  363.     return 1;
  364. }
  365.  
  366. public OnPlayerCommandText(playerid, cmdtext[])
  367. {
  368.     if(strcmp(cmdtext, "/help", true, 5) == 0 || strcmp(cmdtext, "/h", true, 6) == 0 || strcmp(cmdtext, "/info", true, 2) == 0)
  369.     {
  370.         SendClientMessage(playerid, 0xFF7777FF, "*** Hi. You are playing on RTvH (Road Train vs Hydra).");
  371.         SendClientMessage(playerid, 0xFF7777FF, "*** Team with 30 points wins.");
  372.         SendClientMessage(playerid, 0xFF7777FF, "*** If you are in Road Train press FIRE button to shoot the closest enemy.");
  373.         SendClientMessage(playerid, 0xFF7777FF, "*** If you want to shoot in Hydra you need to be passeneger.");
  374.         SendClientMessage(playerid, 0xFF7777FF, "*** If you want to get in to Hydra on the passeneger press ENTER if there is another player.");
  375.         SendClientMessage(playerid, 0xFF7777FF, "*** In right down corner you see 3 enemies.");
  376.         SendClientMessage(playerid, 0xFF7777FF, "*** You can shoot to blue players.");
  377.         SendClientMessage(playerid, 0xFF7777FF, "*** Good Luck ! Information about author - /about");
  378.         return 1;
  379.     }
  380.     if(strcmp(cmdtext, "/about", true, 6) == 0)
  381.     {
  382.         SendClientMessage(playerid, 0xFF7777FF, "*** This gamemode is coded by Luby and translated by Frank.");
  383.         SendClientMessage(playerid, 0xFF7777FF, "*** Contact: MSN: [email protected].");
  384.         SendClientMessage(playerid, 0xFF7777FF, "*** Betatesters : Paffcio, SubZero, Kitan, Homie.PL, Mysz, Mruk_POL, Mateoma.");
  385.         SendClientMessage(playerid, 0xFF7777FF, "*** You can find this gamemode on www.forum.sa-mp.com.");
  386.         return 1;
  387.     }
  388.     return SendClientMessage(playerid, 0xFF7777FF, "*** Unknown Command.");
  389. }
  390.  
  391. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  392. {
  393.     if(GetVehicleModel(vehicleid) == 520 && IsVehicleInUse(vehicleid))
  394.     {
  395.         TogglePlayerSpectating(playerid, 1);
  396.         PlayerSpectateVehicle(playerid, vehicleid, SPECTATE_MODE_NORMAL);
  397.         IsSpec[playerid] = vehicleid;
  398.     }
  399.     for(new x=0; x<MAX_PLAYERS; x++)
  400.     {
  401.         if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
  402.         {
  403.             TogglePlayerSpectating(x, 1);
  404.             PlayerSpectateVehicle(x, vehicleid);
  405.             SpectateType[x] = ADMIN_SPEC_TYPE_VEHICLE;
  406.         }
  407.     }
  408.     return 1;
  409. }
  410.  
  411. public OnPlayerExitVehicle(playerid, vehicleid)
  412. {
  413.     new Float:X, Float:Y, Float:Z, Float:A;
  414.     GetVehiclePos(vehicleid, X, Y, Z);
  415.     GetVehicleZAngle(vehicleid, A);
  416.     SetVehiclePos(vehicleid, X, Y, Z);
  417.     SetVehicleZAngle(vehicleid, A);
  418.     if(GetVehicleModel(vehicleid) == 515)
  419.     {
  420.         DestroyPlayerObject(playerid, PlayerObjects[playerid][vehicleid]);
  421.         for(new g=0;g<200;g++)if(IsPlayerConnected(g) && g != playerid)DestroyPlayerObject(g, PlayerObjects[playerid][vehicleid]);
  422.     }
  423.     for(new x=0; x<MAX_PLAYERS; x++)
  424.     {
  425.         if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid && SpectateType[x] == ADMIN_SPEC_TYPE_VEHICLE) {
  426.             TogglePlayerSpectating(x, 1);
  427.             PlayerSpectatePlayer(x, playerid);
  428.             SpectateType[x] = ADMIN_SPEC_TYPE_PLAYER;
  429.         }
  430.     }
  431.     return 1;
  432. }
  433.  
  434. public OnPlayerStateChange(playerid, newstate, oldstate)
  435. {
  436.     if(newstate == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
  437.     {
  438.         new v = GetPlayerVehicleID(playerid);
  439.         new Float:X, Float:Z, Float:Y, Float:A;
  440.         GetVehiclePos(v, X, Y, Z);
  441.         GetVehicleZAngle(v, A);
  442.         X -= (floatmul(-2.0 , floatsin(-A, degrees)));
  443.         PlayerObjects[playerid][v] = CreatePlayerObject(playerid, 3267, X, Y, floatadd(Z, -1.3), 0.0, 0.0, A);
  444.         AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][v], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0);
  445.         for(new g=0;g<200;g++)if(g != playerid && IsPlayerConnected(g))
  446.         {
  447.             PlayerObjects[g][v] = CreatePlayerObject(g, 3267, X, Y, floatadd(Z, -1.3), 0.0, 0.0, A);
  448.             AttachPlayerObjectToPlayer(g, PlayerObjects[g][v], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0);
  449.         }
  450.     }
  451.     if(newstate == PLAYER_STATE_ONFOOT)
  452.     {
  453.         IsSpec[playerid] = -2;
  454.     }
  455.     if(!IsPlayerSpec[playerid])
  456.     {
  457.         if(newstate == PLAYER_STATE_DRIVER)
  458.         {
  459.             switch(GetVehicleModel(GetPlayerVehicleID(playerid)))
  460.             {
  461.                 case 515:
  462.                     GameTextForPlayer(playerid,"~r~RoadTrain",2000,1);
  463.                 case 520:
  464.                     GameTextForPlayer(playerid,"~g~Hydra",2000,1);
  465.             }
  466.             Entering[playerid]=true;
  467.             SetTimerEx("EnterClear", 2000, false, "d", playerid);
  468.         }
  469.     }
  470.     return 1;
  471. }
  472.  
  473. forward EnterClear(pl);
  474. public EnterClear(pl)Entering[pl] = false;
  475.  
  476. public OnPlayerEnterCheckpoint(playerid)
  477. {
  478.     return 1;
  479. }
  480.  
  481. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  482. {
  483.     new x = 0;
  484.     while(x!=MAX_PLAYERS)
  485.     {
  486.         if( IsPlayerConnected(x) && GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid && SpectateType[x] == ADMIN_SPEC_TYPE_PLAYER )
  487.         {
  488.             SetPlayerInterior(x,newinteriorid);
  489.         }
  490.         x++;
  491.     }
  492.     return true;
  493. }
  494.  
  495. public OnPlayerExitedMenu(playerid)
  496. {
  497.     ShowMenuForPlayer(PlayerMenu[playerid], playerid);
  498.     return 1;
  499. }
  500.  
  501. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  502. {
  503.     if(newkeys & KEY_FIRE && !IsPlayerInSpawn(playerid) &&!PlayerLoading[playerid] && IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
  504.     {
  505.         new ShotObj1;
  506.         new ShotObj2;
  507.         new Float:X, Float:Y, Float:Z;
  508.         GetPlayerPos(playerid, X, Y, Z);
  509.         PlayerPlaySound(playerid, 1159, X, Y, Z);
  510.         GetObjectPos(PlayerObjects[playerid][GetPlayerVehicleID(playerid)], X, Y, Z);
  511.         ShotObj1 = CreateObject(354  , X, Y, Z+4.0, 0.0, 0.0, 0.0);
  512.         new Target;
  513.         new Targets2=0;
  514.         new Float:x, Float:y, Float:z;
  515.         new Targets[3];
  516.         switch(GetPlayerTeam(playerid))
  517.         {
  518.             case 1:Targets = G3PCTPIT(playerid, 0);
  519.             case 0:Targets = G3PCTPIT(playerid, 1);
  520.         }
  521.         if(Targets[2] != 255)Targets2++;
  522.         if(Targets[1] != 255)Targets2++;
  523.         if(Targets[0] != 255)Targets2++;
  524.         if(Targets2 > 0){
  525.             Target = Targets[random(Targets2)];
  526.         } else Target = playerid;
  527.         if(Target != GetVehicleDriver(GetPlayerVehicleID(playerid)) && Target != playerid && Target != GetVehiclePass(GetPlayerVehicleID(playerid)) && Target != 255){
  528.             Timer[ShotObj1] = SetTimerEx("UpdateShot", 100, 10, "dddd",ShotObj1,  Target, playerid);
  529.             SetTimerEx("DestroyRObject", 5000, 0, "d",ShotObj1);
  530.         }
  531.         else
  532.         {
  533.             GetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
  534.             new Float:A;
  535.             GetVehicleZAngle(GetPlayerVehicleID(playerid), A);
  536.             x += (floatmul(500.0 , floatsin(-A, degrees)));
  537.             y += (floatmul(500.0 , floatcos(-A, degrees)));
  538.             MoveObject(ShotObj1, x, y, z+200.0, 405.55515);
  539.             SetTimerEx("DestroyRObject", 2200, 0, "d",ShotObj1);
  540.             SetTimerEx("DestroyRObject", 2200, 0, "d",ShotObj2);
  541.         }
  542.         new Text:textid;
  543.         textid = TextDrawCreate(200.0, 400.0, "Reloading~n~Please Wait...");
  544.         TextDrawColor(textid, 0xFF0000FF);
  545.         TextDrawShowForPlayer(playerid, textid);
  546.         SetTimerEx("ClearShot", 2000, 0 ,"di", playerid, _:textid);
  547.         PlayerLoading[playerid] = true;
  548.     }
  549.     if(newkeys & KEY_FIRE && !IsPlayerInSpawn(playerid) && !PlayerLoading[playerid] && IsSpec[playerid] != -1 && IsSpec[playerid] != -2)
  550.     {
  551.         new ShotObj1;
  552.         new Float:X, Float:Y, Float:Z;
  553.         GetVehiclePos(IsSpec[playerid], X, Y, Z);
  554.         PlayerPlaySound(playerid, 1159, X, Y, Z);
  555.         ShotObj1 = CreateObject(354 , X, Y, Z, 0.0, 0.0, 0.0);
  556.         new Target;
  557.         new Targets2=0;
  558.         new Float:x, Float:y, Float:z;
  559.         new Targets[3];
  560.         switch(GetPlayerTeam(playerid))
  561.         {
  562.             case 1:Targets = G3PCTPIT(playerid, 0);
  563.             case 0:Targets = G3PCTPIT(playerid, 1);
  564.         }
  565.         if(Targets[2] != 255)Targets2++;
  566.         if(Targets[1] != 255)Targets2++;
  567.         if(Targets[0] != 255)Targets2++;
  568.         if(Targets2 > 0){
  569.             Target = Targets[random(Targets2)];
  570.         } else Target = playerid;
  571.         if(Target != GetVehicleDriver(IsSpec[playerid]) && Target != playerid && Target != GetVehiclePass(IsSpec[playerid]) && Target != 255){
  572.             Timer[ShotObj1] = SetTimerEx("UpdateShot", 100, 10, "ddd",ShotObj1, Target, playerid);
  573.             SetTimerEx("DestroyRObject", 2000, 0, "d",ShotObj1);
  574.         }
  575.         else
  576.         {
  577.             GetVehiclePos(IsSpec[playerid], x, y, z);
  578.             new Float:A;
  579.             GetVehicleZAngle(IsSpec[playerid], A);
  580.             x += (floatmul(500.0 , floatsin(-A, degrees)));
  581.             y += (floatmul(500.0 , floatcos(-A, degrees)));
  582.             MoveObject(ShotObj1, x, y, z, 305.55515);
  583.             SetTimerEx("DestroyRObject", 200, 0, "d",ShotObj1);
  584.         }
  585.         new Text:textid;
  586.         textid = TextDrawCreate(200.0, 400.0, "Reloading~n~Please Wait...");
  587.         TextDrawColor(textid, 0x00FF00FF);
  588.         TextDrawShowForPlayer(playerid, textid);
  589.         SetTimerEx("ClearShot", 2000, 0 ,"di", playerid, _:textid);
  590.         PlayerLoading[playerid] = true;
  591.     }
  592.     if(newkeys & 16 && !IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_SPECTATING)
  593.     {
  594.         new Float:X, Float:Y, Float:Z, Float:Health, Float:Armour, Float:Angle;
  595.         GetVehiclePos(IsSpec[playerid], X, Y, Z);
  596.         GetVehicleZAngle(IsSpec[playerid], Angle);
  597.         GetPlayerArmour(playerid, Armour);
  598.         GetPlayerHealth(playerid, Health);
  599.         TogglePlayerSpectating(playerid, false);
  600.         SpawnPlayer(playerid);
  601.         X += (floatmul(4.0 , floatsin(floatadd(-Angle, 90.0), degrees)));
  602.         Y += (floatmul(4.0 , floatcos(floatadd(-Angle, 90.0), degrees)));
  603.         SetPlayerPos(playerid, X, Y, Z);
  604.         IsSpec[playerid] = -2;
  605.     }
  606.     if(newkeys & 32 && IsPlayerInAnyVehicle(playerid))
  607.     {
  608.         cofa[playerid] = true;
  609.         DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]);
  610.         PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0);
  611.         AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -4.9, -0.5, 0.0, 0.0, 0.0);
  612.     }
  613.     if(oldkeys & 32 && IsPlayerInAnyVehicle(playerid))
  614.     {
  615.         cofa[playerid] = false;
  616.         DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]);
  617.         PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0);
  618.         AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0);
  619.     }
  620.     if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && SpectateID[playerid] != INVALID_PLAYER_ID)
  621.     {
  622.         if(newkeys == KEY_JUMP)
  623.         {
  624.             AdvanceSpectate(playerid);
  625.         }
  626.         else if(newkeys == KEY_SPRINT)
  627.         {
  628.             ReverseSpectate(playerid);
  629.         }
  630.     }
  631.     return 1;
  632. }
  633.  
  634. forward ClearShot(pid, Text:text);
  635. public ClearShot(pid, Text:text)
  636. {
  637.     TextDrawHideForAll(text);
  638.     TextDrawDestroy(text);
  639.     PlayerLoading[pid] = false;
  640. }
  641.  
  642. forward UpdateShot(obj, tar, shooter);
  643. public UpdateShot(obj, tar, shooter)
  644. {
  645.     new Float:X, Float:Y, Float:Z;
  646.     GetPlayerPos(tar, X, Y, Z);
  647.     PlayerPlaySound(tar, 9200, X, Y, Z);
  648.     MoveObject(obj, X, Y, Z, 405.55515);
  649.     GetObjectPos(obj, X, Y, Z);
  650.     for(new g=0;g<200;g++)
  651.     {
  652.         RemovePlayerMapIcon(g, ObjIco[obj][g]);
  653.         ObjIco[obj][g] = SetPlayerMapIcon(g, 0xFF, X, Y, Z, 48, 0);
  654.     }
  655.     new Float:x, Float:y, Float:z;
  656.     new Float:x2, Float:y2, Float:z2;
  657.     GetObjectPos(obj, x2, y2, z2);
  658.     GetPlayerPos(tar, x, y, z);
  659.     new Float:Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2)));
  660.     if(Distance < 5)
  661.     {
  662.         if(IsValidObject(obj))DestroyObject(obj);
  663.         KillTimer(Timer[obj]);
  664.         for(new g=0;g<200;g++)
  665.  
  666.         {
  667.             RemovePlayerMapIcon(g, ObjIco[obj][g]);
  668.         }
  669.         new Float:H;
  670.         new IsVeh;
  671.         if(IsPlayerInAnyVehicle(tar)){IsVeh = 1;GetVehicleHealth(GetPlayerVehicleID(tar), H);} else GetPlayerHealth(tar, H);
  672.         if(IsVeh)H = floatdiv(H, 10.000000);
  673.         SetTimerEx("CheckBoom", 1000, false, "fdd", H, shooter, tar);
  674.         CreateExplosion(x, y, z, 0, 7.0);
  675.     }
  676. }
  677.  
  678. forward CheckBoom(Float:H, s, tar);
  679. public CheckBoom(Float:H, s, tar)
  680. {
  681.     new Float:H2;
  682.     new IsVeh;
  683.     if(IsPlayerInAnyVehicle(tar)){IsVeh = 1;GetVehicleHealth(GetPlayerVehicleID(tar), H2);} else GetPlayerHealth(tar, H2);
  684.     if(IsVeh)H = floatdiv(H2, 10.000000);
  685.     new Float:SUB;
  686.     SUB = floatsub(H2, H);
  687.     printf("SUB %f", SUB);
  688.     if(floatround(SUB) > 10)SendDeathMessage(s,tar,51);
  689. }
  690.  
  691. forward HideZone(z);
  692. public HideZone(z)
  693. {
  694.     GangZoneHideForAll(z);
  695.     GangZoneDestroy(z);
  696. }
  697.  
  698. forward DestroyRObject(z);
  699. public DestroyRObject(z)
  700. {
  701.     if(IsValidObject(z))DestroyObject(z);
  702.     KillTimer(Timer[z]);
  703.     new Float:x2, Float:y2, Float:z2;
  704.     GetObjectPos(z, x2, y2, z2);
  705.     CreateExplosion(x2, y2, z2, 0, 7.0);
  706. }
  707.  
  708. function IsPlayerInArea(pid, Float:uX, Float:uY, Float:dX, Float:dY)
  709. {
  710.     new Float:X, Float:Y, Float:Z;
  711.     GetPlayerPos(pid, X, Y, Z);
  712.     if((X >= uX && X <= dX && Y >= uY && Y <= dY))return true;
  713.     return false;
  714. }
  715.  
  716. function IsVehicleInUse(vid)
  717. {
  718.     for(new g=0;g<200;g++)if(IsPlayerConnected(g) && IsPlayerInVehicle(g, vid) && GetPlayerState(g) == PLAYER_STATE_DRIVER)return true;
  719.     return false;
  720. }
  721.  
  722. #define TeleportPlayerToPlayer(%1,%2,%3) Tpplaytoplay(%1,%2,%3)
  723. stock Tpplaytoplay(id1, id2, Float:dis)
  724. {
  725.     new Float:x, Float:y, Float:z, Float:a;
  726.     GetPlayerPos(id1, x, y, z);
  727.     if(IsPlayerInAnyVehicle(id1))GetVehicleZAngle(GetPlayerVehicleID(id1),a); else GetPlayerFacingAngle(id1,a);
  728.     x += (floatmul(dis , floatsin(-a, degrees)));
  729.     y += (floatmul(dis , floatcos(-a, degrees)));
  730.     if(IsPlayerInAnyVehicle(id2))
  731.     {
  732.         SetVehiclePos(GetPlayerVehicleID(id2), x, y, z);
  733.         SetVehicleZAngle(GetPlayerVehicleID(id2), floatadd(a, 180.0));
  734.     }
  735.     else
  736.     {
  737.         SetPlayerPos(id2, x, y, z);
  738.         SetPlayerFacingAngle(id2, floatadd(a, 180.0));
  739.     }
  740.     return true;
  741. }
  742.  
  743. function GetVehicleDriver(vid)
  744. {
  745.     for(new g=0;g<200;g++)if(IsPlayerConnected(g) && IsPlayerInVehicle(g, vid) && GetPlayerState(g) == PLAYER_STATE_DRIVER)return g;
  746.     return 255;
  747. }
  748.  
  749. function GetVehiclePass(vid)
  750. {
  751.     for(new g=0;g<200;g++)if(IsPlayerConnected(g) && IsPlayerInVehicle(g, vid) && GetPlayerState(g) == PLAYER_STATE_PASSENGER)return g;
  752.     return 255;
  753. }
  754.  
  755. forward AddLifeTimer();
  756. public AddLifeTimer()for(new k=0;k<200;k++)
  757. {
  758.     if(IsPlayerConnected(k))
  759.     {
  760.         new Float:h;
  761.         if(AddLife[k])
  762.         {
  763.             GetPlayerHealth(k, h);
  764.             if(h<100.0)
  765.             {
  766.                 SetPlayerHealth(k, floatadd(h, 1.0));
  767.             } else AddLife[k]=false;
  768.         }
  769.         new Targets[3];
  770.         new playerid = k;
  771.         switch(GetPlayerTeam(playerid))
  772.         {
  773.             case 1:Targets = G3PCTPIT(playerid, 0);
  774.             case 0:Targets = G3PCTPIT(playerid, 1);
  775.         }
  776.         if(IsValidMenu(PlayerMenu[playerid]))
  777.         {
  778.             HideMenuForPlayer(PlayerMenu[playerid], playerid);
  779.             DestroyMenu(PlayerMenu[playerid]);
  780.         }
  781.         PlayerMenu[playerid] = CreateMenu(" " , 1, 340.0, 320.0, 200.0, 0.0);
  782.         SetMenuColumnHeader(PlayerMenu[playerid], 0, "~z~Closest Enemies~w~:");
  783.         if(Targets[0]!=255)AddMenuItem(PlayerMenu[playerid], 0, PlayerName(Targets[0]));
  784.         if(Targets[1]!=255)AddMenuItem(PlayerMenu[playerid], 0, PlayerName(Targets[1]));
  785.         if(Targets[2]!=255)AddMenuItem(PlayerMenu[playerid], 0, PlayerName(Targets[2]));
  786.         DisableMenu(PlayerMenu[playerid]);
  787.         ShowMenuForPlayer(PlayerMenu[playerid], playerid);
  788.     }
  789. }
  790.  
  791. function PlayerName(p)
  792. {
  793.     new n[64];
  794.     GetPlayerName(p, n, 256);
  795.     return n;
  796. }
  797.  
  798. forward SpeedUpdate();
  799. public SpeedUpdate()for(new playerid=0;playerid<200;playerid++)if(IsPlayerConnected(playerid))
  800. {
  801.     new Float:X, Float:Y, Float:Z;
  802.     GetPlayerPos(playerid, X, Y, Z);
  803.     new Float:Distance;
  804.     Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(X,OldPos[playerid][oX])),2),floatpower(floatabs(floatsub(Y,OldPos[playerid][oY])),2)),floatpower(floatabs(floatsub(Z,OldPos[playerid][oZ])),2)));
  805.     new Float:Speed;
  806.     Speed = floatmul(Distance, 3.6);
  807.     new s[256];
  808.     if(GetPlayerInterior(playerid) == 0 && IsPlayerInAnyVehicle(playerid))
  809.         format(s,256,"~n~~n~~n~~n~~n~~n~~n~~n~Predkosc : %.1f", Speed);
  810.     if(!Entering[playerid] && !IsPlayerSpec[playerid] && IsPlayerInAnyVehicle(playerid))
  811.         GameTextForPlayer(playerid,s,1011,5);
  812.     if(Z < OldPos[playerid][oZ] && IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515 && !cofa[playerid])
  813.     {
  814.         DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]);
  815.         PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0);
  816.         AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -3.9, -floatmul(floatsub(Z , OldPos[playerid][oZ]),0.2), 0.0, 0.0, 0.0);
  817.     } else if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 515 && !cofa[playerid])
  818.     {
  819.         DestroyPlayerObject(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)]);
  820.         PlayerObjects[playerid][GetPlayerVehicleID(playerid)] = CreatePlayerObject(playerid, 3267, 0.0, 0.0, 0.0, 0.0, 0.0,0.0);
  821.         AttachPlayerObjectToPlayer(playerid, PlayerObjects[playerid][GetPlayerVehicleID(playerid)], playerid, 0.5, -3.9, -0.5, 0.0, 0.0, 0.0);
  822.     }
  823.     if(!IsPlayerInAnyVehicle(playerid))
  824.     {
  825.         if(IsValidPlayerObject(playerid, PlayerObjects[playerid][0]))DestroyPlayerObject(playerid, PlayerObjects[playerid][0]);
  826.         if(IsValidPlayerObject(playerid, PlayerObjects[playerid][1]))DestroyPlayerObject(playerid, PlayerObjects[playerid][1]);
  827.         if(IsValidPlayerObject(playerid, PlayerObjects[playerid][2]))DestroyPlayerObject(playerid, PlayerObjects[playerid][2]);
  828.         if(IsValidPlayerObject(playerid, PlayerObjects[playerid][3]))DestroyPlayerObject(playerid, PlayerObjects[playerid][3]);
  829.         if(IsValidPlayerObject(playerid, PlayerObjects[playerid][4]))DestroyPlayerObject(playerid, PlayerObjects[playerid][4]);
  830.         if(IsValidPlayerObject(playerid, PlayerObjects[playerid][5]))DestroyPlayerObject(playerid, PlayerObjects[playerid][5]);
  831.     }
  832.     OldPos[playerid][oX]=X;
  833.     OldPos[playerid][oY]=Y;
  834.     OldPos[playerid][oZ]=Z;
  835.  
  836.     if(IsPlayerInAnyVehicle(playerid))
  837.     {
  838.         new Float:Health;
  839.         GetVehicleHealth(GetPlayerVehicleID(playerid), Health);
  840.         SetPlayerArmour(playerid, floatdiv(Health, 10.0));
  841.     } else SetPlayerArmour(playerid, 0.0);
  842.  
  843.     new Float:H, iveh;
  844.     if(IsPlayerInAnyVehicle(playerid))
  845.     {
  846.         GetVehicleHealth(GetPlayerVehicleID(playerid), H);
  847.         iveh=true;
  848.     }
  849.     else GetPlayerHealth(playerid, H);
  850.     if(iveh)
  851.     {
  852.         H = floatdiv(H, 10.0);
  853.     }
  854.     if(H > 0.0)
  855.     {
  856.         SetPlayerColor(playerid,0xFF000077);
  857.         PlColor[playerid] = 1;
  858.     }
  859.     if(H > 10.0)
  860.     {
  861.         SetPlayerColor(playerid,0xFF150077);
  862.         PlColor[playerid] = 2;
  863.     }
  864.     if(H > 20.0)
  865.     {
  866.         SetPlayerColor(playerid,0xFF330077);
  867.         PlColor[playerid] = 3;
  868.     }
  869.     if(H > 30.0)
  870.     {
  871.         SetPlayerColor(playerid,0xFF440077);
  872.         PlColor[playerid] = 4;
  873.     }
  874.     if(H > 40.0)
  875.     {
  876.         SetPlayerColor(playerid,0xFF770077);
  877.         PlColor[playerid] = 5;
  878.     }
  879.     if(H > 50.0)
  880.     {
  881.         SetPlayerColor(playerid,0xFFFF0077);
  882.         PlColor[playerid] = 6;
  883.     }
  884.     if(H > 60.0)
  885.     {
  886.         SetPlayerColor(playerid,0x77FF0077);
  887.         PlColor[playerid] = 7;
  888.     }
  889.     if(H > 70.0)
  890.     {
  891.         SetPlayerColor(playerid,0x44FF0077);
  892.         PlColor[playerid] = 8;
  893.     }
  894.     if(H > 80.0)
  895.     {
  896.         SetPlayerColor(playerid,0x22FF0077);
  897.         PlColor[playerid] = 9;
  898.     }
  899.     if(H > 90.0)
  900.     {
  901.         SetPlayerColor(playerid,0x00FF0077);
  902.         PlColor[playerid] = 10;
  903.     }
  904. }
  905.  
  906.  
  907. G3PCTPIT(playerid, teamid)
  908. {
  909.     new Closest[3],
  910.         Float:Distance,
  911.         Float:TmpHighDist = 100.0,
  912.         Float:x,
  913.         Float:y,
  914.         Float:z,
  915.         Float:x2,
  916.         Float:y2,
  917.         Float:z2;
  918.     Closest[0] = 255;
  919.     Closest[1] = 255;
  920.     Closest[2] = 255;
  921.     for(new g = 0;g < 200; g++)
  922.     {
  923.         if(IsPlayerConnected(g))
  924.         {
  925.             if(GetPlayerTeam(g) == teamid && IsPlayerInAnyVehicle(g) && !IsPlayerInSpawn(g))
  926.             {
  927.                 if(g != playerid)
  928.                 {
  929.                     GetPlayerPos(g, x2, y2, z2);
  930.                     GetPlayerPos(playerid, x, y, z);
  931.                     Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2)));
  932.                     if(Distance < TmpHighDist){
  933.                         Closest[0] = g;
  934.                         TmpHighDist = Distance;
  935.                     }
  936.                 }
  937.             }
  938.         }
  939.     }
  940.     TmpHighDist = 100.0;
  941.     for(new g = 0;g < 200; g++)
  942.     {
  943.         if(IsPlayerConnected(g))
  944.         {
  945.             if(GetPlayerTeam(g) == teamid && IsPlayerInAnyVehicle(g) && !IsPlayerInSpawn(g))
  946.             {
  947.                 if(g != playerid)
  948.                 {
  949.                     if(g != Closest[0])
  950.                     {
  951.                         GetPlayerPos(g, x2, y2, z2);
  952.                         GetPlayerPos(playerid, x, y, z);
  953.                         Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2)));
  954.                         if(Distance < TmpHighDist){
  955.                             Closest[1] = g;
  956.                             TmpHighDist = Distance;
  957.                         }
  958.                     }
  959.                 }
  960.             }
  961.         }
  962.     }
  963.     TmpHighDist = 100.0;
  964.     for(new g = 0;g < 200; g++)
  965.     {
  966.         if(IsPlayerConnected(g))
  967.         {
  968.             if(GetPlayerTeam(g) == teamid && IsPlayerInAnyVehicle(g) && !IsPlayerInSpawn(g))
  969.             {
  970.                 if(g != playerid)
  971.                 {
  972.                     if(g != Closest[0] && g != Closest[1])
  973.                     {
  974.                         GetPlayerPos(g, x2, y2, z2);
  975.                         GetPlayerPos(playerid, x, y, z);
  976.                         Distance = floatsqroot(floatadd(floatadd(floatpower(floatabs(floatsub(x,x2)),2),floatpower(floatabs(floatsub(y,y2)),2)),floatpower(floatabs(floatsub(z,z2)),2)));
  977.                         if(Distance < TmpHighDist){
  978.                             Closest[2] = g;
  979.                             TmpHighDist = Distance;
  980.                         }
  981.                     }
  982.                 }
  983.             }
  984.         }
  985.     }
  986.     return Closest;
  987. }
  988.  
  989. IsPlayerInSpawn(playerid)
  990. {
  991.     switch(GetPlayerTeam(playerid))
  992.     {
  993.         case 0:
  994.         {
  995.             if(IsPlayerInArea(playerid,floatsub(1302.079102, 50.0), floatsub(1658.567627, 50.0), floatadd(1382.079102, 50.0), floatadd(1738.567627, 50.0)))return true;
  996.         }
  997.         case 1:
  998.         {
  999.             if(IsPlayerInArea(playerid,floatsub(1564.073730, 50.0), floatsub(267.328888, 50.0) , floatadd(1644.073730, 50.0), floatadd(347.328888, 50.0) ))return true;
  1000.         }
  1001.     }
  1002.     return false;
  1003. }
  1004.  
  1005. stock StartSpectate(playerid, specid)
  1006. {
  1007.     for(new x=0; x<MAX_PLAYERS; x++)
  1008.     {
  1009.         if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] == playerid)
  1010.         {
  1011.             AdvanceSpectate(x);
  1012.         }
  1013.     }
  1014.     if(IsPlayerInAnyVehicle(specid))
  1015.     {
  1016.         SetPlayerInterior(playerid,GetPlayerInterior(specid));
  1017.         TogglePlayerSpectating(playerid, 1);
  1018.         PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid));
  1019.         SpectateID[playerid] = specid;
  1020.         SpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
  1021.     }
  1022.     else
  1023.     {
  1024.         SetPlayerInterior(playerid,GetPlayerInterior(specid));
  1025.         TogglePlayerSpectating(playerid, 1);
  1026.         PlayerSpectatePlayer(playerid, specid);
  1027.         SpectateID[playerid] = specid;
  1028.         SpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
  1029.     }
  1030.     return 1;
  1031. }
  1032.  
  1033. StopSpectate(playerid)
  1034. {
  1035.     TogglePlayerSpectating(playerid, 0);
  1036.     SpectateID[playerid] = INVALID_PLAYER_ID;
  1037.     SpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
  1038.     return 1;
  1039. }
  1040.  
  1041. stock AdvanceSpectate(playerid)
  1042. {
  1043.     if(ConnectedPlayers() == 1 || ConnectedPlayers() == 2)
  1044.     {
  1045.         return 1;
  1046.     }
  1047.     if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && SpectateID[playerid] != INVALID_PLAYER_ID)
  1048.     {
  1049.         for(new x=SpectateID[playerid]+1; x<=MAX_PLAYERS; x++)
  1050.         {
  1051.             if(x == MAX_PLAYERS) {
  1052.                 x = 0;
  1053.             }
  1054.             if(IsPlayerConnected(x) && x != playerid)
  1055.             {
  1056.                 if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] != INVALID_PLAYER_ID || (GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3))
  1057.                 {
  1058.                     continue;
  1059.                 }
  1060.                 else
  1061.                 {
  1062.                     StartSpectate(playerid, x);
  1063.                     break;
  1064.                 }
  1065.             }
  1066.         }
  1067.     }
  1068.     return 1;
  1069. }
  1070.  
  1071. stock ReverseSpectate(playerid)
  1072. {
  1073.     if(ConnectedPlayers() == 1 || ConnectedPlayers() == 2)
  1074.     {
  1075.         return 1;
  1076.     }
  1077.     if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && SpectateID[playerid] != INVALID_PLAYER_ID)
  1078.     {
  1079.         for(new x=SpectateID[playerid]-1; x>=0; x--)
  1080.         {
  1081.             if(x == 0)
  1082.             {
  1083.                 x = MAX_PLAYERS;
  1084.             }
  1085.             if(IsPlayerConnected(x) && x != playerid)
  1086.             {
  1087.                 if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && SpectateID[x] != INVALID_PLAYER_ID || (GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3))
  1088.                 {
  1089.                     continue;
  1090.                 }
  1091.                 else
  1092.                 {
  1093.                     StartSpectate(playerid, x);
  1094.                     break;
  1095.                 }
  1096.             }
  1097.         }
  1098.     }
  1099.     return 1;
  1100. }
  1101.  
  1102. stock ConnectedPlayers()
  1103. {
  1104.     new count;
  1105.     for(new x=0; x<MAX_PLAYERS; x++)
  1106.     {
  1107.         if(IsPlayerConnected(x))
  1108.         {
  1109.             count++;
  1110.         }
  1111.     }
  1112.     return count;
  1113. }
  1114.  
  1115. forward ScoreUpdate();
  1116. public ScoreUpdate()
  1117. {
  1118.     new s[256];
  1119.     format(s,256,"Hydra : %d vs %d : RoadTrain", HydraScore, RoadScore);
  1120.     if(idin[0])
  1121.     {
  1122.         TextDrawHideForAll(idin[0]);
  1123.         TextDrawDestroy(idin[0]);
  1124.     }
  1125.     idin[0] = TextDrawCreate(235.0, 115.0, s);
  1126.     TextDrawLetterSize(idin[0], 0.3, 0.5);
  1127.     TextDrawColor(idin[0], 0x00000088);
  1128.     TextDrawSetShadow(idin[0], 0);
  1129.     TextDrawSetOutline(idin[0], 1);
  1130.     TextDrawBackgroundColor(idin[0], 0xFFFFFF88);
  1131.     TextDrawFont(idin[0], 3);
  1132.     TextDrawShowForAll(idin[0]);
  1133.     SetGameModeText("R.T.v.H.1.4 by Luby");
  1134. }
Advertisement
Add Comment
Please, Sign In to add comment