Szerző Téma: Hogyan is készül egy /try parancs?  (Megtekintve 5362 alkalommal)

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Dátum: 2012. október 14. - 21:20:03 »
+1 Show voters
Sziasztok! Ebben a cikkben egy leírást készítenék a kezdõk számára arról, hogyan is készül egy /try parancs, ami kötelezõ egy RP szerverre.
Elsõ dolgunk, hogy letöltsük a sscanf plugint, ha még nincs meg, és beillesszük a módunkba. Én a leírásban zcmd parancsfeldolgozót fogok használni, ha nincs meg töltsük le azt is.
http://forum.sa-mp.com/showthread.php?t=120356
http://forum.sa-mp.com/showthread.php?t=91354
Akkor kezdjük is a szkriptet:
 
CMD:try(playerid, params[])
{
new some[32 + 1];//létrehozzuk a változót, ami tárolni fogja azt a szöveget, amit beírunk a /try parancs után
new name[32 + 1];
GetPlayerName(playerid, name, sizeof(name));// a name változóba kikérjük a játékos nevét
if( !sscanf(params, \"s[32]\", some) ) //ez a feltétel, akkor teljesül ha a szöveg ténylegesen egy szöveg és nem szám vagy egyéb
{
switch(random(2)) //itt a switch egy megadott lehetõség. körülbelül úgy kell elképzelni, mint egy kart, amit húzigálhatunk
{
    case 0://ha az elsõ eset következik be.
   {
      new string[ 64 + 1 ];
      format(string, sizeof(string), \"%s megpróbál(ja) %s, és sikerül neki!\", name, some);//megformáljuk a szöveget
      SendClientMessage(playerid, -1, string);
   }
   case 1://ha a második eset következik be.
   {
      new string[ 64 + 1 ];
      format(string, sizeof(string), \"%s megpróbál(ja) %s, és nem sikerül neki!\", name, some);//megformáljuk a szöveget
      SendClientMessage(playerid, -1, string);
   }
}
}
return 1;
}

 
És most nézzük meg részletesebben:
 
CMD:try(playerid, params[])

 
Ugye ezzel hívjuk meg a parancsot, mondhatni ez a parancs elõhívója.
 
if( !sscanf(params, \"s[32]\", some) )

 
Ebben a feltételben az áll, hogyha a parancs után betûket írunk, és maximum 32-t, akkor a parancs \"tovább megy\", teljesül a feltétel. Azonban a sscanf-nál lehet akár betû is, ilyenkor csak egy i vagy d betût kell raknunk. Itt a some szerepe az, hogy \"benne\" tároljuk a try után lévõ szöveget.
 
switch(random(2))

 
Ez a függvény egy nagyon érdekes dolog. Ebben a függvényben az zajlik le, hogy a rendszer véletlenszerûen kiválasztja az 1-et vagy a 2-t. Ez ugye azért van, mert a /try parancs úgy teljesül, hogy vagy sikerült vagy nem. Ez 50-50% és az felírható, mint 1/2.
 
case 0:

 
Ez a switch -nek az elsõ esete, hogy így mondjam.
 
new string[ 64 + 1 ];
format(string, sizeof(string), \"%s megpróbál(ja) %s, és sikerül neki!\", name, some);//megformáljuk a szöveget
SendClientMessage(playerid, -1, string);

 
Nos, itt a format sorban a következõ történik: megformázzuk a string változót, úgy, hogy 2 darab szöveg változónk van. Az elsõ a name, az elõbb kikérdezett név, a második pedig a some, ahova az elõbb kikértük a szöveget, ami a /try után jön. Egy szöveg változót a formázásban egy %s helyettesít, ez ugyanígy van a számoknál is: %i, %d.
Na szóval, nagyjából ennyi lett volna az elsõ tutorialom, remélem segítettem a kezdõknek, bármilyen visszajelzést, kérdést fogadok!
« Utoljára szerkesztve: 2012. október 14. - 21:44:58 írta doboka98 »

Hogyan is készül egy /try parancs?
« Válasz #1 Dátum: 2012. október 14. - 21:43:07 »
0 Show voters
new some[32 + 1];//létrehozzuk a változót, ami tárolni fogja azt a szöveget, amit beírunk a /try parancs után

 
és ez
 
new string[ 32 + 1 ];

 
ugyanannyi. Ezért ez
 
format(string, sizeof(string), \"%s megpróbál(ja) %s, és sikerül neki!\", name, some);//megformáljuk a szöveget

 
nem fog rendesen ki írodni, mivel nem fér ki a vége.
Szerintem így kellene:
 
new string[128+1];

 
Ha tévedek, javítsatok ki.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #2 Dátum: 2012. október 14. - 21:44:21 »
+1 Show voters
Idézetet írta: DrachenGod date=1350243787\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28631\" data-ipsquote-contentclass=\"forums_Topic

new some[32 + 1];//létrehozzuk a változót, ami tárolni fogja azt a szöveget, amit beírunk a /try parancs után

 
és ez
 
new string[ 32 + 1 ];

 
ugyanannyi. Ezért ez
 
format(string, sizeof(string), \"%s megpróbál(ja) %s, és sikerül neki!\", name, some);//megformáljuk a szöveget

 
nem fog rendesen ki írodni, mivel nem fér ki a vége.
Szerintem így kellene:
 
new string[128+1];

 
Ha tévedek, javítsatok ki.
 
Kiíródik csak egy kis hülyeséget csináltam, javítom, de amúgy nem kell 128.

Nem elérhető Depi

  • 2259
  • Még mindig TrYp. :)
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #3 Dátum: 2012. október 14. - 22:09:47 »
0 Show voters
128 karaktert írhatsz egyszerre a chatba, szóval annyira még se hülyeség.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #4 Dátum: 2012. október 14. - 22:15:46 »
0 Show voters
Idézetet írta: Draven date=1350245387\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28631\" data-ipsquote-contentclass=\"forums_Topic
128 karaktert írhatsz egyszerre a chatba, szóval annyira még se hülyeség.
 
Ki lesz olyan elvetemült, hogy 128 karakternyi /try -t írjon? :D

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #5 Dátum: 2012. október 14. - 22:43:43 »
0 Show voters
Majd én  :smokin: :smokin: :smokin:
Egyszer mindent ki kell próbálni!

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #6 Dátum: 2012. október 14. - 22:48:22 »
+1 Show voters
cappsy, úgy látom mi haverok leszünk :D

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #7 Dátum: 2012. október 14. - 22:49:42 »
0 Show voters
Idézetet írta: doboka98 date=1350247702\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28631\" data-ipsquote-contentclass=\"forums_Topic
cappsy, úgy látom mi haverok leszünk :D
 
Mertél volna mást mondani  :facepalm: :facepalm: vagyis írni :)

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #8 Dátum: 2012. október 14. - 23:00:10 »
0 Show voters
Szép leírás.

Hogyan is készül egy /try parancs?
« Válasz #9 Dátum: 2012. október 16. - 10:27:32 »
0 Show voters
Azért ezt pontosítanám:
 
if( !sscanf(params, \"s[32]\", some) ) //ez a feltétel, akkor teljesül ha a szöveg ténylegesen egy szöveg és nem szám vagy egyéb

 
Ez nem csak egy feltétel a sscanf speciális karakter mentén (általában szóköz, de bármi lehet) karakterlánc darabolást és típusonként eltérõ változókba való úgymond elhelyezést/másolást hajt végre, melyrõl visszatérésként sikeres vagy sikertelen végrehajtásként 1 vagy 0 értékkel tér vissza.
A példádban az input rész mely a params változó elhelyezi a some változóban, majd azután tér vissza egy értékkel és lehet eldönteni sikeres-e vagy sikertelen a mûvelet (mely az if).

Hogyan is készül egy /try parancs?
« Válasz #10 Dátum: 2012. október 16. - 13:52:11 »
0 Show voters
Idézetet írta: doboka98 date=1350243861\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28631\" data-ipsquote-contentclass=\"forums_Topic
Kiíródik csak egy kis hülyeséget csináltam, javítom, de amúgy nem kell 128.
 

/try megmenteni egy aranyos fehér cicát a felé száguldó új tipusú fehér-kék intercity vonat elõl

 
mibe, hogy ezt nem írja ki, mert több, mint 32 karakter?

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #11 Dátum: 2012. október 16. - 14:38:38 »
0 Show voters
Idézetet írta: TengeriMalac date=1350388331\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28631\" data-ipsquote-contentclass=\"forums_Topic


Kiíródik csak egy kis hülyeséget csináltam, javítom, de amúgy nem kell 128.
 

/try megmenteni egy aranyos fehér cicát a felé száguldó új tipusú fehér-kék intercity vonat elõl

 
mibe, hogy ezt nem írja ki, mert több, mint 32 karakter?
 
[/quote]
Ha valakinek több kell, átírja :). Mindenbe nem kell belekötni. Már nem azért, nem akarok veszekedni, de csak úgy megemlítem, hogy eddig mindenki mindenbe belekötött, amit én csináltam, elismerem, hogy hibázok, de akkor más hibáiba miért nem köttök bele? :)

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #12 Dátum: 2012. október 16. - 15:23:51 »
0 Show voters
Idézetet írta: doboka98 date=1350391118\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28631\" data-ipsquote-contentclass=\"forums_Topic


 

Kiíródik csak egy kis hülyeséget csináltam, javítom, de amúgy nem kell 128.
 

/try megmenteni egy aranyos fehér cicát a felé száguldó új tipusú fehér-kék intercity vonat elõl

 
mibe, hogy ezt nem írja ki, mert több, mint 32 karakter?
 
[/quote]
Ha valakinek több kell, átírja :). Mindenbe nem kell belekötni. Már nem azért, nem akarok veszekedni, de csak úgy megemlítem, hogy eddig mindenki mindenbe belekötött, amit én csináltam, elismerem, hogy hibázok, de akkor más hibáiba miért nem köttök bele? :)
 
[/quote]
Mondj már olyan ember, akibe nem kötöttünk bele, illetve nem javítottuk ki a hibát? Még nálam is volt és zsoleszkánál is. Senki se tökéletes. Mellesleg a chat 148! karaktert tud kezelni (téves a 128-as szám).

Nem elérhető Depi

  • 2259
  • Még mindig TrYp. :)
    • Profil megtekintése
Hogyan is készül egy /try parancs?
« Válasz #13 Dátum: 2012. október 16. - 17:00:14 »
+1 Show voters
Idézetet írta: DrAkE date=1350393831\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28631\" data-ipsquote-contentclass=\"forums_Topic


 

 

Kiíródik csak egy kis hülyeséget csináltam, javítom, de amúgy nem kell 128.
 

/try megmenteni egy aranyos fehér cicát a felé száguldó új tipusú fehér-kék intercity vonat elõl

 
mibe, hogy ezt nem írja ki, mert több, mint 32 karakter?
 
[/quote]
Ha valakinek több kell, átírja :). Mindenbe nem kell belekötni. Már nem azért, nem akarok veszekedni, de csak úgy megemlítem, hogy eddig mindenki mindenbe belekötött, amit én csináltam, elismerem, hogy hibázok, de akkor más hibáiba miért nem köttök bele? :)
 
[/quote]
Mondj már olyan ember, akibe nem kötöttünk bele, illetve nem javítottuk ki a hibát? Még nálam is volt és zsoleszkánál is. Senki se tökéletes. Mellesleg a chat 148! karaktert tud kezelni (téves a 128-as szám).
 
[/quote]
Akkor én kérek elnézést, legalább most már ezt is tudom.

Hogyan is készül egy /try parancs?
« Válasz #14 Dátum: 2012. október 18. - 21:31:42 »
0 Show voters
Azt hogy lehet megcsinálni, hogy ha valaki csak annyit ír be, hogy: /try    akkor azt írja ki, hogy Használata: /try [cselekvés]
Meg ha valaki beírja /try enni és kiírja hogy Józsi megpróbálta ....   <- Ezt a szöveget színezni. Én próbáltam minden,hogyan de nem sikerült.  :no:

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal