All pastes #944828 Raw Edit

Anonym

public text v1 · immutable
·published 2008-03-16 13:45 UTC
rendered paste body
------------------------------------------------------------
#include <a_samp>
#include <dini>
#include <dudb>

#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

#define CZERWONY 0xFF7777FF
#define BIALY 0xFFFFFFFF
#define ZIELONY 0x00FF00FF
#define ZOLTY 0xFFFF00FF
#define SZARY 0x666666FF

#define STATYSTYKI "totalstat.ini"

#pragma tabsize -99999 // xd

new zalogowany[MAX_PLAYERS];
new zlehaslo[MAX_PLAYERS];
new logintimeout[MAX_PLAYERS];
new wylogowany[MAX_PLAYERS];

//-------------------------------------------------------------------------------

public OnPlayerConnect(playerid)
{
  
	 if(dini_Exists(udb_encode(Player(playerid))))
  {
		  SendClientMessage(playerid, CZERWONY, "* Twój nick jest zarejestrowany, Zaloguj siê. Inaczej zostaniesz wyrzucony z serwera.");
		  logintimeout[playerid] = SetTimerEx("LoginTimeout", 20000, 0, "d", playerid);
		
    GivePlayerMoney(playerid, strval(dini_Get(udb_encode(Player(playerid)),"kasa")));
     SetPlayerScore(playerid, strval(dini_Get(udb_encode(Player(playerid)),"punkty")));
     zalogowany[playerid] = 0;
     wylogowany[playerid] = 0;
  } else {
          SendClientMessage(playerid, ZIELONY, "* Prosimy zarejestrowaæ siê komend¹ /rejestuj [has³o]");
          zalogowany[playerid] = 1;
          wylogowany[playerid] = 1;
         }
         
  return 1;
}

//-------------------------------------------------------------------------------

forward LoginTimeout(playerid);
public LoginTimeout(playerid)
{
 if (zalogowany[playerid] == 0 && GetPlayerState(playerid) != PLAYER_STATE_NONE)
 { 		
  Kick(playerid);
  new string[256];
  format(string, sizeof(string), "* %s (ID: %d) zosta³ wyrzucony z serwera. Powód: Czas zalogowania siê skoñczy³!", Player(playerid), playerid);
  SendClientMessageToAll(CZERWONY, string);
 }
}

//-------------------------------------------------------------------------------

public OnPlayerDisconnect(playerid, reason)
{
  if (zalogowany[playerid] == 1)
  {
   Zapisz(playerid);
  }
  
  KillTimer(logintimeout[playerid]);
}

//-------------------------------------------------------------------------------

stock Zapisz(playerid)
{
new string[256];
new Float:x, Float:y, Float:z;
new Float:ang;

 if (dini_Exists(udb_encode(Player(playerid))))
 {
		  dini_IntSet(udb_encode(Player(playerid)),"kasa",GetPlayerMoney(playerid));
		  dini_IntSet(udb_encode(Player(playerid)),"punkty",GetPlayerScore(playerid));

		  if (GetPlayerState(playerid) != PLAYER_STATE_NONE && GetPlayerState(playerid) != PLAYER_STATE_WASTED)
    {
	   	GetPlayerPos(playerid,x,y,z);
	   	GetPlayerFacingAngle(playerid,ang);
	   	dini_FloatSet(udb_encode(Player(playerid)),"x",x);
     dini_FloatSet(udb_encode(Player(playerid)),"y",y);
     dini_FloatSet(udb_encode(Player(playerid)),"z",z);
     dini_FloatSet(udb_encode(Player(playerid)),"a",ang);
    }
		
	  	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));
		  SendClientMessage(playerid, SZARY ,string);
  }
  
 return 1;
}

