Szerző Téma: Ragozós script  (Megtekintve 4600 alkalommal)

Nem elérhető Jex

Ragozós script
« Dátum: 2009. október 07. - 20:04:40 »
0 Show voters
Üdv mindenki!
Tudom furán hangzik a téma neve, de ez a script tényleg ragoz :D
A lényege annyi, hogy beírsz egy szót, és azt leragozza neked magyar helyesírási szabályoknak megfelelõen -val, -vel, -nak, -nek, és tárgyi -t ragok szerint.
Na szóval ezt csak a módodba kell valahova bemásolni, a lényeg hogy ne public alá:
 

stock rag(szo[],tipus) // 1 - val-vel  2 - nak-nek   3 - t
{
    new string[128];
    new string2[128];
if(tipus == 1 || tipus == 2 || tipus == 3)
{
new xd = strlen(szo);
format(string, sizeof(string), \"%s\", szo);
strdel(string, 0, xd-2);
new sorszam = strfind(string, \"a\");
if(sorszam == 1)
{
    format(string,sizeof(string),\"%s\", szo);
   strdel(string, xd-1, xd);
   if(tipus == 1) format(string2,sizeof(string2),\"%sával\", string);
   else if(tipus == 2) format(string2,sizeof(string2),\"%sának\", string);
   else if(tipus == 3) format(string2,sizeof(string2),\"%sát\", string);
    return string2;
}
else
{
            sorszam = strfind(string, \"e\");
            if(sorszam == 1)
   {
       format(string,sizeof(string),\"%s\", szo);
      strdel(string, xd-1, xd);
       if(tipus == 1) format(string2,sizeof(string2),\"%sével\", string);
       else if(tipus == 2) format(string2,sizeof(string2),\"%sének\", string);
       else if(tipus == 3) format(string2,sizeof(string2),\"%sét\", string);
       return string2;
   }
   else
   {
                sorszam = strfind(string, \"i\");
            if(sorszam == 1)
      {
          format(string,sizeof(string),\"%s\", szo);
          strdel(string, 0, xd-3);
          if(tipus == 3) { format(string,sizeof(string),\"%st\", szo); return string2; }
          if( strfind(string, \"a\") != -1 || strfind(string, \"o\") != -1 || strfind(string, \"u\") != -1)
          {
             if(tipus == 1) format(string2,sizeof(string2),\"%sval\", szo);
             else if(tipus == 2) format(string2,sizeof(string2),\"%snak\", szo);
             return string2;
          }
          else if(strfind(string, \"e\") != -1 || strfind(string, \"i\") != -1)
          {
              if(tipus == 1) format(string2,sizeof(string2),\"%svel\", szo);
              else if(tipus == 2) format(string2,sizeof(string2),\"%snek\", szo);
             return string2;
          }
          else
          {
              format(string2,sizeof(string2),\"%svel\", szo);
             return string2;
          }
      }
      else
      {
          sorszam = strfind(string, \"o\");
            if(sorszam == 1)
         {
             format(string,sizeof(string),\"%s\", szo);
            strdel(string, xd-1, xd);
             if(tipus == 1) format(string2,sizeof(string2),\"%sóval\", string);
             else if(tipus == 2) format(string2,sizeof(string2),\"%sónak\", string);
             else if(tipus == 3) format(string2,sizeof(string2),\"%sót\", string);
             return string2;
         }
         else
         {
             sorszam = strfind(string, \"u\");
               if(sorszam == 1)
            {
                if(tipus == 1) format(string2,sizeof(string2),\"%sval\", szo);
                else if(tipus == 2) format(string2,sizeof(string2),\"%snak\", szo);
                else if(tipus == 3) format(string2,sizeof(string2),\"%st\", szo);
                return string2;
            }
            else
            {
               if(tipus == 1 || tipus == 2)
               {
                   new string3[10];
                  format(string,sizeof(string),\"%s\", szo);
                   if(tipus==1)
                   {
                      if(strfind(string, \"cs\") != -1 || strfind(string, \"dz\") != -1 || strfind(string, \"dzs\") != -1 || strfind(string, \"gy\") != -1 || strfind(string, \"ly\") != -1 || strfind(string, \"ny\") != -1 || strfind(string, \"sz\") != -1 || strfind(string, \"ty\") != -1 || strfind(string, \"zs\") != -1)
                      {
                          if(strfind(string, \"dzs\") != -1)
                          {
                              strdel(string, 0, xd-3);
                              if(strfind(string, \"dzs\") != -1)
                              {
                                  strmid(string3, szo, 0, xd-2);
                               format(string2,sizeof(string2),\"%sdzsel\", string3);
                               return string2;
                            }
                         }
                          strdel(string,0, xd-2);
                          if(strfind(string, \"cs\") != -1 || strfind(string, \"dz\") != -1 || strfind(string, \"gy\") != -1 || strfind(string, \"ly\") != -1 || strfind(string, \"ny\") != -1 || strfind(string, \"sz\") != -1 || strfind(string, \"ty\") != -1 || strfind(string, \"zs\") != -1)
                          {
                              format(string,sizeof(string),\"%s\", szo);
                              strdel(string, 0, xd-3);
                            if( strfind(string, \"a\") != -1 || strfind(string, \"o\") != -1 || strfind(string, \"u\") != -1)
                            {
                                 format(string,sizeof(string),\"%s\", szo);
                                 strdel(string, xd-1, xd);
                                 strmid(string3, szo, xd-2, xd);
                                 format(string2,sizeof(string2),\"%s%sal\", string,string3);
                                 return string2;
                              }
                              else
                              {
                                  format(string,sizeof(string),\"%s\", szo);
                                 strdel(string, xd-1, xd);
                                 strmid(string3, szo, xd-2, xd);
                                 format(string2,sizeof(string2),\"%s%sel\", string,string3);
                                 return string2;
                              }
                          }
                      }
                  }
                   strdel(string, 0, xd-3);
                   if( strfind(string, \"a\") != -1 || strfind(string, \"o\") != -1 || strfind(string, \"u\") != -1)
                   {
                      strmid(string3, szo, xd-1, xd);
                      if(tipus == 1) format(string2,sizeof(string2),\"%s%sal\", szo, string3);
                      else if(tipus == 2) format(string2,sizeof(string2),\"%snak\", szo);
                      return string2;
                   }
                   else
                   {
                      strmid(string3, szo, xd-1, xd);
                      if(tipus == 1) format(string2,sizeof(string2),\"%s%sel\", szo, string3);
                      else if(tipus == 2) format(string2,sizeof(string2),\"%snek\", szo);
                      return string2;
                   }
               }
               else if(tipus == 3)
               {
                   format(string,sizeof(string),\"%s\", szo);
                    strdel(string, 0, xd-1);
                   if(strfind(string, \"j\") != -1 || strfind(string, \"l\") != -1 || strfind(string, \"n\") != -1 || strfind(string, \"r\") != -1 || strfind(string, \"s\") != -1 || strfind(string, \"y\") != -1 || strfind(string, \"z\") != -1)
                   {
                       format(string2,sizeof(string2),\"%st\", szo);
                       return string2;
                   }
                   else
                   {
                       format(string,sizeof(string),\"%s\", szo);
                       strdel(string, 0, xd-3);
                       if( strfind(string, \"a\") != -1 || strfind(string, \"o\") != -1 || strfind(string, \"u\") != -1)
                       {
                           format(string2,sizeof(string2),\"%sot\", szo);
                          return string2;
                       }
                       else
                       {
                           format(string2,sizeof(string2),\"%set\", szo);
                          return string2;
                       }
                   }
                }
            }
         }
      }
   }
}
}
else format(string, sizeof(string), \"Típus nem jó\");
return string;
}

 
Használata:
a függvény formája:
 
rag(szó,típus);

 
A szó helyére értelemszerûen a szót kell írni amit ragozni szeretnél, a típus helyére pedig 3 féle számot lehet.
A visszatérési érték pedig egy sztring változó, vagyis a már ragozott alakja a szónak.
Típusok:
1 - val-vel ragot kap a szó
2 - nak-nek ragot kap a szó
3 - -t ragot kap a szó
Példa a használatra:
 

new string[64];
format(string, sizeof(string), \"A szó amit leragoztál: %s\", rag(\"Baba\", 1));
SendClientMessage(playerid, 0xFFFFFFAA, string);

 
Így azt kapjuk, hogy kiírja nekünk a chatboxba: A szó amit leragoztál: Babával
Ha az 1-es helyére 2-es számot írsz, akkor a chatboxban a \"Babának\" szó jelenik meg, ha 3-as számot írsz, akkor \"Babát\" lesz a kapott szó.
Remélem ez érthetõ :)
Ismert hibák:
- Nem kezeli a szót, ha az utolsó magánhangzó ékezetes (A sztringfüggvények hibájából kifolyólag)
- Nem tud angol kiejtéssel ragozni (mielõtt valaki belekötne, hogy mért ragozza a \"file\" szót \"filével\"-nek...:D) Vagyis a magyar nyelvre lett tervezve  ;D
- Csak betûket tud ragozni, zárójeleket, számokat nem.. (33421/**Bela**\\12433 nevet pl nem  :P)
Mire is jó?
Itt egy példa, tegyük fel ki akarod íratni: \"xy\"-nak leraktál egy autót.
De az emberke neve mondjuk Peter, így azt kapod, hogy Peter-nak leraktál egy autót.
Röviden, ez a script pusztán szépséghibákat javít, számomra volt kihívás megírni :)

Ha valami nem tetszik, nyugodtan leírhatod, nem vagyok tökéletes, szóval hibázhatok :D De az én igényeimnek megfelelõen mûködik.


A megírása kb 2 óra volt, mire megértettem, hogy hogy is mûködik pontosan a nyelvünk :D


Ha kérdés van nyugodtan fel lehet tenni!

(Bocs, hogy hosszú lett kicsit a hozzászólás :D)
Véleményeket is várok :)
« Utoljára szerkesztve: 2011. november 22. - 19:45:44 írta APC »

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Ragozós script
« Válasz #1 Dátum: 2009. október 07. - 20:08:04 »
0 Show voters
Na, nekem tetszik, azt nem mondom, h hasznos, de tanulni jó.(még csak a szöveget olvastam át, a scriptet nem igazán, madj megnézem azt is holnap.)

Nem elérhető Jex

Ragozós script
« Válasz #2 Dátum: 2009. október 07. - 20:10:28 »
0 Show voters
Nekem szükségem volt rá, ha már ilyen szép lett gondoltam, hogy publikálom :D
off: egyébként, ha te az az Antony vagy akire gondolok, akkor neked mond valamit a csatari név :P õ lennék xD

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Ragozós script
« Válasz #3 Dátum: 2009. október 07. - 21:04:14 »
0 Show voters
Ha az vagyok, akire gondolsz, akkor mond valamit ;) kedves  Brad és szerverem majdnem scriptere :D (ami végül Gergõ lett, és a szerver sem a Bradé és enyém most már...). Mellesleg helyesbítek: nekem nem hasznos, másnak lehet az, egyenlõre nincs rá szükségem, de valóban jó lett.
/OFF: majd egy msn-t dobhatnál.

Robinking

  • Vendég
Ragozós script
« Válasz #4 Dátum: 2009. október 07. - 21:07:20 »
0 Show voters
Öscém ilyet kitalálni és megírni!. ;D
Nagyon király!

Nem elérhető Jex

Ragozós script
« Válasz #5 Dátum: 2009. október 07. - 22:46:19 »
0 Show voters
köszi szépen ;) ^^
Antony, PM ment :)
További véleményekre is kíváncsi vagyok :D:D

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Ragozós script
« Válasz #6 Dátum: 2009. október 08. - 14:10:44 »
0 Show voters
Gratulálok, ez szép lett! Az ötlet is jó, meg persze a kivitelezés se semmi. ;)
Egyedül annyi tûnt fel, hogy miért [ INC ] elõtagot használsz, hiszen ez nem függvénykönyvtár. :D
ZeRo

Nem elérhető Jex

Ragozós script
« Válasz #7 Dátum: 2009. október 08. - 15:13:44 »
0 Show voters
azért mert fogalmam sincs, hogy mire kéne írni :D
gondoltam, hogy a kódokhoz teszem, de oda az van írva hogy \"rövid terjedelmû\" ez meg a 200 sorával neméppen az...  :D
de ha tudsz valami jó szót rá akkor átírom ;)
egyébként köszi szépen ^^

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Ragozós script
« Válasz #8 Dátum: 2009. október 08. - 15:21:13 »
0 Show voters
Szerintem nyugodtan mehetett volna a kódokba, azt a kis jelzõt nem kell olyan komolyan venni.. ;)
ZeRo

Nem elérhető Jex

Ragozós script
« Válasz #9 Dátum: 2009. október 08. - 15:31:09 »
0 Show voters
akkor ha megteszed, átpakolod majd? :D
egyébként jobban belegondolok, INC -> include vagyis beágyazott függvény, és ez az :P csak rögtön a módba kell bemásolni.. :D

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Ragozós script
« Válasz #10 Dátum: 2009. október 08. - 15:35:37 »
0 Show voters
Áthelyezve. ;)
ZeRo

Nem elérhető GeGe88

  • 216
    • Profil megtekintése
Ragozós script
« Válasz #11 Dátum: 2009. november 14. - 16:46:05 »
0 Show voters
aztakurva :o

Nem elérhető Jex

Ragozós script
« Válasz #12 Dátum: 2009. november 16. - 23:17:09 »
0 Show voters
te meg nem érted, hogy mit is csinál ez :)
ez a script azt is megnézi, hogy mi az utolsó magánhangzó, vagyis aszerint fog ragozni.
Pl: baba -> babával
viszont a keksz szót már \"keksszel\" ként fogja neked visszaadni :)
A te általad írt kód szerint ez lenne az eredmény: baba -> babaval, keksz -> kekszval
remélem értheto.

Ragozós script
« Válasz #13 Dátum: 2009. november 20. - 13:50:29 »
0 Show voters
De ez mikor ragoz? Mindegyik szót ragozza ?

Nem elérhető Jex

Ragozós script
« Válasz #14 Dátum: 2009. november 21. - 00:22:37 »
0 Show voters
Mindegyiket, kivéve az ékezetes szavakat.
beírod, hogy rag(\"szoamikell\", típus)
és a visszatérési érték az a ragozott szó lesz ;)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal