Gangwar system ?

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
  • Hey.


    Ich wollte mal wissen , wie ich das am besten scripte.


    Es sollte so aussehen:


    Eine Fraktion geht in die Base einer anderen und nimmt mit /einnehmen ein.
    Dann werden 3 Flaggen gespawnt , Flagge A , B und C. Manche kennen es bestimmt von CoD und anderen Shootern ^^.
    So, dann muss die Fraktion versuchen , vor der anderen Fraktion 100 Punkte zu erreichen , wer dies als erster schafft , gewinnt.
    Die eigene Fraktion bekommt pro getöteten Spieler der gegnerischen Fraktion 1 Punkt , und pro Einnahme einer Flagge 12.


    Nur ich weiß nicht wie ich es scripten soll :/


    Wenn mir wer wirklich helfen kann / mit mir zusammen eins macht , der bekommt, wenn er möchte , ~1€ Paypal ^^


    Edit:


    So habe ich es bisher , aber ich glaube , dass würde so viel zu viel Zielen ziehen , weil ich muss ja für jede Fraktion abfragen , ob sie in dem oder dem einnahmepunkt steht :/


    Spoiler anzeigen
    ocmd:einnehmen(playerid,params[])
    {
    new einnahmefrak=0;
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",PlayerName(playerid));
    switch(dini_Int(Spieler,"Fraktion"))
    {
    case 2://GS
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,-2650.7744,1362.2247,20.7266))
    {
    if(Yakieinnehmbar==true)
    {
    einnahmefrak=5;
    //if(istfrakonline(einnahmefrak))
    //{
    GSpunkte=0;
    Yakipunkte=0;
    yakieinnahme=true;
    Yakieinnehmbar=false;
    yakiabklingzeit=5400;
    SetTimer("Yakieinnehmtimer",1000,1);
    SetTimer("Yakiablauf",1000,1);
    SendFrakMessage(5,Rot,"Die Grove Street versucht die Yakuza Base einzunehmen!");
    SendFrakMessage(2,Gruen,"Die Grove Street versucht die Yakuza Base einzunehmen!");
    SendClientMessage(playerid,Gelb,"Du nimmst die Yakuza Base ein!");
    new yakistring[128];
    format(yakistring,sizeof(yakistring),"Die Base ist in %i Minuten einnehmbar!",yakiabklingzeit/60);
    SendClientMessage(playerid,Rot,"Es geht!");
    //}
    //else
    //{
    // SendClientMessage(playerid,Rot,"Es ist niemand aus der Fraktion online!");
    //}/
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du kannst diese Base noch nicht einnehmen!");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist in keinem Einnahmepunkt!");
    }
    }
    case 5: {}//Yaki
    }
    return 1;
    }

  • Es wäre aber nicht Falsch wenn du es so schreiben würdest wie du bisher es geschrieben hast. Flaggen kannst du mit SetPlayerMapIcon spawnen lassen und mit SetPlayerScore die Punkte verteilen, oder du speicherst die Punkte auf eine eigene Variable und setzt diese wieder auf 0 wenn jemand 100 Punkte erreicht

  • Es wäre aber nicht Falsch wenn du es so schreiben würdest wie du bisher es geschrieben hast. Flaggen kannst du mit SetPlayerMapIcon spawnen lassen und mit SetPlayerScore die Punkte verteilen, oder du speicherst die Punkte auf eine eigene Variable und setzt diese wieder auf 0 wenn jemand 100 Punkte erreicht


    Soweit war ich ja auch schon :/


    Aber das würde doch ziemlich viel Zeilen ziehen oder?


    Also wenn ich zB. 10 Gangs/Mafien habe , und für jede einzelne 9 abfragen mache , wären 90+ if's a ~15 Zeilen alleine im /einnehmen , über 1k zeilen alleine im /einnehmen befehl ? :O

  • Ich weiß zwar nicht was genau du hier zusammen rechnest aber du hast schon Recht es dauert etwas. Es ist aber mehr oder weniger positiv weil es bei jeder Fraktion das gleiche ist (Copy + Paste) ^^
    Es gibt bestimmt andere Möglichkeiten genauso, mit stock / public zusammenarbeiten aber soweit ich weiß glaube ich dass deine angefangene Methode die "einfachste" ist :S