Beiträge von Jeffry

    Mach das hier aus SpielerSpeichern raus:
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    return 1;
    }
    Das ist eine Rekursion.


    Schreibe bei OnPlayerDisconnect
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    SpielerSpeichern(playerid);
    }


    Oder eben dort wo du den Spieler speichern lassen willst.

    Was heißt ein vollkommen unbekannter Punkt? Wie soll man einen Punkt finden den man nicht kennt?
    Es ist nicht möglich einen Punkt zu bestimmen, sondern man bestimmt eine Gerade. Auf dieser Gerade befindet sich dann der Punkt auf den man schaut (man schaut auf alle Punkte der Gerade).

    Wenn du zum Beispiel abfragen willst ob der Spieler einen bestimmten Punkt anschaut, dann mit einer Schleife über die Distanz. So fragst du zum Beispiel 100 Punkte ab, und schaust ob einer der Punkte mit dem Punkt den du suchst übereinstimmt (in etwa natürlich, genau ist ja nicht möglich).

    Natürlich ;)
    Die Länge der Vektoren. Also praktisch der Abstand zwischen Spieler und dem Punkt auf dem man schaut. Man kann ja nicht zwangsläufig einen Punkt fest machen, auf den die Kamera schaut, letztendlich ist es ja eine Gerade im Raum auf die man schaut, und darauf muss man den Punkt bestimmen. Dazu braucht man die Distanz.


    Stell dir vor du bist in einem Würfel im unteren Eck und schaust auf das Eck diagonal oben auf der anderen Seite (gegenüberliegend). Die Gerade zwischen diesen beiden Punkten ist diese Gerade auf die du schaust, keiner kann sagen, wo genau auf der Gerade du hinschaust, da alle Punkte auf der Gerade die gleiche, nennen wir es Richtung, haben. Nur mit der Distanz kann man einen Punkt bestimmen.

    Super! :)


    Prinzipiell hast du die vehicleid und den Index der Variable (das was zwischen [ ] steht) durcheinander gebracht. Das sind zwei unterschiedliche Dinge, da sich die vehicleid ändern kann, der Index darf sich aber nicht ändern, sonst kommen die Daten der Fahrzeuge durcheinander. Deshalb diese Funktion um den Index anhand der vehicleid zu finden (der Index ist auch das "i" aus den Schleifen).

    Die Musik beendest du noch nicht.
    Und
    SetPlayerPos(playerid,xz,yz,zz +0);
    macht keinen Sinn, da bleibt er an der gleichen Position. Wenn du ihn wieder runter setzen willst, dann wieder -550, außer er bewegt sich, dann musst du die Position am Anfang in Spielervariablen speichern.

    Willkommen auf Breadfish!


    OnPlayerCommandText muss 0 zurückgeben, damit der nächste Code aufgerufen werden kann, in deinem Fall der Gamemode.
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/admbase", cmdtext, true, 10) == 0) // Kommando zum öffnen
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,1008.84, 2569.89, 12.86)) // Ist der Spieler in der Nähe ?
    {
    MoveObject(tor,1008.84, 2569.89, 6.87, 4); // Wenn >Ja<, dann öffne Tor
    SendClientMessage(playerid,Rot,"Das Tor schließt in 5 Sekunden.");
    SetTimer("close", 5000,0); // Timer
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist nicht in der Nähe!"); // Wenn >Nein<, sag es ihm
    }
    }
    return 1;
    }


    Zu:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/admbase", cmdtext, true, 10) == 0) // Kommando zum öffnen
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,1008.84, 2569.89, 12.86)) // Ist der Spieler in der Nähe ?
    {
    MoveObject(tor,1008.84, 2569.89, 6.87, 4); // Wenn >Ja<, dann öffne Tor
    SendClientMessage(playerid,Rot,"Das Tor schließt in 5 Sekunden.");
    SetTimer("close", 5000,0); // Timer
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist nicht in der Nähe!"); // Wenn >Nein<, sag es ihm
    return 1;
    }
    }
    return 0; //Hier das return 0 ganz am Ende.
    }

    Ohja, das kann mit den else's auch nicht klappen, hab ich gar nicht drauf geachtet.
    Versuch es so:
    //Im OnGameModeInit zum laden
    for(new i = 1; i < MAX_VEHICLES; i++)//FAHRZEUGE
    {
    new string[32];
    format(string, sizeof(string), "/Vehicles/%d.car", i);
    if(dini_Int(string, "cID") > 0)
    {
    LadeFahrzeug(i);
    CarInfo[i][cID] = CreateVehicle(CarInfo[i][cModel], CarInfo[i][cX], CarInfo[i][cY], CarInfo[i][cZ], CarInfo[i][cR],0, 0, -1);

    new vehicleid = CarInfo[i][cID];

    if(CarInfo[i][tuning_1] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_1]);
    }
    if(CarInfo[i][tuning_2] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_2]);
    }
    if(CarInfo[i][tuning_3] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_3]);
    }
    if(CarInfo[i][tuning_4] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_4]);
    }
    if(CarInfo[i][tuning_5] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_5]);
    }
    if(CarInfo[i][tuning_6] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_6]);
    }
    if(CarInfo[i][tuning_7] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_7]);
    }
    if(CarInfo[i][tuning_8] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_8]);
    }
    if(CarInfo[i][tuning_9] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_9]);
    }
    if(CarInfo[i][tuning_10] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_10]);
    }
    if(CarInfo[i][tuning_11] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_11]);
    }
    if(CarInfo[i][tuning_12] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_12]);
    }
    if(CarInfo[i][tuning_13] > 999){
    AddVehicleComponent(vehicleid, CarInfo[i][tuning_13]);
    }
    if(CarInfo[i][paintjob] > 0){
    ChangeVehiclePaintjob(vehicleid, CarInfo[i][paintjob]);
    }
    ChangeVehicleColor(vehicleid, CarInfo[i][color_1], CarInfo[i][color_1]);
    }
    }

    @Jack_Bauer:
    Klar, ich kann mir schon vorstellen was du damit angestellt hast, nur ist es vielleicht etwas verwirrend für Leute die es sich einfach raus-kopieren. Das wäre in etwa so, wie wenn man SendClientMessage hookt und dann eine Funktion GetLastSCMColor macht. Prinzipiell könnte man das mit jedem Funktionsparameter jeder Funktion machen. :D


    Hier ein Beispiel wie die Funktion aussehen würde, wie ich davon ausgegangen bin:
    stock GetPlayerCameraLookAt(playerid, Float:dist, &Float:x, &Float:y, &Float:z) {
    new Float:cmrX, Float:cmrY, Float:cmrZ;
    new Float:vctX, Float:vctY, Float:vctZ;
    GetPlayerCameraPos(playerid, cmrX, cmrY, cmrZ);
    GetPlayerCameraFrontVector(playerid, vctX, vctY, vctZ);
    x = cmrX + dist * vctX;
    y = cmrY + dist * vctY;
    z = cmrZ + dist * vctZ;
    return 1;
    }


    Quelle: https://github.com/MacMailler/…aster/include/r_utils.inc


    In der Quelle finden sich auch noch sehr viele weitere nützliche Funktionen.

    Klappt es denn, wenn du diesen Code-Teil auskommentierst?
    Falls ja, dann schreibe das
    new banstring[128];
    mal ganz oben in die Include rein, gleich in die erste Zeile. Überall dort wo du dann eine Warnung bekommst, dass diese Variable bereits existiert löschst du das
    new banstring[128];
    weg (du hast es ja global deklariert).


    Geht es dann?