Szerző Téma: A játékos neve elsõ felének megállapítása.  (Megtekintve 1463 alkalommal)

dexi

  • Vendég
A játékos neve elsõ felének megállapítása.
« Dátum: 2012. Február 02. - 20:02:09 »
+1 Show voters
Sziasztok!
Ez a kis code az RP tulajdonosoknak jöhet jól, vagy bárhol ahol a valós név használata szükséges.
Használunk hozzá:
- strlen,
- strdel,
- strfind
 

new Nev[60] = \"Florian_Horvath\";
new AlsoVonal = strfind(Nev, \"_\", false);
new SzovegVege = strlen(Nev);
strdel(Nev, AlsoVonal, SzovegVege);
printf(\"\\n %s \\n\", Nev);
« Utoljára szerkesztve: 2012. Február 04. - 09:16:40 írta <[Lu$ta]> »

A játékos neve elsõ felének megállapítása.
« Válasz #1 Dátum: 2012. Február 02. - 20:51:12 »
0 Show voters
Bocs de én még nem igazán vagyok ilyenben jártas és ebbõl nem vettem ki hogy ez mit is tud tulajdonképpen..Mit tud ez/mire jó?

dexi

  • Vendég
A játékos neve elsõ felének megállapítása.
« Válasz #2 Dátum: 2012. Február 03. - 09:39:08 »
0 Show voters
Megtudjuk vele állapítani a \"_\" jel elõtti részt.. például connectnél ne azt írja hogy \"Üdv a szerveren Pista_Black\" hanem \"Üdv a szerveren Pista!\"

A játékos neve elsõ felének megállapítása.
« Válasz #3 Dátum: 2012. Február 03. - 12:18:47 »
+1 Show voters
Szerintem ez sokkal jobb és modernebb viszont plugin és include kell hozzá :)
[pawn]
new Nev[60] = \"Florian_Horvath\";
new NevElso[30];
new NevMasodik[30];
sscanf(Nev, \"p<_>s[30]s[30]\",NevElso, NevMasodik);
printf(\"%s, a %s családból csatlakozott a szerverhez\",NevElso,NevMasodik);
[/pawn]
Kimenet:
[pawn]
Florian, a Horvath családból csatlakozott a szerverhez
[/pawn]
« Utoljára szerkesztve: 2012. Február 03. - 12:20:47 írta 1ST_Chr »

Nem elérhető Norby

  • 1575
    • Profil megtekintése
A játékos neve elsõ felének megállapítása.
« Válasz #4 Dátum: 2012. Február 03. - 12:54:53 »
0 Show voters
[mod]Kategória használata kötelezõ! Javítva.[/mod]

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
A játékos neve elsõ felének megállapítása.
« Válasz #5 Dátum: 2012. Február 03. - 15:41:42 »
0 Show voters
Idézetet írta: 1ST_Chr date=1328267927\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"16442\" data-ipsquote-contentclass=\"forums_Topic
Szerintem ez sokkal jobb és modernebb viszont plugin és include kell hozzá :)
[pawn]
new Nev[60] = \"Florian_Horvath\";
new NevElso[30];
new NevMasodik[30];
sscanf(Nev, \"p<_>s[30]s[30]\",NevElso, NevMasodik);
printf(\"%s, a %s családból csatlakozott a szerverhez\",NevElso,NevMasodik);
[/pawn]
Kimenet:
[pawn]
Florian, a Horvath családból csatlakozott a szerverhez
[/pawn]
 
Minek túl bonyolítani?
 

new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
    i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
   nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev

 
Illetve az sscanfos kód nem valami jó, mivel tegyük fel akinek három tagos neve van (pl: John_W_Smith) akkor az alábbit fogja kiírni: John W_Smith. Így ezzel a kóddal átfutunk a nevén egy ciklussal és ha az \"i\" tag egyenlõ \"_\"-vel akkor kicseréljük \" \"-re (azaz szóközre).

dexi

  • Vendég
A játékos neve elsõ felének megállapítása.
« Válasz #6 Dátum: 2012. Február 03. - 17:43:04 »
0 Show voters
Írtam tag-et... de valamiért elbugol..

Nem elérhető Game94

  • 405
    • Profil megtekintése
A játékos neve elsõ felének megállapítása.
« Válasz #7 Dátum: 2012. Február 04. - 09:11:40 »
0 Show voters
És akkor mi van ha én ilyen néven jövök fel: ___
Arra is kéne ellenõrzés hogy az alsó vonal nem-e az elsõ karakter, meg hogy ne lehessen 2 alsó vonalnál több a nevében.

A játékos neve elsõ felének megállapítása.
« Válasz #8 Dátum: 2012. Február 04. - 21:54:43 »
0 Show voters
Idézetet írta: DrAkE date=1328280102\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"16442\" data-ipsquote-contentclass=\"forums_Topic


new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
    i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
   nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev

 
Illetve az sscanfos kód nem valami jó, mivel tegyük fel akinek három tagos neve van (pl: John_W_Smith) akkor az alábbit fogja kiírni: John W_Smith. Így ezzel a kóddal átfutunk a nevén egy ciklussal és ha az \"i\" tag egyenlõ \"_\"-vel akkor kicseréljük \" \"-re (azaz szóközre).
 


Minek túl bonyolítani?
 
[/quote]

A játékos neve elsõ felének megállapítása.
« Válasz #9 Dátum: 2012. Február 06. - 03:13:46 »
0 Show voters
Idézetet írta: 1ST_Chr date=1328388883\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"16442\" data-ipsquote-contentclass=\"forums_Topic


 

new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
    i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
   nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev

 
Illetve az sscanfos kód nem valami jó, mivel tegyük fel akinek három tagos neve van (pl: John_W_Smith) akkor az alábbit fogja kiírni: John W_Smith. Így ezzel a kóddal átfutunk a nevén egy ciklussal és ha az \"i\" tag egyenlõ \"_\"-vel akkor kicseréljük \" \"-re (azaz szóközre).
 


Minek túl bonyolítani?
 
[/quote]
 
[/quote]
@1ST_Chr
Nem tudom számodra ezen mi a bonyolult, de sscanf már bonyolult, a first verzió ebben a témában meg túl sok native funkciót használ (amiben szintén belsõ ciklusok vannak), emiatt már bonyolultabb.
DrAke megoldása meg egyetlen for ciklussal végzi a dolgát. (lehet rajt egyszerûsíteni még. (tipp: strlen nélkül)) (persze ez nem tér vissza a lehetséges vezetéknév tartalmával csak kicseréli az _(alsóvonal)-kat, szóközre)
Bármelyik szöveg részt vissza lehet kapni, függetlenül attól, mennyi _ (alsóvonal) szerepel a karakterláncban.
Még az strtok függvényt is fel lehet használni egy kis módosítással. (delimiter paraméter kibõvítéssel).

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
A játékos neve elsõ felének megállapítása.
« Válasz #10 Dátum: 2012. Február 06. - 22:40:07 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1328494426\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"16442\" data-ipsquote-contentclass=\"forums_Topic


 

 

new nev[16] = \"Teszt_Nev\";
print(nev); //kiírja az alábbit: Teszt_Nev
new
    i = -1;
while((++i < strlen(nev)))
if(nev == \'_\')
   nev = \' \';
print(nev); //kiírja az alábbit: Teszt Nev

 
Illetve az sscanfos kód nem valami jó, mivel tegyük fel akinek három tagos neve van (pl: John_W_Smith) akkor az alábbit fogja kiírni: John W_Smith. Így ezzel a kóddal átfutunk a nevén egy ciklussal és ha az \"i\" tag egyenlõ \"_\"-vel akkor kicseréljük \" \"-re (azaz szóközre).
 


Minek túl bonyolítani?
 
[/quote]
 
[/quote]
@1ST_Chr
Nem tudom számodra ezen mi a bonyolult, de sscanf már bonyolult, a first verzió ebben a témában meg túl sok native funkciót használ (amiben szintén belsõ ciklusok vannak), emiatt már bonyolultabb.
DrAke megoldása meg egyetlen for ciklussal végzi a dolgát. (lehet rajt egyszerûsíteni még. (tipp: strlen nélkül)) (persze ez nem tér vissza a lehetséges vezetéknév tartalmával csak kicseréli az _(alsóvonal)-kat, szóközre)
Bármelyik szöveg részt vissza lehet kapni, függetlenül attól, mennyi _ (alsóvonal) szerepel a karakterláncban.
Még az strtok függvényt is fel lehet használni egy kis módosítással. (delimiter paraméter kibõvítéssel).
 
[/quote]
Még egyszerûbb:
 

print(\"Betöltve!\");
new nev[16] = \"Teszt_Nev\";
print(nev);
new
    i = 0;
while(((nev == \'_\') ? (nev = \' \') : (nev = nev))) i++;
print(nev);

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal