need help to change something..
#1

I have a admin system in which on player connect, it tells that you are not register pleas register. I want a dialog of register on player connect and when players try to escape that dialog. He will get kicked.

Here is the code
pawn Код:
public OnPlayerConnect(playerid)
{
    //Auto log in
    new Query[256], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof pName);
    mysql_real_escape_string(pName, pName);
    format(Query, sizeof Query, "SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1", pName);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        new IP[16];
        GetPlayerIp(playerid, IP, sizeof IP);
        format(Query, sizeof Query, "SELECT * FROM `accounts` WHERE `Name` = '%s' and IP = '%s' LIMIT 1", pName, IP);
        mysql_query(Query);
        mysql_store_result();
        if(mysql_num_rows() != 0)
        {
            mysql_fetch_row(Query);
            new values[5];
            sscanf(Query, "p<|>{s[24]s[129]s[16]}a<i>[5]", values);
            SetPVarInt(playerid, "Admin", values[0]);
            GivePlayerMoney(playerid, values[1]);
            SetPlayerScore(playerid, values[2]);
            SetPVarInt(playerid, "Kills", values[3]);
            SetPVarInt(playerid, "Deaths", values[4]);
            SetPVarInt(playerid, "Logged", 1);
            SendClientMessage(playerid, COLOR_LIMEGREEN, "=> Welcome back! You've been automatically logged in.");
        }
        else SendClientMessage(playerid, COLOR_ORANGE, "=> Your account has been found, please use \"/login\" to log in!");
    }
    else SendClientMessage(playerid, COLOR_ORANGE, "=> You aren't registered! Use \"/register\" to register an account!");
    mysql_free_result();
    return 1;
}
pawn Код:
//Account-related

COMMAND:register(playerid, params[])
{
    if(GetPVarInt(playerid, "Logged")) return SendClientMessage(playerid, COLOR_ORANGE, "=> You're already logged in!");
    if(isnull(params)) return SendClientMessage(playerid, COLOR_ORANGE, "=> Usage: /register [pass]");
    new Query[320], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    mysql_real_escape_string(pName, pName);
    format(Query, sizeof Query, "SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1", pName);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows())
    {
        SendClientMessage(playerid, COLOR_ORANGE, "=> An account already exists under that name! Use \"/login\" to log in!");
        mysql_free_result();
        return 1;
    }
    mysql_free_result();
    WP_Hash(Query, 129, params);
    new IP[16];
    GetPlayerIp(playerid, IP, 16);
    format(Query, sizeof Query, "INSERT INTO `accounts` (Name, Password, IP, Admin, Money, Score, Kills, Deaths) VALUES ('%s', '%s', '%s', %i, %i, %i, %i, %i)",
        pName,
        Query,
        IP,
        GetPVarInt(playerid, "Admin"),
        GetPlayerMoney(playerid),
        GetPlayerScore(playerid),
        GetPVarInt(playerid, "Kills"),
        GetPVarInt(playerid, "Deaths"));
    mysql_query(Query);
    SetPVarInt(playerid, "Logged", 1);
    SendClientMessage(playerid, COLOR_LIMEGREEN, "=> Succesfully registered and automatically logged in!");
    return 1;
}

COMMAND:login(playerid, params[])
{
    if(GetPVarInt(playerid, "Logged")) return SendClientMessage(playerid, COLOR_ORANGE, "=> You're already logged in!");
    if(isnull(params)) return SendClientMessage(playerid, COLOR_ORANGE, "=> Usage: /login [pass]");
    new Query[256], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    mysql_real_escape_string(pName, pName);
    format(Query, sizeof Query, "SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1", pName);
    mysql_query(Query);
    mysql_store_result();
    if(!mysql_num_rows())
    {
        SendClientMessage(playerid, COLOR_ORANGE, "=> You're not registered! Use \"/register\" to register an account!");
        mysql_free_result();
        return 1;
    }
    mysql_free_result();
    WP_Hash(Query, 129, params);
    format(Query, sizeof Query, "SELECT * FROM `accounts` WHERE `Name` = '%s' AND `Password` = '%s' LIMIT 1", pName, Query);
    mysql_query(Query);
    mysql_store_result();
    if(!mysql_num_rows())
    {
        SetPVarInt(playerid, "LoginWarns", GetPVarInt(playerid, "LoginWarns") + 1);
        if(GetPVarInt(playerid, "LoginWarns") == 3)
        {
            format(Query, sizeof Query, "=> %s has been kicked for 3 wrong login attempts!", pName);
            SendClientMessageToAll(COLOR_ROYALBLUE, Query);
            Kick(playerid);
        }
            else
        {
            format(Query, sizeof Query, "=> Wrong password! Attempt %i out of 3.", GetPVarInt(playerid, "LoginWarns"));
            SendClientMessage(playerid, COLOR_ORANGE, Query);
        }
        return 1;
    }
    mysql_fetch_row(Query);
    new values[5];
    sscanf(Query, "p<|>{s[24]s[129]s[16]}a<i>[5]", values); //Enjoy editing.
    SetPVarInt(playerid, "Admin", values[0]);
    GivePlayerMoney(playerid, values[1]);
    SetPlayerScore(playerid, values[2]);
    SetPVarInt(playerid, "Kills", values[3]);
    SetPVarInt(playerid, "Deaths", values[4]);
    mysql_free_result();
    SetPVarInt(playerid, "Logged", 1);
    SendClientMessage(playerid, COLOR_LIMEGREEN, "=> Succesfully logged in!");
   
        //Ip setting
    GetPlayerIp(playerid, Query, 16);
    format(Query, sizeof Query, "UPDATE `accounts` SET `IP` = '%s' WHERE `Name` = '%s' LIMIT 1", Query, pName);
    mysql_query(Query);
    return 1;
}
When you convert. Please don't remove the auto login feature.
Thank you very much.
Reply
#2

I don't think nobody will help you in converting them to a dialog. It's easy as I pie, I could do that for you but I don't have much time. You could search for dialog tutorials.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)