Beiträge von Jeffry

    Debugge es so und poste dann was im Server Log steht, wenn du die Funktion aufrufst:
    public SaveFactionCars(bool:destroy)
    {
    printf("SaveFactionCars aufgerufen.");
    if(fexist(FACTION_CAR_FILE)) fremove(FACTION_CAR_FILE);
    new File:fFile=fopen(FACTION_CAR_FILE,io_append),Content[1024];
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    printf("fc: %d | fVehid: %d", fc, FactionCars[fc][fVehid]);
    if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
    {
    for(new i=0; i<13; i++) FactionCars[fc][fTuning][i] = GetVehicleComponentInSlot(FactionCars[fc][fCarid], i);
    format(Content,sizeof(Content),"%d %.3f %.3f %.3f %.3f %03d %03d %02d %02d %02d %02d %02d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\r\n",
    FactionCars[fc][fVehid],
    FactionCars[fc][fPos][0],
    FactionCars[fc][fPos][1],
    FactionCars[fc][fPos][2],
    FactionCars[fc][fPos][3],
    FactionCars[fc][fCol][0],
    FactionCars[fc][fCol][1],
    FactionCars[fc][fFaction][0],
    FactionCars[fc][fFaction][1],
    FactionCars[fc][fFaction][2],
    FactionCars[fc][fFaction][3],
    FactionCars[fc][fFaction][4],
    FactionCars[fc][fTuning][0],
    FactionCars[fc][fTuning][1],
    FactionCars[fc][fTuning][2],
    FactionCars[fc][fTuning][3],
    FactionCars[fc][fTuning][4],
    FactionCars[fc][fTuning][5],
    FactionCars[fc][fTuning][6],
    FactionCars[fc][fTuning][7],
    FactionCars[fc][fTuning][8],
    FactionCars[fc][fTuning][9],
    FactionCars[fc][fTuning][10],
    FactionCars[fc][fTuning][11],
    FactionCars[fc][fTuning][12],
    FactionCars[fc][fTuning][13],
    FactionCars[fc][fPrice]);
    printf("Content: %s", Content);
    fwrite(fFile,Content);
    if(destroy == true)
    {
    if(DestroyVehicle(FactionCars[fc][fCarid]))
    FactionCars[fc][fCarid] = -255;
    }
    }
    }
    printf("Ende.");
    fclose(fFile);
    return true;
    }

    1.)
    new holzID[MAX_PLAYERS][5];
    Der zweite Index ist dann die Anzahl der abgelieferten Hölzer. Beachte, dass du bei 0 anfangen musst (0 bis 4).


    2.)
    Die Kettensäge ist weg? Kann ich dir nicht sagen warum, gib sie ihm einfach wieder.


    3.)
    Wenn du ihm eine Kettensäge gibst, dann kann er die ganz normal weg-switchen, mit Q und E.

    Die Koordinaten der Zone sind wahrscheinlich falsch. In der letzten Zeile zum Beispiel:
    1497.0000,2216.0000,1243.0000,2057.0000


    1497 ist nicht kleiner als 1243 und
    2216 ist nicht kleiner als 2057.
    Jeweils müssen beide vertauscht werden.


    Prüfe das bei allen, dass jeweils Wert 1 kleiner als Wert 3 ist, und Wert 2 kleiner als Wert 4.



    Pass bei den negativen Werten auf. -10 ist kleiner als -5!

    if(!IsPlayerInAnyVehicle(playerid))return 1;
    new vehicleid=GetPlayerVehicleID(playerid);


    zu:
    new vehicleid = -1, Float:x, Float:y, Float:z;
    if(!IsPlayerInAnyVehicle(playerid))
    {
    for(new i=0; i<sizeof(FraktAuto); i++)
    {
    if(FraktAuto[i][id_x])
    {
    GetVehiclePos(FraktAuto[i][id_x], x, y, z);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, x, y, z))
    {
    vehicleid = i;
    break;
    }
    }
    }
    }
    else vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist nicht in oder nahe einem Fraktionsfahrzeug.");

    Doch, die bekommst du mit GetObjectPos, von Holzblock[playerid].


    new Float:x, Float:y, Float:z;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    GetObjectPos(Holzblock[i], x, y, z);
    //...
    }

    Doch, dann ist es sogar gut so wie du es machst.


    Du machst dort dann eine Schleife durch alle Spieler und fragst ab, oder der Spieler in der Nähe eines Balken-Objektes ist (GetObjectPos & IsPlayerInRangeOfPoint). Falls ja, dann fragst du ab ob i == playerid ist. Falls nein ist es nicht sein Balken, falls ja kann er ihn aufnehmen. Ist er in keiner Nähe eines Balkens, dann schickst du die entsprechende Meldung, oder machst gar nichts.

    Das kannst du so machen, ja. Ob es besser geht kann ich dir so nicht direkt sagen, da ich nicht weiß was du alles damit vor hast.
    Aber mache es einfach mal so und schaue ob es klappt, was du vor hast. Besser machen kann man es noch immer, wenn es nicht geht.

    Zum Respawn der Bäume:
    Dort wo du:
    DestroyObject(BaumID[i]);
    machst, fügst du danach das ein:
    BaumID[i] = -1;


    Und dann in dem Timer, der die Bäume wieder erstellt:
    for(new i = 0; i < sizeof(Baeume); i++)
    {
    if(BaumID[i] == -1) BaumID[i] = CreateObject(615, Baeume[i][BX], Baeume[i][BY], Baeume[i][BZ], Baeume[i][BRx], Baeume[i][BRy], Baeume[i][BRz]);
    }


    Was meinst du mit dem Punkt und den reifen Bäumen? Wie definierst du einen reifen Baum? Fällbare Bäume?
    Das wäre dann:
    for(new i = 0; i < sizeof(Baeume); i++)
    {
    if(BaumID[i] != -1) reifeBaeume++;
    }

    Das Problem ist, dass viele glauben, sowas hier wäre gut, ist es aber nicht:
    enum
    {
    dEventManager,
    dEventManager2,
    dEWaffe,
    dESchuss,
    dEFahrzeug,
    dELeben,
    dEArmour,
    dECP,
    dEDCP
    };


    Ändere das zu:
    const
    dEventManager = 5001,
    dEventManager2 = 5002,
    dEWaffe = 5003,
    dESchuss = 5004,
    dEFahrzeug = 5005,
    dELeben = 5006,
    dEArmour = 5007,
    dECP = 5008,
    dEDCP = 5009;

    Oder eben zu IDs die du noch nicht verwendest.


    EDIT:
    Calaze_Carrey: Ich hatte nicht darauf geschaut, dass du es im switch verwendest. Da musst du dann const anstatt new verwenden. ;)

    tayson87:
    Das sieht mir stark danach aus, dass du ein Array sprengst.
    Lade dir das Crashdetect Plugin herunter und füge es in deinen Server ein: http://forum.sa-mp.com/showthread.php?t=262796
    Dann erstelle in dem /pawno/ Ordner neben der pawno.exe eine "pawn.cfg" Datei und schreibe dort "-d3" rein (ohne die Anführungszeichen). Anschließend öffne die pawno.exe und wähle deinen Code aus, dann kompiliere ihn neu. Wenn du dann den Server neu startest und den Befehl eingibst und Unknown Command kommt, dann bekommst du im Server Log die Fehlermeldung plus die Zeile in der der Fehler ist ausgegeben.
    Poste das dann gegebenenfalls in einem neuen Thread, sofern du mit der Meldung nicht klar kommst.

    Mir wäre

    Was mir so einfällt, gibt es eventuell irgendeinen Effekt oder Partikel oder so mit dem man eine kürzere Sichtweite simulieren kann?


    Mir wäre nichts bekannt. Ich habe auch mal gesucht, aber nichts gefunden, das hatte so wohl noch niemand vor. Im schlimmsten Fall befürchte ich, dass dein Vorhaben leider nicht möglich ist. Außer es weiß hier noch jemand wie man das anders realisieren könnte.