SHOW:
|
|
- or go back to the newest paste.
| 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 | - | SetPVarInt(i,"OpenedMap",0); |
| 94 | + | DeletePVar(i,"OpenedMap"); |
| 95 | if(GetPVarInt(i,"Marked") == 1) { RemovePlayerMapIcon(i,TDMap_IconID); }
| |
| 96 | - | SetPVarInt(i,"Marked",0); |
| 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 | - | SetPVarInt(playerid,"OpenedMap",0); |
| 149 | + | DeletePVar(playerid,"OpenedMap"); |
| 150 | if(GetPVarInt(playerid,"Marked") == 1) { RemovePlayerMapIcon(playerid,TDMap_IconID); }
| |
| 151 | - | SetPVarInt(playerid,"Marked",0); |
| 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] |