Advertisement
Hiddos

Telemap

Aug 16th, 2011
1,078
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.91 KB | None | 0 0
  1. #include <a_samp>
  2. #include <mpa>
  3. enum pd
  4. {
  5.     bool:telemapping,
  6.     Float:pointer[2],
  7.     Text:textid
  8.  
  9. }
  10.  
  11. new pi[MAX_PLAYERS][pd];
  12. new mapobj[4];
  13. public OnFilterScriptInit()
  14. {
  15.     print("Telemap script by Hiddos loaded.");
  16.     mapobj[0] = CreateObject(16007 + 3164,-2447.47216797,937.39990234,50.370,0.00000000,0.00000000,0.00000000);
  17.     mapobj[1] = CreateObject(16006 + 3164,-2448.96875000,937.39990234,50.370,0.00000000,0.00000000,0.00000000);
  18.     mapobj[2] = CreateObject(16005 + 3164,-2447.47216797,938.89892578,50.370,0.00000000,0.00000000,0.00000000);
  19.     mapobj[3] = CreateObject(16004 + 3164,-2448.96875000,938.89892578,50.370,0.00000000,0.00000000,0.00000000);
  20.     return 1;
  21. }
  22.  
  23. public OnFilterScriptExit()
  24. {
  25.     for(new i; i < MAX_PLAYERS; i++)
  26.     {
  27.         if(pi[i][telemapping] == true)
  28.         {
  29.             TextDrawDestroy(pi[i][textid]);
  30.             SetCameraBehindPlayer(i);
  31.             TogglePlayerControllable(i, true);
  32.         }
  33.     }
  34.     DestroyObject(mapobj[0]);
  35.     DestroyObject(mapobj[1]);
  36.     DestroyObject(mapobj[2]);
  37.     DestroyObject(mapobj[3]);
  38.     return 1;
  39. }
  40.  
  41. public OnPlayerRequestClass(playerid, classid)
  42. {
  43.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  44.     SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  45.     SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  46.     return 1;
  47. }
  48.  
  49. public OnPlayerConnect(playerid)
  50. {
  51.     SendClientMessage(playerid, 0xFFFF00FF, "This server runs the telemap script by Hiddos. Give it a go! /telehelp");
  52.     return 1;
  53. }
  54.  
  55. public OnPlayerDisconnect(playerid, reason)
  56. {
  57.     if(pi[playerid][telemapping])
  58.     {
  59.         pi[playerid][telemapping] = false;
  60.         TextDrawDestroy(pi[playerid][textid]);
  61.     }
  62.     return 1;
  63. }
  64.  
  65. public OnPlayerCommandText(playerid, cmdtext[])
  66. {
  67.     if(!strcmp(cmdtext, "/telemap", true))
  68.     {
  69.         if(!pi[playerid][telemapping])
  70.         {
  71.             pi[playerid][telemapping] = true;
  72.             SetPlayerCameraPos(playerid, -2448.228149415, 938.1492406, 53.370);
  73.             SetPlayerCameraLookAt(playerid, -2448.228149415, 938.14941406, 50.370);
  74.             TogglePlayerControllable(playerid, false);
  75.            
  76.             pi[playerid][textid] = TextDrawCreate(320.000000, 217.000000, ".");
  77.             TextDrawBackgroundColor(pi[playerid][textid], 255);
  78.             TextDrawFont(pi[playerid][textid], 0);
  79.             TextDrawLetterSize(pi[playerid][textid], 0.349999, 1.000000);
  80.             TextDrawColor(pi[playerid][textid], -65281);
  81.             TextDrawSetOutline(pi[playerid][textid], 1);
  82.             TextDrawSetProportional(pi[playerid][textid], 0);
  83.             TextDrawShowForPlayer(playerid, pi[playerid][textid]);
  84.             pi[playerid][pointer][0] = 320;
  85.             pi[playerid][pointer][1] = 217;
  86.         }
  87.         else
  88.         {
  89.             pi[playerid][telemapping] = false;
  90.             TextDrawDestroy(pi[playerid][textid]);
  91.             SetCameraBehindPlayer(playerid);
  92.             TogglePlayerControllable(playerid, true);
  93.         }
  94.         return 1;
  95.     }
  96.    
  97.     if(!strcmp(cmdtext, "/telehelp", true))
  98.     {
  99.         SendClientMessage(playerid, 0xFFFF00FF, "Telehelp by Hiddos:");
  100.         SendClientMessage(playerid, 0x00FF00FF, "Use /telemap to open the map.");
  101.         SendClientMessage(playerid, 0x00FF00FF, "Use the arrow keys to move around, and the jump key to teleport.");
  102.         SendClientMessage(playerid, 0x00FF00FF, "Press /telemap again to close it.");
  103.         return 1;
  104.     }
  105.     return 0;
  106. }
  107.  
  108. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  109. {
  110.  
  111.     if(newkeys & 32 && pi[playerid][telemapping] == true)
  112.     {
  113.         new Float:pos[3];
  114.         pos[0] = pi[playerid][pointer][0];
  115.         pos[1] = pi[playerid][pointer][1];
  116.  
  117.         pos[1] = 434.0 - pos[1];
  118.         pos[0] -= (320.0);
  119.         pos[1] -= (217.0);
  120.  
  121.         pos[0] *= (6.55022 * 2);
  122.         pos[1] *= (7.00935 * 2);
  123.  
  124.         GetPointZPos(pos[0], pos[1], pos[2]);
  125.  
  126.         TogglePlayerControllable(playerid, true);
  127.         SetCameraBehindPlayer(playerid);
  128.         SetPlayerPos(playerid, pos[0], pos[1], pos[2] + 2.5);
  129.         TextDrawDestroy(pi[playerid][textid]);
  130.         pi[playerid][telemapping] = false;
  131.     }
  132.     return 1;
  133. }
  134.  
  135. public OnPlayerUpdate(playerid)
  136. {
  137.     if(pi[playerid][telemapping] == false) return 1;
  138.     new keys[3];                    //UD        LR
  139.     GetPlayerKeys(playerid, keys[0], keys[1], keys[2]);
  140.     if(!keys[1] && !keys[2]) return 1;
  141.        
  142.     #define MOVE_VALUE 1.75
  143.     if(keys[1] > 0 && pi[playerid][pointer][1] < 431) pi[playerid][pointer][1] += MOVE_VALUE;
  144.     else if(keys[1] < 0 && pi[playerid][pointer][1] > 3) pi[playerid][pointer][1] -= MOVE_VALUE;
  145.  
  146.     if(keys[2] > 0 && pi[playerid][pointer][0] < 549) pi[playerid][pointer][0] += MOVE_VALUE;
  147.     else if(keys[2] < 0 && pi[playerid][pointer][0] > 91) pi[playerid][pointer][0] -= MOVE_VALUE;
  148.    
  149.     TextDrawDestroy(pi[playerid][textid]);
  150.     pi[playerid][textid] = TextDrawCreate(pi[playerid][pointer][0], pi[playerid][pointer][1], ".");
  151.     TextDrawBackgroundColor(pi[playerid][textid], 255);
  152.     TextDrawFont(pi[playerid][textid], 0);
  153.     TextDrawLetterSize(pi[playerid][textid], 0.349999, 1.000000);
  154.     TextDrawColor(pi[playerid][textid], -65281);
  155.     TextDrawSetOutline(pi[playerid][textid], 1);
  156.     TextDrawSetProportional(pi[playerid][textid], 0);
  157.     TextDrawShowForPlayer(playerid, pi[playerid][textid]);
  158.     return 1;
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement