Es ist zwar nur ein kleiner Code, aber dennoch dachte ich mir, ihn mal zu posten...
Kennst du es auch, wenn du Nachrichten hast, wo du nicht weißt, ob sie zu lang sind?
Ich persönlich habe dann immer zu viele Nachrichten versendet, die nebenbei gesehen noch zu kurz waren (wie auch bei unserer automatischen Fahrschule)
Da dacht ich mir, entwickel mal ne Funktion, die die Texte dann "durchschneidet" und erst, wenn 128 Zeichen erreicht sind, so viel gibt das Textfeld von sa:mp her, sendet er den Textu nd packt das übrige in einen neuen Text.
Dieser Code schneidet den Text dann noch passend in Stücke, sodass kein zusammenhängendes Wort, esseidern es ist länger als 128 Zeichen, kaputt geht, ich habe im Script jetzt mal das stehen:
LangeNachricht(playerid,blau,"ajgklajklgajgklaj aklgjalkgjalkgjal jaglk ajlkgjalkgjalkgjalkgja aklgjaklgjaklgjalk agkljaklgjaklgjakl aklgjaklgjaklgjaklgj akgjaklgjaklgjaklgj aklgjaklgjalkgjal akgjaklgjaklgjalkg aklgjalkgajkl gajklgakajaklg klagjaklgjaklgjal jalkgja ljaglkgjaklgjalkgjalkgj aklgjaklgjalkgjalk agkjalkgjalkgjalkgj agkjalkgjaklgjaklgj akgjalkgjalkgjalkgj lajglkajglkagjla alagkjalkga",0);
Und die Funktion macht mir das daraus:
Zur Funktion:
//ganz nach unten:
stock LangeNachricht(playerid,farbe,text[],an=0) {
new gla, st=strlen(text), gla2;
hier: {
if(st>128) {
new s[128];
if(gla2==0) {
format(s,sizeof(s),"%s",text); }
else {
format(s,sizeof(s),"%s",text[gla2+1]); }
for(new i=0; i<128; i++) {
if(s[i]==' ') {
gla=i; }}
format(s[gla],sizeof(s)," ");
if(an==0) {
SendClientMessage(playerid,farbe,s); }
else {
SendClientMessageToAll(farbe,s); }
st-=gla;
gla2+=gla;
goto hier; }
}
if(st<=128) {
if(gla2>=1) {
new s[128];
format(s,sizeof(s),"%s",text[gla2+1]);
if(an==0) {
SendClientMessage(playerid,farbe,s); }
else {
SendClientMessageToAll(farbe,s); }
}
else {
if(an==0) {
SendClientMessage(playerid,farbe,text); }
else {
SendClientMessageToAll(farbe,text); }
}
}
return 1;
}
Der Spieler würde diese Nachricht jetzt ohne Probleme zugesendet bekommen
//EDIT: Funktion 3 mal bearbeitet
Was ist neu?
Es wurde ein "an" hinzugefügt
LangeNachricht(playerid,FARBE,text[],an);
Wenn man bei "an" eine 0 (oder gar nichts) einträgt, wird diese Nachricht an eine Person, der playerid gesendet, wenn man bei "an" 1 einträgt, wird die Nachricht an alle gesendet (bei "playerid" trägt man dann irgendwas ein, wird da ja nicht mehr gebraucht)