gTeam Fraktionscars Problem

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
  • Hi Leute, Ich habe wollte gerade Fahrzeuge erstellen, die nur von Mitgliedern der jewailigen Teams gefahren werden können. Doch wenn Ich dann z.B. als Grove Mitglied in ein Ballascar einsteige, kann Ich trotzdem damit rumfahren. Errors oder Warnings hatte Ich beim Compilen auch nicht.
    Hier der Code:
    // Oben
    new Ballascar1;


    // Unter OnGamemodeInit
    Ballascar1 = AddStaticVehicle(566,1941.1470,-1130.3367,25.2060,270.6465,78,78);


    // Und das unter OnPlayerEnterVehicle
    if(vehicleid == Ballascar1 && gTeam[playerid] != TEAM_BALLAS)
    RemovePlayerFromVehicle(playerid);

    Ich hoffe mir kann jemand helfen, Forensuche habe Ich auch benutzt, aber nichts brauchbares gefunden.
    Bitte helft mir, es ist dringend.
    mfg Lambo :)

  • Ballascar1[0]= AddStaticVehicle(566,1941.1470,-1130.3367,25.2060,270.6465,78,78);


    new Ballascar1[1] glaub ich ;)


    if(vehicleid == Ballascar1 && gTeam[playerid] == TEAM_BALLAS)

  • Mo-mo-ment mal... kann sein dass ich einen folgenschweren Denkfehler begehe, aber "OnPlayerEnterVehicle" beschreibt doch nur den Zustand, wenn der Spieler das Fahrzeug betritt, aber noch nicht drin sitzt?
    Demnach kann das logischweise ja alleine aus dem Grund schon nicht funktionieren, da der Spieler zum Zeitpunkt der Abfrage in keinem Fahrzeug sitzt, aus dem er rausgeworfen werden könnte.


    Abhilfe könntest du schaffen, indem du (statt den Spieler aus dem Fahrzeug werfen zu wollen) die Koordinaten des Spielers speicherst und die Spielerposition unmittelbar danach auf diese Koordinaten setzt. Somit wird der Spieler daran gehindert, überhaupt erst ins Fahrzeug einzusteigen.


    Das machst du wie folgt:
    Du erstellst drei Variablen, welche Gleitkommazahlen (Float) aufnehmen können. SAMP stellt den Befehl "GetPlayerPos(playerid,x,y,z)" bereit, womit du die aktuelle Spielerposition ermitteln kannst. Für x,y und z setzt du einfach deine vorher deklarierten Variablen ein, und zum Schluss setzt du die Spielerposition auf die Werte dieser Variablen (mithilfe des Befehls "SetPlayerPos(playerid,x,y,z)").


    Insgesamt sieht steht dann unter deiner If-Abfrage innerhalb der OnPlayerEnterVehicle-Methode (zB):

    new Float:pX, Float:pY, Float:pZ;
    GetPlayerPos(playerid, pX, pY, pZ);
    SetPlayerPos(playerid, pX, pY, pZ);
    return 1;



    @]PRT[The_Gamer: Welche Abfragen soll er denn einzeln machen? Bezieht sich das auf das If? Ob er jetzt zwei If's schreibt oder den Operator && benutzt, kommt beides aufs selbe ;)



    @[NeXt]T.L: Die Variante die Lambo hatte (einfach nur eine Variable mit der Bezeichnung Ballascar1, ohne irgendwelche Arrays erstellen zu wollen) müsste aber eigentlich genauso gut funktionieren (wenn nicht belehrt mich eines besseren ^^).


    MFG
    Danny

    There are only 10 types of people in the world. Those who understand binary, and those who don't.

    Einmal editiert, zuletzt von Neckbreaker ()

  • Und nun bitte den ganzen zeugs da



    damit man die übersicht behält ^^

  • Also insgesamt sähe es so aus:



    // Oben
    new Ballascar1;
    ...
    // Unter OnGamemodeInit
    Ballascar1 = AddStaticVehicle(566,1941.1470,-1130.3367,25.2060,270.6465,78,78);
    ...
    // Und das unter OnPlayerEnterVehicle
    if(vehicleid == Ballascar1 && gTeam[playerid] != TEAM_BALLAS)
    {
    new Float:pX, Float:pY, Float:pZ;
    GetPlayerPos(playerid, pX, pY, pZ);
    SetPlayerPos(playerid, pX, pY, pZ);
    return 1;
    }
    ...


    Müsste funktionieren...


    MFG
    Danny

    There are only 10 types of people in the world. Those who understand binary, and those who don't.