Guest User

[FS] TextDraw Map (v 0.1)

a guest
Feb 24th, 2012
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. > Please note that SA:MP has Textdraw limits, see http://wiki.sa-mp.com/wiki/Limits
  7. */
  8.  
  9. #include <a_samp>
  10. #define VERSION "0.1 [February,2012]" // Don't change this
  11. #define PRESSED(%0) \
  12.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) // Check pressed key
  13. #define TDMap_IconID    0 // Change this (0 to 99) if you already have another Map icon ID
  14.    
  15. new Text:Map_Caption, // Header text
  16.     Text:Map_North, // North icon
  17.     Text:Map_Help, // Help textdraw
  18.     Text:Map_TextDraw, // Map textdraw
  19.     Text:Map_PlayerPos[MAX_PLAYERS], // Player coordinates text
  20.     Text:Map_PlayerMark[MAX_PLAYERS], // Player waypoint
  21.     Text:Map_Player[MAX_PLAYERS]; // Player icon in the map
  22. new Float:X,Float:Y,Float:Z,Float:A;
  23. new TDMapString[256]; // TextDraw Map String
  24. new UpdateTDMapTimerID; // TDMap ID
  25. forward UpdatePlayerTDMap(playerid);
  26.  
  27. /* Map Border :
  28. > Player=X:194~450|Y:103~359
  29. > Marker=X:192~447|Y:112~367*/
  30.  
  31. public OnFilterScriptInit()
  32. {
  33.     Map_Caption = TextDrawCreate(196.00, 103.25, "San Andreas Map");
  34.     TextDrawBackgroundColor(Map_Caption, 255);
  35.     TextDrawFont(Map_Caption, 0);
  36.     TextDrawLetterSize(Map_Caption, 0.50, 1.00);
  37.     TextDrawColor(Map_Caption, -1);
  38.     TextDrawSetOutline(Map_Caption, 1);
  39.     TextDrawSetProportional(Map_Caption, 1);
  40.     TextDrawUseBox(Map_Caption, 1);
  41.     TextDrawBoxColor(Map_Caption, 127);
  42.     TextDrawTextSize(Map_Caption, 448.00, 0.00);
  43.    
  44.     Map_North = TextDrawCreate(317.50, 102.50, "hud:radar_north");
  45.     TextDrawBackgroundColor(Map_North, 255);
  46.     TextDrawFont(Map_North, 4);
  47.     TextDrawLetterSize(Map_North, 0.50, 1.00);
  48.     TextDrawColor(Map_North, -1);
  49.     TextDrawSetOutline(Map_North, 0);
  50.     TextDrawSetProportional(Map_North, 1);
  51.     TextDrawSetShadow(Map_North, 1);
  52.     TextDrawUseBox(Map_North, 1);
  53.     TextDrawBoxColor(Map_North, 255);
  54.     TextDrawTextSize(Map_North, 10.00, 10.00);
  55.    
  56.     Map_Help = TextDrawCreate(419.00, 102.50, "~w~Press ~b~~h~AIM~w~/~b~~h~2~w~ key~n~ to mark/unmark");
  57.     TextDrawAlignment(Map_Help, 2);
  58.     TextDrawBackgroundColor(Map_Help, 255);
  59.     TextDrawFont(Map_Help, 2);
  60.     TextDrawLetterSize(Map_Help, 0.15, 0.45);
  61.     TextDrawColor(Map_Help, -65);
  62.     TextDrawSetOutline(Map_Help, 0);
  63.     TextDrawSetProportional(Map_Help, 1);
  64.     TextDrawSetShadow(Map_Help, 1);
  65.    
  66.     Map_TextDraw = TextDrawCreate(194.00, 114.00, "samaps:map");
  67.     TextDrawBackgroundColor(Map_TextDraw, 255);
  68.     TextDrawFont(Map_TextDraw, 4);
  69.     TextDrawLetterSize(Map_TextDraw, 0.50, 1.00);
  70.     TextDrawColor(Map_TextDraw, -129);
  71.     TextDrawSetOutline(Map_TextDraw, 0);
  72.     TextDrawSetProportional(Map_TextDraw, 1);
  73.     TextDrawSetShadow(Map_TextDraw, 1);
  74.     TextDrawUseBox(Map_TextDraw, 1);
  75.     TextDrawBoxColor(Map_TextDraw, 255);
  76.     TextDrawTextSize(Map_TextDraw, 256.00, 256.00);
  77.  
  78.     UpdateTDMapTimerID=SetTimer("UpdatePlayerTDMap",500,true);
  79.     printf("  [FS] TextDraw-Map (v%s): Succesfully loaded!",VERSION);
  80.     return 1;
  81. }
  82.  
  83. public OnFilterScriptExit()
  84. {
  85.     TextDrawHideForAll(Map_Caption);
  86.     TextDrawHideForAll(Map_North);
  87.     TextDrawHideForAll(Map_Help);
  88.     TextDrawHideForAll(Map_TextDraw);
  89.     TextDrawDestroy(Map_North);
  90.     TextDrawDestroy(Map_Help);
  91.     TextDrawDestroy(Map_TextDraw);
  92.     for(new i = 0; i < MAX_PLAYERS && IsPlayerConnected(i); i++)
  93.     {
  94.         DeletePVar(i,"OpenedMap");
  95.         if(GetPVarInt(i,"Marked") == 1) { RemovePlayerMapIcon(i,TDMap_IconID); }
  96.         DeletePVar(i,"Marked");
  97.         TextDrawHideForAll(Map_PlayerPos[i]);
  98.         TextDrawHideForAll(Map_PlayerMark[i]);
  99.         TextDrawHideForAll(Map_Player[i]);
  100.         TextDrawDestroy(Map_PlayerPos[i]);
  101.         TextDrawDestroy(Map_PlayerMark[i]);
  102.         TextDrawDestroy(Map_Player[i]);
  103.     }
  104.     KillTimer(UpdateTDMapTimerID);
  105.     print("  [FS] TextDraw-Map: Succesfully unloaded!");
  106.     return 1;
  107. }
  108.  
  109. public OnPlayerConnect(playerid)
  110. {
  111.     Map_PlayerPos[playerid] = TextDrawCreate(322.00, 371.50, "X[0000.0000] Y[0000.0000] Z[0000.0000] A[000.0000]");
  112.     TextDrawAlignment(Map_PlayerPos[playerid], 2);
  113.     TextDrawBackgroundColor(Map_PlayerPos[playerid], 255);
  114.     TextDrawFont(Map_PlayerPos[playerid], 1);
  115.     TextDrawLetterSize(Map_PlayerPos[playerid], 0.20, 0.40);
  116.     TextDrawColor(Map_PlayerPos[playerid], -1);
  117.     TextDrawSetOutline(Map_PlayerPos[playerid], 0);
  118.     TextDrawSetProportional(Map_PlayerPos[playerid], 1);
  119.     TextDrawSetShadow(Map_PlayerPos[playerid], 1);
  120.     TextDrawUseBox(Map_PlayerPos[playerid], 1);
  121.     TextDrawBoxColor(Map_PlayerPos[playerid], 127);
  122.     TextDrawTextSize(Map_PlayerPos[playerid], 0.00, 252.00);
  123.  
  124.     Map_PlayerMark[playerid] = TextDrawCreate(320.00, 240.00, "hud:radar_waypoint");
  125.     TextDrawBackgroundColor(Map_PlayerMark[playerid], 255);
  126.     TextDrawFont(Map_PlayerMark[playerid], 4);
  127.     TextDrawLetterSize(Map_PlayerMark[playerid], 0.50, 1.00);
  128.     TextDrawColor(Map_PlayerMark[playerid], -1);
  129.     TextDrawSetOutline(Map_PlayerMark[playerid], 0);
  130.     TextDrawSetProportional(Map_PlayerMark[playerid], 1);
  131.     TextDrawSetShadow(Map_PlayerMark[playerid], 1);
  132.     TextDrawUseBox(Map_PlayerMark[playerid], 1);
  133.     TextDrawBoxColor(Map_PlayerMark[playerid], 255);
  134.     TextDrawTextSize(Map_PlayerMark[playerid], 5.00, 5.00);
  135.    
  136.     Map_Player[playerid] = TextDrawCreate(323.00, 231.50, ".");
  137.     TextDrawAlignment(Map_Player[playerid], 2);
  138.     TextDrawBackgroundColor(Map_Player[playerid], 255);
  139.     TextDrawFont(Map_Player[playerid], 2);
  140.     TextDrawLetterSize(Map_Player[playerid], 0.35, 1.50);
  141.     TextDrawColor(Map_Player[playerid], -1);
  142.     TextDrawSetOutline(Map_Player[playerid], 1);
  143.     TextDrawSetProportional(Map_Player[playerid], 1);
  144.     return 1;
  145. }
  146.  
  147. public OnPlayerDisconnect(playerid,reason)
  148. {
  149.     DeletePVar(playerid,"OpenedMap");
  150.     if(GetPVarInt(playerid,"Marked") == 1) { RemovePlayerMapIcon(playerid,TDMap_IconID); }
  151.     DeletePVar(playerid,"Marked");
  152.     TextDrawHideForPlayer(playerid,Map_Caption);
  153.     TextDrawHideForPlayer(playerid,Map_North);
  154.     TextDrawHideForPlayer(playerid,Map_Help);
  155.     TextDrawHideForPlayer(playerid,Map_TextDraw);
  156.     TextDrawHideForPlayer(playerid,Map_PlayerPos[playerid]);
  157.     TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  158.     TextDrawHideForPlayer(playerid,Map_Player[playerid]);
  159.     TextDrawDestroy(Map_PlayerPos[playerid]);
  160.     TextDrawDestroy(Map_PlayerMark[playerid]);
  161.     TextDrawDestroy(Map_Player[playerid]);
  162.     return 1;
  163. }
  164.  
  165. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  166. {
  167.     if(PRESSED(KEY_YES))
  168.     {
  169.         if(GetPVarInt(playerid,"OpenedMap") == 0)
  170.         {
  171.             TextDrawShowForPlayer(playerid,Map_Caption);
  172.             TextDrawShowForPlayer(playerid,Map_North);
  173.             TextDrawShowForPlayer(playerid,Map_Help);
  174.             TextDrawShowForPlayer(playerid,Map_TextDraw);
  175.             TextDrawShowForPlayer(playerid,Map_PlayerPos[playerid]);
  176.             if(GetPVarInt(playerid,"Marked") == 1) { TextDrawShowForPlayer(playerid,Map_PlayerMark[playerid]); }
  177.             TextDrawShowForPlayer(playerid,Map_Player[playerid]);
  178.             SetPVarInt(playerid,"OpenedMap",1);
  179.         }
  180.         else
  181.         {
  182.             TextDrawHideForPlayer(playerid,Map_Caption);
  183.             TextDrawHideForPlayer(playerid,Map_North);
  184.             TextDrawHideForPlayer(playerid,Map_Help);
  185.             TextDrawHideForPlayer(playerid,Map_TextDraw);
  186.             TextDrawHideForPlayer(playerid,Map_PlayerPos[playerid]);
  187.             TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  188.             TextDrawHideForPlayer(playerid,Map_Player[playerid]);
  189.             SetPVarInt(playerid,"OpenedMap",0);
  190.         }
  191.     }
  192.     if(((PRESSED(128) && !IsPlayerInAnyVehicle(playerid)) || (PRESSED(KEY_SUBMISSION))) && GetPVarInt(playerid,"OpenedMap") == 1)
  193.     {
  194.         GetPlayerPos(playerid,X,Y,Z);
  195.         if(GetPVarInt(playerid,"Marked") == 0)
  196.         {
  197.             TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  198.             TextDrawDestroy(Map_PlayerMark[playerid]);
  199.            
  200.             new Float:ResultX=320.00+(X/23.4375);
  201.             new Float:ResultY=240.00-(Y/23.4375);
  202.             if(ResultX > 447.00) ResultX=447.00;
  203.             else if(ResultX < 192.00) ResultX=192.00;
  204.             if(ResultY > 367.00) ResultY=357.00;
  205.             else if(ResultY < 112.00) ResultY=112.00;
  206.            
  207.             Map_PlayerMark[playerid] = TextDrawCreate(ResultX, ResultY, "hud:radar_waypoint");
  208.             TextDrawBackgroundColor(Map_PlayerMark[playerid], 255);
  209.             TextDrawFont(Map_PlayerMark[playerid], 4);
  210.             TextDrawLetterSize(Map_PlayerMark[playerid], 0.50, 1.00);
  211.             TextDrawColor(Map_PlayerMark[playerid], -1);
  212.             TextDrawSetOutline(Map_PlayerMark[playerid], 0);
  213.             TextDrawSetProportional(Map_PlayerMark[playerid], 1);
  214.             TextDrawSetShadow(Map_PlayerMark[playerid], 1);
  215.             TextDrawUseBox(Map_PlayerMark[playerid], 1);
  216.             TextDrawBoxColor(Map_PlayerMark[playerid], 255);
  217.             TextDrawTextSize(Map_PlayerMark[playerid], 5.00, 5.00);
  218.             TextDrawShowForPlayer(playerid,Map_PlayerMark[playerid]);
  219.             SetPlayerMapIcon(playerid,TDMap_IconID,X,Y,Z,41,-1,MAPICON_GLOBAL);
  220.             PlayerPlaySound(playerid,1083,X,Y,Z);
  221.             SetPVarInt(playerid,"Marked",1);
  222.         }
  223.         else
  224.         {
  225.             TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
  226.             RemovePlayerMapIcon(playerid,TDMap_IconID);
  227.             PlayerPlaySound(playerid,1084,X,Y,Z);
  228.             SetPVarInt(playerid,"Marked",0);
  229.         }
  230.     }
  231.     return 1;
  232. }
  233.  
  234. public UpdatePlayerTDMap(playerid)
  235. {
  236.     if(IsPlayerConnected(playerid) && GetPVarInt(playerid,"OpenedMap") == 1)
  237.     {
  238.         if(IsPlayerInAnyVehicle(playerid))
  239.         {
  240.             GetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z);
  241.             GetVehicleZAngle(GetPlayerVehicleID(playerid),A);
  242.         }
  243.         else
  244.         {
  245.             GetPlayerPos(playerid,X,Y,Z);
  246.             GetPlayerFacingAngle(playerid,A);
  247.         }
  248.        
  249.         TextDrawHideForPlayer(playerid,Map_Player[playerid]);
  250.         TextDrawDestroy(Map_Player[playerid]);
  251.  
  252.         new Float:ResultX=323.00+(X/23.4375);
  253.         new Float:ResultY=231.50-(Y/23.4375);
  254.         if(ResultX > 450.00) ResultX=450.00;
  255.         else if(ResultX < 194.00) ResultX=194.00;
  256.         if(ResultY > 359.00) ResultY=359.00;
  257.         else if(ResultY < 103.00) ResultY=103.00;
  258.  
  259.         Map_Player[playerid] = TextDrawCreate(ResultX, ResultY, ".");
  260.         TextDrawAlignment(Map_Player[playerid], 2);
  261.         TextDrawBackgroundColor(Map_Player[playerid], 255);
  262.         TextDrawFont(Map_Player[playerid], 2);
  263.         TextDrawLetterSize(Map_Player[playerid], 0.35, 1.50);
  264.         TextDrawColor(Map_Player[playerid], -1);
  265.         TextDrawSetOutline(Map_Player[playerid], 1);
  266.         TextDrawSetProportional(Map_Player[playerid], 1);
  267.        
  268.         TextDrawShowForPlayer(playerid,Map_PlayerPos[playerid]);
  269.         format(TDMapString,sizeof(TDMapString),"X[%.4f] Y[%.4f] Z[%.4f] A[%.4f]",X,Y,Z,A);
  270.         TextDrawSetString(Map_PlayerPos[playerid],TDMapString);
  271.         TextDrawShowForPlayer(playerid,Map_Player[playerid]);
  272.     }
  273.     return 1;
  274. }
  275. // EOF [275 Lines]
Advertisement
Add Comment
Please, Sign In to add comment