Beiträge von BlackFoX

    Versuch mal von der Basis auszugehen , wenn du bei einem Wanted Theoretisch 200€ Strafe bekommen würdest,
    könntest du diese 200 x Wantedlevel nehmen so würde ein unendliches System entstehen dazu baust du eine Abfrage ein
    die Abfragt ob der Spieler z.b. über 5 Wantedlevel besitzt, da könntest du die Wantedlevel geteilt durch 5 nehmen
    da würde z.b. 2 herauskommen bei 10 Wantedleveln , diese Zeit wäre die Zeit für das Gefängnis ,reine Theorie aber
    ich hoffe es sagt dir was

    Versuch mal


    • Den GTA San Andreas Ordner umzubenennen in irgendwas anderes wie GTA SA ( dann starte das Spiel )
    • Wenn das nicht geht Kompatibilität ( Win 98 oder 2000 / ME )

    // Beispiel
    if(!strcmp(cmdtext,"/sterbenftw",true))return SetTimerEx("GehSterben",500,0,"i",playerid);


    // Funktion
    forward GehSterben(playerid);
    public GehSterben(playerid)return SetPlayerHealth(playerid,0.0);

    Eure Kritikfähigkeit ist gleich NULL,

    Du nennst uns nicht Kritik fähig aber sich selber guckt man dann erst gar nicht an,
    beziehe das mal auf deinen tollen Freund , zudem übersteigt unser Horizont nicht sondern
    es ist das normale Gefühl das etwas nicht stimmt, sprich Jason wollte nur was klar stellen,
    da der Autor nichts davon erwähnt hat, zudem muss Kritik wohl berechtigt sein & das war sie.

    Eventuell liegts am Script, wo sonst ? ;)
    Eventuell versuchst du eine nicht vorhandene Datei auszulesen oder greifst im Speicher auf
    eine Variablen oder ihrem Index zu der/die nicht existiert.
    genaueres kann ich dir auch nicht sagen ;)

    Ich meinte damit das Code Abschnitte in den meisten fällen doch wirklich nützlich sind,
    doch da gilt wiederum , entweder sie verschaffen einem Übersicht oder
    gestalten das ganze komplexer als die normale Methode , sprich es kann ja nicht den gleichen Zweck erfüllen
    ohne wirklich Vorteile zu schaffen.

    Ich bleib bei der Basis, mein Kommando Script war nur zum Spaß erstellt um zu beweisen das es einfach Sinnlos ist,
    warum Umwege , eine Sprache sollte so Nativ stattfinden wie Möglich, wegen der Ressourcen & der Geschwindigkeit,
    zudem ist die reine Basis für mich größtenteils spannender wenn man das so ausdrücken darf.

    Hallo Lieber Community ,


    Mit der Zeit musste ich feststellen das einige Leute nicht wissen Wozu die Begriffe bzw. Operatoren & = AdressOf und * = Pointer bedeuten ,
    jedoch sind diese Operatoren bezüglich der Ressourcen von großer Wichtigkeit, zudem sind sie Extrem komplex in ihrer Anwendungsweise.


    Als Beispiel :


    Code
    int variablebla = 5;
    int *zeiger = &variablebla;



    Ganz einfach, "variablebla" hat den Inhalt 5 , so nun haben wir den Zeiger "zeiger" was man ganz gut durch * erkennen kann,
    wir verweisen den zeiger nun auf variablebla , also geben den Zeigt er die Adresse von "variablebla"
    die enthält den Wert 5, nun hat "zeiger" nur die Adresse von "variablebla" also wenn wir "zeiger" ändern würden,
    würde "variablebla" auch den selben Wert erhalten.


    Wie man sieht Funktioniert das ganze wie eine Verknüpfung , kommen wir so den Arrays in Kombination mit den Zeigern,
    diese haben noch eine spezielle Eigenschaft , jetzt folgt erst einmal ein Beispiel :


    Code
    int reihenfolge[] = {7,8};
    int *zeiger = reihenfolge;


    Würden wir hier Adressof verwenden also den Operator & würden wir angeben das zeiger ebenfalls ein Array der Größe 2 wäre
    wie man sieht daher verweisen wir nur auf den Anfang der Array.


    der Zugriff erfolgt ganz leicht , als Beispiel erzeugen wir eine Ausgabe :


    printf("Unser Wert wäre %i",*zeiger);


    Hier setzen wir eine Zeiger Markierung damit das Programm weiß das wir ihm keine Adresse geben ,
    würden wir Adressof verwenden würde er uns ebenso die Adresse ausgeben wie ohne AdressOf,
    da wir so auf keine Spezielle stelle zeigen würden & somit einfach die Adresse im Speicher ausgegeben wird.


    Kommen wir zum Spezial , wir können mit einem Zeiger auch wandern , sprich


    Code
    *zeiger++;


    Wir würden im Speicher einmal vor springen so würden wir in dem Fall auf den nächsten Wert in der Array zeigen, der 8 wäre.


    Wir können den Zeiger auch wie eine Array behandeln, da kommt es noch besser, da wir uns so eine gewisse Arbeit ersparen & gleichzeitig
    mit den gleichen Variablen arbeiten können.


    Code
    printf("Array Variable ist %i",zeiger[1]);


    Hier müssen wir nicht extra auf die Stelle zeigen da die stelle durch die Array Angabe schon vorhanden ist,
    wenn wir die Adresse des Speichers haben wollen können wir ein AdressOf verwenden ( & )


    Für die verarbeitung großer Datenmengen sind Zeiger ziemlich nützlich wie ihr seht, Zeiger kosten im Speicher zudem nur einen Byte,
    sie sind wie man sieht extrem komplex.


    Erweiterte Anwendungen von Zeigern im Bezug auf Speicherreservierung :


    Code
    int *zahlen;
    zahlen = new int[5];
    zahlen[0] = 3;
    zahlen[1] = 4;


    usw...


    Hierbei gibt der zeiger an die Startadresse für das Speicherfeld an von der Stelle aus können im Speicher später Plätze reserviert werden,
    egal wie groß , löschen kann man sie auch ganz leicht wieder.


    Code
    delete []zahlen;


    Hiermit gebt ihr den reservierten Speicher wieder komplett Frei.



    So das war es fürs erste, ich werde das Tutorial bei bedarf noch erweitern.


    Ich hoffe ich konnte euch helfen.