Advertisement
Juuh

PPontos v1.0a [Sistema de Entradas]

Jul 27th, 2013
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 55.78 KB | None | 0 0
  1. //v1.0
  2. #include                <   a_samp  >
  3. #include                <   ZCMD    >
  4. #include                <   DOF2    >
  5.  
  6. #define                 MAX_PONTOS                      100
  7. #define                 iMAX_PONTOS                     100
  8.  
  9. #define                 MAX_ZONE_NAME                   28
  10. #define                 DIALOG_PP_EDITAR                333
  11. #define                 DIALOG_PP_EDITAR_NOME           334
  12.  
  13. enum PDATA
  14. {
  15.     TAG,
  16.     PID,
  17.     Text3D:PTEXT3D,
  18.     Float:PPOS[3],
  19. }
  20.  
  21. enum iDATA
  22. {
  23.     TAG,
  24.     PID,
  25.     IV[2],
  26.     Text3D:PTEXT3D,
  27.     Float:PPOS[3],
  28. }
  29.  
  30. new PPontoPermitir = 1;
  31. new iPonto[iMAX_PONTOS][iDATA];
  32. new PPonto[MAX_PONTOS][PDATA];
  33. new PPontoModoPickup[MAX_PLAYERS] = 1;
  34. new PickupEscolher[MAX_PLAYERS];
  35. new ObterPID[MAX_PLAYERS];
  36.  
  37. enum SAZONE_MAIN
  38. {
  39.         SAZONE_NAME[38],
  40.         Float:SAZONE_AREA[6]
  41. }
  42.  
  43. static const gSAZones[][SAZONE_MAIN] = {
  44.     //  Mabako's 'Zones Script' v0.2(acho eu.)
  45.     //  NAME                         AREA (Xmin,Ymin,Zmin,Xmax,Ymax,Zmax)
  46.     {"The Big Ear",                 {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
  47.     {"Aldea Malvada",               {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
  48.     {"Angel Pine",                  {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
  49.     {"Arco del Oeste",              {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
  50.     {"Avispa Country Club",         {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
  51.     {"Avispa Country Club",         {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
  52.     {"Avispa Country Club",         {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
  53.     {"Avispa Country Club",         {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
  54.     {"Avispa Country Club",         {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
  55.     {"Avispa Country Club",         {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
  56.     {"Back o Beyond",               {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
  57.     {"Battery Point",               {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
  58.     {"Bayside",                     {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
  59.     {"Bayside Marina",              {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
  60.     {"Beacon Hill",                 {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
  61.     {"Blackfield",                  {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
  62.     {"Blackfield",                  {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
  63.     {"Blackfield Chapel",           {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
  64.     {"Blackfield Chapel",           {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
  65.     {"Blackfield Section",          {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
  66.     {"Blackfield Section",          {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
  67.     {"Blackfield Section",          {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
  68.     {"Blackfield Section",          {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
  69.     {"Blueberry",                   {104.50,-220.10,2.30,349.60,152.20,200.00}},
  70.     {"Blueberry",                   {19.60,-404.10,3.80,349.60,-220.10,200.00}},
  71.     {"Blueberry Acres",             {-319.60,-220.10,0.00,104.50,293.30,200.00}},
  72.     {"Caligula's Palace",           {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
  73.     {"Caligula's Palace",           {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
  74.     {"Calton Heights",              {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
  75.     {"Chinatown",                   {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
  76.     {"City Hall",                   {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
  77.     {"Come-A-Lot",                  {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
  78.     {"Commerce",                    {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
  79.     {"Commerce",                    {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
  80.     {"Commerce",                    {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
  81.     {"Commerce",                    {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
  82.     {"Commerce",                    {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
  83.     {"Commerce",                    {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
  84.     {"Conference Center",           {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
  85.     {"Conference Center",           {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
  86.     {"Cranberry Station",           {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
  87.     {"Creek",                       {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
  88.     {"Dillimore",                   {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
  89.     {"Doherty",                     {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
  90.     {"Doherty",                     {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
  91.     {"Downtown",                    {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
  92.     {"Downtown",                    {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
  93.     {"Downtown",                    {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
  94.     {"Downtown",                    {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
  95.     {"Downtown",                    {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
  96.     {"Downtown",                    {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
  97.     {"Downtown Los Santos",         {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
  98.     {"Downtown Los Santos",         {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
  99.     {"Downtown Los Santos",         {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
  100.     {"Downtown Los Santos",         {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
  101.     {"Downtown Los Santos",         {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
  102.     {"Downtown Los Santos",         {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
  103.     {"Downtown Los Santos",         {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
  104.     {"Downtown Los Santos",         {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
  105.     {"Downtown Los Santos",         {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
  106.     {"East Beach",                  {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
  107.     {"East Beach",                  {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
  108.     {"East Beach",                  {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
  109.     {"East Beach",                  {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
  110.     {"East Los Santos",             {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
  111.     {"East Los Santos",             {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
  112.     {"East Los Santos",             {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
  113.     {"East Los Santos",             {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
  114.     {"East Los Santos",             {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
  115.     {"East Los Santos",             {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
  116.     {"East Los Santos",             {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
  117.     {"Easter Basin",                {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
  118.     {"Easter Basin",                {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
  119.     {"Easter Bay Airport",          {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
  120.     {"Easter Bay Airport",          {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
  121.     {"Easter Bay Airport",          {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
  122.     {"Easter Bay Airport",          {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
  123.     {"Easter Bay Airport",          {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
  124.     {"Easter Bay Airport",          {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
  125.     {"Easter Bay Airport",          {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
  126.     {"Easter Bay Airport",          {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
  127.     {"Easter Bay Chemical",         {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
  128.     {"Easter Bay Chemical",         {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
  129.     {"Castillo del Diablo",         {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
  130.     {"Castillo del Diablo",         {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
  131.     {"Castillo del Diablo",         {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
  132.     {"El Corona",                   {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
  133.     {"El Corona",                   {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
  134.     {"El Quebrados",                {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
  135.     {"Esplanade East",              {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
  136.     {"Esplanade East",              {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
  137.     {"Esplanade East",              {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
  138.     {"Esplanade North",             {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
  139.     {"Esplanade North",             {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
  140.     {"Esplanade North",             {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
  141.     {"Fallen Tree",                 {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
  142.     {"Fallow Bridge",               {434.30,366.50,0.00,603.00,555.60,200.00}},
  143.     {"Fern Ridge",                  {508.10,-139.20,0.00,1306.60,119.50,200.00}},
  144.     {"Financial",                   {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
  145.     {"Fisher's Lagoon",             {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
  146.     {"Flint Intersection",          {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
  147.     {"Flint Range",                 {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
  148.     {"Fort Carson",                 {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
  149.     {"Foster Valley",               {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
  150.     {"Foster Valley",               {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
  151.     {"Foster Valley",               {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
  152.     {"Foster Valley",               {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
  153.     {"Frederick Bridge",            {2759.20,296.50,0.00,2774.20,594.70,200.00}},
  154.     {"Gant Bridge",                 {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
  155.     {"Gant Bridge",                 {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
  156.     {"Ganton",                      {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
  157.     {"Ganton",                      {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
  158.     {"Garcia",                      {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
  159.     {"Garcia",                      {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
  160.     {"Garver Bridge",               {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
  161.     {"Garver Bridge",               {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
  162.     {"Garver Bridge",               {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
  163.     {"Glen Park",                   {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
  164.     {"Glen Park",                   {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
  165.     {"Glen Park",                   {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
  166.     {"Green Palms",                 {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
  167.     {"Greenglass College",          {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
  168.     {"Greenglass College",          {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
  169.     {"Hampton Barns",               {603.00,264.30,0.00,761.90,366.50,200.00}},
  170.     {"Hankypanky Point",            {2576.90,62.10,0.00,2759.20,385.50,200.00}},
  171.     {"Harry Gold Parkway",          {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
  172.     {"Hashbury",                    {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
  173.     {"Hilltop Farm",                {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
  174.     {"Hunter Quarry",               {337.20,710.80,-115.20,860.50,1031.70,203.70}},
  175.     {"Idlewood",                    {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
  176.     {"Idlewood",                    {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
  177.     {"Idlewood",                    {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
  178.     {"Idlewood",                    {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
  179.     {"Idlewood",                    {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
  180.     {"Idlewood",                    {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
  181.     {"Jefferson",                   {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
  182.     {"Jefferson",                   {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
  183.     {"Jefferson",                   {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
  184.     {"Jefferson",                   {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
  185.     {"Jefferson",                   {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
  186.     {"Jefferson",                   {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
  187.     {"Julius Thruway East",         {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
  188.     {"Julius Thruway East",         {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
  189.     {"Julius Thruway East",         {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
  190.     {"Julius Thruway East",         {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
  191.     {"Julius Thruway North",        {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
  192.     {"Julius Thruway North",        {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
  193.     {"Julius Thruway North",        {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
  194.     {"Julius Thruway North",        {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
  195.     {"Julius Thruway North",        {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
  196.     {"Julius Thruway North",        {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
  197.     {"Julius Thruway North",        {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
  198.     {"Julius Thruway North",        {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
  199.     {"Julius Thruway South",        {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
  200.     {"Julius Thruway South",        {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
  201.     {"Julius Thruway West",         {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
  202.     {"Julius Thruway West",         {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
  203.     {"Juniper Hill",                {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
  204.     {"Juniper Hollow",              {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
  205.     {"KACC Military Fuels",         {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
  206.     {"Kincaid Bridge",              {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
  207.     {"Kincaid Bridge",              {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
  208.     {"Kincaid Bridge",              {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
  209.     {"King's",                      {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
  210.     {"King's",                      {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
  211.     {"King's",                      {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
  212.     {"LVA Freight Depot",           {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
  213.     {"LVA Freight Depot",           {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
  214.     {"LVA Freight Depot",           {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
  215.     {"LVA Freight Depot",           {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
  216.     {"LVA Freight Depot",           {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
  217.     {"Las Barrancas",               {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
  218.     {"Las Brujas",                  {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
  219.     {"Las Colinas",                 {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
  220.     {"Las Colinas",                 {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
  221.     {"Las Colinas",                 {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
  222.     {"Las Colinas",                 {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
  223.     {"Las Colinas",                 {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
  224.     {"Las Colinas",                 {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
  225.     {"Las Colinas",                 {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
  226.     {"Las Payasadas",               {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
  227.     {"Las Venturas Airport",        {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
  228.     {"Las Venturas Airport",        {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
  229.     {"Las Venturas Airport",        {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
  230.     {"Las Venturas Airport",        {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
  231.     {"Last Dime Motel",             {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
  232.     {"Leafy Hollow",                {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
  233.     {"Liberty City",                {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
  234.     {"Lil' Probe Inn",              {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
  235.     {"Linden Side",                 {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
  236.     {"Linden Station",              {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
  237.     {"Linden Station",              {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
  238.     {"Little Mexico",               {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
  239.     {"Little Mexico",               {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
  240.     {"Los Flores",                  {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
  241.     {"Los Flores",                  {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
  242.     {"LS International",            {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
  243.     {"LS International",            {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
  244.     {"LS International",            {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
  245.     {"LS International",            {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
  246.     {"LS International",            {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
  247.     {"LS International",            {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
  248.     {"Marina",                      {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
  249.     {"Marina",                      {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
  250.     {"Marina",                      {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
  251.     {"Market",                      {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
  252.     {"Market",                      {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
  253.     {"Market",                      {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
  254.     {"Market",                      {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
  255.     {"Market Station",              {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
  256.     {"Martin Bridge",               {-222.10,293.30,0.00,-122.10,476.40,200.00}},
  257.     {"Missionary Hill",             {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
  258.     {"Montgomery",                  {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
  259.     {"Montgomery",                  {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
  260.     {"Montgomery Section",     {1546.60,208.10,0.00,1745.80,347.40,200.00}},
  261.     {"Montgomery Section",     {1582.40,347.40,0.00,1664.60,401.70,200.00}},
  262.     {"Mulholland",                  {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
  263.     {"Mulholland",                  {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
  264.     {"Mulholland",                  {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
  265.     {"Mulholland",                  {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
  266.     {"Mulholland",                  {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
  267.     {"Mulholland",                  {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
  268.     {"Mulholland",                  {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
  269.     {"Mulholland",                  {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
  270.     {"Mulholland",                  {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
  271.     {"Mulholland",                  {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
  272.     {"Mulholland",                  {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
  273.     {"Mulholland",                  {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
  274.     {"Mulholland",                  {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
  275.     {"Mulholland Section",     {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
  276.     {"North Rock",                  {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
  277.     {"Ocean Docks",                 {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
  278.     {"Ocean Docks",                 {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
  279.     {"Ocean Docks",                 {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
  280.     {"Ocean Docks",                 {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
  281.     {"Ocean Docks",                 {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
  282.     {"Ocean Docks",                 {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
  283.     {"Ocean Docks",                 {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
  284.     {"Ocean Flats",                 {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
  285.     {"Ocean Flats",                 {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
  286.     {"Ocean Flats",                 {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
  287.     {"Octane Springs",              {338.60,1228.50,0.00,664.30,1655.00,200.00}},
  288.     {"Old Venturas Strip",          {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
  289.     {"Palisades",                   {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
  290.     {"Palomino Creek",              {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
  291.     {"Paradiso",                    {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
  292.     {"Pershing Square",             {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
  293.     {"Pilgrim",                     {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
  294.     {"Pilgrim",                     {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
  295.     {"Pilson Intersection",         {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
  296.     {"Pirates in Men's Pants",      {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
  297.     {"Playa del Seville",           {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
  298.     {"Prickle Pine",                {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
  299.     {"Prickle Pine",                {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
  300.     {"Prickle Pine",                {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
  301.     {"Prickle Pine",                {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
  302.     {"Queens",                      {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
  303.     {"Queens",                      {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
  304.     {"Queens",                      {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
  305.     {"Randolph Ind. Estate",        {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
  306.     {"Redsands East",               {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
  307.     {"Redsands East",               {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
  308.     {"Redsands East",               {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
  309.     {"Redsands West",               {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
  310.     {"Redsands West",               {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
  311.     {"Redsands West",               {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
  312.     {"Redsands West",               {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
  313.     {"Regular Tom",                 {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
  314.     {"Richman",                     {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
  315.     {"Richman",                     {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
  316.     {"Richman",                     {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
  317.     {"Richman",                     {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
  318.     {"Richman",                     {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
  319.     {"Richman",                     {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
  320.     {"Richman",                     {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
  321.     {"Richman",                     {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
  322.     {"Richman",                     {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
  323.     {"Richman",                     {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
  324.     {"Robada Section",         {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
  325.     {"Roca Escalante",              {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
  326.     {"Roca Escalante",              {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
  327.     {"Rockshore East",              {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
  328.     {"Rockshore West",              {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
  329.     {"Rockshore West",              {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
  330.     {"Rodeo",                       {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
  331.     {"Rodeo",                       {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
  332.     {"Rodeo",                       {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
  333.     {"Rodeo",                       {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
  334.     {"Rodeo",                       {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
  335.     {"Rodeo",                       {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
  336.     {"Rodeo",                       {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
  337.     {"Rodeo",                       {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
  338.     {"Rodeo",                       {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
  339.     {"Rodeo",                       {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
  340.     {"Rodeo",                       {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
  341.     {"Rodeo",                       {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
  342.     {"Royal Casino",                {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
  343.     {"San Andreas Sound",           {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
  344.     {"Santa Flora",                 {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
  345.     {"Santa Maria Beach",           {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
  346.     {"Santa Maria Beach",           {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
  347.     {"Shady Cabin",                 {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
  348.     {"Shady Creeks",                {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
  349.     {"Shady Creeks",                {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
  350.     {"Sobell Rail Yards",           {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
  351.     {"Spinybed",                    {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
  352.     {"Starfish Casino",             {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
  353.     {"Starfish Casino",             {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
  354.     {"Starfish Casino",             {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
  355.     {"Temple",                      {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
  356.     {"Temple",                      {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
  357.     {"Temple",                      {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
  358.     {"Temple",                      {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
  359.     {"Temple",                      {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
  360.     {"Temple",                      {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
  361.     {"The Camel's Toe",             {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
  362.     {"The Clown's Pocket",          {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
  363.     {"The Emerald Isle",            {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
  364.     {"The Farm",                    {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
  365.     {"Four Dragons Casino",         {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
  366.     {"The High Roller",             {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
  367.     {"The Mako Span",               {1664.60,401.70,0.00,1785.10,567.20,200.00}},
  368.     {"The Panopticon",              {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
  369.     {"The Pink Swan",               {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
  370.     {"The Sherman Dam",             {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
  371.     {"The Strip",                   {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
  372.     {"The Strip",                   {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
  373.     {"The Strip",                   {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
  374.     {"The Strip",                   {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
  375.     {"The Visage",                  {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
  376.     {"The Visage",                  {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
  377.     {"Unity Station",               {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
  378.     {"Valle Ocultado",              {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
  379.     {"Verdant Bluffs",              {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
  380.     {"Verdant Bluffs",              {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
  381.     {"Verdant Bluffs",              {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
  382.     {"Verdant Meadows",             {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
  383.     {"Verona Beach",                {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
  384.     {"Verona Beach",                {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
  385.     {"Verona Beach",                {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
  386.     {"Verona Beach",                {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
  387.     {"Verona Beach",                {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
  388.     {"Vinewood",                    {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
  389.     {"Vinewood",                    {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
  390.     {"Vinewood",                    {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
  391.     {"Vinewood",                    {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
  392.     {"Whitewood Estates",           {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
  393.     {"Whitewood Estates",           {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
  394.     {"Willowfield",                 {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
  395.     {"Willowfield",                 {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
  396.     {"Willowfield",                 {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
  397.     {"Willowfield",                 {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
  398.     {"Willowfield",                 {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
  399.     {"Willowfield",                 {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
  400.     {"Willowfield",                 {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
  401.     {"Yellow Bell Station",         {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
  402.     // Main Zones
  403.     {"Los Santos",                  {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
  404.     {"Las Venturas",                {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
  405.     {"Bone County",                 {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
  406.     {"Tierra Robada",               {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
  407.     {"Tierra Robada",               {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
  408.     {"San Fierro",                  {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
  409.     {"Red County",                  {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
  410.     {"Flint County",                {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
  411.     {"Whetstone",                   {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
  412. };
  413.  
  414. CMD:criarponto(playerid, params [])
  415. {
  416.     new opcao;
  417.     new Local[100];
  418.     new e = MAX_PONTOS+1;
  419.     new i = iMAX_PONTOS+1;
  420.     if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
  421.     if(sscanf(params, "d", opcao)) return SendClientMessage(playerid, 0x33AA3300, "<opções = entrada(1), saida(2)>");
  422.     if(opcao == 1)
  423.     {
  424.         if(PPontoPermitir == 1)
  425.         {
  426.             for(new a = 0; a < MAX_PONTOS; a++)
  427.             {
  428.                 if(PPonto[a][PPOS][0] == 0.0)
  429.                 {
  430.                     e = a;
  431.                     break;
  432.                 }
  433.             }
  434.             PPontoPermitir = 2;
  435.             if(e > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Você não pode criar mais.");
  436.             printf("[Porta][1][id = %d]", e);
  437.             SendClientMessage(playerid, 0x33AA3300, "[1][OK]");
  438.             GetPlayerPos(playerid, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]);
  439.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", e);
  440.             DOF2_CreateFile(Local);
  441.             DOF2_SetInt(Local, "Pickup", 19198);
  442.             DOF2_SetFloat(Local, "POS0", PPonto[e][PPOS][0]);
  443.             DOF2_SetFloat(Local, "POS1", PPonto[e][PPOS][1]);
  444.             DOF2_SetFloat(Local, "POS2", PPonto[e][PPOS][2]);
  445.             DOF2_SaveFile();
  446.             PPonto[e][PID] =  CreatePickup(19198, 1, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]+0.2, 0);
  447.             PPonto[e][PTEXT3D] = Create3DTextLabel("{FCD208}USE /PONTO PARA EDITAR-ME", -1, PPonto[e][PPOS][0], PPonto[e][PPOS][1], PPonto[e][PPOS][2]-0.2, 5.0, 0);
  448.         }
  449.         else
  450.         {
  451.             SendClientMessage(playerid, 0x33AA3300, "Você ja definio o ponto [1] defina o proximo(2).");
  452.         }
  453.     }
  454.     if(opcao == 2)
  455.     {
  456.         if(PPontoPermitir == 2)
  457.         {
  458.             PPontoPermitir = 1;
  459.             for(new a = 0; a < iMAX_PONTOS; a++)
  460.             {
  461.                 if(iPonto[a][PPOS][0] == 0.0)
  462.                 {
  463.                     i = a;
  464.                     break;
  465.                 }
  466.             }
  467.             if(i > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Você não pode criar mais.");
  468.             printf("[Porta][2][id = %d]",i);
  469.             SendClientMessage(playerid, 0x33AA3300, "[2][OK]");
  470.             GetPlayerPos(playerid, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]);
  471.             iPonto[i][IV][0] = GetPlayerInterior(playerid);
  472.             iPonto[i][IV][1] = i;
  473.             format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", i);
  474.             DOF2_CreateFile(Local);
  475.             DOF2_SetFloat(Local, "POS0", iPonto[i][PPOS][0]);
  476.             DOF2_SetFloat(Local, "POS1", iPonto[i][PPOS][1]);
  477.             DOF2_SetFloat(Local, "POS2", iPonto[i][PPOS][2]);
  478.             DOF2_SetInt(Local, "INTERIOR", iPonto[i][IV][0]);
  479.             DOF2_SetInt(Local, "MUNDO", iPonto[i][IV][1]);
  480.             DOF2_SaveFile();
  481.             SetPlayerVirtualWorld(playerid, i);
  482.             iPonto[i][PID] =  CreatePickup(19198, 1, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]+0.2, iPonto[i][IV][1]);
  483.             iPonto[i][PTEXT3D] = Create3DTextLabel("{FCD208}USE /PONTO EM MINHA ENTRADA PARA EDITAR-ME", -1, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]-0.2, 5.0, iPonto[i][IV][1]);
  484.         }
  485.         else
  486.         {
  487.             SendClientMessage(playerid, 0x33AA3300, "Você aida não definio o ponto [1], defina-o.");
  488.         }
  489.     }
  490.     return 1;
  491. }
  492.  
  493.  
  494. CMD:entrar(playerid)
  495. {
  496.     new f = MAX_PONTOS+1;
  497.     for(new a = 0; a < MAX_PONTOS; a++)
  498.     {
  499.         if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
  500.         {
  501.             f = a;
  502.             break;
  503.         }
  504.     }
  505.     if(f > MAX_PONTOS) return 1;
  506.     SetPlayerInterior(playerid, iPonto[f][IV][0]);
  507.     SetPlayerVirtualWorld(playerid, iPonto[f][IV][1]);
  508.     SetPlayerPos(playerid, iPonto[f][PPOS][0], iPonto[f][PPOS][1], iPonto[f][PPOS][2]);
  509.     return 1;
  510. }
  511.  
  512. CMD:sair(playerid)
  513. {
  514.     for(new i = 0; i < iMAX_PONTOS; i++)
  515.     {
  516.         if(IsPlayerInRangeOfPoint(playerid, 1.0, iPonto[i][PPOS][0], iPonto[i][PPOS][1], iPonto[i][PPOS][2]))
  517.         {
  518.             if(GetPlayerVirtualWorld(playerid) == iPonto[i][IV][1])
  519.             {
  520.                 SetPlayerPos(playerid, PPonto[i][PPOS][0], PPonto[i][PPOS][1], PPonto[i][PPOS][2]);
  521.                 SetPlayerInterior(playerid, 0);
  522.                 SetPlayerVirtualWorld(playerid, 0);
  523.             }
  524.         }
  525.     }
  526.     return 1;
  527. }
  528.  
  529. CMD:ponto(playerid)
  530. {
  531.     new Texto[128];
  532.     new f = MAX_PONTOS+1;
  533.     for(new a = 0; a < MAX_PONTOS; a++)
  534.     {
  535.         if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
  536.         {
  537.             f = a;
  538.             break;
  539.         }
  540.     }
  541.     if(f > MAX_PONTOS) return 1;
  542.     format(Texto, sizeof(Texto), "PPontos v1.0a      %d", f);
  543.     ShowPlayerDialog(playerid, DIALOG_PP_EDITAR, DIALOG_STYLE_LIST, Texto, "{FCD208}Alterar Nome\n{FCD208}Alterar Pickup\n{FF0000}Apagar Entradas", "Editar", "Sair");
  544.     return 1;
  545. }
  546.  
  547. CMD:editaroff(playerid)
  548. {
  549.     PickupEscolher[playerid] = 0;
  550.     SetCameraBehindPlayer(playerid);
  551.     TogglePlayerControllable(playerid, 1);
  552.     PPontoModoPickup[playerid] = 1;
  553.     return 1;
  554. }
  555.  
  556. CMD:irginasio(playerid)
  557. {
  558.     SetPlayerPos(playerid, 770.8033, -0.7033, 1000.7267);
  559.     SetPlayerInterior(playerid, 5);
  560.     return 1;
  561. }
  562.  
  563.  
  564. CMD:irbinco(playerid)
  565. {
  566.     SetPlayerPos(playerid, 207.737991,-109.019996,1005.132812);
  567.     SetPlayerInterior(playerid, 15);
  568.     return 1;
  569. }
  570.  
  571.  
  572. CMD:dgas(playerid)
  573. {
  574.     SetPlayerPos(playerid, 663.836242,-575.605407,16.343263);
  575.     SetPlayerInterior(playerid, 0);
  576.     return 1;
  577. }
  578.  
  579. public OnFilterScriptInit()
  580. {
  581.     CarregarPPontos();
  582.     return 1;
  583. }
  584.  
  585. public OnFilterScriptExit()
  586. {
  587.     DOF2_Exit();
  588.     return 1;
  589. }
  590.  
  591. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  592. {
  593.     if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
  594.     new f = MAX_PONTOS+1;
  595.     new i = iMAX_PONTOS+1;
  596.     for(new a = 0; a < MAX_PONTOS; a++)
  597.     {
  598.         if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
  599.         {
  600.             f = a;
  601.             break;
  602.         }
  603.     }
  604.     for(new a = 0; a < iMAX_PONTOS; a++)
  605.     {
  606.         if(IsPlayerInRangeOfPoint(playerid, 1.0, PPonto[a][PPOS][0], PPonto[a][PPOS][1], PPonto[a][PPOS][2]))
  607.         {
  608.             i = a;
  609.             break;
  610.         }
  611.     }
  612.     if(f > MAX_PONTOS) return SendClientMessage(playerid, 0x33AA3300, "Fique acima da porta principal.");
  613.     ObterPID[playerid] = f;
  614.     if(dialogid == DIALOG_PP_EDITAR)
  615.     {
  616.         if(response)
  617.         {
  618.             switch(listitem)
  619.             {
  620.                 case 0:
  621.                 {
  622.                     ShowPlayerDialog(playerid, DIALOG_PP_EDITAR_NOME, DIALOG_STYLE_INPUT, "PPontos v1.0", "{FCD208}Digite o novo nome abaixo.", "Alterar", "Sair");
  623.                     return 1;
  624.                 }
  625.                 case 1:
  626.                 {
  627.                     new Float:pPosC[3];
  628.                     PickupEscolher[playerid] = 1;
  629.                     TogglePlayerControllable(playerid, 0);
  630.                    
  631.                     GetPlayerPos(playerid, pPosC[0], pPosC[1], pPosC[2]);
  632.  
  633.                     SetPlayerCameraPos(playerid, pPosC[0]-1, pPosC[1], pPosC[2]+2);
  634.                     SetPlayerCameraLookAt(playerid, pPosC[0], pPosC[1], pPosC[2]);
  635.                     SetPlayerPos(playerid, pPosC[0], pPosC[1], pPosC[2]+3);
  636.                     PPontoModoPickup[playerid] = 2;
  637.                     return 1;
  638.                 }
  639.                 case 2:
  640.                 {
  641.                     DestroyPickup(PPonto[f][PID]);
  642.                     Delete3DTextLabel(PPonto[f][PTEXT3D]);
  643.                     DestroyPickup(iPonto[i][PID]);
  644.                     Delete3DTextLabel(iPonto[i][PTEXT3D]);
  645.                     PPonto[f][PPOS][0] = 0.0;
  646.                     PPonto[f][PPOS][1] = 0.0;
  647.                     PPonto[f][PPOS][2] = 0.0;
  648.                     iPonto[i][PPOS][0] = 0.0;
  649.                     iPonto[i][PPOS][1] = 0.0;
  650.                     iPonto[i][PPOS][2] = 0.0;
  651.                     iPonto[i][IV][0] = 0;
  652.                     iPonto[i][IV][1] = 0;
  653.                     new Local[100];
  654.                     format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", f);
  655.                     DOF2_RemoveFile(Local);
  656.                     format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", i);
  657.                     DOF2_RemoveFile(Local);
  658.                     f = -1;
  659.                     return 1;
  660.                 }
  661.             }
  662.         }
  663.     }
  664.     if(dialogid == DIALOG_PP_EDITAR_NOME)
  665.     {
  666.         if(response)
  667.         {
  668.             new Local[128];
  669.             new Texto[128];
  670.             new Lugar[MAX_ZONE_NAME];
  671.             Delete3DTextLabel(iPonto[f][PTEXT3D]);
  672.             Delete3DTextLabel(PPonto[f][PTEXT3D]);
  673.             Get2DZone(Lugar, MAX_ZONE_NAME, PPonto[f][PPOS][0], PPonto[f][PPOS][1], PPonto[f][PPOS][2]);
  674.             format(Texto, sizeof(Texto), "{FCD208}%s\n{3D3E40}%s",inputtext, Lugar);
  675.             PPonto[f][PTEXT3D] = Create3DTextLabel(Texto, -1, PPonto[f][PPOS][0], PPonto[f][PPOS][1], PPonto[f][PPOS][2]-0.2, 5.0, 0);
  676.             format(Texto, sizeof(Texto), "{FCD208}%s\n",inputtext);
  677.             iPonto[f][PTEXT3D] = Create3DTextLabel(Texto, -1, iPonto[f][PPOS][0], iPonto[f][PPOS][1], iPonto[f][PPOS][2]-0.2, 5.0, iPonto[i][IV][1]);
  678.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", f);
  679.             DOF2_SetString(Local, "TAG", inputtext);
  680.             DOF2_SaveFile();
  681.             format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", f);
  682.             DOF2_SetString(Local, "TAG", inputtext);
  683.             DOF2_SaveFile();
  684.         }
  685.         else ShowPlayerDialog(playerid, DIALOG_PP_EDITAR, DIALOG_STYLE_LIST, "PPontos v1.0a", "{FFFF00}Alterar Nome\n{FFFF00}Alterar Pickup\n{FF0000}Apagar Entradas", "Editar", "Sair");
  686.     }
  687.     return 1;
  688. }
  689.  
  690.  
  691. public OnPlayerUpdate(playerid)
  692. {
  693.     new Local[128];
  694.     new Botao, bc, de;
  695.     GetPlayerKeys(playerid, Botao, bc, de);
  696.     if(de > 0)
  697.     {
  698.         if(PickupEscolher[playerid] == 1)
  699.         {
  700.             PickupEscolher[playerid] = 2;
  701.             DestroyPickup(PPonto[ObterPID[playerid]][PID]);
  702.             PPonto[ObterPID[playerid]][PID] =  CreatePickup(1240, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  703.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  704.             DOF2_SetInt(Local, "Pickup", 1240);
  705.             DOF2_SaveFile();
  706.         }
  707.         else if(PickupEscolher[playerid] == 2)
  708.         {
  709.             PickupEscolher[playerid] = 3;
  710.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  711.             PPonto[ObterPID[playerid]][PID]  =  CreatePickup(1242, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  712.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  713.             DOF2_SetInt(Local, "Pickup", 1242);
  714.             DOF2_SaveFile();
  715.         }
  716.         else if(PickupEscolher[playerid] == 3)
  717.         {
  718.             PickupEscolher[playerid] = 4;
  719.             DestroyPickup(PPonto[ObterPID[playerid]][PID]);
  720.             PPonto[ObterPID[playerid]][PID] =  CreatePickup(1239, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  721.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  722.             DOF2_SetInt(Local, "Pickup", 1239);
  723.             DOF2_SaveFile();
  724.         }
  725.         else if(PickupEscolher[playerid] == 4)
  726.         {
  727.             PickupEscolher[playerid] = 5;
  728.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  729.             PPonto[ObterPID[playerid]][PID] =  CreatePickup(1272, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  730.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  731.             DOF2_SetInt(Local, "Pickup", 1272);
  732.             DOF2_SaveFile();
  733.         }
  734.         else if(PickupEscolher[playerid] == 5)
  735.         {
  736.             PickupEscolher[playerid] = 6;
  737.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  738.             PPonto[ObterPID[playerid]][PID] =  CreatePickup(1273, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  739.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  740.             DOF2_SetInt(Local, "Pickup", 1273);
  741.             DOF2_SaveFile();
  742.         }
  743.         else if(PickupEscolher[playerid] == 6)
  744.         {
  745.             PickupEscolher[playerid] = 7;
  746.             DestroyPickup(PPonto[ObterPID[playerid]][PID]);
  747.             PPonto[ObterPID[playerid]][PID] =  CreatePickup(1212, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  748.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  749.             DOF2_SetInt(Local, "Pickup", 1212);
  750.             DOF2_SaveFile();
  751.         }
  752.         else if(PickupEscolher[playerid] == 7)
  753.         {
  754.             PickupEscolher[playerid] = 8;
  755.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  756.             PPonto[ObterPID[playerid]][PID]  =  CreatePickup(1241, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  757.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  758.             DOF2_SetInt(Local, "Pickup", 1241);
  759.             DOF2_SaveFile();
  760.         }
  761.         else if(PickupEscolher[playerid] == 8)
  762.         {
  763.             PickupEscolher[playerid] = 9;
  764.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  765.             PPonto[ObterPID[playerid]][PID] =  CreatePickup(1247, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  766.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  767.             DOF2_SetInt(Local, "Pickup", 1247);
  768.             DOF2_SaveFile();
  769.         }
  770.         else if(PickupEscolher[playerid] == 9)
  771.         {
  772.             PickupEscolher[playerid] = 10;
  773.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  774.             PPonto[ObterPID[playerid]][PID]  =  CreatePickup(1274, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  775.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  776.             DOF2_SetInt(Local, "Pickup", 1274);
  777.             DOF2_SaveFile();
  778.         }
  779.         else if(PickupEscolher[playerid] == 10)
  780.         {
  781.             PickupEscolher[playerid] = 11;
  782.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  783.             PPonto[ObterPID[playerid]][PID]  =  CreatePickup(1275, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  784.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  785.             DOF2_SetInt(Local, "Pickup", 1275);
  786.             DOF2_SaveFile();
  787.         }
  788.         else if(PickupEscolher[playerid] == 11)
  789.         {
  790.             PickupEscolher[playerid] = 12;
  791.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  792.             PPonto[ObterPID[playerid]][PID]  =  CreatePickup(1318, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]-0.2, 0);
  793.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  794.             DOF2_SetInt(Local, "Pickup", 1318);
  795.             DOF2_SaveFile();
  796.         }
  797.         else if(PickupEscolher[playerid] == 12)
  798.         {
  799.             PickupEscolher[playerid] = 1;
  800.             DestroyPickup(PPonto[ObterPID[playerid]][PID] );
  801.             PPonto[ObterPID[playerid]][PID]  =  CreatePickup(19198, 1, PPonto[ObterPID[playerid]][PPOS][0], PPonto[ObterPID[playerid]][PPOS][1], PPonto[ObterPID[playerid]][PPOS][2]+0.2, 0);
  802.             format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", ObterPID[playerid]);
  803.             DOF2_SetInt(Local, "Pickup", 19198);
  804.             DOF2_SaveFile();
  805.         }
  806.     }
  807.     return 1;
  808. }
  809.  
  810. stock CarregarPPontos()
  811. {
  812.  
  813.     new Modelo;
  814.     new tag[100];
  815.     new Local[200];
  816.     new Texto[200];
  817.     new Lugar[MAX_ZONE_NAME];
  818.     for(new pontoid; pontoid < MAX_PONTOS; pontoid++)
  819.     {
  820.         format(Local, sizeof(Local), "PPontos/Entradas/%d.txt", pontoid);
  821.         if(DOF2_FileExists(Local))
  822.         {
  823.             Modelo = DOF2_GetInt(Local, "Pickup");
  824.             PPonto[pontoid][PPOS][0] = DOF2_GetFloat(Local, "POS0");
  825.             PPonto[pontoid][PPOS][1] = DOF2_GetFloat(Local, "POS1");
  826.             PPonto[pontoid][PPOS][2] = DOF2_GetFloat(Local, "POS2");
  827.             format(tag, sizeof(tag), DOF2_GetString(Local, "TAG"));
  828.             Get2DZone(Lugar, MAX_ZONE_NAME, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]);
  829.             format(Texto, sizeof(Texto), "{FCD208}%s\n{3D3E40}%s", tag, Lugar);
  830.             if(Modelo == 19198)
  831.             {
  832.                 PPonto[pontoid][PID] =  CreatePickup(Modelo, 1, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]+0.2, 0);
  833.             }
  834.             else
  835.             {
  836.                 PPonto[pontoid][PID] =  CreatePickup(Modelo, 1, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]-0.2, 0);
  837.             }
  838.             PPonto[pontoid][PTEXT3D] = Create3DTextLabel(Texto, -1, PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]-0.2, 5.0, 0);
  839.         }
  840.     }
  841.     for(new pontoid; pontoid < iMAX_PONTOS; pontoid++)
  842.     {
  843.         format(Local, sizeof(Local), "PPontos/Saidas/%d.txt", pontoid);
  844.         if(DOF2_FileExists(Local))
  845.         {
  846.             new Interior, Mundo;
  847.             iPonto[pontoid][PPOS][0] = DOF2_GetFloat(Local, "POS0");
  848.             iPonto[pontoid][PPOS][1] = DOF2_GetFloat(Local, "POS1");
  849.             iPonto[pontoid][PPOS][2] = DOF2_GetFloat(Local, "POS2");
  850.             Interior = DOF2_GetInt(Local, "INTERIOR");
  851.             Mundo = DOF2_GetInt(Local, "MUNDO");
  852.             iPonto[pontoid][IV][0] = Interior;
  853.             iPonto[pontoid][IV][1] = Mundo;
  854.             format(tag, sizeof(tag), DOF2_GetString(Local, "TAG"));
  855.             format(Texto, sizeof(Texto), "{FCD208}%s\n", tag);
  856.            
  857.             iPonto[pontoid][PID] =  CreatePickup(19198, 1, iPonto[pontoid][PPOS][0], iPonto[pontoid][PPOS][1], iPonto[pontoid][PPOS][2]+0.2, Mundo);
  858.             iPonto[pontoid][PTEXT3D] = Create3DTextLabel(Texto, -1, iPonto[pontoid][PPOS][0], iPonto[pontoid][PPOS][1], iPonto[pontoid][PPOS][2]-0.2, 5.0, Mundo);
  859.             printf("     ============================================================\n");
  860.             printf("       [pontoid = %d]           [%s]", pontoid, tag);
  861.             printf("       [entrada] [%d] [%d] [%d]",PPonto[pontoid][PPOS][0], PPonto[pontoid][PPOS][1], PPonto[pontoid][PPOS][2]-0.2);
  862.             printf("       [ saida ] [%d] [%d] [%d] [%d] [%d]\n",iPonto[pontoid][PPOS][0], iPonto[pontoid][PPOS][1], iPonto[pontoid][PPOS][2]-0.2, iPonto[pontoid][IV][0], Mundo);
  863.             printf("     ============================================================");
  864.         }
  865.     }
  866.     return 1;
  867. }
  868.  
  869. forward Get2DZone(zone[], len, Float:x, Float:y, Float:z);
  870. public Get2DZone(zone[], len, Float:x, Float:y, Float:z)
  871. {
  872.     #pragma unused z
  873.     for(new i = 0; i != sizeof(gSAZones); i++)
  874.     {
  875.         if(x >= gSAZones[i][SAZONE_AREA][0] && x <= gSAZones[i][SAZONE_AREA][3] && y >= gSAZones[i][SAZONE_AREA][1] && y <= gSAZones[i][SAZONE_AREA][4])
  876.         {
  877.             return format(zone, len, gSAZones[i][SAZONE_NAME]);
  878.         }
  879.     }
  880.     return format(zone, len, "San Andreas");
  881. }
  882.  
  883. stock sscanf(string[], format[], {Float,_}:...)
  884. {
  885.     #if defined isnull
  886.         if (isnull(string))
  887.     #else
  888.         if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  889.     #endif
  890.         {
  891.             return format[0];
  892.         }
  893.     #pragma tabsize 4
  894.     new
  895.         formatPos = 0,
  896.         stringPos = 0,
  897.         paramPos = 2,
  898.         paramCount = numargs(),
  899.         delim = ' ';
  900.     while (string[stringPos] && string[stringPos] <= ' ')
  901.     {
  902.         stringPos++;
  903.     }
  904.     while (paramPos < paramCount && string[stringPos])
  905.     {
  906.         switch (format[formatPos++])
  907.         {
  908.             case '\0':
  909.             {
  910.                 return 0;
  911.             }
  912.             case 'i', 'd':
  913.             {
  914.                 new
  915.                     neg = 1,
  916.                     num = 0,
  917.                     ch = string[stringPos];
  918.                 if (ch == '-')
  919.                 {
  920.                     neg = -1;
  921.                     ch = string[++stringPos];
  922.                 }
  923.                 do
  924.                 {
  925.                     stringPos++;
  926.                     if ('0' <= ch <= '9')
  927.                     {
  928.                         num = (num * 10) + (ch - '0');
  929.                     }
  930.                     else
  931.                     {
  932.                         return -1;
  933.                     }
  934.                 }
  935.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  936.                 setarg(paramPos, 0, num * neg);
  937.             }
  938.             case 'h', 'x':
  939.             {
  940.                 new
  941.                     num = 0,
  942.                     ch = string[stringPos];
  943.                 do
  944.                 {
  945.                     stringPos++;
  946.                     switch (ch)
  947.                     {
  948.                         case 'x', 'X':
  949.                         {
  950.                             num = 0;
  951.                             continue;
  952.                         }
  953.                         case '0' .. '9':
  954.                         {
  955.                             num = (num << 4) | (ch - '0');
  956.                         }
  957.                         case 'a' .. 'f':
  958.                         {
  959.                             num = (num << 4) | (ch - ('a' - 10));
  960.                         }
  961.                         case 'A' .. 'F':
  962.                         {
  963.                             num = (num << 4) | (ch - ('A' - 10));
  964.                         }
  965.                         default:
  966.                         {
  967.                             return -1;
  968.                         }
  969.                     }
  970.                 }
  971.                 while ((ch = string[stringPos]) > ' ' && ch != delim);
  972.                 setarg(paramPos, 0, num);
  973.             }
  974.             case 'c':
  975.             {
  976.                 setarg(paramPos, 0, string[stringPos++]);
  977.             }
  978.             case 'f':
  979.             {
  980.  
  981.                 new changestr[16], changepos = 0, strpos = stringPos;
  982.                 while(changepos < 16 && string[strpos] && string[strpos] != delim)
  983.                 {
  984.                     changestr[changepos++] = string[strpos++];
  985.                     }
  986.                 changestr[changepos] = '\0';
  987.                 setarg(paramPos,0,_:floatstr(changestr));
  988.             }
  989.             case 'p':
  990.             {
  991.                 delim = format[formatPos++];
  992.                 continue;
  993.             }
  994.             case '\'':
  995.             {
  996.                 new
  997.                     end = formatPos - 1,
  998.                     ch;
  999.                 while ((ch = format[++end]) && ch != '\'') {}
  1000.                 if (!ch)
  1001.                 {
  1002.                     return -1;
  1003.                 }
  1004.                 format[end] = '\0';
  1005.                 if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1006.                 {
  1007.                     if (format[end + 1])
  1008.                     {
  1009.                         return -1;
  1010.                     }
  1011.                     return 0;
  1012.                 }
  1013.                 format[end] = '\'';
  1014.                 stringPos = ch + (end - formatPos);
  1015.                 formatPos = end + 1;
  1016.             }
  1017.             case 'u':
  1018.             {
  1019.                 new
  1020.                     end = stringPos - 1,
  1021.                     id = 0,
  1022.                     bool:num = true,
  1023.                     ch;
  1024.                 while ((ch = string[++end]) && ch != delim)
  1025.                 {
  1026.                     if (num)
  1027.                     {
  1028.                         if ('0' <= ch <= '9')
  1029.                         {
  1030.                             id = (id * 10) + (ch - '0');
  1031.                         }
  1032.                         else
  1033.                         {
  1034.                             num = false;
  1035.                         }
  1036.                     }
  1037.                 }
  1038.                 if (num && IsPlayerConnected(id))
  1039.                 {
  1040.                     setarg(paramPos, 0, id);
  1041.                 }
  1042.                 else
  1043.                 {
  1044.                     #if !defined foreach
  1045.                         #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1046.                         #define __SSCANF_FOREACH__
  1047.                     #endif
  1048.                     string[end] = '\0';
  1049.                     num = false;
  1050.                     new
  1051.                         name[MAX_PLAYER_NAME];
  1052.                     id = end - stringPos;
  1053.                     foreach (Player, playerid)
  1054.                     {
  1055.                         GetPlayerName(playerid, name, sizeof (name));
  1056.                         if (!strcmp(name, string[stringPos], true, id))
  1057.                         {
  1058.                             setarg(paramPos, 0, playerid);
  1059.                             num = true;
  1060.                             break;
  1061.                         }
  1062.                     }
  1063.                     if (!num)
  1064.                     {
  1065.                         setarg(paramPos, 0, INVALID_PLAYER_ID);
  1066.                     }
  1067.                     string[end] = ch;
  1068.                     #if defined __SSCANF_FOREACH__
  1069.                         #undef foreach
  1070.                         #undef __SSCANF_FOREACH__
  1071.                     #endif
  1072.                 }
  1073.                 stringPos = end;
  1074.             }
  1075.             case 's', 'z':
  1076.             {
  1077.                 new
  1078.                     i = 0,
  1079.                     ch;
  1080.                 if (format[formatPos])
  1081.                 {
  1082.                     while ((ch = string[stringPos++]) && ch != delim)
  1083.                     {
  1084.                         setarg(paramPos, i++, ch);
  1085.                     }
  1086.                     if (!i)
  1087.                     {
  1088.                         return -1;
  1089.                     }
  1090.                 }
  1091.                 else
  1092.                 {
  1093.                     while ((ch = string[stringPos++]))
  1094.                     {
  1095.                         setarg(paramPos, i++, ch);
  1096.                     }
  1097.                 }
  1098.                 stringPos--;
  1099.                 setarg(paramPos, i, '\0');
  1100.             }
  1101.             default:
  1102.             {
  1103.                 continue;
  1104.             }
  1105.         }
  1106.         while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1107.         {
  1108.             stringPos++;
  1109.         }
  1110.         while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1111.         {
  1112.             stringPos++;
  1113.         }
  1114.         paramPos++;
  1115.     }
  1116.     do
  1117.     {
  1118.         if ((delim = format[formatPos++]) > ' ')
  1119.         {
  1120.             if (delim == '\'')
  1121.             {
  1122.                 while ((delim = format[formatPos++]) && delim != '\'') {}
  1123.             }
  1124.             else if (delim != 'z')
  1125.             {
  1126.                 return delim;
  1127.             }
  1128.         }
  1129.     }
  1130.     while (delim > ' ');
  1131.     return 0;
  1132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement