Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Player: Methoden hinzufügen

  1. #11
    Avatar von aVoN
    Registriert seit
    23.04.2006
    Ort
    Hannover

    Standard AW: Player: Methoden hinzufügen

    Sorry wenn ich es jetzt mal so auszudrücke, aber anscheinend hat kaum einer meiner vorherigen Poster einen Ahnung bezüglich OOP und Lua.
    Es ist sehr einfach mit der GMod internen Funktinon FindMetaTable() einer Class (Metatable) eine weitere Methode hinzuzufügen:
    Code:
    local meta = GetMetaTable("Player")
    if(meta) then -- Existiert die MT? Normalerweise ja.
     function meta:SayCrap()
       self:ConCommand("say Crap!\n");
     end
    end
    Wenn du Methods überschreiben willst (kommt eher selten vor), musst du dir klar machen, das diverse Classen ihre Methoden auch von Entity erben (Player,NPC,Weapon). Z.b. ist SetPos nur in Entity registriert, existiert allerdings nur vererbt in Player und ist somit nicht in der obigen metatable vorhanden.

    Viel Glück.

  2. #12
    Avatar von Scarecrow
    Registriert seit
    15.12.2005
    Ort
    Nordrhein-Westfalen

    Standard AW: Player: Methoden hinzufügen

    Zitat Zitat von aVoN Beitrag anzeigen
    Sorry wenn ich es jetzt mal so auszudrücke, aber anscheinend hat kaum einer meiner vorherigen Poster einen Ahnung bezüglich OOP und Lua.
    Hmmm, dann habe ich da was falsch gelesen in der englischen Wiki oder das war nur ein übler Scherz, den mir jemand aufgebunden hat (ich habe mich deswegen nochmal ausgibig erkundet, aber ohne Erfolg). Naja, wie auch immer, objektorientiertes Programmieren mache ich sowiso nur in AS2.0 und PHP
    Welches ist die Höchstgeschwindigkeit einer unbeladenen Schwalbe?

  3. #13

    Standard AW: Player: Methoden hinzufügen

    @Avon:

    Demnach kann ich einfach daudrch, dass ich die Funktion für das Objekt definiere besagte Funktion hinzufügen?

    Könnte also einfach:
    Code:
    local meta = GetMetaTable("Player")
    if(meta) then -- Existiert die MT? Normalerweise ja.
     function meta:EatYourShoes()
       msg('You've Eaten your shoes, dude. o.O\n');
     end
    end
    Und jetzt könnte ich (Client und Server?) per ply:EatYourShoes() den String in die Konsole schreiben?

  4. #14

    Standard AW: Player: Methoden hinzufügen

    Zitat Zitat von aVoN Beitrag anzeigen
    Sorry wenn ich es jetzt mal so auszudrücke, aber anscheinend hat kaum einer meiner vorherigen Poster einen Ahnung bezüglich OOP und Lua.
    Es ist sehr einfach mit der GMod internen Funktinon FindMetaTable() einer Class (Metatable) eine weitere Methode hinzuzufügen:
    Es ist nun einmal nicht jeder so erfahren wie du.

    Ich kenne mich in dem Bereich nicht so gut aus, deswegen bin auch nicht zu 100% sicher, was das Thema angeht.

    Wenn du möchtest kannst du dein Wissen auch in der Wiki verbreiten


    -----

    Das Tutorial zu den Metatables habe ich jetzt auch wieder gefunden:

    Klick!

    Leider hat man keine schöne Übersicht mehr vom ganzen Thread,
    da durch die Archivierung alle Formatierungen deaktiviert wurden.

  5. #15
    Avatar von aVoN
    Registriert seit
    23.04.2006
    Ort
    Hannover

    Standard AW: Player: Methoden hinzufügen

    Zitat Zitat von makkurona Beitrag anzeigen
    @Avon:

    Demnach kann ich einfach daudrch, dass ich die Funktion für das Objekt definiere besagte Funktion hinzufügen?

    Könnte also einfach:
    Code:
    local meta = GetMetaTable("Player")
    if(meta) then -- Existiert die MT? Normalerweise ja.
     function meta:EatYourShoes()
       msg('You've Eaten your shoes, dude. o.O\n');
     end
    end
    Und jetzt könnte ich (Client und Server?) per ply:EatYourShoes() den String in die Konsole schreiben?
    Die Method funktioniert nur dort, wo du sie definiert hast (Clientside oder Serverside). Und ja, ply:EatYourShoes() ist die richtige Art und Weise die Methode zu callen. self in der Methode wird dann dementsprechend das player object sein.

  6. Folgender Benutzer sagt Danke zu aVoN für den nützlichen Beitrag:


  7. #16

    Standard AW: Player: Methoden hinzufügen

    Ahh... ich bedanke mich sehr herzlich!

    das bringt mich doch ein ganzes Stück weiter. =)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •