Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define SQL_HOST "127.0.0.1"
- #define SQL_USER "root"
- #define SQL_DATA "gamemode0"
- #define SQL_PASS ""
- #include <a_samp>
- #include <a_mysql>
- #include <core>
- #include <float>
- native WP_Hash(buffer[], len, const str[]);
- #define function%0(%1) forward%0(%1); public%0(%1)
- #define SCM SendClientMessage
- new MySQL:SQL, gString[512];
- #pragma tabsize 0
- enum pInfo {
- pHasAccount, pLoggedIn, pRegisterPassword[256], pRegisterAge, pRegisterSex, pRegisterMail[100], pSkin, pSQLID, pLastLogin
- }
- new PlayerInfo[MAX_PLAYERS][pInfo];
- enum{
- DIALOG_LOGIN_PASS, DIALOG_REGISTER_PASS, DIALOG_REGISTER_SEX, DIALOG_REGISTER_AGE, DIALOG_REGISTER_MAIL
- }
- main()
- {
- print("\nGamemode is starting");
- }
- public OnPlayerConnect(playerid)
- {
- PlayerInfo[playerid][pHasAccount] = CheckAccount(playerid);
- return 1;
- }
- function SetPlayerLoginCam(playerid){
- SetPlayerInterior(playerid,0);
- SetPlayerPos(playerid, 1797.6636, 809.3239, 20.1566);
- InterpolateCameraPos(playerid, 1797.6636, 809.3239, 50.1566, 1796.7500, 1188.6267, 45.2061, 30000, CAMERA_MOVE);
- InterpolateCameraLookAt(playerid, 1797.6426, 810.3271, 50.1114, 1796.7330, 1189.6305, 45.2260, 30000, CAMERA_MOVE);
- TogglePlayerControllable(playerid, 0);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid){
- SetPlayerLoginCam(playerid);
- gString[0] = EOS;
- format(gString, 256, "This account is already registered.\nLast login: %s \nPlease enter your password below:", unixtodate(PlayerInfo[playerid][pLastLogin]));
- new string[144];
- format(string, 144, "Salut, %s. Bun venit pe server.ro.", GetName(playerid));
- SCM(playerid, -1, string);
- string[0] = EOS;
- if(PlayerInfo[playerid][pHasAccount]) ShowPlayerDialog(playerid, DIALOG_LOGIN_PASS, DIALOG_STYLE_PASSWORD, "Server login",gString, "Continue", "Cancel"), strcat(string, "Acest cont este deja inregistrat, introdu-ti parola mai jos");
- else ShowPlayerDialog(playerid, DIALOG_REGISTER_PASS, DIALOG_STYLE_PASSWORD, "Server register", "This account is not registered.\nPlease enter you desired password below:", "Continue", "Cancel"), strcat(string, "Acest cont nu este inregistrat, introdu parola dorita mai jos");
- SCM(playerid, -1, string);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(!PlayerInfo[playerid][pLoggedIn]) return SetPlayerLoginCam(playerid);
- SetPlayerPos(playerid, 0, -300, 5);
- SetPlayerInterior(playerid,0);
- TogglePlayerClock(playerid,0);
- SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
- return 1;
- }
- public OnGameModeInit()
- {
- SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DATA);
- SetGameModeText("Gamemode 0.1");
- ShowPlayerMarkers(0);
- ShowNameTags(1);
- DisableInteriorEnterExits();
- AllowInteriorWeapons(1);
- UsePlayerPedAnims();
- ManualVehicleEngineAndLights();
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
- if(strfind(inputtext, "%", true) != -1 || strfind(inputtext, "`", true) != -1 || strfind(inputtext, "'", true) != -1){
- SendClientMessage(playerid, -1, "Invalid dialog input");
- return 1;
- }
- switch (dialogid){
- case DIALOG_LOGIN_PASS:{
- if(!response) return Kick(playerid);
- if(PlayerInfo[playerid][pHasAccount]){
- new string[256];
- WP_Hash(string, 256, inputtext);
- OnPlayerLogin(playerid, string);
- }
- }
- case DIALOG_REGISTER_PASS:{
- if(!response) return Kick(playerid);
- if(!PlayerInfo[playerid][pHasAccount]){
- if(strlen(inputtext) < 3 || strlen(inputtext) > 50) return ShowPlayerDialog(playerid, DIALOG_REGISTER_PASS, DIALOG_STYLE_PASSWORD, "Server register", "The password must be between 3 and 50 characters\nPlease enter you desired password below:", "Continue", "Cancel");
- WP_Hash(PlayerInfo[playerid][pRegisterPassword], 256, inputtext);
- gString[0] = EOS;
- format(gString, 144, "Parola ta are %d caractere.", strlen(inputtext));
- SCM(playerid, -1, gString);
- ShowPlayerDialog(playerid, DIALOG_REGISTER_SEX, DIALOG_STYLE_LIST, "Choose your gender", "Male\nFemale", "Continue", "Cancel");
- }
- }
- case DIALOG_REGISTER_SEX:{
- if(!response) return Kick(playerid);
- if(!PlayerInfo[playerid][pHasAccount]){
- PlayerInfo[playerid][pRegisterSex] = listitem;
- if(listitem == 0) PlayerInfo[playerid][pSkin] = 250;
- else PlayerInfo[playerid][pSkin] = 90;
- gString[0] = EOS;
- format(gString, 144, "Sexul caracterului tau este %s", ((listitem == 1) ? ("feminin") : ("masculin")));
- SCM(playerid, -1,gString);
- ShowPlayerDialog(playerid, DIALOG_REGISTER_AGE, DIALOG_STYLE_INPUT, "Choose your age", "Please enter your age below", "Continue", "Cancel");
- }
- }
- case DIALOG_REGISTER_AGE:{
- if(!response) return Kick(playerid);
- if(!PlayerInfo[playerid][pHasAccount]){
- new age = strval(inputtext);
- if(age < 1 || age > 60) return ShowPlayerDialog(playerid, DIALOG_REGISTER_AGE, DIALOG_STYLE_INPUT, "Choose your age", "Please enter a valid age", "Continue", "Cancel");
- PlayerInfo[playerid][pRegisterAge] = age;
- gString[0] = EOS;
- format(gString, 144, "Varsta caracterului tau este de %d ani.", strval(inputtext));
- SCM(playerid, -1, gString);
- ShowPlayerDialog(playerid, DIALOG_REGISTER_MAIL, DIALOG_STYLE_INPUT, "Choose your email", "Please enter your email below", "Continue", "Cancel");
- }
- }
- case DIALOG_REGISTER_MAIL:{
- if(!response) return Kick(playerid);
- if(!PlayerInfo[playerid][pHasAccount]){
- if(!IsCorrectMail(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER_MAIL, DIALOG_STYLE_INPUT, "Choose your email", "Please enter your email below", "Continue", "Cancel");
- format(PlayerInfo[playerid][pRegisterMail], 100, "%s", inputtext);
- new string[144];
- format(string, 144, "Email-ul setat este %s", inputtext);
- SCM(playerid, -1, string);
- gString[0] = EOS;
- mysql_format(SQL, gString, sizeof(gString), "INSERT INTO `users`(`username`, `password`, `skin`, `gender`, `mail`, `registerTime`, `lastLogin`) VALUES ('%s','%s', %d, %d, '%s', %d)", GetName(playerid), PlayerInfo[playerid][pRegisterPassword], PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pRegisterSex], PlayerInfo[playerid][pRegisterMail], gettime(), gettime());
- mysql_query(SQL, gString);
- SendClientMessage(playerid, -1, "Account registered.");
- PlayerInfo[playerid][pHasAccount] = 1;
- ShowPlayerDialog(playerid, DIALOG_LOGIN_PASS, DIALOG_STYLE_PASSWORD, "Server login", "This account is already registered.\nPlease enter your password below:", "Continue", "Cancel");
- }
- }
- }
- SpawnPlayer(playerid);
- return 1;
- }
- function CheckAccount(playerid){
- gString[0] = EOS;
- mysql_format(SQL, gString, sizeof(gString), "SELECT `lastLogin` FROM `users` WHERE `username` = '%s' LIMIT 1", GetName(playerid));
- new Cache:result = mysql_query(SQL, gString);
- new rowcount = 0;
- cache_get_row_count(rowcount);
- cache_get_value_name_int(0, "lastLogin", PlayerInfo[playerid][pLastLogin]);
- cache_delete(result);
- return rowcount;
- }
- stock GetName(playerid){
- new name[24];
- GetPlayerName(playerid, name, 24);
- return name;
- }
- function ResetVars(playerid){
- PlayerInfo[playerid][pHasAccount] = 0;
- PlayerInfo[playerid][pLoggedIn] = 0;
- return 1;
- }
- function OnPlayerLogin(playerid, password[]){
- gString[0] = EOS;
- mysql_format(SQL, gString, sizeof(gString), "SELECT * FROM `users` WHERE `username` = '%s' AND `password` = '%s' LIMIT 1", GetName(playerid), password);
- new Cache:result = mysql_query(SQL, gString);
- new rowcount = 0;
- cache_get_row_count(rowcount);
- if(rowcount == 0){
- ShowPlayerDialog(playerid, DIALOG_LOGIN_PASS, DIALOG_STYLE_PASSWORD, "Server login", "Incorrect password.\nPlease enter your password below:", "Continue", "");
- cache_delete(result);
- return 1;
- }
- cache_get_value_name_int(0, "id", PlayerInfo[playerid][pSQLID]);
- cache_get_value_name_int(0, "skin", PlayerInfo[playerid][pSkin]);
- PlayerInfo[playerid][pLoggedIn] = 1;
- cache_delete(result);
- gString[0] = EOS;
- mysql_format(SQL, gString, sizeof(gString), "UPDATE `users` SET `lastLogin` = %d WHERE `id` = %d", gettime(), PlayerInfo[playerid][pSQLID]);
- mysql_query(SQL, gString);
- SendClientMessage(playerid, -1, "You have been logged in");
- SpawnPlayer(playerid);
- return 1;
- }
- stock IsCorrectMail(mail[])
- {
- new len = strlen(mail), bool:find[2], w;
- if(!(6 < len < 129)) return false;
- for(new l; l < len; l++)
- {
- if(mail[l] == '.') find[0] = true;
- if(mail[l] == '@')
- {
- if(find[1]) return false;
- find[1] = true;
- w = l;
- if(w > 64) return false;
- }
- if(!(mail[l] >= 'A' && mail[l] <= 'Z' || mail[l] >= 'a' && mail[l] <= 'z' || mail[l] >= '0' && mail[l] <= '9' || mail[l] == '.' || mail[l] == '-' || mail[l] == '_' || mail[l] == '@')) return false;
- }
- if(len - w > 65) return false;
- if(!find[0] || !find[1]) return false;
- return true;
- }
- forward isLeap(y);
- public isLeap(y){
- return ((y)%4==0&&((y)%100!=0||(y)%400==0));
- }
- stock unixtodate(timestamp)
- {
- new rtrn[128];
- if(timestamp > 0) {
- new year, dayInSeconds, daysInYear, daysInLYear, days, tmpDays, monthsInDays[12], month, day;
- year = 1970;
- dayInSeconds = 86400;
- daysInYear = 365;
- daysInLYear = daysInYear+1;
- days = (timestamp/dayInSeconds);
- tmpDays = days+1;
- month = 11;
- while(tmpDays>=daysInYear){
- year++;
- if(isLeap(year)){
- tmpDays-=daysInLYear;
- }
- else{
- tmpDays-=daysInYear;
- }
- }
- if(isLeap(year)){
- tmpDays--;
- monthsInDays = {-1,30,59,90,120,151,181,212,243,273,304,334};
- }
- else{
- monthsInDays = {0,31,59,90,120,151,181,212,243,273,304,334};
- }
- while(month>0){
- if(tmpDays>monthsInDays[month]){
- break;
- }
- month--;
- }
- day=tmpDays-monthsInDays[month];
- month++;
- day++;
- new daystring[5];
- if(day <= 9) format(daystring, 5, "0%d", day);
- else format(daystring, 5, "%d", day);
- new monthstring[5];
- if(month <= 9) format(monthstring, 5, "0%d", month);
- else format(monthstring, 5, "%d", month);
- new temphour = timestamp + 10800;
- while(temphour >= 86400){
- temphour -= 86400;
- }
- new hours = temphour / 3600;
- new minutes = ((temphour % 3600) / 60) + 1;
- new seconds = temphour % 60;
- new hourstring[5];
- if(hours <= 9) format(hourstring, 5, "0%d", hours);
- else format(hourstring, 5, "%d", hours);
- new minstring[5];
- if(minutes <= 9) format(minstring, 5, "0%d", minutes);
- else format(minstring, 5, "%d", minutes);
- new secstring[5];
- if(seconds <= 9) format(secstring, 5, "0%d", seconds);
- else format(secstring, 5, "%d", seconds);
- format(rtrn, sizeof(rtrn), "%s.%s.%d %s:%s:%s", daystring, monthstring, year, hourstring, minstring, secstring);
- return rtrn;
- }
- format(rtrn, sizeof(rtrn), "0");
- return rtrn;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement