Pro Gebiet 5.000$ für Gang

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 es nur eine Denkhilfe sein soll...
    Dann setzt du einen Timer "GangTimer = Settimer("stündlich",interval, true)", dass true damit es sich wiederholt.
    Du lässt ihn starten, sobald die jeweilige Fraktion ein Gebiet eingenommen hat, den Timer laufen (versteht sich netürlich für jede Frak einen).
    Sobald das Gebiet wieder eingenommen wurde "killst du den Timer" "KillTimer(GangTimer);"


    Müsste dir eigentlich helfen ^^


    L.G.
    heyho

  • Ich glaube er möchte eher das pro Ganggebiet pro Payday was dazukommt.


    Ganz einfache denkweiße: alle Gebiete abfragen, haben sie die gleiche Owner ID wie die Fraktion --> +$5.000

    Ich helfe gerne, aber nur wenn die andere Person wenigstens versucht es zu schaffen.
    Solange sie nicht so dreist sind und mich beim Zocken zuspammen.

  • Scripte einen 2. Payday.
    Nur ein stündlicher Timer, doch nicht für alle Gangs einen eigenen Timer :O evtl. In einem bestehenden einfügen!
    Schleife durch alle Gebiete -> Kbank der ownerid (sofern es eine Gang ist, mögliche Fehler vermeiden) +5.000$.
    Mit Nachricht an alle Gangmitglieder?
    Evtl die Gangpayday Zeit in der Datenbank speichern wegen Restart und so.

  • So ungefährt musste es machen, aber natürlich bearbeiten auf deine Funktionen :rolleyes:


    public GangPayDay()
    {
    new count; //Ein Zähler um die Fraktionen zu zählen.
    for(new FraktionID = 0; FraktionID < /*ANZAHL DER FRAKTIONEN*/; FraktionID++) //Schleife die Alle Fraktionen durchgeht.
    {
    for(new Gebiet = 0; Gebiet < /*ANZAHL DER GANGWAR-GEBIETE*/; Gebiet++){ //Schleife die Alle GW-Gebiete durchgeht.
    if(GehoertGebiet[Gebiet] == FraktionID){ //Abfrage ob das Gebiet der Fraktion gehört
    count++; //Wenn ja, wird der Zähler um 1 erhöht. (++ bedeutet +1)
    }
    }
    GibtFraktionGeld(FraktionID,count*5000); // Anzahl der Gebiete (count = Zähler = Anzahl der Gebiete) * 5.000$
    }
    return 1;
    }

  • Wieso 2 Schleifen?


    Würde es nicht besser sein Die Ganggebiete durchlaufen zu lassen und das dann auf die Fraktionen zu Addieren? :D


    Oder hab ich mal wiedern Denkfehler?

    Ich helfe gerne, aber nur wenn die andere Person wenigstens versucht es zu schaffen.
    Solange sie nicht so dreist sind und mich beim Zocken zuspammen.

  • Wieso 2 Schleifen?


    Würde es nicht besser sein Die Ganggebiete durchlaufen zu lassen und das dann auf die Fraktionen zu Addieren? :D


    Oder hab ich mal wiedern Denkfehler?


    Naja, er fragt für jede Fraktion (1. Schleife) jedes Gangwargebiet (2. Schleife) ab, ob es der jeweiligen Fraktion (1. Schleife) gehört.
    Man könnte es schon mit nur einer Schleife machen, aber mit 2. ist es mMn einfacher und nicht allzu unständlich ;)


  • Problem ist, wie mache ich eine Schelife der die ganzen Fraktionen durch geht, Gangfightgebiete weiß ich aber Fraktionen :S

  • Irgendwo wirst du die Fraktionen ja definiert haben, also auch wissen wieviele es sind. Wenn du schlau bist speicherst du die anzahl in einer Variable, so musst du nicht immer das ganze script umändern sondern nur die Variable.

    Ich helfe gerne, aber nur wenn die andere Person wenigstens versucht es zu schaffen.
    Solange sie nicht so dreist sind und mich beim Zocken zuspammen.

  • Irgendwo wirst du die Fraktionen ja definiert haben, also auch wissen wieviele es sind. Wenn du schlau bist speicherst du die anzahl in einer Variable, so musst du nicht immer das ganze script umändern sondern nur die Variable.


    Im IR Script finde ich es, habe schon eine halbe Stunde gesucht. Das ist echt umständlich gescriptet

  • Eine Schleife ist viel einfacher ...
    Dein Ansatz ist richtig Gio!
    Soll eine Nachricht erscheinen?

  • Eine Schleife ist viel einfacher ...
    Dein Ansatz ist richtig Gio!
    Soll eine Nachricht erscheinen?


    Hab bis jetzt so, doch i.wie bekommt Triaden auch Geld obwohl alle Gebiete Ballas hat :s



    public GangPayDay()
    {
    new count,str[128];
    for(new Frak = 0; Frak< 26; Frak++){
    for(new GB = 0; GB<8; GB++){
    if(GangfightSystemInfo[GB][GFOwnerID] == Frak)count++;
    }
    KassenInfo[Frak][tKasse] += count * 5000;
    }
    ForAllPlayers(i)
    {
    if(IsAGangMember(i))
    {
    format(str,128,"Gebiete: %d\nGeld für die Gebiete: %d$",count,count*5000);
    SendClientMessage(i,COLOR_YELLOW,str);
    }
    }
    return 1;
    }

  • Deine schleife hat 2 probleme:


    1. count wird nicht zurückgesetzt, wenn Fraktion 1 2 Gebiete hatte bekommt Fraktion 2, 3, 4, ..., 18 die auch


    2. die Zweiter Schleife gibt allen Spielern das endergebnis aus. eig sollte das immer das Gleiche sein.


    Habs mal berichtigt:
    public GangPayDay()
    {
    new count,str[128];
    for(new Frak = 0; Frak< 26; Frak++){
    count = 0;
    for(new GB = 0; GB<8; GB++){
    if(GangfightSystemInfo[GB][GFOwnerID] == Frak)count++;
    }
    KassenInfo[Frak][tKasse] += count * 5000;
    format(str,128,"Gebiete: %d\nGeld für die Gebiete: %d$",count,count*5000);
    SendFamilyMessage(Frak,COLOR_YELLOW,str); // Der Befehl, der wie /f eine Nachricht an alle aus der Fraktion sendet.
    }
    return 1;
    }


    SendFamilyMessage gegebenfalls auf dein System anpassen.

    Ich helfe gerne, aber nur wenn die andere Person wenigstens versucht es zu schaffen.
    Solange sie nicht so dreist sind und mich beim Zocken zuspammen.