Aduty funktioniert nicht

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
  • Es wird komischerweise kein Sendclientmessage ausgegeben...

    ocmd:aduty(playerid,params[])
    {
    #pragma unused params
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,Rot,"Du besitzt nicht das nötige Adminlevel um diesen Befehl auszuführen.");
    if(AdminDuty[playerid]==false)
    {
    new string3[300];
    AdminDuty[playerid]=true;
    format(string3,sizeof(string3),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt im Dienst. Ihr könnt ihn per /Report erreichen falls ihr fragen habt.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,string3);
    }
    else if(AdminDuty[playerid]==true)
    {
    new string2[300];
    AdminDuty[playerid]=false;
    format(string2,sizeof(string2),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt nicht mehr im Dienst. Er ist jetzt nicht mehr per /report erreichbar.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,string2);
    }
    return 1;
    }


  • Was kommt dann?


    MfG
    Geronimo

  • vllt so: bzw. ich finde keinen Fehler

    ocmd:aduty(playerid,params[])
    {
    #pragma unused params
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,Rot,"Du besitzt nicht das nötige Adminlevel um diesen Befehl auszuführen.");
    new string3[300];
    if(AdminDuty[playerid]==false)
    {

    AdminDuty[playerid]=true;
    format(string3,sizeof(string3),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt im Dienst. Ihr könnt ihn per /Report erreichen falls ihr fragen habt.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    }
    else if(AdminDuty[playerid]==true)
    {
    AdminDuty[playerid]=false;
    format(string3,sizeof(string3),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt nicht mehr im Dienst. Er ist jetzt nicht mehr per /report erreichbar.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    }
    SendClientMessageToAll(Hellblau,string3);
    return 1;
    }

  • Wie hast du AdminDuty definiert?
    Versuch es mal so wenn du es noch nicht hast
    new bool:AdminDuty[MAX_PLAYERS];


    //Edit:
    xFreeze: Schau mal so ist der Code viel Ordentlicher


    ocmd:aduty(playerid,params[])
    {
    new tstring[300];
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,Rot,"Du besitzt nicht das nötige Adminlevel um diesen Befehl auszuführen.");
    if(AdminDuty[playerid] == false)
    {
    AdminDuty[playerid] = true;
    format(tstring,sizeof(tstring),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt im Dienst. Ihr könnt ihn per /Report erreichen falls ihr fragen habt.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    }
    else if(AdminDuty[playerid] == true)
    {
    AdminDuty[playerid] = false;
    format(tstring,sizeof(tstring),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt nicht mehr im Dienst. Er ist jetzt nicht mehr per /report erreichbar.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    }
    SendClientMessageToAll(Hellblau,tstring);
    return 1;
    }

    ktos-dev.de
    Webentwicklung & Gestaltung uvm.

    Einmal editiert, zuletzt von Nico65 ()

  • ocmd:aduty(playerid,params[])
    {
    new tstring[300];
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,Rot,"Du besitzt nicht das nötige Adminlevel um diesen Befehl auszuführen.");
    if(AdminDuty[playerid] == false)
    {
    AdminDuty[playerid] = true;
    format(tstring,sizeof(tstring),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt im Dienst. Ihr könnt ihn per /Report erreichen falls ihr fragen habt.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,tstring);
    }
    else if(AdminDuty[playerid] == true)
    {
    AdminDuty[playerid] = false;
    format(tstring,sizeof(tstring),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt nicht mehr im Dienst. Er ist jetzt nicht mehr per /report erreichbar.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,tstring);
    }
    return 1;
    }


    Old but Gold ^^

  • @Nico65 Ich möchte nicht jedem x beliebigen Menschen hier auf Breadfish mein Script zeigen,
    damals ging es noch aber seitdem ich die Farbe reingemacht habe nicht.

    Will ja nur helfen, und außerdem was will ich mit deinem Script anfangen?
    Aber ist ja deine Entscheidung.

    Wo isn da der Unterschied zwischen meinem Code?
    An meinem SCMTA liegt es nicht.

  • ocmd:aduty(playerid,params[])
    {
    //#pragma unused params
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,Rot,"Du besitzt nicht das nötige Adminlevel um diesen Befehl auszuführen.");
    if(AdminDuty[playerid]==false)
    {
    new string3[300];
    AdminDuty[playerid]=true;
    format(string3,sizeof(string3),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt im Dienst. Ihr könnt ihn per /Report erreichen falls ihr fragen habt.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,string3);
    AdminDuty[playerid]=true;
    return 1;
    }
    else if(AdminDuty[playerid]==true)
    {
    new string2[300];
    format(string2,sizeof(string2),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt nicht mehr im Dienst. Er ist jetzt nicht mehr per /report erreichbar.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,string2);
    AdminDuty[playerid]=false;
    return 1;
    }
    }

  • DialogHD Ich benutze aber keine parameter warum sollte ich das tun?
    Außerdem ist der Code von Grund auf falsch weil du nicht mal den Befehl returnst (Denglisch).
    Es mache keinen unterschied ob ich dort ein return 1; rein schreibe. Und ich nutze keine Parameter
    wieso sollte ich das dann auskommentieren?

  • @Nico65 Inwiefern willst du mir den per TV helfen, kannst du das nicht einfach hier machen?

    Weil es so einfacher ist dann muss ich dich nicht immer nach dem Code fragen.
    Naja egal, zeig mir mal bitte wie du AdminDuty definiert hast.
    Und pack am besten unter OnPlayerConnect


    AdminDuty[playerid] = false;


    hin.


    //Edit: Unter anderem benötigst du das "#pragma unused params" bei ocmd nicht.

  • @Nico65 Meines wissens ist ein bool automatisch auf false gesetzt wenn man sich einloggt.
    Außerdem ist #pragma unused params nicht nötig aber zu empfehlen da man nicht sscanf
    nutzt und somit werden Ressoursen gespart. Den Fehler sehe ich im Code ehrlich gesagt
    nicht aber wollte das nur mal so sagen ;)

  • probiers mal so


    ocmd:aduty(playerid,params[])
    {
    //#pragma unused params
    if(!IsPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,Rot,"Du besitzt nicht das nötige Adminlevel um diesen Befehl auszuführen.");
    {
    if(AdminDuty[playerid]==false)
    {
    new string3[300];
    AdminDuty[playerid]=true;
    format(string3,sizeof(string3),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt im Dienst. Ihr könnt ihn per /Report erreichen falls ihr fragen habt.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,string3);
    }
    else if(AdminDuty[playerid]==true)
    {
    new string2[300];
    AdminDuty[playerid]=false;
    format(string2,sizeof(string2),"{DF7401}>>>{F2F2F2}Der %s {DF7401}%s{F2F2F2} ist jetzt nicht mehr im Dienst. Er ist jetzt nicht mehr per /report erreichbar.{DF7401}<<<",GetAdminRang(playerid),PlayerName(playerid));
    SendClientMessageToAll(Hellblau,string2);
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen
    Siepac

  • DialogHD Ich benutze aber keine parameter warum sollte ich das tun?
    Außerdem ist der Code von Grund auf falsch weil du nicht mal den Befehl returnst (Denglisch).
    Es mache keinen unterschied ob ich dort ein return 1; rein schreibe. Und ich nutze keine Parameter
    wieso sollte ich das dann auskommentieren?


    Du benutzt keine parameter, also wozu überhaupt ocmd benutzen?
    Das Return ist wichtig, da du so abfragst:


    Ist dieser Wert False?
    Ja
    Setze auf True!
    <<- hier hast du keinen abbruch, die Funktion geht einfach weiter. Da bräuchtest du nen Return.
    Ist der Wert True?
    Ja
    Setze auf False!

  • Blunt Bei ihm wird doch nur nicht die Message ausgegeben und das System müsste so eigentlich funktionieren.
    Ocmd ist schneller als strcmp und man kann einfach die Funktion der Parameter ausschalten, damit es schneller ausgeführt wird.


    Ocmd, ist nicht schneller als strcmp, das ist schwachsinn hoch 10. Schau dir den include an, dann weisst du wieso es unmöglich ist. Stimmt, er hat nen else if drinne, hab ich übersehen, dann müsste der Code auch gehen.


    @ Threadersteller, schick uns mal dein Farbcode, du meintest ja, seitdem du es verändert hast, dass es nicht geht.