Beiträge von Kaliber

    Gibt es eine möglichkeit, oder ein Tool, was mir die Arbeit, mit hoch nummerieren erleichtert?

    Das kommt darauf an, was genau du tun magst.


    Die ID bei Objekten, als auch bei Fahrzeugen, werden sequenziell erstellt. Also einfach immer +1.


    Diese Eigenschaft lässt sich super ausnutzen.


    Willst du zum Beispiel immer die selben 2 Materialen setzen, bietet sich extrem ein 2 Pointer Ansatz an.

    Das heißt, wir nehmen das Erste und Letzte Objekt und kennen nun alle Objekte die dazwischen liegen.


    Sprich, sowas:


    Falls dies nicht anwendbar sein sollte, weil die Texturen zu komplex für bestimmte Objekte sind, empfehlt sich ein einfacher auto-Counter:


    C++
    new i=-1; //Wichtig bei -1 zu starten
    lspd1int[++i] = CreateDynamicObject(2310, -274.975494, 899.826477, -37.414501, 0.000000, 0.000000, 180.000000);
    SetDynamicObjectMaterial(lspd1int[i], 0, 14415, "carter_block_2", "mp_shop_floor2", 0x00000000);
    SetDynamicObjectMaterial(lspd1int[i], 1, 19480, "signsurf", "sign", 0x00000000);
    lspd1int[++i] = CreateDynamicObject(2310, -274.975494, 900.646484, -37.414501, 0.000000, 0.000000, 180.000000);
    SetDynamicObjectMaterial(lspd1int[i], 0, 14415, "carter_block_2", "mp_shop_floor2", 0x00000000);
    SetDynamicObjectMaterial(lspd1int[i], 1, 19480, "signsurf", "sign", 0x00000000);
    lspd1int[++i] = CreateDynamicObject(2310, -274.975494, 901.446472, -37.414501, 0.000000, 0.000000, 180.000000);

    So musst du nicht manuell zählen, sondern er macht das automatisch.


    Bei Fahrzeugen zum Beispiel, ist der erste Ansatz aber super effizient, da wenn man prüfen mag, ob der Spieler z.B. in einem LSPD Fahrzeug ist, keine Schleifen mehr benötigt, sondern einfach lspdCar[0] <= vehicleid <= lspdCar[1] nutzen kann und somit sofort weiß, ob er drinnen ist oder nicht.

    Du musst die Umkehroperation einfach anwenden.


    Bei + ist es -

    Bei / ist es *

    Bei > ist es <=

    Bei < ist es >=


    Willst du quasi ausdrücken:


    C++
    if(Admin > 5)
    {
        //Ok
    }
    else KeineRechte();
    
    //Ist die Umkehroperation von >, <= ergo
    if(Admin <= 5) return KeineRechte();
    // Ok

    Nein, du musst die Logik nur drehen.


    Also einfach negieren, das Gegenteil anwenden.


    Anstatt den Fall, dass das Admin Level größer Gleich 1 sein soll, sagst du, wenn sein Admin Level kleiner 1 ist, (bzw in diesem Fall einfach 0), dann darf er es nicht tun.


    C++
    cmd:blub(playerid,params[])
    {
        if(RechteInfo[playerid][Admin] < 1) return KeineRechte; // oder !RechteInfo[playerid][Admin]
        
        // Jo kann machen
        return 1;
    }

    Macht es viel aus wenn ich bei dieses hier es so mache ?

    Das kommt darauf an, was darunter geschieht :)


    Falls darunter auch ein return 1; steht, dann macht es keinen Unterschied.


    Generell ist es eher dafür gedacht bestimmte Clean Code Prinzipien einzuhalten.


    Hier mal ein Beispiel, was ich oft sehe:

    Das ist ein sogenannter if-Tree des Todes 😂 Meistens geht das ja noch viel weiter.

    Und oft ist das auch logisch nicht in der Reihenfolge, so wird meistens zum Schluss geprüft, ob man wirklich Dinge darf, obwohl vorher schon Dinge getriggert wurden.


    Durch das return und gezielte Negation ist es möglich das aufzuräumen und deutlich übersichtlicher zu gestalten, dass du keine Ebenen mehr hast.

    Alle negativen / Fehler - Fälle fängst du quasi vorne ab und übrig bleibt der Happy-Path.


    Dann ist das auch sehr übersichtlich und eindeutig.


    Aber Performance-Technisch ist da kein Unterschied. Nur deutlich übersichtlicher, da ja auch hier auf else etc verzichtet werden kann.

    Hey ist es möglich mit GeoIP nur IP Adressen aus Deutschland zu zulassen quasi als VPN Schutz zu verwenden und wenn ja wie stelle ich es an besten an ?


    MfG

    Je nachdem welches GeoIP Include/Plugin du verwendest kannst ja einfach z.B. GetPlayerCountry verwenden und prüfen, ob die IP aus DE ist oder nicht.


    Aber das natürlich kein VPN Schutz direkt, weil es ja auch viele VPN-Server in Deutschland gibt.


    Aber ja, so blockst alle ausländischen Spieler 😄

    Ihr könnt euren Skin für IG-Geld ändern, gleicher Preis!

    Das finde ich bisschen Schade 😅 Mir ist auch nicht ganz ersichtlich, wie man Geld verdient? Einige Stages habe ich geschafft, und dann stand da nur, dass es Training-Stages waren? :o Wo finde ich denn die richtigen?


    Paar Anregungen evtl:

    • Fand es schade, dass wenn man eine Stage nicht geschafft hat, direkt eine neue kam. Wäre vllt cool, wenn man einen Modus hat, dass eine random kommt (so wie es jetzt ist) oder man manuell weiter skippen muss oder sowas...denn eig würde ich ja gerne welche trainieren wollen :)
    • Manchmal war ich zu doof zu sehen, wo die Map losgeht...evtl wäre es cool, wenn man hier zum Start einen Checkpoint oder so setzt, dann sieht man das direkt.
    • Es ist nicht nötig zu versuchen mit einem Textdraw die Mini-Map verdecken zu wollen. Ihr könnt einfach SetPlayerInterior nutzen, dann wäre die eh leer, aber man würde Checkpoints z.B. sehen.
    • Ein /restart Befehl oder so wäre cool, dass man die Stage direkt nochmal wiederholen kann xD Manchmal war man aus der Stage raus oder hat den Fallschirm verloren, wäre aber noch ewig gefallen :)

    Aber sehr cooles Konzept an sich, viel Erfolg! :)

    Powerpoint, habe ich das richtig gelesen? ^^


    Ich empfehle dir den Windows Movie Maker oooder das kannst auch online auf so vielen Webseiten 4 free machen.