Beiträge von Johnny

    Hallo,


    wie ist die genaue Zusammenarbeit geplant? Wird in absehbarer Zeit gemeinsam am Gamemode gearbeitet oder werden Systeme in vereinbarter Struktur geschrieben und über einen Hauptkanal in den Gamemode implementiert?


    Danke vorab!

    Hallo,
    mir war nach deinen Aktionen in unserem Forum relativ klar, dass du dich hier in dieser Weise melden wirst. AirMake war einer unserer Administrator, hat teilweise Aufgaben übernommen, für die er zeitweise weitere Berechtigungen erhalten hat. Leider hat sich rausgestellt, dass er sich Rechte im Forum ohne unser Wissen gegeben hat, die er bewusst zu unserem Ungunsten nutzen wollte. Weiter möchte ich die Situation nicht ausführen, als Serverleitung sahen wir uns gezwungen ihn zu entlassen.
    Trotzdem, wie bereits gesagt, hast du gute Arbeit geleistet, diesen Vertrauensbruch hatten wir nicht erwartet. Außerdem hatte ich dir solche Aktionen wie der Text hier nicht zugetraut. Schade!
    Ich kann sagen, alle Arbeiten akribisch, Airmake ist nun etwas angefressen nicht mehr Teil unseres aufstrebenden Projekts zu sein. Wir geben weiter unser Bestes und am nächsten Update wird bereits gearbeitet.


    Liebe Grüße
    die Projektleitung

    Hallo iBro,


    das fällt alles unter den Begriff der Weiterentwicklung des Servers.
    Alle weiteren Details empfinden wir als interne Organisation. Es würde eine unnötige Komplexität nach außen bedeuten, jede Aufgabe der einzelnen Teammitglieder öffentlich zu kommunizieren. Auf besondere Nachfrage geben wir jedoch gerne Auskunft, soweit es für uns sinnvoll erscheint.


    Gruß
    Johnny

    Hallo,


    die Frage nach unseren vier Entwicklern ist durchaus berechtigt.
    Es befinden sich darunter zwei Teammitglieder, die sich unter anderem mit Designs bzw. Maps kümmern.
    Des Weiteren umfasst die Tätigkeit die Entwicklung des Informationspanels/UCP. Die weiteren beiden Entwickler kümmern sich um den Gamemode.


    Da wir schon etwas länger an unserem Gamemode arbeiten, kam ein GTA:V Projekt momentan nicht in Frage.


    Gruß
    Johnny

    Dann schau mal nach wie du die ganzen Arrays gesetzt hast. Müssten ja alle mit der Größe MAX_PLAYERS sein, was du scheinbar noch nicht umgestellt hast.

    • TachoAn
    • box
    • fahrzeug
    • kmh
    • tank
    • zustand
    • BarZustand
    • KilometerAnzeige
    • StatusAnzeige
    • SavePlayerPos

    Und folgende müssten MAX_VEHICLES haben:

    • Kilometer
    • Gas

    Sind auch relativ viele, nebenbei gesagt, die global definiert wurden.


    Hast du denn ganz oben im Gamemode jetzt folgendes?
    "#undef MAX_PLAYERS
    #define MAX_PLAYER [Hier deine maximale Anzahl, da 1000 in deinem Fall wahrscheinlich viel zu hoch ist]"

    Dass SLOTS verändert werden, wollte ich garnicht sagen. ^^
    Ich habe mir jetzt gerade mal die Zeit genommen, deinen Code genau anzuschauen.
    Darin finde ich einiges sehr bedenklich, vor allem, dass du mit dem Timer hauruck völlig verschiedene Dinge aktualisieren willst.
    Zwei verschiedene Schleifen, die beide unabhängig voneinander die Spieler prüfen (1000 Durchgänge pro Schleife)


    Ich würde dir erstmal folgendes ganz oben empfehlen (mit angepassten Werten):
    #undef MAX_PLAYERS


    #define MAX_PLAYERS 25


    Dann erstellst du deine Arrays nicht unnötigerweise mit viel zu Größen Blockgrößen und musst nicht so viel Rechenarbeit in Anspruch nehmen.


    Eine andere Frage: Warum wird in der zweiten Schleife "SLOTS" als Vergleich zum Hochzählen genutzt und nicht "MAX_PLAYERS" oder den Wert von "GetPlayerPoolSize()"?

    Folgendes unter "/v" kann schonmal nicht funktionieren: PutPlayerInVehicle(playerid,cID,0);
    Du versuchst den Spieler in ein Fahrzeug zu setzen, die das angegebene Modell als ID hat.


    new cID, pID, vID;
    [...]
    vID = createPlayerCar(pID, cID, x, y, z, za);
    PutPlayerInVehicle(playerid, vID, 0);


    Wobei du deine erstellende Funktion auch ändern musst:


    Ansonsten sehe ich auf den ersten Blick nicht, wieso die Fehlermeldung auftaucht. //Edit: "return", wie es oben beschrieben ist ist falsch. Das hab ich übersehen.

    Irgendeiner der vielen Arrays hat eine Größe von 700. Damit ist der höchste, zu beschreibende Array-Block 699.
    Du zählst an einer der Positionen 'i' aber noch höher und versuchst einen Array der Größe 700 an dem Block 882 anzusprechen, was logischerweise nicht geht.


    Aus deinem Code, kenne ich die einzelnen Array-Größen nicht. Außerdem weiß ich nicht, wie die statisch definierten Werte bei dir lauten.
    Aber ich schätze mal, dass du an "MAX_PLAYERS" nicht ran gegangen bist und damit ein Wert von 1000 als Vergleich genutzt wird.


    Nebenbei: Hier der Tipp sich mal mit GetPlayerPoolSize() auseinander zu setzen und deinen Code zu strukturieren, und in dem Zuge weniger Variablen effizienter nutzt.

    Du kannst aus Enums keine Arraygrößen in diese Funktionen ziehen.
    Intern kannst du dir merken, dass du Spielernamen auf die Zeichenlänge des definierten Wertes MAX_PLAYER_NAME setzt.
    Dann würde die Funktion entsprechend so lauten: strdel(Drogen[i][dErstellt], 0, MAX_PLAYER_NAME ));


    Beachte dann, dass du "dErstellt" auch änderst:

    Code
    enum [...] {
      ...,
      dErstellt[MAX_PLAYER_NAME],
      ...
    }

    Ich muss die aber Doppelt machen, Sprich die Texte hinzufügen, da man die BoxColor (auch wenns Selectable ist) nicht Anklicken kann ^^

    Naja in meinem Beispiel klickst du aber das X an, welches ich mit der Textfarbe 0 anzeigen lasse.
    Das heißt es existiert ein Text in der Box. Im Gegensatz zur Box kann man den Text aber nicht sehen, da ich den Wert der Transparenz dementsprechend auf 100% gesetzt habe.
    Hast ja an Farbcodes das RGBA-Modell und in dezimal "0" entspricht 0x00000000, wobei die letzten beiden Stellen mit dem Wert "00" die Transparenz erzeugen

    Ah ok, das bringt Licht ins dunkle.
    Folgendes trifft hier ja zu: "For alignment 2 (center) the x and y values need to inverted (switch the two) and the x value is the overall width of the box."


    Jetzt würde ich mich da anhand von Beispielboxen mal rantasten und garnicht das mit dem zusätzlichen Text für den Text einfügen sondern so:


    Das als Hilfestellung, wobei nur noch an TextDrawTextSize rumgeschraubt werden müssen.
    Aus meiner Sicht sind doppelte Textdraws hier die falsche Wahl. Denn das sind dann schon 512, damit 256 zu viel

    Erstmal fällt mir das hier auf: TextDrawSetSelectable(BoxColor[i], 0);  Ich weiß nicht, inwiefern und wann das verändert wird.
    Zweitens verstehe ich die Positionierung der Textdraws nicht ganz, da die Floats nicht erhöht werden (ich denke mal das hast du aus diesem Einblick rausgelassen)
    Drittens kannst du deinen Text in der Box auch einfach unsichtbar machen (TextDrawColor(BoxColor[i], 0); TextDrawSetShadow(BoxColor[i], 0); TextDrawSetOutline(BoxColor[i], 0);) und entsprechend das X drin lassen.


    Erklär mir erst diese Unklarheiten, vielleicht kann ich dir dann besser helfen, oder ich übersehe etwas ^^

    Im wiki findet man folgenden schönen Satz: "Return Values: This function does not return any specific values."
    Du kannst die Zuweisung doch einfach machen:


    cache_get_field_content(0, "savepass", Spieler[playerid][SavePass], handle, (Größe)); //Hier editiert: es fehlt die Größe im Fall von direkter Zuweisung zu enum Strings


    bzw.



    cache_get_field_content(0, "savepass", spstring, handle);
    format(Spieler[playerid][SavePass], (Größe), spstring);

    Macht das ein Großen Ressourcen unterschied ?

    Naja wenn du in Fraktion 3 bist wird dreimal die Fraktion geprüft.
    ID eins trifft nicht zu, neuer Check: ID zwei trifft nicht zu, neuer Check: ID 3 trifft zu -> keine Meldung.
    Bist du in keiner Fraktion wird dreimal geprüft und dann erst eine Meldung geschickt.


    Es ist um einiges geschickter den Vorschlag von Jeffry zu nehmen, da oben drauf auch keine aufwändige Erweiterungsarbeit auf dich zu kommt und die Funktion maximal einmal aufgerufen wird.