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;
}