Beiträge von Jeffry

    Na so:


    else if(ilsZ > 9.8203)
    {
    PlayerTextDrawColor(playerid, ILS2[playerid], COLOR_RED);
    PlayerTextDrawColor(playerid, ILS1[playerid], COLOR_WHITE);
    PlayerTextDrawColor(playerid, ILS3[playerid], COLOR_WHITE);
    return 1;
    }


    Das wäre wenn 2 rot wird. Die anderen sind dementsprechend.

    Du setzt einfach das vorherige und das nachkommende Textdraw zu weiß.


    Angenommen Textdraw 3 wird rot, dann setzt du Textdraw 2 und 4 zu weiß.


    Wird 5 rot, dann wird eben nur 4 weiß, 6 gibt es ja nicht.

    CMD:crews(playerid,params[])
    {
    new msg[1024];
    for(new i;i<MAX_CREWS;i++)
    {
    if(CrewExist(i) && !IsCrewDeleted(i))
    {
    new name[32],leader[32];
    format(hQuery,450,"SELECT * FROM crews WHERE id='%d'",i);
    mysql_query(hQuery);
    mysql_store_result();
    if(mysql_num_rows())
    {
    mysql_fetch_field_row(name,"name");
    mysql_fetch_field_row(leader,"leader");
    format(msg,sizeof(msg),"%sCrew: %s | Leader: %s | ID: %d\n",msg,name,leader,i);
    }
    mysql_free_result();
    }
    }
    ShowPlayerDialog(playerid,CrewList,DIALOG_STYLE_LIST,"Liste aller Crews",msg,"Schließen","");
    return 1;
    }


    mysql_free_result(); muss immer nach einem mysql_store_result(); hin, sonst funktioniert es nicht richtig.
    Außerdem habe ich dir noch "msg" behoben, das hätte dir immer nur die letzte Crew angezeigt.


    Sollte immer noch nichts angezeigt werden, dann schalte mal den MySQL-Debug an und poste den Log.

    Nein. Du ersetzt einfach die sscanf Zeile (nur die eine Zeile) mit dem Code von mir.
    Darunter hast du ja dann die:
    Tanke[idx][ky] = i[1];//


    Das wäre die einfachste Methode, ohne dass du viel am Code machen musst.
    Ansonsten kannst du natürlich die Variablen direkt hinter die Case's stellen. Beachte aber, dass "t" der Buchstabe ist, idx solltest du weiterhin behalten.


    Wie gesagt, die sscanf Zeile mit dem von mir ersetzen, denn der Code macht 1:1 (nur dass er tut) das Gleiche wie sscanf.

    Klaro. Also, als erstes Zeichen setzen wir ein "|", damit der Code weiß, wo er anfangen soll. Dann geht der Code Zeichen für Zeichen durch den string, der ja "result" heißt. Jedes mal, wenn ein "|" gefunden wird, dann wird "result" zwischengespeichert in "tmpstring" und praktisch zerschnitten, und zwar vom letzten gefundenen "|" bis zum eben gefundenen "|". Das wird dann (je nach Findungsnummer) in die jeweilige Variable gespeichert.
    Bsp:


    Code
    |kjs|test|dfdfdf|
    0123456789


    Nehmen wir "test". (Im switch wäre das CASE 2 [ist ja das zweite Element]).


    => Zuletzt gefunden den "|" an der Stelle 4.
    => Jetzt gefunden, den "|" an der Stelle 9.


    => tmpstring wird von 0 bis 4+1 (=5) abgeschnitten, und von 8 bis Ende.
    => es bleibt "test" in tmpstring übrig.


    Prinzip verstanden?

    Es kann daran liegen, dass MAX_PLAYER_NAME nicht 30 ist, sondern 24.
    sscanf(result, "p<|>is[24]ffffffiiii",ttid,ow,pos[0],pos[1],pos[2],i[0],i[1],i[2],bp,v,lp,ond);


    Wenn das nicht tut, dann nimm die manuelle Methode, die finde ich so wie so viel besser als sscanf, weil man weiß was der Code macht.


    strins(result, "|", strlen(result));
    new oldi=0;
    new count=0;
    for(new i=0; i<strlen(result); i++)
    {
    if(result[i]=='|')
    {
    count++;
    new tmpstring[sizeof(result)]; tmpstring=result;
    strdel(tmpstring, i, strlen(tmpstring));
    strdel(tmpstring, 0, oldi+1);
    switch(count)
    {
    case 1: ttid = strval(tmpstring);
    case 2: format(ow, sizeof(ow), "%s", tmpstring);
    case 3: pos[0] = floatstr(tmpstring);
    case 4: pos[1] = floatstr(tmpstring);
    case 5: pos[2] = floatstr(tmpstring);
    case 6: i[0] = floatstr(tmpstring);
    case 7: i[1] = floatstr(tmpstring);
    case 8: i[2] = floatstr(tmpstring);
    case 9: bp = strval(tmpstring);
    case 10: v = strval(tmpstring);
    case 11: lp = strval(tmpstring);
    case 12: ond = strval(tmpstring);
    }
    oldi=i;
    }
    }
    ^ Das anstatt sscanf. Ist zwar mehr Code, dafür tut es aber, und zwar IMMER!

    format(SpielerInfo[playerid][pDatum], 12, "%s", mysql_GetString("accounts", "Datum", "Name", SpielerInfo[playerid][pName]));


    Du musst es netürlich auch als String auslesen, und nicht als Integer.

    Zudem noch das, was Beavis gesagt hat. Da hatte ich nicht drauf geachtet.


    So sollte es sein:
    new Vehicles[3][VehCheck] =
    {
    {411,1796.4109,-1889.7345,13.1836,6,6}, //Gelb
    {402,1797.4174,-1894.3096,13.2549,0,0}, //Schwarz
    {541,1797.7924,-1899.7286,13.0675,1,1} //Weiß
    };


    Die Farben fehlten im Array.

    format(string,sizeof(string),"%02d/%02d/%d",Day,Month,Year);
    So macht das mehr Sinn.


    Wenn dein Problem noch immer besteht: Hast du in der Datenbank die Spalte "Datum" auch auf VARCHAR mit der benötigten Länge gesetzt?

    CreateVehicle(Vehicles[Veh][carid],Vehicles[Veh][x],Vehicles[Veh][y],Vehicles[Veh][z],Vehicles[Veh][farbe1],Vehicles[Veh][farbe2], 30);


    30=Reapawn delay.


    Post die andere Zeile in der die andere Warnung ist.