problem mit graffities

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
  • guten tag


    ich habe ein pickup vor einem graffiti gemacht. wenn man im graffiti steht, kommt ein gametext: /graffiti.
    wenn man nun im umkreis dieses pickups ist, kann man /graffiti eingeben und man bekommt 1000$.
    man übersprüht das graffitie net wirklich, es ist sogedacht, wenn man ein graffiti findet und dann /graffiti macht (singleplayer >> übersprühen) das man dann geld als belohnunh bekommt.
    durch hilfen aus diesen forum, habe ich es geschaft ein timer zu erstellen, das man nur alle 15 minuten den befehl eingeben kann.
    nun habe ich folgendes problem: die voraussetzung ist, dass der befehl an ist,also auf true. sobald man den befehel eingiebt, wird er abgeschlatet, also false.
    und durch den timer nach 15 minuten wieder an gemacht, also true.
    Ich habe nun folgendes problem: ich kann nicht /graffiti eingeben, da die voraussetzung ist, das der befehl an ist (true). der geht aber erst an, wenn ich das graffiti übersprüht habe und 15 minuten warte.


    script:


    new pickup;//graffiti 1
    new bool:pickupcan[MAX_PLAYERS];


    forward pickupwiederaufnehmbar(playerid);


    pickup = CreatePickup(1239,1,2422.5283,-1682.1741,13.8021,-1);


    //OnPlayercmdtextblablabla
    if (strcmp(cmdtext, "/graffiti", true) == 0)
    {
    if(pickupcan[playerid] == true)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,2422.5283,-1682.1741,13.8021))
    {
    SendClientMessage(playerid,GREEN,"Du hast das Grafitti übersprüht und bekommst nun 1000$");
    SendClientMessage(playerid,GREEN,"Das Graffiti kann in 15 minuten wieder übersprüht werden!");
    GivePlayerMoney(playerid,1000);//
    SetTimer("pickupwiederaufnehmbar",900000,0);//900000 = Zeit bis Variable auf true gesetzt wird und der Spieler wieder /grafitti machen kann
    pickupcan[playerid] = false; // Variable = false; Spieler kann nichtmehr /grafitti machen
    }
    }
    return 1;
    }
    return 1;
    }
    public pickupwiederaufnehmbar(playerid)
    {
    pickupcan[playerid] = true;
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    //andere pickups
    else if(pickupid == pickup)
    {
    GameTextForPlayer(playerid,"~r~/graffiti",3000,6);
    return 1;
    }
    reutrn 1:
    }


    ich habe nun folgende lösung erstmal testweise gemacht.
    ich habe es so gemacht, das wenn jemand connected, das der befehl an gemacht wird, also auf true:


    public OnPlayerConnect(playerid)
    {
    pickupcan[playerid] = true;
    return 1;
    }


    Das problem: egal ob timer an oder aus, jedesmal wenn sich jemand connected, wird der timer bedeutungslos und der befehl ist wieder an,auf true


    er soll aber an sein, und nach dem /graffiti ausgehen und nach 15 minuten wieder angehen, was soweit auch klappt bisauf den 1. schritt: das er zu anfang an ist.


    //edit habs schon: false und true tauschen

    2 Mal editiert, zuletzt von Simon ()