View difference between Paste ID: whY3qWr5 and uGapVJD8
SHOW: | | - or go back to the newest paste.
1
/*===================================CREDITS====================================
2
							FILTER SCRIPT CREATED BY
3
									inshal
4
						[iBomb] Attach Bomb to a player
5
									v1.2
6
         		http://forum.sa-mp.com/showthread.php?p=2961629
7
//============================================================================*/
8
9
10
//=================================INCLUDES=====================================
11
#include <a_samp>
12
#include <sscanf2>
13
#include <zcmd>
14
//==============================================================================
15
16
17
//==================================NEW=========================================
18
new BombAttached[MAX_PLAYERS];
19
new AttemptedToBombRecently[MAX_PLAYERS];
20
new HasBombedRecently[MAX_PLAYERS];
21
new AttemptedToDefuseBombRecently[MAX_PLAYERS];
22
new Text:Bomb;
23
new Text:ExpTime[3];
24
new VehicleBombed[MAX_VEHICLES];
25
new HasBlownVehicleRecently[MAX_PLAYERS];
26
new ExplosionTime[MAX_PLAYERS];
27
//==============================================================================
28
29
30
//==============================FORWARDS========================================
31
forward OneSVariables();
32
forward Explosion();
33
forward Float:GetDistanceBetweenPlayers(p1,p2);
34
//==============================================================================
35
36
37
38
//===============================COLORS=========================================
39
#define RED 0xFF0000AA
40
#define LIGHTGREEN 0x33AA33AA
41
#define GREY 0xAFAFAFAA
42
//==============================================================================
43
public OnFilterScriptInit()
44
{
45
        print("\n--------------------------------------");
46
        print(" iBomb Filterscript v1.2 loaded!");
47
        print("--------------------------------------\n");
48
49
        SetTimer("OneSVariables",1000,1);
50
51
//=================================TEXTDRAWS====================================
52
		Bomb = TextDrawCreate(503.500000, 127.750053, "Bombed");
53
		TextDrawLetterSize(Bomb, 0.449999, 1.600000);
54
		TextDrawAlignment(Bomb, 1);
55
		TextDrawColor(Bomb, RED);
56
		TextDrawSetShadow(Bomb, 0);
57
		TextDrawSetOutline(Bomb, 1);
58
		TextDrawBackgroundColor(Bomb, 51);
59
		TextDrawFont(Bomb, 3);
60
		TextDrawSetProportional(Bomb, 1);
61
62
		ExpTime[0] = TextDrawCreate(409.500000, 337.500000, "usebox");
63
		TextDrawLetterSize(ExpTime[0], 0.000000, 2.296668);
64
		TextDrawTextSize(ExpTime[0], 223.000000, 0.000000);
65
		TextDrawAlignment(ExpTime[0], 1);
66
		TextDrawColor(ExpTime[0], 0);
67
		TextDrawUseBox(ExpTime[0], true);
68
		TextDrawBoxColor(ExpTime[0], 102);
69
		TextDrawSetShadow(ExpTime[0], 0);
70
		TextDrawSetOutline(ExpTime[0], 0);
71
		TextDrawFont(ExpTime[0], 0);
72
73
		ExpTime[1] = TextDrawCreate(232.500000, 339.360046, "Explosion time: 10");
74
		TextDrawLetterSize(ExpTime[1], 0.449999, 1.600000);
75
		TextDrawAlignment(ExpTime[1], 1);
76
		TextDrawColor(ExpTime[1], -16776961);
77
		TextDrawSetShadow(ExpTime[1], 0);
78
		TextDrawSetOutline(ExpTime[1], 1);
79
		TextDrawBackgroundColor(ExpTime[1], 51);
80
		TextDrawFont(ExpTime[1], 3);
81
		TextDrawSetProportional(ExpTime[1], 1);
82
//==============================================================================
83
        return 1;
84
}
85
86
public OnFilterScriptExit()
87
{
88
        print("\n----------------------------------");
89
        print(" iBomb Filterscript v1.2 unloaded!");
90
        print("----------------------------------\n");
91
        return 1;
92
}
93
94
public OnPlayerConnect(playerid)
95
{
96
		SendClientMessage(playerid, LIGHTGREEN, "[INFO]{FFFFFF}: iBomb v1.2 by inshal is successfully being used in this server.");
97
        return 1;
98
}
99
100
public OnPlayerDisconnect(playerid, reason)
101
{
102
		TextDrawDestroy(Bomb);
103
        return 1;
104
}
105
106
public OnPlayerSpawn(playerid)
107
{
108
        AttemptedToBombRecently[playerid] =0;
109
		HasBombedRecently[playerid] =0;
110
		AttemptedToDefuseBombRecently[playerid] =0;
111
		BombAttached[playerid] =0;
112
		HasBlownVehicleRecently[playerid] =0;
113
		TextDrawHideForPlayer(playerid, Bomb);
114
		TextDrawHideForPlayer(playerid, ExpTime[0]);
115
		TextDrawHideForPlayer(playerid, ExpTime[1]);
116
		ExplosionTime[playerid] =0;
117
        return 1;
118
}
119
120
public OnPlayerDeath(playerid, killerid, reason)
121
{
122
		AttemptedToBombRecently[playerid] =0;
123
		HasBombedRecently[playerid] =0;
124
		AttemptedToDefuseBombRecently[playerid] =0;
125
		BombAttached[playerid] =0;
126
		HasBlownVehicleRecently[playerid] =0;
127
		TextDrawHideForPlayer(playerid, Bomb);
128
		TextDrawHideForPlayer(playerid, ExpTime[0]);
129
		TextDrawHideForPlayer(playerid, ExpTime[1]);
130
		ExplosionTime[playerid] =0;
131
        return 1;
132
}
133
134
public OnVehicleSpawn(vehicleid)
135
{
136
        return 1;
137
}
138
139
public OnVehicleDeath(vehicleid, killerid)
140
{
141
        return 1;
142
}
143
144
public OnPlayerText(playerid, text[])
145
{
146
        return 1;
147
}
148
149
//================================COMMANDS======================================
150
CMD:plantbomb(playerid,params[])
151
{
152
	#pragma unused params
153
	new pName[MAX_PLAYER_NAME], string[128];
154
	if(!IsPlayerInAnyVehicle(playerid))
155
	{
156
	    SendClientMessage(playerid,RED,"[ERROR]{FFFFFF} You are not in any vehicle. How are you supposed to blow one up?");
157
	    return 1;
158
	}
159
	if(HasBlownVehicleRecently[playerid] >= 1)
160
	{
161
		format(string, sizeof(string),"[ERROR]{FFFFFF} Please wait {FF0000}%d seconds{FFFFFF} before bombing a car again.",HasBlownVehicleRecently[playerid]);
162
		SendClientMessage(playerid,RED,string);
163
	 	return 1;
164
	}
165
 	new pveh =GetPlayerVehicleID(playerid);
166
	GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
167
	SendClientMessage(playerid,RED,"[INFO]{FFFFFF} You have successfully bombed the vehicle and it is about to explode in 10 seconds.");
168
	HasBlownVehicleRecently[playerid] =120;
169
	SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
170
    SetPVarString(playerid, "Name", pName);
171
	VehicleBombed[pveh] =10;
172
	return 1;
173
}
174
175
CMD:pb(playerid, params[]) return cmd_plantbomb(playerid, params);
176
177
178
CMD:bomb(playerid,params[])
179
{
180
        new targetid, string[128], pName[MAX_PLAYER_NAME+1];
181
        new crand = random(50);
182
        if(GetDistanceBetweenPlayers(playerid, targetid) > 4) return SendClientMessage(playerid, RED, "[ERROR]{FFFFFF} Player is too far away.");
183
        if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, RED, "[USAGE]{FFFFFF} /bomb [name/id]")&&
184
												 SendClientMessage(playerid, GREY, "[FUNCTION]{FFFFFF} Will attach a bomb to a player.");
185
        if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, RED, "[ERROR]{FFFFFF} Player not found.");
186
        if(BombAttached[targetid] == 1) return SendClientMessage(playerid, RED, "[ERROR]{FFFFFF} A bomb is already attached to the player.");
187
//        if(playerid == targetid) return SendClientMessage(playerid, RED, "[ERROR]{FFFFFF} You cannot attach a bomb on yourself!");
188
        if(IsPlayerInAnyVehicle(targetid)) return SendClientMessage(playerid, RED, "[ERROR]{FFFFFF} The player is in a vehicle.");
189
        if(HasBombedRecently[playerid] >= 1)
190
		{
191
			format(string, sizeof(string),"[ERROR]{FFFFFF} Please wait {FF0000}%d seconds{FFFFFF} before bombing someone again.",HasBombedRecently[playerid]);
192
			SendClientMessage(playerid,RED,string);
193
	 		return 1;
194
		}
195
		if(AttemptedToBombRecently[playerid] >= 1)
196
		{
197
			format(string, sizeof(string),"[ERROR]{FFFFFF} Please wait {FF0000}%d seconds{FFFFFF} before trying to bomb someone again.",AttemptedToBombRecently[playerid]);
198
			SendClientMessage(playerid,RED,string);
199
	 		return 1;
200
		}
