Beiträge von Jeffry

    Ja.
    Du kannst dann entweder zuvor abfragen, ob noch ein Spieler im Fahrzeug ist:



    forward DelVeh(vehicleid);
    public DelVeh(vehicleid)
    {
    new isin = 0;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPlayerVehicleID(i) == vehicleid)
    {
    isin = 1;
    break;
    }
    }
    if(isin == 0) DestroyVehicle(vehicleid);
    return 1;
    }
    Oder du machst es so, das wäre die elegante Methode:
    Oben unter die Includes:
    new isSpawnedVeh[MAX_VEHICLES];


    Nach PutPlayerInVehicle im Befehl:
    isSpawnedVeh[vID] = true;


    Bei OnGameModeInit:
    SetTimer("CheckVehicles", 1000, 1);


    Und ganz unten:
    forward CheckVehicles();
    public CheckVehicles()
    {
    new isin;
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if(isSpawnedVeh[i])
    {
    isin = 0;
    for(new p=0; p<MAX_PLAYERS; p++)
    {
    if(GetPlayerVehicleID(p) == i)
    {
    isin = 1;
    break;
    }
    }
    if(isin == 0)
    {
    DestroyVehicle(i);
    isSpawnedVeh[i] = false;
    }
    }
    }
    return 1;
    }


    Syno: Danke für den Hinweis, was ein Denkfehler.

    ocmd:creatcar(playerid,params[])//Um Autos zu Spawnen
    {
    if(!isAdmin(playerid,5))return SendClientMessage(playerid,rot,"Dazu bist du nicht befugt!");
    new mID;
    if(sscanf(params,"i",mID)) return SendClientMessage(playerid,rot,"INFO: /creatcar [Autoid]");
    if(mID < 400 || mID > 611)return SendClientMessage(playerid,rot,"FEHLER: Ungültige Autoid!");
    new Float:xc,Float:yc,Float:zc,Float:rc;
    GetPlayerPos(playerid,xc,yc,zc);
    GetPlayerFacingAngle(playerid,rc);
    new vID = CreateVehicle(mID,xc,yc,zc,rc,1,1,-1);
    PutPlayerInVehicle(playerid, vID, 0); //0 = Fahrerplatz
    return 1;
    }


    Zum Löschen beim Aussteigen:
    OnPlayerExitVehicle:
    DestroyVehicle(vehicleid);
    oder alternativ als kurzen Timer:


    SetTimerEx("DelVeh", 1000, 0, "d", vehicleid);
    und ganz unten im Code:
    forward DelVeh(vehicleid);
    public DelVeh(vehicleid)
    {
    return DestroyVehicle(vehicleid);
    }

    Was geht denn nicht? Was passiert, und was sollte eigentlich passieren?
    Bekommst du irgendwelche Fehlermeldungen oder Nachrichten im Chat?


    Nebenbei versuche es mal so:
    if(IsValidVehicle(trailer))
    {
    GetVehiclePos(trailer, VehiclePos[trailer][0], VehiclePos[trailer][1], VehiclePos[trailer][2]);
    GetVehicleZAngle(trailer, VehiclePos[trailer][3]);
    VehicleInterior[trailer] = GetPlayerInterior(playerid);
    VehicleWorld[trailer] = GetPlayerVirtualWorld(playerid);
    SendClientMessage(playerid, COLOR_WHITE, "Du hast dein Auto hier geparkt!");
    UpdateVehicle(trailer, 1);
    PutPlayerInVehicle(playerid, VehicleID[vehicleid], 0);
    SaveVehicle(trailer);
    }

    Ja, dafür brauchst du doch eine Liste aller Reports, oder? Dafür kannst du dann mein Tutorial nutzen, um alle Reports aufzulisten und herauszufinden, welcher Report angedrückt (=angenommen) wurde.
    Oder wie hast du vor es anzunehmen?

    Bei mir passiert aber vieles als Dialog macht es dann Probleme? Auch meine ganzen Includes sind so aufgebaut bzw werden da keine Befehle gezeigt.


    Du kannst diese Änderung ja auch in einer Kopie machen, den Code von mir lässt du ja eh nur 1x drüberlaufen.
    Hast du in den Includes auch Befehle? Wenn ja, musst du diese zu .pwn umbenennen, oder in meinem Code das ".pwn" danach zu ".inc" ändern und nochmal ausführen.


    Ich rate dir aber, in einer Kopie deines Server-Ordner zu arbeiten, falls du was kaputt machst. ;)

    Hallo,


    in der Scripting Base, im Sammelthread für nützliche Code-Schnipsel ist mir ein Fehler aufgefallen:


    Link: Nützliche Codeschnipsel


    Da müsste mal jemand nachschauen, welcher Benutzer in seiner Signatur eine Verlinkung auf diese Seite hat und diese aus der Signatur entfernen.


    Gegebenenfalls wäre es vielleicht auch gut (falls das möglich ist) eine Sperre für das Aufpoppen solcher Dialoge einzubauen, weil das doch ziemlich störend sein kann.



    Vielen Dank! :)