Carsystem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Moin,hab mal eine frage und zwar, wie kann ich das machen, das wenn man ein Car spawnt man gleich drinne sitzt und wenn man aussteigt das dass gespawnt car automatisch gelöscht wird?


    bislang bin ich soweit:



    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]");
    new Float:xc,Float:yc,Float:zc,Float:rc;
    GetPlayerPos(playerid,xc,yc,zc);
    GetPlayerFacingAngle(playerid,rc);
    CreateVehicle(mID,xc,yc,zc,rc,1,1,-1);
    if(mID<400||mID>611)return SendClientMessage(playerid,rot,"FEHLER: Ungültige Autoid!");
    return 1;
    }


    Danke in vorraus

  • 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);
    }

  • 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.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • new isSpawnedVeh[MAX_VEHICLES];


    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
    isSpawnedVeh[vID] = true;
    return 1;
    }


    public OnGameModeInit()
    SetTimer("CheckVehicles", 1000, 1);



    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 == 1)
    {
    DestroyVehicle(i);
    isSpawnedVeh[i] = false;
    }
    }
    }
    return 1;
    }