Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Ermin. poslato Februar 24, 2013, 13:59:58 POSLE PODNE

Naslov: [POMOC] >changepw< -.-
Poruka od: Ermin. poslato Februar 24, 2013, 13:59:58 POSLE PODNE
Skripta koju koristim: 0
Detaljan opis problema: pa ne znam napravit da mi sacuva password kad igrac odgovori na dijalog, pravio sam nesto i errore mi baca kao array size does not match itd.
Dio skripte:
Dijalog|

YCMD:changepass(playerid, params[], help)
{
   #pragma unused help
   new naslov[32];
   if(!IsPlayerConnected(playerid))
       return SCM(playerid, COLOR_GRAD3, "Moras biti ulogovan da bi mogao promijeniti password!");
   format(naslov,sizeof(naslov), "%s", PlayerName(playerid));
   ShowPlayerDialog(playerid, DIALOG_CHANGEPW, DIALOG_STYLE_INPUT, naslov, ""COL_YELLOW"Upisi novu lozinku:", "OK", "Odustani");
   return 1;
}


Odgovor na dijalog|

case DIALOG_CHANGEPW:
        {
            if(response)
            {
            new
                text[128];
            if(strlen(inputtext) >= 6 && strlen(inputtext) <= 35)
            {
               // INI_WriteString(playerFile, "Lozinka", inputtext);
                PlayerInfo[playerid][pPassword] = inputtext; // ovde error
                format(text, sizeof(text), "Uspjesno | Vasa nova lozinka je: %s", inputtext);
                SCM(playerid, COLOR_YELLOW, text);
            }
            else
            {
                SCM(playerid, COLOR_ZELENA, "Lozinka mora da bude izmedju [{ffffff}6"COL_ZELENA"] i [{ffffff}35"COL_ZELENA"] znakova!");
            }
         }
      }

Neke slike/video za lakse dobivanje pomoci(neobavezno):
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Blaeks poslato Februar 24, 2013, 14:04:44 POSLE PODNE
mozse probati ovako, ne garantujem da ce raditi YCMD:changepass(playerid,params[], help)
{
#pragma unused help
new test[129],novasifra[50];
if(sscanf(params,"s[50]",novasifra)) return SCM(playerid,-1,"Koristi: /changepass sifra");
WP_Hash(test,sizeof(test),novasifra);
new INI:File = INI_Open(Korisnici(playerid));
        INI_WriteString(File,"Password",hash);
        INI_Close(File);
return 1;
}
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Ermin. poslato Februar 24, 2013, 14:09:20 POSLE PODNE
Citat: Blaeks poslato Februar 24, 2013, 14:04:44 POSLE PODNE
mozse probati ovako, ne garantujem da ce raditi YCMD:changepass(playerid,params[], help)
{
#pragma unused help
new test[129],novasifra[50];
if(sscanf(params,"s[50]",novasifra)) return SCM(playerid,-1,"Koristi: /changepass sifra");
WP_Hash(test,sizeof(test),novasifra);
new INI:File = INI_Open(Korisnici(playerid));
        INI_WriteString(File,"Password",hash);
        INI_Close(File);
return 1;
}



Hvala ali i ne moram probat,znam da nece radit, pass mi se cuva kao varijabla, nema hash,
a kao drugo treba mi u dijalogu, jbg :D
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: FlasH poslato Februar 24, 2013, 14:13:34 POSLE PODNE
Ako nece probaj ovako ?
Isto ne garantiram da radi :D


