Beiträge von Jeffry

    Zitat

    MAX_PRIV_CARS=> Das was du bei "new cInfo[HIER][...]" hast.


    Das was bei "HIER" steht nimmst du und schreibst du da hin, wo ich MAX_PRIV_CARS geschrieben habe.

    stock GetPlayerRank(playerid)
    {
    switch(PlayerInfo[playerid][pRank])
    {
    case 1: return 1
    case 2: return 2
    case 3: return 3
    case 4: return 4
    case 5: return 5
    case 6: return 6
    case 7: return 7
    case 8: return 8
    return 1;
    }
    return 1; //Hier
    }


    zu:
    #define GetPlayerRank(%0) PlayerInfo[%0][pRank]



    stock FGehalt(playerid)
    {
    new pfad[20],rank[20];
    format(rank,sizeof(rank),"%d",GetPlayerRank(playerid));
    switch(PlayerInfo[playerid][pMember])
    {
    case 1: format(pfad,sizeof(pfad),"/gehalt/LSPD.ini");
    case 2: format(pfad,sizeof(pfad),"/gehalt/ADAC.ini");
    }
    return dini_GetInt(pfad,rank);
    }

    Ach ja, natürlich. Das habe ich am Handy übersehen, dass du den rang ja eingibst.



    Du könntest es so auslesen:
    new Gehalt[MAX_FRAKS][MAX_RANGS];



    for(new f = 0; f < MAX_FRAKS; f++)
    {
    for(new r = 0; r < MAX_RANGS; r++)
    {
    //Hier die zwei Variablen erstellen und setzen, wie oben.
    Gehalt[f][r] = dini_GetInt(pfad, stringvomrang);
    }
    }


    pfad und stringvomrang musst eben noch erstellen, aber das hast ja schon.

    stock GetCarID(vID)
    {
    printf("vID-GetCarID:%i",vID);
    for(new i=0; i<MAX_PRIV_CARS; i++) if(cInfo[i][id_x] == vID) return i;
    return -1;
    }


    MAX_PRIV_CARS=> Das was du bei "new cInfo[HIER][...]" hast.


    Und dann beim /lock:
    printf("vID:%i",vID);
    printf("car_besitzer:%i", cInfo[vID][besitzer]);
    printf("besitzer_dbid:%i", sInfo[playerid][db_id]);


    zu:
    vID = GetCarID(vID);
    if(vID == -1) return SendClientMessage(playerid, 0xFF000FF", "ERROR: Auto ist kein mit MySQL erstelltes Auto.");
    printf("vID:%i",vID);
    printf("car_besitzer:%i", cInfo[vID][besitzer]);
    printf("besitzer_dbid:%i", sInfo[playerid][db_id]);


    Was wird geprintet?

    new rang,
    Zu
    new rang[5],


    Und vor
    dini_IntSet(pfad, rang, gehalt);
    Das einfügen:
    format(rang, sizeof(rang), "%d", PlayerInfo[playerid][pRang]);


    Eben die entsprechende variable nutzen.
    Der zweite parameter von dini muss auf jeden Fall ein string sein.

    Aber Hallo! So eine Ausgabe ist Gold wert.


    Ändere
    if(Distance <= range && Distance <= PretendentDistance)


    Zu
    if(Distance <= range && Distance <= PretendentDistance && Distance != 0.0)


    Dann dürfte beides mal die 52 zurückgeben werden.



    Schildere dann, falls bestehend, das nächste Problem.

    Du liest ja auch nirgends die aus deinem Result aus. Und hier übergibst du immer nur einen leeren string.
    format(str,sizeof(str),"%s\n",str);
    Dort muss noch das Wort hin, das du aus der jeweiligen Zeile ausliest.


    Falls du nicht weißt wie das geht, sie uns bitte welches Plugin du benutzt.

    format(str, sizeof(str), "SELECT * FROM BadWords where Word = '%s' ", text);


    Die ganzen Anführungszeichen kannst du dir fast alle sparen.
    Falls es so noch immer nicht tut poste nochmal deinen momentanen Code.

    stock GetClosestVehicle(playerid, Float:range)
    {
    new Float:p_X;
    new Float:p_Y;
    new Float:p_Z;


    new Float:Distance;
    new Float:PretendentDistance = range +1;
    new Pretendent;


    GetPlayerPos(playerid, p_X, p_Y, p_Z);


    for(new vehicleid=1; vehicleid < MAX_VEHICLES; vehicleid++)
    {
    Distance = GetVehicleDistanceFromPoint(vehicleid, p_X, p_Y, p_Z);
    printf("Vehicleid: %d -> %0.2f", vehicleid, Distance);
    if(Distance <= range && Distance <= PretendentDistance)
    {
    printf("%0.2f <= %0.2f => vehicleid = %d", Distance, PretendentDistance, vehicleid);
    Pretendent = vehicleid;
    PretendentDistance = Distance;
    }
    }


    return Pretendent;
    }


    Dann poste was passiert, wenn du nahe dem Auto bist (ID 52). Die 52 ist ja richtig, die muss auch bei der Funktion ausgegeben werden. Solange sie das nicht tut, brauchen wir gar nicht weiter zu machen.

    Was gibt er denn aus, wenn du unter:
    cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);


    das hier einfügst:
    printf("Vehicle %d: Besitzer %d", id, cInfo[id][besitzer]);



    Prüfe auch mal, ob
    new id=getFreeCarID()
    und
    vID = GetClosestVehicle(playerid, 20);
    beim selben Auto die selben Werte haben, das müssen sie nämlich, sonst macht alles keinen Sinn.

    Kommt ganz auf deine Datenbank an, aber sowas in der Art:


    format(query, sizeof(query), "UPDATE tabelle SET mutezeit = %d WHERE name = '%s', tmptime, SpielerName(playerid));
    mysql_query(query);


    Genau kann ich dir das nicht sagen, da ich weder deine Datenbank kenne, noch weiß welches Plugin du benutzt, noch weiß welche Variablen du nutzt.

    Ach Leute! Er fragt die Datenbank ID ab, und die ist nunmal ein Integer. Er muss nichts als String speichern.
    if(cInfo[vID][besitzer] == sInfo[playerid][db_id])



    Zeige doch mal den Teil des Codes bei dem du sInfo[playerid][db_id] einen Wert zuweist.

    Musst nachschauen ob ein Readme dabei ist, oder sonst irgendwo in den beigefügten Dateien was steht.
    Solange ich nicht weiß welches Plugin du benutzt, kann ich dir nicht helfen, da ich es nicht erraten kann. Vielleicht kann es jemand der genau dieses Plugin nutzt erahnen. Selbiges gilt für deinen anderen Thread.

    if(!strcmp(cmdtext, "/god", true))
    {
    if(SpielerInfo[playerid][Level] < 7) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Du bist nicht Level 7"); //SpielerInfo musst du ggf. mit deiner Level-Variable ersetzen.
    SetPlayerHealth(playerid, 999999.0);
    return SendClientMessage(playerid, 0x00FF00FF, "God Mode.");
    }


    Das schreibst du in OnPlayerCommandText.



    FelixTh:
    GetPlayerHealth-Abfragen gehen so:
    new Float:h;
    GetPlayerHealth(playerid, h);
    if(h < 100.0) //...mach was