GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: dexi - 2012. február 02. - 20:02:09

Cím: A játékos neve elsõ felének megállapítása.
Írta: dexi - 2012. február 02. - 20:02:09
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);
Cím: A játékos neve elsõ felének megállapítása.
Írta: atyo16 - 2012. február 02. - 20:51:12
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ó?
Cím: A játékos neve elsõ felének megállapítása.
Írta: dexi - 2012. február 03. - 09:39:08
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!\"
Cím: A játékos neve elsõ felének megállapítása.
Írta: 1ST_Chr - 2012. február 03. - 12:18:47
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]
Cím: A játékos neve elsõ felének megállapítása.
Írta: Norby - 2012. február 03. - 12:54:53
[mod]Kategória használata kötelezõ! Javítva.[/mod]
Cím: A játékos neve elsõ felének megállapítása.
Írta: DrAkE - 2012. február 03. - 15:41:42
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).
Cím: A játékos neve elsõ felének megállapítása.
Írta: dexi - 2012. február 03. - 17:43:04
Írtam tag-et... de valamiért elbugol..
Cím: A játékos neve elsõ felének megállapítása.
Írta: Game94 - 2012. február 04. - 09:11:40
É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.
Cím: A játékos neve elsõ felének megállapítása.
Írta: 1ST_Chr - 2012. február 04. - 21:54:43
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]
Cím: A játékos neve elsõ felének megállapítása.
Írta: Zsolesszka - 2012. február 06. - 03:13:46
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).
Cím: A játékos neve elsõ felének megállapítása.
Írta: DrAkE - 2012. február 06. - 22:40:07
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);