Problem with Registration + (auto)Login system
#1

Hi,
I have just created a registration + (auto)login system.
But I got problems,
I got 5 errors I dont know how to fix this, I have read info, plus I tried to fix it, but it didnt work.
This are the errors:

PHP код:
C:\Users\Edward\Desktop\Samp\pawno\RegLog.pwn(79) : error 017undefined symbol "Login"
C:\Users\Edward\Desktop\Samp\pawno\RegLog.pwn(128) : error 028invalid subscript (not an array or too many subscripts): "pInfo"
C:\Users\Edward\Desktop\Samp\pawno\RegLog.pwn(128) : warning 215expression has no effect
C
:\Users\Edward\Desktop\Samp\pawno\RegLog.pwn(128) : error 001expected token";"but found "]"
C:\Users\Edward\Desktop\Samp\pawno\RegLog.pwn(128) : error 029invalid expressionassumed zero
C
:\Users\Edward\Desktop\Samp\pawno\RegLog.pwn(128) : fatal error 107too many error messages on one line
Compilation aborted
.Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
5 Errors

And this is the script.

PHP код:
#include <a_samp>
#include <YSI\y_ini>
#include <ZCMD>
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//Defines
//------------------------------------------------------------------------------
#define COLOR_GREEN 0x00FF04FF
#define COLOR_RED 0xFF0000FF
#define COLOR_YELLOW 0xFFFB00FF
#define COLOR_ORANGE 0xFFA200FF
#define COLOR_GREY 0xBABABAFF
#define Login(playerid);
#pragma tabsize 0
#define PATH "/Users/%s.ini"
//------------------------------------------------------------------------------
enum pInfo
{
    
pPass,
    
pSkin,
    
pColor,
    
pCash,
    
pAdmin,
    
pKills,
    
pDeaths,
    
pIP[20]
}
new 
PlayerInfo[MAX_PLAYERS][pInfo];
//------------------------------------------------------------------------------
forward LoadUser_data(playerid,name[],value[]);
public 
LoadUser_data(playerid,name[],value[])
{
     
INI_Int("Password",PlayerInfo[playerid][pPass]);
    
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
    
INI_Int("Color",PlayerInfo[playerid][pColor]);
    
INI_Int("Cash",PlayerInfo[playerid][pCash]);
    
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    
INI_Int("Kills",PlayerInfo[playerid][pKills]);
    
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    return 
1;
}
//------------------------------------------------------------------------------
stock UserPath(playerid)
{
    new 
string[128],playername[MAX_PLAYER_NAME];
    
GetPlayerName(playerid,playername,sizeof(playername));
    
format(string,sizeof(string),PATH,playername);
    return 
string;
}
//------------------------------------------------------------------------------
stock udb_hash(buf[]){
    new 
length=strlen(buf);
    new 
s1 1;
    new 
s2 0;
    new 
n;
    for (
n=0n<lengthn++)
    {
        
s1 = (s1 buf[n]) % 65521;
        
s2 = (s2 s1)     % 65521;
    }
    return (
s2 << 16) + s1;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// OnPlayerConnect (Register, Login, Auto Login...
//------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
    if(
fexist(UserPath(playerid)))
    {
        
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid);
            new 
tmpip[20];
            
GetPlayerIp(playerid,tmpip,20);
                       if(!
strcmp(tmpip,PlayerInfo[playerid][pIP],true))
                    {
                    
Login(playerid);
                    
SendClientMessage(playerid,COLOR_GREEN,"You have been automatically logged in.");
                    }
            else
            {
            
SendClientMessage(playerid,COLOR_ORANGE,"There was something wrong, you are not automatically logged in. Please /login.");
            }
    }
    else
    {
        
SendClientMessage(playerid,COLOR_ORANGE,"Welcome, you are NOT registered. Please /register.");
    }
        return 
1;}
//------------------------------------------------------------------------------
// OnPlayerDisconnect
//------------------------------------------------------------------------------
public OnPlayerDisconnect(playeridreason)
{
    new 
INI:File INI_Open(UserPath(playerid));
    
INI_SetTag(File,"data");
    
INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
    
INI_WriteInt(File,"Color",GetPlayerColor(playerid));
    
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_Close(File);
    return 
1;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// OnPlayerDeath +kills +Deaths etc..
//------------------------------------------------------------------------------
public OnPlayerDeath(playeridkilleridreason)
{
    
PlayerInfo[killerid][pKills]++;
    
PlayerInfo[playerid][pDeaths]++;
    return 
1;
}
//==============================================================================
//------------------------------------------------------------------------------
// Register command (/register)
//------------------------------------------------------------------------------
CMD:register(playerid,params[])
{
        new 
name[90];
        
GetPlayerIp(playerid,PlayerInfo[playerid][pIP],20);
        
GetPlayerName(playerid,name,sizeof(name));
        if (
pInfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid,COLOR_GREEN,"You have been succesfully logged in.");
        if (
udb_Exists(name)) return SendClientMessage(playerid,COLOR_ORANGE,"Sorry, this account is already exists, please login or choose another nickname.");
        if (
strlen(params) == 0) return SendClientMessage(playerid,COLOR_ORANGE,"You must be type /register <password>");
        if (
udb_Create(name,params))
        {
                new 
file[256],ip[100],tmp[260];
                
GetPlayerName(playerid,name,sizeof(name)); format(file,sizeof(file),"%s.ini",udb_encode(name));
                
GetPlayerIp(playerid,ip,100);
                
INI_Set(file,"ip",tmp);
                
INI_WriteInt(File,"Skin",0);
                
INI_WriteInt(File,"Color",0);
                
INI_WriteInt(File,"Cash",0);
                
INI_WriteInt(File,"Admin",0);
                
INI_WriteInt(File,"Kills",0);
                
INI_WriteInt(File,"Deaths",0);
                
Stats[playerid][LoggedIn] = 1;
                
SendClientMessage(playerid,COLOR_GREEN"You have been succesfully registered and logged in.");
                
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
                return 
1;
        }
        return 
1;
}
//------------------------------------------------------------------------------
// Login command (/login)
//------------------------------------------------------------------------------
CMD:login(playerid,params[])
{
        new 
name[24];
        
GetPlayerIp(playerid,PlayerInfo[playerid][pIP],20);
        
GetPlayerName(playerid,name,sizeof(name));
        if (
Stats[playerid][LoggedIn] == 1) return SendClientMessage(playerid,COLOR_ORANGE,"Sorry, you are already logged in.");
        if (!
udb_Exists(name)) return SendClientMessage(playerid,COLOR_ORANGE,"This account doesn't exist, please use /register <password>.");
        if (
strlen(params)==0) return SendClientMessage(playerid,COLOR_ORANGE,"You must be type login <password>");
        if (
udb_CheckLogin(name,params))
        {
                new 
file[256], tmp3[100];
                
format(file,sizeof(file),"%s.ini",udb_encode(name));
                
GetPlayerIp(playerid,tmp3,100);
                
INI_Set(file,"ip",tmp3);
                
Login(playerid);
                
SendClientMessage(playerid,COLOR_GREEN,"You have been successfully logged in");
        }
        else
        {
                
Failed[playerid]++;
                if(
Failed[playerid] == 5)
                {
                        new 
string[128];
                        
format(stringsizeof(string), "%s has been kicked for bad login attempts.",name);
                        
SendClientMessageToAll(COLOR_REDstring);
                        
Kick(playerid);
                }
                return 
SendClientMessage(playerid,COLOR_ORANGE,"Login failed! incorrect password.");
        }
        return 
1;

Hope anyone can help me,

Thanks
Reply
#2

Quote:

Login(playerid);

You are using this function, but you never have defined it.
Reply
#3

You are missing Login function.

@up: argh, too late
Reply
#4

REMOVED
Reply
#5

You need to add to enum pInfo new constant - LoggedIn
Reply
#6

I have just added it now, but the same errors still come again:

PHP код:
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(131) : error 028invalid subscript (not an array or too many subscripts): "pInfo"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(131) : warning 215expression has no effect
C
:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(131) : error 001expected token";"but found "]"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(131) : error 029invalid expressionassumed zero
C
:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(131) : fatal error 107too many error messages on one line
Compilation aborted
.Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
4 Errors

Reply
#7

pawn Код:
//Find
if (pInfo[playerid][LoggedIn] == 1)
//Change to
if (PlayerInfo[playerid][LoggedIn] == 1)
Reply
#8

Hmm I tried so many things, but it didnt work
now my script is so:

PHP код:
#include <a_samp>
#include <YSI\y_ini>
#include <ZCMD>
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//Defines
//------------------------------------------------------------------------------
#define COLOR_GREEN 0x00FF04FF
#define COLOR_RED 0xFF0000FF
#define COLOR_YELLOW 0xFFFB00FF
#define COLOR_ORANGE 0xFFA200FF
#define COLOR_GREY 0xBABABAFF
#define Login(playerid);
#pragma tabsize 0
#define PATH "/Users/%s.ini"
//------------------------------------------------------------------------------
enum pInfo
{
    
pPass,
    
pLoggedIn,
    
pSkin,
    
pColor,
    
pCash,
    
pAdmin,
    
pKills,
    
pDeaths,
    
pIP[20]
}
new 
PlayerInfo[MAX_PLAYERS][pInfo];
//------------------------------------------------------------------------------
forward LoadUser_data(playerid,name[],value[]);
public 
LoadUser_data(playerid,name[],value[])
{
     
INI_Int("Password",PlayerInfo[playerid][pPass]);
     
INI_Int("LoggedIn",PlayerInfo[playerid][pLoggedIn]);
    
INI_Int("Skin",PlayerInfo[playerid][pSkin]);
    
INI_Int("Color",PlayerInfo[playerid][pColor]);
    
INI_Int("Cash",PlayerInfo[playerid][pCash]);
    
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    
INI_Int("Kills",PlayerInfo[playerid][pKills]);
    
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    return 
1;
}
//------------------------------------------------------------------------------
stock UserPath(playerid)
{
    new 
string[128],playername[MAX_PLAYER_NAME];
    
GetPlayerName(playerid,playername,sizeof(playername));
    
format(string,sizeof(string),PATH,playername);
    return 
string;
}
//------------------------------------------------------------------------------
stock udb_hash(buf[]){
    new 
length=strlen(buf);
    new 
s1 1;
    new 
s2 0;
    new 
n;
    for (
n=0n<lengthn++)
    {
        
s1 = (s1 buf[n]) % 65521;
        
s2 = (s2 s1)     % 65521;
    }
    return (
s2 << 16) + s1;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// OnPlayerConnect (Register, Login, Auto Login...
//------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
    if(
fexist(UserPath(playerid)))
    {
        
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra true, .extra playerid);
            new 
tmpip[20];
            
GetPlayerIp(playerid,tmpip,20);
                       if(!
strcmp(tmpip,PlayerInfo[playerid][pIP],true))
                    {
                    
Login(playerid);
                    
SendClientMessage(playerid,COLOR_GREEN,"You have been automatically logged in.");
                    }
            else
            {
            
SendClientMessage(playerid,COLOR_ORANGE,"There was something wrong, you are not automatically logged in. Please /login.");
            }
    }
    else
    {
        
SendClientMessage(playerid,COLOR_ORANGE,"Welcome, you are NOT registered. Please /register.");
    }
        return 
1;}
//------------------------------------------------------------------------------
// OnPlayerDisconnect
//------------------------------------------------------------------------------
public OnPlayerDisconnect(playeridreason)
{
    new 
INI:File INI_Open(UserPath(playerid));
    
INI_SetTag(File,"data");
    
INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
    
INI_WriteInt(File,"Color",GetPlayerColor(playerid));
    
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    
INI_Close(File);
    return 
1;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// OnPlayerDeath +kills +Deaths etc..
//------------------------------------------------------------------------------
public OnPlayerDeath(playeridkilleridreason)
{
    
PlayerInfo[killerid][pKills]++;
    
PlayerInfo[playerid][pDeaths]++;
    return 
1;
}
//==============================================================================
//------------------------------------------------------------------------------
// Register command (/register)
//------------------------------------------------------------------------------
CMD:register(playerid,params[])
{
        new 
name[90];
        
GetPlayerIp(playerid,PlayerInfo[playerid][pIP],20);
        
GetPlayerName(playerid,name,sizeof(name));
        if (
PlayerInfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid,COLOR_GREEN,"You have been succesfully logged in.");
        if (
udb_Exists(name)) return SendClientMessage(playerid,COLOR_ORANGE,"Sorry, this account is already exists, please login or choose another nickname.");
        if (
strlen(params) == 0) return SendClientMessage(playerid,COLOR_ORANGE,"You must be type /register <password>");
        if (
udb_Create(name,params))
        {
                new 
file[256],ip[100],tmp[260];
                
GetPlayerName(playerid,name,sizeof(name)); format(file,sizeof(file),"%s.ini",udb_encode(name));
                
GetPlayerIp(playerid,ip,100);
                
INI_Set(file,"ip",tmp);
                
INI_WriteInt(File,"Skin",0);
                
INI_WriteInt(File,"Color",0);
                
INI_WriteInt(File,"Cash",0);
                
INI_WriteInt(File,"Admin",0);
                
INI_WriteInt(File,"Kills",0);
                
INI_WriteInt(File,"Deaths",0);
                
Stats[playerid][LoggedIn] = 1;
                
SendClientMessage(playerid,COLOR_GREEN"You have been succesfully registered and logged in.");
                
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
                return 
1;
        }
        return 
1;
}
//------------------------------------------------------------------------------
// Login command (/login)
//------------------------------------------------------------------------------
CMD:login(playerid,params[])
{
        new 
name[24];
        
GetPlayerIp(playerid,PlayerInfo[playerid][pIP],20);
        
GetPlayerName(playerid,name,sizeof(name));
        if (
Stats[playerid][LoggedIn] == 1) return SendClientMessage(playerid,COLOR_ORANGE,"Sorry, you are already logged in.");
        if (!
udb_Exists(name)) return SendClientMessage(playerid,COLOR_ORANGE,"This account doesn't exist, please use /register <password>.");
        if (
strlen(params)==0) return SendClientMessage(playerid,COLOR_ORANGE,"You must be type login <password>");
        if (
udb_CheckLogin(name,params))
        {
                new 
file[256], tmp3[100];
                
format(file,sizeof(file),"%s.ini",udb_encode(name));
                
GetPlayerIp(playerid,tmp3,100);
                
INI_Set(file,"ip",tmp3);
                
Login(playerid);
                
SendClientMessage(playerid,COLOR_GREEN,"You have been successfully logged in");
        }
        else
        {
                
Failed[playerid]++;
                if(
Failed[playerid] == 5)
                {
                        new 
string[128];
                        
format(stringsizeof(string), "%s has been kicked for bad login attempts.",name);
                        
SendClientMessageToAll(COLOR_REDstring);
                        
Kick(playerid);
                }
                return 
SendClientMessage(playerid,COLOR_ORANGE,"Login failed! incorrect password.");
        }
        return 
1;

And my errors are:

PHP код:
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(131) : error 017undefined symbol "LoggedIn"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(132) : error 017undefined symbol "udb_Exists"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(134) : error 017undefined symbol "udb_Create"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(137) : error 017undefined symbol "udb_encode"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(139) : error 017undefined symbol "INI_Set"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(140) : error 017undefined symbol "File"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(141) : error 017undefined symbol "File"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(142) : error 017undefined symbol "File"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(143) : error 017undefined symbol "File"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(144) : error 017undefined symbol "File"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(145) : error 017undefined symbol "File"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(146) : error 017undefined symbol "Stats"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(146) : warning 215expression has no effect
C
:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(146) : error 001expected token";"but found "]"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(146) : error 029invalid expressionassumed zero
C
:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(146) : fatal error 107too many error messages on one line
Compilation aborted
.Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
15 Errors

Reply
#9

I said to add LoggedIn
pawn Код:
enum pInfo
{
    pPass,
    pLoggedIn,
    pSkin,
    pColor,
    pCash,
    pAdmin,
    pKills,
    pDeaths,
    pIP[20],
    LoggedIn //Here
}
You are mixing dudb system with Y_Ini
pawn Код:
//Find
new file[256],ip[100],tmp[260];
//Change to
new File[256],ip[100],tmp[260];

//Find
INI_Set(file,"ip",tmp);
//Change to
INI_WriteString(File,"ip",tmp);
You want to use dudb or y_ini?
Reply
#10

I want to use only Y_ini sure.
And now I got this damn

PHP код:
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(133) : error 017undefined symbol "udb_Exists"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(135) : error 017undefined symbol "udb_Create"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(138) : error 017undefined symbol "file"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(138) : error 017undefined symbol "file"
C:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(138) : error 029invalid expressionassumed zero
C
:\Users\Edward\Desktop\PlanetS\pawno\KamAdminMB.pwn(138) : fatal error 107too many error messages on one line
Compilation aborted
.Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
6 Errors

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)