Adminprison [Grundangabe]

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, liebe Com, wie mache ich
    das man bei /adminprison einen Grund angeben kann?


    Eigentlich weiß ich wie man mit sccanf arbeitet, aber in diesem CMD ist alles durcheinander. :(

    if(!strcmp("/adminprison", cmd, true))
    {
    if(!IstSpielerAdmin(playerid, 1)) return SendClientMessage(playerid,COLOR_RED,"Zugriff verweigert! Du benötigst mindestens den Adminrang: {00A500}Supporter ");
    tmp = strtok(cmdtext,idx);
    if(!tmp[0]) return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /adminprison [ID] [Zeit]");
    new id = strval(tmp);
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"~> Spieler nicht gefunden.");
    tmp = strtok(cmdtext,idx);
    new zeit = strval(tmp);
    if(zeit < 0 || zeit > 300) return SendClientMessage(playerid,COLOR_WHITE," Zeit nur zwischen 0 und 300 Minuten!");
    //gMessage = strrest(cmdtext,idx); //WAS DAS?!
    sSpieler[id][Adminprison] = zeit; //Hier das was Gesetzt werden soll (Funktioniert nicht!)
    SetPlayerPos(id,1218.4226,2552.8484,10.8203);
    SetTimerEx("ajailtimer", 10, 1, "i", id); //Den Timer evtl überarbeiten
    //SetTimer("ajailtimer", 10, 0);
    new admin[MAX_PLAYER_NAME+1], string[120+MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, admin, sizeof(admin));
    new adminprisontime = sSpieler[playerid][Adminprison];
    format(string, sizeof(string), "*Du wurdest von %s für %d Minuten ins Adminprison teleportiert, Grund: (Hier der Grund) ", admin,adminprisontime);
    SendClientMessage(id, COLOR_RED, string);
    SendClientMessage(playerid,COLOR_GREEN,"~> Spieler wurde ins Adminprison teleportiert!");
    return 1;
    }



    Danke im Voraus :)

  • ocmd:adminprision(playerid,params[]) {
    if(ZisPlayerAnAdmin(playerid,1)) return SendCLientMessage(playerid,Deinefarbe, "Du bist kein Admin");
    new pID,Grund[28],zeit,string[128],string2[128];
    if(sscanf(params,"ui",pID,zeit,Grund)) return SendClientMessage(playerid,COLOR_GRAD1,"Benutzung: /adminprision [playerid] [Zeit] [Grund]");
    if(zeit < 1 || zeit > 120)
    {
    SendClientMessage(playerid,COLOR_WHITE," Zeit nur zwischen 1 und 120 Minuten!");
    return 1;
    }
    SetPlayerPos(pID,1218.4226,2552.8484,10.8203);
    zeit = //Deine variable wenn die abläuft unjail
    return 1;
    }


    Gard schnell gemacht ist ungetestet....kannst dir das aber noch viel versprechend aufbauen


    L.G.


    heyho ;)


    // edit: Nachrichten falsch musste dann noch machen....

  • Bitte für cmdtext.



    Habe das versucht, aber da kommt wenn man alles richtig macht nichts.

    if (strcmp("/adminprison", cmdtext, true, 10) == 0)
    {
    if(!IstSpielerAdmin(playerid,1)) return SendClientMessage(playerid,COLOR_RED,"Zugriff verweigert! Du benötigst mindestens den Adminrang: {00A500}Supporter ");
    new pID,Grund[28],zeit,string[128],string2[128];
    if(sscanf(cmdtext,"ui",pID,zeit,Grund)) return SendClientMessage(playerid,COLOR_RED,"Benutzung: /adminprision [playerid] [Zeit] [Grund]");
    SetPlayerPos(pID,1218.4226,2552.8484,10.8203);
    new admin[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, admin, sizeof(admin));
    format(string, sizeof(string), "*Du wurdest von %s für %d Minuten ins Adminprison teleportiert, Grund: %s ", admin,zeit,Grund);
    SendClientMessage(pID, COLOR_RED, string);


    return 1;
    }

  • Ich war so frei und hab es einfach an deinem ursprünglichen Command gemacht:


    if(!strcmp("/adminprison", cmd, true))
    {
    if(!IstSpielerAdmin(playerid, 1)) return SendClientMessage(playerid,COLOR_RED,"Zugriff verweigert! Du benötigst mindestens den Adminrang: {00A500}Supporter ");
    new len; //Hier
    tmp = strtok(cmdtext,idx); len = strlen(tmp); //Hier
    if(!tmp[0]) return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /adminprison [ID] [Zeit]");
    new id = strval(tmp);
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"~> Spieler nicht gefunden.");
    tmp = strtok(cmdtext,idx); len += strlen(tmp)+1; //Hier
    new zeit = strval(tmp);
    if(zeit < 0 || zeit > 300) return SendClientMessage(playerid,COLOR_WHITE," Zeit nur zwischen 0 und 300 Minuten!");
    //gMessage = strrest(cmdtext,idx); //WAS DAS?!
    sSpieler[id][Adminprison] = zeit; //Hier das was Gesetzt werden soll (Funktioniert nicht!)
    SetPlayerPos(id,1218.4226,2552.8484,10.8203);
    SetTimerEx("ajailtimer", 10, 1, "i", id); //Den Timer evtl überarbeiten
    //SetTimer("ajailtimer", 10, 0);
    new admin[MAX_PLAYER_NAME+1], string[120+MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, admin, sizeof(admin));
    new adminprisontime = sSpieler[playerid][Adminprison];
    if(!cmdtext[13+len]) format(string, sizeof(string), "*Du wurdest von %s für %d Minuten ins Adminprison teleportiert, Grund: (Kein Grund) ", admin,adminprisontime); //Hier
    else format(string, sizeof(string), "*Du wurdest von %s für %d Minuten ins Adminprison teleportiert, Grund: (%s) ", admin,adminprisontime, cmdtext[13+len]); //Und hier
    SendClientMessage(id, COLOR_RED, string);
    SendClientMessage(playerid,COLOR_GREEN,"~> Spieler wurde ins Adminprison teleportiert!");
    return 1;
    }


    Geänderte Zeilen wurden markiert. Wenn ich richtig gezählt habe, sollte es tun.
    Somit hätten wir (mal wieder^^) vollständig auf sscanf verzichtet.