Beiträge von Kaliber

    will es mit einem Query lösen

    Wenn du es so machst, wie ich es beschrieben habe, dann löst du es doch mit einem Query.


    Deine Art ist nicht nur ein Query, sondern mehrere Sub-Querys, welche doch jeweils wieder als eigenständiges Query interpretiert werden.


    Somit ist die Methode die ich vorschlage wesentlich performanter und besser für den Server ^^

    Nein, also überall static zu verwenden ist kompletter Quatsch, da du es dann genauso gut global deklarieren könntest.


    static hat 2 Eigenschaften.


    • Angenommen wir befinden uns in einem Include, dann kannst du dort global static verwende. Das sorgt dafür, dass in deinem Haupt Gamemode dieser Variablen Name nicht existiert und nur vom Include auf diese Variable zugegriffen werden kann. Dies ermöglicht eine Kapselung der Daten vom Include & Gamemode und somit eine sehr saubere Programmierung! :)
    • Du kannst static in einer Funktion verwenden, hier dazu mal ein Beispiel:

    Wir sagen du hast folgende Funktion:


    Wir sehen also, der Wert wird gespeichert, wie bei einer globalen Variable, nur ist diese nur innerhalb der Funktion verfügbar.


    Kann man machen, macht aber wie man sehen sollte nicht immer wirklich Sinn und kann bei falscher Anwendung zu schweren Fehlern führen! :)

    Ich rate dir davon ab strings global zu deklarieren die du in sub-Funktionen nutzt.


    Wenn schnelle Änderungen im ns-ms Takt auftreten, kann es da zu erheblichen Fehlern / Überschreibungen kommen.


    Zudem blockieren sie sehr viel Heap Speicher, dann kannst du weniger auf den Stack packen, der belegt wird, wenn du solche Strings in sub-Funktionen deklarierst, was dann schneller zu einer Heap/Stack Collission führen kann, wie man es in einigen Skripten heutzutage sieht.


    Deklarier einfach in der Sub-Funktion einen String so klein wie es möglich ist und gut ist. Dieser wird ja nach beenden der Routine wieder vom Stack geschmissen. Der nimmt also nur kurz Platz weg wohingegen der im Heap reservierte Speicher permanent Platz einnimmt + die .amx größer macht + sehr Fehler anfällig sein kann :)

    viel zu Rescourcen-Fressend

    Inwiefern darf man das verstehen?


    Wieso hast du überhaupt den String global deklariert?!


    Versuchs mal so:



    Musst halt auch immer neu den String auf deinen alten String packen und nicht immer überschreiben, sonst wird dir natürlich immer nur der Letzte Spieler angezeigt ^^

    Doofe Frage, aber willst echt da immer so n verschachteltes Query an den Server senden?


    Hast du seine Daten nicht eh schon in den Session Daten gespeichert?


    Dann kannst nämlich einfach diese addieren...dann wäreste direkt fertig, anstatt da so einen Mist zu machen ^^

    Dann zeigt er mir diesen error an:

    Schauen wir uns die Funktion doch einfach mal an:


    native SetDynamicObjectMaterialText(STREAMER_TAG_OBJECT objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
    Bedeutet der Materialindex und den Text musst du tauschen :D


    SetDynamicObjectMaterialText(g_Object[858], 0, "CT - Raum 3", 90, "Arial", 20, 1, 0xFF000000, 0x0, 1);


    Übrigens anstatt 0x0 kannst auch einfach 0 schreiben ^^

    Echt? Darf ich erfahren wie?

    Natürlich darfst du :)


    Also um mal ein paar Fakten hier rauszuhauen :)


    • Also die Farbe von dem Objekt an sich, kannst du ganz leicht mit einer MaterialColor ändern:
    C
    obj = CreateObject(18646,0,0,3,0,0,0);
    SetObjectMaterial(obj,1,19947,"EnExMarkers","enexmarker4-4",0xFFFFFFFF);

    Allerdings wird dann, das Objekt nicht leuchten :)


    Wenn du also das Objekt dann leuchten lassen willst einfach ersetzen, durch das leuchten siehst man eh die eigentliche Objektfarbe nicht ^^


    Viel Erfolg :)