Eigene Fähigkeiten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • sollte man dann aber so machen
    call RemoveLocation(d)
    c --> d
    b --> c
    a --> b
    neuer Wert --> a

    Sonst werden die objekte ja nicht gelöscht.

    Das Wort "Würde" kennen manche Menschen nur noch als Konjunktiv II in dem Satz: "Für Geld würde ich alles machen."
  • Original von Yak
    sollte man dann aber so machen
    call RemoveLocation(d)
    c --> d
    b --> c
    a --> b
    neuer Wert --> a

    Sonst werden die objekte ja nicht gelöscht.


    Muss man das vorher removen?
    oder wird d durch das Einsetzen von c gelöscht?

    Wir haben 100 Hacker und Hacksen gefragt: "Was die schrecklichste Programmiersprache, in der du je programmiert hast?"
    1. Java
    2. PHP
    3. Visual Basic
    4. BASIC
  • Bei deiner Variante werden den Variablen immer nur neue Objekte zugeordnet. Die Objekte bleiben jedoch immer erhalten. Das Objekt, welches vorher der Variable d zugeordnet war ist nach dem nächsten Schleifendurchlauf keiner Variable mehr zugeordnet und leakt somit für den Rest des Spiels im Speicher rum.

    Um es mal zu verdeutlichen:
    Variablen sind kleine Speicherplätze, in welchen primitive Datentypen abgespeichert werden können. Also können Objekte nicht direkt in den Variablen gespeichert werden.
    Nun kommen die Pointer ins Spiel. Dies sind verweise auf Objekte, welche im Speicher abgelagert werden. Diese Pointer werden nun in den Variablen abgespeichert. Die Variablen beinhalten somit keine Objekte, sondern nur Verweise auf existierende Objekte im Speicher. Wenn nun eine Variable überschrieben wird, wird ihr ein neuer Pointer zugeordnet. Der alte Pointer wird überschrieben und das zugehörige Objekt ist nicht mehr abrufbar, existiert aber noch.
    Wenn man nun ein Objekt löscht, bleibt der in den Variablen gespeicherte Pointer jedoch erhalten. Dieser Verweist immer noch auf Speicher des gelöschten Objekts. Der Computer erhält dadurch den Befehl einen restspeicher freizuhalten.
    Um das zu vermeiden setzten wir Objektvariablen nach Gebrauch gleich NULL. Dadurch wird der Pointer gelöscht und der Speicher wieder freigegeben.

    Das Wort "Würde" kennen manche Menschen nur noch als Konjunktiv II in dem Satz: "Für Geld würde ich alles machen."
  • Original von Yak
    Bei deiner Variante werden den Variablen immer nur neue Objekte zugeordnet. Die Objekte bleiben jedoch immer erhalten. Das Objekt, welches vorher der Variable d zugeordnet war ist nach dem nächsten Schleifendurchlauf keiner Variable mehr zugeordnet und leakt somit für den Rest des Spiels im Speicher rum.

    Um es mal zu verdeutlichen:
    Variablen sind kleine Speicherplätze, in welchen primitive Datentypen abgespeichert werden können. Also können Objekte nicht direkt in den Variablen gespeichert werden.
    Nun kommen die Pointer ins Spiel. Dies sind verweise auf Objekte, welche im Speicher abgelagert werden. Diese Pointer werden nun in den Variablen abgespeichert. Die Variablen beinhalten somit keine Objekte, sondern nur Verweise auf existierende Objekte im Speicher. Wenn nun eine Variable überschrieben wird, wird ihr ein neuer Pointer zugeordnet. Der alte Pointer wird überschrieben und das zugehörige Objekt ist nicht mehr abrufbar, existiert aber noch.
    Wenn man nun ein Objekt löscht, bleibt der in den Variablen gespeicherte Pointer jedoch erhalten. Dieser Verweist immer noch auf Speicher des gelöschten Objekts. Der Computer erhält dadurch den Befehl einen restspeicher freizuhalten.
    Um das zu vermeiden setzten wir Objektvariablen nach Gebrauch gleich NULL. Dadurch wird der Pointer gelöscht und der Speicher wieder freigegeben.


    Und du sagtest du schreibst keine Tutorial für diese Seite :D
    Aber danke, ich hab eben unter Variablen etwas anderes verstanden.
    Also am Schluss jedes Triggers Variablen auf 0 setzten (oder leer bei Strings)
    Oder im Jass mit Call Remove<xxx> Variable

    Wir haben 100 Hacker und Hacksen gefragt: "Was die schrecklichste Programmiersprache, in der du je programmiert hast?"
    1. Java
    2. PHP
    3. Visual Basic
    4. BASIC
  • Nur Handle-Variablen müssen NULL-gesetzt werden. Reals, Strings und Integers werden am Ende des Triggers automatisch geleert.
    Und nichts mit NULL-setzten ODER Löschen. Beides machen. Zu erst das Objekt löschen und dann den Pointer leeren (NULL-setzten).

    Das Wort "Würde" kennen manche Menschen nur noch als Konjunktiv II in dem Satz: "Für Geld würde ich alles machen."
  • Original von FaraWay
    SO nu hab ich ma wie der ne frage ...
    ich habe vor ein gebiet zu schaffen und dann mit einem zweite trigger dafür zu dorgen das alle darin weggebeamt werden (auch alle die noch kommen
    nur wie ????


    unit enter (Gebiet)
    ----------------------------------------------------------
    (Bedingung halt was du auch immer willst)
    ----------------------------------------------------------
    Move entring unit instantly to
  • Hab eine Idee aber dann klappt es nur in einem Radius

    Erstellst einfach eine Unit an dem Punkt, dann machst du einen neuen Trigger der die Aktionen hat wenn die Einheit das gebiet betritt. Dann die funktion

    Auslöser - Add Event to Trigger (oder so ähnlich ^^)
    da machst du Add (A unit comes within (Dein Radius) of (Last Created Unit))
    so klappts es halt in einem radius, denke ich ^^
  • Original von FaraWay
    AUf die idee war ich auch schon gekommen aber iw ging das nich
    zu mindest konnt man das mit den triggern net einstellen ...



    Ja, also wenn ich jetzt verstanden habe sollte es aber 100% mit wie YourNameHere sagte klappen...

    d.h man muss mit nem trigger iw nen gebiet erstelen blos wie


    Hero learned skill oder every 1 sek pick every unit if picked unit has buf oder unit is casting oder so.
    --------------------------------------------------
    (Bedingung was du halt als Bedingung willst... Oder kasting skill = (läää) [oder so])
    --------------------------------------------------
    Create unit (Blub) at position beeing cast, unit beeing cast oder was auch immer du willst...
    Add last created unit to (H4H4)

    Dann nen neuen

    Unit comes withing range (XXX) of (H4H4)
    --------------------------------------------------

    --------------------------------------------------
    Hier kannst du dann machen was passieren soll ...


    Ich hatte meine RPG nur mit withing range überfüllt für jeden quest :D
    (Ich denke hab nicht alles 100% so aufgeschrieben aber wenn man bisschen nachdenkt müsste es gehen :P)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Chitzui ()

  • Benutzer online 1

    1 Besucher