/advertise -> Auf zwei Zeilen umbrechen bei Bedarf ?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich würde gerne die Möglichkeit bieten das man eine längere Werbung schalten kann, dazu müsste man die Werbung bei Bedarf über zwei Zeilen "brechen", dH. wenn der "string" mit Werbetext+PlayerName+TelNo. länger als ka 150 Zeichen ist, ab 150 Zeichen den restlichen Inhalt von string Nr. 1 in einen string Nr. 2 stopfen, könnte mir da jemand bei der Umsetzung helfen ? Danke im Voraus.




    if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0 || strcmp(cmd, "/werbung", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist noch nicht eingeloggt !");
    return 1;
    }
    if(PlayerInfo[playerid][pLevel] < 2)
    {
    SendClientMessage(playerid, COLOR_GREY, " Werbung erst ab Level 2 möglich");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[300];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "ANWENDUNG: /werbung [Werbetext]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), "Versuche es später noch einmal, das Werbelimit liegt bei einer Werbung pro %d Sekunden!", (addtimer/750));
    SendClientMessage(playerid, COLOR_GRAD2, string);
    return 1;


    }
    new payout = idx * 25;
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* %d Buchstaben verbraucht, du hast keine $%d um das zu bezahlen", offset, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    GivePlayerMoney(playerid, - payout);
    SBizzInfo[7][sbTill] += payout;
    format(string, sizeof(string), "WERBUNG: %s. VON: %s Tel: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR,string);
    format(string, sizeof(string), "~r~Rechnung: $%d~n~~w~Deine Nachricht umfasste %d Buchstaben", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    return 1;
    }

  • Danke für den Tipp, das hab ich schon getestest und von ca 100 auf 300 erhöht, jedoch handelt es sich dabei nur um den Inhalt der in einer Zeile/einem String dargestellt wird.


    Ich muss diesen einen string wie gesagt aufteilen auf zwei string vorausgesetzt eine bstimmte Zeichenanzahl wird überschritten (120 Zeichen zb.), ich weis nur leider nicht wie ich es angehen soll

  • Ich weiß nicht, obs klappt, hab aber nach meiner Erfahrung mal was gemacht, kannst es ja testen, kann es zur Zeit selbst nicht, weil ich verreist bin^^ :


    if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0 || strcmp(cmd, "/werbung", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist noch nicht eingeloggt !");
    return 1;
    }
    if(PlayerInfo[playerid][pLevel] < 2)
    {
    SendClientMessage(playerid, COLOR_GREY, " Werbung erst ab Level 2 möglich");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[512];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "ANWENDUNG: /werbung [Werbetext]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), "Versuche es später noch einmal, das Werbelimit liegt bei einer Werbung pro %d Sekunden!", (addtimer/750));
    SendClientMessage(playerid, COLOR_GRAD2, string);
    return 1;
    }
    new payout = idx * 25;
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* %d Buchstaben verbraucht, du hast keine $%d um das zu bezahlen", offset, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    GivePlayerMoney(playerid, - payout);
    SBizzInfo[7][sbTill] += payout;
    if(strlen(result) <= 256)
    {
    format(string, sizeof(string), "WERBUNG: %s. VON: %s Tel: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR, string);
    }
    else if(strlen(result) > 256)
    {
    new string2[256];
    new amount = strlen(result) - 256;
    format(string, sizeof(string), "WERBUNG: %s ...", result[256]);
    format(string2, sizeof(string2),"... %s. VON: %s Tel: %d", result[amount], sendername, PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR,string);
    OOCNews(TEAM_GROVE_COLOR,string2);
    }
    format(string, sizeof(string), "~r~Rechnung: $%d~n~~w~Deine Nachricht umfasste %d Buchstaben", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    return 1;
    }

  • Ist zwar schon langer her die Antwort aber da der TRead ersteller sich nicht meldet mach ich das mal es geht nicht.


    PS: will das auch haben aber kein Neues TRead erstellen da ich der meinung bin das dieses tread noch nicht Fertig ist.