Beiträge von BlackFoX

    Ich wäre für nen Close ...


    Wenn einer ein Skript reinstellt das nicht jeder braucht bzw. total von Fehlern zerfressen ist dann sagt auch nicht Direkt jeder was,
    warum hat eig. noch niemand so ne Kritik gedacht aber was soll es wenn es nicht läuft nutzt es keiner...
    genau so mit den Map Files, wenn sie aussehen wir Löcher Käse dann will sie auch keiner haben...


    Finde die Kritik hier etwas übertrieben , ich denke man sollte es dem Uhrheber überlassen was er damit tun möchte bzw.
    es ist sogar so... sonst dürfte ich auch keine Beta Versionen rausstellen da die Produkte nie endgültig Stabil laufen bzw.
    Fehler enthalten

    Also ich kann mich nicht erinnern das wir hier zu extreme fälle haben , wie Firefreak bereits sagte , wenn es einen nicht juckt soll
    man nicht weiter gucken und sich nen anderen Stehplatz suchen

    Warum , er wollte es doch für seinen cmd, wenn er nen Menü nimmt , nutzt er
    das doch so ...


    Callback OnPlayerSelectedMenuRow
    new Menu:cur = GetPlayerMenu(playerid);


    if(cur == SEIN_MENU)
    {
    switch(row)
    {
    case 0:print("Menu Item 0");
    }
    }



    Hier geht es um Random daher erkläre ich ihm wie man Random anwenden kann bzw. noch ein bisschen Platz dabei sparen kann durch die
    verschiedenen Statements 8o

    Weil Switch Funktioniert wie ein Schubladen System daher wählt es den Block der im Kopf den Wert hat der in Switch zurückgegeben wird

    Hallo Liebe Community ,


    Ich möchte euch hier einmal meine neue Lieblings Include vorstellen , sie heißt DJson , ich hab sie nun zum ersten mal getestet,
    und ich war äußerst begeistert, sie hat ein Array ähnliches Pfad System , sie Speichert und lädt ungefähr so :


    djSetInt("stats.json","server/3saved3",55);


    Nun sieht es so aus in der Datei ...


    Code
    {"players":{"connected":1,"spawned":1},"server":{"3saved3":55,"saved":2,"started":6}}


    So nochmal unterteilt ( Bitte nicht wundern ich hab es schon mal mit anderen Dingen getestet ^^ )


    { // < Hauptteil
    "players":{"connected":1,"spawned":1}, // Hier war schon mal ein test :>
    "server":{"3saved3":55,"saved":2,"started":6} // dies hab ich gespeichert , so nun unten die Erklärung...
    } // Hauptblock beendet


    "server" ist das was ich als Hauptpfad nutze um meine Server Daten zu speichern , also sagen wir mal Haupt Ordner nur so als Begriffserklärung
    { der Block Startet
    "3saved3" ist mein Item wo ich eine Beispiel Zahl speichere , natürlich gehen auch Namen etc aber dazu später
    { der Block Startet für 3saved3
    :55 ist nun unser Wert


    Achtung wenn du nun mehrere Items Speicherst in diesem Context...
    "server/3saved3/deinitem"


    Wird der alte Wert für 3saved3 gelöscht also gibt es die 55 nicht mehr
    aber du kannst weitere Items in 3saved3 speichern, also Praktisch gesehen eine endlose Speicherungs Möglichkeit,
    man kann sich dies vorstellen wie in einem Ordner Prinzip



    Zu den Funktionen ...


    djCreateFile(file[]) // Datei erstellen


    djFloat("datei.endung","array1/array2/..."); // lädt einen Rationalen Wert also Koordinaten bzw. Kommazahlen


    djInt("datei.endung","array1/array2/..."); // lädt einen Integer/Zahlen Wert


    dj("datei.endung","array1/array2/..."); // Lädt einen String/ Textwert


    djSetFloat("datei.endung","array1/array2/...",KoordinatenWert); // Speichert einen Rationalen Wert bzw. einfach Float ^^


    djSetInt("datei.endung","array1/array2/...",Zahlenwert); // Speichert einen Zahlen Wert


    djSet("datei.endung","array1/array2/...",Name); // Speichert einen String/Textwert


    djUnset("datei.endung","array1/array2/..."); // Löscht einen Eintrag


    djIsSet("datei.endung","array1/array2/..."); // Schaut nach ob der Eintrag vorhanden ist und gibt je nach dem True/False zurück


    djCount("datei.endung","array1/array2/..."); // Schaut wie viel Einträge im ausgewählten Item sind


    djStyled(bool:styled); - Ordnet eure Struktur so das er eingerückt und Ordentlich dargestellt wird




    So wie gesagt , stellt es euch vor wie ein Ordner Prinzip ihr könnt soviel Speichern in einem Eintrag wie ihr wollt , wenn
    ihr im Eintrag selber jedoch wo noch unter Items sind einen Wert Speichert werden die anderen Werte gelöscht ,
    bzw. die anderen Werte und Items in diesem Eintrag werden gelöscht und nur noch euer festgelegter Wert für diesen Eintrag
    existiert! Also immer aufpassen ^^


    Hier mal ein Beispiel in Form eines Kommandos :


    if (strcmp("/savepos", cmdtext, true) == 0)
    {
    new Float:pX,
    Float:pY,
    Float:pZ,
    Float:pA;
    GetPlayerPos(playerid,pX,pY,pZ);
    GetPlayerFacingAngle(playerid,pA);
    new playerform[40],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof playername);
    format(playerform,sizeof playerform,"spielerpos.%s.ini",playername);
    djSetFloat("spielerpos.ini","spieler/position/x",pX);
    djSetFloat("spielerpos.ini","spieler/position/y",pY);
    djSetFloat("spielerpos.ini","spieler/position/z",pZ);
    djSetFloat("spielerpos.ini","spieler/position/a",pA);
    return 1;
    }


    Struktur :

    Code
    {"spieler":{"position":{"a":269.142486,"x":1958.378295,"y":1343.157226,"z":15.374607}}}



    Wenn ihr diese Include nutzt muss dies in die entsprechenden Klassen , die Namen sagen ja alles :
    djson_GameModeInit();
    djson_GameModeExit();



    Wie ihr seht ist dieses System sehr Effektiv und erspart einem eine Menge Ressourcen & Arbeit.


    ( Ich werde das Tutorial bei bedarf noch etwas verbessern )



    INFO: DJson 1.6 (c) by Draco Blue - http://dracoblue.net/download/djson-16/51/



    Mfg. BlackFoX_UD_

    Ich weiß nicht aber irgendwie sagt mir mein Gefühl das du Dreck am stecken hast,
    genauer ... ich trau dir irgendwie kein Stück, hab mir nen paar Post von dir angesehen und da
    kam mir auch einiges Merkwürdig vor.
    Außerdem wenn man ein Projekt beginnen möchte muss man auch eigene Ideen haben bzw. eine Struktur für den Anfang

    Außerdem hätte ich nicht Tausend (if) abfragen genommen sondern switch/case also das Schubladen System


    switch(listitem)
    {
    case 0:
    {


    }
    }


    so erspart man sich eine Menge Arbeit, und noch ein Tipp...


    new preise[] = {2000,3000,4000,7000}; // z.b. die Preise je nach item Index


    und dann könnte man das nach der Dialog ID abfrage so machen nur ein Beispiel...


    if(GetPlayerMoney(playerid) < preise[listitem])return SendClientMessage(playerid,0xFFFFFFFF,"Du brauchst mehr Geld!");

    Kann es sein das du evntl. einen Klammerfehler über LoadCars , irgendwo hast ?,
    sobald dieser auftritt werden alle Funktionen die unterhalb dieses Fehlers liegen nicht mehr einbezogen bzw. es kommt zu einem Fehler dieser Art

    Du nimmst die Koordinaten wie das Objekt sein soll beim erstellen bzw. Standardmäßig ,
    und verwendest diese sobald du das Tor / Objekt in die Standard Richtung zurücksetzen möchtest


    Du speicherst dir dann noch einmal die Koordinaten wo es Später einmal hin soll nach dem Öffnen bzw. welchen Rotations grad es Später haben soll
    und verwendest diese zum schließen also


    Code
    rx,ry,rz