Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Filter-Script: TextDraw Map. by Robo_N1X
- /* NOTES:
- > This script only work for SA:MP 0.3d version!
- > Please don't change something here that you don't understand.
- > Credits: SA:MP Team, Zamaroth TextDraw Editor (Edited by MakuPL).
- */
- #include <a_samp> // Credits to SA:MP Team
- #define VERSION "0.1" // Don't change this
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) // Check Player Key
- #define TDMap_Icon_ID 0 // Change this if already used.
- new Text:Map_Caption, // Header text
- Text:Map_North, // North icon
- Text:Map_Help, // Help textdraw
- Text:Map_TextDraw, // Map textdraw
- Text:Map_PlayerPos[MAX_PLAYERS], // Player coordinates text
- Text:Map_PlayerMark[MAX_PLAYERS], // Player waypoint
- Text:Map_Player[MAX_PLAYERS]; // Player icon in the map
- new Float:X,Float:Y,Float:Z,Float:A;
- new TDMapLoaded;
- new TDMapString[256]; // TextDraw Map String
- new UpdateMapTimer[2]; // Update TextDraw Map timerid
- forward GeneratePlayerTDMap(playerid); // Create player TextDraw Map callback
- forward UpdatePlayerTDMap(playerid); // Update player TextDraw Map callback
- /* Border:
- player=
- X=194/450
- Y=103/359
- marker=
- X=192/447
- Y=112/367 */
- public OnFilterScriptInit()
- {
- TDMapLoaded=0;
- // Create Header/caption TextDraw
- Map_Caption = TextDrawCreate(196.00, 103.25, "San Andreas Map");
- TextDrawBackgroundColor(Map_Caption, 255);
- TextDrawFont(Map_Caption, 0);
- TextDrawLetterSize(Map_Caption, 0.50, 1.00);
- TextDrawColor(Map_Caption, -1);
- TextDrawSetOutline(Map_Caption, 1);
- TextDrawSetProportional(Map_Caption, 1);
- TextDrawUseBox(Map_Caption, 1);
- TextDrawBoxColor(Map_Caption, 127);
- TextDrawTextSize(Map_Caption, 448.00, 0.00);
- // Create North icon TextDraw
- Map_North = TextDrawCreate(317.50, 102.50, "hud:radar_north");
- TextDrawBackgroundColor(Map_North, 255);
- TextDrawFont(Map_North, 4);
- TextDrawLetterSize(Map_North, 0.50, 1.00);
- TextDrawColor(Map_North, -1);
- TextDrawSetOutline(Map_North, 0);
- TextDrawSetProportional(Map_North, 1);
- TextDrawSetShadow(Map_North, 1);
- TextDrawUseBox(Map_North, 1);
- TextDrawBoxColor(Map_North, 255);
- TextDrawTextSize(Map_North, 10.00, 10.00);
- // Create Help TextDraw
- Map_Help = TextDrawCreate(419.00, 102.50, "~w~Press ~b~~h~AIM~w~/~b~~h~2~w~ key~n~ to mark/unmark");
- TextDrawAlignment(Map_Help, 2);
- TextDrawBackgroundColor(Map_Help, 255);
- TextDrawFont(Map_Help, 2);
- TextDrawLetterSize(Map_Help, 0.15, 0.45);
- TextDrawColor(Map_Help, -65);
- TextDrawSetOutline(Map_Help, 0);
- TextDrawSetProportional(Map_Help, 1);
- TextDrawSetShadow(Map_Help, 1);
- // Create The SA Map TexTDraw
- Map_TextDraw = TextDrawCreate(194.00, 114.00, "samaps:map");
- TextDrawBackgroundColor(Map_TextDraw, 255);
- TextDrawFont(Map_TextDraw, 4);
- TextDrawLetterSize(Map_TextDraw, 0.50, 1.00);
- TextDrawColor(Map_TextDraw, -129);
- TextDrawSetOutline(Map_TextDraw, 0);
- TextDrawSetProportional(Map_TextDraw, 1);
- TextDrawSetShadow(Map_TextDraw, 1);
- TextDrawUseBox(Map_TextDraw, 1);
- TextDrawBoxColor(Map_TextDraw, 255);
- TextDrawTextSize(Map_TextDraw, 256.00, 256.00);
- // Generate the Player TextDraw
- UpdateMapTimer[0]=SetTimer("GeneratePlayerTDMap",1000,false);
- printf(" [FS] TextDraw-Map (v%s): Succesfully loaded!",VERSION);
- return 1;
- }
- public OnFilterScriptExit()
- {
- // Close & destroy all player TextDraw Map & variable
- TextDrawHideForAll(Map_Caption);
- TextDrawHideForAll(Map_North);
- TextDrawHideForAll(Map_Help);
- TextDrawHideForAll(Map_TextDraw);
- TextDrawDestroy(Map_North);
- TextDrawDestroy(Map_Help);
- TextDrawDestroy(Map_TextDraw);
- for(new i = 0; i < MAX_PLAYERS && IsPlayerConnected(i); i++)
- {
- SetPVarInt(i,"OpenedMap",0);
- if(GetPVarInt(i,"Marked") == 1) { RemovePlayerMapIcon(i,TDMap_Icon_ID); }
- SetPVarInt(i,"Marked",0);
- TextDrawHideForAll(Map_PlayerPos[i]);
- TextDrawHideForAll(Map_PlayerMark[i]);
- TextDrawHideForAll(Map_Player[i]);
- TextDrawDestroy(Map_PlayerPos[i]);
- TextDrawDestroy(Map_PlayerMark[i]);
- TextDrawDestroy(Map_Player[i]);
- }
- TDMapLoaded=0;
- print(" [FS] TextDraw-Map: Succesfully unloaded!");
- return 1;
- }
- public GeneratePlayerTDMap(playerid) // Generate player textdraw map
- {
- // Create Player position (Coordinates) TextDraw
- Map_PlayerPos[playerid] = TextDrawCreate(322.00, 371.50, "X[0000.0000] Y[0000.0000] Z[0000.0000] A[000.0000]");
- TextDrawAlignment(Map_PlayerPos[playerid], 2);
- TextDrawBackgroundColor(Map_PlayerPos[playerid], 255);
- TextDrawFont(Map_PlayerPos[playerid], 1);
- TextDrawLetterSize(Map_PlayerPos[playerid], 0.20, 0.40);
- TextDrawColor(Map_PlayerPos[playerid], -1);
- TextDrawSetOutline(Map_PlayerPos[playerid], 0);
- TextDrawSetProportional(Map_PlayerPos[playerid], 1);
- TextDrawSetShadow(Map_PlayerPos[playerid], 1);
- TextDrawUseBox(Map_PlayerPos[playerid], 1);
- TextDrawBoxColor(Map_PlayerPos[playerid], 127);
- TextDrawTextSize(Map_PlayerPos[playerid], 0.00, 252.00);
- // Create a default Player Waypoint TextDraw
- Map_PlayerMark[playerid] = TextDrawCreate(320.00, 240.00, "hud:radar_waypoint");
- TextDrawBackgroundColor(Map_PlayerMark[playerid], 255);
- TextDrawFont(Map_PlayerMark[playerid], 4);
- TextDrawLetterSize(Map_PlayerMark[playerid], 0.50, 1.00);
- TextDrawColor(Map_PlayerMark[playerid], -1);
- TextDrawSetOutline(Map_PlayerMark[playerid], 0);
- TextDrawSetProportional(Map_PlayerMark[playerid], 1);
- TextDrawSetShadow(Map_PlayerMark[playerid], 1);
- TextDrawUseBox(Map_PlayerMark[playerid], 1);
- TextDrawBoxColor(Map_PlayerMark[playerid], 255);
- TextDrawTextSize(Map_PlayerMark[playerid], 5.00, 5.00);
- // Create a Player position in map (dot) TextDraw
- Map_Player[playerid] = TextDrawCreate(323.00, 231.50, ".");
- TextDrawAlignment(Map_Player[playerid], 2);
- TextDrawBackgroundColor(Map_Player[playerid], 255);
- TextDrawFont(Map_Player[playerid], 2);
- TextDrawLetterSize(Map_Player[playerid], 0.35, 1.50);
- TextDrawColor(Map_Player[playerid], -1);
- TextDrawSetOutline(Map_Player[playerid], 1);
- TextDrawSetProportional(Map_Player[playerid], 1);
- // Set Player Variable
- SetPVarInt(playerid,"OpenedMap",0);
- SetPVarInt(playerid,"Marked",0);
- // Set timer to update player textdraw map (every second)
- TDMapLoaded=1;
- UpdateMapTimer[1]=SetTimer("UpdatePlayerTDMap",1000,true);
- return 1;
- }
- public OnPlayerDisconnect(playerid,reason)
- {
- // Close & Destroy Player TextDraw Map when the player leave the server
- SetPVarInt(playerid,"OpenedMap",0);
- if(GetPVarInt(playerid,"Marked") == 1) { RemovePlayerMapIcon(playerid,TDMap_Icon_ID); }
- SetPVarInt(playerid,"Marked",0);
- TextDrawHideForPlayer(playerid,Map_Caption);
- TextDrawHideForPlayer(playerid,Map_North);
- TextDrawHideForPlayer(playerid,Map_Help);
- TextDrawHideForPlayer(playerid,Map_TextDraw);
- TextDrawHideForPlayer(playerid,Map_PlayerPos[playerid]);
- TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
- TextDrawHideForPlayer(playerid,Map_Player[playerid]);
- TextDrawDestroy(Map_PlayerPos[playerid]);
- TextDrawDestroy(Map_PlayerMark[playerid]);
- TextDrawDestroy(Map_Player[playerid]);
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(PRESSED(KEY_YES) && TDMapLoaded == 1)
- {
- if(GetPVarInt(playerid,"OpenedMap") == 0) // Check if the player has not yet open the map
- { // Show the map for player
- TextDrawShowForPlayer(playerid,Map_Caption);
- TextDrawShowForPlayer(playerid,Map_North);
- TextDrawShowForPlayer(playerid,Map_Help);
- TextDrawShowForPlayer(playerid,Map_TextDraw);
- TextDrawShowForPlayer(playerid,Map_PlayerPos[playerid]);
- if(GetPVarInt(playerid,"Marked") == 1){ TextDrawShowForPlayer(playerid,Map_PlayerMark[playerid]); }
- TextDrawShowForPlayer(playerid,Map_Player[playerid]);
- UpdatePlayerTDMap(playerid); // run the player map update function
- SetPVarInt(playerid,"OpenedMap",1); // Set player variable that has opened the map
- }
- else // Check if the player has opened the map
- { // Hide the map for player
- TextDrawHideForPlayer(playerid,Map_Caption);
- TextDrawHideForPlayer(playerid,Map_North);
- TextDrawHideForPlayer(playerid,Map_Help);
- TextDrawHideForPlayer(playerid,Map_TextDraw);
- TextDrawHideForPlayer(playerid,Map_PlayerPos[playerid]);
- TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
- TextDrawHideForPlayer(playerid,Map_Player[playerid]);
- SetPVarInt(playerid,"OpenedMap",0); // Set player variable that has closed the map
- }
- }
- if(((PRESSED(128) && !IsPlayerInAnyVehicle(playerid)) || (PRESSED(KEY_SUBMISSION))) && GetPVarInt(playerid,"OpenedMap") == 1
- && TDMapLoaded == 1)
- {
- GetPlayerPos(playerid,X,Y,Z); // Get Player Position
- GetPlayerFacingAngle(playerid,A); // Get Player Angle
- if(GetPVarInt(playerid,"Marked") == 0) // Check if player has no waypoint
- { // Set player waypoint to map
- new Float:ResultX=320.00+(X/23.4375);
- new Float:ResultY=240.00-(Y/23.4375);
- if(ResultX > 447.00) ResultX=447.00;
- else if(ResultX < 192.00) ResultX=192.00;
- if(ResultY > 357.00) ResultY=357.00;
- else if(ResultY < 112.00) ResultY=112.00;
- // Close and destroy player map
- TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
- TextDrawDestroy(Map_PlayerMark[playerid]);
- // Recreate & show a new map for player
- Map_PlayerMark[playerid] = TextDrawCreate(ResultX, ResultY, "hud:radar_waypoint");
- TextDrawBackgroundColor(Map_PlayerMark[playerid], 255);
- TextDrawFont(Map_PlayerMark[playerid], 4);
- TextDrawLetterSize(Map_PlayerMark[playerid], 0.50, 1.00);
- TextDrawColor(Map_PlayerMark[playerid], -1);
- TextDrawSetOutline(Map_PlayerMark[playerid], 0);
- TextDrawSetProportional(Map_PlayerMark[playerid], 1);
- TextDrawSetShadow(Map_PlayerMark[playerid], 1);
- TextDrawUseBox(Map_PlayerMark[playerid], 1);
- TextDrawBoxColor(Map_PlayerMark[playerid], 255);
- TextDrawTextSize(Map_PlayerMark[playerid], 5.00, 5.00);
- TextDrawShowForPlayer(playerid,Map_PlayerMark[playerid]);
- SetPlayerMapIcon(playerid,0,X,Y,Z,41,-1,1);
- PlayerPlaySound(playerid,1083,X,Y,Z);
- SetPVarInt(playerid,"Marked",1);
- }
- else // Check if player has a waypoint on their map
- { // Remove player waypoint from map
- TextDrawHideForPlayer(playerid,Map_PlayerMark[playerid]);
- RemovePlayerMapIcon(playerid,0);
- PlayerPlaySound(playerid,1084,X,Y,Z);
- SetPVarInt(playerid,"Marked",0);
- }
- }
- return 1;
- }
- public UpdatePlayerTDMap(playerid) // Update player textdraw map
- {
- if(IsPlayerConnected(playerid)) // Check if the player is connected
- {
- GetPlayerPos(playerid,X,Y,Z); // Get player position
- GetPlayerFacingAngle(playerid,A); // Get player angle
- // Hide & Destroy player map
- TextDrawHideForPlayer(playerid,Map_Player[playerid]);
- TextDrawDestroy(Map_Player[playerid]);
- // Recreate & show a new map for player
- new Float:ResultX=323.00+(X/23.4375);
- new Float:ResultY=231.50-(Y/23.4375);
- if(ResultX > 450.00) ResultX=450.00;
- else if(ResultX < 194.00) ResultX=194.00;
- if(ResultY > 359.00) ResultY=359.00;
- else if(ResultY < 103.00) ResultY=103.00;
- Map_Player[playerid] = TextDrawCreate(ResultX, ResultY, ".");
- TextDrawAlignment(Map_Player[playerid], 2);
- TextDrawBackgroundColor(Map_Player[playerid], 255);
- TextDrawFont(Map_Player[playerid], 2);
- TextDrawLetterSize(Map_Player[playerid], 0.35, 1.50);
- TextDrawColor(Map_Player[playerid], -1);
- TextDrawSetOutline(Map_Player[playerid], 1);
- TextDrawSetProportional(Map_Player[playerid], 1);
- if(GetPVarInt(playerid,"OpenedMap") == 1) { TextDrawShowForPlayer(playerid,Map_Player[playerid]); }
- format(TDMapString,sizeof(TDMapString),"X[%.4f] Y[%.4f] Z[%.4f] A[%.4f]",X,Y,Z,A);
- TextDrawSetString(Map_PlayerPos[playerid],TDMapString);
- }
- return 1;
- }
- // EOF (End Of File) [285 Lines]
Add Comment
Please, Sign In to add comment