View difference between Paste ID: R7sUgG6d and BSv2eC1Q
SHOW: | | - or go back to the newest paste.
1
//==============================================================================
2
/* FALLOUT EVENT CODED BY Flamehaze, you can edit the entire code as your needs,
3
if you use it in your Gamemode just give me the credits! If you could that would
4
be awesome!
5
6
                         THANK YOU FOR DOWNLOADING IT
7
8
Changelog: Nothing atm :^)
9
10
*/
11
//================================ INCLUDES ====================================
12
#include <a_samp>
13
#include <zcmd>
14
//==============================================================================
15
new FalloutPlayer[MAX_PLAYERS], //Player Variable that let us know if the player is inside the event or not
16
FalloutStarted = 0, //Global Variable to know if the Event has started or not
17
FalloutPlayers = 0, //Global Variable to know how much players we have in the event, if < 1 the event will NOT start.
18
FalloutWaiting = 0; //Global variable to know if we're waiting for the event to start or not
19
20
//Do not edit this
21
#define PLATFORMS 63 //Number of platforms in the game (Don't change it)
22
23
//Editable settings
24
#define EVENT_START 1 //Calculated in minutes you have to change it (1 = 1 minute)
25
#define MONEY 10000 //The money that the player wins, change it from there if you want
26
27
//Forwards
28
forward FalloutStarting(playerid);
29
forward CheckPlayer();
30
forward FallingPlat();
31
forward RegenPlatforms();
32
33
//Platforms
34
new PlatformObject[63];
35
36
//Some random colors needed
37
#define Red 0xFF0000FF
38
#define Grey 0xAFAFAFAA
39
#define Green 0x33AA33AA
40
#define Yellow 0xFFFF00AA
41
#define White 0xFFFFFFAA
42
#define Blue 0x0000BBAA
43
#define Lightblue 0x33CCFFAA
44
#define Orange 0xFF9900AA
45
#define Lime 0x10F441AA
46
#define Magenta 0xFF00FFFFT
47
#define Navy 0x000080AA
48
#define Aqua 0xF0F8FFAA
49
#define Crimson 0xDC143CAA
50
#define Black 0x000000AA
51
#define Brown 0XA52A2AAA
52
#define Gold 0xB8860BAA
53
#define Limegreen 0x32CD32AA
54
55
//==============================================================================
56
public OnPlayerConnect(playerid)
57
{
58
	FalloutPlayer[playerid] = 0; //Let's define that whenever a new player connects we set his Fallout variable to 0
59
	return 1;
60
}
61
62
public OnPlayerDisconnect(playerid, reason)
63
{
64
	//If a Fallout Player leaves
65
	if(FalloutPlayer[playerid] == 1)
66
	{
67
	   FalloutPlayers--;
68
69
	   new string[100];
70
	   new name[22];
71
72
	   GetPlayerName(playerid,name,22);
73
74
	   format(string,sizeof(string),"%s has been eliminated from the Fallout Event (Disconnect)",name);
75
	   SendClientMessageToAll(Red,string);
76
77
	}
78
	return 1;
79
}
80
81
//========================== [ COMMANDS ] ======================================
82
83
COMMAND:startevent(playerid,params[])
84
{
85
	//Warnings
86
	if(FalloutWaiting == 1) return SendClientMessage(playerid,Red,"You can't start another Fallout Event!"); //If the player tries to start again the event while FalloutWaiting is 1 so that means that the event is currently waiting for players
87
	if(FalloutStarted == 1) return SendClientMessage(playerid,Red,"The Fallout Event has already started!"); //If the players tries to start the event while the event is active
88
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,Red,"You need to be Admin to use that command!"); //If the player that tries to do that command is not admin we send him a warning
89
90
	//If the requirements are met then let's do this:
91
92
	new string[100];
93
	format(string,sizeof(string),"The Fallout event is about to start in %d minute(s), join it by typing '/joinfallout'",EVENT_START); //let's send everyone a string with the time until start and the join command
