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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: Jex - 2009. október 07. - 20:04:40

Cím: Ragozós script
Írta: Jex - 2009. október 07. - 20:04:40
Ü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 :)
Cím: Ragozós script
Írta: tonyo - 2009. október 07. - 20:08:04
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.)
Cím: Ragozós script
Írta: Jex - 2009. október 07. - 20:10:28
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
Cím: Ragozós script
Írta: tonyo - 2009. október 07. - 21:04:14
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.
Cím: Ragozós script
Írta: Robinking - 2009. október 07. - 21:07:20
Öscém ilyet kitalálni és megírni!. ;D
Nagyon király!
Cím: Ragozós script
Írta: Jex - 2009. október 07. - 22:46:19
köszi szépen ;) ^^
Antony, PM ment :)
További véleményekre is kíváncsi vagyok :D:D
Cím: Ragozós script
Írta: ZeRo - 2009. október 08. - 14:10:44
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
Cím: Ragozós script
Írta: Jex - 2009. október 08. - 15:13:44
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 ^^
Cím: Ragozós script
Írta: ZeRo - 2009. október 08. - 15:21:13
Szerintem nyugodtan mehetett volna a kódokba, azt a kis jelzõt nem kell olyan komolyan venni.. ;)
ZeRo
Cím: Ragozós script
Írta: Jex - 2009. október 08. - 15:31:09
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
Cím: Ragozós script
Írta: ZeRo - 2009. október 08. - 15:35:37
Áthelyezve. ;)
ZeRo
Cím: Ragozós script
Írta: GeGe88 - 2009. november 14. - 16:46:05
aztakurva :o
Cím: Ragozós script
Írta: Jex - 2009. november 16. - 23:17:09
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.
Cím: Ragozós script
Írta: hari95 - 2009. november 20. - 13:50:29
De ez mikor ragoz? Mindegyik szót ragozza ?
Cím: Ragozós script
Írta: Jex - 2009. november 21. - 00:22:37
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 ;)
Cím: Ragozós script
Írta: dnsdj - 2009. november 21. - 10:25:20
ez  jó :)
Cím: Ragozós script
Írta: hari95 - 2009. november 21. - 19:22:30
És mi értelme van?
Cím: Ragozós script
Írta: Jex - 2009. november 21. - 23:40:32
Én például tökéletesen fel tudom használni.
Pl.: XY lecsukta yz-t.
RP szervereken a neveket gyakran kell ragozni, én ott használom.
Cím: Ragozós script
Írta: gerike1114 - 2010. január 10. - 14:25:10
Jex ;) ;)
Cím: Ragozós script
Írta: Weper - 2010. július 07. - 03:59:41
Faxa lett Jex. ^^
Cím: Ragozós script
Írta: Depi - 2010. július 07. - 10:49:07
Idézetet írta: Weper date=1278467981\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"58\" data-ipsquote-contentclass=\"forums_Topic
Faxa lett Jex. ^^
 
Bump,a következo ilyennél megy a warn,olvasd el a szabályzatot,és ne lássam meg h poszt hánterkedést.
Cím: Ragozós script
Írta: hpeter94 - 2010. október 06. - 15:54:24
Nagyon tuti lett jex :) szerintem bõvítheznéd még ragokkal :) (pl -hoz -höz
Cím: Ragozós script
Írta: Jex - 2010. október 11. - 21:08:16
már aligha értem, hogy mit csináltam benne :) ha meg most újrakezdeném, akkor tök máshogy írnám meg...
inkább már nem vállalom, plusz túl sok a hibalehetõség. majd ha lesz más, hasonló ötletem, azt majd talán megcsinálom :)
Cím: Ragozós script
Írta: hpeter94 - 2010. október 12. - 10:00:05
oké csak egy ötlet volt
Cím: Ragozós script
Írta: buci11 - 2011. február 19. - 23:09:38
Érdekes miért ne lehetne nyelvtanozni játék közbe ? logikus XDXD