View difference between Paste ID: XDcZ6VCv and 5ERWdeu6
SHOW: | | - or go back to the newest paste.
1
/*
2
Script Title: zTeleports
3
Scripter: zDivine aka Mercenary
4
Script Date: 20130423
5
Script Version: 1.0.0.0
6
*/
7
8
#define FILTERSCRIPT
9
10
#include <a_samp>
11
#include <sscanf2>
12
#include <zcmd>
13
#include <YSI\y_colours>
14
15
#if defined FILTERSCRIPT
16
17
public OnFilterScriptInit()
18
{
19
	print("\n-------------------------------------------");
20
	print(" zTeleports by zDivine successfully loaded.");
21
	print("-------------------------------------------\n");
22
	LoadTeleports();
23
	print("\n----------------------------------------");
24
	print("    		  All teleports loaded           ");
25
	print("----------------------------------------\n");
26
	return 1;
27
}
28
29
public OnFilterScriptExit()
30
{
31
	SaveTeleports();
32
	return 1;
33
}
34
35
#endif
36
37
// Server Defines
38
/* -------------------------------------------------------------------------------------------- */
39
#define MAX_TELES 			50
40
// Maximum amount of teleports for the server.
41
/* -------------------------------------------------------------------------------------------- */
42
new PLAYER_TELEPORTING = 0;
43
// Allow players to teleport to other players via OnPlayerClickPlayer(). (0 = false / 1 = true)
44
/* -------------------------------------------------------------------------------------------- */
45
46
// Enums
47
enum teleInfo
48
{
49
	tName[32],
50
	Float: tX,
51
	Float: tY,
52
	Float: tZ,
53
	Float: tA,
54
	tVW,
55
	tInt
56
};
57
new TeleInfo[MAX_TELES][teleInfo];
58
59
// Saving and Loading
60
LoadTeleports()
61
{
62
	new string[128];
63
	new File: file = fopen("teleports.cfg", io_read);
64
	new idx;
65
	while(idx < sizeof(TeleInfo) && fread(file, string))
66
	{
67
	    sscanf(string, "p<|>s[32]ffffii",
68
	    TeleInfo[idx][tName],
69
	    TeleInfo[idx][tX],
70
	    TeleInfo[idx][tY],
71
	    TeleInfo[idx][tZ],
72
	    TeleInfo[idx][tA],
73
	    TeleInfo[idx][tVW],
74
	    TeleInfo[idx][tInt]);
75
		++idx;
76
	}
77
	return fclose(file);
78
}
79
SaveTeleports()
80
{
81
	new string[128];
82
	new File: file = fopen("teleports.cfg", io_write);
83
	for(new i = 0; i < MAX_TELES; i++)
84
	{
85
	    format(string, sizeof(string), "%s|%f|%f|%f|%f|%d|%d\r\n",
86
	    TeleInfo[i][tName],
87
	    TeleInfo[i][tX],
88
	    TeleInfo[i][tY],
89
	    TeleInfo[i][tZ],
90
	    TeleInfo[i][tA],
91
	    TeleInfo[i][tVW],
92
	    TeleInfo[i][tInt]);
93
	    fwrite(file, string);
94
	}
95
	return fclose(file);
96
}
97
98
// Stocks
99
stock GetFreeTeleSlot()
100
{
101
	for(new i = 0; i < MAX_TELES; i++)
102
	{
103
	    if(strlen(TeleInfo[i][tName]) == 0) return i;
104
	}
105
	return -1;
106
}
107-
stock PlayerName(playerid)
107+
108
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
109-
	new pname[MAX_PLAYER_NAME];
109+
110-
	GetPlayerName(playerid, pname, sizeof(pname));
110+
111-
	return pname;
111+
112
		new Float: x, Float: y, Float: z, string[128];
113
		GetPlayerPos(clickedplayerid, x, y, z);
114-
public OnPlayerConnect(playerid)
114+
115
		format(string, sizeof(string), "Teleported to %s", PlayerName(clickedplayerid));
116
		SendClientMessage(playerid, X11_ORANGE, string);
117
	}
