Szerző Téma: Engedélyezett karakterek(betû)  (Megtekintve 1476 alkalommal)

Engedélyezett karakterek(betû)
« Dátum: 2013. augusztus 10. - 09:02:43 »
0 Show voters
Sziasztok!
Abban kérném a segítségeteket, hogy hogy oldjam azt meg, hogy egy dialogban az inputtext csakis az angol ABC betûibõl állhat, máskülönben hibát ír ki?

Nem elérhető Live

  • 507
    • Profil megtekintése
Engedélyezett karakterek(betû)
« Válasz #1 Dátum: 2013. augusztus 10. - 19:43:59 »
0 Show voters
         
if(strfind(inputtext, \"ö\") || strfind(inputtext, \"ü\") || strfind(inputtext, \"ó\") || strfind(inputtext, \"õ\") || strfind(inputtext, \"ú\") ||
strfind(inputtext, \"é\") || strfind(inputtext, \"á\") || strfind(inputtext, \"û\")) return SendClientMessage(playerid, 0xFF4646AA, \"* Csak az angol abc betûit, számokat és jeleket használhatod!\");

Engedélyezett karakterek(betû)
« Válasz #2 Dátum: 2013. augusztus 10. - 20:27:55 »
0 Show voters
Na pont ez miatt. Ugyebár nagyon sok speciális karakter létezik a vesszõkön át a pontoktól a zárójelig mindenféle kriksz-kraksz és h ne kelljen midnent leirni akarom azt, hogy megadom neki az abc betûit valahol és ha azoktól másfajta karaktert talál az inputtext.ben írja ki a hibát
« Utoljára szerkesztve: 2013. augusztus 10. - 20:29:29 írta Extasy449 »

Nem elérhető Live

  • 507
    • Profil megtekintése
Engedélyezett karakterek(betû)
« Válasz #3 Dátum: 2013. augusztus 10. - 21:24:59 »
0 Show voters
Olyat nem hiszem, hogy lehet.
Esetleg még úgy, hogy létrehozol egy tömböt amibe belerakod azokat a karaktereket amit nem használhat és strfindel leellenõrzöd, hogy szerepel-e az a karakter a mezõben.

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Engedélyezett karakterek(betû)
« Válasz #4 Dátum: 2013. augusztus 10. - 21:37:39 »
0 Show voters
egyszerûbb azokat tárolni amiket lehet használni...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Engedélyezett karakterek(betû)
« Válasz #5 Dátum: 2013. augusztus 11. - 00:43:13 »
0 Show voters
Rendben, köszönöm a válaszokat

Dupla hozzászólás automatikusan összefûzve. ( 2013. augusztus 11. - 11:11:17 )

          else if(strfind(inputtext, \"\'\", true) || strfind(inputtext, \"~\", true) || strfind(inputtext, \"§\", true) || strfind(inputtext, \"·\", true) || strfind(inputtext, \"+\", true) || strfind(inputtext, \"^\", true) || strfind(inputtext, \"!\", true) || strfind(inputtext, \"¢\", true) ||
   strfind(inputtext, \"%\", true) || strfind(inputtext, \"°\", true) || strfind(inputtext, \"/\", true) || strfind(inputtext, \"²\", true) || strfind(inputtext, \"ÿ\", true) || strfind(inputtext, \"(\", true) || strfind(inputtext, \")\", true) || strfind(inputtext, \"´\", true) || strfind(inputtext, \"½\", true) || strfind(inputtext, \"¨\", true) ||
   strfind(inputtext, \"¸\", true) || strfind(inputtext, \"\\\", true) || strfind(inputtext, \"|\", true) || strfind(inputtext, \"÷\", true) || strfind(inputtext, \"×\", true) || strfind(inputtext, \"ä\", true) || strfind(inputtext, \"ð\", true) || strfind(inputtext, \"Ð\", true) || strfind(inputtext, \"[\", true) ||
   strfind(inputtext, \"]\", true) || strfind(inputtext, \"³\", true) || strfind(inputtext, \"£\", true) || strfind(inputtext, \"$\", true) || strfind(inputtext, \"ß\", true) || strfind(inputtext, \"¤\", true) || strfind(inputtext, \"<\", true) || strfind(inputtext, \">\", true) || strfind(inputtext, \"#\", true) || strfind(inputtext, \"&\", true) ||
    strfind(inputtext, \"@\", true) || strfind(inputtext, \"{\", true) || strfind(inputtext, \"}\", true) || strfind(inputtext, \",\", true) || strfind(inputtext, \"?\", true))

 

(4375) : error 001: expected token: \"-string end-\", but found \"-identifier-\"
(4375) : error 029: invalid expression, assumed zero
(4375) : warning 215: expression has no effect
(4375) : error 001: expected token: \";\", but found \"×\"
(4375) : fatal error 107: too many error messages on one line

 
4375. sor:
 
strfind(inputtext, \"¸\", true) || strfind(inputtext, \"\\\", true) || strfind(inputtext, \"|\", true) || strfind(inputtext, \"÷\", true) || strfind(inputtext, \"×\", true) || strfind(inputtext, \"ä\", true) || strfind(inputtext, \"ð\", true) || strfind(inputtext, \"Ð\", true) || strfind(inputtext, \"[\", true) ||

 
Valami ötlet?
« Utoljára szerkesztve: 2013. augusztus 11. - 11:12:03 írta Extasy449 »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Engedélyezett karakterek(betû)
« Válasz #6 Dátum: 2013. augusztus 11. - 17:43:30 »
0 Show voters
strfind(inputtext, \"\\\", true)

 
helyett ezt írd be:
 
strfind(inputtext, \"\\\\\", true)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Engedélyezett karakterek(betû)
« Válasz #7 Dátum: 2013. augusztus 13. - 14:51:31 »
0 Show voters
Rendben, köszönöm. Egyébként nem mûködik nekem valamiért ez az strfind-os dolog. Pl van az h a számokra keres rá és ha van kiírja a hibaüzenetet:
            
if(strfind(inputtext, \"0\") || strfind(inputtext, \"1\") || strfind(inputtext, \"2\") || strfind(inputtext, \"3\") || strfind(inputtext, \"4\") || strfind(inputtext, \"5\") || strfind(inputtext, \"6\") || strfind(inputtext, \"7\") || strfind(inputtext, \"8\") || strfind(inputtext, \"9\"))

 
De valamiért mindig kiírja a hibaüzenetét, m akkor is ha csak egy \'a\' betût írok be:/
 

Engedélyezett karakterek(betû)
« Válasz #8 Dátum: 2013. augusztus 13. - 22:29:09 »
+1 Show voters
new const EnglishAlphabet[36] = { //Engedélyezett karakterek, a mód elejére rakd
\'q\',\'w\',\'e\',\'r\',\'t\',\'z\',\'u\',\'i\',
\'o\',\'p\',\'a\',\'s\',\'d\',\'f\',\'g\',\'h\',
\'j\',\'k\',\'l\',\'y\',\'x\',\'c\',\'v\',\'b\',\'n\',\'m\',
\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\'};
stock IsThereNonEnglishLetter(const string[],size = sizeof(string))//Függvény ami 1-el tér vissza ha van benne nem megengedett karakter, 0-val ha nincs
{
new character[2];//Egyetlen karakter stringként mivel strfind-nél csak string-et tudsz berakni ami jelen esetben a karakter utánna pedig a string vége vagyis EOS (End Of String) karakter
for(new i = 0; i < size; i++)
{
    if(string == EOS) break;//Ha elérjük az ellenõrzött stringnek a végét megszakítjuk a ciklust így a függvény 0-val fog visszatérni.
    character[0] = string;
    character[1] = EOS;
if(strfind(EnglishAlphabet,character,true) == -1)
{
   return 1;
}
}
return 0;
}

 
Gyors megírtam egyet ez biztos hogy mûködik.
Egyébként még egy lehetõségnek felvetném hogy alakítsd át az ékezetes karaktereket az angol megfelelõjére
 

new const accentlist[][2] = {
{\'á\',\'a\'},
{\'é\',\'e\'},
{\'í\',\'i\'},
{\'ó\',\'o\'},
{\'ö\',\'o\'},
{\'õ\',\'o\'},
{\'ú\',\'u\'},
{\'ü\',\'u\'},
{\'û\',\'u\'},
{\'Á\',\'A\'},
{\'É\',\'E\'},
{\'Í\',\'I\'},
{\'Ó\',\'O\'},
{\'Ö\',\'O\'},
{\'Õ\',\'O\'},
{\'Ú\',\'U\'},
{\'Ü\',\'U\'},
{\'Û\',\'U\'}
};
 
stock ConvertToNonAccent(const string[],dest[],size = sizeof(dest))
{
new character[2];
new i = 0;
for(; i < size-1; i++)
{
    if(string == EOS) break;
    character[0] = string;
    character[1] = EOS;
if(strfind(TeleportCharacters,character,true) == -1)
{
   for(new c; c < sizeof(accentlist); c++)
   {
       if(character[0] == accentlist[c][0]) dest = accentlist[c][1];
   }
}
else
{
     dest = string;
}
}
dest[i+1] = EOS;
}
« Utoljára szerkesztve: 2013. augusztus 13. - 22:39:42 írta hegdavid95 »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal