Szerző Téma: Név szerinti belépés  (Megtekintve 1841 alkalommal)

Név szerinti belépés
« Dátum: 2011. március 15. - 19:26:47 »
0 Show voters
Heló! Tudom kicsit értelmetlen a téma neve... Mindegy.
Egy olyan szkript kéne, hogy csak a megadott játékosok tudnak feljönni pl. a [lol] elõtaggal. Tehát ha van  [lol]Davee, [lol]Michael meg [lol]George és õk bele vannak írva, akkor ha feljön valaki [lol]Lejaratomaklant névvel, akkor kickelje a szerver a [lol] jogosulatlan használata miatt (+ üzenet, de nem fontos majd beleírom).

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
Név szerinti belépés
« Válasz #1 Dátum: 2011. március 15. - 19:36:17 »
0 Show voters
Az egyik legegyszerûbb módja (ha 5-6 ember van a [lol] csapatban):
 

#include <a_samp>
public OnPlayerConnect(playerid)
{
        new lolname[20];
        GetPlayerName(playerid, lolname, 20);
        if(!strcmp(lolname, \"[lol]Davee\") || !strcmp(lolname, \"[lol]Michael\") || !strcmp(lolname, \"[lol]George\"))
        {
                // Ha [lol] tag
        }
        else
        {
               // Ha nem
        }
        return 1;
}

 
Persze ennél sokkal egyszerûbb változatok is léteznek.

Név szerinti belépés
« Válasz #2 Dátum: 2011. március 15. - 19:39:27 »
0 Show voters
És a sort lehet folytatni?

Nem elérhető Csabesz

  • 7827
    • Profil megtekintése
Név szerinti belépés
« Válasz #3 Dátum: 2011. március 15. - 19:40:17 »
0 Show voters
Idézetet írta: Skatefield date=1300214367\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6847\" data-ipsquote-contentclass=\"forums_Topic
És a sort lehet folytatni?
 
Persze.

Név szerinti belépés
« Válasz #4 Dátum: 2011. március 16. - 19:40:40 »
0 Show voters
Feltöltöttem a hostos szerveremre, de mindenkit kickel akinek nem a felsoroltak között van a neve.

Nem elérhető jana4

  • 5929
  • Ex Staff
    • Profil megtekintése
Név szerinti belépés
« Válasz #5 Dátum: 2011. március 16. - 19:56:10 »
0 Show voters
És nem ez a lényege, te ész? :P

Nem elérhető Mambo

  • 4239
    • Profil megtekintése
Név szerinti belépés
« Válasz #6 Dátum: 2011. március 16. - 20:02:43 »
0 Show voters
Idézetet írta: ScreaM date=1300301770\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6847\" data-ipsquote-contentclass=\"forums_Topic
És nem ez a lényege, te ész? :P
 
NEM.
Az a lényeg, hogyha valaki [LOL]SADLASDASDAS -al jön fel, akkor kickelje, de ha Mambo néven megy fel, akkor nyugodtan játszhasson.

Név szerinti belépés
« Válasz #7 Dátum: 2011. március 16. - 20:18:39 »
0 Show voters
Tehát csak a megadott emberek tudjanak feljönni [lol] elõtagú névvel.

Név szerinti belépés
« Válasz #8 Dátum: 2011. március 17. - 09:39:18 »
0 Show voters
Tesztelésre nem volt idõm de ha nem mûködik írj és ezt a kód sorozatot frissíteni fogom.
 

public
OnPlayerConnect(playerid)
{
// Játékos név megállapítás
new
name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
// Ellenõrzés hogy szerepel-e a [lol] clan név a csatlakozott játékos nevében
if(strfind(name, \"[lol]\", true) != -1)
{ // Ha igen akkor újabb ellenõrzés hogy az engedélyezett játékos nevek szerepelnek-e a \"[lol]\" elõtag után erre már teljes összehasonlítást lehet alkalmazni strcmp
new
   bool:enable = false;
for(new i = 0; i < sizeof lol_n; i++)
{
   if(strcmp(name, lol_n, true) == 0)
   {
      // Mivel több nevet kell le ellenõrizni ezért egy else utasítással nem lehet megoldani hogy kickelje a nem engedélyezett névvel rendelkezõ játékost.
      //ezért létre kell hozni egy bool típusu változót melyet igaz értékre állítunk legyen \"enable\" a neve ahhoz hogy a késõbb jövõ ellenõrzésen ne kickelje a csatlakozó játékost.
      enable = true;
      break; // Egy break utasítással kiugrunk a for ciklusból hogy elkerüljük a további ellenõrzéseket hiszen már van találat. (És így nem lép ki az egész OnPlayerConnect részbõl.)
   }
}
// Most jön a kis bool: változó ellenõrzése ciklus folyamaton kivül
if(enable)
{
   SendClientMessage(playerid, -1, \"Welcome to my samp server\");
} else {
   Kick(playerid);
   return 1;
}
}
return 1;
}
« Utoljára szerkesztve: 2011. március 17. - 21:36:36 írta Zsolesszka »

Név szerinti belépés
« Válasz #9 Dátum: 2011. március 17. - 18:57:23 »
0 Show voters
(542) : error 017: undefined symbol \"GetPlayerNameEx\"
(561) : error 017: undefined symbol \"lol_n\"
(563) : error 017: undefined symbol \"lol_n\"
(563) : warning 215: expression has no effect
(563) : error 001: expected token: \";\", but found \"]\"
(563) : error 029: invalid expression, assumed zero
(563) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
6 Errors.

 
Ezt írta ki :S

Név szerinti belépés
« Válasz #10 Dátum: 2011. március 17. - 19:07:25 »
0 Show voters
Idézetet írta: Skatefield date=1300384643\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6847\" data-ipsquote-contentclass=\"forums_Topic

(542) : error 017: undefined symbol \"GetPlayerNameEx\"
(561) : error 017: undefined symbol \"lol_n\"
(563) : error 017: undefined symbol \"lol_n\"
(563) : warning 215: expression has no effect
(563) : error 001: expected token: \";\", but found \"]\"
(563) : error 029: invalid expression, assumed zero
(563) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
6 Errors.

 
Ezt írta ki :S
 
:D Tetszenek az ilyen bemásolások ezt írta ki.
Szerintem csak valami kis apróságot elírtál nézd át újra.
Esetleg ha ide másolnád a teljes egészet ahogy próbálod alkalmazni akkor többet tudnának segíteni.
Már csak abból gondolom mivel az általam írt példában egyáltalán nem szerepel GetPlayerNameEx funkció.
És hozzá teszem most is: nem teszteltem le. Viszont a fordító nálam hibátlanul átkonvertálja addig nem adok ki semmilyen kódot míg nálam a fordító hiba nélkül le nem fordítja.

Név szerinti belépés
« Válasz #11 Dátum: 2011. március 17. - 19:09:39 »
0 Show voters
public OnPlayerConnect(playerid)
{
// Játékos név megállapítás
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
// Ellenõrzés hogy szerepel-e a [lol] clan név a csatlakozott játékos nevében
if(strfind(name, \"[lol]\", true) != -1)
{ // Ha igen akkor újabb ellenõrzés hogy az engedélyezett játékos nevek szerepelnek-e a \"[lol]\" elõtag után erre már teljes összehasonlítást lehet alkalmazni strcmp
new bool:enable = false;
for(new i = 0; i < sizeof hx_n; i++)
{
if(strcmp(name, lol_n, true))
   {
      // Mivel több nevet kell le ellenõrizni ezért egy else utasítással nem lehet megoldani hogy kickelje a nem engedélyezett névvel rendelkezõ játékost.
      //ezért létre kell hozni egy bool típusu változót melyet igaz értékre állítunk legyen \"enable\" a neve ahhoz hogy a késõbb jövõ ellenõrzésen ne kickelje a csatlakozó játékost.
      enable = true;
      break; // Egy break utasítással kiugrunk a for ciklusból hogy elkerüljük a további ellenõrzéseket hiszen már van találat. (És így nem lép ki az egész OnPlayerConnect részbõl.)
   }
}
// Most jön a kis bool: változó ellenõrzése ciklus folyamaton kivül
if(enable)
{
   SendClientMessage(playerid, -1, \"Welcome to my samp server\");
} else {
   Kick(playerid);
   return 1;
}

 
Így írtam bele.
« Utoljára szerkesztve: 2011. március 17. - 19:12:22 írta Skatefield »

Név szerinti belépés
« Válasz #12 Dátum: 2011. március 17. - 19:48:52 »
0 Show voters
Ennek a végérõl amit ide másoltál hiányzik egy
 

     }
     return 1;
}

 
rész.
Még egy két próbálkozás és talán jó lesz. Ha nem megy ne engem okolj, és hagyd ezt az egészet a fenébe én csak segíteni akartam.  Olyan hibákat írsz ami csak egy rosszul bemásolt dologból adódik ez látszik is abból ahogy itt közlöd a gondod ebben a topicban. Rosszul vissza másolt dolgok olyan hibák szerepelnek aminek semmi köze sincs az adott funkcióhoz.  Egyáltalán elkezdted megnézni az adott sorokat amikre hibát ír ki a fordító? Én ott kezdeném. De csak úgy mennek a dolgok minél többet próbálkozik az ember nem?
Sok sikert.
 

(542) : error 017: undefined symbol \"GetPlayerNameEx\"

Yeaseiro

  • Vendég
Név szerinti belépés
« Válasz #13 Dátum: 2011. március 17. - 20:05:18 »
0 Show voters
GetPlayerNameEx tudtommal ellenõrzi hogy van benne \"_\". Vagyis RP szerverekre ideális, ezért inkább maradj a GetPlayerName-nél.

Nem elérhető Y2K

  • 488
    • Profil megtekintése
Név szerinti belépés
« Válasz #14 Dátum: 2011. március 17. - 20:08:28 »
0 Show voters
GetPlayerNameEx nem alap függvény, úgy kell megírni... egyébként annyit tesz tudtommal, ha a nevet visszatérési értékként közli...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal