filemanager Command geht net. Hab ne fehlermeldung eingebaut damit ich weiß wo es net geht

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 gibt einen ANTWORTEN-Button, also nutzt diesen bitte auch und penetriert nicht permanent die arme Zitier-Funktion!


    Für was ist die denn da wenn man net andere Zitieren darf? Ich will die Leute die was geschreiben haben auf das Thema aufmerksam machen, bzw dass etwas neues geschreiben wurde...


    Zurück zum Thema
    ich hab den command nun so aber es kommt unkown command
    dcmd_benutzerdurchsuchen(playerid,params[])
    {
    new Suchbegriff, dir:Benutzer= dir_open("Accounts/"), type, item[40], string[256];
    if(sscanf(params,"s", Suchbegriff)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen[Suchbegriff (bitte nur ein Wort!)]"); }
    {
    while(dir_list(Benutzer, item, type))
    {
    if(type == FM_FILE)
    {
    if(strfind(item, "%s", true, Suchbegriff))
    {
    format(string, sizeof(string), "%s enthält das Wort oder die Zahl %s", item, Suchbegriff);
    SendClientMessage(playerid, COLOR_GREEN, string);
    }
    }

    }
    }
    return 1;
    }
    Woran liegt das? Ich hab noch das was in der Konsole kommt:

    Code
    [17:07:05] [debug] Run time error 6: "Invalid instruction"[17:07:05] [debug]  Unknown opcode 0x0 at address 0x00000074[17:07:05] [debug] AMX backtrace:[17:07:05] [debug] #0 ???????? in public OnPlayerCommandText () from script.amx


    Ich versteh von so einem Code nix (ich meine den Konsolenquode) :whistling:

    Einmal editiert, zuletzt von Tom Sunder ()

  • Soweit ich den Debug code verstanden habe, liegt der fehler im public OnPlayerCommandText,
    Schreib mal was bei dir dort "lose" drinsteckt oder vermutlich was damit zu tun hat.


    Das hat eher was mit dem dcmd code (darum das das net im onplayercommandtext ist) zu tun, da es auch wenn es net in onplayercommandtext ist heißt dass dort ein Fehler ist, weil es ja dort "eingesetzt" wird (durch das dcmd(benutzerdurchsuchen, 19, cmdtext);) und wenn was lose drin ist würde fast kein command gehen es gehen aber alle außer der eine
    Hat noch wer ne Idee?
    Edit: Wenn ich das rausnehm if(sscanf(params,"s", Suchbegriff)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen[Suchbegriff (bitte nur ein Wort!)]"); }
    { kommt kein unkown command aber das unkown command kommt BER ERST WENN ICH DEN sUCHBEGRIFF EINGEB (WENN DAS DRINNEN IST)
    dARUM SCHÄTZE ICH DAS ES DARAN LIEGT FINDE ABER KIENEN FEHLER || Misst großschreibtaste war drinnen egal ||

    2 Mal editiert, zuletzt von Tom Sunder ()

  • Du musst das Array (Suchbegriff) auch eine Größe zu weisen.
    Dies muss ebenfalls hinter dem String stehen, bei Sscanf. (s[GRÖßE])

  • @[NGD]Manne
    funkt net aktueller code:
    dcmd_benutzerdurchsuchen(playerid,params[])
    {
    new Suchbegriff, dir:Benutzer= dir_open("Accounts/"), type, item[40], string[256];
    if(sscanf(params,"s[64]", Suchbegriff)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen[Suchbegriff (bitte nur ein Wort!)]"); }
    {
    while(dir_list(Benutzer, item, type))
    {
    if(type == FM_FILE)
    {
    if(strfind(item, "%s", true, Suchbegriff))
    {
    format(string, sizeof(string), "%s enthält das Wort oder die Zahl %s", item, Suchbegriff);
    SendClientMessage(playerid, COLOR_GREEN, string);
    }
    }

    }
    }
    return 1;
    }

  • Hey,
    versuche es mal so:


    dcmd_benutzerdurchsuchen(playerid,params[])
    {
    new Suchbegriff[32], dir:ordner= dir_open(".scriptfiles/Accounts/"), type, item[40], string[256];
    if(sscanf(params,"s", Suchbegriff))return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen[Suchbegriff (bitte nur ein Wort!)]");
    while(dir_list(ordner, item, type))
    {
    if(type == FM_FILE)
    {
    if(strfind(item,Suchbegriff, true))
    {
    SendClientMessage(playerid,-1,"Okay!"); // Um zu testen, ob es klappt!
    //Hier musst du je nach Speichermethode vorgehen!
    }
    }
    }
    return dir_close(ordner);
    }


    Und noch eine Frage, welche Speichermethode benutzt du?

  • Hey,
    versuche es mal so:


    Und noch eine Frage, welche Speichermethode benutzt du?


    jetzt kommt nimmer unkown command aber es kommt keine Nachricht weder SendClientMessage(playerid,-1,"Okay!"); noch format(string, sizeof(string), "%s enthält das Wort oder die Zahl %s", item, Suchbegriff);
    SendClientMessage(playerid, COLOR_GREEN, string);
    (wegen deiner Frage meinste mit speichermethode z.B. dini? Wenn ja dann dini ;))


    hat wer ne idee warum das net angezeigt wird??

    Einmal editiert, zuletzt von Tom Sunder ()

  • dcmd_benutzerdurchsuchen(playerid,params[])
    {
    new Suchbegriff[MAX_PLAYER_NAME];
    if(sscanf(params,"s[24]", Suchbegriff)) return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen[Suchbegriff (bitte nur ein Wort!)]");
    new dir:Benutzer= dir_open("Accounts/"), type, item[64];
    while(dir_list(Benutzer, item, type))
    {
    if(type == FM_FILE)
    {
    if(strfind(item, Suchbegriff, true) != -1)
    {
    format(item, sizeof(item), "%s enthält das Wort oder die Zahl %s", item, Suchbegriff);
    return SendClientMessage(playerid, COLOR_GREEN, item);
    }
    }

    }
    return SendClientMessage(playerid, COLOR_GREEN, "Es wurde leider nix gefunden.");
    }


    Zum einen benutze das sscanf plugin
    http://forum.sa-mp.com/showthread.php?t=120356


    2. Suchbegriff muss ein string sein kein integer
    3. Platzhalter gibt es bei strfind nicht

  • Zitat

    2. Suchbegriff muss ein string sein kein integer
    3. Platzhalter gibt es bei strfind nicht


    1. das mit if(sscanf(params,"s[24]", Suchbegriff)) war falsch das muss if(sscanf(params,"s", Suchbegriff)) sein ich habs ausprobiert und mit dem kommt man net weiter als das dauernd "Benutze:..." kommt
    2. ich hab das nun so gemacht if(strfind(item, Suchbegriff, true) != -1) darum wie du es gesagt hast aber es kommt trozdem keine nachricht
    3. du hast das return an die Falsche stelle nun kommt die Nachricht das nichts gefunden worden ist immer auch wenn etwas gefunden wurde ich hab es an die richtige stelle getan aber es kommt netmal die nachricht (ich hab es nach der geschlossenen Klammer von if(strfind(item, Suchbegriff, true) != -1)
    { hingetan...)


    Hat noch wer ne Idee??


    PS Es kann sein das das oben bei mir anders ist aus irgendwelchen gründen, wie z.B. das ich etl iein include hab das dann macht das man das anders machen muss...

    5 Mal editiert, zuletzt von Tom Sunder ()

  • Das größte Problem ist das du mit deinem beschränkten Halbwissen kein Plan hast was du machst und im wesentlichen scheinst du ebenfalls nicht in der Lage zu sein zu lesen.

    1.Wenn du das sscanf Plugin verwendest musst du die größe des strings angeben hier [24].
    2. Zu 100% hast du nichtmal den Ordner Account im Hauptverzeichnis.
    3. Das return ist an der richtigen Stelle, du hast bloß keine Ahnung was ein return bewirkt.
    4. Das setzen von Klammern hat mit der Funktionalität des Codes nix zutun.



    Der gepostete Code ist fehlerfrei ich hab dieses gerade getestet.

    stock find(Suchbegriff[])
    {
    new dir:Benutzer= dir_open("Accounts/"), type, item[64];
    while(dir_list(Benutzer, item, type))
    {
    if(type == FM_FILE)
    {
    if(strfind(item, Suchbegriff, true) != -1)
    {
    return printf("%s enthält das Wort oder die Zahl %s", item, Suchbegriff);
    }
    }


    }
    return print("Es wurde leider nix gefunden.");
    }


  • hab es nun so
    dcmd_benutzerdurchsuchen(playerid,params[])
    {
    new Suchbegriff[MAX_PLAYER_NAME];
    if(sscanf(params,"s", Suchbegriff)) return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen [Suchbegriff (bitte nur ein Wort!)]");
    find(Suchbegriff);
    return 1;
    }


    stock find(Suchbegriff[])
    {
    new dir:Benutzer= dir_open("Accounts/"), type, item[64];
    while(dir_list(Benutzer, item, type))
    {
    if(type == FM_FILE)
    {
    if(strfind(item, Suchbegriff, true) != -1)
    {
    return printf("%s enthält das Wort oder die Zahl %s", item, Suchbegriff);
    }
    }


    }
    return print("Es wurde leider nix gefunden.");
    }


    geht aber net
    IPrototypeI
    hast du nochz eine idee?


    Und sry wenn du dich bissel beleidigt gefühlt hast weil ich das mit den Sachen die du laut mir falsch gemacht hast gepostet hab owbohl deins richtig war ;). Ich kann net alle Begriffe von pawn da ich mir das scripten halbert selbst beigebracht hab...

    2 Mal editiert, zuletzt von Tom Sunder ()

  • Beitrag von IPrototypeI ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Deine Fehlerbeschreibung ist legendär am besten holst du dir ein Strick und erhängst dich.


    Ich hoffe dir ist bewusst das dir die Meldung in der Serverlog ausgegeben wird und wenn du die Hauptpunkte nicht beachtest


    kann man dir auch nicht helfen


    oh ich erklär es besser (hab grad was neues in der konsole entdeckt ;)) Wenn ich den befehl eingeb (mit dem Suchwort Hallo) passiert nix auser, dass in der Konsole kommt Es wurde nix gefunden. Ich hab gerade als Test in nen Account von jemmand anderem Hallo geschreiben und es kommt immernoch in der Konsole Es wurde nix gefunden sonst passiert nix (ich kann die nachricht Es wurde nix gefunden nur in der Konsole sehen)

  • Schon einmal daran gedacht das, du den Namen nicht in dem File ändern sollst sondern den Filename an sich. Ich hab dir mal als Hilfstellung eine collage gemacht



    Wenn dein Ordner jedoch wo anders ist musst du den Pfad verändern

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen