View difference between Paste ID: fT3DDyee and rj2Ap7Fi
SHOW: | | - or go back to the newest paste.
1
//-------------------------------------------------------------------------------
2
#include <a_samp>
3
#include <dini>
4
#include <dudb>
5
6
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
7
8
9
#define BEZOWY 0xFFFFADAA
10
#define BIALY 0xFFFFFFAA
11
#define BLEKITNY 0x33CCFFAA
12
#define BORDOWY 0x99001FAA
13
#define BRAZOWY 0x997A00AA
14
#define CIEMNY_ZIELONY 0x336633AA
15
#define CZARNY 0x000000AA
16
#define CZERWONY 0xFF0000AA
17
#define FIOLETOWY 0x9E3DFFAA
18
#define NIEBIESKI 0x0000FFAA
19
#define POMARANCZOWY 0xFF8000AA
20
#define ROZOWY 0xFF66CCAA
21
#define SZARY 0xB0B0B0AA
22
#define ZIELONY 0x00CC00AA
23
#define ZOLTY 0xFFFF00AA
24
25
#define STATYSTYKI "totalstat.ini"
26
27
#pragma tabsize -99999
28
29
new zalogowany[MAX_PLAYERS];
30
new zlehaslo[MAX_PLAYERS];
31
new logintimeout[MAX_PLAYERS];
32
new wylogowany[MAX_PLAYERS];
33
34
//-------------------------------------------------------------------------------
35
36
public OnPlayerConnect(playerid)
37
{
38
  
39
	 if(dini_Exists(udb_encode(Player(playerid))))
40
  {
41
		  SendClientMessage(playerid, ZOLTY, "* Twój nick jest zarejestrowany! Wpisz: /login [twojehasło] aby się zalogować.");
42
		  SendClientMessage(playerid, ZOLTY, "* Jeśli się nie zalogujesz w ciągu 20 sek. zostaniesz wyrzucony z servera");
43
		  SendClientMessage(playerid, ZOLTY, "* Jeśli nie pamiętasz hasła lub nie rejestrowałeś się tu jeszcze poprostu zmień coś w swoim nicku!");
44
		  logintimeout[playerid] = SetTimerEx("LoginTimeout", 20000, 0, "d", playerid);
45
		
46
    GivePlayerMoney(playerid, strval(dini_Get(udb_encode(Player(playerid)),"kasa")));
47
     SetPlayerScore(playerid, strval(dini_Get(udb_encode(Player(playerid)),"punkty")));
48
     zalogowany[playerid] = 0;
49
     wylogowany[playerid] = 0;
50
  } else {
51
          SendClientMessage(playerid, ZOLTY, "* Witamy, możesz się zarejestrować komendą: /register [hasło]");
52
          zalogowany[playerid] = 1;
53
          wylogowany[playerid] = 1;
54
         }
55
         
56
  return 1;
57
}
58
59
//-------------------------------------------------------------------------------
60
61
forward LoginTimeout(playerid);
62
public LoginTimeout(playerid)
63
{
64
 if (zalogowany[playerid] == 0 && GetPlayerState(playerid) != PLAYER_STATE_NONE)
65
 { 		
66
  Kick(playerid);
67
  new string[256];
68
  format(string, sizeof(string), "* %s (id: %d) został wyrzucony z serwera. Powód: Czas zalogowania się skończył!", Player(playerid), playerid);
69
  SendClientMessageToAll(SZARY, string);
70
 }
71
}
72
73
//-------------------------------------------------------------------------------
74
75
public OnPlayerDisconnect(playerid, reason)
76
{
77
  if (zalogowany[playerid] == 1)
78
  {
79
   Zapisz(playerid);
80
  }
81
  
82
  KillTimer(logintimeout[playerid]);
83
}
84
85
//-------------------------------------------------------------------------------
86
87
stock Zapisz(playerid)
88
{
89
new string[256];
90
new Float:x, Float:y, Float:z;
91
new Float:ang;
92
93
 if (dini_Exists(udb_encode(Player(playerid))))
94
 {
95
		  dini_IntSet(udb_encode(Player(playerid)),"kasa",GetPlayerMoney(playerid));
96
		  dini_IntSet(udb_encode(Player(playerid)),"punkty",GetPlayerScore(playerid));
97
98
		  if (GetPlayerState(playerid) != PLAYER_STATE_NONE && GetPlayerState(playerid) != PLAYER_STATE_WASTED)
99
    {
100
	   	GetPlayerPos(playerid,x,y,z);
101
	   	GetPlayerFacingAngle(playerid,ang);
102
	   	dini_FloatSet(udb_encode(Player(playerid)),"x",x);
103
     dini_FloatSet(udb_encode(Player(playerid)),"y",y);
104
     dini_FloatSet(udb_encode(Player(playerid)),"z",z);
105
     dini_FloatSet(udb_encode(Player(playerid)),"a",ang);
106
    }
107
		
108
	  	format(string,sizeof(string),"* Zapisano: Pozycja: X: %f,Y: %f,Z: %f,A: %f, Pieniądze: $%d Punkty: %d ",x,y,z,ang,GetPlayerMoney(playerid),GetPlayerScore(playerid));
109
		  SendClientMessage(playerid, SZARY ,string);
110
  }
111
  
112
 return 1;
113
}
114
115
//-------------------------------------------------------------------------------
116
forward ZapiszWszystkim();
117
public ZapiszWszystkim()
118
{
119
new Float:x, Float:y, Float:z;
120
new Float:ang;
121
122
 for (new i=0;i<MAX_PLAYERS;i++)
123
 {
124
  if (dini_Exists(udb_encode(Player(i))) && zalogowany[i] == 1)
125
  {
126
		 dini_IntSet(udb_encode(Player(i)),"kasa",GetPlayerMoney(i));
127
		 dini_IntSet(udb_encode(Player(i)),"punkty",GetPlayerScore(i));
128
		
129
	  if (GetPlayerState(i) != PLAYER_STATE_NONE && GetPlayerState(i) != PLAYER_STATE_WASTED)
130
   {
131
	   	GetPlayerPos(i,x,y,z);
132
	   	GetPlayerFacingAngle(i,ang);
133
	   	dini_FloatSet(udb_encode(Player(i)),"x",x);
134
     dini_FloatSet(udb_encode(Player(i)),"y",y);
135
     dini_FloatSet(udb_encode(Player(i)),"z",z);
136
     dini_FloatSet(udb_encode(Player(i)),"a",ang);
137
   }
138
  }
139
 }
140
		
141
 return 1;
142
}
143
144
//-------------------------------------------------------------------------------
145
146
public OnPlayerSpawn(playerid)
147
{
148
	GivePlayerMoney(playerid, 50000);
149
	SetPlayerInterior(playerid,0);
150
	
151
//PRZYWRÓCENIE POZYCJI -----------------------
152
new tmpx[256];
153
new tmpy[256];
154
new tmpz[256];
155
new tmpa[256];
156
157
158
	if (dini_Exists(udb_encode(Player(playerid))))
159
 {
160
		if (zalogowany[playerid] == 0 && wylogowany[playerid] == 0)
161
  {
162
		SendClientMessage(playerid, CZERWONY, "* Podaj haslo do konta lub zmien nick!");
163
		 SetPlayerHealth(playerid, 0.0);
164
		} else {
165
          tmpx = dini_Get(udb_encode(Player(playerid)), "x");
166
			      	tmpy = dini_Get(udb_encode(Player(playerid)), "y");
167
				      tmpz = dini_Get(udb_encode(Player(playerid)), "z");
168
				      tmpa = dini_Get(udb_encode(Player(playerid)), "a");
169
170
      				if(strval(tmpx) && strval(tmpy) && strval(tmpz) && strval(tmpa))
171
          {
172
           SetPlayerPosIx(playerid, floatstr(tmpx), floatstr(tmpy), floatstr(tmpz),floatstr(tmpa));
173
           SendClientMessage(playerid, ZIELONY, "Twoja pozycja została przywrócona!");
174
          }
175
         }
176
		
177
	}
178
//KONIEC PRZYWRÓCENIE POZYCJI ----------------
179
	
180
	return 1;
181
}
182
183
//-------------------------------------------------------------------------------
184
185
SetPlayerPosIx(playerid,Float:X,Float:Y,Float:Z,Float:Ang)
186
{
187
SetPlayerFacingAngle(playerid,Ang);
188
SetPlayerPos(playerid,X,Y,Z);
189
SetCameraBehindPlayer(playerid);
190
}
191
192
//-------------------------------------------------------------------------------
193
194
public OnPlayerDeath(playerid, killerid, reason)
195
{
196
 GameTextForPlayer(playerid,"~w~WASTED",3000,2);
197
 //SELF KILL -----------------------------------------
198
	if(killerid == INVALID_PLAYER_ID)
199
 {
200
  SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
201
  ResetPlayerMoney(playerid);
202
  
203
    dini_Unset(udb_encode(Player(playerid)), "x");
204
    dini_Unset(udb_encode(Player(playerid)), "y");
205
    dini_Unset(udb_encode(Player(playerid)), "z");
206
    dini_Unset(udb_encode(Player(playerid)), "a");
207
208
209
		   if (dini_Exists(udb_encode(Player(playerid))) && zalogowany[playerid] == 1)
210
     {
211
      dini_IntSet(udb_encode(Player(playerid)), "samobojstw", strval(dini_Get(udb_encode(Player(playerid)), "samobojstw"))+1);
212
		   }
213
214
     if (!dini_Exists(STATYSTYKI))
215
     {
216
      dini_Create(STATYSTYKI);
217
     }
218
     dini_IntSet(STATYSTYKI, "wszystkichsamobojst", strval(dini_Get(STATYSTYKI, "wszystkichsamobojst"))+1);
219
 //KONIEC SELF KILL ----------------------------------
220
	} else {
221
	        //ZABOJSTWA -------------------------------------------
222
	       	SendDeathMessage(killerid,playerid,reason);
223
	       	
224
         	if (GetPlayerMoney(playerid) > 0)
225
          {
226
				       GivePlayerMoney(killerid, GetPlayerMoney(playerid));
227
			        ResetPlayerMoney(playerid);
228
			       }
229
			        //DRIVE BY ~~~~~~~~~~~~~~~~~~~~~~~~~~
230
           if((IsPlayerInAnyVehicle(killerid) && !IsPlayerInAnyVehicle(playerid) && GetPlayerState(killerid) == PLAYER_STATE_DRIVER && reason != WEAPON_VEHICLE))
231
           {
232
          	 if (dini_Exists(udb_encode(Killer(killerid))))
233
            {
234
  	          dini_IntSet(udb_encode(Killer(killerid)), "driveby", strval(dini_Get(udb_encode(Killer(killerid)), "driveby"))+1);
235
	           }
236
 	
237
 	          if (!dini_Exists(STATYSTYKI))
238
            {
239
             dini_Create(STATYSTYKI);
240
            }
241
            dini_IntSet(STATYSTYKI, "wszystkiedriveby", strval(dini_Get(STATYSTYKI, "wszystkiedriveby"))+1);
242
            
243
           }
244
           //ZABOJSTWO ~~~~~~~~~~~~~~~~~~~~~~~~~~
245
          	 if (dini_Exists(udb_encode(Killer(killerid))))
246
            {
247
  	          dini_IntSet(udb_encode(Killer(killerid)), "zabojstw", strval(dini_Get(udb_encode(Killer(killerid)), "zabojstw"))+1);
248
	           }
249
 	
250
 	          if (!dini_Exists(STATYSTYKI))
251
            {
252
             dini_Create(STATYSTYKI);
253
            }
254
             dini_IntSet(STATYSTYKI, "wszystkichzabojstw", strval(dini_Get(STATYSTYKI, "wszystkichzabojstw"))+1);
255
		      	} 
256
		
257
 	    if (dini_Exists(udb_encode(Player(playerid))) && zalogowany[playerid] == 1)
258
      {
259
  	    dini_IntSet(udb_encode(Player(playerid)), "smierc", strval(dini_Get(udb_encode(Player(playerid)), "smierc"))+1);
260
	     }
261
 	
262
 	    if (!dini_Exists(STATYSTYKI))
263
      {
264
       dini_Create(STATYSTYKI);
265
      }
266
      dini_IntSet(STATYSTYKI, "wszystkichsmierci", strval(dini_Get(STATYSTYKI, "wszystkichsmierci"))+1);
267
	
268
 	     dini_Unset(udb_encode(Player(playerid)), "x");
269
       dini_Unset(udb_encode(Player(playerid)), "y");
270
       dini_Unset(udb_encode(Player(playerid)), "z");
271
       dini_Unset(udb_encode(Player(playerid)), "a");
272
	return 1;
273
}
274
275
//-------------------------------------------------------------------------------
276
277
public OnPlayerRequestClass(playerid, classid)
278
{
279
	return 1;
280
}
281
282
//-------------------------------------------------------------------------------
283
public OnGameModeInit()
284
{
285
 SetTimer("ZapiszWszystkim", 600000, 1);
286
}
287
//-------------------------------------------------------------------------------
288
    
289
    
290
public OnPlayerCommandText(playerid, cmdtext[])
291
{
292
    
293
 dcmd (register ,    8, cmdtext ) ;
294
 dcmd (login    ,    5, cmdtext ) ;
295
 dcmd (setpass  ,    7, cmdtext ) ;
296
 dcmd (logout   ,    6, cmdtext ) ;
297
 dcmd (save     ,    4, cmdtext ) ;
298
 dcmd (saveall  ,    7, cmdtext ) ;
299
 dcmd (staty    ,    5, cmdtext ) ;
300
301
 return 0;
302
}
303
304
//-------------------------------------------------------------------------------
305
306
dcmd_save(playerid, cmdtext[])
307
{
308
 #pragma unused cmdtext
309
 Zapisz(playerid);
310
 SendClientMessage(playerid, ZIELONY , "* Zapisano poprawnie.");
311
 return 1;
312
}
313
314
dcmd_saveall(playerid, cmdtext[])
315
{
316
 #pragma unused cmdtext
317
 if(IsPlayerAdmin(playerid)){
318
  Zapisz(playerid);
319
  SendClientMessage(playerid, ZIELONY , "* Poprawnie zapisano wszystkim graczom.");
320
 } else {
321
  SendClientMessage(playerid, CZERWONY, "* Musisz posiadać uprawnienia Administratorskie aby zapisać wszystkich graczy.");
322
 }
323
 return 1;
324
}
325
326
dcmd_staty(playerid, cmdtext[])
327
{
328
 #pragma unused cmdtext
329
330
 new tmp[256];
331
 new graczy = strval(dini_Get(STATYSTYKI, "graczy"));
332
 new Najnowszy[256];
333
 Najnowszy = dini_Get(STATYSTYKI, "nowygracz");
334
 new smierci = strval(dini_Get(STATYSTYKI, "wszystkichsmierci"));
335
 new zabojstw = strval(dini_Get(STATYSTYKI, "wszystkichzabojstw"));
336
 new samobojstw = strval(dini_Get(STATYSTYKI, "wszystkichsamobojst"));
337
338
 SendClientMessage(playerid, ZIELONY, "* Statystyki servera ::");
339
340
 format(tmp, 256, "* Wszystkich graczy zarejestrowanych :: %d", graczy);
341
 SendClientMessage(playerid, ZOLTY, tmp);
342
343
 format(tmp, 256, "* Najnowszy gracz :: %s", Najnowszy);
344
 SendClientMessage(playerid, ZOLTY, tmp);
345
346
 format(tmp, 256, "* Wszystkich śmierci :: %d", smierci);
347
 SendClientMessage(playerid, ZOLTY, tmp);
348
349
 format(tmp, 256, "* Wszystkich zabójstw :: %d", zabojstw);
350
 SendClientMessage(playerid, ZOLTY, tmp);
351
352
 format(tmp, 256, "* Wszystkich zabójstw :: %d", zabojstw);
353
 SendClientMessage(playerid, ZOLTY, tmp);
354
355
 format(tmp, 256, "* Wszystkich samobójstw :: %d", samobojstw);
356
 SendClientMessage(playerid, ZOLTY, tmp);
357
 return 1;
358
}
359
360
dcmd_register(playerid, cmdtext[])
361
{
362
new tmp[256];
363
new string[256];
364
365
  if(20 < strlen(cmdtext) || strlen(cmdtext) < 5)
366
  {
367
			SendClientMessage(playerid, ZIELONY , "* Hasło musi mieć od min. 5 do max. 20 znaków");
368
			return 1;
369
		}
370
371
 	if(!cmdtext[0])
372
  {
373
		 SendClientMessage(playerid, ZIELONY , "* WPISZ: /register [hasło]");
374
 	}
375
376
377
			if (!dini_Exists(udb_encode(Player(playerid))))
378
   {		
379
    new dzien, miesiac, rok;
380
    getdate(rok, miesiac, dzien);
381
				format(tmp, sizeof(tmp), "%d.%d.%d", dzien, miesiac, rok);
382
				
383
				dini_Create(udb_encode(Player(playerid)));
384-
				dini_IntSet(udb_encode(Player(playerid)), "haslo", udb_hash(cmdtext));
384+
				dini_Set(udb_encode(Player(playerid)), "haslo", udb_hash(cmdtext));
385
       dini_Set(udb_encode(Player(playerid)), "datarejestracji", tmp);
386
 			
387
     if (!dini_Exists(STATYSTYKI))
388
     {
389
      dini_Create(STATYSTYKI);
390
      dini_IntSet(STATYSTYKI, "graczy", strval(dini_Get(STATYSTYKI, "graczy"))+1);
391
			      dini_Set(STATYSTYKI, "nowygracz", Player(playerid));
392
 				}
393
394
				
395
				format(string, sizeof(string), "* %s (id: %d) utworzyłeś/aś nowe konto. Twoje hasło to: >>> %s <<< Zapamiętaj je!!!", Player(playerid), playerid, cmdtext);
396
				SendClientMessage(playerid, ZIELONY, string);
397
			} else {
398
				       format(string, sizeof(string), "* %s jest już zarejestrowany.", Player(playerid),cmdtext);
399
				       SendClientMessage(playerid, CZERWONY, string);
400
			       }
401
402
 return 1;
403
}
404
		
405
//-------------------------------------------------------------------------------
406
407
dcmd_login(playerid, cmdtext[])
408
{
409
new tmp[256];
410
new string[256];
411
412
	 	if(!cmdtext[0])
413
   {
414
		  SendClientMessage(playerid, ZIELONY , "* WPISZ: /login [hasło]");
415
 	 }
416
 		
417
			if(dini_Exists(udb_encode(Player(playerid))))
418
   {
419
  	  if(zalogowany[playerid] == 1)
420
     {
421
					  SendClientMessage(playerid, CZERWONY, "* Jesteś już zalogowany!");
422
				 } else {
423-
			  		       if(udb_hash(cmdtext) != strval(dini_Get(udb_encode(Player(playerid)), "haslo")))
423+
			  		       if(udb_hash(cmdtext) != dini_Get(udb_encode(Player(playerid)), "haslo"))
424
              {
425
			    	      	SendClientMessage(playerid, CZERWONY, "* Podałeś złe hasło.");
426
			    	      	GameTextForPlayer(playerid, "~r~Zle haslo!", 3000, 5);
427
  			    	 	   zlehaslo[playerid]++;
428
 		            if(zlehaslo[playerid] >= 5)
429
               {
430
                Kick(playerid);
431
                format(string, sizeof(string), "* %s (id: %d) został wyrzucony z serwera. Powód: Za dużo prób wpisania hasła.", Player(playerid), playerid);
432
                SendClientMessageToAll(CZERWONY, string);
433
               }
434
435
              } else {
436
                      zalogowany[playerid] = 1;
437
					                 KillTimer(logintimeout[playerid]);
438
              
439
              				    new godzina, minuta, sekunda;
440
				                  new dzien, miesiac, rok;
441
				                  gettime(godzina, minuta, sekunda);
442
				                  getdate(rok, miesiac, dzien);
443
444
                 					format(tmp, sizeof(tmp), "%d.%d.%d [%d:%d:%d]", dzien, miesiac, rok, godzina, minuta, sekunda);
445
					                 dini_Set(udb_encode(Player(playerid)), "ostatniozalogowany", tmp);
446
					                	
447
						                SendClientMessage(playerid, ZIELONY, "* Zalogowałeś się!");
448
						                GameTextForPlayer(playerid, "~g~Zalogowales sie!", 3000, 5);
449
						
450
                     }
451
              }
452
			} else {
453
			        format(string, sizeof(string), "* %s nie ma takiego konta.", Player(playerid));
454
				       SendClientMessage(playerid, CZERWONY, string);
455
			       }
456
457
 return 1;
458
}
459
	
