-
Ü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! :)
-
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.
-
Ez így jó?
new valtozo = 0;
if(strfind(input, \"asd\"))
{
valtozo++;
}
-
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.


[/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!\");
}
}
-
Ü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! :)
-
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.
-
Ez így jó?
new valtozo = 0;
if(strfind(input, \"asd\"))
{
valtozo++;
}
-
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.


[/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!\");
}
}