201
		if(crand <= 25) return AttemptedToBombRecently[playerid] =30, SendClientMessage(playerid, RED, "[FAIL]{FFFFFF} You have failed to attach the bomb on the player.");
202
        if(crand > 25)
203
        {
204
            GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
205
        	SendClientMessage(playerid, LIGHTGREEN, "[SUCCESSFUL]{FFFFFF} You have attached the bomb on the player and it will detonate in 10 seconds.");
206
         	SendClientMessage(targetid, RED, "[DANGER]{FFFFFF} A bomb has been attached on you and will detonate in 10 seconds!");
207
			SendClientMessage(targetid, GREY, "[TIP]{FFFFFF} You can try to defuse the bomb by using /defusebomb.");
208
        	//SetTimer("Explosion", 10000, false);
209
            BombAttached[targetid] =1;
210
            TextDrawShowForPlayer(playerid, Bomb);
211
			HasBombedRecently[playerid] =60;
212
			//SetPVarString(playerid, "Name", pName);
213
			//SetPVarInt(playerid, "ID", playerid);
214
			SetPlayerScore(playerid, GetPlayerScore(playerid)+1);
215
			SetPlayerAttachedObject(targetid, 2,1252,1,0.10,-0.18,0.01,8.0,85.0,-4.0,0.86,1.16,1.00);
216
			ExplosionTime[targetid] =10;
217
			TextDrawShowForPlayer(targetid, ExpTime[0]);
218
			TextDrawShowForPlayer(targetid, ExpTime[1]);
219
        }
220
        return 1;
