Jump to content

Problema login & bani


Casio

Recommended Posts

Salut,

Tin sa precizez ca nu ma pricep la scripting dar v-as ruga frumos sa imi spuneti si mie cum fac urmatoarele doua chestii:

 

1. Cand intru pe server, ma logheaza automat fara a fi nevoie sa introduc parola. Cum as putea sa fac in asa fel incat cand cineva intra pe server sa ii ceara parola?

2. As vrea sa modific suma de inceput care ti-o da cand intri pe server. Cum pot face asta?

 

Multumesc!

Link to comment
Share on other sites

1. Dute la OnPlayerConnect si cauta ceva legat de acel auto-login. Adica vezi unde ia ip-ul jucatorului si il cauta in baza de date (asta mi s-ar parea logic sa fie, auto-login bazat pe ip) si apoi stergi aia si pui sa ii caute numele in baza dedate si sa cheme un callback si in acel callback sa verifici daca contul exista in baza de date , si daca exista sa ii afisezi un dialog de login si daca nu un dialog deregister. Apoi la dialoguri verifici daca parola este aceiasi si daca e ii incarci datele, daca nu ii dai kick sau ma rog ii mai ceri odata sa puna parola. La dialogul register ii vei introduce numele si parola in baza de date si apoi ori sa ii ceri sa se logheze sau sa il spawnezi direct.

 

2.Depinde de gm, spre exemplu la bigzone am vazut ca e o variabila "dollah" care semnifica bani de inceput, de obicei bani de inceput trebuie dati la inregistrare dar amu depinde.

  • Upvote 1
Link to comment
Share on other sites

Se salveaza in fisiere pe care le gasesti in scriptfiles (deobicei scriptfiles > accounts sau cum e trecut)

Daca nu s-ar salva, nu ar avea logica sa mai ai sistem de login/register pentru ca ar fi fost inutil avand in vedere ca nu se salveaza progresul. Deci, ar trebui sa se salveze.(undeva)

  • Upvote 1
Link to comment
Share on other sites

Nimeni nu s-a nascut invatat, toti am invatat (din greseli , din prosti facute) .

Eu unul am inceput sa scriptez pe PPC Trucking, mie unu mi s-a parut foate usor(e tot pe fisiere, dar tot nu am invatat mare lurcru despre pawn + fisiere)

Daca vrei sa incepi sa inveti, incepe cu lucruri de baza (comenzi, functii etc) , sa incepi sa intelegi logica din spatele lor si cum functioneaza.

Apoi muta-te pe sisteme din ce in ce mai complexe , nu te teme daca gresesti si cu cea mai mica chestie, dai un search pe google sau intrebi pe forumuri si ti se raspunde.

https://raw.githubusercontent.com/compuphase/pawn/66e67291326b193045e52e4d6bcb51663260d6c3/doc/pawn-lang.pdf

Aici e linku de la manualul limbajului pawn( deisgur , trebuie sa stii si ceva engleza, pentru ca fara engleza anumite concepe nu ai cum sa le intelegi).

 

Si legatura cu gm-ul tau pe care incerci sa lucrezi , posteaza tot public-ui OnPlayerConnect pentru ca cel mai probabil (100%) se afla auto-login.

Presupun si sper ca acel gm foloseste y_ini pentru fisiere in loc de functiile default ale pawn. Daca foloseste y_ini gasesti foarte multe tutoriale despre el, chiar foarte multe.

http://forum.sa-mp.com/showthread.php?t=273088

http://forum.sa-mp.com/showthread.php?t=570912

http://forum.sa-mp.com/showthread.php?t=352703

http://forum.sa-mp.com/showthread.php?t=570958

Si astea sunt primele lucruri care iti apar cand scrii y_ini tutorial. (dar la fel , ai nevoie de engleza)

Cum am zis, incepe de la baza sa vezi cum merge treaba si apoi incearca chestii din ce in ce mai complexe(ideei propri de ce nu, sau pur si simplu lucruri pe care vrei sa le copiezi)

  • Upvote 1
Link to comment
Share on other sites

Cand ajung acasa iti dau tot ala si sper cumva sa rezolv asta pentru ca asta ar mai fi singura problema majora de rezolvat.

As vrea sa il pun pe un host diseara daca termin si daca ma ajuti sa fac aia cu login.

Link to comment
Share on other sites

Spoiler

}

public OnPlayerRequestClass(playerid, classid)
{
    SpawnPlayer(playerid);
    return 1;
}

