[SAMMELTHREAD] Scripting Fragen.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Moin, ich habe da ein kleines Problem.
    Ich versuche einen ocmd-ban Befehl zu machen. Doch es tauchen diese Errors/Warnings auf.

    Quellcode

    1. (115) : error 012: invalid function call, not a valid address
    2. (115) : warning 215: expression has no effect
    3. (115) : error 001: expected token: ";", but found ")"
    4. (115) : error 029: invalid expression, assumed zero
    5. (115) : fatal error 107: too many error messages on one line


    Hier der gesamte Befehl:

    Quellcode

    1. ocmd:ban(playerid,params[])
    2. {
    3. if(!IstSpielerAdmin(playerid))return SendClientMessage(playerid, grau, "Diesen Befehl darfst du nicht nutzen!");
    4. new PID,reason[50],string[128];
    5. if(sscanf(params,"ds",PID,reason))return SendClientMessage(playerid, grau, "/ban <ID/Spieler> <Grund>");
    6. format(string,128,"%s wurde von %s vom Server gebannt. Grund: %s",SpielerName(playerid),SpielerName(PID),reason);
    7. SendClientMessageToAll(rot,string);
    8. Ban(PID);
    9. return 1;
    10. }


    Zeile 115 ist: format(string,128,"%s wurde von %s vom Server gebannt. Grund: %s",SpielerName(playerid),SpielerName(PID),reason); .
    Achja, ich habe erst seit neustem das Scripten für mich entdeckt.
    Ich hoffe mir kann jemand helfen.

    MfG

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Drummer ()

  • Problem gelöst.
    Ich habe eine weitere Frage an euch.
    Wie kann ich es einstellen, dass ich zum Beispiel mit /asay als "Administrator: ..." schreiben kann?
    Ich wollte es wohl mit ocmd. Der Befehl an sich funktioniert schon, aber es steht nur "Administratot:" da, kein Text.
    Hier der Befehl:

    Quellcode

    1. ocmd:asay(playerid,params[])
    2. {
    3. if(IstSpielerAdmin(playerid,3))
    4. {
    5. new inputtext[64];
    6. if(sscanf(params,"u",inputtext))return SendClientMessage(playerid,grau,"Benutze: /asay [Text]");
    7. format(inputtext,sizeof(inputtext),"Administrator: %s");
    8. SendClientMessageToAll(adminblau,inputtext);
    9. return 1;
    10. }
    11. else
    12. {
    13. SendClientMessage(playerid,grau,"Diesen Befehl darfst du nicht nutzen!");
    14. return 1;
    15. }
    16. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Drummer ()

  • edit,warte


    Ein string ist kein user..also
    anstatt [pwn]if(sscanf(params,"u",inputte[/pwn]

    [pwn]if(sscanf(params,"s[128]",inputte[/pwn]

    [pwn]format(inputtext,sizeof(inputtext),"Administrator: %s");[/pwn]

    zu
    [pwn]format(inputtext,sizeof(inputtext),"Administrator: %s",inputtext);[/pwn]

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Manniac ()

  • Jetzt sieht der Befehl so aus:

    Quellcode

    1. ocmd:asay(playerid,params[])
    2. {
    3. new inputtext[64];
    4. if(sscanf(params,"s[128]",inputtext)) return SendClientMessage(playerid,grau,"Benutze: /asay [Text]");
    5. if(IstSpielerAdmin(playerid,3))
    6. {
    7. format(inputtext,sizeof(inputtext),"Administrator: %s");
    8. SendClientMessageToAll(adminblau,inputtext);
    9. return 1;
    10. }
    11. else
    12. {
    13. SendClientMessage(playerid,grau,"Diesen Befehl darfst du nicht nutzen!");
    14. return 1;
    15. }
    16. }
    Alles anzeigen


    Doch auch wenn ich etwas eingebe, steht dort: "Benutze: /asay [Text]".
  • 1. return 1; vergessen
    2. bei format hinten inputtext vergessen
    3. Zeilen sparen und nicht überall ein return 1; setzen
    und
    4. zcmd benutzen ist eine Mischung aus dem Standart und ocmd
    d.h. wenn du im Script das drin hast
    z.b. COMMAND:asay(playerid,params[])
    kannst du es auch ingame so verwenden /AsAy
    sonst wenn du es mir nicht glaubst versuchs mit ocmd (wird aber nicht klappen)


    [pwn]ocmd:asay(playerid,params[])
    {
    new inputtext[128];
    if(sscanf(params,"s[128]",inputtext)) return SendClientMessage(playerid,grau,"Benutze: /asay [Text]");
    if(IstSpielerAdmin(playerid,3))
    {
    format(inputtext,sizeof(inputtext),"Administrator: %s",inputtext);
    SendClientMessageToAll(adminblau,inputtext);
    }
    else
    {
    SendClientMessage(playerid,grau,"Diesen Befehl darfst du nicht nutzen!");
    }
    return 1;
    }[/pwn]

    MFG
    Diavolo

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Diavolo ()

  • DasNeo schrieb:

    Hey, habe hier ein kleines Problemchen, welches ich gar nicht verstehe. Weiß da vielleicht jemand mehr als ich?

    [pwn]enum gData
    {
    ...
    name[24],
    ...
    };

    ...

    GroupData[name] = "no-one";
    [/pwn]

    error 047: array sizes do not match, or destination array is too small

    Danke im Voraus.

    Gruß,
    Neo. :)

    Das ganze per format lösen:
    [pwn]format(GroupData[i][name], 24, "no-one");[/pwn]