Guest User

Untitled

a guest
Jun 21st, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.64 KB | None | 0 0
  1. // Filter-Script: TextDraw Map. by Robo_N1X
  2. /* NOTES:
  3. > This script only work for SA:MP 0.3d version!
  4. > Please don't change something here that you don't understand.
  5. > Credits: SA:MP Team, Zamaroth TextDraw Editor (Edited by MakuPL).
  6. */
  7.  
  8. #include <a_samp> // Credits to SA:MP Team
  9. #define VERSION "0.1" // Don't change this
  10. #define PRESSED(%0) \
  11.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) // Check Player Key
  12. #define TDMap_Icon_ID   0 // Change this if already used.
  13.    
  14. new Text:Map_Caption, // Header text
  15.     Text:Map_North, // North icon
  16.     Text:Map_Help, // Help textdraw
  17.     Text:Map_TextDraw, // Map textdraw
  18.     Text:Map_PlayerPos[MAX_PLAYERS], // Player coordinates text
  19.     Text:Map_PlayerMark[MAX_PLAYERS], // Player waypoint
  20.     Text:Map_Player[MAX_PLAYERS]; // Player icon in the map
  21.    
  22. new Float:X,Float:Y,Float:Z,Float:A;
  23. new TDMapLoaded;
  24. new TDMapString[256]; // TextDraw Map String
  25. new UpdateMapTimer[2]; // Update TextDraw Map timerid
  26. forward GeneratePlayerTDMap(playerid); // Create player TextDraw Map callback
  27. forward UpdatePlayerTDMap(playerid); // Update player TextDraw Map callback
  28.  
  29. /* Border:
  30. player=
  31. X=194/450
  32. Y=103/359
  33. marker=
  34. X=192/447
  35. Y=112/367 */
  36.  
  37. public OnFilterScriptInit()
  38. {
  39.     TDMapLoaded=0;
  40.     // Create Header/caption TextDraw
  41.     Map_Caption = TextDrawCreate(196.00, 103.25, "San Andreas Map");
  42.     TextDrawBackgroundColor(Map_Caption, 255);
  43.     TextDrawFont(Map_Caption, 0);
  44.     TextDrawLetterSize(Map_Caption, 0.50, 1.00);
  45.     TextDrawColor(Map_Caption, -1);
  46.     TextDrawSetOutline(Map_Caption, 1);
  47.     TextDrawSetProportional(Map_Caption, 1);
  48.     TextDrawUseBox(Map_Caption, 1);
  49.     TextDrawBoxColor(Map_Caption, 127);
  50.     TextDrawTextSize(Map_Caption, 448.00, 0.00);
  51.     // Create North icon TextDraw
  52.     Map_North = TextDrawCreate(317.50, 102.50, "hud:radar_north");
  53.     TextDrawBackgroundColor(Map_North, 255);
  54.     TextDrawFont(Map_North, 4);
  55.     TextDrawLetterSize(Map_North, 0.50, 1.00);
  56.     TextDrawColor(Map_North, -1);
  57.     TextDrawSetOutline(Map_North, 0);
  58.     TextDrawSetProportional(Map_North, 1);
  59.     TextDrawSetShadow(Map_North, 1);
  60.     TextDrawUseBox(Map_North, 1);
  61.     TextDrawBoxColor(Map_North, 255);
  62.     TextDrawTextSize(Map_North, 10.00, 10.00);
  63.     // Create Help TextDraw
  64.     Map_Help = TextDrawCreate(419.00, 102.50, "~w~Press ~b~~h~AIM~w~/~b~~h~2~w~ key~n~ to mark/unmark");
  65.     TextDrawAlignment(Map_Help, 2);
  66.     TextDrawBackgroundColor(Map_Help, 255);
  67.     TextDrawFont(Map_Help, 2);
  68.     TextDrawLetterSize(Map_Help, 0.15, 0.45);
  69.     TextDrawColor(Map_Help, -65);
  70.     TextDrawSetOutline(Map_Help, 0);
  71.     TextDrawSetProportional(Map_Help, 1);
  72.     TextDrawSetShadow(Map_Help, 1);
  73.     // Create The SA Map TexTDraw
  74.     Map_TextDraw = TextDrawCreate(194.00, 114.00, "samaps:map");
  75.     TextDrawBackgroundColor(Map_TextDraw, 255);
  76.     TextDrawFont(Map_TextDraw, 4);
  77.     TextDrawLetterSize(Map_TextDraw, 0.50, 1.00);
  78.     TextDrawColor(Map_TextDraw, -129);
  79.     TextDrawSetOutline(Map_TextDraw, 0);
  80.     TextDrawSetProportional(Map_TextDraw, 1);
  81.     TextDrawSetShadow(Map_TextDraw, 1);
  82.     TextDrawUseBox(Map_TextDraw, 1);
  83.     TextDrawBoxColor(Map_TextDraw, 255);
  84.     TextDrawTextSize(Map_TextDraw, 256.00, 256.00);
  85.     // Generate the Player TextDraw
  86.     UpdateMapTimer[0]=SetTimer("GeneratePlayerTDMap",1000,false);
  87.     printf("  [FS] TextDraw-Map (v%s): Succesfully loaded!",VERSION);
  88.     return 1;
  89. }
  90.  
  91. public OnFilterScriptExit()
  92. {
  93.     // Close & destroy all player TextDraw Map & variable
  94.     TextDrawHideForAll(Map_Caption);
  95.     TextDrawHideForAll(Map_North);
  96.     TextDrawHideForAll(Map_Help);
  97.     TextDrawHideForAll(Map_TextDraw);
  98.     TextDrawDestroy(Map_North);
  99.     TextDrawDestroy(Map_Help);
  100.     TextDrawDestroy(Map_TextDraw);
  101.     for(new i = 0; i < MAX_PLAYERS && IsPlayerConnected(i); i++)
  102.     {
  103.         SetPVarInt(i,"OpenedMap",0);
  104.         if(GetPVarInt(i,"Marked") == 1) { RemovePlayerMapIcon(i,TDMap_Icon_ID); }
  105.         SetPVarInt(i,"Marked",0);
  106.         TextDrawHideForAll(Map_PlayerPos[i]);
  107.         TextDrawHideForAll(Map_PlayerMark[i]);
  108.         TextDrawHideForAll(Map_Player[i]);
  109.         TextDrawDestroy(Map_PlayerPos[i]);
  110.         TextDrawDestroy(Map_PlayerMark[i]);
  111.         TextDrawDestroy(Map_Player[i]);
  112.     }
  113.     TDMapLoaded=0;
  114.     print("  [FS] TextDraw-Map: Succesfully unloaded!");
  115.     return 1;
  116. }
  117.  
  118. public GeneratePlayerTDMap(playerid) // Generate player textdraw map
  119. {
  120.     // Create Player position (Coordinates) TextDraw
  121.     Map_PlayerPos[playerid] = TextDrawCreate(322.00, 371.50, "X[0000.0000] Y[0000.0000] Z[0000.0000] A[000.0000]");
  122.     TextDrawAlignment(Map_PlayerPos[playerid], 2);
  123.     TextDrawBackgroundColor(Map_PlayerPos[playerid], 255);
  124.     TextDrawFont(Map_PlayerPos[playerid], 1);
  125.     TextDrawLetterSize(Map_PlayerPos[playerid], 0.20, 0.40);
  126.     TextDrawColor(Map_PlayerPos[playerid], -1);
  127.     TextDrawSetOutline(Map_PlayerPos[playerid], 0);
  128.     TextDrawSetProportional(Map_PlayerPos[playerid], 1);
  129.     TextDrawSetShadow(Map_PlayerPos[playerid], 1);
  130.     TextDrawUseBox(Map_PlayerPos[playerid], 1);
  131.     TextDrawBoxColor(Map_PlayerPos[playerid], 127);
  132.     TextDrawTextSize(Map_PlayerPos[playerid], 0.00, 252.00);
  133.     // Create a default Player Waypoint TextDraw
  134.     Map_PlayerMark[playerid] = TextDrawCreate(320.00, 240.00, "hud:radar_waypoint");
  135.     TextDrawBackgroundColor(Map_PlayerMark[playerid], 255);
  136.     TextDrawFont(Map_PlayerMark[playerid], 4);
  137.     TextDrawLetterSize(Map_PlayerMark[playerid], 0.50, 1.00);
  138.     TextDrawColor(Map_PlayerMark[playerid], -1);
  139.     TextDrawSetOutline(Map_PlayerMark[playerid], 0);
  140.     TextDrawSetProportional(Map_PlayerMark[playerid], 1);
  141.     TextDrawSetShadow(Map_PlayerMark[playerid], 1);
  142.     TextDrawUseBox(Map_PlayerMark[playerid], 1);
  143.     TextDrawBoxColor(Map_PlayerMark[playerid], 255);
  144.     TextDrawTextSize(Map_PlayerMark[playerid], 5.00, 5.00);
  145.     // Create a Player position in map (dot) TextDraw
  146.     Map_Player[playerid] = TextDrawCreate(323.00, 231.50, ".");
  147.     TextDrawAlignment(Map_Player[playerid], 2);
  148.     TextDrawBackgroundColor(Map_Player[playerid], 255);
  149.     TextDrawFont(Map_Player[playerid], 2);
  150.     TextDrawLetterSize(Map_Player[playerid], 0.35, 1.50);
  151.     TextDrawColor(Map_Player[playerid], -1);
  152.     TextDrawSetOutline(Map_Player[playerid], 1);
  153.     TextDrawSetProportional(Map_Player[playerid], 1);
  154.     // Set Player Variable
  155.     SetPVarInt(playerid,"OpenedMap",0);
  156.     SetPVarInt(playerid,"Marked",0);
  157.     // Set timer to update player textdraw map (every second)
  158.     TDMapLoaded=1;
  159.     UpdateMapTimer[1]=SetTimer("UpdatePlayerTDMap",1000,true);
  160.     return 1;
  161. }
  162.  
  163. public OnPlayerDisconnect(playerid,reason)
  164. {
  165.     // Close & Destroy Player TextDraw Map when the player leave the server
  166.     SetPVarInt(playerid,"OpenedMap",0);
  167.     if(GetPVarInt(playerid,"Marked") == 1) { RemovePlayerMapIcon(playerid,TDMap_Icon_ID); }
  168.     SetPVarInt(playerid,"Marked",0);
  169.     TextDrawHideForPlayer(playerid,Map_Caption);
  170.     TextDrawHideForPlayer(playerid,Map_North);
  171.     TextDrawHideForPlayer(playerid,Map_Help);
  172.     TextDrawHideForPlayer(playerid,Map_TextDraw);
  173.     TextDrawHideForPlayer(playerid,Map_PlayerPos[playerid]);
  174.     TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  175.     TextDrawHideForPlayer(playerid,Map_Player[playerid]);
  176.     TextDrawDestroy(Map_PlayerPos[playerid]);
  177.     TextDrawDestroy(Map_PlayerMark[playerid]);
  178.     TextDrawDestroy(Map_Player[playerid]);
  179.     return 1;
  180. }
  181.  
  182. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  183. {
  184.     if(PRESSED(KEY_YES) && TDMapLoaded == 1)
  185.     {
  186.         if(GetPVarInt(playerid,"OpenedMap") == 0) // Check if the player has not yet open the map
  187.         {   // Show the map for player
  188.             TextDrawShowForPlayer(playerid,Map_Caption);
  189.             TextDrawShowForPlayer(playerid,Map_North);
  190.             TextDrawShowForPlayer(playerid,Map_Help);
  191.             TextDrawShowForPlayer(playerid,Map_TextDraw);
  192.             TextDrawShowForPlayer(playerid,Map_PlayerPos[playerid]);
  193.             if(GetPVarInt(playerid,"Marked") == 1){ TextDrawShowForPlayer(playerid,Map_PlayerMark[playerid]); }
  194.             TextDrawShowForPlayer(playerid,Map_Player[playerid]);
  195.             UpdatePlayerTDMap(playerid); // run the player map update function
  196.             SetPVarInt(playerid,"OpenedMap",1); // Set player variable that has opened the map
  197.         }
  198.         else // Check if the player has opened the map
  199.         {   // Hide the map for player
  200.             TextDrawHideForPlayer(playerid,Map_Caption);
  201.             TextDrawHideForPlayer(playerid,Map_North);
  202.             TextDrawHideForPlayer(playerid,Map_Help);
  203.             TextDrawHideForPlayer(playerid,Map_TextDraw);
  204.             TextDrawHideForPlayer(playerid,Map_PlayerPos[playerid]);
  205.             TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  206.             TextDrawHideForPlayer(playerid,Map_Player[playerid]);
  207.             SetPVarInt(playerid,"OpenedMap",0); // Set player variable that has closed the map
  208.         }
  209.     }
  210.     if(((PRESSED(128) && !IsPlayerInAnyVehicle(playerid)) || (PRESSED(KEY_SUBMISSION))) && GetPVarInt(playerid,"OpenedMap") == 1
  211.         && TDMapLoaded == 1)
  212.     {
  213.         GetPlayerPos(playerid,X,Y,Z); // Get Player Position
  214.         GetPlayerFacingAngle(playerid,A); // Get Player Angle
  215.         if(GetPVarInt(playerid,"Marked") == 0) // Check if player has no waypoint
  216.         {   // Set player waypoint to map
  217.             new Float:ResultX=320.00+(X/23.4375);
  218.             new Float:ResultY=240.00-(Y/23.4375);
  219.             if(ResultX > 447.00) ResultX=447.00;
  220.             else if(ResultX < 192.00) ResultX=192.00;
  221.             if(ResultY > 357.00) ResultY=357.00;
  222.             else if(ResultY < 112.00) ResultY=112.00;
  223.             // Close and destroy player map
  224.             TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  225.             TextDrawDestroy(Map_PlayerMark[playerid]);
  226.             // Recreate & show a new map for player
  227.             Map_PlayerMark[playerid] = TextDrawCreate(ResultX, ResultY, "hud:radar_waypoint");
  228.             TextDrawBackgroundColor(Map_PlayerMark[playerid], 255);
  229.             TextDrawFont(Map_PlayerMark[playerid], 4);
  230.             TextDrawLetterSize(Map_PlayerMark[playerid], 0.50, 1.00);
  231.             TextDrawColor(Map_PlayerMark[playerid], -1);
  232.             TextDrawSetOutline(Map_PlayerMark[playerid], 0);
  233.             TextDrawSetProportional(Map_PlayerMark[playerid], 1);
  234.             TextDrawSetShadow(Map_PlayerMark[playerid], 1);
  235.             TextDrawUseBox(Map_PlayerMark[playerid], 1);
  236.             TextDrawBoxColor(Map_PlayerMark[playerid], 255);
  237.             TextDrawTextSize(Map_PlayerMark[playerid], 5.00, 5.00);
  238.             TextDrawShowForPlayer(playerid,Map_PlayerMark[playerid]);
  239.             SetPlayerMapIcon(playerid,0,X,Y,Z,41,-1,1);
  240.             PlayerPlaySound(playerid,1083,X,Y,Z);
  241.             SetPVarInt(playerid,"Marked",1);
  242.         }
  243.         else // Check if player has a waypoint on their map
  244.         {   // Remove player waypoint from map
  245.             TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  246.             RemovePlayerMapIcon(playerid,0);
  247.             PlayerPlaySound(playerid,1084,X,Y,Z);
  248.             SetPVarInt(playerid,"Marked",0);
  249.         }
  250.     }
  251.     return 1;
  252. }
  253.  
  254. public UpdatePlayerTDMap(playerid) // Update player textdraw map
  255. {
  256.     if(IsPlayerConnected(playerid)) // Check if the player is connected
  257.     {
  258.         GetPlayerPos(playerid,X,Y,Z); // Get player position
  259.         GetPlayerFacingAngle(playerid,A); // Get player angle
  260.         // Hide & Destroy player map
  261.         TextDrawHideForPlayer(playerid,Map_Player[playerid]);
  262.         TextDrawDestroy(Map_Player[playerid]);
  263.         // Recreate & show a new map for player
  264.         new Float:ResultX=323.00+(X/23.4375);
  265.         new Float:ResultY=231.50-(Y/23.4375);
  266.         if(ResultX > 450.00) ResultX=450.00;
  267.         else if(ResultX < 194.00) ResultX=194.00;
  268.         if(ResultY > 359.00) ResultY=359.00;
  269.         else if(ResultY < 103.00) ResultY=103.00;
  270.         Map_Player[playerid] = TextDrawCreate(ResultX, ResultY, ".");
  271.         TextDrawAlignment(Map_Player[playerid], 2);
  272.         TextDrawBackgroundColor(Map_Player[playerid], 255);
  273.         TextDrawFont(Map_Player[playerid], 2);
  274.         TextDrawLetterSize(Map_Player[playerid], 0.35, 1.50);
  275.         TextDrawColor(Map_Player[playerid], -1);
  276.         TextDrawSetOutline(Map_Player[playerid], 1);
  277.         TextDrawSetProportional(Map_Player[playerid], 1);
  278.         if(GetPVarInt(playerid,"OpenedMap") == 1) { TextDrawShowForPlayer(playerid,Map_Player[playerid]); }
  279.         format(TDMapString,sizeof(TDMapString),"X[%.4f] Y[%.4f] Z[%.4f] A[%.4f]",X,Y,Z,A);
  280.         TextDrawSetString(Map_PlayerPos[playerid],TDMapString);
  281.     }
  282.     return 1;
  283. }
  284.  
  285. // EOF (End Of File) [285 Lines]
Add Comment
Please, Sign In to add comment