rendered paste body#include <a_samp>
#include <dudb>
#include <dutils>
#include <dini>
#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;
}