Problem mit den Fraktionsfahrzeugen

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
  • Guten Tag Community,


    ich habe momentan ein problem und zwar können die Member einer Fraktion ohne einen Befehl in ihre Autos einsteigen.
    Als fremder muss dir die Fraktion die Fahrzeug Türen öffnen.
    Alles funktioniert bis jetzt bis auf das wenn ich in ein Fahrzeug einsteige und den Motor starte das der Member nachdem aussteigen nicht mehr ins Fahrzeug einsteigen kann.
    Ich habe alles geprüft und es liegt momentan am Motor und am Licht Befehl das diese Probleme entstehen.
    Ich hoffe ihr könnt mir helfen


    Hier sind meine Codes:


    Motor Befehl:

    Spoiler anzeigen
    ocmd:cv(playerid,params[])
    {
    if(sInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht Eingeloggt.");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,COLOR_GRAU,"Nur im Fahrzeug möglich.");
    new cmd[32];
    new vID = GetPlayerVehicleID(playerid);
    if(sscanf(params,"s",cmd))return SendClientMessage(playerid,COLOR_GRAU,"Benutzung: /cv [Motor/Licht]");
    if(strcmp(cmd,"motor",true) == 0)
    {
    GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
    if(motor[vID] == false)
    {
    motor[vID] = true;
    SetVehicleParamsEx(vID,1,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid,"~w~Motor ~g~gestartet",2000,4);
    return 1;
    }
    else if(motor[vID] == true)
    {
    motor[vID] = false;
    SetVehicleParamsEx(vID,0,lights,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid,"~w~Motor ~r~ausgeschaltet",2000,4);
    return 1;
    }
    }
    if(strcmp(cmd,"licht",true) == 0)
    {
    GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
    if(licht[vID] == false)
    {
    licht[vID] = true;
    SetVehicleParamsEx(vID,engine,1,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid,"~w~Licht ~g~angeschaltet",2000,4);
    return 1;
    }
    else if(licht[vID] == true)
    {
    licht[vID] = false;
    SetVehicleParamsEx(vID,engine,0,alarm,doors,bonnet,boot,objective);
    GameTextForPlayer(playerid,"~w~Licht ~r~ausgeschaltet",2000,4);
    return 1;
    }
    }
    return 1;
    }


    OnVehicleStreamIn:

    Spoiler anzeigen
    for(new i = 1; i < sizeof(fvInfo); i++)
    {
    if(vehicleid == fvInfo[i][fvCar])
    {
    if(fvInfo[i][fvAbgeschlossen] == 1)
    {
    if(fvInfo[i][fvfrakid] == sInfo[forplayerid][pFraktion])
    {
    SetVehicleParamsForPlayer(fvInfo[i][fvCar],forplayerid,0,0);
    }
    else
    {
    SetVehicleParamsForPlayer(fvInfo[i][fvCar],forplayerid,0,1);
    }
    }
    else if(fvInfo[i][fvAbgeschlossen] == 0)
    {
    SetVehicleParamsForPlayer(fvInfo[i][fvCar],forplayerid,0,0);
    }
    }


    ich hoffe auf eine Hilfe


    MfG


    Master

  • Lass dir den doors-Status mal ausgeben, vielleicht kommt er durch SetVehicleParamsForPlayer durcheinander.
    GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
    printf("doors: %d", doors);


    Was steht dann im Server Log, wenn du den Motor an machst, als Member, und dann das Fahrzeug verlässt und wieder einsteigen willst, was nicht geht.

  • Ok, dann ist es genau das was ich vermutet habe. doors = 1 = locked


    Nutze diese Funktion:
    stock FixDoors(vehicleid)
    {
    for(new i = 1; i < sizeof(fvInfo); i++)
    {
    if(vehicleid == fvInfo[i][fvCar])
    {
    for(new p=0; p<MAX_PLAYERS; p++)
    {
    if(!IsPlayerConnected(p)) continueM
    if(fvInfo[i][fvAbgeschlossen] == 1)
    {
    if(fvInfo[i][fvfrakid] == sInfo[p][pFraktion])
    {
    SetVehicleParamsForPlayer(fvInfo[i][fvCar],p,0,0);
    }
    else
    {
    SetVehicleParamsForPlayer(fvInfo[i][fvCar],p,0,1);
    }
    }
    else if(fvInfo[i][fvAbgeschlossen] == 0)
    {
    SetVehicleParamsForPlayer(fvInfo[i][fvCar],p,0,0);
    }
    }
    return 1;
    }
    }
    return 1;
    }


    Und füge im Befehl, jeweils nach dem SetVehicleParamsEx
    FixDoors(vID);
    ein.

  • Das hat nicht geholfen


    [17:15:49] doors: 1
    [17:15:49] doors: 1
    [17:15:59] doors: 1
    [17:15:59] doors: 1


    Ich habe ein gleiches System für die Supporter gemacht bei den Fahrzeugen der Supporter funktioniert das system fehler frei.
    Nur bei den Fraktionsfahrzeugen habe ich gerade ein Problem