118
	return 1;
119-
public OnPlayerDisconnect(playerid, reason)
119+
120
CMD:help(playerid, params[])
121
{
122
	if(IsPlayerAdmin(playerid))
123
	{
124-
public OnPlayerSpawn(playerid)
124+
125
	}
126
	SendClientMessage(playerid, X11_WHITE, "COMMANDS: /teles /teleport");
127
	return 1;
128
}
129-
public OnPlayerDeath(playerid, killerid, reason)
129+
130
{
131
	if(IsPlayerAdmin(playerid))
132
	{
133
	    new name[32], string[128];
134-
public OnVehicleSpawn(vehicleid)
134+
135
		if(sscanf(params, "s[32]", name)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /createtele [name]");
136
		
137
		GetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
138
		GetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
139-
public OnVehicleDeath(vehicleid, killerid)
139+
140
		TeleInfo[idx][tInt] = GetPlayerInterior(playerid);
141
		strmid(TeleInfo[idx][tName], name, 0, strlen(name), 32);
142
		format(string, sizeof(string), "Teleport Created: [Name: %s | ID: %d | X: %.02f | Y: %.02f | Z: %.02f | A: %.02f | VW: %d | Int: %d]",
143
		TeleInfo[idx][tName], idx, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ], TeleInfo[idx][tA], TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
144-
public OnPlayerText(playerid, text[])
144+
145
		SaveTeleports();
146
	}
147
	else
148
	{
149-
public OnPlayerCommandText(playerid, cmdtext[])
149+
150
	}
151-
	if (strcmp("/mycommand", cmdtext, true, 10) == 0)
151+
152
}
153-
		// Do something here
153+
154-
		return 1;
154+
155
	if(IsPlayerAdmin(playerid))
156-
	return 0;
156+
157
	    new idx, name[32], string[128];
158
	    if(sscanf(params, "ds[32]", idx, name)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /telename [teleid] [name]");
159-
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
159+
160
	    if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
161
	    
162
		new oldname[32];
163
		strmid(oldname, TeleInfo[idx][tName], 0, strlen(TeleInfo[idx][tName]), 32);
164-
public OnPlayerExitVehicle(playerid, vehicleid)
164+
165
		format(string, sizeof(string), "Teleport Name Edited: [ID: %d | Previous Name: %s | New Name: %s]",
166
		idx, oldname, TeleInfo[idx][tName]);
167
		SendClientMessage(playerid, X11_ORANGE, string);
168
		SaveTeleports();
169-
public OnPlayerStateChange(playerid, newstate, oldstate)
169+
170
	else
171
	{
172
	    SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
173
	}
174-
public OnPlayerEnterCheckpoint(playerid)
174+
175
}
176
CMD:destroytele(playerid, params[])
177
{
178
	if(IsPlayerAdmin(playerid))
179-
public OnPlayerLeaveCheckpoint(playerid)
179+
180
	    new idx, string[128];
181
	    if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /destroytele [teleid]");
182
	    
183
	    if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
184-
public OnPlayerEnterRaceCheckpoint(playerid)
184+
185
		format(string, sizeof(string), "Teleport Destroyed: [ID: %d | Name: %s]",
186
		idx, TeleInfo[idx][tName]);
187
		SendClientMessage(playerid, X11_ORANGE, string);
188
		strdel(TeleInfo[idx][tName], 0, strlen(TeleInfo[idx][tName]));
189-
public OnPlayerLeaveRaceCheckpoint(playerid)
189+
190
		TeleInfo[idx][tY] = 0.0;
191
		TeleInfo[idx][tZ] = 0.0;
192
		TeleInfo[idx][tA] = 0.0;
193
		TeleInfo[idx][tVW] = 0;
194-
public OnRconCommand(cmd[])
194+
195
		SaveTeleports();
196
	}
197
	else
198
	{
199-
public OnPlayerRequestSpawn(playerid)
199+
200
	}
201
	return 1;
202
}
203
CMD:telepos(playerid, params[])
204-
public OnObjectMoved(objectid)
204+
205
	if(IsPlayerAdmin(playerid))