460
//-------------------------------------------------------------------------------
461
462
dcmd_logout(playerid, cmdtext[])
463
{
464
#pragma unused cmdtext
465
new string[256];
466
467
			if (dini_Exists(udb_encode(Player(playerid))))
468
   {
469
  	  if (zalogowany[playerid] == 1)
470
     {
471
      SendClientMessage(playerid,ZIELONY ,"Wylogowałeś się!");
472
      GameTextForPlayer(playerid,"~Y~Wylogowales sie!",2500,5);
473
      Zapisz(playerid);
474
      zalogowany[playerid] = 0;
475
      wylogowany[playerid] = 1;
476
   			} else {
477
			        format(string, sizeof(string), "* %s nie jesteś zalogowany!", Player(playerid));
478
				       SendClientMessage(playerid, CZERWONY, string);
479
      }
480
			 } else {
481
			        format(string, sizeof(string), "* %s nie ma takiego konta.", Player(playerid));
482
				       SendClientMessage(playerid, CZERWONY, string);
483
    }
484
    
485
 return 1;
486
}
487
488
//-------------------------------------------------------------------------------
489
490
dcmd_setpass(playerid, cmdtext[])
491
{
492
new string[256];
493
494
  if(20 < strlen(cmdtext) || strlen(cmdtext) < 5)
495
  {
496
			SendClientMessage(playerid, CZERWONY, "* Hasło musi mieć min. od 5 do max. 20 znaków");
497
			return 1;
498
		}
499
		
500
		if(!cmdtext[0])
501
  {
502
			SendClientMessage(playerid, ZIELONY , "* WPISZ: /setpass [nowehasło]");
503
  }
504
505
			if (dini_Exists(udb_encode(Player(playerid))))
506
   {
507
			    if (zalogowany[playerid] == 1)
508
       {
509
					    dini_IntSet(udb_encode(Player(playerid)), "haslo", udb_hash(cmdtext));
510
				   	 format(string, sizeof(string), "* %s (id: %d) zmieniłeś/aś hasło na: >>> %s <<<", Player(playerid), playerid, cmdtext);
511
					    SendClientMessage(playerid, CZERWONY, string);
512
       } else {
513
               SendClientMessage(playerid, CZERWONY, "* Musisz być zalogowany by zmienić swoje hasło!");
514
              }
515
   } else {
516
           format(string, sizeof(string), "* %s nie ma takiego konta.", Player(playerid));
517
           SendClientMessage(playerid, CZERWONY, string);
518
          }
519
520
 return 1;
521
}
522
523
//-------------------------------------------------------------------------------	
524
	
525
Player(playerid)
526
{
527
new player[MAX_PLAYER_NAME];
528
GetPlayerName(playerid, player, sizeof(player));
529
 return player;
530
}
531
532
//-------------------------------------------------------------------------------
533
534
Killer(killerid)
535
{
536
new killer[MAX_PLAYER_NAME];
537
GetPlayerName(killerid, killer, sizeof(killer));
538
 return killer;
539
}