Beiträge von Simon

    Guten Tag


    Seit dem ich Windows 8.1 auf meinem PC laufen habe (vorher Windows 7 Ult) stürzt GTA SA ab, sobald ich disconnecte.
    Dabei ist es egal ob ich /q eingebe oder auf Spiel verlassen gehe. Danach kommt immer die Meldung: "GTA San Andreas funktioniert nicht mehr"
    Es ist nicht Server-abhängig


    Es ist nicht schlimm, da das Spiel ja eh beendet wird, aber es nervt.


    Habe alles versucht, neu installation, löschen der GTA User Files



    Jemand ne Idee?

    Ich speicher auch alles, was variabel ist in der Datenbank.


    Beim GameMode Start wird die Datenbank ausgelesen und wenn ein Datensatz fehlt, wird dieser mit standard-Werten erstellt, und wenn er da ist, werden die Werte ausgelesen und in eine Variable gespeichert (Array und enums)


    Ich speicher zwischendurch und beim GameMode Ende dann alle aktuellen Werte aus den Variabeln in die Datenbank.



    1-2 Ausnahmen sind Variabeln, die 0 - unendlich groß sein können. Ich verwende die 1-2 Tabellen immer dann wenn die Daten gebraucht bzw verändert werden.
    Bei Allen anderen ist die maximale größe der Datensätze bekannt und besitze passende Arrays im Script (zum Beispiel Häuser). Alle Häuser besitzen feste (z.B. Koordinaten) und variable (z.B. Besitzer). Die variablen Variabeln werden in einer Tabelle gespeichert.

    Ich möchte einen Trailer (z.B. Mats Trailer oder Petrol Trailer) von einem Truck (z.b. Linerunner oder Roadtrain) entkoppeln.


    Dazu verwendet man ja die einfache Funktion DetachTrailerFromVehicle(..);


    Nun ist das Problem, das der in den meisten fällen (min. 75% der Fälle) wird der Trailer direkt wieder an den Truck gekoppelt, weil das ja automatisch abläuft.


    Habe mir gedacht, ich veränder minimal die Position des Trailers. Nun wollte ich das aber etwas schöner gestalten, sodass der Trailer immer minimal (ca 1-2m) nach hinten verschoben wird.


    "Nach hinten" ist nicht einfach durch eine abweichung der X oder Y koordinate zu machen, da dies darauf ankommt, welche Angel der Spieler hat. guckt er in 180°/0° ist es durch +/- 1-2 Abweichung der Y-Koordinate zu ermögliche, guckt er in 90°/270° ist es durch +/- 1-2 Abweichung der X-Koordinate zu machen. Guckt man aber nicht in genau diese Richtung, muss man beide Koordinaten leicht verändern, so das er zum Ursprungspunkt mit der selben Blickrichtung 1-2m Abstand hat.


    Dazu gibt es mit sicherheit eine schlaue Formel für, und die benötige ich.

    Hat jemand eine Ahnung woran es liegen kann, das sich Textdraws verschieben?


    Beispiel:
    ich steig in Auto und sehe ein Tacho in Form eines textdraws. Dort steht unter anderem der Autoname.


    Das Tacho wird regelmäßig mit der entsprechenden geschwindigkeit aktualisiert.


    Angenommen es ist ein Taxi und man beginnt eine Taxifahrt. die Taxifahrt wird in form eines weiteren Textdraws angezeigt, damit man weiß wieviel man zahlen muss.


    Aufeinmal veschwindet das Textdraws der Taxifahrt, der Autoname im Tacho verschwindet auch, an stelle von dem Autonamen kommt das textdraw von der Taxifahrt.



    Ich benutze natürlich für jedes Textdraw eine eigene variabel und den Wert dieser variabel setze ich beim zerstören des textdraws auf den Wert "invalid"

    wenn du in einer Map mehrere Objekte hast als das Limit von SAMP vorgibt, bringt dir auch kein Streamer mehr was, weil die Objekte zwar gestreamt werden, jedoch können dort auch nur soviele gleichzeitig gestreamt werden wie das limit vorgibt.


    Also musst du dann diese Maps verkleinern.


    Wenn du mehrere Maps nah einander hast, musst du das so einstellen, das diese erst dann streamen, wenn du nahe dranne bist.


    Wenn selbst das nichts mehr bringt, frage ich mich wieviele objekte du hast, zuviele Maps sind auch nicht so toll, ist jedoch nur meine Meinung.


    Das sind so die 2 Möglichkeiten die dein Problem aufjedenfall lösen sollten.

    Hallo


    Habe ein blödes Problem.
    Mein Crashdetect Plugin hat mir soeben verraten das ich an irgenteiner Stelle oder nach bestimmten Ereignissen eine maximale Array Größe von 2000 überschreite.
    Unzwar ist der Größte Index 1999, der wird an irgenteiner Stelle überschritten.


    Mir wird auch gesagt wann das passiert, das Public wird genannt, doch in diesem public habe ich kein Array von 2000.


    Also habe ich die Samp Limits angeschaut, und gesehen das es maximal 2000 Fahrzeuge geben kann und dachte, dass ich den Fehler gefunden habe, da wird zu dem Zeitpunkt vom Crash auch mit Autos "gespielt" haben.


    Habe soeben ein kleinen testbefehl eingebaut, der mir die Anzahl der Autos wiedergibt (ca 750-800 also weit unter 2000):
    new count = 0;
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    if(IsValidVehicle(i)) count++;
    }
    new str[50];
    format(str,50,"Fahrzeuge: %d", count);
    SendClientMessage(playerid, COLOR_RED, str);
    return 1;


    Wie gesagt: Habe alle Arrays überprüft, keiner hat eine größe von 2000. Gibt es sonst noch Möglichkeiten? Der Punkt ist das der Wert von genau 1999 überschritten wurde und somit außerhalb der größe des Arrays ist.

    Da brauchste ein paar Matheformeln, die ich jetzt so direkt nicht sagen kann.


    Aufjedenfall erinnert mich die Grafik an sogenannte Sinus oder Cosinus Kurven oder auch eine Parabel, wenn man immer Start und Ziel als "Nullpunke" nimmt und den Scheitel der Kurve als "Scheitelpunkt".


    wenn ich als Beispiel die Parabel nehme:


    allgemeine formel: y(x) = x² + x + b (andere kennen es auch mit a0-a2)


    jenachdem welchen faktor nun x², x oder welchen Wert b hat, kann die Parabel coole Formen annehmen, unter anderem kann ich mir vorstellen das dort eine Kurven artige Form wie du sie haben möchtes möglich ist.


    Denn:


    So wie das aussieht sind die Stangen alle auf eine Höhe, man könne sie als X-Achse nehmen und somit wären dann Start und Ziel die Nullstellen der Parabel.
    Die Kurve, entspricht dann die Kurve der Parabel, auch bekannt als Scheitelpunkt. Die Parabel kann sowohl nach oben als auch nach unten hin geöffnet sein, wie du es laut Grafik haben möchtest (negativ und positiv)


    die Nullstellen sind bekannt und den Scheitelpunkt kann man sich errechnen. Mit bestimmten parabel-formeln lässt sich bestimmt herausfinden wie die funktion der parabel aussehen muss, um eine "schöne" Kurve hinzubekommen.


    Mit Hilfe dieser Funktion kannst du das Objekt entlang der Punkte die sich auf dieser Parabel befinden bewegen, um so mehr punkte der Parabel du nimmst, um so "kurviger" verläuft das objekt. nimmst du nur Nullstelle und Scheitelpunkt, ist es wieder Zick-Zack.



    Das ist nur eine Idee wie man es lösen könnte, keine Ahnung ob das auch wirklich klappt, klingt aber ganz gut :)


    //edit:


    Du müsstest Start und Ziel aber anpassen, die müssten dann auf der selben Höhe sein wie die Stangen, ergibt Später genau das selbe

    Also:


    Du fragst ab ob er ein Hauskey hat, wenn ja, also wenn 1 dann gehst du eine Schleife aller Häuser durch.


    Hier ist auch der Fehler.
    1. fängst du bei deiner Schleife mit 1 an und nicht mit 0. ein Array beginnt immer mit 0. Kann natürlich sein das der Index 0 deines Arrays für irgentetwas rreserviert ist, wovon ich nun erstmal nicht ausgehe.


    2. du lässt ihn zu jedem Haus spawnen! Du gehst die schleife durch und setzt dann bei jedem Haus die position des Spielers, du musst vorher aber Abfragen ob es denn auch sein Haus ist.


    3. Du setzt die Virtuelle Welt von dem Spieler in die Welt id von dem aktuellen Wert der Schleife also von dem Aktuellen Wert i. Angenommen du die schleife ist bei haus 5, wird er in virtuelle Welt 5 gesetzt. Das kann natürlich richtig sein, da ich das System dahinter nicht kenne, sieht aber erstmal nicht richtig aus


    Also:


    Überprüf deine Schleife, ob es richtig ist das sie bei 1 anfängt und nicht bei 0.
    Füge eine Abfrage ein ob das Aktuelle Haus der Schleife auch das ist wo er spawnen soll, Ich denke er soll an seinem Haus spawnen, also ob es sein haus ist.
    Überprüfe ob die virtuelle Welt richtig gesetzt wird, sieht falsch aus, da du die Position und das Interior auch aus dem Array liest.

    verstehe ich nur halb :D


    also angenommen folgende variabeln sind da:


    new var1;
    new var2;
    new var3;
    new var4;
    new var5;


    nun kommen ja foldende meldung
    is never used: var1
    is never used: var2
    ...
    is never used: var5


    Und mit #pragma unused var1; würde ich die meldung für var1 ignorieren lassen, möchte sie jedoch für alle ignorieren und dabei nicht für jede einzelnde diese anweisung schreiben.

    Hey


    Bin gerade dabei alte Codeschnipsel in ein neues Script zu kopieren.
    In den alten Codeschnipsel sind bereits Variablen definiert, die ich später erst brauche.


    Dadruch taucht eine nervige Liste von "is never used" beim compilen auf.


    Gibt es eine Möglichkeit die Warnings auszublenden?
    Damit meine ich nicht
    #pragma unused "variable"
    sondern eine Anweisung die direkt alle Warnings dieser Art ignoriert.

    nein, habe mir mal an sämtlichen stellen ausgaben an die konsole senden lassen.



    Ich bin auf 2 merkwürdige dinge gestoßen:


    Wenn man stirbt ohne das das Spiel abschmiert, wird man 2 mal gespawnt nach dem tod, obwohl niergens SpawnPlayer benutzt wird.
    Wenn der Bot connected, wird er 2 mal gespawnt, das liegt daran:

    public OnPlayerRequestClass(playerid, classid)
    {
    if(IsPlayerNPC(playerid) SpawnPlayer(playerid);
    return 1;
    }

    Nehme ich das raus, wird er gar nicht gespawnt.

    Guten Tag.


    Wenn man bei mir stirbt, wird die camera position so gesetzt das man auf den Brunnden vom Friedhof in Los Santos blickt. Dort läuft ein "Priester" rum also ein Bot.
    Manchmal passiert nichts, alles läuft so wie es sollte.


    Aber Manchmal stürzt das Spiel ab, also man ist noch ingame und kann noch alles sehen, jedoch reagiert das Spiel auf keinerlei tastatur oder maus eingaben.
    Man muss in den ta

    Guten Tag


    habe ein problem bei der ID Verschiebung bei 3D text Labels.


    Also wenn id 1 ein textlabel hat und sich ausloggt, wird das textlabel zerstört, die variable, die die id des 3d textlabels hat, wird jedoch normalerweise nicht verändert, und somit könnte es sein das dadurch probleme auftreten.


    Bei mir zum Beispiel: Ich habe ein Textlabel für id 1, loggt sich id 1 aus und ein anderer spieler loggt sich mit id 1 ein, hat er das textlabel was die vorherige id 1 hatte.


    Habe eigene funkionen geschrieben, wo eigentlich die variable wieder zurückgesetzt werden sollte, jedoch scheint diese zu buggen.



    meine eigentliche frage: wie kann ich den Wert von 3DText:Variablen wiedergeben, zum Beispiel in der Konsole.


    mit printf("Id: %d", variable); klappt es nicht, da die variable so erstellt wurde: new Text3D:variable und somit kein Integer ist.