206
	{
207
	    new idx, string[128];
208
	    if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /telepos [teleid]");
209-
public OnPlayerObjectMoved(playerid, objectid)
209+
210
	    if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
211
	    
212
	    GetPlayerPos(playerid, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ]);
213
	    GetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
214-
public OnPlayerPickUpPickup(playerid, pickupid)
214+
215
	    TeleInfo[idx][tInt] = GetPlayerInterior(playerid);
216
	    format(string, sizeof(string), "Teleport Position Edited: [ID: %d | X: %.02f | Y: %.02f | Z: %.02f | A: %.02f | VW: %d | Int: %d]",
217
		idx, TeleInfo[idx][tX], TeleInfo[idx][tY], TeleInfo[idx][tZ], TeleInfo[idx][tA], TeleInfo[idx][tVW], TeleInfo[idx][tInt]);
218
		SendClientMessage(playerid, X11_ORANGE, string);
219-
public OnVehicleMod(playerid, vehicleid, componentid)
219+
220
	}
221
	else
222
	{
223
	    SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
224-
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
224+
225
	return 1;
226
}
227
CMD:teleport(playerid, params[])
228
{
229-
public OnVehicleRespray(playerid, vehicleid, color1, color2)
229+
230
	if(sscanf(params, "d", idx)) return SendClientMessage(playerid, X11_GREEN, "USAGE: /teleport [teleid]");
231
	
232
	if(strlen(TeleInfo[idx][tName]) == 0) return SendClientMessage(playerid, X11_RED, "ERROR: That teleport doesn't exist.");
233
234-
public OnPlayerSelectedMenuRow(playerid, row)
234+
235
	SetPlayerFacingAngle(playerid, TeleInfo[idx][tA]);
236
	SetPlayerVirtualWorld(playerid, TeleInfo[idx][tVW]);
237
	SetPlayerInterior(playerid, TeleInfo[idx][tInt]);
238
	format(string, sizeof(string), "Teleported to: %s [ID: %d | VW: %d | Int: %d]",
239-
public OnPlayerExitedMenu(playerid)
239+
240
	SendClientMessage(playerid, X11_ORANGE, string);
241
	return 1;
242
}
243
CMD:teles(playerid, params[])
244-
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
244+
245
	new string[128];
246
	SendClientMessage(playerid, X11_GREEN, "* Listing current teleports...");
247
	for(new i = 0; i < MAX_TELES; i++)
248
	{
249-
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
249+
250
		{
251
		    format(string, sizeof(string), "Teleport %d: [Name: %s | VW: %d | Int: %d]",
252
			 i, TeleInfo[i][tName], TeleInfo[i][tVW], TeleInfo[i][tInt]);
253
		    SendClientMessage(playerid, X11_WHITE, string);
254-
public OnRconLoginAttempt(ip[], password[], success)
254+
255
	}
256
	return 1;
257
}
258
CMD:togglept(playerid, params[])
259-
public OnPlayerUpdate(playerid)
259+
260
	if(IsPlayerAdmin(playerid))
261
	{
262
		new string[128];
263
		if(PLAYER_TELEPORTING == 0)
264-
public OnPlayerStreamIn(playerid, forplayerid)
264+
265
		    PLAYER_TELEPORTING = 1;
266
			format(string, sizeof(string), "zTeleports: %s has enabled player teleporting.", PlayerName(playerid));
267
			SendClientMessageToAll(X11_GREEN, string);
268
		}
269-
public OnPlayerStreamOut(playerid, forplayerid)
269+
270
		{
271
			PLAYER_TELEPORTING = 0;
272
			format(string, sizeof(string), "zTeleports: %s has disabled player teleporting.", PlayerName(playerid));
273
			SendClientMessageToAll(X11_RED, string);
274-
public OnVehicleStreamIn(vehicleid, forplayerid)
274+
275
	}
276
	else
277
	{
278
	    SendClientMessage(playerid, X11_RED, "ERROR: You are not authorized to use this command.");
279-
public OnVehicleStreamOut(vehicleid, forplayerid)
279+
280
	return 1;
281
}