Hello. Már biztos ismeritek ezt a kódot, ami ha túl hosszú egy szöveg, megtöri a sorokat, és külön sorba írja a dolgokat. Visszatérõ probléma volt, hogy beletört a szavakba, és így elég érthetetlenné sikeredett a szöveg. Ez a kód arra jó, hogy ez kikeresi, hogy hol a szóköz, és úgy töri meg, így biztos nem vág bele a szavakba.
UPDATE: Már a hex kódok is megmaradnak! Tehát nincs az, hogy a darabolás miatt kimaradnának.
Kód: (Mód elejére kell beilleszteni, ha nem menne, include-ba berakom.)
#define MIN_LENGHT 128
#define MAX_LENGHT 256
stock FindLastHexColor(string[])
{
if(strfind(string, \"{\", true) != -1 && strfind(string, \"}\", true) != -1)
{
new pos[4];
for(new i; i<strlen(string); i++)
{
pos[2] = strfind(string,\"{\",true,pos[1]);
pos[3] = strfind(string,\"}\",true,pos[2]);
if(pos[2] >= pos[0] && pos[2]+7 == pos[3])
{
pos[0] = pos[2];
pos[1] = pos[3]+1;
}
}
new ret[16];
strmid(ret,string,pos[0],pos[1]);
return ret;
}
new ret[16];
format(ret,16,\"\");
return ret;
}
stock SendClientMessageEx(playerid,color,string[])
{
new pos[2] = 0;
new msg[128];
if(strlen(string) > MIN_LENGHT)
{
if(strfind(string, \" \", true) != -1)
{
for(new i; i<strlen(string); i++)
{
pos[1] = strfind(string,\" \",true,pos[0]);
if(pos[1] > pos[0] && pos[1] < MIN_LENGHT)
{
pos[0] = pos[1]+1;
}
}
strmid(msg, string, 0, pos[0]);
new last[16];
format(last,16,FindLastHexColor(msg));
SendClientMessage(playerid,color,msg);
strmid(msg, string, pos[0], MAX_LENGHT);
format(msg,sizeof(msg),\"%s%s\",last,msg);
SendClientMessage(playerid,color,msg);
}
else
{
strmid(msg, string, 0, MIN_LENGHT);
SendClientMessage(playerid,color,msg);
new last[16];
format(last,16,FindLastHexColor(msg));
strmid(msg, string, MIN_LENGHT, MAX_LENGHT);
format(msg,sizeof(msg),\"%s%s\",last,msg);
SendClientMessage(playerid,color,msg);
}
}
else SendClientMessage(playerid,color,string);
return 1;
}
#define SendClientMessage SendClientMessageEx
stock SendClientMessageToAllEx(color,string[])
{
new pos[2] = 0;
new msg[128];
if(strlen(string) > MIN_LENGHT)
{
if(strfind(string, \" \", true) != -1)
{
for(new i; i<strlen(string); i++)
{
pos[1] = strfind(string,\" \",true,pos[0]);
if(pos[1] > pos[0] && pos[1] < MIN_LENGHT)
{
pos[0] = pos[1]+1;
}
}
strmid(msg, string, 0, pos[0]);
new last[16];
format(last,16,FindLastHexColor(msg));
SendClientMessageToAll(color,msg);
strmid(msg, string, pos[0], MAX_LENGHT);
format(msg,sizeof(msg),\"%s%s\",last,msg);
SendClientMessageToAll(color,msg);
}
else
{
strmid(msg, string, 0, MIN_LENGHT);
new last[16];
format(last,16,FindLastHexColor(msg));
SendClientMessageToAll(color,msg);
strmid(msg, string, MIN_LENGHT, MAX_LENGHT);
format(msg,sizeof(msg),\"%s%s\",last,msg);
SendClientMessageToAll(color,msg);
}
}
else SendClientMessageToAll(color,string);
return 1;
}
#define SendClientMessageToAll SendClientMessageToAllEx