No one seems to be able to help
#1

This is something i've been posting over and over for the last week, and I haven't gotten ONE answer, i don't know if it's too hard or i'm not explaining it enough.

I have LuxAdmin as an admin system. If i put the below code into OnPlayerSpawn, then it will work good. But, if i put it in to OnPlayerConnect, it does not work, the dialog appears, but when you type into the dialog and press enter, the dialog closes and nothing happens (No logging in, registering) I don't know what the problem is.

pawn Код:
//==============================================================================
// Request Register
//==============================================================================
 if(AccInfo[playerid][Registered] == 0 && ServerInfo[MustRegister] == 1)
    {
        #if USE_DIALOGS == true
        new rstring[256];
        format(rstring,256,"Welcome to the '%s'\n\nAccount '%s' is not registred!\n\nEnter the password to Register your Account:",GetServerHostName(),pName(playerid));
        ShowPlayerDialog(playerid,DIALOGID+66,DIALOG_STYLE_INPUT,"Register Account",rstring,"Register","Quit");
        #endif
        return 1;
    }
//==============================================================================
// Request Login
//==============================================================================
    if(ServerInfo[MustLogin] == 1 && AccInfo[playerid][Registered] == 1 && AccInfo[playerid][LoggedIn] == 0)
    {
        #if USE_DIALOGS == true
        new lstring[256];
        format(lstring,green,"That account '%s 'is Registered!\n\n Login to access your Account:",pName(playerid));
        ShowPlayerDialog(playerid,DIALOGID+67,DIALOG_STYLE_INPUT, "Login Account",lstring,"Login","Quit");
        #endif
        return 1;
    }
Reply
#2

Код:
format(lstring,green,"That account '%s 'is Registered!\n\n Login to access your Account:",pName(playerid));
green? maybe in OnPlayerConnect you have some green definition.. idk, at least it was the only "error" i found
Reply
#3

The green works as far as i know, considering that text appears green when i connect.

Although, i doubt that would be a problem as i would most likely get a compiling error if that was the case.
Reply
#4

May we see the OnDialogResponse callback with the register dialog?
Reply
#5

yes you may

pawn Код:
/==============================================================================
//---------------
// Dialog - REGISTER
//---------------
//==============================================================================
    if (dialogid == DIALOGID+66)
    {
        if(response == 0 && ServerInfo[MustRegister] == 1)
        {
            Kick(playerid);
        }
        if(response)
        {
            if (strlen(inputtext) < 4 || strlen(inputtext) > 20)
            {
                new rstring[256];
                format(rstring,256,"Sorry %s\n\nThe length of your password should contain more \nthan 3 characters and less than 20 characters! \n\n Please, re-enter the Password:",pName(playerid));
                return ShowPlayerDialog(playerid,DIALOGID+68,DIALOG_STYLE_INPUT,"Register Error!",rstring,"Register","Quit");
            }
            if (udb_Create(PlayerName2(playerid)))
            {
                ShowPlayerDialog(playerid,DIALOG_TYPE_QUESTION,DIALOG_STYLE_INPUT,"LuxAdmin - Account Safety Question","Type a security question, for when you forget\n your password, you just answer this Question.","Next","End");
                new file[256],name[MAX_PLAYER_NAME], buf[145],tmp3[100];
                new strdate[20], year,month,day;
                getdate(year, month, day);
                WP_Hash(buf, sizeof(buf), inputtext);
                GetPlayerName(playerid,name,sizeof(name));
                format(file,sizeof(file),"/LuxAdmin/Accounts/%s.sav",udb_encode(name));
                GetPlayerIp(playerid,tmp3,100);
                dini_Set(file,"Password",buf);
                dini_Set(file,"Ip",tmp3);
                dUserSetINT(PlayerName2(playerid)).("Registered",1);
                format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);
                dini_Set(file,"RegisteredDate",strdate);
                dUserSetINT(PlayerName2(playerid)).("Loggedin",1);
                dUserSetINT(PlayerName2(playerid)).("Banned",0);
                dUserSetINT(PlayerName2(playerid)).("Level",0);
                dUserSetINT(PlayerName2(playerid)).("AccountType",0);
                dUserSetINT(PlayerName2(playerid)).("LastOn",0);
                dUserSetINT(PlayerName2(playerid)).("Money",0);
                dUserSetINT(PlayerName2(playerid)).("Kills",0);
                dUserSetINT(PlayerName2(playerid)).("Deaths",0);
                dUserSetINT(PlayerName2(playerid)).("WantedLevel",0);
                #if SaveScore == true
                dUserSetINT(PlayerName2(playerid)).("Score",0);
                #endif
                dUserSetINT(PlayerName2(playerid)).("Hours",0);
                dUserSetINT(PlayerName2(playerid)).("Minutes",0);
                dUserSetINT(PlayerName2(playerid)).("Seconds",0);
                AccInfo[playerid][LoggedIn] = 1;
                AccInfo[playerid][Registered] = 1;
                SendClientMessage(playerid, green, "|- You are now Registered, and have been automaticaly Logged in! -|");
                PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
                return 1;
            }
        }
        return 1;
    }
