Gründe mit Texten anstatt Wörter

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
  • Bisher hab ich gründe so gemacht:
    result = strget(cmdtext,1);


    Ausgabe nur mit einem wort also ich tippe:
    /d Test Test


    Ausgabe:
    >> GooMan: Test


    Wenn ich aber nur cmdtext nehme:


    /d Test Test


    Ausgabe:
    >> GooMan: /d Test Test


    Ich möchte aber:


    /d Test Test


    Ausgabe:
    >> GooMan: Test Test


    Kann mir jemand Helfen :)?


    :thumbup: :thumbup: :thumbup:

  • jop, geht anders :)


    Strtok trennt die wörter immer bei nem leerzeichen. Es gibt aber auch funktionen, die das nicht tuhen. Sie sind oft bei PM-CMD´s dabei ;)


    z.B. sowas hier:


    stock bigstrtok(const string[], &idx)
    {
    new length = strlen(string);
    while ((idx < length) && (string[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[128];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = string[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    return result;
    }


    Musst nu anstatt deiner funktion, bigstrtok verwenden ;)


    MFG, Robdeflop®

  • if(strcmp(strget(cmdtext,0), "/sz", true) == 0)
    {
    new name[128], save[128];
    new zielname[128];
    ziel = strval(strget(cmdtext,1));
    new strafe = strval(strget(cmdtext,2));
    new grund[128];
    grund = bigstrtok(cmdtext);
    //grund = strget(cmdtext,3);
    GetPlayerName(playerid,name,sizeof(name)); // wie
    format(save,sizeof(save),"/Spieler/%s.ini",name);// oben
    if(dini_Exists(save)) // steht
    {
    pInfo[playerid][gTeam] = dini_Int(save,"Fraktion");
    }


    if(pInfo[playerid][gTeam] == lsoamt)
    {
    if(!strlen(strget(cmdtext,3))) return SendClientMessage(playerid, COLOR_RED, "Benutze: /sz [ID] [STRAFE] [GRUND]");
    {
    new straftext[128];
    new textreturn[128];
    format(straftext,sizeof(straftext),"Du hast einen Strafzettel, von %s, in Höhe von $%i bekommen, wegen %s! /takesz um den Strafzettel anzunehmen!",name,strafe,grund);
    SendClientMessage(ziel,COLOR_BLUE,straftext);
    TicketMoney[ziel] = strafe;
    TicketOffer[ziel] = playerid;
    GetPlayerName(ziel,zielname,sizeof(zielname)); // wie
    format(textreturn,sizeof(textreturn),"Du hast dem User %s einen Strafzettel in Höhe von $%i ausgestellt! Grund: %s",zielname,strafe,grund);
    SendClientMessage(playerid,COLOR_RED,textreturn);
    }
    }else{
    SendClientMessage(playerid,COLOR_RED,"Du musst O-Amtler sein um diesen Befehl nutzen zu können!");
    }
    return 1;
    }
    dort kommt:


    Server: Unkown Command


    EDIT:


    aber wenn ichs so habe:



    //grund = bigstrtok(cmdtext);
    grund = strget(cmdtext,3);

    geht es..

  • Bei sz geht es jetzt aber beim /d chat nicht da steht wieder:


    >> Dienstleiter GooMan: /d Cops bitte zum Oamt


    EDIT:


    Script:


    if(strcmp(strget(cmdtext,0), "/d", true) == 0)
    {
    if(!strlen(strget(cmdtext,1))) return SendClientMessage(playerid, COLOR_RED, "Verwendung: /d [text]");
    {
    new sendername[128], string[128], result[128];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    //result = strget(cmdtext,1);
    result = bigstrtok(cmdtext, idx);


    if(pInfo[playerid][gTeam] == SAPD || pInfo[playerid][gLeader] == SAPD)
    {
    if(pInfo[playerid][fRank] == 10) { format(string, sizeof(string), ">> Polizeidirektor %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 9) { format(string, sizeof(string), ">> Stellv. Polizeidirektor %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 8) { format(string, sizeof(string), ">> Supervisory Spectre %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 7) { format(string, sizeof(string), ">> Spectre in Charge %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 6) { format(string, sizeof(string), ">> Spectre %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 5) { format(string, sizeof(string), ">> Assistent Spectre %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 4) { format(string, sizeof(string), ">> Hauptkommissar %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 3) { format(string, sizeof(string), ">> Kommissar %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 2) { format(string, sizeof(string), ">> Hauptwachmeister %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 1) { format(string, sizeof(string), ">> Wachmeister %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 0) { format(string, sizeof(string), ">> Azubi %s: %s", sendername, result); }
    }
    else if(pInfo[playerid][gTeam] == lsoamt || pInfo[playerid][gLeader] == lsoamt)
    {
    if(pInfo[playerid][fRank] == 10) { format(string, sizeof(string), ">> Diensstellenleiter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 9) { format(string, sizeof(string), ">> Stellv. Diensstellenleiter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 8) { format(string, sizeof(string), ">> Verkehrssicherheitsbeamter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 7) { format(string, sizeof(string), ">> Sachbearbeiter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 6) { format(string, sizeof(string), ">> Ordnungshüter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 5) { format(string, sizeof(string), ">> Beamter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 4) { format(string, sizeof(string), ">> Angestellter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 3) { format(string, sizeof(string), ">> Mitarbeiter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 2) { format(string, sizeof(string), ">> Anwärter %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 1) { format(string, sizeof(string), ">> Azubi %s: %s", sendername, result); }
    else if(pInfo[playerid][fRank] == 0) { format(string, sizeof(string), ">> Praktikant %s: %s", sendername, result); }
    }
    SendTeamMessage(SAPD, COLOR_ALLDEPT, string);
    SendTeamMessage(lsoamt, COLOR_ALLDEPT, string);
    SendTeamMessage(lsmedic, COLOR_ALLDEPT, string);
    SendTeamMessage(lsarmy, COLOR_ALLDEPT, string);


    printf("Department Chat: %s", string);
    }
    return 1;
    }

  • Bei sz geht es jetzt.


    Aber beim /d chat nicht da steht wieder:


    >> Dienstleiter GooMan: /d Cops bitte zum Oamt


    der befehl /d wird mit in den text genommen...


    ____________________________________


    Bei sz genauso -.-


    Grund: /sz 7 2 Das ist ein test


    Screenshot vom Problem:



    Problem ist überall.... erst steht da mit dem command also /d und dann kommt nichts mehr^^

    2 Mal editiert, zuletzt von GooMan ()

  • Das geht alles nicht '-.- habs schon mit cmdtext probiert aber da wird auch das /d bzw. /sz 2 300 Test Test ausgegeben... Geht das echt nicht :(?


    So neue methode...


    würde das gehen:


    cmdtext[4]


    das hab ich in einem anderen script gefunden


    Frage für was steht die 4?


    EDIT: habs:


    Notlösung


    cmdtext[4];


    Die 4 steht für wieviele zeichen weggemacht werden soll z.b.:


    /d hallo


    -> cmdtext[2]

    3 Mal editiert, zuletzt von GooMan ()