OnPlayerStateChange 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
  • Hey..
    Es dreht sich um folgenden Codeschnipsel:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new nvehicleid = GetPlayerVehicleID(playerid);


    if(newstate == PLAYER_STATE_DRIVER)
    {
    if (PlayerInfo[playerid][pFraktion] > 1 && PlayerInfo[playerid][pFraktion] < 1)
    {
    if (strcmp(fahrzeugdaten[nvehicleid][gewerbeowner],"lspd") == 1)
    {
    TogglePlayerControllable(playerid, true);
    GameTextForPlayer(playerid, "~r~Kein LSPD Officer!", 1000, 1);
    return 1;
    }
    }

    Wenn ich in das/ein Auto das dem Gewerbe "lspd" zugeteilt wurde, und ich in der Fraktion 3 bin kann ich trotzdem in das Auto einsteigen.
    Wo liegt der Fehler?
    an dem laden/speichern der Daten für das Veh liegt es mit sicherheit nicht.

  • Wenn du mir die Zeile erklären kannst , dann kann ich vielleicht helfen
    if (PlayerInfo[playerid][pFraktion] > 1 && PlayerInfo[playerid][pFraktion] < 1)
    Ich verstehe dass nämlich so dass wenn PlayerInfo[playerid][pFraktion] größer als 1 ist UND kleiner als eins ist ... hä?

  • weist du eh das dass
    if (PlayerInfo[playerid][pFraktion] > 1 && PlayerInfo[playerid][pFraktion] < 1) 
    wo die 1er sind die carid sein müssen also von >24 bis 67< gehört jetzt polizei
    die zahlen sind nur bsp jetzt weis ja nicht wie deine car id´s sind
    MFG Mipu

  • weist du eh das dass
    if (PlayerInfo[playerid][pFraktion] > 1 && PlayerInfo[playerid][pFraktion] < 1) 
    wo die 1er sind die carid sein müssen also von >24 bis 67< gehört jetzt polizei
    die zahlen sind nur bsp jetzt weis ja nicht wie deine car id´s sind
    MFG Mipu


    Was laberst du? Da gehören keine CarIDs hin, des soll ja eine Fraktion sein!
    Naja aufjeden Fall ist diese Abfrage sinnlos da ein Wert nicht gleich kleiner und größer sein kann als 1.
    Machs lieber so:
    [pwn
    ]if (PlayerInfo[playerid][pFraktion]!=1) //wenn der jenige Spieler nicht bei der Fraktion 1 ist (Polizei) wird weitergegangen
    {
    if (strcmp(fahrzeugdaten[nvehicleid][gewerbeowner],"lspd") == 0) // hier muss 0 stehen, damit er diese Abfrage nur ausführt wenn das car von lspd ist
    { // denn strcmp ergibt 0 wenn die strings gleich sind, und nicht 1
    TogglePlayerControllable(playerid, true);
    GameTextForPlayer(playerid, "~r~Kein LSPD Officer!", 1000, 1);
    return 1;
    }
    }
    [/pwn]

  • Du butches hör ned auf die anderen, deine Abfrage ist zwar umständlich, jedoch funktioniert sie eh, jedoch wäre folgendes einfacher:


    if( PlayerInfo[playerid][pFraktion] != 1)
    (Damit ist die Leute in Breadfish auch verstehen :P )


    Zu deinem Problem, der liegt bei strcmp. Bei strcmp wird der Wert 0 (bzw false) wiedergegeben, wenn der Name übereinstimmt und nicht 1, also ändere deine Zeile zu
    if (strcmp(fahrzeugdaten[nvehicleid][gewerbeowner],"lspd") == 0)
    oder
    if (!strcmp(fahrzeugdaten[nvehicleid][gewerbeowner],"lspd"))


    Beides ist möglich :P

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!