Teams Autos zuweisen

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 also ich hätt mal ne Frage,
    ich such schon seit ein paar Tagen nach ner gescheiten erklärung für das Problem, dass ich einer Franktion ein spezielles Auto zuordnen kann.
    Das mit /oldcar geht irgendwie nicht und ja!! Wär froh über eine kleiner erklärung!


    Hier meine Teams:


    #define TEAM_ARMY 0
    #define TEAM_TERRORIST 1
    #define TEAM_ZIVI 2


    jo also es nett wenn da einer eine Idee hätte!
    Für Fragen stehe ich jederzeit zur Verfügung!


    Einstein

  • Hier mal auf ModelID bezogen


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new car = GetPlayerVehicleID(playerid);
    new carmodel = GetVehicleModel(car);


    if(carmodelp == xxxxx welche du haslt haben willst)
    {
    if(gTeam[playerid] == TEAM_XYZ)
    {
    return 1;
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,rot,"Fehler: Du bist nicht Teil der Fraktion");
    return 1;
    }
    }
    }

  • Mein ganzer Beitrag wurde nochmal neu gemachtm weil ich alles falsch hatte :/



    Also so ähnlich wie Hagis :thumbup:


    Erstellst halt deine Teams beispiel mit gTeam,
    danach machste die Fahrzeuge rein...
    Am besten nicht ID verutschbar wie im Godfather 8o


    PHP
    forward IsAArmyCar(carid);


    Dann unter

    PHP
    OnPlayerEnterVehicle


    machste die abfrage...


    Dann noch ein Public



    Und dann noch die Autos erstellen...

    PHP
    new ArmyCars[4];


    Unter

    PHP
    OnGameModeInit


    fügst du nun die Autos ein...
    das sieht dann so aus:


    PHP
    ArmyCars[0] = AddStaticVehicleEx(408,954.7928,-1183.5515,17.4995,179.0999,1,1,600000);
    ArmyCars[1] = AddStaticVehicleEx(408,960.0809,-1183.6522,17.4940,179.7842,1,1,600000);
    ArmyCars[2] = AddStaticVehicleEx(408,960.0267,-1194.6895,17.5131,179.4697,1,1,600000);
    ArmyCars[3] = AddStaticVehicleEx(408,954.8535,-1195.0414,17.5205,178.9168,1,1,600000);


    Das war eigentL alles, ausser ich hab was vergeßen :whistling:

    Einmal editiert, zuletzt von Schnacke ()

  • Jo danke
    also ich habs soweit verstanden, nur irgendwie gehts noch nich ganz!
    hier mal alle Script die von bedeutung sind und die Errors also ich wäre froh über hilfe!!


    #define TEAM_ARMY 0
    #define TEAM_TERRORIST 1
    #define TEAM_ZIVI 2


    forward IsAArmyCar(carid);


    Line 361-391

    public IsAArmyCar(carid)
    {
    for(new i = 0; i < sizeof(ARMYCars); i++)
    {
    if(carid == ARMYCars[i])
    {
    return 1;
    }
    }
    return 0;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {


    if(IsAArmyCar(newcar))
    {
    if(PlayerInfo[playerid][gTeam] == ARMY)
    {
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du bist kein Army Mitglied");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }


    return 1;
    }


    und hier die Errors:

    (363) : error 017: undefined symbol "ARMYCars"
    (363) : error 036: empty statement
    (363) : error 017: undefined symbol "i"
    (363) : fatal error 107: too many error messages on one line


    danke an alle die helfen!!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ok danke ja war grad zu fixiert :D


    also es is besser aber wo muss ich "PlayerInfo" und "newcar" definieren und wie??


    hier nochmal die entsprechenden Zeilen

    new ArmyCars[2];


    public IsAArmyCar(carid)
    {
    for(new i = 0; i < sizeof(ArmyCars); i++)
    {
    if(carid == ArmyCars[i])
    {
    return 1;
    }
    }
    return 0;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {


    if(IsAArmyCar(newcar))
    {
    if(PlayerInfo[playerid][gTeam] == TEAM_ARMY)
    {
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du bist kein Soldat");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }


    return 1;
    }


    und die dazu gehörigen Errors

    pwn(378) : error 017: undefined symbol "newcar"
    pwn(380) : error 017: undefined symbol "PlayerInfo"
    pwn(380) : warning 215: expression has no effect
    pwn(380) : error 001: expected token: ";", but found "]"
    pwn(380) : error 029: invalid expression, assumed zero
    pwn(380) : fatal error 107: too many error messages on one line


  • Könnt ihr keine eigenen Codes schreiben oder weshalb Paste&Copy´ed ihr euch immer Ausschnitte aus Godfather Gamemodes ?
    Schon klar das du dafür keine Defines hast, du musst anstatt von


    PlayerInfo[playerid][gTeam]


    deine Fraktionsdefinition eintippen, falls du eine variable hast :sleeping:


    newcar wird hier vermutlich für


    new newcar = GetPlayerVehicleID(playerid);


    stehen.

    [align=center]
    Mta Script Editor - Work in Progress

  • Hier nochmal zusammengefassst, da du mich per PN angeschreiben hast.


    Ganz oben
    static gTeam[MAX_PLAYERS];
    #define TEAM_ARMY 0
    #define TEAM_TERRORIST 1
    #define TEAM_ZIVI 2


    forward IsAArmyCar(carid);


    new ArmyCars[/*Anzhal wie viele du hinterher haben willst*/] // Z.B. new ArmyCars[3]


    Dann unter OnGameModeInit



    ArmyCars[0] = AddStaticVehicleEx(408,954.7928,-1183.5515,17.4995,179.0999,1,1,600000); // Hier definierst du diese Autos als Armycars. Ist zwar nicht die beste Methode , sollte aber funktioninere
    ArmyCars[1] = AddStaticVehicleEx(408,960.0809,-1183.6522,17.4940,179.7842,1,1,600000);
    ArmyCars[2] = AddStaticVehicleEx(408,960.0267,-1194.6895,17.5131,179.4697,1,1,600000);
    ArmyCars[3] = AddStaticVehicleEx(408,954.8535,-1195.0414,17.5205,178.9168,1,1,600000);


    Desweiteren ganz nach unten den IsAArmyCar Public


    public IsAArmyCar(carid) // Hier fragst du ab, ob das Auto ein ArmyCar ist
    {
    for(new i = 0; i < sizeof(ArmyCars); i++)
    {
    if(carid == ArmyCars[i])
    {
    return 1; // Sollte das Auto ein ArmyCar sein, wird 1 returnt
    }
    }
    return 0; // sollte dies nicht der Fall sein, wird 0 returnt
    }


    Nun noch abfragen, ob das Auto in welches man einsteigt ein ArmyCar ist.
    Das kann man unter OnPlayerEnterVehicle machen.
    Ich empfehle allerdings OnPlayerStateChange


    Also unter OnPlayerStateChange

    if(newstate == PLAYER_STATE_DRIVER)
    {
    new newcar = GetPlayerVehicleID(playerid);
    if(IsAArmyCar(newcar))
    {
    if(PlayerInfo[playerid][gTeam] == TEAM_ARMY)
    {
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du bist kein Soldat");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }


    return 1;
    }


    Probier das mal aus. Sollte aber eigentlich funktionieren