Szerző Téma: [Leírás]String Formázása.  (Megtekintve 3745 alkalommal)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
[Leírás]String Formázása.
« Dátum: 2012. Október 11. - 16:29:26 »
0
Tartalma
 
 
° Üzenet Formázása
° Játékos Nevének lekérdezése
° Karakterlánc manipuláció
° Végeredmény
° Referenciák
° Következtetés
 
Bevezetés
 
 
Ebben a leírásban megtanulod az üzenet forámzását és a játékos nevét lekérését. Megírtam ezt a leírást mert minden ember a nehezebb módon formáza az üzeneteket és ezért gondoltam minél egyszerûbben legyen egy leírás ahol minden le van írva. Most egyben leírom, hogy lehet formázni egy üzenetett ha egy játékos csatlakozik a szerverre és, hogy kiírja a nevét pl: \"ZyZu csatlakozott a Szerverre!\". A string a leggyakoribb kód amit lehet használni sokféle képpen és sok módon is.  Használni fogjuk az \"OnPlayerConnect\" visszahívást.
 
Definálása
 
Hát 2 féle ez a név lekérése és string létrehozása vagyis másnéven \"ketrec\".
 
new name[MAX_PLAYER_NAME], string[23 + MAX_PLAYER_NAME];

 
A [MAX_PLAYER_NAME] lekéri a játékos nevét. A string hossza az 24 vagyis ha feljön egy játéos a szerverre egybõl a [MAX_PLAYER_NAME] lekérdezi a játékos beírt nevét és átformázza a string segítségével. Mindig figyelni kell, hogy a string számát nem kell lejebb vinni mert lehet a játékos neve hossza 15 betûs és nem írja ki a nevét rendesen hanem csak a felét ez a string miatt lehet.
 
Játékos Nevének lekérdezése
 
Ez a függvény lekéri a játékos nevét \"GetPlayerName\".
 
GetPlayerName(playerid, name, sizeof(name));

 
°  sizeof(name) - ez lesz a tömb mérete ami megállapítja a játékos nevének a hosszát \"name\".
A név lekérdezésért van más megoldás is ezt lehet több féle képpen csinálni:
 
GetPlayerName(playerid, name, 24);

 

Üzenet Formázása
 

format(string, sizeof(string), \"%s csatlakozott a szerverre!\", name);

 
Ez a sor jelzi a forgatókönyvet majd formázza és tárolja az üzenetet ez a \"string\" lesz.
A \"sizeof\" funkció az üzenet hosszát lekérdezi, hogy megegyezik -e a tömb méretével ami a változó \"húr\", ami most nekem 23 ± MAX_PLAYER_NAME (23 +24 = 47).
Az oka, amiért a tömb mérete 23 +24, hogy \"%s csatlakozott a szerverre!\" tartalmaz 22 karakter szóközökkel együtt, kivéve a \"% s\". Amikor a formázás van akkor a bízonyos \"null terminator\" besegít neki, ami azt jelenti üzenet karakter \'\\ 0\' (NULL) lesz a végén.
 
SendClientMessageToAll(0xFFFF00FF, string);]

 
Ez a kis függvény küldi el a játékosoknak a chat -be, hogy a játékos csatlakozott a szerverre. A szín megváltoztatását \"0xFFFF00FF\" ebben a helyében más szín kodot teszûnk ezt meg lehet csinálni na színkeverõvel egy link: http://sampforum.hu/index.php?page=color
 
Egyéb helyõrzõk
 
Ennek az az oka, hogy az általunk használt \"% s\", mint helyõrzõ, azért van, mert az üzenet egy string. A string egy speciális tömb, amely használatával létre tudunk hozzni több karaktert.
Helyõrzõk
%b
%c
%d
%f 
%i
%s
%x
 
Karakterlánc Manipuláció
 
Íme a fórmázási lista:
 

