View difference between Paste ID: fYW4kBAR and 7EJ8Q0Qt
SHOW: | | - or go back to the newest paste.
1
#define FILTERSCRIPT
2
3
#include <a_samp>
4
#include <zcmd>
5
#include <YSI\y_ini>
6
//#include <dini>
7
#pragma tabsize 0
8
#define PATH "/MJDM/%s.ini"
9
10
new InDM[MAX_PLAYERS];
11
new Float:x1,Float:y1,Float:z1;
12
new weapdat[13][2];
13
new cn;
14
new skin;
15
//new kills[MAX_PLAYERS];
16
//new deaths[MAX_PLAYERS];
17
new Float:Spawns[][]= {
18
   {-2491.8706,-237.2221,39.3019,295.0867},
19
   {-2482.0308,-283.6506,40.5421,180.7190},
20
   {-2444.0479,-271.4679,35.6237,258.4264},
21
   {-2490.9055,-298.6101,35.8574,172.5956},
22
   {-2525.5771,-313.8878,39.0723,327.6012},
23
   {-2554.4729,-291.1451,25.9594,118.0751}
24
};
25
26
new weaps[][] = {
27
   {22},
28
   {23},
29
   {24},
30
   {25},
31
   {26},
32
   {27},
33
   {28},
34
   {29},
35
   {30},
36
   {31},
37
   {32}
38
};
39
40
enum pInfo
41
{
42
  pKills,
43
  pDeaths
44
}
45
46
new PlayerInfo[MAX_PLAYERS][pInfo];
47
48
forward LoadUser_data(playerid,name[],value[]);
49
public LoadUser_data(playerid,name[],value[])
50
{
51
  INI_Int("Kills", PlayerInfo[playerid][pKills]);
52
  INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
53
  return 1;
54
}
55
56
stock UserPath(playerid)
57
{
58
  new string[128], pName[MAX_PLAYER_NAME];
59
  GetPlayerName(playerid, pName,sizeof(pName));
60
  format(string,sizeof(string),PATH,pName);
61
  return string;
62
}
63
64
#define COLOR_RED 0xFF3300
65
66
public OnFilterScriptInit()
67
{
68
	print("\n--------------------------------------");
69
	print(" DM[Minigame] by DuskXtremeX");
70
	print("--------------------------------------\n");
71
	return 1;
72
}
73
74
public OnFilterScriptExit()
75
{
76
	return 1;
77
}
78
79
80
public OnPlayerRequestClass(playerid, classid)
81
{
82
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
83
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
84
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
85
	return 1;
86
}
87
88
public OnPlayerConnect(playerid)
89
{
90
    //SetVehicleParamsEx(playerid,0,lights,alarm,doors,bonnet,boot,objective);
91
	if(fexist(UserPath(playerid)))
92
	{
93
	 INI_ParseFile(UserPath(playerid), "LoadUser_%s",.bExtra =true, .extra =playerid);
94
	}
95
	else if(!fexist(UserPath(playerid)))
96
	{
97
	  new INI:File = INI_Open(UserPath(playerid));
98
	  INI_SetTag(File,"PlayerInfo");
99
	  INI_WriteInt(File,"Kills",0);
100
	  INI_WriteInt(File,"Deaths",0);
101
	  INI_Close(File);
102-
	
102+
103
104
	InDM[playerid] =0;
105
    return 1;
106
}
107
108
public OnPlayerDisconnect(playerid, reason)
109-
	new INI:File = INI_Open(UserPath(playerid));
109+
110-
	INI_SetTag(File,"PlayerInfo");
110+
111-
	INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
111+
112-
	INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
112+
113-
        INI_Close(File);
113+
114
	}
115
	CheckWin();
116
  	return 1;
117
}
118
119
public OnPlayerSpawn(playerid)
120
{
121
122
	GivePlayerWeapon(playerid,26,300);
123
	GivePlayerWeapon(playerid,32,300);
124
	GivePlayerWeapon(playerid,34,100);
125-
    
125+
126
	GetPlayerSkin(skin);
127
	return 1;
128
}
129
130
public OnPlayerDeath(playerid, killerid, reason)
131
{
132
    if(InDM[playerid] ==1)
133
    {
134
	  InDM[playerid] =0;
135
	  cn--;
136
	  new str[100];
137
	  new pName[MAX_PLAYER_NAME],kName[MAX_PLAYER_NAME];
138
	  GetPlayerName(killerid,kName,MAX_PLAYER_NAME);
139
	  GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
140
	  format(str, sizeof(str),"%s(%d) has been killed by %s(%d) in Deathmatch Minigame",pName,kName);
141
	  SendClientMessageToAll(-1, str);
142
	  new INI:File = INI_Open(UserPath(playerid));
143
      INI_SetTag(File,"PlayerInfo");
144
	  INI_WriteInt(File,"Kills",PlayerInfo[killerid][pKills]);
145-
          PlayerInfo[killerid][pKills]++;
145+
	  INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
146
      new CurKills = PlayerInfo[killerid][pKills];
147
      new CurDies = PlayerInfo[playerid][pDeaths];
148
      PlayerInfo[playerid][pDeaths] = CurDies + 1;
149
	  PlayerInfo[killerid][pKills] = CurKills +1;
150
	  INI_Close(File);
151
	  CheckCrime(playerid, killerid);
152
	  CheckWin();
153
   	}
154-
  
154+
155
}
156
CMD:increase(playerid,params[])
157
{
158
  PlayerInfo[playerid][pDeaths]++;
159
  PlayerInfo[playerid][pKills]++;
160
  printf("Deaths: %d Kills : %d",PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pKills]);
