SHOW:
|
|
- or go back to the newest paste.
1 | /*=============================================================== | |
2 | =============TEMP BAN SYSTEM V 3.0============================= | |
3 | ===============MADE BY BROZEUS================================= | |
4 | CREDITS------> | |
5 | Zeus [ thats me] -- For scripting | |
6 | YSI -- For sscanf2 and YSI/ini | |
7 | Zeex -- For Zcmd | |
8 | Jochemd -- For TimeStampToDate.inc | |
9 | Shacky -- for fcreate and fdelete stocks | |
10 | ||
11 | Do not remove creits or redistribute*/ | |
12 | #include <a_samp> | |
13 | #include <fixes> | |
14 | #include <YSI\y_ini> | |
15 | #include <zcmd> | |
16 | #include <sscanf2> | |
17 | #include <TimeStampToDate> | |
18 | ||
19 | ||
20 | #define BANPATH "/Bans/%s.ini" | |
21 | #define IPPATH "/IP/%s.ini" | |
22 | ||
23 | #define GMT_H 0 // Enter the value of the gmt hour u want otherwise keep it zero | |
24 | #define GMT_M 0 // Enter the value of the gmt mintues u want otherwise keep it zero | |
25 | ||
26 | new ln[MAX_PLAYERS]=0,revseen[][MAX_PLAYERS]; | |
27 | ||
28 | #if defined FILTERSCRIPT | |
29 | public OnFilterScriptInit() | |
30 | { | |
31 | if(!fexist("unban_log.txt")) | |
32 | { | |
33 | fcreate("unban_log.txt"); | |
34 | print("unban_log.txt didnt existed so it was created."); | |
35 | } | |
36 | if(!fexist("BannedPlayers.txt")) | |
37 | { | |
38 | fcreate("BannedPlayers.txt"); | |
39 | print("BannedPlayers.txt didnt existed so it was created."); | |
40 | } | |
41 | return 1; | |
42 | } | |
43 | #else | |
44 | public OnGameModeInit() | |
45 | { | |
46 | if(!fexist("unban_log.txt")) | |
47 | { | |
48 | fcreate("unban_log.txt"); | |
49 | print("unban_log.txt didnt existed so it was created."); | |
50 | } | |
51 | if(!fexist("BannedPlayers.txt")) | |
52 | { | |
53 | fcreate("BannedPlayers.txt"); | |
54 | print("BannedPlayers.txt didnt existed so it was created."); | |
55 | } | |
56 | ||
57 | return 1; | |
58 | } | |
59 | #endif | |
60 | ||
61 | enum pInfo | |
62 | { | |
63 | pBanexp, | |
64 | pBanres[100], | |
65 | pBanPerm, | |
66 | pBanAdmin[20], | |
67 | pBanIPP[20] | |
68 | } | |
69 | new PlayerInfo[MAX_PLAYERS][pInfo]; | |
70 | new pp[50]; | |
71 | ||
72 | forward fcreate(filename[]); | |
73 | public fcreate(filename[]) | |
74 | { | |
75 | if (fexist(filename)){return false;} | |
76 | new File:fhandle = fopen(filename,io_write); | |
77 | fclose(fhandle); | |
78 | return true; | |
79 | } | |
80 | ||
81 | forward LoadBanUser_data(playerid,name[],value[]); | |
82 | public LoadBanUser_data(playerid,name[],value[]) | |
83 | { | |
84 | INI_Int("Banexp",PlayerInfo[playerid][pBanexp]); | |
85 | INI_Int("BanPerm",PlayerInfo[playerid][pBanPerm]); | |
86 | INI_String("BanAdmin", PlayerInfo[playerid][pBanAdmin], 20); | |
87 | INI_String("Reason",PlayerInfo[playerid][pBanres],100); | |
88 | return 1; | |
89 | } | |
90 | ||
91 | forward LoadIPUser_data(playerid,name[],value[]); | |
92 | public LoadIPUser_data(playerid,name[],value[]) | |
93 | {INI_Int("Banexp",PlayerInfo[playerid][pBanexp]); | |
94 | INI_Int("BanPerm",PlayerInfo[playerid][pBanPerm]); | |
95 | INI_String("BanPlayer", PlayerInfo[playerid][pBanIPP], 20); | |
96 | INI_String("BanAdmin", PlayerInfo[playerid][pBanAdmin], 20); | |
97 | INI_String("Reason",PlayerInfo[playerid][pBanres],100); | |
98 | return 1; | |
99 | } | |
100 | ||
101 | forward LoadIP_data(playerid,name[],value[]); | |
102 | public LoadIP_data(playerid,name[],value[]) | |
103 | {INI_String("IP",pp,50); | |
104 | return 1; | |
105 | } | |
106 | ||
107 | stock UserBanPath(playerid) | |
108 | { | |
109 | new string[128],playername[MAX_PLAYER_NAME]; | |
110 | GetPlayerName(playerid,playername,sizeof(playername)); | |
111 | format(string,sizeof(string),BANPATH,playername); | |
112 | return string; | |
113 | } | |
114 | stock UserIPPath(playerid) | |
115 | { | |
116 | new string[128],ip[50]; | |
117 | GetPlayerIp(playerid,ip,sizeof(ip)); | |
118 | format(string,sizeof(string),IPPATH,ip); | |
119 | return string; | |
120 | } | |
121 | ||
122 | stock Showinfo(playerid,targetname[]) | |
123 | { | |
124 | new path[150],ss[500]; | |
125 | format(path,sizeof(path),"Bans/%s.ini",targetname); | |
126 | INI_ParseFile(path, "LoadBanUser_%s", .bExtra = true, .extra = playerid); | |
127 | if(PlayerInfo[playerid][pBanPerm]==1) | |
128 | format(ss,sizeof(ss),"{00FFFF}Banning Admin:\t\t{ff0000}%s\n{00FFFF}Ban Reason:\t\t{ff0000}%s\n{00FFFF}Ban Type:\t\t{ff0000}Permanent.\n\n{FFFF00}Click on Remove Ban button to un-ban the player.",PlayerInfo[playerid][pBanAdmin],PlayerInfo[playerid][pBanres]); | |
129 | else | |
130 | { | |
131 | new d,m,y,h,mi,s; | |
132 | TimestampToDate(PlayerInfo[playerid][pBanexp],y,m,d,h,mi,s,GMT_H,GMT_M); | |
133 | format(ss,sizeof(ss),"{00FFFF}Banning Admin:\t\t{ff0000}%s\n{00FFFF}Ban Reason:\t\t{ff0000}%s\n{00FFFF}Expire Time:\t\t{ff0000}%i-%i\n{00FFFF}Expire Date:\t\t{ff0000}%i-%i-%i\n\n{FFFF00}Time is according to %i GMT\nDate Format: dd-mm-yyyy\nClick on Remove Ban button to un-ban the player.",PlayerInfo[playerid][pBanAdmin],PlayerInfo[playerid][pBanres],h,mi,d,m,y,GMT_H); | |
134 | } | |
135 | format(revseen[playerid],MAX_PLAYER_NAME,"%s",targetname); | |
136 | ShowPlayerDialog(playerid, 113, DIALOG_STYLE_MSGBOX,targetname,ss, "Remove Ban", "Cancel"); | |
137 | return 1; | |
138 | } | |
139 | ||
140 | stock fdeleteline(filename[], line[]) | |
141 | { | |
142 | if(fexist(filename)){ | |
143 | new temp[256]; | |
144 | new File:fhandle = fopen(filename,io_read); | |
145 | fread(fhandle,temp,sizeof(temp),false); | |
146 | if(strfind(temp,line,true)==-1){return 0;} | |
147 | else{ | |
148 | fclose(fhandle); | |
149 | fremove(filename); | |
150 | for(new i=0;i<strlen(temp);i++){ | |
151 | new templine[256]; | |
152 | strmid(templine,temp,i,i+strlen(line)); | |
153 | if(strcmp(templine,line,true)){ | |
154 | strdel(temp,i,i+strlen(line)); | |
155 | fcreate(filename); | |
156 | fhandle = fopen(filename,io_write); | |
157 | fwrite(fhandle,temp); | |
158 | fclose(fhandle); | |
159 | return 1; | |
160 | } | |
161 | } | |
162 | } | |
163 | } | |
164 | return 0; | |
165 | } | |
166 | ||
167 | ||
168 | public OnPlayerConnect(playerid) | |
169 | { | |
170 | ||
171 | if(fexist(UserBanPath(playerid))) | |
172 | { | |
173 | INI_ParseFile(UserBanPath(playerid), "LoadBanUser_%s", .bExtra = true, .extra = playerid); | |
174 | ||
175 | if(PlayerInfo[playerid][pBanPerm]==1) | |
176 | {new reso[256]; | |
177 | SendClientMessage(playerid,-1,"{85BB65}You are permanently Banned from this server by Administration"); | |
178 | format(reso,sizeof(reso),"{85BB65}Reason: {f0f000}%s",PlayerInfo[playerid][pBanres]); | |
179 | SendClientMessage(playerid,-1,reso); | |
180 | format(reso,sizeof(reso),"{85BB65}Banning Admin: {f0f000}%s",PlayerInfo[playerid][pBanAdmin]); | |
181 | SendClientMessage(playerid,-1,reso); | |
182 | SetTimerEx("KickPlayer",100,false,"i",playerid); | |
183 | } | |
184 | else | |
185 | { | |
186 | if(gettime() > PlayerInfo[playerid][pBanexp]) | |
187 | { fremove(UserBanPath(playerid)); | |
188 | fremove(UserIPPath(playerid)); | |
189 | SendClientMessage(playerid,-1,"{00cc00}You have been unbanned!!!!"); | |
190 | } | |
191 | else | |
192 | { | |
193 | new d,m,y,h,mi,s; | |
194 | TimestampToDate(PlayerInfo[playerid][pBanexp],y,m,d,h,mi,s,GMT_H,GMT_M); | |
195 | new str[540]; | |
196 | format(str,sizeof(str),"{85BB65}This Account Has Been Banned By The Adminstration Until {f0f000}%i-%i-%i[Date format : dd/mm/yyyy]",d,m,y); | |
197 | SendClientMessage(playerid,-1,str); | |
198 | format(str,sizeof(str),"{85BB65}Expires on[TIME] -- {f0f000}%i-%i[Time Format: 24 Hour Clock]",h,mi); | |
199 | SendClientMessage(playerid, -1, str); | |
200 | format(str,sizeof(str),"{85BB65}Reason -- {f0f000}%s",PlayerInfo[playerid][pBanres]); | |
201 | SendClientMessage(playerid, -1, str); | |
202 | format(str,sizeof(str),"{85BB65}Banning Admin -- {f0f000}%s",PlayerInfo[playerid][pBanAdmin]); | |
203 | SendClientMessage(playerid, -1, str); | |
204 | SetTimerEx("KickPlayer",100,false,"i",playerid); | |
205 | }}} | |
206 | ||
207 | else if(fexist(UserIPPath(playerid))) | |
208 | { | |
209 | INI_ParseFile(UserIPPath(playerid), "LoadIPUser_%s", .bExtra = true, .extra = playerid); | |
210 | if(PlayerInfo[playerid][pBanPerm]==1) | |
211 | { new reso[256]; | |
212 | SendClientMessage(playerid,-1,"{85BB65}This IP is permanently Banned from this server by Administration"); | |
213 | format(reso,sizeof(reso),"{85BB65}Originally Banned Player: {f0f000}%s",PlayerInfo[playerid][pBanIPP]); | |
214 | SendClientMessage(playerid,-1,reso); | |
215 | format(reso,sizeof(reso),"{85BB65}Reason: {f0f000}%s",PlayerInfo[playerid][pBanres]); | |
216 | SendClientMessage(playerid,-1,reso); | |
217 | format(reso,sizeof(reso),"{85BB65}Banning Admin: {f0f000}%s",PlayerInfo[playerid][pBanAdmin]); | |
218 | SendClientMessage(playerid,-1,reso); | |
219 | SetTimerEx("KickPlayer",100,false,"i",playerid); | |
220 | } | |
221 | else { | |
222 | if(gettime() > PlayerInfo[playerid][pBanexp]) | |
223 | { new pat[100]; | |
224 | fremove(UserIPPath(playerid)); | |
225 | format(pat,sizeof(pat),"Bans/%s.ini",PlayerInfo[playerid][pBanIPP]); | |
226 | fremove(pat); | |
227 | SendClientMessage(playerid,-1,"{00cc00}This IP was banned but as now the expire time has passed this IP has been unbanned."); | |
228 | } | |
229 | else | |
230 | { | |
231 | new d,m,y,h,mi,s; | |
232 | TimestampToDate(PlayerInfo[playerid][pBanexp],y,m,d,h,mi,s,GMT_H,GMT_M); | |
233 | new str[540]; | |
234 | format(str,sizeof(str),"{85BB65}This IP Has Been Banned By The Adminstration Until {f0f000}%i-%i-%i[Date format : dd/mm/yyyy]",d,m,y); | |
235 | SendClientMessage(playerid,-1,str); | |
236 | format(str,sizeof(str),"{85BB65}Expires on[TIME] -- {f0f000}%i-%i[Time Format: 24 Hour Clock]",h,mi); | |
237 | SendClientMessage(playerid, -1, str); | |
238 | format(str,sizeof(str),"{85BB65}Originally Banned Player -- {f0f000}%s",PlayerInfo[playerid][pBanIPP]); | |
239 | SendClientMessage(playerid, -1, str); | |
240 | format(str,sizeof(str),"{85BB65}Reason -- {f0f000}%s",PlayerInfo[playerid][pBanres]); | |
241 | SendClientMessage(playerid, -1, str); | |
242 | format(str,sizeof(str),"{85BB65}Banning Admin -- {f0f000}%s",PlayerInfo[playerid][pBanAdmin]); | |
243 | SendClientMessage(playerid, -1, str); | |
244 | SetTimerEx("KickPlayer",100,false,"i",playerid); | |
245 | }}} | |
246 | ||
247 | return 1;} | |
248 | ||
249 | public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) | |
250 | { | |
251 | if(dialogid==110 && response) | |
252 | { | |
253 | ||
254 | Showinfo(playerid,inputtext); | |
255 | ln[playerid]=0; | |
256 | } | |
257 | if(dialogid==111) | |
258 | { | |
259 | if(response)Showinfo(playerid,inputtext); | |
260 | else | |
261 | { | |
262 | new read[200],ss[1008],op[1000]; | |
263 | format(op,sizeof(op),""); | |
264 | new File:log=fopen("BannedPlayers.txt",io_read); | |
265 | fseek(log,ln[playerid],seek_start); | |
266 | while(fread(log,read)) | |
267 | { | |
268 | strcat(read,"\n",200); | |
269 | strcat(op,read,1000); | |
270 | } | |
271 | fclose(log); | |
272 | format(ss,sizeof(ss),"{9ACD32}%s",op); | |
273 | ShowPlayerDialog(playerid, 112, DIALOG_STYLE_LIST, "{00FFFF}Showing Currently Banned Players[Page 2]",ss, "Select", "Cancel"); | |
274 | ln[playerid]=0; | |
275 | }} | |
276 | if(dialogid==112 && response)Showinfo(playerid,inputtext); | |
277 | if(dialogid==113 && response) | |
278 | { | |
279 | new pat[MAX_PLAYER_NAME+10],pati[MAX_PLAYER_NAME+10],ppf[100],adname[MAX_PLAYER_NAME]; | |
280 | ||
281 | format(pat,sizeof(pat),"Bans/%s.ini",revseen[playerid]); | |
282 | ||
283 | INI_ParseFile(pat, "LoadIP_%s", .bExtra = true, .extra = playerid); | |
284 | format(pati,sizeof(pat),"IP/%s.ini",pp); | |
285 | fremove(pati); | |
286 | format(pat,sizeof(pat),"Bans/%s.ini",revseen[playerid]); | |
287 | fremove(pat); | |
288 | format(ppf,sizeof(ppf),"The player %s has been un-banned.",revseen[playerid]); | |
289 | SendClientMessage(playerid,0x00FF00FF,ppf); | |
290 | GetPlayerName(playerid,adname,sizeof(adname)); | |
291 | format(pat,sizeof(pat),"%s has been unbanned by %s",revseen[playerid],adname); | |
292 | new File:log=fopen("unban_log.txt",io_append); | |
293 | fwrite(log, pat); | |
294 | fwrite(log,"\r\n"); | |
295 | fclose(log); | |
296 | fdeleteline("BannedPlayers.txt", revseen[playerid]); | |
297 | } | |
298 | ||
299 | ||
300 | return 0; | |
301 | } | |
302 | ||
303 | ||
304 | ||
305 | ||
306 | ||
307 | forward KickPlayer(playerid); | |
308 | public KickPlayer(playerid) | |
309 | { | |
310 | Kick(playerid); | |
311 | return 1; | |
312 | } | |
313 | ||
314 | /*=====================================COMMANDS======================================*/ | |
315 | CMD:ban(playerid,parmas[]) | |
316 | { | |
317 | if(IsPlayerAdmin(playerid)){ | |
318 | new tid,du,res[150],ppp[50]; | |
319 | if(sscanf(parmas,"uis",tid,du,res) || isnull(parmas))return SendClientMessage(playerid,-1,"{ff0000}Wrong Usage || Correct Usage : /ban id duration(In Days) Reason"); | |
320 | if(!IsPlayerConnected(tid))return SendClientMessage(playerid,-1,"{ff6666}The Player you requested is not connected."); | |
321 | new banmt[300],banma[300],adminname[MAX_PLAYER_NAME],targetn[MAX_PLAYER_NAME]; | |
322 | GetPlayerName(playerid,adminname,sizeof(adminname)); | |
323 | new exp=gettime()+(60*60*24*du); | |
324 | GetPlayerIp(tid,ppp,sizeof(ppp)); | |
325 | new INI:File = INI_Open(UserBanPath(tid)); | |
326 | INI_SetTag(File,"data"); | |
327 | INI_WriteInt(File,"Banexp",exp); | |
328 | INI_WriteInt(File,"BanPerm",0); | |
329 | INI_WriteString(File,"BanAdmin",adminname); | |
330 | INI_WriteString(File,"Reason",res); | |
331 | INI_WriteString(File,"IP",ppp); | |
332 | INI_Close(File); | |
333 | GetPlayerName(tid,targetn,sizeof(targetn)); | |
334 | new INI:iFile = INI_Open(UserIPPath(tid)); | |
335 | INI_SetTag(iFile,"data"); | |
336 | INI_WriteInt(iFile,"Banexp",exp); | |
337 | INI_WriteInt(iFile,"BanPerm",0); | |
338 | INI_WriteString(iFile,"BanPlayer",targetn); | |
339 | INI_WriteString(iFile,"BanAdmin",adminname); | |
340 | INI_WriteString(iFile,"Reason",res); | |
341 | INI_Close(iFile); | |
342 | new File:logg=fopen("BannedPlayers.txt",io_append); | |
343 | fwrite(logg, targetn); | |
344 | fwrite(logg,"\n"); | |
345 | fclose(logg); | |
346 | format(banmt,sizeof(banmt),"{ff0000}Admin %s has banned you for %i days due to %s",adminname,du,res); | |
347 | format(banma,sizeof(banma),"{ff0000}Admin %s has banned %s for %i days due to %s",adminname,targetn,du,res); | |
348 | SendClientMessage(tid,-1,banmt); | |
349 | SendClientMessageToAll(-1,banma); | |
350 | SetTimerEx("KickPlayer",100,false,"i",tid); | |
351 | }else SendClientMessage(playerid,-1,"{ff0000}You are not authorized to use this command."); | |
352 | return 1;} | |
353 | /*===================================================================================================*/ | |
354 | CMD:removeban(playerid,parmas[]){ | |
355 | if(IsPlayerAdmin(playerid)){ | |
356 | new rename[MAX_PLAYER_NAME],pat[MAX_PLAYER_NAME+10],pati[MAX_PLAYER_NAME+10],ppf[100],adname[MAX_PLAYER_NAME]; | |
357 | if(sscanf(parmas,"s",rename) || isnull(parmas))return SendClientMessage(playerid, -1, "{FF0000}Wrong Usage || Usage : /removeban PlayerName"); | |
358 | format(pat,sizeof(pat),"Bans/%s.ini",rename); | |
359 | if(!fexist(pat)) | |
360 | { | |
361 | format(ppf,sizeof(ppf),"The user cannot be unbanned because there is user named as %s banned.",rename); | |
362 | SendClientMessage(playerid,-1,ppf); | |
363 | return 1; | |
364 | } | |
365 | INI_ParseFile(pat, "LoadIP_%s", .bExtra = true, .extra = playerid); | |
366 | format(pati,sizeof(pat),"IP/%s.ini",pp); | |
367 | fremove(pati); | |
368 | format(pat,sizeof(pat),"Bans/%s.ini",rename); | |
369 | fremove(pat); | |
370 | format(ppf,sizeof(ppf),"The player %s has been un-banned.",rename); | |
371 | SendClientMessage(playerid,0x00FF00FF,ppf); | |
372 | GetPlayerName(playerid,adname,sizeof(adname)); | |
373 | format(pat,sizeof(pat),"%s has been unbanned by %s",rename,adname); | |
374 | new File:log=fopen("unban_log.txt",io_append); | |
375 | fwrite(log, pat); | |
376 | fwrite(log,"\r\n"); | |
377 | fclose(log); | |
378 | fdeleteline("BannedPlayers.txt", rename); | |
379 | } | |
380 | else SendClientMessage(playerid,-1,"{ff0000}You are not authorized to use this command"); | |
381 | return 1;} | |
382 | /*====================================================================================================*/ | |
383 | CMD:banperm(playerid,parmas[]) | |
384 | { | |
385 | if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"{ff0000}You are not authorized to use this command."); | |
386 | new tid,res[90],ppp[50]; | |
387 | if(sscanf(parmas,"us",tid,res) || isnull(parmas))return SendClientMessage(playerid,-1,"{ff0000}Wrong Usage || Correct Usage : /banperm PlayerID Reason"); | |
388 | if(!IsPlayerConnected(tid))return SendClientMessage(playerid,-1,"{ff6666}The Player you requested is not connected."); | |
389 | new adminname[MAX_PLAYER_NAME]; | |
390 | GetPlayerName(playerid,adminname,sizeof(adminname)); | |
391 | GetPlayerIp(tid,ppp,sizeof(ppp)); | |
392 | new INI:File = INI_Open(UserBanPath(tid)); | |
393 | INI_SetTag(File,"data"); | |
394 | INI_WriteInt(File,"Banexp",0); | |
395 | INI_WriteInt(File,"BanPerm",1); | |
396 | INI_WriteString(File,"BanAdmin",adminname); | |
397 | INI_WriteString(File,"Reason",res); | |
398 | INI_WriteString(File,"IP",ppp); | |
399 | INI_Close(File); | |
400 | new banmt[300],banma[300],targetn[MAX_PLAYER_NAME]; | |
401 | GetPlayerName(tid,targetn,sizeof(targetn)); | |
402 | new INI:iFile = INI_Open(UserIPPath(tid)); | |
403 | INI_SetTag(iFile,"data"); | |
404 | INI_WriteInt(iFile,"Banexp",0); | |
405 | INI_WriteInt(iFile,"BanPerm",1); | |
406 | INI_WriteString(iFile,"BanPlayer",targetn); | |
407 | INI_WriteString(iFile,"BanAdmin",adminname); | |
408 | INI_WriteString(iFile,"Reason",res); | |
409 | INI_Close(iFile); | |
410 | new File:logg=fopen("BannedPlayers.txt",io_append); | |
411 | fwrite(logg, targetn); | |
412 | fwrite(logg,"\n"); | |
413 | fclose(logg); | |
414 | format(banmt,sizeof(banmt),"{ff0000}Admin %s has banned you for permanently due to %s",adminname,res); | |
415 | format(banma,sizeof(banma),"{ff0000}Admin %s has banned %s permanenetly due to %s",adminname,targetn,res); | |
416 | SendClientMessage(tid,-1,banmt); | |
417 | SendClientMessageToAll(-1,banma); | |
418 | SetTimerEx("KickPlayer",100,false,"i",tid); | |
419 | return 1;} | |
420 | /*=======================================================================================================*/ | |
421 | CMD:banm(playerid,parmas[]) | |
422 | { | |
423 | if(IsPlayerAdmin(playerid)){ | |
424 | new tid,h,m,res[150],ppp[50]; | |
425 | if(sscanf(parmas,"uiis",tid,h,m,res) || isnull(parmas))return SendClientMessage(playerid,-1,"{ff0000}Wrong Usage || Correct Usage : /banm ID Hours Minutes Reason"); | |
426 | if(!IsPlayerConnected(tid))return SendClientMessage(playerid,-1,"{ff6666}The Player you requested is not connected."); | |
427 | new banmt[300],banma[300],adminname[MAX_PLAYER_NAME],targetn[MAX_PLAYER_NAME]; | |
428 | GetPlayerName(playerid,adminname,sizeof(adminname)); | |
429 | new exp=gettime()+(60*m)+(60*60*h); | |
430 | GetPlayerIp(tid,ppp,sizeof(ppp)); | |
431 | new INI:File = INI_Open(UserBanPath(tid)); | |
432 | INI_SetTag(File,"data"); | |
433 | INI_WriteInt(File,"Banexp",exp); | |
434 | INI_WriteInt(File,"BanPerm",0); | |
435 | INI_WriteString(File,"BanAdmin",adminname); | |
436 | INI_WriteString(File,"Reason",res); | |
437 | INI_WriteString(File,"IP",ppp); | |
438 | INI_Close(File); | |
439 | GetPlayerName(tid,targetn,sizeof(targetn)); | |
440 | new INI:iFile = INI_Open(UserIPPath(tid)); | |
441 | INI_SetTag(iFile,"data"); | |
442 | INI_WriteInt(iFile,"Banexp",exp); | |
443 | INI_WriteInt(iFile,"BanPerm",0); | |
444 | INI_WriteString(iFile,"BanPlayer",targetn); | |
445 | INI_WriteString(iFile,"BanAdmin",adminname); | |
446 | INI_WriteString(iFile,"Reason",res); | |
447 | INI_Close(iFile); | |
448 | new File:logg=fopen("BannedPlayers.txt",io_append); | |
449 | fwrite(logg, targetn); | |
450 | fwrite(logg,"\n"); | |
451 | fclose(logg); | |
452 | format(banmt,sizeof(banmt),"{ff0000}Admin %s has banned you for %i hours %i minutes due to %s",adminname,h,m,res); | |
453 | format(banma,sizeof(banma),"{ff0000}Admin %s has banned %s for %i hours %i minutes due to %s",adminname,targetn,h,m,res); | |
454 | SendClientMessage(tid,-1,banmt); | |
455 | SendClientMessageToAll(-1,banma); | |
456 | SetTimerEx("KickPlayer",100,false,"i",tid); | |
457 | }else SendClientMessage(playerid,-1,"{ff0000}You are not authorized to use this command."); | |
458 | return 1;} | |
459 | /*=======================================================================================================*/ | |
460 | CMD:log(playerid,parmas[]) | |
461 | { | |
462 | if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"{ff0000}You are not authorized to use this command."); | |
463 | new read[500],ss[1008],op[1000]; | |
464 | format(op,sizeof(op),""); | |
465 | new File:log=fopen("unban_log.txt",io_read); | |
466 | while(fread(log,read)) | |
467 | { | |
468 | strcat(read,"\n",500); | |
469 | strcat(op,read,1000); | |
470 | } | |
471 | fclose(log); | |
472 | format(ss,sizeof(ss),"{9ACD32}%s",op); | |
473 | ShowPlayerDialog(playerid, 110, DIALOG_STYLE_MSGBOX, "{00BFFF}Showing Un-Ban Log",ss, "Cool", ""); | |
474 | return 1; | |
475 | } | |
476 | /*=========================================================================================================*/ | |
477 | CMD:showbans(playerid,parmas[]) | |
478 | { | |
479 | if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"{ff0000}You are not authorized to use this command."); | |
480 | new read[200],ss[1008],op[1000],bool:NextDialog=false; | |
481 | format(op,sizeof(op),""); | |
482 | new File:log=fopen("BannedPlayers.txt",io_read); | |
483 | while(fread(log,read)) | |
484 | { | |
485 | strcat(read,"\n",200); | |
486 | strcat(op,read,1000); | |
487 | ln[playerid]++; | |
488 | if(ln[playerid]==110)//this specifies the maximum no. of bans that are to be shown in 1 dialog box | |
489 | { | |
490 | NextDialog=true; | |
491 | break; | |
492 | } | |
493 | } | |
494 | fclose(log); | |
495 | if(strlen(op)<=3)return SendClientMessage(playerid,-1,"{ff0000}No players currently banned."); | |
496 | format(ss,sizeof(ss),"{9ACD32}%s",op); | |
497 | if(NextDialog==false)ShowPlayerDialog(playerid, 110, DIALOG_STYLE_LIST, "{00FFFF}Showing Currently Banned Players",ss, "Select", "Cancel"); | |
498 | else ShowPlayerDialog(playerid, 111, DIALOG_STYLE_LIST, "{00FFFF}Showing Currently Banned Players",ss, "Select", "Next Page"); | |
499 | return 1; | |
500 | } | |
501 | /*================================================================================================================*/ | |
502 | CMD:showbaninfo(playerid,parmas[]) | |
503 | { | |
504 | if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"{ff0000}You are not authorized to use this command."); | |
505 | new tid[MAX_PLAYER_NAME]; | |
506 | if(sscanf(parmas,"s",tid))return SendClientMessage(playerid,-1,"{ff0000}Correct Usage: /showbaninfo PLAYERNAME\nNOTE:The PLAYERNAME should be exact name of player."); | |
507 | new path[150]; | |
508 | format(path,sizeof(path),"Bans/%s.ini",tid); | |
509 | if(!fexist(path))return SendClientMessage(playerid,-1,"{ff0000}The player you requested is not in ban databse please use /showbans to view currently banned players."); | |
510 | Showinfo(playerid,tid); | |
511 | return 1; | |
512 | } |