Beiträge von Jeffry

    Es macht wenig Sinn wenn du das gesamte Zeug aus der Datenbank lädst, aber gar nicht brauchst.


    Schreibe es so:
    ocmd:carlist(playerid,params[])
    {
    new q[256],str[256],all[512];
    GetPlayerName(playerid,sendername,sizeof sendername);
    format(q,sizeof(q),"SELECT modelID, status, numberplate FROM `Playercars` WHERE `Owner` = '%s'",sendername); //modelID, status, numberplate <- anpassen auf deine Spalten
    mysql_query(q);
    mysql_store_result();
    while(mysql_fetch_row(str))
    {
    new st,md,np[20];
    sscanf(str,"p<|>dds[20]",st,md,np);
    format(all,sizeof(all),"%s{FFFFFF}%s (%s)\n",all,PlayerVehicle[md],(st) ? ("{FF0000}Defekt{FFFFFF}") : ("{00FF00}Nicht defekt{FFFFFF}"));
    }
    if(strlen(all) > 0) ShowPlayerDialog(playerid,DLG_CARLIST,DIALOG_STYLE_LIST,"Fahrzeugliste",all,"Auswählen","Schließen");
    else SendClientMessage(playerid,COLOR_LIGHTRED,"Du besitzt keine Fahrzeuge!");
    mysql_free_result();
    return 1;
    }


    Nicht vergessen die Spaltennamen anzupassen.

    Es ist so, dass das Objekt, damit es sich rotieren kann, etwas bewegt werden muss. Daher musst du das Objekt um ca 0,01 an einem der drei Positionswerte ändern, und natürlich die Rotation.
    Als Geschwindigkeit nimmst du dann etwas gaaaaanz kleines, musst eben probieren wie weit du runter musst.
    Zum Beispiel 0,001.

    Auch hier, natürlich:
    format(query,sizeof(query),"SELECT * FROM user WHERE name='%e'",GPlayerName(playerid));
    Zu
    mysql_format(db_handle,query,sizeof(query),"SELECT * FROM user WHERE name='%e'",GPlayerName(playerid));

    Nimm diese zwei Zeilen aus SavePlayer raus, du speicherst es ja im Befehl schon direkt.


    dini_IntSet(Spielerdatei,"tBantime",SpielerInfo[playerid][tBantime]);
    dini_Set(Spielerdatei,"Bangrund",SpielerInfo[playerid][Bangrund]);


    Oder, wenn du es drin lassen willst, dann musst du im Befehl diesen beiden Variablen den Wert zuweisen.

    Schreibe es so:
    stock RegisterPlayer(playerid,key[])
    {
    print("RegisterPlayer");
    new query[250];
    mysql_format(db_handle,query,sizeof(query),"INSERT INTO user (name,passwort,level,geld,alevel) VALUES ('%e','%e',1,0,0)",GPlayerName(playerid),inputtext);
    mysql_tquery(db_handle,query);
    ShowPlayerDialog(playerid,D_REGISTER2,DIALOG_STYLE_MSGBOX,"WILLKOMMEN","Willkommen auf meinem Server! Mit /help siehst du die wichtigsten Befehle!","Annehmen","");
    return 1;
    }


    Nicht vergessen, das "format" zu "mysql_format" zu ändern, sonst geht es nicht, wie du siehst hast du nur 'e' da stehen.

    Poste doch bitte mal ein Bild von dem Textdraw und dazu den Code mit dem du die ganzen Textdraws selektierbar machst, und den Code von dem fehlerhaften Textdraw.



    EDIT: Grapefruit: Alles klar :thumbup:

    Ändere
    format(string, sizeof string, "Kilometer: %d Km", floatround(Kilometer[veh]));
    mal zu:
    format(string, sizeof string, "--> Kilometer: %d Km", floatround(Kilometer[veh]));


    Wenn du dann im Spiel bist und der Kilometerstand hochzählt, bleibt der "Pfeil" da, oder nicht?


    Wenn ja: Benutzt du noch irgendwo anders im Code die "Kilometer" Variable?
    Wenn nein: Dann hast du nicht alles andere entfernt.

    Da ist ein "e" zu viel in deinem Zitierungs-Versuch. ;)


    Also, schreib es erst mal so:
    stock RegisterPlayer(playerid,key[])
    {
    print("RegisterPlayer");
    new query[250];
    mysql_format(db_handle,query,sizeof(query),"INSERT INTO user (name,passwort,level,geld,alevel) VALUES ('%e','%e',1,0,0)",GPlayerName(playerid),inputtext);
    mysql_tquery(db_handle,query);
    ShowPlayerDialog(playerid,D_REGISTER2,DIALOG_STYLE_MSGBOX,"WILLKOMMEN","Willkommen auf meinem Server! Mit /help siehst du die wichtigsten Befehle!","Annehmen","");
    return 1;
    }


    Das wird den Fehler aber wahrscheinlich nicht beheben.


    Schalte den mysql_debug mit LOG_ALL ein und poste dann was im Log steht, wenn du dich registrierst.

    Jeffrey ist hierbei egal, da ich keine wichtigen Daten übertrage und das nur zum testen meines Scripts habe :)


    Dann ist es kein Problem, wenn du die Daten kennst. Falls nicht, frage beim Support von Nitrado nach.


    Du solltest auch bedenken, dass es möglicherweise zu Lags kommt, wenn du eine externe Datenbank hast. Zu Testzwecken wird das sicherlich egal sein, dennoch solltest du dich um eine dauerhafte Lösung bemühen, wenn du einen Server betreiben willst.

    Wenn du es mit dem Tacho7 verknüpft hast, ja. Das hatte ich ja bereits gesagt, dass du alles was mit [Meter] zu tun hat, bzw mit Tacho7 und nicht in "CheckGas" steht, entfernen sollst.
    Den Code den ich dir gegeben habe, habe ich selbst getestet und er hat funktioniert. Das heißt es liegt an etwas das du noch im Code hast.

    Möglicherweise übergibst du die Werte falsch, oder lädst sie sogar falsch.
    Printe dir das ganze mal, dann siehst du wo der Fehler liegt.


    stock IsPlayerInZone(playerid,Float:MinX,Float:MinY,Float:MaxX,Float:MaxY)
    {
        new Float:Pos[3];
        GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
        printf("%0.2f >= %0.2f | %0.2f <= %0.2f | %0.2f >= %0.2f | %0.2f <= %0.2f", Pos[0], MinX, Pos[0], MaxX, Pos[1], MinY, Pos[1], MaxY);
        if(Pos[0] >= MinX && Pos[0] <= MaxX && Pos[1] >= MinY && Pos[1] <= MaxY)
        {
            print("true");
            return true;
        }
        print("false");
        return false;
    }


    Falls du den Fehler nicht findest, poste bitte den print.

    Das liegt daran, dass die Nachricht in der Schleife ist und du nicht nahe dem ersten Fahrzeug bist, aber nahe dem zweiten.


    Schreibe es so:
    ocmd:carlock(playerid,params[])
    {
    GetPlayerName(playerid,sendername,sizeof sendername);
    for(new c;c<MaxVehikel;c++) {
    if(!pCarInfo[code=c][cCreated])continue;
    if((!strcmp(sendername,pCarInfo[code=c][cOwner],true))) {
    new Float:pP[3];
    GetVehiclePos(pCarInfo[code=c][cVeh],pP[0],pP[1],pP[2]);
    if(IsPlayerInRangeOfPoint(playerid,5,pP[0],pP[1],pP[2])) {
    pCarInfo[code=c][cLocked] = (!pCarInfo[code=c][cLocked]);
    SetVehicleLock(pCarInfo[code=c][cVeh],pCarInfo[code=c][cLocked]);
    SendClientMessage(playerid,COLOR_YELLOW,(pCarInfo[code=c][cLocked]) ? ("Du hast dein Fahrzeug aufgeschlossen!") : ("Du hast dein Fahrzeug abgeschlossen!"));
    return PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht in der nähe eines Fahrzeuges, für das du einen Schlüssel besitzt!");
    }

    Du kannst das Textdraw versuchen nicht selektierbar zu machen. Wenn du aber willst, dass man es auswählen kann dann wird es keinen Unterschied machen, wann du die Selektion erlaubst.


    Du kannst ja mal das Textdraw posten, dann versuche ich bei mir heute Abend mal ob das selbe Problem besteht.