//==============================================================================
//---------------
// Dialog - LOGIN
//---------------
//==============================================================================
    if (dialogid == DIALOGID+67)
    {
        if(response == 0 && ServerInfo[MustLogin] == 1)
        {
            Kick(playerid);
        }
        if(response)
        {
            new lstring[256];
            new file[128], Pass[256];
            format(file,sizeof(file),"/LuxAdmin/Accounts/%s.sav",udb_encode(PlayerName2(playerid)));

            Pass = dini_Get(file, "Password");
            new buf[145];
            WP_Hash(buf, sizeof(buf), inputtext);
           
            AccInfo[playerid][NoQuestion] = dUserINT(PlayerName2(playerid)).("NoQuestion");

            if(strcmp(Pass, buf, false) == 0)
            {
                new tmp3[100], string[128];
                format(file,sizeof(file),"/LuxAdmin/Accounts/%s.sav",udb_encode(PlayerName2(playerid)));
                GetPlayerIp(playerid,tmp3,100);
                dini_Set(file,"Ip",tmp3);
                LoginPlayer(playerid);
                PlayerPlaySound(playerid,1057,0.0,0.0,0.0);

                if(AccInfo[playerid][Level] > 0)
                {
                    switch(AccInfo[playerid][Level])
                    {
                        case 1: AdmRank = "Starter Administrator";
                case 2: AdmRank = "Junior Administrator";
                case 3: AdmRank = "Intermediate Administrator";
                case 4: AdmRank = "Head Administrator";
                case 5: AdmRank = "Executive Admin";
                case 6: AdmRank = "Co-Owner";
                case 7: AdmRank = "Owner";
                    }
                    if(AccInfo[playerid][Level] > 5)
                    {
                        AdmRank = "Head Administrator";
                    }
                    if(AccInfo[playerid][pVip] > 0)
                    {
                        switch(AccInfo[playerid][pVip])
                        {
                        case 1: AccType = "Silver";
                        case 2: AccType = "Gold";
                        case 3: AccType = "Premium";
                        }
                        format(string,sizeof(string),"|- You have Successfully Logged! | Account: %s | Level %d - %s -|", AccType, AccInfo[playerid][Level], AdmRank);
                        return SendClientMessage(playerid,0x00C378AA,string);
                    }
                    else
                    {
                        format(string,sizeof(string),"|- You have Successfully Logged! | Level %d - %s -|", AccInfo[playerid][Level], AdmRank);
                        return SendClientMessage(playerid,green,string);
                    }
                }
                else
                {
                    if(AccInfo[playerid][pVip] > 0)
                    {
                        switch(AccInfo[playerid][pVip])
                        {
                        case 1: AccType = "Silver";
                        case 2: AccType = "Gold";
                        case 3: AccType = "Premium";
                        }
                        format(string,sizeof(string),"|- You have Successfully logged! | Account: %s -|", AccType);
                        return SendClientMessage(playerid,0x00C896AA,string);
                    }
                    else return SendClientMessage(playerid,green,"|- You have Successfully logged! -|");
                }
            }
            else
            {
                AccInfo[playerid][FailLogin]++;
                printf("LOGIN: Failed Login: %s. Wrong password (%s) (%d)", PlayerName2(playerid), inputtext, AccInfo[playerid][FailLogin] );
                if(AccInfo[playerid][FailLogin] == MAX_FAIL_LOGINS)
                {
                    new string[128]; format(string, sizeof(string), "|- Player %s has been automatically kicked (Reason: Many attempts Incorrect Passwords) -|", PlayerName2(playerid) );
                    SendClientMessageToAll(red, string);
                    print(string);
                    Kick(playerid);
                }
                if(AccInfo[playerid][NoQuestion] == 1)
                {
                    format(lstring,256,"Sorry '%s'\n\nYour entered password is Incorrect!\nPlease, re-enter the Correct Password:",pName(playerid));
                    return ShowPlayerDialog(playerid,DIALOGID+69,DIALOG_STYLE_INPUT,"Login Error",lstring,"Login","Quit");
                }
                if(AccInfo[playerid][NoQuestion] == 0)
                {
                    format(lstring,256,"Sorry '%s'\n\nYour entered password is Incorrect!\nPlease, re-enter the Correct Password:\n\nOr type the response of your security question:\n\n \"%s\"",pName(playerid),dini_Get(file, "Question"));
                    return  ShowPlayerDialog(playerid,DIALOGID+69,DIALOG_STYLE_INPUT,"Login Error",lstring,"Login","Quit");
                }
            }
        }
    }
Reply
#6

NOTE: You should fix that comment ( first line )

EDIT: So it just disappears and does nothing else whenever you click enter if it's in OnPlayerConnet?
Try to debug it, add prints all around the dialog response. See where it stops, it might help you.
I can't notice any wrong thing here. I will keep searching.
Reply
#7

I just forgot to copy that extra bracket in my script.. no worries.

I'm not sure what could possibly be wrong with this script

Maybe if i could find another admin script.

Not too much commands, automatic register + login system + VIP system, and register dialog system appears when the player connects to the server.
Reply
#8

I honestly don't know.
Reply
#9

why u put green in format?? u cant define color there? maybe show onplayerconnect
Reply
#10

Try putting it into OnPlayerRequestClass() instead if I remember correctly there are some problems trying to display dialogs in OnPlayerConnect().
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)