/advertise zeichen zählen immer 0

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
  • hay @ all
    und zwar hab ich mein script auf dcmd ungestellt und nun bekomme ich immer bei werbung (/ad) das der string 0 zeichen lang sei
    //----------------------------------[advertise]-----------------------------------------------
    dcmd_ad(playerid,params[]){return dcmd_advertise(playerid,params);}
    dcmd_advertise(playerid,params[])
    {
    new sendername[MAX_PLAYER_NAME],string[256];
    new idx;
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist derzeit nicht eingeloggt !");
    return 1;
    }
    if(PlayerInfo[playerid][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst mindestens Level 3 sein !");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new result[64];
    new length = strlen(params);//ab hier
    while ((idx < length) && (params[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;//bis hier wird gezählt
    if(sscanf(params,"s",result))
    {
    return 1;
    }
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/ad)vertise [advert text]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), " Es wurde bereits geworben warte %d sekunden !", (addtimer/1000));
    SendClientMessage(playerid, COLOR_GRAD2, string);
    return 1;
    }
    new payout = idx * 25;
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* Du hast %d erreicht dies kostet dich $%d, du hast nicht genug Geld.", offset, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    PlayerMoney[playerid] -= payout;
    SBizzInfo[7][sbTill] += payout;
    ExtortionSBiz(7, payout);
    format(string, sizeof(string), "Werbung: %s, Nummer: %s Ph: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR,string);
    format(string, sizeof(string), "~r~Paid $%d~n~~w~Message contained: %d Characters", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    return 1;
    }

    you have been Traceured.


    Einmal editiert, zuletzt von Mike_Traceur ()

  • Könnte daran liegen, dass du kein strtok nutzst und somit auch kein idx als Länge benutzt wird.
    Mach es so:
    dcmd_ad(playerid,params[]){return dcmd_advertise(playerid,params);}
    dcmd_advertise(playerid,params[])
    {
    new sendername[MAX_PLAYER_NAME], string[128], result[64];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist derzeit nicht eingeloggt !");
    return 1;
    }
    if(PlayerInfo[playerid][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst mindestens Level 3 sein !");
    return 1;
    }
    if(sscanf(params,"s",result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: (/ad)vertise [advert text]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), " Es wurde bereits geworben warte %d sekunden !", (addtimer/1000));
    SendClientMessage(playerid, COLOR_GRAD2, string);
    return 1;
    }
    new idx = strlen(result);
    new payout = idx * 25;
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* Du hast %d erreicht dies kostet dich $%d, du hast nicht genug Geld.", idx, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    PlayerMoney[playerid] -= payout;
    SBizzInfo[7][sbTill] += payout;
    ExtortionSBiz(7, payout);
    format(string, sizeof(string), "Werbung: %s, Nummer: %s Ph: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR,string);
    format(string, sizeof(string), "~r~Paid $%d~n~~w~Message contained: %d Characters", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    return 1;
    }


    Sorry 4 fuckin' indentation


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!