Szerző Téma: Random  (Megtekintve 1013 alkalommal)

Nem elérhető KDDomi

  • 976
    • Profil megtekintése
Random
« Dátum: 2012. január 19. - 18:45:18 »
0 Show voters
Sziasztok! Hogylehet azt megoldani hogy generáljon egy véletlenszerû jelszót, és elis mentse egy .ini-be?
Aki segít annak +!

Random
« Válasz #1 Dátum: 2012. január 19. - 20:35:17 »
+1 Show voters

Nem elérhető KDDomi

  • 976
    • Profil megtekintése
Random
« Válasz #2 Dátum: 2012. január 20. - 13:24:29 »
0 Show voters
És elmondanád hogyan kell ezt kezelni vagy egy példát leirnál?

Random
« Válasz #3 Dátum: 2012. január 20. - 15:13:35 »
+1 Show voters
[pawn]#include <a_samp>
public
OnFilterScriptInit()
{
new
   str[10+1];
GenerateRandomString(str);
print(str);
return 1;
}
stock GenerateRandomString(string[ ], size = sizeof(string))
{
    static const
        alphaNumeric[ ] = { \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" }
    ;
    for(--size; size--; )
        string = alphaNumeric[random(sizeof(alphaNumeric) - 1)];
}
[/pawn]

Nem elérhető KDDomi

  • 976
    • Profil megtekintése
Random
« Válasz #4 Dátum: 2012. január 21. - 09:25:06 »
0 Show voters
Ez eddig megvan, De ha SendClientMessage-be akarom:
[pawn]SendClientMessage(playerid, -1, \"Random kódod: %s\", str);[/pawn]
Akkor scak egyfajtát kiir egyszer és ha mégegyszer beirom ugyan azt irja ki. De ment a +!

Random
« Válasz #5 Dátum: 2012. január 21. - 11:02:45 »
+1 Show voters
Ahhoz hogy másik véletlenszerû karakterláncot kapj, újra meg kell hívni a GenerateRandomString eljárást.
Pill és írok egyet parancsra és ahogy beírod a parancsot más és más eredményt fogsz kapni.
Kész is:
[pawn]#include <a_samp>
public
OnFilterScriptInit()
{
new
   str[10+1];
GenerateRandomString(str);
print(str);
return 1;
}
public
OnPlayerCommandText(playerid, cmdtext[ ])
{
if(strcmp(\"/rand\", cmdtext, true) == 0)
{
   new
      str[10+1];
   GenerateRandomString(str);
   SendClientMessage(playerid, -1, str);
   return 1;
}
return 0;
}
stock GenerateRandomString(string[ ], size = sizeof(string))
{
    static const
        alphaNumeric[ ] = { \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" }
    ;
    for(--size; size--; )
        string = alphaNumeric[random(sizeof(alphaNumeric) - 1)];
}
[/pawn]
Próbáld úgy értelmezni mint a \"GetPlayerName\" eljárást egy másik játékos nevének lekéréséhez újra meg kell hívni az eljárást.
Ha másik véletlenszerû karakterláncot akarsz újra meg kell hívni a \"GenerateRandomString\" funkciót.
« Utoljára szerkesztve: 2012. január 21. - 11:08:50 írta ɐʞzssǝlosz »

Nem elérhető nyE

  • 1745
    • Profil megtekintése
Random
« Válasz #6 Dátum: 2012. január 21. - 11:04:24 »
+1 Show voters
Azért mert az OnFilterScriptInit()-hez tetted és az csak egyszer generálja le.
A GenerateRandomString(str); tedd ahoz a parancshoz amikor használni akarod.
Pl.:
[pawn]if(strcmp(cmd,\"/parancsod\",true) == 0)
{
    new str[10+1], string[128];
    GenerateRandomString(str);
    format(string,sizeof(string),\"Random kódod: %s\",str);
    SendClientMessage(playerid,COLOR_GREEN,string);
    return 1;
}[/pawn]
E: Nem biztos, hogy jó. Várd meg Zsoleszkának a példáját is.
« Utoljára szerkesztve: 2012. január 21. - 11:05:57 írta Antonyo »

Random
« Válasz #7 Dátum: 2012. január 21. - 11:17:07 »
+1 Show voters
Idézetet írta: Antonyo date=1327140264\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"15697\" data-ipsquote-contentclass=\"forums_Topic
Azért mert az OnFilterScriptInit()-hez tetted és az csak egyszer generálja le.
A GenerateRandomString(str); tedd ahoz a parancshoz amikor használni akarod.
Pl.:
[pawn]if(strcmp(cmd,\"/parancsod\",true) == 0)
{
    new str[10+1], string[128];
    GenerateRandomString(str);
    format(string,sizeof(string),\"Random kódod: %s\",str);
    SendClientMessage(playerid,COLOR_GREEN,string);
    return 1;
}[/pawn]
E: Nem biztos, hogy jó. Várd meg Zsoleszkának a példáját is.
 
Semmi baja.
Annyit fûznék hozzá hogy a véletlenszerû karakterlánc hosszát a számára megadott array méretével lehet szabályozni.
A kódban a new str[10 + 1]; ben szereplõ 10-es érték jelzi hogy jelenleg 10 karakterbõl és +1 (NULL string) +bõl álló eredményt ad vissza.
pl.: new str[6 +1];  ( a plusz egyet azért írom hogy jelezze hogy az a NULL karakter helye)
 

str[0] = r;
str[1] = z;
str[2] = e;
str[3] = i;
str[4] = 4;
str[5] =  \'\\0\' // NULL

 
Amúgy szinte ugyanezt írtam én is.
http://sampforum.hu/index.php?topic=19789.msg214701#msg214701

Nem elérhető KDDomi

  • 976
    • Profil megtekintése
Random
« Válasz #8 Dátum: 2012. január 21. - 12:42:13 »
0 Show voters
Köszi müködik! Témát zárom! És +!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal