/sirene

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
  • Wenn ich /sirene eingebe, sollte die Sirene am Auto sein, dass funktioniert auch alles. Wenn ich aber dann noch mal /sirene eingebe, dann soll die wieder weggehen, aber es geht nicht:


    stock Sirene(playerid)
    {
    new sirene[MAX_PLAYERS],siren[MAX_VEHICLES],vehicleid = GetPlayerVehicleID(playerid);
    if(sirene[playerid] == 0)
    {
    siren[vehicleid] = CreateObject(18646,0.0,0.0,0.0,0.0,0.0,0.0);
    AttachObjectToVehicle(siren[vehicleid],vehicleid,0.0,0.100,0.750,0.0,0.1,0.0);
    siren[vehicleid] = 1;
    return 1;
    }
    if(sirene[playerid] == 1)
    {
    DestroyObject(siren[vehicleid]);
    siren[vehicleid] = 0;
    return 1;
    }
    return 1;
    }
    if(GetPlayerVehicleID(playerid) == sultan[0] || sultan[1])
    {
    Sirene(playerid);
    }

  • stock Sirene(playerid)
    {
    static siren[MAX_VEHICLES], sirene[MAX_PLAYERS],vehicleid = GetPlayerVehicleID(playerid); //Das da muss static sein, da du es ja speichern willst.
    if(sirene[playerid] == 0)
    {
    siren[vehicleid] = CreateObject(18646,0.0,0.0,0.0,0.0,0.0,0.0);
    AttachObjectToVehicle(siren[vehicleid],vehicleid,0.0,0.100,0.750,0.0,0.1,0.0);
    siren[vehicleid] = 1;
    sirene[playerid] = 1; //Vergessen
    return 1;
    }
    if(sirene[playerid] == 1)
    {
    DestroyObject(siren[vehicleid]);
    siren[vehicleid] = 0;
    sirene[playerid] = 0; //Vergessen
    return 1;
    }
    return 1;
    }


    So sollte es tun.

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • //edit: mein fehler, ist falsch, du setzt die variable auch nicht auf 1 mom ich helf dir ^^



    stock Sirene(playerid)
    {
    new sirene[MAX_PLAYERS],siren[MAX_VEHICLES],vehicleid = GetPlayerVehicleID(playerid);
    if(sirene[playerid] == 0)
    {
    siren[vehicleid] = CreateObject(18646,0.0,0.0,0.0,0.0,0.0,0.0);
    AttachObjectToVehicle(siren[vehicleid],vehicleid,0.0,0.100,0.750,0.0,0.1,0.0);
    sirene[playerid] = 1;
    }
    else if(sirene[playerid] == 1)
    {
    DestroyObject(siren[vehicleid]);
    sirene[playerid] = 0;
    }
    return 1;
    }

  • ich hab mal nen bisschen rumgetrickst und versucht, so klappts:

    new sirene[MAX_PLAYERS],siren[MAX_VEHICLES]; //unter deinen includes, da sie beim stock immer wieder neu definiert wurden und somit den wert 0 erhielten :)


    stock Sirene(playerid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(sirene[playerid] == 0)
    {
    siren[vehicleid] = CreateObject(18646,0.0,0.0,0.0,0.0,0.0,0.0);
    AttachObjectToVehicle(siren[vehicleid],vehicleid,0.0,0.100,0.750,0.0,0.1,0.0);
    sirene[playerid] = 1;
    }
    else if(sirene[playerid] == 1)
    {
    DestroyObject(siren[vehicleid]);
    sirene[playerid] = 0;
    }
    return 1;
    }

  • Das hier:
    if(GetPlayerVehicleID(playerid) == sultan[0] || sultan[1])


    muss auch so sein:
    if(GetPlayerVehicleID(playerid) == sultan[0] || GetPlayerVehicleID(playerid) == sultan[1])


    Hatte ich übersehen.
    Ich hab noch einen kleinen Fehler bei meinem stock ausgebessert, sollte jetzt tun.

  • firestormZ:


    Danke du bist der beste, klappt nun :)


    Achja, und wenn ich In Fraktion 1 bin, und mir ein Supporter Auto spawne(Sultan), dann kann ich da auch eine Sirene ranmachen, aber das will ich ja nicht!
    Ich habe den sultan[0] und sultan[1] extra vor CreateVehicle vom LSPD gemacht :(


    Weiß da einer eine Lösung, wäre gut


  • bist du irgendwie auf beiträge aus? ich hab 6 post vor dir die lösung geschrieben und du wiederholst haar genau das was ich gesagt habe?

  • Jeffry:
    if(GetPlayerVehicleID(playerid) == sultan[0] || sultan[1])
    das funktioniert auch :)


    Nein.


    Beweis:
    new a = 1, b = 2, c = 1;
    if(a == b || c) print("true");
    else print("false");

    a = 1, b = 2, c = 3;
    if(a == b || c) print("true");
    else print("false");

    Zitat

    [04/08/2013 19:31:15] true
    [04/08/2013 19:31:15] true


    Es gibt beides mal true aus, dabei ist beim 2. mal a weder gleich b noch gleich c.


    Warum ist das so?
    Der Code bedeutet: true wenn: a == b ODER c != 0


    Folge: Der Code wird bei jedem Vehicle aufgerufen, da sultan[1] wohl nicht 0 ist, sondern einen Wert hat. ;)

  • Gut, es ist alles geklärt :)
    Danke für alle Antworten, aber ein Problem habe ich noch. Es werden immer 2 Sirenen auf das Dach gesetzt. Entfernt werden beide, aber ich möchte nur, dass eine aufs Dach gesetzt wird.


    Grüße,
    TheBester