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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Extasy449 - 2013. augusztus 10. - 09:02:43

Cím: Engedélyezett karakterek(betû)
Írta: Extasy449 - 2013. augusztus 10. - 09:02:43
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?
Cím: Engedélyezett karakterek(betû)
Írta: Live - 2013. augusztus 10. - 19:43:59
         
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!\");
Cím: Engedélyezett karakterek(betû)
Írta: Extasy449 - 2013. augusztus 10. - 20:27:55
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
Cím: Engedélyezett karakterek(betû)
Írta: Live - 2013. augusztus 10. - 21:24:59
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.
Cím: Engedélyezett karakterek(betû)
Írta: Kovacs_Richard - 2013. augusztus 10. - 21:37:39
egyszerûbb azokat tárolni amiket lehet használni...
Cím: Engedélyezett karakterek(betû)
Írta: Extasy449 - 2013. augusztus 11. - 00:43:13
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?
Cím: Engedélyezett karakterek(betû)
Írta: Kovacs_Richard - 2013. augusztus 11. - 17:43:30
strfind(inputtext, \"\\\", true)

 
helyett ezt írd be:
 
strfind(inputtext, \"\\\\\", true)
Cím: Engedélyezett karakterek(betû)
Írta: Extasy449 - 2013. augusztus 13. - 14:51:31
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:/
 
Cím: Engedélyezett karakterek(betû)
Írta: hegdavid95 - 2013. augusztus 13. - 22:29:09
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;
}