161
  return 1;
162
}
163
COMMAND:deathmatch(playerid, params[])
164
{
165
166
   if(InDM[playerid] ==0)
167
	  {
168
	  	InDM[playerid] =1;
169
	    cn++;
170
        new p;
171
	    for(p=0;p<13;p++)
172
	    {
173
	     GetPlayerWeaponData(playerid,p,weapdat[p][0],weapdat[p][1]);
174
	    }
175
	    ResetPlayerWeapons(playerid);
176
 	    new string[100];
177
	    new pName[MAX_PLAYER_NAME];
178
	    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
179
	    format(string, sizeof(string), "%s(%d) has joined DM",pName,playerid);
180
	    GetPlayerPos(playerid, x1, y1, z1);
181
	    new Random = random(sizeof(Spawns));
182
        SetPlayerPos(playerid, Spawns[Random][0],Spawns[Random][1],Spawns[Random][2]);
183-
	} 
183+
184
        new randomskin = random(50);
185
        SetPlayerSkin(playerid, randomskin);
186
	    new Random1 = random(sizeof(weaps));
187
        GivePlayerWeapon(playerid, weaps[Random1][0], 150);
188
	  }
189
   else if(InDM[playerid] ==1)
190
   {
191
     SendClientMessage(playerid, COLOR_RED,"You're already in DM");
192
   }
193
   return 1;
194-
	 ResetPlayer(playerid);  // Here I added another Funtion to call.
194+
195
196
197-
} 
197+
198
{
199
   if(InDM[playerid] ==0)
200
   {
201
      SendClientMessage(playerid, COLOR_RED, "You're not in DM");
202
   }
203
   else if(InDM[playerid] ==1)
204
   {
205
	 ResetPlayer(playerid);
206
   }
207
   return 1;
208
}
209-
		format(string,sizeof(string),"%s(%d) Has won the DeathMatch[Minigame]",winner,i);
209+
210
public CheckWin()
211-
		ResetPlayer(i);  // The same function
211+
212
  if(cn ==1)
213
  {
214
	for(new i=0;i<MAX_PLAYERS;i++)
215-
 
215+
216
	  if(InDM[i] ==1)
217
	  {
218-
// ADDED THIS JUST TO MAKE IT EASY TO CALL IN "/leavedm" and after winner is announced i.e in 'CheckWin()'
218+
219
		GetPlayerName(i,winner,MAX_PLAYER_NAME);
220
		format(string,sizeof(string),"~g~%s(%d) ~y~Has won the DeathMatch[Minigame]",winner,i);
221
		GivePlayerMoney(i, GetPlayerMoney(i) + 10000);
222
		SetPlayerScore(i, GetPlayerScore(i) + 2);
223
		SendClientMessageToAll(-1, string);
224-
  SetPlayerPos(playerid,x1,y1,z1);
224+
		for(new p=0;p<MAX_PLAYERS;p++) // Here 'p' is to loop trhrough all players
225
		{
226
		  if(InDM[p] ==1)              // If the player is in DM, It shows the message which is stored in the above string 'string'
227
		  {
228
			GameTextForPlayer(p,string,3000,4);
229
		  }
230
		}
231
		ResetPlayerWeapons(i);
232
	    GetPlayerPos(i, x1, y1, z1);
233
	    new Random = random(sizeof(Spawns));
234
        SetPlayerPos(i, Spawns[Random][0],Spawns[Random][1],Spawns[Random][2]);
235
        SetPlayerFacingAngle(i, Spawns[Random][3]);
236
        new randomskin = random(50);
237
        SetPlayerSkin(i, randomskin);
238
	    new Random1 = random(sizeof(weaps));
239
        GivePlayerWeapon(i, weaps[Random1][0], 150);
240
		break;
241
	  }
242
    }
243
244
  }
245
  return 1;
246
}
247
248
forward ResetPlayer(playerid);
249
public ResetPlayer(playerid)
250
{
251
  InDM[playerid] =0;
252
  cn--;
253
  //SetPlayerPos(playerid,x1,y1,z1);
254
  SetPlayerSkin(playerid,skin);
255
  ResetPlayerWeapons(playerid);
256
  for(new p=0;p<13;p++)
257
  {
258
    GivePlayerWeapon(playerid,weapdat[p][0],weapdat[p][1]);
259
  }
260
  return 1;
261
}
262
263
forward CheckCrime(playerid, killerid);
264
public CheckCrime(playerid, killerid)
265
{
266
      new INI:File = INI_Open(UserPath(playerid));
267
      INI_SetTag(File,"PlayerInfo");
268
	  INI_WriteInt(File,"Kills",PlayerInfo[killerid][pKills]);
269
	  INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
270
      INI_Close(File);
271
      PlayerInfo[killerid][pKills]++;
272
	  PlayerInfo[playerid][pDeaths]++;
273
}