221
}
222
223
CMD:defusebomb(playerid,params[])
224
{
225
        new crand = random(40), string[128];
226
        if(BombAttached[playerid] == 0) return SendClientMessage(playerid, RED, "[ERROR]{FFFFFF} There is no bomb attached on you.");
227
        if(AttemptedToDefuseBombRecently[playerid] >= 1)
228
		{
229
			format(string, sizeof(string),"[ERROR]{FFFFFF} Please wait {FF0000}%d seconds{FFFFFF} before trying to defuse a bomb again.",AttemptedToDefuseBombRecently[playerid]);
230
			SendClientMessage(playerid,RED,string);
231
	 		return 1;
232
		}
233
		if(crand <= 20) return AttemptedToDefuseBombRecently[playerid] =30, SendClientMessage(playerid, RED, "[FAIL]{FFFFFF} You have failed to defuse the bomb.");
234
        if(crand > 20)
235
        {
236
        	SendClientMessage(playerid, LIGHTGREEN, "[SUCCESSFUL]{FFFFFF} You have successfully defused the bomb.");
237
            BombAttached[playerid] =0;
238
            TextDrawHideForPlayer(playerid, Bomb);
239
			RemovePlayerAttachedObject(playerid, 2);
240
			ExplosionTime[playerid] =0;
241
			TextDrawHideForPlayer(playerid, ExpTime[0]);
242
			TextDrawHideForPlayer(playerid, ExpTime[1]);
243
        }
244
        return 1;
245
}
246
//==============================================================================
247
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
248
{
249
        return 1;
250
}
251
252
public OnPlayerExitVehicle(playerid, vehicleid)
253
{
254
        return 1;
255
}
256
257
public OnPlayerStateChange(playerid, newstate, oldstate)
258
{
259
        return 1;
260
}
261
262
public OnPlayerEnterCheckpoint(playerid)
263
{
264
        return 1;
265
}
266
267
public OnPlayerLeaveCheckpoint(playerid)
268
{
269
        return 1;
270
}
271
272
public OnPlayerEnterRaceCheckpoint(playerid)
273
{
274
        return 1;
275
}
276
277
public OnPlayerLeaveRaceCheckpoint(playerid)
278
{
279
        return 1;
280
}
281
282
public OnRconCommand(cmd[])
283
{
284
        return 1;
285
}
286
287
public OnPlayerRequestSpawn(playerid)
288
{
289
        return 1;
290
}
291
292
public OnObjectMoved(objectid)
293
{
294
        return 1;
295
}
296
297
public OnPlayerObjectMoved(playerid, objectid)
298
{
299
        return 1;
300
}
301
302
public OnPlayerPickUpPickup(playerid, pickupid)
303
{
304
        return 1;
305
}
306
307
public OnVehicleMod(playerid, vehicleid, componentid)
308
{
309
        return 1;
310
}
311
312
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
313
{
314
        return 1;
315
}
316
317
public OnVehicleRespray(playerid, vehicleid, color1, color2)
318
{
319
        return 1;
320
}
321
322
public OnPlayerSelectedMenuRow(playerid, row)
323
{
324
        return 1;
325
}
326
327
public OnPlayerExitedMenu(playerid)
328
{
329
        return 1;
330
}
331
332
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
333
{
334
        return 1;
335
}
336
337
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
338
{
339
        return 1;
340
}
341
342
public OnRconLoginAttempt(ip[], password[], success)
343
{
344
        return 1;
345
}
346
347
public OnPlayerUpdate(playerid)
348
{
349
        return 1;
350
}
351
352
public OnPlayerStreamIn(playerid, forplayerid)
353
{
354
        return 1;
355
}
356
357
public OnPlayerStreamOut(playerid, forplayerid)
358
{
359
        return 1;
360
}
361
362
public OnVehicleStreamIn(vehicleid, forplayerid)
363
{
364
        return 1;
365
}
366
367
public OnVehicleStreamOut(vehicleid, forplayerid)
368
{
369
        return 1;
370
}
371
372
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
373
{
374
        return 1;
375
}
376
377
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
378
{
379
        return 1;
380
}
381
382
383
//================================STOCKS AND OTHERS=============================
384
/*
385
public Explosion()
386
{
387
        for(new i=0; i<MAX_PLAYERS; i++)
388
        {
389
            if(IsPlayerConnected(i))
390
            {
391
                if(BombAttached[i] == 1)
392
                {
393
                new string[128], Float:x, Float:y, Float:z;
394
                //new pName[MAX_PLAYER_NAME+1];
395
				GetPlayerPos(i, x, y, z);
396
				CreateExplosion(x,y,z,6,10.0);
397
            	SetPlayerHealth(i, 0);
398
             	BombAttached[i] =0;
399
				format(string, sizeof(string), "[DEATH]{FFFFFF} %s[%d] has been blown up with a bomb" attached by %s[%d]."", GetName(i), i, GetPVarString(i, "Name", pName), GetPVarInt(i, "ID"));
400
				SendClientMessageToAll(RED, string);
401
				TextDrawHideForPlayer(i, Bomb);
402
				}
403
			}
404
        }
405
}
406
*/
407
public OneSVariables()
408
{
409
    for(new i=0; i<MAX_PLAYERS; i++)
410
	{
411
	    if(IsPlayerConnected(i))
412
	    {
413
     		if(HasBombedRecently[i] >= 1)
414
			{
415
			    HasBombedRecently[i] --;
416
			}
417
			if(HasBlownVehicleRecently[i] >= 1)
418
			{
419
			    HasBlownVehicleRecently[i] --;
420
			}
421
   			if(AttemptedToBombRecently[i] >= 1)
422
			{
423
			    AttemptedToBombRecently[i] --;
424
			}
425
   			if(AttemptedToDefuseBombRecently[i] >= 1)
426
			{
427
			    AttemptedToDefuseBombRecently[i] --;
428
			}
429
			if(ExplosionTime[i] >= 1)
430
			{
431
			    new string[50];
432
				format(string, sizeof(string), "Explosion Time: %d", ExplosionTime[i]);
433
				TextDrawSetString(ExpTime[1], string);
434
			    ExplosionTime[i] --;
435
			}
436
			if(ExplosionTime[i] == 0)
437
			{
438
   				if(IsPlayerConnected(i))
439
            	{
440
                	if(BombAttached[i] == 1)
441
                	{
442
		                new string[128], Float:x, Float:y, Float:z;
443
		                //new pName[MAX_PLAYER_NAME+1];
444
						GetPlayerPos(i, x, y, z);
445
						CreateExplosion(x,y,z,6,10.0);
446
		            	SetPlayerHealth(i, 0);
447
		             	BombAttached[i] =0;
448
						format(string, sizeof(string), "[DEATH]{FFFFFF} %s[%d] has been blown to bits with a bomb."/* attached by %s[%d].*/"", GetName(i), i/*, GetPVarString(i, "Name", pName), GetPVarInt(i, "ID")*/);
449
						SendClientMessageToAll(RED, string);
450
						TextDrawHideForPlayer(i, Bomb);
451
						TextDrawHideForPlayer(i, ExpTime[0]);
452
						TextDrawHideForPlayer(i, ExpTime[1]);
453
						ExplosionTime[i] =0;
454
					}
455
				}
456
			}
457
            for(new v=0; v<MAX_VEHICLES; v++)
458
			{
459
				if(VehicleBombed[v] > 1)
460
 				{
461
	        		VehicleBombed[v] --;
462
				}
463
				if(VehicleBombed[v] == 1)
464
				{
465
  					new Float:x, Float:y, Float:z;
466
		    		GetVehiclePos(v, x, y, z);
467
					CreateExplosion(x, y, z, 6, 10.0);
468
		    		SetVehicleToRespawn(v);
469
		    		VehicleBombed[v] =0;
470
		    		SendClientMessageToAll(RED, "[INFO]{FFFFFF} The vehicle which was bombed by %s has been exploded.");
471
				}
472
			}
473
		}
474
 	}
475
}
476
public Float:GetDistanceBetweenPlayers(p1,p2)
477
{
478
        new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
479
        if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
480
        {
481
                return -1.00;
482
        }
483
        GetPlayerPos(p1,x1,y1,z1);
484
        GetPlayerPos(p2,x2,y2,z2);
485
        return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
486
}
487
488
stock GetName(playerid)
489
{
490
	new Name[MAX_PLAYER_NAME];
491
	GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
492
	return Name;
493
}
494
//==============================================================================