public OnPlayerConnect(playerid) // REMOVE MAPPING
{

Spoiler

        {
            SendClientMessage(playerid, GREY, "You have a Non-Roleplay name, please use Firstname_Lastname format.");
            INI_Remove("Accounts/None.ini");
            Kick(playerid);
        }
        else if(fexist(Accounts(playerid)))
        {
            new CIP[21], OIP[21];
            GetPlayerIp(playerid, CIP, sizeof(CIP));
            INI_Open(Accounts(playerid));
            INI_ReadString(PlayerStat[playerid][LastIP],"LastIP",21);
            if(!strcmp(CIP,OIP,false)) //Auto IP LOGIN
            {

Spoiler

}
    if(dialogid == DIALOG_LOGIN)
    {
        if(!response)
        {
            SendClientMessage(playerid, GREY, "You didn't log in.");
            Kick(playerid);
        }
        if(response)
        {
            if(!strlen(inputtext))
            {
               SendClientMessage(playerid, GREY, "You have been kicked for not entering the correct password.");
               Kick(playerid);
            }
            if(INI_Open(Accounts(playerid)))
            {
                INI_ReadString(PlayerStat[playerid][Password],"Password",20);
                if(strcmp(inputtext,PlayerStat[playerid][Password],false))
                {
                   if(PlayerStat[playerid][WrongPw] == 1)
                   {
                       SendClientMessage(playerid, GREY, "You have been kicked for not entering the correct password.");
                       Kick(playerid);
                   }
                   else
                   {
//                       ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Log In","You have entered an incorrect password.\nPlease input this account password to log in.","Login","Quit");
                       SendClientMessage(playerid, GREY, "You have been kicked for typing the wrong password.");
                       Kick(playerid);
                   }
                }
                else
                {

                    new str[128];
//                    format(str, sizeof(str), "Welcome Back %s, your last login was on %d/%d/%d at %d:%d:%d.", GetOOCName(playerid), PlayerStat[playerid][LastLoginYear], PlayerStat[playerid][LastLoginMonth], PlayerStat[playerid][LastLoginDay], PlayerStat[playerid][LastLoginHour], PlayerStat[playerid][LastLoginMinute], PlayerStat[playerid][LastLoginSecond]);
                    SendClientMessage(playerid, GREEN, str);
                    format(str, sizeof(str), "~w~Welcome Back ~n~~y~ %s", GetOOCName(playerid));
                    GameTextForPlayer(playerid, str, 3000, 1);
                    SendClientMessage(playerid, GREEN, SERVER_MOTD);
                    PlayerStat[playerid][BPNMB] = 0;
                    PlayerStat[playerid][AdminLogged] = 0;
                    PlayerPayDayT[playerid] = SetTimerEx("PlayerPayDay", 60000, true, "i", playerid);
                    if(PlayerStat[playerid][GangID] >= 1)
                    {
                        format(str, sizeof(str), "Gang MOTD: %s", GangStat[PlayerStat[playerid][GangID]][MOTD]);
                        SendClientMessage(playerid, GangStat[PlayerStat[playerid][GangID]], str);
                    }
                    PlayerStat[playerid][Logged] = 1;
                    LoadPlayerData(playerid);
                    INI_Save();
                    INI_Close();

                }

 @Banditul

Edited by Casio
Link to comment
Share on other sites

Stergi 

 INI_ReadString(PlayerStat[playerid][LastIP],"LastIP",21);
            if(!strcmp(CIP,OIP,false)) //Auto IP LOGIN
            {

Si ce mai contine acea acolada de la 

if(!strcmp(CIP,OIP,false)) //Auto IP LOGIN

Si ar trebui sa scoti auto-loginul , si din cate vad ai deja login/register deci ar trebui sa fie ok

 

PS: gm-u asta cred ca e mai batran ca mine(folosete functiile de la samp pentru fisiere) :))

Edited by Banditul
Link to comment
Share on other sites

Acum 1 oră, Banditul a spus:

Stergi 


 INI_ReadString(PlayerStat[playerid][LastIP],"LastIP",21);
            if(!strcmp(CIP,OIP,false)) //Auto IP LOGIN
            {

Si ce mai contine acea acolada de la 


if(!strcmp(CIP,OIP,false)) //Auto IP LOGIN

Si ar trebui sa scoti auto-loginul , si din cate vad ai deja login/register deci ar trebui sa fie ok

 

PS: gm-u asta cred ca e mai batran ca mine(folosete functiile de la samp pentru fisiere) :))

Nici asa nu merge :(

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.