Beiträge von Jeffry

    public CheckWeapon()
    {
    new Weaps[13][2];
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    for (new _w; _w < 13; _w++)
    {
    GetPlayerWeaponData(i, _w, Weaps[_w][0], Weaps[_w][1]);
    printf("Weapon: %d / Ammo: %d",Weaps[_w][0],Weaps[_w][1]);
    }
    }
    return 1;
    }


    So ist es richtig.


    Enum: Dein Code tut nicht wenn du mehr als einen Spieler im Server hast, da sich "_w" nicht zu 0 zurücksetzt, daher funktioniert es immer nur für ID 0, sonst für keinen.
    Und es ist entgegen allen Programmier-Regeln, seinen gesamten Code in eine Zeile zu schreiben, das macht kein Mensch, weil es absoluter Käse ist und außer dass es keiner lesen kann es nichts bringt. :pinch:

    Und mann muss wenn man einen wert eintragen möchte immer, ein '' dabei haben


    Nein, das stimmt nicht.
    Man muss die ' ' nur setzen, wenn man Zeichenketten übergibt, strings also. Bei integers kann man sich das sparen.

    Die X Zeilen nach oben und nach unten um die angesprochene Zeile sollst du posten.
    Einfach den Abschnitt des Codes in dem sich die Zeile befindetI, damit wir sehen können was da genau abläuft. Die Codes die zur Zeit hier stehen sind zumindest mit den momentanen Informationen korrekt, also brauchen wir mehr.

    Existieren die Zeilen für die jeweiligen bereits oder versuchst du Häuser zu speichern die noch gar nicht in der Datenbank stehen, also eine ID in der Datenbank als Zeile haben?


    Kannst du mal den detaillierten Log posten, in den vier Zeilen wird nicht wirklich was über das Problem klar.

    Ahh, ich entschuldige mich. Das war mein Fehler, ich habe eine Abfrage vergessen.


    stock IstSpielerGebannt(playerid)
    {
    new query[128];
    format(query, sizeof(query), "SELECT baned FROM Spieler WHERE Name = '%s' AND baned = '1';", GetName(playerid)); //Heißt die Spalte wirklich "baned"?
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(rows > 0) return 1;
    else return 0;
    }
    So sollte es passen.

    Den Server solltest du natürlich auch betreten, sonst sehen wir ja nicht was bei der Abfrage passiert, ob der Spieler gebannt ist.

    format(query, sizeof(query), "UPDATE Spieler SET baned = 1 WHERE Name = '%s';", GetName(pID));
    So erstmal.


    Und dann:
    stock IstSpielerGebannt(playerid)
    {
    new query[128];
    format(query, sizeof(query), "SELECT baned FROM Spieler WHERE Name = '%s';", GetName(playerid)); //Heißt die Spalte wirklich "baned"?
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(rows > 0) return 1;
    else return 0;
    }


    OnPlayerConnect:
    if(IstSpielerGebannt(playerid))
    {
    //Spieler ist gebannt...
    //Hier was machen.
    }

    Scheint zu passen, da hast du ja keinen Neustart vom Timer dinne, und du hast kein Loop in dem public.
    Dann poste den gesamten Abschnitt der
    timer[playerid] = SetTimerEx("tottimer",1000,true,"i",playerid);


    enthält. Das scheint mir die einzig übrige erklärbare Fehlerquelle. :rolleyes:

    Versuche:
    stock LoadHouses()
    {
    for(new i = 0; i<MAX_HOUSES; i++)
    {
    new query[300],str[400];
    new string[90];
    format(query, sizeof(query), "SELECT * FROM `Haus` WHERE `hID`=%d", i);
    mysql_query(query);
    HouseInfo[i][hOwner],48 ,mysql_GetString("Haus", "Owner", "hID", i));
    HouseInfo[i][hEntrx] = mysql_GetFloat ("Haus", "Entrx", "hID",i);
    SendClientMessageToAll(WEIß,"Debug3");
    HouseInfo[i][hEntry] = mysql_GetFloat ("Haus", "Entry", "hID",i);
    SendClientMessageToAll(WEIß,"Debug3");
    HouseInfo[i][hEntrz] = mysql_GetFloat ("Haus", "Entrz", "hID",i);
    HouseInfo[i][hIntx] = mysql_GetFloat ("Haus", "Intx", "hID",i);
    HouseInfo[i][hInty] = mysql_GetFloat ("Haus", "Inty", "hID",i);
    HouseInfo[i][hIntz] = mysql_GetFloat ("Haus", "Intz", "hID",i);
    HouseInfo[i][hIntid] = mysql_GetInt ("Haus", "Intid", "hID",i);
    HouseInfo[i][hPrice] = mysql_GetInt ("Haus", "Price", "hID",i);
    HouseInfo[i][hRentable] = mysql_GetInt ("Haus", "Rentable", "hID",i);
    HouseInfo[i][hRent] = mysql_GetInt ("Haus", "Rent", "hID",i);
    HouseInfo[i][hOwned] = mysql_GetInt ("Haus", "Owned", "hID",i);
    HouseInfo[i][hEssen] = mysql_GetInt ("Haus", "Essen", "hID",i);
    HouseInfo[i][hActive] = mysql_GetInt ("Haus", "Active", "hID",i);
    HouseInfo[i][hEssen] = mysql_GetInt ("Haus", "Essen", "hID",i);
    HouseInfo[i][hInt] = mysql_GetInt ("Haus", "hInt", "hID",i);
    DestroyDynamic3DTextLabel(HouseInfo[i][hLabel]);
    format(HouseInfo[i][hDescr], 50, Interiors[HouseInfo[i][hIntid]][description]);
    if(!HouseInfo[i][hOwned]) format(str, sizeof str, "Dieses Haus steht zum Verkauf!\n{6961FF}%s\n{FFFFFF}Preis: {6961FF}%d€", HouseInfo[i][hDescr], HouseInfo[i][hPrice]);
    else if(HouseInfo[i][hOwned] && !HouseInfo[i][hRentable]) format(str, sizeof str, "{6961FF}%s\n{FFFFFF}Besitzer: {6961FF}%s",HouseInfo[i][hDescr], HouseInfo[i][hOwner]);
    else if(HouseInfo[i][hOwned] && HouseInfo[i][hRentable]) format(str, sizeof str, "Dieses Haus kannst du Mieten\n{6961FF}%s\n{FFFFFF}Besitzer: {6961FF}%s\n{FFFFFF}Miete: {6961FF}%d€",HouseInfo[i][hDescr], HouseInfo[i][hOwner], HouseInfo[i][hRent]);
    HouseInfo[i][hLabel] = CreateDynamic3DTextLabel(str, WHITE, HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz], 20);
    if(!HouseInfo[i][hOwned]) HouseInfo[i][hPick] = CreateDynamicPickup(1273, 1,HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz]);
    else HouseInfo[i][hPick] = CreateDynamicPickup(1272, 1, HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz]);
    }
    return 1;
    }


    Wenn es nicht tut, nimm das und sag uns was im server_log steht.

    Spoiler anzeigen
    stock LoadHouses()
    {
    for(new i = 0; i<MAX_HOUSES; i++)
    {
    printf("Call: %d", i);
    new query[300],str[400];
    new string[90];
    format(query, sizeof(query), "SELECT * FROM `Haus` WHERE `hID`=%d", i);
    mysql_query(query);
    printf("1");
    HouseInfo[i][hOwner],48 ,mysql_GetString("Haus", "Owner", "hID", i));
    HouseInfo[i][hEntrx] = mysql_GetFloat ("Haus", "Entrx", "hID",i);
    SendClientMessageToAll(WEIß,"Debug3");
    printf("2");
    HouseInfo[i][hEntry] = mysql_GetFloat ("Haus", "Entry", "hID",i);
    SendClientMessageToAll(WEIß,"Debug3");
    HouseInfo[i][hEntrz] = mysql_GetFloat ("Haus", "Entrz", "hID",i);
    HouseInfo[i][hIntx] = mysql_GetFloat ("Haus", "Intx", "hID",i);
    HouseInfo[i][hInty] = mysql_GetFloat ("Haus", "Inty", "hID",i);
    HouseInfo[i][hIntz] = mysql_GetFloat ("Haus", "Intz", "hID",i);
    HouseInfo[i][hIntid] = mysql_GetInt ("Haus", "Intid", "hID",i);
    HouseInfo[i][hPrice] = mysql_GetInt ("Haus", "Price", "hID",i);
    printf("3");
    HouseInfo[i][hRentable] = mysql_GetInt ("Haus", "Rentable", "hID",i);
    HouseInfo[i][hRent] = mysql_GetInt ("Haus", "Rent", "hID",i);
    HouseInfo[i][hOwned] = mysql_GetInt ("Haus", "Owned", "hID",i);
    HouseInfo[i][hEssen] = mysql_GetInt ("Haus", "Essen", "hID",i);
    HouseInfo[i][hActive] = mysql_GetInt ("Haus", "Active", "hID",i);
    HouseInfo[i][hEssen] = mysql_GetInt ("Haus", "Essen", "hID",i);
    HouseInfo[i][hInt] = mysql_GetInt ("Haus", "hInt", "hID",i);
    DestroyDynamic3DTextLabel(HouseInfo[i][hLabel]);
    printf("4");
    format(HouseInfo[i][hDescr], 50, Interiors[HouseInfo[i][hIntid]][description]);
    if(!HouseInfo[i][hOwned]) format(str, sizeof str, "Dieses Haus steht zum Verkauf!\n{6961FF}%s\n{FFFFFF}Preis: {6961FF}%d€", HouseInfo[i][hDescr], HouseInfo[i][hPrice]);
    else if(HouseInfo[i][hOwned] && !HouseInfo[i][hRentable]) format(str, sizeof str, "{6961FF}%s\n{FFFFFF}Besitzer: {6961FF}%s",HouseInfo[i][hDescr], HouseInfo[i][hOwner]);
    else if(HouseInfo[i][hOwned] && HouseInfo[i][hRentable]) format(str, sizeof str, "Dieses Haus kannst du Mieten\n{6961FF}%s\n{FFFFFF}Besitzer: {6961FF}%s\n{FFFFFF}Miete: {6961FF}%d€",HouseInfo[i][hDescr], HouseInfo[i][hOwner], HouseInfo[i][hRent]);
    HouseInfo[i][hLabel] = CreateDynamic3DTextLabel(str, WHITE, HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz], 20);
    if(!HouseInfo[i][hOwned]) HouseInfo[i][hPick] = CreateDynamicPickup(1273, 1,HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz]);
    else HouseInfo[i][hPick] = CreateDynamicPickup(1272, 1, HouseInfo[i][hEntrx], HouseInfo[i][hEntry], HouseInfo[i][hEntrz]);
    printf("5");
    }
    return 1;
    }



    Enum, kannst du dir mal angewöhnen nicht jedes mal 10 Fragen in 10 Posts zu stellen, die man auch in einem stellen kann, und zudem dann noch so sinnlose? Wenn der Code nicht ausgeführt wird ist das piep wo in OnGameModeInit er steht. Das sehe ich jetzt zum wiederholten Male.

    Vielleicht mal das return 1; in LoadHouses entfernen :D


    Das bringt gar nichts.

    An die zwei Poster über mir BOMBER: & FelixTh:
    Wenn Ihr keine konstruktiven Beiträge macht, dann lasst einfach die Finger vom "Antworten" Button. Es geht hier in erster Linie um die Syntax die falsch ist, daher die Errors, und nicht um die Semantik, d.h. ob man die Abfrage weg lassen kann oder nicht, dann das könnt Ihr nicht wissen, ob er das kann oder nicht. (Und wenn man "query" aus den Def's löscht, bekommt er einen Error "undefined Symbol", also bitte.)
    Und auch dass bei sscanf eine Definition des Grundes fehlt hat mit den Errors nichts zu tun.
    Also entweder ihr helft konstruktiv oder ihr lasst es ganz, aber sowas ist einfach nur sinnlos, da keineswegs geholfen wird. :thumbdown:


    Ende der Diskussion.


    ---


    An den Threadstarter:
    Hast du den Code so mal kompiliert? Es sollten keine Fehler mehr auftreten. Wenn doch, dann hast du die Farbcodes falsch definiert, die solltest du dann posten.

    Ist die .amx auch im filterscipts Ordner? Oder hast die im gamemodes Ordner gespeichert?
    Ansonsten erstelle einen neuen FS, einen leeren, und mach nur bei OnFilterSciptInit:
    print("Hallo Welt!");


    Dann kompilieren und laden. Funktioniert das?

    Auf Anfrage in PM:


    public OnFilterScriptInit()
    {
    print("Startet");
    print("\n--------------------------------------");
    print(" Dynamisches Fraktion system by Pascal1998");
    print("--------------------------------------\n");


    /*===================================================*/
    for(new i=0; i<MAX_FRAKT; i++)
    {
    print("call");
    LadeFraktion(i);
    }
    return 1;
    }


    public LadeFraktion(id)
    {
    printf("1: id: %d", id);
    new datei[128];
    format(datei,sizeof(datei),"/Fraktionsystem/Fraktionen/%i.ini",id);
    format(fInfo[id][f_name],35,"%s",dini_Get(datei,"Name"));
    printf("2", id);
    fInfo[id][f_x] = dini_Float(datei,"SpawnX");
    printf("3", id);
    fInfo[id][f_y] = dini_Float(datei,"SpawnY");
    printf("4", id);
    fInfo[id][f_z] = dini_Float(datei,"SpawnZ");
    printf("5", id);
    fInfo[id][f_waffe] = dini_Int(datei,"Waffe");
    printf("6", id);
    fInfo[id][f_muni] = dini_Int(datei,"Munition");
    printf("7", id);
    fInfo[id][f_pickup] = CreatePickup(1239,1,fInfo[id][f_x],fInfo[id][f_y],fInfo[id][f_z],0);
    new string[128];
    format(string,128,"--> Fraktion Spawn <--\nFraktion: %s\nFraktionsID: %d",fInfo[id][f_name],id);
    printf("8", id);
    fInfo[id][f_label] = Create3DTextLabel(string,COLOR_GRAU,fInfo[id][f_x],fInfo[id][f_y],fInfo[id][f_z],5.0,0,0);
    printf("9", id);
    return 1;
    }


    Füg das mal ein.
    Dann poste was im server_log steht.

    Ich verstehe nicht warum du bei jeder Eingabe des Befehls die Daten aus der Datenbank holst, aber das sei mir egal.


    ocmd:kick(playerid,params[])
    {
    new str[128],pID,query[128],name[MAX_PLAYER_NAME];
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    if(SpielerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,Grau,"Error: Du bist nicht Level 1 oder höher.");
    if(sscanf(params,"us",pID))return SendClientMessage(playerid,Grau,"Tippe /kick [ID] [Grund] ein");
    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,Givename,sizeof(Givename));
    format(str,sizeof(str),"[Server]: %s hat denn Spieler %s vom server Gekickt! Grund: %s",name,Givename,query);
    SendClientMessageToAll(Rot,str);
    Kick(pID);
    return 1;
    }


    Meinst du die Abfrage so? :rolleyes: