//------------------------------------------------------------------------------- #include #include #include #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 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), "* %s (ID: %d) utworzyłeś nowe konto. Twoje hasło to %s. Zapamiętaj je!", 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, "* Jesteś już zalogowany!"); } else { if(udb_hash(cmdtext) != strval(dini_Get(udb_encode(Player(playerid)), "haslo"))) { GameTextForPlayer(playerid, "~r~Zle haslo!", 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~zalogowany!", 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; }