#include #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 new PLAYERLIST_authed[MAX_PLAYERS]; #define SYSTEM 0xFFEE9FAA #define WHITE 0xEFEFF7AA #define GREY 0xCCCCCAA //new gRoundTime = 3600000; // Round time - 1 hour //new gRoundTime = 1200000; // Round time - 20 mins //new gRoundTime = 900000; // Round time - 15 mins //new gRoundTime = 600000; // Round time - 10 mins //new gRoundTime = 300000; // Round time - 5 mins //new gRoundTime = 120000; // Round time - 2 mins //new gRoundTime = 60000; // Round time - 1 min //new gRoundTime = 1000; // Round time - 1 sec new Menu:Login; new Menu:Register; forward public Register1(playerid); forward public Login1(playerid); main() { } SystemMsg(playerid,msg[]) { if ((IsPlayerConnected(playerid))&&(strlen(msg)>0)) { SendClientMessage(playerid,SYSTEM,msg); } return 1; } PlayerName(playerid) { new name[255]; GetPlayerName(playerid, name, 255); return name; } dcmd_register(playerid,params[]) { if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Already authed."); if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Account already exists, please use '/login password'."); if (strlen(params)==0) return SystemMsg(playerid,"Correct usage: '/register password'"); if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"Account successfully created. Login with '/login password' now."); return true; } dcmd_login(playerid,params[]) { if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Already authed."); if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Account doesn't exist, please use '/register password'."); if (strlen(params)==0) return SystemMsg(playerid,"Correct usage: '/login password'"); if (udb_CheckLogin(PlayerName(playerid),params)) { GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")-GetPlayerMoney(playerid)); PLAYERLIST_authed[playerid]=true; return SystemMsg(playerid,"Successfully authed!"); } return SystemMsg(playerid,"Login failed!"); } public OnGameModeInit() { AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } public OnGameModeExit() { return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnPlayerConnect(playerid) { PLAYERLIST_authed[playerid]=false; new playername[MAX_PLAYER_NAME]; new String[256]; SetPlayerColor(playerid, GREY); GetPlayerName(playerid, playername, MAX_PLAYER_NAME); format(String, sizeof(String), "Welcome %s!", playername); SendClientMessage(playerid,SYSTEM,String); SendClientMessage(playerid,SYSTEM,"Chating,using Commands and Walking are now disabled for you until you register and or login."); return 1; } public OnPlayerDisconnect(playerid) { if (PLAYERLIST_authed[playerid]) { dUserSetINT(PlayerName(playerid)).("money",GetPlayerMoney(playerid)); } PLAYERLIST_authed[playerid]=false; return false; } public OnPlayerSpawn(playerid) { if (!udb_Exists(PlayerName(playerid))) { TogglePlayerControllable(playerid,1); Register = CreateMenu("",1,50,200,90,25); AddMenuItem(Login,0,"Register"); ShowMenuForPlayer(Register,playerid); SetTimer("Register1",100,1); } if (udb_Exists(PlayerName(playerid))) { if (!PLAYERLIST_authed[playerid]) { TogglePlayerControllable(playerid,1); Login = CreateMenu("",1,50,200,90,25); AddMenuItem(Login,0,"Login"); ShowMenuForPlayer(Login,playerid); SetTimer("Login1",100,1); } } return 1; } public Register1(playerid) { new Registered = SetTimer("Register1",100,1); if (!udb_Exists(PlayerName(playerid))) { AddMenuItem(Login,0,"Register"); ShowMenuForPlayer(Register,playerid); } if (udb_Exists(PlayerName(playerid))) { KillTimer(Registered); AddMenuItem(Login,0,"Login"); ShowMenuForPlayer(Login,playerid); SetTimer("Login1",100,1); } return 1; } public Login1(playerid) { new Logined = SetTimer("Login1",100,1); if (!PLAYERLIST_authed[playerid]) { AddMenuItem(Login,0,"Login"); ShowMenuForPlayer(Login,playerid); } if (PLAYERLIST_authed[playerid]) { KillTimer(Logined); TogglePlayerControllable(playerid,0); SetPlayerColor(playerid, WHITE); } return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { if (PLAYERLIST_authed[playerid]) { return 1; } else return 0; } public OnPlayerPrivmsg(playerid, recieverid, text[]) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { dcmd(login,5,cmdtext); dcmd(register,8,cmdtext); if (PLAYERLIST_authed[playerid]) { //Commands } return 0; } public OnPlayerInfoChange(playerid) { return 1; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { new Menu:Current1 = GetPlayerMenu(playerid); new Menu:Current2 = GetPlayerMenu(playerid); if (Current1 == Login) { switch(row) { case 0: { SendClientMessage(playerid,SYSTEM,"Correct usage: '/register password'"); } } } if (Current2 == Register) { switch(row) { case 0: { SendClientMessage(playerid,SYSTEM,"Correct usage: '/login password'"); } } } return 1; } public OnPlayerExitedMenu(playerid) { return 1; }