1. Script | finde Fehler 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
  • Hallo,


    ich hab mich mal an meinem ersten Filterscript probiert.
    Das ganze sollte ein AFK-Filterscript werden, das wenn man
    /afk [Grund] eingibt eine Nachricht an alle Spieler sendet
    (blabla ist AFK, Grund : grund)


    Nun zum Problem:
    Wenn ich es probieren zu conpilieren kackt Visual Pawn ab..
    hängt sich einfach auf.


    Hier der Code:
    #include <a_samp>


    #define Gruen 0x00CC33C0


    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    #if defined FILTERSCRIPT


    public OnFilterScriptInit() {
    print("###########################")
    print(" _____| AFK - System |_____")
    print("###########################")
    print(" Script by Flaver aKa hooK ")
    print(" Filterscript loaded ")
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main() {
    print("###########################")
    print(" _____| AFK - System |_____")
    print("###########################")
    print(" Script by Flaver aKa hooK ")
    print(" Script loaded ")
    return 1;
    }


    #endif


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(afk, 3, cmdtext)
    }


    dcmd_afk(playerid, params[])
    {
    new pID;
    sGrund[256];
    if(sscanf(params, "s", sGrund)) {
    return SendClientMessage(playerid,Rot,"Benutzung: /afk [Grund]");
    }
    new string[256];
    pName[MAX_PLAYER_NAME];
    GetPlayerName(pID,pName,sizeof(pName));
    format(string,sizeof(string),"%s ist jetzt AFK, Grund: %s",pName, sGrund);
    SendClientMessageToAll(Gruen,string)
    }


    sscanf hab ich nach unten kopiert und hab es jetzt nicht mitkopiert da es
    einfach zu lang wäre.


    Bitte nicht so hart kommentieren :s Bin halt noch neu was das scripten
    in Pawn angeht und kann noch net soviel.


    -hooK

  • Kenne mich genau so wie du mit dem Scripten ned aus, aber soweit ich weiß müsste das doch so heißen


    #define COLOR_Gruen 0x00CC33C0



    Bin mir aber nicht sicher ^^ aber versuchs ma


    Wie gesagt bin auch neu ;)

    /¯¯¯¯¯¯¯¯¯Steam Acc zu Verkaufen¯¯¯¯¯¯¯¯\
    |______Spiel : Counterstrike : Source_____
    _|
    |______Spiel : Day of Defeat : Source _____
    _|
    |__________Spiel : Garry s Mod __________|
    |_________Half-Life 2 : Deatmatch________|
    |_________Half-Life 2 : lost Coast_________|
    \_Preis wird noch besprochen per PN melden_/

  • Du da über mir :>
    Das mit
    #define COLOR_Gruen [...]
    oder das:
    #define Gruen [...]
    Macht keinen Unterschied.
    Er definiert es ja nur, also kann er es beliebig bennen.


    So sollte es aber klappen:


    #include <a_samp>


    #define Gruen 0x00CC33C0


    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    #if defined FILTERSCRIPT


    public OnFilterScriptInit() {
    print("###########################")
    print(" _____| AFK - System |_____")
    print("###########################")
    print(" Script by Flaver aKa hooK ")
    print(" Filterscript loaded ")
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main() {
    print("###########################")
    print(" _____| AFK - System |_____")
    print("###########################")
    print(" Script by Flaver aKa hooK ")
    print(" Script loaded ")
    return 1;
    }


    #endif


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(afk, 3, cmdtext)
    return 0;
    }


    dcmd_afk(playerid, params[])
    {
    new sGrund[256]; //warum stand dort pID, wenn es nicht verwendet wird?
    if(sscanf(params, "s", sGrund))
    {
    return SendClientMessage(playerid,Rot,"Benutzung: /afk [Grund]");
    }
    new string[128], //hier kein Semicolon (;) , sondern ein Komma(,) ! - desweiteren, ist der String eh groß genug, weshalb du ihn statt auf 256 auf 128 setzen kannst (:
    pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName)); // dort stand pID, du willst aber den Namen des Spielers, der "/afk" eingibt haben, dieser ist playerid !
    format(string,sizeof(string),"%s ist jetzt AFK, Grund: %s",pName, sGrund);
    SendClientMessageToAll(Gruen,string); //hier fehlte ein Semicolon (;)
    return 1; //hier kannst du einen "true" return lassen (1 == true)
    }


    Ich hoffe, dass der Code so funktioniert.
    Habe ihn selber jetzt nur 5 min durchgelesen, und schnell verbessert, was mir so aufgefallen ist.
    Wenn es immernoch nicht klappt, melde dich einfach nochmal.
    MfG
    Maxx

  • Wie gesagt is nur ein Versuch da ich ja noch nicht richtig Scripten kann also von dem her Sorry...

    /¯¯¯¯¯¯¯¯¯Steam Acc zu Verkaufen¯¯¯¯¯¯¯¯\
    |______Spiel : Counterstrike : Source_____
    _|
    |______Spiel : Day of Defeat : Source _____
    _|
    |__________Spiel : Garry s Mod __________|
    |_________Half-Life 2 : Deatmatch________|
    |_________Half-Life 2 : lost Coast_________|
    \_Preis wird noch besprochen per PN melden_/

  • Hmmm...


    ich hab das Script mal übernommen und probiert zu compilieren,
    aber es tritt immernoch der selber Fehler auf wie vorher...
    Und diesmal hab ich es mit Pawno und VisualPawn probiert und
    bei beiden keine Rückmeldung wenn ich anfange zu compilieren :s


    Wielang dauert die Compilierung bei solch kleinen Filterscripten?
    Und gibt es einen externen Compiler?


    Edit: Hat niemand ne Lösung? :s Oder hatte jemand schonmal das gleiche Problem?


    -hooK

    Einmal editiert, zuletzt von hooK ()

  • sscanf Code fehlt...
    #define Rot ... fehlt
    print (...) , dahinter ein Semikolon

  • sscanf Code fehlt...
    #define Rot ... fehlt
    print (...) , dahinter ein Semikolon


    Opa :D lesen net vergessen^^
    Hab oben geschrieben das ich den sscanf code net mit hier rein geposted hab weil der Code
    oben dann viel zu lang gewesen wäre^^
    Im Script hab ich den Code natürlich ;)
    #define Rot hab ich auch schon nur das mit dem print()
    test ich eben thx :)


    -hooK

  • Funzt leider immernoch net :s ich hab echt so null Ahnung warum
    sich Pawno imer aufhängt beim Compilen..


    Hier nochmal der Code(wieder ohne sscanf weils sonst zu lang ist^^):
    #include <a_samp>


    #define Gruen 0x00CC33C0
    #define Rot 0xAA3333AA


    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    #define FILTERSCRIPT


    #if defined FILTERSCRIPT


    public OnFilterScriptInit()
    {
    print("###########################");
    print(" _____| AFK - System |_____");
    print("###########################");
    print(" Script by Flaver aKa hooK ");
    print(" Filterscript loaded ");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    print("###########################");
    print(" _____| AFK - System |_____");
    print("###########################");
    print(" Script by Flaver aKa hooK ");
    print(" Script loaded ");
    }


    #endif


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(afk, 3, cmdtext);
    return 0;
    }


    dcmd_afk(playerid, params[])
    {
    new sGrund[256]; // warum stand dort pID, wenn es nicht verwendet wird?
    if(sscanf(params, "s", sGrund))
    {
    return SendClientMessage(playerid,Rot,"Benutzung: /afk [Grund]");
    }
    new string[128], // hier kein Semicolon (;) , sondern ein Komma(,) ! - desweiteren, ist der String eh groß genug, weshalb du ihn statt auf 256 auf 128 setzen kannst (:
    pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName)); // dort stand pID, du willst aber den Namen des Spielers, der "/afk" eingibt haben, dieser ist playerid !
    format(string,sizeof(string),"%s ist jetzt AFK, Grund: %s",pName, sGrund);
    SendClientMessageToAll(Gruen,string); // hier fehlte ein Semicolon (;)
    return 1; // hier kannst du einen "true" return lassen (1 == true)
    }


    EDIT: So hab den Fehler gefunden *freu*
    UNd zwar war es bei dem print() da dürfen anscheinend keine #
    drin stehen hab sie durch das Sternchen ersetz jetzt compiled er es wunderbar :D


    -hooK

    Einmal editiert, zuletzt von hooK ()