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 möchte gerne graffities übersprühen, und der spieler erhält dann geld.
    dies ist nicht schwer, doch ich möchte das ein graffiti nur alle 10 minuten übersprüht werden kann.
    den timer zu setzen ist auch nicht schwer
    if(blablabla
    {
    SetTimer


    public...


    aber wärend der timer läuft, kann keiner das graffiti übersprühen. könnte mir da einer helfen?
    mfg

  • so was ist schon möglich aber es werden keine richtige graffitis gemacht kannst das nur so symbolisieren ich mach mich mal schlau wie so was gehen sol ok ? aber 100 % kann ich dir auch nicht helfen wird aber schon ;) ^^





    MFG Andreas :D

  • Ich glaube die Grafitties sind Objecte.. Also bei jedem zu übersprühenden müsste dann per Befehl ein Object, also das Grafittie erstellt werden..



    |Signatur: |||||||||||||||||||| 25% fertig|

  • jaja ich weiß also:
    ich mache ein pickup vors graffiti. dann laufe ich ins pickup und dann erscheint ein GameText: /graffiti.
    wenn man dann im pickup steht und /graffiti eingiebt, kommt die nachricht im chat: Graffiti erfolgreich übersprüht, sie erhalten GELD$
    der spieler erhält dann das geld.


    soweit kann ich alles selber. doch man kann in einer tour /graffiti benutzen und sich 999999999999999999$ machen ^^


    nun soll das graffiti, wenns übersprüht wurde, erst nach ZEIT minuten wieder "frei" sein,so dass man es erst nach einer gewissen zeit wieder übersprühen kann und man nicht dauerhaft sich Geld macht.


    und da komme ich nicht weiter...

  • Dazu wäre eine if Funktion gut.


    Wenn jemand das Grafiti übersprüht hat



    if Grafiti=0
    {
    Createobject....
    Grafiti = 1
    SetTimer("Grafitinext"; [Time]; 0);
    return 1;
    }



    public Grafitinext()
    {
    Grafiti = 0
    return 1;
    }


    I was in die Richtung


    PS: Das würde ich nicht verwenden.

    Meine Werke


    Minecraft Signatur Buggt



    Sowas wie 10/10 gibt es nicht. Ausser bei Satan

  • Dann musst du entweder den Timer verlängern, oder einen seperaten Timer einrichten der nur die PlayerID erfasst die auch gesprüht hat.. Somit kannst du den Sprüher für eine gewisse Zeit sperren..



    |Signatur: |||||||||||||||||||| 25% fertig|

  • ihr macht das viel zu kompliziert!!!


    ich möchte kein objekt erstellen!
    das graffiti ist dort schon übersprüht an der wand/mauer. da setze ich einfach ein pickup vor und sobald man im pickup ist kann man /graffiti eingeben.
    das graffiti wird "eigentlich" nich übersprüht, man kriegt halt geld. soll ich euch das gleich zeigen? dann schickt mir ne PN und ich sende euch die ip.
    ist eig simple aber schwer zuu erlären

  • Wenn du wirklich übersprühen willst musst du ein Objekt erstellen..
    Wenn das Tag schon da ist und nichts neues drüber kommt ist es doch sinnlos, oder??



    |Signatur: |||||||||||||||||||| 25% fertig|

  • ne ^^
    also:
    da ist das graffiti an der wand(schon übersprüht) ich setze nun vor jedem graffiti in ls ein pickup. wenn man in einem der pickups ist, kann man /graffiti eingeben und man bekommt geld.das graffiti wird nicht verändert. es kommt auch kein objekt dazu bzw es wird kein objekt zerstört. die graffities ist einfach nur eine weitere einnahmequelle.
    wer viel sucht, findet viele und bekommt viel geld. ich kanns euch am besten zeigen. also ich möchte hir nicht werben, schickt mir ne pn wenn ihr wissen wollt was ich meine um mir zu helfen ^^


    sinn: geldverdiehnen.


  • forward ResetGrafiti(playerid);


    //


    //kA Ob du das jetzt als Command oder sonst was willst, musst du anpassen
    if(GetPvarInt(playerid,"Grafiti") == 0)
    {
    SetPVarInt(playerid,"Grafiti",1);
    SetTimerEx("ResetGrafiti",1000 * 60,0,"i",playerid);
    //was noch passieren soll
    }


    //


    public ResetGrafiti(playerid)
    {
    SetPVarInt(playerid,"Grafiti",0);
    }


    So mal eben aus der Hand geschrieben.
    Jeder Spieler kann nur alle 10 Mins ein Grafiti übersprühen.

  • doch ihr versteht mich nicht richtig ^^
    ich möchte kein graffiti wie im singleplayer übersprühen, ich will einfach wenn ich vor einem graffiti stehe und /graffiti eingebe, das ich geld bekomme.
    und damit man nicht dauerhaft /graffiti eingiebt wenn man vor dem graffiti steht, und nicht ständig geld verdient, soll es so sein, das wenn einer /graffiti eingegeben hat, das die anderen erst wieder nach 10 minuten den cmd benutzen können.


    ich hoffe es ist jez verständlicher ^^ ich mach mal ein screenshot

  • Du musst doch einfach ein Pickup vor dem Graffiti erstellen das gelöscht wird wenn der Spieler /grafitti eingegeben hat und ein Timer erstellen der das Pickup in einer gewissen Zeit neu erstellt. Es gibt soweit ich weiß aber auch Pickup-Typen die von alleine verschwinden und nach einer Weile wieder verwendbar sind:


    forward pickupwiederaufnehmbar(playerid);
    new pickup;
    new bool:pickupcan[MAX_PLAYERS];
    pickup = CreatePickup(blabla,x,y,z...);


    if (strcmp("/graffiti", cmdtext, true, 10) == 0)
    {
    if(pickupcan[playerid] == true)
    {
    if(IsPlayerInRangeOfPoint(playerid,1,x,y,z); // Hier die gleichen X,Y,Z-Koordinaten wie bei CreatePickup
    {
    SendClientMessage(playerid,farbe,"Du hast das Grafitti übersprüht und bekommst nun XXX$"); // FArbe mit einer farbe ersetzen
    GivePlayerMoney(playerid,xxx);//xxx = geld das der spieler bekommt
    SetTimer("pickupwiederaufnehmbar",10000,0);//10000 = 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;
    }


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


    So in der Art könnte es klappen...

    Einmal editiert, zuletzt von Haxler ()

  • jop danke ich probiere es


    //edit: du hast dich einmal verschrieben, das habe ich gelöst. dann haste geschrieben: mit dem true. das das n sein muss,sonst geht der cmd nicht. aber wie soll de angehen?
    ich habe das jetzt si gemacht, dass wenn sich jemand einlogg, das das auf true gesetzt wird und wenn man/graffiti macht auf false. doch jedesmal wenn sich ein neuer einloggt, ist de timereffekt verschwunden.

    Einmal editiert, zuletzt von Simon ()