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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: inf - 2014. május 27. - 16:42:09

Cím: Szöveg részlet lekérdezése
Írta: inf - 2014. május 27. - 16:42:09
Üdv.
Valaki tudna nekem írni egy olyan scriptet ami egy szövegbõl lekér egy részletet.
Pl.: Kék asdaz ég.
Ebbõl a szövegbõl csak az \"asd\" szöveg részletet érzékelné és ha 2x szerepel benne pl így
Kék asdaz asdég.
Akkor a másikat is kérje ki és mentse egy változóba hogy hány olyan bizonyos szó van benne.
Elõre is köszönöm! :)
Cím: Szöveg részlet lekérdezése
Írta: KovaNovik - 2014. május 27. - 16:53:58
Ezt egy kis ciklussal meg lehet írni elméletben, de én effektívre akarom, hiszen lehet jobb megoldás is ennél a problémádra. Mi lenne az? Mármint, ez mihez kéne? Addig is nézz körül a wikin az str-el kezdõdõ függvényeknél. Különösen az strcmp, az strfind és az strmid-et ajánlanám.
Cím: Szöveg részlet lekérdezése
Írta: inf - 2014. május 27. - 17:48:57
Ez így jó?
 
new valtozo = 0;
if(strfind(input, \"asd\"))
{
valtozo++;
}
Cím: Szöveg részlet lekérdezése
Írta: KovaNovik - 2014. május 27. - 19:35:30
Na, hát megpróbáltam megcsinálni, tesztelni nem volt alkalmam, szóval valószínûleg lesz benne pár hiba.
 
stock karil_rsz(szvg[], kulcs[], bool:kellnb=true) {
new tsz, hanyknal = strfind(szvg, kulcs, !kellnb);
while(hanyknal != -1) {tsz++; hanyknal = strfind(szvg, kulcs, !kellnb, hanyknal+strlen(kulcs));}
return tsz;
}

 
Használata:
 
printf(\"A \'Sajt kenyér sajt sajt kenyér\' karakterláncban a \'kenyér\' %d helyen fordul elõ.\", karil_rsz(\"Sajt kenyér sajt sajt kenyér\", \"kenyér\", true));

 
Az utolsó paraméter, ha true, ellenõrzi a nagybetût is, ha false, a \"sajt\"-ra beleszámolja a \"SaJt\"-ot is. Nem csak printfnél, máshol is használhatod, vagy változóba is teheted. new valtozo = karil_....
Sok szerencsét, további jó scriptelést! :thumbsup:
Szerk.: Géphez jutottam, azonnal javítottam is benne a hibákat, már szépen teszi a dolgát.
Amúgy, ha érdekel valakit, a karil_rsz a karakterlánc-részletszámláló rövidítése.
\"width=500\"8pBH2eU.jpg?1\"
[/img]
U.i.: ha az utolsó paramétert nem adod meg, true lesz.
Másik használati példa:
 
public OnPlayerText(playerid, text[]) {
        new hanyszor = karil_rsz(text, \"asd\", false); //annyi lesz a \"hanyszor\" változó, ahányszor a szövegben szerepel az ASD szó, akár kis- akár nagybetûkkel.
if(hanyszor > 2) {
                printf(\"Egy üzenet több, mint 2 \'asd\'-ot tartalmazott, így nem engedtük elküldeni.\");
                return SendClientMessage(playerid, -1, \"Az üzenetedben az \'asd\' szó nem fordulhat elõ kettõnél többször!\");
        }
}
Cím: Szöveg részlet lekérdezése
Írta: inf - 2014. május 27. - 16:42:09
Üdv.
Valaki tudna nekem írni egy olyan scriptet ami egy szövegbõl lekér egy részletet.
Pl.: Kék asdaz ég.
Ebbõl a szövegbõl csak az \"asd\" szöveg részletet érzékelné és ha 2x szerepel benne pl így
Kék asdaz asdég.
Akkor a másikat is kérje ki és mentse egy változóba hogy hány olyan bizonyos szó van benne.
Elõre is köszönöm! :)
Cím: Szöveg részlet lekérdezése
Írta: KovaNovik - 2014. május 27. - 16:53:58
Ezt egy kis ciklussal meg lehet írni elméletben, de én effektívre akarom, hiszen lehet jobb megoldás is ennél a problémádra. Mi lenne az? Mármint, ez mihez kéne? Addig is nézz körül a wikin az str-el kezdõdõ függvényeknél. Különösen az strcmp, az strfind és az strmid-et ajánlanám.
Cím: Szöveg részlet lekérdezése
Írta: inf - 2014. május 27. - 17:48:57
Ez így jó?
 
new valtozo = 0;
if(strfind(input, \"asd\"))
{
valtozo++;
}
Cím: Szöveg részlet lekérdezése
Írta: KovaNovik - 2014. május 27. - 19:35:30
Na, hát megpróbáltam megcsinálni, tesztelni nem volt alkalmam, szóval valószínûleg lesz benne pár hiba.
 
stock karil_rsz(szvg[], kulcs[], bool:kellnb=true) {
new tsz, hanyknal = strfind(szvg, kulcs, !kellnb);
while(hanyknal != -1) {tsz++; hanyknal = strfind(szvg, kulcs, !kellnb, hanyknal+strlen(kulcs));}
return tsz;
}

 
Használata:
 
printf(\"A \'Sajt kenyér sajt sajt kenyér\' karakterláncban a \'kenyér\' %d helyen fordul elõ.\", karil_rsz(\"Sajt kenyér sajt sajt kenyér\", \"kenyér\", true));

 
Az utolsó paraméter, ha true, ellenõrzi a nagybetût is, ha false, a \"sajt\"-ra beleszámolja a \"SaJt\"-ot is. Nem csak printfnél, máshol is használhatod, vagy változóba is teheted. new valtozo = karil_....
Sok szerencsét, további jó scriptelést! :thumbsup:
Szerk.: Géphez jutottam, azonnal javítottam is benne a hibákat, már szépen teszi a dolgát.
Amúgy, ha érdekel valakit, a karil_rsz a karakterlánc-részletszámláló rövidítése.
\"width=500\"8pBH2eU.jpg?1\"
[/img]
U.i.: ha az utolsó paramétert nem adod meg, true lesz.
Másik használati példa:
 
public OnPlayerText(playerid, text[]) {
        new hanyszor = karil_rsz(text, \"asd\", false); //annyi lesz a \"hanyszor\" változó, ahányszor a szövegben szerepel az ASD szó, akár kis- akár nagybetûkkel.
if(hanyszor > 2) {
                printf(\"Egy üzenet több, mint 2 \'asd\'-ot tartalmazott, így nem engedtük elküldeni.\");
                return SendClientMessage(playerid, -1, \"Az üzenetedben az \'asd\' szó nem fordulhat elõ kettõnél többször!\");
        }
}