Einen Comman weiter scripten

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
  • Hallo Community,
    Ich besitze ein LoH 0.4 stark Edteirt by MySelf ^^


    Ich wollte mal fragen wie kann ich den /prison befehl so erweitern das mir auch der Grund angezeigt wird:


    Mein Befehl:

    if(strcmp(cmd, "/prison", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, Rot , "[Benutze]: /prison [ID] [Zeit]");
    return 1;
    }
    new playa;
    new money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 1338)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "[AdmCmd]: Du hast %s für %d Minuten ins Prison eingesperrt.", giveplayer, money);
    SendClientMessage(playerid, Leuchtrot, string);
    format(string, sizeof(string), "Du wurdest von Admin %s für %d Minuten ins Prison gesteckt", sendername, money);
    SendClientMessage(playa, Leuchtrot, string);
    ResetPlayerWeapons(playa);
    WantedPoints[playa] = 0;
    PlayerInfo[playa][pJailed] = 1;
    PlayerInfo[playa][pJailTime] = money*60;
    SetPlayerInterior(playa, 0);
    SetPlayerPos(playa,864.91, -2077.61, 927.41);
    SendClientMessage(playa, COLOR_LIGHTBLUE, "Um deine Absitzzeit anzusehen benutze{FFFFFF} /prisontime.");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, Rot , "Du bist kein befugter Admin!");
    }
    }
    return 1;
    }


    ich möchte noch das da den grund dahinter steht.

  • if(strcmp(cmd, "/prison", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, Rot , "[Benutze]: /prison [ID] [Zeit]");
    return 1;
    }
    new playa;
    new money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    new grund[100];
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    while ((idx < length) && ((idx - offset) < (sizeof(grund) - 1)))
    {
    grund[idx - offset] = cmdtext[idx];
    idx++;
    }
    grund[idx - offset] = EOS;
    if (PlayerInfo[playerid][pAdmin] >= 1338)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "[AdmCmd]: Du hast %s für %d Minuten ins Prison eingesperrt. Grund: %s", giveplayer, money, (grund));
    SendClientMessage(playerid, Leuchtrot, string);
    format(string, sizeof(string), "Du wurdest von Admin %s für %d Minuten wegen %s ins Prison gesteckt", sendername, money, (grund));
    SendClientMessage(playa, Leuchtrot, string);
    ResetPlayerWeapons(playa);
    WantedPoints[playa] = 0;
    PlayerInfo[playa][pJailed] = 1;
    PlayerInfo[playa][pJailTime] = money*60;
    SetPlayerInterior(playa, 0);
    SetPlayerPos(playa,864.91, -2077.61, 927.41);
    SendClientMessage(playa, COLOR_LIGHTBLUE, "Um deine Absitzzeit anzusehen benutze{FFFFFF} /prisontime.");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, Rot , "Du bist kein befugter Admin!");
    }
    }
    return 1;
    }


    Ungetestet! sollte aber rein Theoretisch alles klappen.



    MFG
    CutX


    Rechtschreibfehler sind lediglich nur special-effects meiner Tastatur :P

  • Leute, ich weiß das mein Post nicht gerade zum Thema passt, aber warum benutzt ihr noch die alten Funktionen?


    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    while ((idx < length) && ((idx - offset) < (sizeof(grund) - 1)))
    {
    grund[idx - offset] = cmdtext[idx];
    idx++;
    }

    Macht eucht doch eine Globale Funktion wo ihr immer die Ausgabe mittels Return zurück bekommt, aber kopiert diesen Abschnitt doch nicht in jedem Befehl rein, damit verbraucht ihr Platz wie sonst was oder steigt auf "sscanf" um! Es ist wesentlich schneller und einfacher zu bedienen!