//-------------------------------------------------------------------------------
forward ZapiszWszystkim();
public ZapiszWszystkim()
{
new Float:x, Float:y, Float:z;
new Float:ang;

 for (new i=0;i<MAX_PLAYERS;i++)
 {
  if (dini_Exists(udb_encode(Player(i))) && zalogowany[i] == 1)
  {
		 dini_IntSet(udb_encode(Player(i)),"kasa",GetPlayerMoney(i));
		 dini_IntSet(udb_encode(Player(i)),"punkty",GetPlayerScore(i));
		
	  if (GetPlayerState(i) != PLAYER_STATE_NONE && GetPlayerState(i) != PLAYER_STATE_WASTED)
   {
	   	GetPlayerPos(i,x,y,z);
	   	GetPlayerFacingAngle(i,ang);
	   	dini_FloatSet(udb_encode(Player(i)),"x",x);
     dini_FloatSet(udb_encode(Player(i)),"y",y);
     dini_FloatSet(udb_encode(Player(i)),"z",z);
     dini_FloatSet(udb_encode(Player(i)),"a",ang);
   }
  }
 }
		
 return 1;
}

//-------------------------------------------------------------------------------

public OnPlayerSpawn(playerid)
{
	GivePlayerMoney(playerid, 60000);
	SetPlayerInterior(playerid,0);
	
//PRZYWRÓCENIE POZYCJI -----------------------
new tmpx[256];
new tmpy[256];
new tmpz[256];
new tmpa[256];


	if (dini_Exists(udb_encode(Player(playerid))))
 {
		if (zalogowany[playerid] == 0 && wylogowany[playerid] == 0)
  {
			SendClientMessage(playerid, CZERWONY, "* Du bist bereits Eingeloggt du loser! [um fortzufahren klicke großschreibtaste]
		} else {
          tmpx = dini_Get(udb_encode(Player(playerid)), "x");
			      	tmpy = dini_Get(udb_encode(Player(playerid)), "y");
				      tmpz = dini_Get(udb_encode(Player(playerid)), "z");
				      tmpa = dini_Get(udb_encode(Player(playerid)), "a");

      				if(strval(tmpx) && strval(tmpy) && strval(tmpz) && strval(tmpa))
          {
           SetPlayerPosIx(playerid, floatstr(tmpx), floatstr(tmpy), floatstr(tmpz),floatstr(tmpa));
           SendClientMessage(playerid, ZIELONY, "Du hast es geschafft...Willkommen auf meinem Server! :-)");
          }
         }
		
	}
//KONIEC PRZYWRÓCENIE POZYCJI ----------------
	
	return 1;
}

//-------------------------------------------------------------------------------

SetPlayerPosIx(playerid,Float:X,Float:Y,Float:Z,Float:Ang)
{
SetPlayerFacingAngle(playerid,Ang);
SetPlayerPos(playerid,X,Y,Z);
SetCameraBehindPlayer(playerid);
}

//-------------------------------------------------------------------------------

public OnPlayerDeath(playerid, killerid, reason)
{
 GameTextForPlayer(playerid,"~w~!",3000,2);
 //SELF KILL -----------------------------------------
	if(killerid == INVALID_PLAYER_ID)
 {
  SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
  ResetPlayerMoney(playerid);
  
    dini_Unset(udb_encode(Player(playerid)), "x");
    dini_Unset(udb_encode(Player(playerid)), "y");
    dini_Unset(udb_encode(Player(playerid)), "z");
    dini_Unset(udb_encode(Player(playerid)), "a");


		   if (dini_Exists(udb_encode(Player(playerid))) && zalogowany[playerid] == 1)
     {
      dini_IntSet(udb_encode(Player(playerid)), "samobojstw", strval(dini_Get(udb_encode(Player(playerid)), "samobojstw"))+1);
		   }

     if (!dini_Exists(STATYSTYKI))
     {
      dini_Create(STATYSTYKI);
     }
     dini_IntSet(STATYSTYKI, "wszystkichsamobojst", strval(dini_Get(STATYSTYKI, "wszystkichsamobojst"))+1);
 //KONIEC SELF KILL ----------------------------------
	} else {
	        //ZABOJSTWA -------------------------------------------
	       	SendDeathMessage(killerid,playerid,reason);
	       	
         	if (GetPlayerMoney(playerid) > 0)
          {
				       GivePlayerMoney(killerid, GetPlayerMoney(playerid));
			        ResetPlayerMoney(playerid);
			       }
			        //DRIVE BY ~~~~~~~~~~~~~~~~~~~~~~~~~~
           if((IsPlayerInAnyVehicle(killerid) && !IsPlayerInAnyVehicle(playerid) && GetPlayerState(killerid) == PLAYER_STATE_DRIVER && reason != WEAPON_VEHICLE))
           {
          	 if (dini_Exists(udb_encode(Killer(killerid))))
            {
  	          dini_IntSet(udb_encode(Killer(killerid)), "driveby", strval(dini_Get(udb_encode(Killer(killerid)), "driveby"))+1);
	           }
 	
 	          if (!dini_Exists(STATYSTYKI))
            {
             dini_Create(STATYSTYKI);
            }
            dini_IntSet(STATYSTYKI, "wszystkiedriveby", strval(dini_Get(STATYSTYKI, "wszystkiedriveby"))+1);
            
           }
           //ZABOJSTWO ~~~~~~~~~~~~~~~~~~~~~~~~~~
          	 if (dini_Exists(udb_encode(Killer(killerid))))
            {
  	          dini_IntSet(udb_encode(Killer(killerid)), "zabojstw", strval(dini_Get(udb_encode(Killer(killerid)), "zabojstw"))+1);
	           }
 	
 	          if (!dini_Exists(STATYSTYKI))
            {
             dini_Create(STATYSTYKI);
            }
             dini_IntSet(STATYSTYKI, "wszystkichzabojstw", strval(dini_Get(STATYSTYKI, "wszystkichzabojstw"))+1);
		      	} 
		
 	    if (dini_Exists(udb_encode(Player(playerid))) && zalogowany[playerid] == 1)
      {
  	    dini_IntSet(udb_encode(Player(playerid)), "smierc", strval(dini_Get(udb_encode(Player(playerid)), "smierc"))+1);
	     }
 	
 	    if (!dini_Exists(STATYSTYKI))
      {
       dini_Create(STATYSTYKI);
      }
      dini_IntSet(STATYSTYKI, "wszystkichsmierci", strval(dini_Get(STATYSTYKI, "wszystkichsmierci"))+1);
	
 	     dini_Unset(udb_encode(Player(playerid)), "x");
       dini_Unset(udb_encode(Player(playerid)), "y");
       dini_Unset(udb_encode(Player(playerid)), "z");
       dini_Unset(udb_encode(Player(playerid)), "a");
	return 1;
}

//-------------------------------------------------------------------------------

public OnPlayerRequestClass(playerid, classid)
{
	return 1;
}

//-------------------------------------------------------------------------------
public OnGameModeInit()
{
 SetTimer("ZapiszWszystkim", 600000, 1);
}

//-------------------------------------------------------------------------------

public OnFilterScriptInit()
{
 print("\a Register i Login by AdiX dla Ultimate LV - Zaladowano \n");
}

//-------------------------------------------------------------------------------
    
    
public OnPlayerCommandText(playerid, cmdtext[])
{
    
 dcmd (register ,    8, cmdtext ) ;
 dcmd (login    ,    5, cmdtext ) ;
 dcmd (setpass  ,    7, cmdtext ) ;
 dcmd (logout   ,    6, cmdtext ) ;
 dcmd (save     ,    4, cmdtext ) ;
 dcmd (saveall  ,    7, cmdtext ) ;
 dcmd (staty    ,    5, cmdtext ) ;

 return 0;
}

//-------------------------------------------------------------------------------

dcmd_save(playerid, cmdtext[])
{
 #pragma unused cmdtext
 Zapisz(playerid);
 SendClientMessage(playerid, BIALY, "* Zapisano poprawnie.");
 return 1;
}

dcmd_saveall(playerid, cmdtext[])
{
 #pragma unused cmdtext
 if(IsPlayerAdmin(playerid)){
  Zapisz(playerid);
  SendClientMessage(playerid, BIALY, "* Poprawnie zapisano wszystkim graczom.");
 } else {
  SendClientMessage(playerid, CZERWONY, "* Musisz posiadaæ uprawnienia Administratorskie aby zapisaæ wszystkich graczy.");
 }
 return 1;
}

dcmd_staty(playerid, cmdtext[])
{
 #pragma unused cmdtext

 new tmp[256];
 new graczy = strval(dini_Get(STATYSTYKI, "graczy"));
 new Najnowszy[256];
 Najnowszy = dini_Get(STATYSTYKI, "nowygracz");
 new smierci = strval(dini_Get(STATYSTYKI, "wszystkichsmierci"));
 new zabojstw = strval(dini_Get(STATYSTYKI, "wszystkichzabojstw"));
 new samobojstw = strval(dini_Get(STATYSTYKI, "wszystkichsamobojst"));

 SendClientMessage(playerid, ZIELONY, "* Statystyki servera ::");

 format(tmp, 256, "* Wszystkich graczy zarejestrowanych :: %d", graczy);
 SendClientMessage(playerid, ZOLTY, tmp);

 format(tmp, 256, "* Najnowszy gracz :: %s", Najnowszy);
 SendClientMessage(playerid, ZOLTY, tmp);

 format(tmp, 256, "* Wszystkich œmierci :: %d", smierci);
 SendClientMessage(playerid, ZOLTY, tmp);

 format(tmp, 256, "* Wszystkich zabójstw :: %d", zabojstw);
 SendClientMessage(playerid, ZOLTY, tmp);

 format(tmp, 256, "* Wszystkich zabójstw :: %d", zabojstw);
 SendClientMessage(playerid, ZOLTY, tmp);

 format(tmp, 256, "* Wszystkich samobójstw :: %d", samobojstw);
 SendClientMessage(playerid, ZOLTY, tmp);
 return 1;
}

dcmd_register(playerid, cmdtext[])
{
new tmp[256];
new string[256];

  if(20 < strlen(cmdtext) || strlen(cmdtext) < 5)
  {
			SendClientMessage(playerid, ZIELONY, " Twoje has³o jest za rótkie! Minimum 5 znaków!");
			return 1;
		}

 	if(!cmdtext[0])
  {
		 SendClientMessage(playerid, BIALY, "WPISZ: /register [has³o]");
 	}


			if (!dini_Exists(udb_encode(Player(playerid))))
   {		
    new dzien, miesiac, rok;
    getdate(rok, miesiac, dzien);
				format(tmp, sizeof(tmp), "%d.%d.%d", dzien, miesiac, rok);
				
				dini_Create(udb_encode(Player(playerid)));
				dini_IntSet(udb_encode(Player(playerid)), "haslo", udb_hash(cmdtext));
       dini_Set(udb_encode(Player(playerid)), "datarejestracji", tmp);
 			
     if (!dini_Exists(STATYSTYKI))
     {
      dini_Create(STATYSTYKI);
      dini_IntSet(STATYSTYKI, "graczy", strval(dini_Get(STATYSTYKI, "graczy"))+1);
			      dini_Set(STATYSTYKI, "nowygracz", Player(playerid));
 				}

				
				format(string, sizeof(string), "Um dich Einzuloggen, schreibe bitte /login (dein passwort)" , Player(playerid), playerid, cmdtext);
				SendClientMessage(playerid, ZIELONY, string);
			} else {
				       format(string, sizeof(string), "* %s jest ju¿ zarejestrowany.", Player(playerid),cmdtext);
				       SendClientMessage(playerid, CZERWONY, string);
			       }

 return 1;
}
		
//-------------------------------------------------------------------------------

dcmd_login(playerid, cmdtext[])
{
new tmp[256];
new string[256];

	 	if(!cmdtext[0])
   {
		  SendClientMessage(playerid, BIALY, "WPISZ: /login [has³o]");
 	 }
 		
			if(dini_Exists(udb_encode(Player(playerid))))
   {
  	  if(zalogowany[playerid] == 1)
     {
					  SendClientMessage(playerid, CZERWONY, " Du bist bereits Eingeloggt (loser) [um ins Spiel zu gelangen großschreibtaste klicken]!");
				 } else {
			  		       if(udb_hash(cmdtext) != strval(dini_Get(udb_encode(Player(playerid)), "haslo")))
              {
			    	      	GameTextForPlayer(playerid, "~r~Falsches Passwort (haha) xD!", 3000, 5);
  			    	 	   zlehaslo[playerid]++;
 		            if(zlehaslo[playerid] >= 5)
               {
                Kick(playerid);
                format(string, sizeof(string), "* %s (id: %d) zosta³ wyrzucony z serwera. Powód: Za du¿o prób wpisania has³a.", Player(playerid), playerid);
                SendClientMessageToAll(CZERWONY, string);
               }

              } else {
                      zalogowany[playerid] = 1;
					                 KillTimer(logintimeout[playerid]);
              
              				    new godzina, minuta, sekunda;
				                  new dzien, miesiac, rok;
				                  gettime(godzina, minuta, sekunda);
				                  getdate(rok, miesiac, dzien);

                 					format(tmp, sizeof(tmp), "%d.%d.%d [%d:%d:%d]", dzien, miesiac, rok, godzina, minuta, sekunda);
					                 dini_Set(udb_encode(Player(playerid)), "ostatniozalogowany", tmp);
					                	
						                GameTextForPlayer(playerid, "~g~Eingeloggt xD!", 3000, 5);
						
                     }
              }
			} else {
			        format(string, sizeof(string), "* %s nie ma takiego konta.", Player(playerid));
				       SendClientMessage(playerid, CZERWONY, string);
			       }

 return 1;
}
	
//-------------------------------------------------------------------------------

dcmd_logout(playerid, cmdtext[])
{
#pragma unused cmdtext
new string[256];

			if (dini_Exists(udb_encode(Player(playerid))))
   {
  	  if (zalogowany[playerid] == 1)
     {
      GameTextForPlayer(playerid,"~Y~Wylogowales sie!",2500,5);
      Zapisz(playerid);
      zalogowany[playerid] = 0;
      wylogowany[playerid] = 1;
   			} else {
			        format(string, sizeof(string), "* %s nie jesteœ zalogowany!", Player(playerid));
				       SendClientMessage(playerid, CZERWONY, string);
      }
			 } else {
			        format(string, sizeof(string), "* %s nie ma takiego konta.", Player(playerid));
				       SendClientMessage(playerid, CZERWONY, string);
    }
    
 return 1;
}

//-------------------------------------------------------------------------------

dcmd_setpass(playerid, cmdtext[])
{
new string[256];

  if(20 < strlen(cmdtext) || strlen(cmdtext) < 5)
  {
			SendClientMessage(playerid, ZIELONY, " Twoje has³o jest za rótkie! Minimum 5 znaków!");
			return 1;
		}
		
		if(!cmdtext[0])
  {
			SendClientMessage(playerid, BIALY, "WPISZ: /setpass [nowehas³o]");
  }

			if (dini_Exists(udb_encode(Player(playerid))))
   {
			    if (zalogowany[playerid] == 1)
       {
					    dini_IntSet(udb_encode(Player(playerid)), "haslo", udb_hash(cmdtext));
				   	 format(string, sizeof(string), "* %s (ID: %d) zmieni³eœ/aœ has³o na %s ", Player(playerid), playerid, cmdtext);
					    SendClientMessage(playerid, CZERWONY, string);
       } else {
               SendClientMessage(playerid, CZERWONY, "* Musisz byæ zalogowany by zmieniæ swoje has³o!");
              }
   } else {
           format(string, sizeof(string), "* %s nie ma takiego konta.", Player(playerid));
           SendClientMessage(playerid, CZERWONY, string);
          }

 return 1;
}

//-------------------------------------------------------------------------------	
	
Player(playerid)
{
new player[MAX_PLAYER_NAME];
GetPlayerName(playerid, player, sizeof(player));
 return player;
}

//-------------------------------------------------------------------------------

Killer(killerid)
{
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
 return killer;
}