Spawnchange funktioniert nicht

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 & Scripter


    Ich habe ein kleines Problem /spawnchange funktioniert nicht,
    aber ich finde einfach keinen fehler, kann mir bitte jemand
    helfen?


    if(strcmp(cmd, "/spawnchange", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pPhousekey] != 255)
    {
    if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1)
    {
    SendClientMessage(playerid, COLOR_RED, "Sie sind im TV.");
    return 1;
    }
    if(SpawnChange[playerid])
    {
    SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun an ihre Fraktion.");
    SpawnChange[playerid] = 0;
    if(IsAnInstructor(playerid))
    {
    if(SchoolSpawn[playerid] == 0)
    {
    SchoolSpawn[playerid] = 1;
    SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun an ihre Fraktion.");
    }
    else if(SchoolSpawn[playerid] == 1)
    {
    SchoolSpawn[playerid] = 0;
    SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun an ihre Fraktion.");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun bei ihrem Wohnplatz.");
    SpawnChange[playerid] = 1;
    }
    }
    else if(PlayerInfo[playerid][pPhousekey] == 255 && PlayerInfo[playerid][pLeader] <= 0 || PlayerInfo[playerid][pMember] <= 0 && PlayerInfo[playerid][pPhousekey] == 255)
    {
    if(PlayerInfo[playerid][pPhousekey] != 255)
    {
    if(PlayerInfo[playerid][pLeader] == 0 || PlayerInfo[playerid][pMember] == 0)
    {
    if(PlayerInfo[playerid][pObdachlosenheim] == 1)
    {
    if(ObdachlosenSpawn[playerid] == 0)
    {
    ObdachlosenSpawn[playerid] = 1;
    SendClientMessage(playerid,rot,"Sie Spawnen nun in ihrem Obdachlosen Heim");
    }
    else if(ObdachlosenSpawn[playerid] == 1)
    {
    ObdachlosenSpawn[playerid] = 0;
    SendClientMessage(playerid,rot,"Sie Spawnen nicht mehr in ihrem Obdachlosen Heim");
    }
    }
    }
    }
    }
    else if(PlayerInfo[playerid][pPhousekey] == 255)
    {
    if(IsAnInstructor(playerid))
    {
    if(SchoolSpawn[playerid] == 0)
    {
    SchoolSpawn[playerid] = 1;
    SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun an ihre Fraktion.");
    }
    else if(SchoolSpawn[playerid] == 1)
    {
    SchoolSpawn[playerid] = 0;
    SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun an ihre Fraktion.");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Sie besitzten keine Unterkunft.");
    return 1;
    }
    }
    }
    return 1;
    }
    Danke im vorraus
    MFG ;)


  • if(SpawnChange[playerid])

    Leere Abfrage :)


    Die Abfrage ist nicht leer ;)


    @leader_king:
    Deine Abfragen ergeben teilweise absolut keinen Sinn


    else if(PlayerInfo[playerid][pPhousekey] == 255 && PlayerInfo[playerid][pLeader] <= 0 || PlayerInfo[playerid][pMember] <= 0 && PlayerInfo[playerid][pPhousekey] == 255)
    {
    if(PlayerInfo[playerid][pPhousekey] != 255)
    wie kann pPhousekey den Wert 255 haben aber auch gleichzeitg nicht haben ?


    Die ganze Struktur ist völlig im Eimer und ergibt überhaupt keinen Sinn.


    Ich rate dir, mal zu schauen welche Variablen zu für den Spawnchange wirklich brauchst und welche nicht.
    Es sieht ganz so aus als weißt du nicht wirklich was du da machst bzw. was du da vor dir hast.


    Womöglich hast du sogar noch relevanten Code rausgeworfen.


    Versuchs mal so:
    if(strcmp(cmd, "/spawnchange", true) == 0)
    {
    if(SpawnChange[playerid]) SpawnChange[playerid] = 0;
    else SpawnChange[playerid] = 1;
    if(PlayerInfo[playerid][pLeader] || PlayerInfo[playerid][pMember])
    {
    if(IsAnInstructor(playerid))
    {
    if(SchoolSpawn[playerid] == 0) SchoolSpawn[playerid] = 1;
    else SchoolSpawn[playerid] = 0;
    }
    if(SpawnChange[playerid]) SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun an ihrer Fraktion.");
    else SendClientMessage(playerid, COLOR_GREEN, "Sie spawnen nun nicht mehr an ihrer Fraktion.");
    }
    else
    {
    if(PlayerInfo[playerid][pObdachlosenheim])
    {
    if(!ObdachlosenSpawn[playerid])
    {
    ObdachlosenSpawn[playerid] = 1;
    SendClientMessage(playerid,rot,"Sie Spawnen nun in ihrem Obdachlosen Heim");
    }
    else
    {
    ObdachlosenSpawn[playerid] = 0;
    SendClientMessage(playerid,rot,"Sie Spawnen nicht mehr in ihrem Obdachlosen Heim");
    }
    }
    }
    return 1;
    }
    Ich bin kein Freund von C&P aber so können wir ja noch ewig deinen Code korrigieren :whistling:
    PS: Ich gebe keine garantie für Fehlerfreiheit, hab das so ausm Kopf geschrieben.
    Errors / Warnings sollte man schnell behoben haben, schließlich weiß ich nicht genau wie es in deinem Script aussieht

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • So
    if(PlayerInfo[playerid][pObdachlosenheim]==1)



    funktioniert es wunderbar denn er muss ja beim Obdachlosenheim angemeldet sein um dort auch spawnen zu können.


    Du weißt schon, dass if(PlayerInfo[playerid][pObdachlosenheim]==1) genau das gleiche ist wie if(PlayerInfo[playerid][pObdachlosenheim])
    und das if(PlayerInfo[playerid][pObdachlosenheim]==0) genau das gleiche ist wie if(!PlayerInfo[playerid][pObdachlosenheim]) ist?

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Du weißt schon, dass if(PlayerInfo[playerid][pObdachlosenheim]==1) genau das gleiche ist wie if(PlayerInfo[playerid][pObdachlosenheim])


    Ah pls no.
    Es ist nicht das gleich
    Das fragt lediglich ab, ob der Wert nicht 0 ist.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • seid wann das denn bitte schön?


    Mir wurde es vor über 6Jahren so beigebracht


    Langform: if(PlayerInfo[playerid][pObdachlosenheim]==1)
    Kurzform: if(PlayerInfo[playerid][pObdachlosenheim])
    Zurerklährung: PlayerInfo[playerid][pObdachlosenheim] gibt 1 aus || 1 == true d.h. eigendlich sieht die abfrage so aus if(true)


    und anders rum auch


    Langform: if(PlayerInfo[playerid][pObdachlosenheim]==0)
    Kurzform: if(!PlayerInfo[playerid][pObdachlosenheim])
    Zurerklährung: PlayerInfo[playerid][pObdachlosenheim] gibt 0 aus || 0 == false d.h. eigendlich sieht die abfrage so aus if(false)


    Dies klappt jedoch nur mit 1=true und 0=false
    bei allen anderen funktioniert nur die Langform(eigendlich Logisch oder nicht?)

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Jeffry:
    dann schreib mal in kurzform eine Abfrage nach dem Wert 255
    also nicht so if(Var == 255)


    ausserdem kann man es auch so machen


    if(!(test != 0)) ist wieder if(true) :D, wie du siehst kann ich auch das kleine Spielchen.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • @[GSR]Kaito-sensei: Das ist schon seit immer so :whistling:


    Das von dir genannte trifft nur auf bool(ean)s zu.
    Nicht auf "normale" Variablen.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Wenn du direkt nach 255 abfragen willst, gibt es keine "Kurzform". Die "Kurzform" bezieht sich, wie gesagt, nur auf "ist null" und "ist nicht null".


    if(!(test != 0)) ist wieder if(true) :D, wie du siehst kann ich auch das kleine Spielchen.


    Wenn dann:
    if(!(test != 0))
    //gleich:
    if(!test)


    Weill: Nicht Nicht null ist das selbe wie null. Entsprechend: !test oder test == 0



    Falls du es genau wissen willst:
    http://de.wikipedia.org/wiki/De_Morgansche_Gesetze :thumbup:

  • komischerweise geht meine kurzform in pawn c# php


    Klar geht die Kurzform, weil 1 ist ja nicht 0, von daher hast du keine Probleme. Wird deine Variable aber eine 2, dann geht das auch durch. Wenn du mit booleans arbeitest, brauchst du dir darüber keine Sorgen zu machen, logisch.


    In boolean ist true das selbe wie !false und false das selbe wie !true.