94
	SendClientMessageToAll(Green,string); //If the event has triggered and it's about to be started (60 secs)
95
	SetTimer("FalloutStarting",60000*EVENT_START,0); //Timer till the event starts
96
	FalloutWaiting = 1; //Variable for the waiting time meanwhile searching for players
97
	FalloutPlayer[playerid] = 1; //The player is now a Fallout Partecipant
98
	FalloutPlayers++; //Increase the Fallout Players number by 1
99
	return 1;
100
}
101
102
COMMAND:joinfallout(playerid,params[])
103
{
104
	if(FalloutWaiting == 0) return SendClientMessage(playerid,Red,"There's no active Fallout Event!"); //If the player tries to join it while there's no active event
105
	if(FalloutStarted == 1) return SendClientMessage(playerid,Red,"The Fallout event has already started, you can't join it now!"); //If the players tries to join it while the Event has already started
106
	if(FalloutPlayer[playerid] == 1) return SendClientMessage(playerid,Red,"You can't join this, you're already in the event!"); //If the player tries to join the event but he's already inside it.
107
108
	//Join the event
109
	FalloutPlayers++; //Increase the players in the event
110
	FalloutPlayer[playerid] = 1; //The player is now a Fallout Partecipant
111
	SendClientMessage(playerid,Green,"You joined the Fallout Event! Just wait until the event starts!");
112
113
	return 1;
114
}
115
116
117
//=============================== FALLOUT CORE FUNCTIONS =======================
118
119
public FalloutStarting(playerid) //The function from the timer: We do start the event or delete it if there are not enough players
120
{
121
	if(FalloutPlayers < 2) //If the players that joined the event are less than 2 then it triggers this
122
	{
123
	    SendClientMessageToAll(Red,"Sadly there were not enough players to start the Fallout Event :("); //Send the player a message to let him know that the event isn't started cause of missing players
124
	    FalloutPlayers = 0; //Reset the fallout players to 0
125
	    FalloutWaiting = 0; //Reset the fallout Waiting to 0
126
	    FalloutPlayer[playerid] = 0; //Let's reset the player variable
127
128
	} else { //Otherwise the event begins
129
130
	    FalloutWaiting = 0; //Let's avoid more players to join the event by putting this to 0
131
	    FalloutStarted = 1; //Put this to 1 to start the event
132
	    Platforms(); //Let's create the platforms
133
134
	    SetTimer("FallingPlat",1000,1);
135
	    SetTimer("CheckPlayer",1000,1);
136
137
	//We're now cycling into all players to see if they are Players of the Fallout Event and teleport them if they are so.
138
	    for(new i; i < MAX_PLAYERS; i++)
139
	    {
140
		    if(FalloutPlayer[i] == 1)
141
		    {
142
			    SetPlayerPos(i,-1737.18042, 845.63318, 435.79611);
143
			    SetPlayerVirtualWorld(i,5000); //Set all the players in the Virtual World 5000
144
		    }
145
	    }
146
147
	} //Close
148
}
149
150
151
/* Here we do check the player and see if he's still in the platform or he has fallen
152
   this gets checked every 1 second.
153
*/
154
155
public CheckPlayer()
156
{
157
    //If there is only 1 player remaining he's the winner
158
    if(FalloutPlayers == 1) //Checking if there's 1 player remaining
159
    {
160
        for ( new z; z < MAX_PLAYERS; z++)
161
        {
162
            if(FalloutPlayer[z] == 1) //Checking if he's a fallout player
163
            {
164
               SendClientMessage(z,Green,"Congratz, you're the last man standing on the platform, you won! And you got some extra money for it!"); //Let's send him a message
165
               GivePlayerMoney(z,MONEY); //Give him the money for the victory you can change it from the top of the Filterscript
166
               SpawnPlayer(z); //Spawn him
167
               SetPlayerVirtualWorld(z,0); //Reset his virtual world
168
169
               //Reset everything for a new run
170
               FalloutPlayer[z] = 0;
171
               FalloutStarted = 0;
172
               FalloutPlayers = 0;
173
174
	           SetTimer("RegenPlatforms",5000,0); //Let's recreate all the platforms in 20 seconds meanwhile they get destroyed and recreated
175
176
               //Now let's destroy all objects and reset them
177
               for(new o=0;o<sizeof(PlatformObject);o++) //Cycle to get all the objects
178
               {
179
                    if(IsValidObject(PlatformObject[o])) //Then destroy it
180
                    {
181
                        DestroyObject(PlatformObject[o]);
182
                    }
183
               }
184
185
        }
186
    }
187
188
    } else { //Otherwise do the following
189
190
	for(new i; i < MAX_PLAYERS; i++) //Cycle it to get all players id
191
	{
192
        new Float: px, Float: py, Float: pz; //Let's define px, py, pz
193
        GetPlayerPos(i,px,py,pz); //Get everyone position
194
195
        if(IsPlayerConnected(i))
196
        {
197
		    if(FalloutPlayer[i] == 1)
198
		    {
199
	            if(pz < 400) //Let's check who has fallen from the platform
200
	            {
201
202
	            new name[25];
203
	            new string[100];
204
205
	            GetPlayerName(i,name,25);
206
                format(string,sizeof(string),"%s has been eliminated from the Fallout Event, Players Remaining: %d",name, FalloutPlayers);
207
	            SendClientMessageToAll(Red,string);
208
209
	            FalloutPlayers--; //Decrease by 1 the Fallout Players count
210
	            FalloutPlayer[i] = 0; //Reset his variables
211
	            SpawnPlayer(i); //Spawn him
212
	            SetPlayerVirtualWorld(i,0); //Reset his virtual world
213
214
		        }
215
            }
216
	    }
217
	}
218
    }
219
}
220
221
public FallingPlat() //Destroyer of the platforms :^) It destroys a random object from the platform
222
{
223
    if(IsValidObject(PlatformObject[random(PLATFORMS)]))
224
    {
225
        DestroyObject(PlatformObject[random(PLATFORMS)]);
226
    }
227
}
228
229
230
public RegenPlatforms() //Regenerate all the platform for a second run
231
{
232
	 Platforms();
233
}
234
235
//================================= PLATFORMS ==================================
236
237
stock Platforms()
238
{
239
     //Platform objects
240
     PlatformObject[0] = CreateObject(1649, -1740.44092, 845.66888, 428.79611, -90.00000, 0.00000, -90.60000);
241
     PlatformObject[1] = CreateObject(1649, -1737.18042, 845.63318, 428.79611, -90.00000, 0.00000, -90.60000);
242
     PlatformObject[2] = CreateObject(1649, -1740.48816, 841.32959, 428.79611, -90.00000, 0.00000, -90.60000);
243
     PlatformObject[3] = CreateObject(1649, -1737.22803, 841.29327, 428.79611, -90.00000, 0.00000, -90.60000);
244
     PlatformObject[4] = CreateObject(1649, -1743.76868, 841.38629, 428.79611, -90.00000, 0.00000, -90.60000);
245
     PlatformObject[5] = CreateObject(1649, -1743.70081, 845.68628, 428.79611, -90.00000, 0.00000, -90.60000);
246
     PlatformObject[6] = CreateObject(1649, -1743.67358, 850.00671, 428.79611, -90.00000, 0.00000, -90.60000);
247
     PlatformObject[7] = CreateObject(1649, -1740.37341, 849.96948, 428.79611, -90.00000, 0.00000, -90.60000);
248
     PlatformObject[8] = CreateObject(1649, -1737.11243, 849.93317, 428.79611, -90.00000, 0.00000, -90.60000);
249
     PlatformObject[9] = CreateObject(1649, -1733.85181, 849.89679, 428.79611, -90.00000, 0.00000, -90.60000);
250
     PlatformObject[10] = CreateObject(1649, -1733.93787, 845.51715, 428.79611, -90.00000, 0.00000, -90.60000);
251
     PlatformObject[11] = CreateObject(1649, -1733.96399, 841.24866, 428.79611, -90.00000, 0.00000, -90.60000);
252
     PlatformObject[12] = CreateObject(1649, -1730.74585, 841.14685, 428.79611, -90.00000, 0.00000, -90.60000);
253
     PlatformObject[13] = CreateObject(1649, -1730.63953, 845.54553, 428.79611, -90.00000, 0.00000, -90.60000);
254
     PlatformObject[14] = CreateObject(1649, -1730.59717, 849.84680, 428.79611, -90.00000, 0.00000, -90.60000);
255
     PlatformObject[15] = CreateObject(1649, -1743.81250, 837.06433, 428.79611, -90.00000, 0.00000, -90.60000);
256
     PlatformObject[16] = CreateObject(1649, -1740.53174, 837.00037, 428.79611, -90.00000, 0.00000, -90.60000);
257
     PlatformObject[17] = CreateObject(1649, -1737.23096, 836.97479, 428.79611, -90.00000, 0.00000, -90.60000);
258
     PlatformObject[18] = CreateObject(1649, -1734.09045, 836.91614, 428.79611, -90.00000, 0.00000, -90.60000);
259
     PlatformObject[19] = CreateObject(1649, -1730.79199, 836.81165, 428.79611, -90.00000, 0.00000, -90.60000);
260
     PlatformObject[20] = CreateObject(1649, -1747.12341, 837.09131, 428.79611, -90.00000, 0.00000, -90.60000);
261
     PlatformObject[21] = CreateObject(1649, -1747.06689, 841.43445, 428.79611, -90.00000, 0.00000, -90.60000);
262
     PlatformObject[22] = CreateObject(1649, -1747.01526, 845.75745, 428.79611, -90.00000, 0.00000, -90.60000);
263
     PlatformObject[23] = CreateObject(1649, -1746.95740, 849.99884, 428.79611, -90.00000, 0.00000, -90.60000);
264
     PlatformObject[24] = CreateObject(1649, -1730.82996, 832.48993, 428.79611, -90.00000, 0.00000, -90.60000);
265
     PlatformObject[25] = CreateObject(1649, -1734.09753, 832.52924, 428.79611, -90.00000, 0.00000, -90.60000);
266
     PlatformObject[26] = CreateObject(1649, -1737.34229, 832.58447, 428.79611, -90.00000, 0.00000, -90.60000);
267
     PlatformObject[27] = CreateObject(1649, -1740.63342, 832.60742, 428.79611, -90.00000, 0.00000, -90.60000);
268
     PlatformObject[28] = CreateObject(1649, -1743.83813, 832.65540, 428.79611, -90.00000, 0.00000, -90.60000);
269
     PlatformObject[29] = CreateObject(1649, -1747.13342, 832.65881, 428.79611, -90.00000, 0.00000, -90.60000);
270
     PlatformObject[30] = CreateObject(1649, -1750.43262, 832.73029, 428.79611, -90.00000, 0.00000, -90.60000);
271
     PlatformObject[31] = CreateObject(1649, -1750.41174, 837.09027, 428.79611, -90.00000, 0.00000, -90.60000);
272
     PlatformObject[32] = CreateObject(1649, -1750.32996, 841.42944, 428.79611, -90.00000, 0.00000, -90.60000);
273
     PlatformObject[33] = CreateObject(1649, -1750.28845, 845.78906, 428.79611, -90.00000, 0.00000, -90.60000);
274
     PlatformObject[34] = CreateObject(1649, -1750.24622, 850.10901, 428.79611, -90.00000, 0.00000, -90.60000);
275
     PlatformObject[35] = CreateObject(1649, -1730.54651, 854.22644, 428.79611, -90.00000, 0.00000, -90.60000);
276
     PlatformObject[36] = CreateObject(1649, -1733.78687, 854.29486, 428.79611, -90.00000, 0.00000, -90.60000);
277
     PlatformObject[37] = CreateObject(1649, -1737.08728, 854.30304, 428.79611, -90.00000, 0.00000, -90.60000);
278
     PlatformObject[38] = CreateObject(1649, -1740.26367, 854.29370, 428.79611, -90.00000, 0.00000, -90.60000);
279
     PlatformObject[39] = CreateObject(1649, -1743.52954, 854.32788, 428.79611, -90.00000, 0.00000, -90.60000);
280
     PlatformObject[40] = CreateObject(1649, -1746.84167, 854.36127, 428.79611, -90.00000, 0.00000, -90.60000);
281
     PlatformObject[41] = CreateObject(1649, -1750.14624, 854.45685, 428.79611, -90.00000, 0.00000, -90.60000);
282
     PlatformObject[42] = CreateObject(1649, -1753.71252, 832.77502, 428.79611, -90.00000, 0.00000, -90.60000);
283
     PlatformObject[43] = CreateObject(1649, -1753.56506, 837.16809, 428.79611, -90.00000, 0.00000, -90.60000);
284
     PlatformObject[44] = CreateObject(1649, -1753.59863, 841.46564, 428.79611, -90.00000, 0.00000, -90.60000);
285
     PlatformObject[45] = CreateObject(1649, -1753.53516, 845.80377, 428.79611, -90.00000, 0.00000, -90.60000);
286
     PlatformObject[46] = CreateObject(1649, -1753.46643, 850.09772, 428.79611, -90.00000, 0.00000, -90.60000);
287
     PlatformObject[47] = CreateObject(1649, -1753.44092, 854.44940, 428.79611, -90.00000, 0.00000, -90.60000);
288
     PlatformObject[48] = CreateObject(1649, -1730.49390, 858.64581, 428.79611, -90.00000, 0.00000, -90.60000);
289
     PlatformObject[49] = CreateObject(1649, -1733.77344, 858.66431, 428.79611, -90.00000, 0.00000, -90.60000);
290
     PlatformObject[50] = CreateObject(1649, -1737.05298, 858.68329, 428.79611, -90.00000, 0.00000, -90.60000);
291
     PlatformObject[51] = CreateObject(1649, -1740.31287, 858.70197, 428.79611, -90.00000, 0.00000, -90.60000);
292
     PlatformObject[52] = CreateObject(1649, -1743.45178, 858.75903, 428.79611, -90.00000, 0.00000, -90.60000);
293
     PlatformObject[53] = CreateObject(1649, -1746.75024, 858.76831, 428.79611, -90.00000, 0.00000, -90.60000);
294
     PlatformObject[54] = CreateObject(1649, -1750.05212, 858.79803, 428.79611, -90.00000, 0.00000, -90.60000);
295
     PlatformObject[55] = CreateObject(1649, -1753.37537, 858.88470, 428.79611, -90.00000, 0.00000, -90.60000);
296
     PlatformObject[56] = CreateObject(1649, -1756.61438, 858.90198, 428.79611, -90.00000, 0.00000, -90.60000);
297
     PlatformObject[57] = CreateObject(1649, -1756.71008, 854.54590, 428.79611, -90.00000, 0.00000, -90.60000);
298
     PlatformObject[58] = CreateObject(1649, -1756.71973, 850.21057, 428.79611, -90.00000, 0.00000, -90.60000);
299
     PlatformObject[59] = CreateObject(1649, -1756.76819, 845.92291, 428.79611, -90.00000, 0.00000, -90.60000);
300
     PlatformObject[60] = CreateObject(1649, -1756.84387, 841.63708, 428.79611, -90.00000, 0.00000, -90.60000);
301
     PlatformObject[61] = CreateObject(1649, -1756.79749, 837.29614, 428.79611, -90.00000, 0.00000, -90.60000);
302
     PlatformObject[62] = CreateObject(1649, -1756.81995, 832.97583, 428.79611, -90.00000, 0.00000, -90.60000);
303
}