case DIALOG_CHANGEPW:
        {
            if(response)
            {
            new
                text[128];
            if(strlen(inputtext) >= 6 && strlen(inputtext) <= 35)
            {
               new string[100],string1[128];
       new INI:File = INI_Open(UserPath(playerid));
       INI_SetTag(File,"data");
       INI_WriteString(File, "Lozinka", inputtext);
format(string, sizeof(string), "%s", inputtext);
PlayerInfo[playerid][pPassword] = string;
INI_Close(File);
                format(text, sizeof(text), "Uspjesno | Vasa nova lozinka je: %s", inputtext);
                SCM(playerid, COLOR_YELLOW, text);
            }
            else
            {
                SCM(playerid, COLOR_ZELENA, "Lozinka mora da bude izmedju [{ffffff}6"COL_ZELENA"] i [{ffffff}35"COL_ZELENA"] znakova!");
            }
         }
      }
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Blaeks poslato Februar 24, 2013, 14:19:45 POSLE PODNE
deletujes hash onda, ali svakako ti je laksi moj princip nego tvoj, ali kak hoces
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Ermin. poslato Februar 24, 2013, 14:28:24 POSLE PODNE
ma nema sanse, probo sam na 100 nacina nece,   >:( >:( >:( >:( >:( >:( >:( >:( >:( >:( >:(  :'( :'( :'( :'( :'( :'( :'( :'( :'( :'(

Ovako sam stavio



case DIALOG_CHANGEPW:
        {
            if(response)
            {
new
    text[128];
if(strlen(inputtext) >= 6 && strlen(inputtext) <= 35)
{
new string[35];
    new INI:File = INI_Open(Korisnici(playerid));
    INI_WriteString(File,"Lozinka",inputtext);
    format(string, sizeof(string), "%s", inputtext);
PlayerInfo[playerid][pPassword] = string;
    format(text, sizeof(text), "Uspjesno | Vasa nova lozinka je: %s", inputtext);
    SCM(playerid, COLOR_YELLOW, text);
}
else
{
    SCM(playerid, COLOR_ZELENA, "Lozinka mora da bude izmedju [{ffffff}6"COL_ZELENA"] i [{ffffff}35"COL_ZELENA"] znakova!");
}
}
}


i kako god da probam nece, errori :S
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: FlasH poslato Februar 24, 2013, 14:40:19 POSLE PODNE
#define DIALOG_PASSWORD 1

YCMD:lozinka(playerid, params[], help)
{
    ShowPlayerDialog(playerid,DIALOG_PASSWORD,DIALOG_STYLE_INPUT," Lozinka ","Unesite novu lozinku","Uredu","Izlaz");
return 1;
}

if(dialogid == DIALOG_PASSWORD)
{
    if(!response) return 1;
    if(response)
{
new string[100],string1[128];
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteString(File, "Password", inputtext);
format(string, sizeof(string), "%s", inputtext);
PlayerInfo[playerid][pPass] = string;
INI_Close(File);
format(string1,sizeof(string1),"Vasa nova lozinka glasi: %s",inputtext);
SendClientMessage(playerid,COLOR_WHITE,string1);
}
}


Ja sam kod sebe testao meni ovako radi ?
Zamjeni si "pPass" !
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Ermin. poslato Februar 24, 2013, 16:18:12 POSLE PODNE
Citat: FlasH poslato Februar 24, 2013, 14:40:19 POSLE PODNE
#define DIALOG_PASSWORD 1

YCMD:lozinka(playerid, params[], help)
{
    ShowPlayerDialog(playerid,DIALOG_PASSWORD,DIALOG_STYLE_INPUT," Lozink ","Unesite novu lozinku","Uredu","Izlaz");
return 1;
}

if(dialogid == DIALOG_PASSWORD)
{
    if(!response) return 1;
    if(response)
{
new string[100],string1[128];
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteString(File, "Password", inputtext);
format(string, sizeof(string), "%s", inputtext);
PlayerInfo[playerid][pPass] = string;
INI_Close(File);
format(string1,sizeof(string1),"Vasa nova lozinka glasi: %s",inputtext);
SendClientMessage(playerid,COLOR_WHITE,string1);
}
}


Ja sam kod sebe testao meni ovako radi ?
Zamjeni si "pPass" !


probat cu hvala
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Ermin. poslato Februar 24, 2013, 16:41:14 POSLE PODNE
znaci necu u dijalogu lakse je /changepass [password]


Probao sam i tvoje, Blaeks, al opet mi neke jebene errore izbaciva nez ni ja sta
evo ti sve sto je potrebno za to::



#define USER_FILE       "Igraci/%s.ini"
// varijabla je pPassword[129]
YCMD:changepass(playerid,params[], help)
{
#pragma unused help
new novasifra[50];
if(sscanf(params,"s[50]",novasifra)) return SCM(playerid,-1,"Koristi: /changepass sifra");
new INI:File = INI_Open(USER_FILE(playerid));
        INI_WriteString(File,"Password",novasifra);
        INI_Close(File);
return 1;
}

public LoadUserData(playerid, name[], value[])
{
    INI_String("Lozinka", PlayerInfo[playerid][pPassword], 129);
//--------------------------

//OnPlayerRegister:
INI_WriteString(playerFile, "Lozinka", lozinka);
//---------------------

//OnPlayerdisconnect:
SacuvajIgraca(playerid)
{
    new uFile[35];

    format(uFile, 35, USER_FILE, PlayerName(playerid));

    new INI:playerFile = INI_Open(uFile);
    INI_WriteString(playerFile, "Lozinka", PlayerInfo[playerid][pPassword]);
//------------------------------------


ne znam u cemu je problem :O
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Blaeks poslato Februar 24, 2013, 16:45:45 POSLE PODNE
naravno da moze, samo me poslusaj
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: Ermin. poslato Februar 24, 2013, 17:00:04 POSLE PODNE
brate sjebe mi se kad skinem hash,
evo ti sve potrebno pa ako mozes napravit ako ne nema veze :)


znaci necu u dijalogu lakse je /changepass [password]



#define USER_FILE       "Igraci/%s.ini"
// varijabla je pPassword[129]
YCMD:changepass(playerid,params[], help)
{
#pragma unused help
new novasifra[50];
if(sscanf(params,"s[50]",novasifra)) return SCM(playerid,-1,"Koristi: /changepass sifra");
new INI:File = INI_Open(USER_FILE(playerid));
        INI_WriteString(File,"Password",novasifra);
        INI_Close(File);
return 1;
}

public LoadUserData(playerid, name[], value[])
{
    INI_String("Lozinka", PlayerInfo[playerid][pPassword], 129);
//--------------------------

//OnPlayerRegister:
INI_WriteString(playerFile, "Lozinka", lozinka);
//---------------------

//OnPlayerdisconnect:
SacuvajIgraca(playerid)
{
    new uFile[35];

    format(uFile, 35, USER_FILE, PlayerName(playerid));

    new INI:playerFile = INI_Open(uFile);
    INI_WriteString(playerFile, "Lozinka", PlayerInfo[playerid][pPassword]);
//------------------------------------



pPassword mi se cuva kao "Lozinka" a ne "Password" mzoda je tu sta? :S
Naslov: Odg: [POMOC] >changepw< -.-
Poruka od: pax95 poslato Februar 24, 2013, 17:46:39 POSLE PODNE
Ovo sto ti govorim za ono tvoje prvo je:
PlayerInfo[playerid][pPassword] = inputtext; // ovde error
Ne mozes tako stavljati na string
Valjda ti je string pPassword.
treba ovako:
format(PlayerInfo[playerid][pPassword],128,"%s",inputtext);
I mozes napraviti funkciju da updateas pass ili tu samo dodaj da upises pass u fajl cisto da ga sacuva odmah tu...