problem mit "/deletehouse"

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
  • Hey ich habe folgendes Problem:
    Die adminnachricht und die nachricht für mich wird ganz normal beigefügt allerdings gibt noch ein "Unknown Command" dazu, kann mir jemand sagen warum?



    CMD:deletehouse(playerid)
    {
    new string[256];
    if(sInfo[playerid][alevel] < 1337) return SendClientMessage(playerid,COLOR_ERRORTEXT,"* Dies ist ein Adminbefehl.");
    for(new i=0;i<sizeof(hInfo);i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z])) continue;
    format(query,sizeof(query),"Delete from houses WHERE h_id=%i",hInfo[i][h_id]);
    mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid,COLOR_WHITE,"* Du hast ein Haus gelöscht.");
    format(string,sizeof(string),"Admin %s hat ein Haus gelöscht",getPlayerName(playerid));
    AdminNachricht(string);
    DestroyPickup(hInfo[i][h_pickup]);
    Delete3DTextLabel(hInfo[i][h_text]);
    ResetHouse(i);
    return 1;
    }
    return SendClientMessage(playerid,COLOR_ERRORTEXT,"* Du bist nicht in der Nähe eines Hauses.");
    }


    ResetHouse(house)
    {
    for(new i=0;i<sizeof(hInfo);i++)
    {
    hInfo[house][hausEnum:i] = -1;
    }
    return 1;
    }

  • muss ich für den unterstrich was einsetzen?
    Und muss ich das genau für resetplayer etc. machen? also den enum namen darein?
    Kann mir kurz wer den Hintergrund erklären? xd


    weil ich ne resetplayer funktion habe und dort geht eingentlich auch alles und da hab ich auch i<sizeof(sInfo)

  • Das was Jeffry geschrieben hat, musst du nur in der Funktion ResetHaus machen. Das bedeutet, dass die schleife durch alle Einträge von hausEnum geht und du somit ganz einfach ohne viel Code die Einträge auf 0 bzw - 1 setzen kannst.


    Bei der ResetPlayer sieht seine Funktion bestimmt anders aus, deswegen funktioniert das auch ohne dem_:

  • Das "_:" entfernt den Tag von hausEnum, in dem die Länge des enums steht.


    Einfügen musst du bei dem Unterstrich nichts. Das heißt nur, dass eine getaggte Variable ohne Tag ausgegeben wird.
    Kannst du dir vorstellen wie:
    new Text3D:label;
    label = Create3DTextLabel(...);
    printf("ID des Labels: %d", _:label)


    In deiner andere Funktion geht es vermeintlich, weil dein sizeof Wert kleiner oder gleich ist, als die Länge des enums. Wenn er kleiner ist, setzt es allerdings nicht alle Werte auf -1.
    In diesem Fall war er größer, so hat er das Array gesprengt.