ChangeVehicle

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
  • Hallo Brotfische,


    Ich habe mir gerade eben eine kleine Funktion gebastelt. Die Funktion ermöglicht das Fahrzeug wärend der fahrt zu ändern. Nun habe ich eine Frage, wie frage ich ab wie viele Personen in einem Fahrzeug sitzen und wie kann ich diese zwischen speichern das sie wieder in das "neue" Fahrzeug gesetzt werden?


    stock:



    Mit freundlichen Grüßen
    German_ScripterHD

  • Das kannst du so machen:

    new seat[MAX_PLAYERS] = {-1, ...};
    for(new i = 0; i < MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vID) seat[i] = GetPlayerVehicleSeat(i);
    //Fahrzeug neu erstellen...
    for(new i = 0; i < MAX_PLAYERS; i++) if(seat[i] != -1) PutPlayerInVehicle(i, newveh, seat[i]);


    Beachte aber, dass das neue Fahrzeug nicht weniger Sitze haben sollte, als das vorherige (Bus -> Motorrad), wenn mehr Sitze belegt sind, als dass neue Fahrzeug hat.

  • @Jeffry ich habe es jetzt so geschrieben wie oben erklärt. Aber ich habe mir mal gedanken gemacht wie man die Sitzplätze zählen kann... also wenn angenommen 4 Spieler in einem Fahrzeug sitzen und ich auf ein Motorrad wechsel, das die 2 anderen Spieler einfach an der stelle bleiben wo das Fahrzeug gewechselt wurde... (Leider ist es mir sehr schwer gefallen schon die Sitzplätze eines Fahrzeuges zu zählen und bin auch noch nicht mit dem Code fertig, da ich mit meinen Gedanken am ende bin. Vielleicht kannst du mir ja nochmal helfen Jeffry :)



    [spoiler="ChangeVehicle @German_ScripterHD"]



    Mit freundlichen Grüßen
    German_ScripterHD

  • Versuche es so:
    stock ChangeVehicle(playerid,vmodell)
    {
    new Float:pos[4],seed[3],vID = GetPlayerVehicleID(playerid),newveh, engine, lights, alarm, doors, bonnet, boot, objective, bool:pSeatid[0xF],
    seatmodel, seatcount, seatx;
    seatmodel = GetVehicleModel(vID);
    seatcount = GetVehicleSeatCount(seatmodel)+1;
    if(!seatmodel) return -1;
    if(!IsPlayerInAnyVehicle(playerid))return 1;
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    GetVehicleZAngle(vID,pos[3]);
    GetVehicleVelocity(vID,speed[1],speed[2],speed[3]);
    DestroyVehicle(vID);
    for(new p; p<MAX_PLAYERS; p++)
    {
    if(!IsPlayerConnected(p) || IsPlayerNPC(p)) continue;
    if(GetPlayerVehicleID(p) == vID) pSeatid[GetPlayerVehicleSeat(p)] = true,seatx++;
    if(seatx >= seatcount) return -1;
    for(new i; i<sizeof pSeatid; i++) if(!pSeatid[i]) return i;
    PutPlayerInVehicle(p,newveh,pSeatid[i]);
    return -1;
    newveh = CreateVehicle(vmodell,pos[0],pos[1],pos[2]+0.5,pos[3],1,1,-1);
    PutPlayerInVehicle(playerid,newveh,0);
    SetVehicleVelocity(newveh,speed[0],speed[1],speed[2]);
    GetVehicleParamsEx(newveh, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(newveh, 1, lights, alarm, doors, bonnet, boot, objective);
    }
    return 1;
    }



    stock ChangeVehicle(playerid,vmodell)//@Jeffry
    {
    new Float:pos[4],seed[3],vID = GetPlayerVehicleID(playerid),newveh, engine, lights, alarm, doors, bonnet, boot, objective, seat[MAX_PLAYERS] = {-1, ...};
    new seatcount = GetVehicleSeatCount(GetVehicleModel(vID));
    if(!IsPlayerInAnyVehicle(playerid))return 1;
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    GetVehicleZAngle(vID,pos[3]);
    GetVehicleVelocity(vID,speed[1],speed[2],speed[3]);
    DestroyVehicle(vID);
    for(new i = 0; i < MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vID) seat[i] = GetPlayerVehicleSeat(i);
    newveh = CreateVehicle(vmodell,pos[0],pos[1],pos[2]+0.5,pos[3],1,1,-1);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(seat[i] != -1)
    {
    if(seat[i] < seatcount) PutPlayerInVehicle(i, newveh, seat[i]);
    else SetPlayerPos(i,pos[0],pos[1],pos[2]);
    }
    }
    PutPlayerInVehicle(playerid,newveh,0);
    SetVehicleVelocity(newveh,speed[0],speed[1],speed[2]);
    GetVehicleParamsEx(newveh, engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(newveh, 1, lights, alarm, doors, bonnet, boot, objective);
    return 1;
    }

  • wird durch diese Funktion jetzt auch der sitzplatz gezählt?



    Mit freundlichen Grüßen
    German_ScripterHD