Fraktionsautos speichern

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 COmmunity,


    ich habe versuche ein Dynamisches Fraktions-Auto System zu machen.
    Erstellen funktioiert einwandfrei usw.
    Nur das Problem ist wenn ein Zivilist in das Fraktionsauto steigt, darf er damit fahren..
    Genau so andersrum wenn ein Beamter in ein Zivi auto steigt oder anderes Fraktionscar.. dann kann er auch mit rumfahren..


    Code:


    Funktioniert nun, neues Problem ganz unten (letzter Beitrag)




    #define MAX_FCARS 50
    enum FCarDaten
    {
    fcVehicleID,
    fcColor1,
    fcColor2,
    Float: fcSpawnX,
    Float: fcSpawnY,
    Float: fcSpawnZ,
    Float: fcSpawnA,
    fcFraktionID
    }
    new FCarInfo[MAX_FCARS][FCarDaten];


    Und bei OnGameModeInit wird LoadFCars(); geladen


    Ich hoffe mir kann einer weiterhelfen.


    Mfg, MArkus

    Einmal editiert, zuletzt von [Markus] ()

  • Hey Markus,


    Versuch das mal so.
    if(newstate == PLAYER_STATE_DRIVER)
    {
    for(new i=0; i<sizeof(FCarInfo); i++)
    {
    if(SpielerInfo[playerid][pFraktion] != FCarInfo[i][fcFraktionID])
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Member dieser Fraktion.");
    }
    }
    }



    MFG

  • Hast auch versucht mal unter OnPlayerEnterVehicle rein zu tun Versuch mal auch:



    if(!ispassenger)
    {
    for(new i=0; i<sizeof(FCarInfo); i++)
    {
    if(SpielerInfo[playerid][pFraktion] != FCarInfo[fcFraktionID])
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Member dieser Fraktion.");
    }
    }
    }

    Einmal editiert, zuletzt von Kania ()

  • Habe das jetzt so gemacht
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger)
    {
    if(playerid == PLAYER_STATE_DRIVER)
    {
    for(new i=0; i<sizeof(FCarInfo); i++)
    {
    if(SpielerInfo[playerid][pFraktion] != FCarInfo[i][fcFraktionID])
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Member dieser Fraktion.");
    }
    }
    }
    }
    return 1;
    }


    Nur ich kann jetzt egal welche frak mit den autos fahren xD
    Keine meldung kein nichts..
    newstat gab es nicht (fehler) habe es durch playerid ersetzt funkt aber nicht

  • Nein mach das mal so:



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(!ispassenger)
    {
    for(new i=0; i<sizeof(FCarInfo); i++)
    {
    if(SpielerInfo[playerid][pFraktion] != FCarInfo[fcFraktionID])
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Member dieser Fraktion.");
    }
    }
    }
    return 1;
    }




    Falls das immer noch nicht geht würde ich noch eine sache versuchen



    for(new i=0; i<sizeof(MAX_FCARS); i++)


    MFG

  • OK Versch jetzt mal so :D Wenn es nicht geht keine ahnung
    if(!ispassenger)
    {
    for(new i=0; i<sizeof(MAX_FCARS); i++)
    {
    if(vehicleid == MAX_FCARS[i])
    {
    if(SpielerInfo[playerid][pFraktion] != FCarInfo[fcFraktionID])
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_WHITE,"Du bist kein Member dieser Fraktion.");
    }
    }
    }
    }



    Mfg ^^

  • Das selbe Problem hatte ich auch :D
    Dabei hat mir der liebe Jeffry: geholfen.
    Einfach unter OnPlayerEnterVehicle "PlayerInCar(playerid,vehicleid);" einfügen.
    stock PlayerInCar(playerid,vehicleid)
    {
    for(new i=0; i<MAX_FCARS; i++)
    {
    if(vehicleid == FCarInfo[i][fcVehicleID])
    {
    if(FCarInfo[i][fcFraktionID] != SpielerInfo[playerid][pFraktion])
    {
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    }
    }
    return 1;
    }

    Und beim erstellen des Fahrzeuges (warscheinlich laden) musst du
    FCarInfo[id][fcVehicleID] = CreateVehicle ....... //Mit [id] musst du angeben, welches Fahrzeug gemeint ist.
    Wenn du also alle auf einmal erstellst, einfach [i].

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • @<| Pinguin |>: Danke euch beiden.
    Es funktioniert :)


    -


    Kommen wir zur weiten Frage.
    Wenn das FCar erstellt wird muss es auch geparkt werden...
    Müsste ich das so machen: FCarInfo[i][fcSpawnX] = Float: X; ?
    Und wie speicher ich dann die FCars?

  • hier hast ein beispiel von meinem park befehl, viel spaß beim umschreiben, söllte ne denkhilfe sein.

    ocmd:fpark(playerid,params[])
    {
    new query[128],i=1,veh=GetPlayerVehicleID(playerid),Float:xx,Float:yy,Float:zz,Float:aa;
    //if(!IsPlayerAdmin(playerid)) return SCM(playerid,rot,"Du bist nicht befugt!");
    if(!IsPlayerInAnyVehicle(playerid)) return SCM(playerid,rot,"Du bist in keinem Fraktionsfahrzeug");
    if(UserInfo[playerid][Frak]!=1) return SCM(playerid,rot,"Du bist kein Leader");
    GetVehiclePos(veh, xx, yy, zz);
    GetVehicleZAngle(veh,aa);


    for(;i<MAX_FRAKT;i++)
    {
    if(veh==FrakCar[i][carobj])
    {
    format(query,sizeof(query),"UPDATE `cars` SET `X`='%f',`Y`='%f',`Z`='%f',`A`='%f' WHERE `ID`='%i'",xx,yy,zz,aa,i);
    db_query(Data,query);
    SCM(playerid,gruen,"Fraktionsfahrzeug erfolgreich Umgeparkt!");
    }
    }
    i=0;
    return 1;
    }

  • Okay, habe es selbstgeschrieben und deins mal als Vorlage bekommen.
    Nur ich muss den Befehl 2x eingeben damit ich die Meldung bekomme: "Du hast das Fahrzeug erfogreich geparkt.."
    Und es wird nicht gesetet also x,y,z,a


    Code:
    ocmd:fcpark(playerid,params[])
    {
    #pragma unused params
    new query[300];
    new vehicleid = GetPlayerVehicleID(vehicleid);
    new Float: X, Float: Y, Float: Z, Float: A;
    GetVehiclePos(vehicleid, Float: X, Float: Y, Float: Z);
    GetVehicleZAngle(vehicleid,Float: A);
    for(new i; i<MAX_FCARS;i++)
    {
    if(vehicleid==FCarInfo[i][AutoID])
    {
    if(SpielerInfo[playerid][pFraktion] == FCarInfo[i][fcFraktionID]) return SendClientMessage(playerid,COLOR_BESCH,"Du kannst dieses Fahrzeug nicht umparken.");
    if(SpielerInfo[playerid][pFRang] != 6) return SendClientMessage(playerid,COLOR_BESCH,"Du darfst diesen Befehl nicht benutzen!");
    SendClientMessage(playerid,COLOR_ORANGE,"Du hast das Fraktions-Fahrzeug erfolgreich umgeparkt.");
    format(query,sizeof(query),"UPDATE `Fraktionautos` SET `SpawnX`='%f',`SpawnY`='%f',`SpawnZ`='%f',`SpawnA`='%f' WHERE `AutoID`='%i'",Float: X,Float: Y,Float: Z,Float: A,i);
    mysql_query(query);
    return 1;
    }
    }
    return 1;
    }

  • Funktioniert noch immer nicht...
    In der Tabelle wird nichts geändert..


    Funktioniert nun der Fehler lag am "i" :D