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: Sramm - 2013. február 26. - 17:12:36

Cím: Sortörés a szóköznél.
Írta: Sramm - 2013. február 26. - 17:12:36
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
Cím: Sortörés a szóköznél.
Írta: Cappsy - 2013. február 26. - 17:15:53
Meglestem szépen össze van rakva
Cím: Sortörés a szóköznél.
Írta: citromhun - 2013. február 26. - 18:08:01
Király! +
Cím: Sortörés a szóköznél.
Írta: Sramm - 2013. február 27. - 14:35:12
UPDATE: Már a hex kódok is megmaradnak! Tehát nincs az, hogy a darabolás miatt kimaradnának.