Probleme mit ein paar einfachen Commands

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,


    da ich die letzten Wochen nur Daedalus (Scriptsprache für Gothic) beschäftigt habe, scheine ich etwas PAWN verlernt zu haben.


    Ich versuche ein einfaches Team-DM zusammen zu basteln. Allerdings klappen ein paar Sachen nicht.



    Der /vehicle und der /bike cmd von mir:


    if (strcmp("/vehicle", cmdtext, true) == 0)
    {
    if(team[playerid] == 0)
    {
    GetPlayerPos(playerid, X, Y, Z);
    CreateVehicle(597, X+1, Y+1, Z+1, 0, 3, 1, 0);
    }
    else
    if(team[playerid] == 1)
    {
    GetPlayerPos(playerid, X, Y, Z);
    CreateVehicle(560, X+1, Y+1, Z+1, 0, 0, 0, 0);
    }
    return 1;
    }

    if (strcmp("/bike", cmdtext, true) == 0)
    {
    if(team[playerid] == 0)
    {
    GetPlayerPos(playerid, X, Y, Z);
    CreateVehicle(523, X+1, Y+1, Z+1, 0, 0, 0, 0);
    }
    else
    if(team[playerid] == 1)
    {
    GetPlayerPos(playerid, X, Y, Z);
    CreateVehicle(461, X+1, Y+1, Z+1, 0, 0, 0, 0);
    }
    return 1;
    }


    Und das Entfernen aus dem Auto, wenn man in der gegnerichen Gang ist:



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(team[playerid] == 0)
    {
    if(GetVehicleModel(vehicleid) == 560)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }

    if(team[playerid] == 0)
    {
    if(GetVehicleModel(vehicleid) == 461)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }

    if(team[playerid] == 1)
    {
    if(GetVehicleModel(vehicleid) == 597)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }

    if(team[playerid] == 1)
    {
    if(GetVehicleModel(vehicleid) == 523)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }


    vllt kann mir einer helfen (bestimmt :D)

  • new Float:pos[3];


    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);


    versuchs mal damit aber bitte Errors posten ;)


  • Ich bezweifle zwar, dass das einen unterschied bringt, weil bei meinen alten 0.3a scripts ging meine Variante noch, ich werde es aber dennoch testen. In 2 Minuten editiere ich hier rein.


    edit: Ich bin so ein Bob xD die Teams sind mit 1 und 2 definiert. Da ich das mit 2 definierte team wählte konnte ich natürlich nichts spawnen :rolleyes:


    Dennoch danke xD


    edit 2: Aber das aus dem Fahrzeug werfen geht immer noch nicht:


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(team[playerid] == 1)
    {
    if(GetVehicleModel(vehicleid) == 560)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }

    if(team[playerid] == 1)
    {
    if(GetVehicleModel(vehicleid) == 461)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }

    if(team[playerid] == 2)
    {
    if(GetVehicleModel(vehicleid) == 597)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }

    if(team[playerid] == 2)
    {
    if(GetVehicleModel(vehicleid) == 523)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    return 1;
    }

  • public OnPlayerEnterVehicle(playerid, vehicleid)
    {
    if((team[playerid] == 0) && ((GetVehicleModel(vehicleid) == 560) || (GetVehicleModel(vehicleid) == 461))) { TogglePlayerControllable(playerid,0); ClearAnimations(playerid); TogglePlayerControllable(playerid,1); }
    if((team[playerid] == 1) && ((GetVehicleModel(vehicleid) == 597) || (GetVehicleModel(vehicleid) == 523))) { TogglePlayerControllable(playerid,0); ClearAnimations(playerid); TogglePlayerControllable(playerid,1); }
    }


    FIXXED

    Einmal editiert, zuletzt von [FX]FoxHound ()

  • Wie meinst du das?


    Ich versuche ja derzeit zu überprüfen, ob Spieler in Team 1/2 ist, wenn ja welche CarID das Fahrzeug hat und dann das er rausgeworfen wird. (glaube ich)
    Reicht da nicht 4 mal ne normale if abfrage?


    /edit: mom ich teste das von Fox xD
    /edit2: Ergebnis genauso erfolglos wie meine Variante (ich sehe eure Vorschläge atm auch nur als Abkürzung zu meinen vielen Zeilen :D)

  • Okay...
    Wenn du es so willst wie du es gemacht hast... nagut:

    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(team[playerid] == 0)
    {
    if(GetVehicleModel(vehicleid) == 560)
    {
    TogglePlayerControllable(playerid,0);
    ClearAnimations(playerid);
    TogglePlayerControllable(playerid,1);
    }
    }

    if(team[playerid] == 0)
    {
    if(GetVehicleModel(vehicleid) == 461)
    {
    TogglePlayerControllable(playerid,0);
    ClearAnimations(playerid);
    TogglePlayerControllable(playerid,1);
    }
    }

    if(team[playerid] == 1)
    {
    if(GetVehicleModel(vehicleid) == 597)
    {
    TogglePlayerControllable(playerid,0);
    ClearAnimations(playerid);
    TogglePlayerControllable(playerid,1);
    }
    }

    if(team[playerid] == 1)
    {
    if(GetVehicleModel(vehicleid) == 523)
    {
    TogglePlayerControllable(playerid,0);
    ClearAnimations(playerid);
    TogglePlayerControllable(playerid,1);
    }
    }
    return 1;
    }
    So kann er nichtmal einsteigen ^^

  • Ja das mit dem nicht einsteigen geht....das mit dem rauswerfen seltsamerweiße nicht xD
    Ich passe jetzt mal noch die Teamids an und gut ist. Danke Fox :)


    Und wieder habe ich ein Problem.


    8 Autos werden von meinem Script gespawnt. Nun möchte ich aber, dass alle Autos, deren ID über der dieser 8 Autos (also ab 8 oder 9 ka ob die Ids mit 0 oder 1 beginnen) gelöscht werden.
    Dabei habe ich das Problem, dass PAWNO anscheinend GetPlayerVehicleIid nicht mehr annimmt (Die Automatische Hilfe für den Command klappt aber noch)
    Wie soll ich das nun anstellen?

  • Funktion:
    GetPlayerVehicleID(playerid);
    Manchmal benutze ich es aber ausversehen so: GetVehicleId(playerid);
    Also guck ob du es richtig benutzt ^^


    UND:
    Die Auto ID's und alles fangen mit '0' an ;)


  • kapiere ich nicht. Jedes Auto hat doch schon eine ID. Sprich das erst gespawnte ist ID 0, das nächste ID 1 usw.
    Aber ich möchte, dass wenn man aus einem Auto aussteigt, dessen ID über 7 ist, also per CMD gespawnt, dass dieses dann gelöscht wird.


    edit: FoX: Das kennt er sogar noch weniger als GetPlayerVehicleId...

  • public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if((newstate == PLAYER_STATE_DRIVER) && (GetPlayerVehicleID(playerid) > 7)) { DestroyVehicle(GetPlayerVehicleID(playerid)); }
    }

  • Ahsoooo kapiert :D
    public OnPlayerExitVehicle(playerid,vehicleid)
    {
    if((GetPlayerState(playerid) == PLAYER_STATE_DRIVER) && (GetPlayerVehicleID(playerid) > 7)) { DestroyVehicle(GetPlayerVehicleID(playerid)); }
    }