bool: ispacked(const string[])
memcpy(dest[], const source[], index=0, numbytes, maxlength=sizeof dest)
strcat(dest[], const source[], maxlength=sizeof dest)
strcmp(const string1[], const string2[],bool: ignorecase=false, length=cellmax)
strcopy(dest[], const source[], maxlength=sizeof dest)
bool: strdel(string[], start, end)
bool: strequal(const string1[], const string2[],bool: ignorecase=false,length=cellmax)
strfind(const string[], const sub[],bool: ignorecase=false, index=0)
strformat(dest[], size=sizeof dest, bool: pack=false, const format[], . . . )
bool: strins(string[], const substr[], index,maxlength=sizeof string)
strlen(const string[])
strmid(dest[], const source[],start=0, end=cellmax,maxlength=sizeof dest)
strpack(dest[], const source[],maxlength=sizeof dest)
strunpack(dest[], const source[],maxlength=sizeof dest)
strval(const string[], index=0)
uudecode(dest[], const source[], maxlength=sizeof dest)
uuencode(dest[], const source[], numbytes, maxlength=sizeof dest)
valstr(dest[], value, bool: pack=false)

 

Az \"OnPlayerConnect\" függvény befejezése
 
Íme a végsõ függvény és így lesz késsz az egész függvény.
 

public OnPlayerConnect(playerid)
{
    new name[MAX_PLAYER_NAME], string[23 + MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), \"%s csatlakozott a szerverre!\", name);
    SendClientMessageToAll(0xFFFF00FF, string);
    return 1;
}

 
Van pár szöveg amit a google fordítóval csináltam mert nem tudtam mi :D
 
« Utoljára szerkesztve: 2012. Október 11. - 17:41:39 írta ZyZu »

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
[Leírás]String Formázása.
« Válasz #1 Dátum: 2012. Október 11. - 16:45:29 »
0
szép leírás

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
[Leírás]String Formázása.
« Válasz #2 Dátum: 2012. Október 11. - 16:47:09 »
0
Köszönöm szépen, egyrészben egy kicsit használtam a google fordítót azért van pár hely ahol nem helyes egy mondat de javítom.  ;)

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
[Leírás]String Formázása.
« Válasz #3 Dátum: 2012. Október 12. - 03:23:02 »
+3
Idézetet írta: ZyZu date=1349966829\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28467\" data-ipsquote-contentclass=\"forums_Topic
Köszönöm szépen, egyrészben egy kicsit használtam a google fordítót azért van pár hely ahol nem helyes egy mondat de javítom.  ;)
 
az a \"kicsit\" olyan 99%-ban lehetett...el is olvastad mielõtt feltetted? mert nem csak magyarul értelmetlen de elég nagy hülyeségek jönnek le scripter oldalról is belõle ( gondolom nagyrészben a google fordító a hibás ezért... )
ha nem tudsz tutorialt írni akkor inkább linkeld az angolt és a google fordítót :D és ugyanitt tartunk :D
de azért volt 1 elõnye is...jót nevettem :D
 
Hát 2 féle ez a név lekérése és string létrehozása vagyis másnéven \"ketrec\".[/quote]
 
A [MAX_PLAYER_NAME] lekéri a játékos nevét. A string hossza az 24 vagyis ha feljön egy játéos a szerverre egybõl a [MAX_PLAYER_NAME] lekérdezi a játékos beírt nevét és átformázza a string segítségével. Mindig figyelni kell, hogy a string számát nem kell lejebb vinni mert lehet a játékos neve hossza 15 betûs és nem írja ki a nevét rendesen hanem csak a felét ez a string miatt lehet. [/quote]
ez kb olyan mint amikor volt egy RP szeró ahol google fordítóval volt a szabályzat :D beidéznék pár példát a hatás kedvéért :D ( le screeneltem onnan másolom be )
\"Szia ott tudom látni hogy te új vagy itt van egy gyors tutorial annyira te szokás törj el szabályokat késõbb.\"
\"Ez a szerver egy olyan RP szerver, ami Role Playinget képvisel\"
\"Ha köhécselsz tied permenantly betiltott kérdések nem kérdeztek.\"
\"A szerver nem szól winningrõl az ezé körülbelül miközben keres melyik teszi azt mókássá.\"
\"Ha egy hacker foltos, /report jelentés, ne lõj egykor vagy ne sérts meg egyet, ez vezényel figyelem és õk lehet farönk.\"
\"elõször is szeretek adminszel kezdõdni, mindenkor tisztelni adminst.\"
\"follow az aranyszabály és te szokás vannak bármilyen problémái\"
\"if úgy döntesz hogy cselekszel mint egy teljes késés és követed ezt a szabályt azután számíthatsz egy tiltásra.\"
\"That bennevan igazságos ellátás ezek az elmében levõ szabályok és te szokás problémái vannak.\"
szóval érted remélem :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Adii

[Leírás]String Formázása.
« Válasz #4 Dátum: 2012. November 09. - 22:59:31 »
0
Dialogban nem lehet használni?
MErt nekem mindig errort ir:/

Nem elérhető Mokus

  • 608
    • Profil megtekintése
[Leírás]String Formázása.
« Válasz #5 Dátum: 2012. November 09. - 23:39:37 »
0
Idézetet írta: Adii date=1352498371\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28467\" data-ipsquote-contentclass=\"forums_Topic
Dialogban nem lehet használni?
MErt nekem mindig errort ir:/
 
Dialogodnak milyen a stílusa?

Nem elérhető Depi

  • 2259
  • Még mindig TrYp. :)
    • Profil megtekintése
[Leírás]String Formázása.
« Válasz #6 Dátum: 2012. November 09. - 23:48:19 »
0
Idézetet írta: Mokus date=1352500777\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28467\" data-ipsquote-contentclass=\"forums_Topic


Dialogban nem lehet használni?
MErt nekem mindig errort ir:/
 
Dialogodnak milyen a stílusa?
 
[/quote]
A stílus teljesen mind1. Ha nem értesz hozzá kezdõnek inkább hülyeséget ne mondjál.
Dialognál:
 

#define DIALOG_DIALOGPELDA                     1001
COMMAND:dialogpelda(playerid,params[])
{
new FormatString[ 128 + 1 ];
format(FormatString,sizeof(FormatString),\"Ez a megformázott szöveg amely a nevedet írja ki: %s\",Nev(playerid));
ShowPlayerDialog(playerid,DIALOG_DIALOGPELDA,DIALOG_STYLE_MSGBOX,\"Dialog:\",FormatString,\"Értem\",\"Nem értem\");
return 1;
}
stock Nev(playerid)
{
new neve[MAX_PLAYER_NAME];
GetPlayerName(playerid,neve,sizeof(neve));
return neve;
}

Nem elérhető Mokus

  • 608
    • Profil megtekintése
[Leírás]String Formázása.
« Válasz #7 Dátum: 2012. November 10. - 00:03:37 »
0

A stílus teljesen mind1. Ha nem értesz hozzá kezdõnek inkább hülyeséget ne mondjál.
 
[/quote]
Jólvan ezt én sem tudtam hogy teljesen mindegy azért közi ebbõl én is tanulhattam meg a le írásból mert valamit belõle nem értettem használni tudtam de nem értettem hogy mit minek teszünk oda

Nem elérhető Adii

[Leírás]String Formázása.
« Válasz #8 Dátum: 2012. November 10. - 02:21:25 »
0
Off: Draven nyitok egy új témát mert nem pont erre gondoltam

Nem elérhető Gabor..

  • 1883
  • Gabor..
    • Profil megtekintése
[Leírás]String Formázása.
« Válasz #9 Dátum: 2012. November 10. - 10:52:13 »
0
A string[23 + MAX_PLAYER_NAME] hülyeség... Akkor már string[ 50 + 1 ]...

[Leírás]String Formázása.
« Válasz #10 Dátum: 2012. November 10. - 14:50:20 »
0
Szép leírás  ;)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal