Beiträge von |-|auke

    Am einfachsten zum Lernen geht´s so (Pseudocode):



    Der Code macht doch auch was er soll. SpielerAutoInfo[playerid][0][saModelID] ist außerhalb von 400 und 611. Deswegen bekommst du die Meldung.
    Lass dir die Variable doch mal ausgeben, dann weißt du Bescheid.

    Moin!


    Ich habe gerade das Problem, dass ich einen Kunden in der Türkei habe, dessen Adresse ich nicht lesen kann :S


    Kann jemand von euch Türkisch und hat schnell Zeit mir die Adresse zu "übersetzen"?
    Hauptsächlich geht es mir darum das zu entschlüsseln. Damit ich weiß was die Straße etc. sein soll.


    Das Einzige was ich auf der Adresse lesen kann ist der Name - glaube ich zumindest.. :D
    Deshalb kann ich das auch nicht bei Google Maps suchen.


    Wäre toll wenn sich jemand melden würde. Am besten in diesem Thread, dann schreibe ich dir eine PN. :)

    Hi. Danke für deine Antwort. Das abspeichern selbst ist nicht das Problem. Eher das übergeben an die Funktion um ein Array zu erstellen.


    Gehen wir davon aus ich hätte 23 Punkte.
    Ich erstelle ein Array mit genug Platz, bspw. 50.
    Wenn ich nun meine 23 Punkte in den Array abspeicher habe ich noch 4 freie Plätze, welche ja den Wert 0.0 tragen (Float). Sobald ich die Funktion Aufrufe, mit dem Array, wird ein Area erstellt mit meinen Punkten und zum Ende hin wird die area bis zum Nullpunkt weitergeführt, da die letzten 4 Index‘ leer waren.


    Das ist eher mein Problem.

    Du kannst der Funktion die Anzahl der Punkte übergeben mit dem Parameter maxpoints. Da setzt du einfach deine Zählervariable ein.


    CreateDynamicPolygon(Float:points[], Float:minz = -FLOAT_INFINITY, Float:maxz = FLOAT_INFINITY, maxpoints = sizeof points, worldid = -1, interiorid = -1, playerid = -1)

    Reserviere dir genug Speicher für die maximale Anzahl an Positionen (Array) und erstelle eine Variable mit der du die aktuelle Anzahl festhältst.
    Dann kannst du neue Positionen immer hinten anhängen.


    Schwierig wird es erst wenn du Positionen aus der Mitte entfernen willst. Dann musst du dir spezielle Funktionen dafür schreiben. Das kommt dann aber sehr auf deine Anwendung an.

    Stell dir im extrem Fall mehrere Aktionen vor, die alle 2 Sekunden ausgeführt werden sollen und ca. 500ms dauern.
    Nun hast du die Möglichkeit mehrere 2 Sekunden Timer zu erstellen oder einen der alles ausführt.


    Da der Timer eine Interrupt-Artige Funktion hat, würde bei der Benutzung von einem Timer dein restlicher Ablauf komplett für 500ms geblockt werden.
    Wenn du nun 5 Timer hast, die alle einen Workload von 100ms haben (und nicht direkt aufeinander ausgeführt werden), hast du insgesamt auch 500ms, aber nicht an einem Stück.
    Das heißt, zwischen den Timern kann immer noch reagiert werden und die Latenzen sollten abnehmen.


    So direkt eine Regel gibt es nicht, man muss abschätzen was wohl am meisten Sinn macht.
    Man kann das auch berechnen, aber um das berechnen zu können müsste man wissen wie genau die Timer in SA:MP gehandelt werden, das weiß ich nicht.

    Du versuchst auf etwas zuzugreifen zudem du keinen Zugriff hast. Anders gesagt: Du greifst auf ein Element eines Arrays zu, welches nicht existiert.
    Diese Zeile verrät es dir:


    Code
    Accessing element at index 65535 past array upper bound 1149

    Zeig mal die Funktion FC_OnPlayerStateChange.