View difference between Paste ID: R99HVMLC and UqnrFwum
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]